Files
kouiz/internal/http/handler/webui/common/component/app_page.templ

53 lines
1.4 KiB
Plaintext
Raw Normal View History

2025-06-10 21:09:58 +02:00
package component
type AppPageOptions struct {
PageOptions []PageOptionFunc
}
type AppPageOptionFunc func(opts *AppPageOptions)
func WithPageOptions(funcs ...PageOptionFunc) AppPageOptionFunc {
return func(opts *AppPageOptions) {
opts.PageOptions = funcs
}
}
func NewAppPageOptions(funcs ...AppPageOptionFunc) *AppPageOptions {
opts := &AppPageOptions{
PageOptions: make([]PageOptionFunc, 0),
}
for _, fn := range funcs {
fn(opts)
}
return opts
}
templ AppPage(funcs ...AppPageOptionFunc) {
{{ opts := NewAppPageOptions(funcs...) }}
@Page(opts.PageOptions...) {
<div class="container">
<section class="section">
<div class="level is-mobile">
<div class="level-left">
2025-06-15 14:46:32 +02:00
<div class="level-item">
<figure class="image mr-3" style="width:100px">
<img class="is-rounded" src={ string(BaseURL(ctx, WithPath("/assets/panda.svg"))) }/>
</figure>
<a href={ BaseURL(ctx) }>
<h1 class="title is-size-1">Kouiz</h1>
</a>
</div>
2025-06-10 21:09:58 +02:00
</div>
<div class="level-right">
<div class="buttons is-right level-item">
2025-06-15 14:46:32 +02:00
<a class="button is-medium" href={ BaseURL(ctx, WithPath("/quiz/leaderboard")) }><span class="icon"><i class="fa fa-trophy"></i></span></a>
2025-06-10 21:09:58 +02:00
<a class="button is-medium" href={ BaseURL(ctx, WithPath("/auth/logout")) }><span class="icon"><i class="fa fa-sign-out-alt"></i></span></a>
</div>
</div>
</div>
{ children... }
</section>
</div>
}
}