xtablo-source/go-backend/internal/web/ui/variants.go

95 lines
2.1 KiB
Go

package ui
type Size string
const (
SizeSM Size = "sm"
SizeMD Size = "md"
SizeLG Size = "lg"
)
type ButtonVariant string
const (
ButtonVariantDefault ButtonVariant = "default"
ButtonVariantNeutral ButtonVariant = "neutral"
ButtonVariantWarning ButtonVariant = "warning"
ButtonVariantSuccess ButtonVariant = "success"
ButtonVariantDanger ButtonVariant = "danger"
)
type ButtonTone string
const (
ButtonToneSolid ButtonTone = "solid"
ButtonToneSoft ButtonTone = "soft"
)
type IconButtonVariant string
const (
IconButtonVariantNeutral IconButtonVariant = "neutral"
IconButtonVariantDangerGhost IconButtonVariant = "danger-ghost"
)
type BadgeVariant string
const (
BadgeVariantInfo BadgeVariant = "info"
BadgeVariantWarning BadgeVariant = "warning"
BadgeVariantSuccess BadgeVariant = "success"
BadgeVariantDanger BadgeVariant = "danger"
)
func buttonClass(variant ButtonVariant, tone ButtonTone, size Size) string {
return "ui-button ui-button-" + string(normalizedButtonTone(tone)) + " ui-button-" + string(normalizedButtonVariant(variant)) + " ui-button-" + string(normalizedSize(size))
}
func iconButtonClass(variant IconButtonVariant) string {
switch variant {
case IconButtonVariantDangerGhost:
return "borderless-icon-button"
default:
return "ui-icon-button"
}
}
func badgeClass(variant BadgeVariant) string {
return "ui-badge ui-badge-" + string(normalizedBadgeVariant(variant))
}
func normalizedSize(size Size) Size {
switch size {
case SizeSM, SizeLG:
return size
default:
return SizeMD
}
}
func normalizedButtonVariant(variant ButtonVariant) ButtonVariant {
switch variant {
case ButtonVariantNeutral, ButtonVariantWarning, ButtonVariantSuccess, ButtonVariantDanger:
return variant
default:
return ButtonVariantDefault
}
}
func normalizedButtonTone(tone ButtonTone) ButtonTone {
switch tone {
case ButtonToneSoft:
return tone
default:
return ButtonToneSolid
}
}
func normalizedBadgeVariant(variant BadgeVariant) BadgeVariant {
switch variant {
case BadgeVariantWarning, BadgeVariantSuccess, BadgeVariantDanger:
return variant
default:
return BadgeVariantInfo
}
}