mirror of
https://codeberg.org/readeck/readeck.git
synced 2026-05-19 11:00:36 +00:00
150596399f
- Updated makefile so "make serve" watches for .templ files and
rebuild files upon changes
- Added a "templ" make target
- Added a top level "components" module
- Added a "components/forms" module
- Added server.RenderComponent method
- Added server.RenderTurboStreamComponent
- Preferences lazy loading
We're now ready to roll!
62 lines
1.3 KiB
Plaintext
62 lines
1.3 KiB
Plaintext
// SPDX-FileCopyrightText: © 2026 Olivier Meunier <olivier@neokraft.net>
|
|
//
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
package components
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"codeberg.org/readeck/readeck/internal/server"
|
|
)
|
|
|
|
templ (mc *message) component() {
|
|
<div class={ templ.Classes("message", mc.typeClass, mc.class) } { mc.attrs... }>
|
|
if mc.icon != "" {
|
|
<div>
|
|
@Icon(mc.icon)
|
|
</div>
|
|
}
|
|
<div class="grow">
|
|
{ children... }
|
|
</div>
|
|
if mc.removable {
|
|
<div class="no-js:hidden">
|
|
<button data-action="remover#remove" class="remover">
|
|
@Icon("o-cross")
|
|
</button>
|
|
</div>
|
|
}
|
|
</div>
|
|
}
|
|
|
|
// Flashes shows the flash messages extracted from the user's session.
|
|
templ Flashes() {
|
|
if flashes := server.Flashes(server.GetRequest(ctx)); len(flashes) > 0 {
|
|
<div class="toaster">
|
|
for _, f := range flashes {
|
|
if !strings.HasPrefix(f.Type, "_") {
|
|
{{
|
|
msg := newMessage(
|
|
WithMessageType(f.Type),
|
|
WithMessageDelay(5),
|
|
WithMessageRemovable,
|
|
)
|
|
switch f.Type {
|
|
case "error":
|
|
msg.attrs["role"] = "alert"
|
|
default:
|
|
msg.attrs["role"] = "status"
|
|
}
|
|
}}
|
|
<div class="drop-shadow-sm mb-1">
|
|
@msg.component() {
|
|
<strong>{ f.Message }</strong>
|
|
}
|
|
</div>
|
|
}
|
|
}
|
|
</div>
|
|
}
|
|
}
|