// templui component toast - version: v0.84.0 installed by templui v0.84.0 package toast import ( "git.jmbit.de/jmb/scanfile/server/web/templui/components/button" "git.jmbit.de/jmb/scanfile/server/web/templui/components/icon" "git.jmbit.de/jmb/scanfile/server/web/templui/utils" "strconv" ) type Variant string type Position string const ( VariantDefault Variant = "default" VariantSuccess Variant = "success" VariantError Variant = "error" VariantWarning Variant = "warning" VariantInfo Variant = "info" ) const ( PositionTopRight Position = "top-right" PositionTopLeft Position = "top-left" PositionTopCenter Position = "top-center" PositionBottomRight Position = "bottom-right" PositionBottomLeft Position = "bottom-left" PositionBottomCenter Position = "bottom-center" ) type Props struct { ID string Class string Attributes templ.Attributes Title string Description string Variant Variant Position Position Duration int Dismissible bool ShowIndicator bool Icon bool } templ Toast(props ...Props) { @ToastCSS() {{ var p Props }} if len(props) > 0 { {{ p = props[0] }} } if p.ID == "" { {{ p.ID = utils.RandomID() }} } {{ p = p.defaults() }} {{ isTop := p.Position == PositionTopRight || p.Position == PositionTopLeft || p.Position == PositionTopCenter }} {{ isBottom := p.Position == PositionBottomRight || p.Position == PositionBottomLeft || p.Position == PositionBottomCenter }}
{ p.Title }
} } templ description(p Props) { if p.Description != "" {{ p.Description }
} } templ dismissButton() { @button.Button(button.Props{ Size: button.SizeIcon, Variant: button.VariantGhost, Attributes: templ.Attributes{ "aria-label": "Close", "data-toast-dismiss": "", "type": "button", }, }) { @icon.X(icon.Props{ Size: 18, Class: "opacity-75 hover:opacity-100", }) } } func (p Props) defaults() Props { if p.Variant == "" { p.Variant = VariantDefault } if p.Position == "" { p.Position = PositionBottomRight } if p.Duration == 0 { p.Duration = 3000 } return p } func typeClass(t Variant) string { switch t { case VariantDefault: return "bg-gray-500" case VariantSuccess: return "bg-green-500" case VariantError: return "bg-red-500" case VariantWarning: return "bg-yellow-500" case VariantInfo: return "bg-blue-500" default: return "" } } var cssHandle = templ.NewOnceHandle() templ ToastCSS() { @cssHandle.Once() { } } templ Script() { }