78 lines
1.7 KiB
Go
78 lines
1.7 KiB
Go
package ui
|
|
|
|
type Size string
|
|
|
|
const (
|
|
SizeSM Size = "sm"
|
|
SizeMD Size = "md"
|
|
SizeLG Size = "lg"
|
|
)
|
|
|
|
type ButtonVariant string
|
|
|
|
const (
|
|
ButtonVariantPrimary ButtonVariant = "primary"
|
|
ButtonVariantSecondary ButtonVariant = "secondary"
|
|
ButtonVariantGhost ButtonVariant = "ghost"
|
|
ButtonVariantDanger ButtonVariant = "danger"
|
|
)
|
|
|
|
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, size Size) string {
|
|
return "ui-button 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 ButtonVariantSecondary, ButtonVariantGhost, ButtonVariantDanger:
|
|
return variant
|
|
default:
|
|
return ButtonVariantPrimary
|
|
}
|
|
}
|
|
|
|
func normalizedBadgeVariant(variant BadgeVariant) BadgeVariant {
|
|
switch variant {
|
|
case BadgeVariantWarning, BadgeVariantSuccess, BadgeVariantDanger:
|
|
return variant
|
|
default:
|
|
return BadgeVariantInfo
|
|
}
|
|
}
|