2024-09-18 02:22:17 -04:00
|
|
|
package blocks
|
2024-09-11 15:10:54 -04:00
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"strings"
|
|
|
|
|
|
|
|
|
|
"github.com/a-h/templ"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type Icon interface {
|
|
|
|
|
Render() templ.Component
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type Variant interface {
|
|
|
|
|
Attributes() templ.Attributes
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func clsxMerge(variants ...Variant) templ.Attributes {
|
|
|
|
|
combinedAttrs := templ.Attributes{}
|
|
|
|
|
var classElements []string
|
|
|
|
|
|
|
|
|
|
for _, variant := range variants {
|
|
|
|
|
attrs := variant.Attributes()
|
|
|
|
|
if class, ok := attrs["class"].(string); ok {
|
|
|
|
|
classElements = append(classElements, strings.Fields(class)...)
|
|
|
|
|
}
|
|
|
|
|
for key, value := range attrs {
|
|
|
|
|
if key != "class" {
|
|
|
|
|
combinedAttrs[key] = value
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(classElements) > 0 {
|
|
|
|
|
combinedAttrs["class"] = strings.Join(classElements, " ")
|
|
|
|
|
}
|
|
|
|
|
return combinedAttrs
|
|
|
|
|
}
|
2024-09-14 12:47:25 -04:00
|
|
|
|
|
|
|
|
func clsxBuilder(classes ...string) templ.Attributes {
|
|
|
|
|
if len(classes) == 0 {
|
|
|
|
|
return templ.Attributes{}
|
|
|
|
|
}
|
|
|
|
|
class := strings.Join(classes, " ")
|
|
|
|
|
return templ.Attributes{
|
|
|
|
|
"class": class,
|
|
|
|
|
}
|
|
|
|
|
}
|