22
33module RubyUI
44 class Button < Base
5- DISABLED_CLASSES = "disabled:pointer-events-none disabled:opacity-50"
6- FOCUS_VISIBLE_CLASSES = "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
7- ARIA_DISABLED_CLASSES = "aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed"
8- DEFAULT_CLASSES = "whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors"
5+ BASE_CLASSES = [
6+ "whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors" ,
7+ "disabled:pointer-events-none disabled:opacity-50" ,
8+ "focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring" ,
9+ "aria-disabled:pointer-events-none aria-disabled:opacity-50 aria-disabled:cursor-not-allowed"
10+ ] . freeze
911
1012 def initialize ( type : :button , variant : :primary , size : :md , icon : false , **attrs )
1113 @type = type
@@ -41,10 +43,7 @@ def size_classes
4143
4244 def primary_classes
4345 [
44- DEFAULT_CLASSES ,
45- FOCUS_VISIBLE_CLASSES ,
46- DISABLED_CLASSES ,
47- ARIA_DISABLED_CLASSES ,
46+ BASE_CLASSES ,
4847 size_classes ,
4948 "bg-primary text-primary-foreground shadow" ,
5049 "hover:bg-primary/90"
@@ -53,10 +52,7 @@ def primary_classes
5352
5453 def link_classes
5554 [
56- DEFAULT_CLASSES ,
57- FOCUS_VISIBLE_CLASSES ,
58- DISABLED_CLASSES ,
59- ARIA_DISABLED_CLASSES ,
55+ BASE_CLASSES ,
6056 size_classes ,
6157 "text-primary underline-offset-4" ,
6258 "hover:underline"
@@ -65,10 +61,7 @@ def link_classes
6561
6662 def secondary_classes
6763 [
68- DEFAULT_CLASSES ,
69- FOCUS_VISIBLE_CLASSES ,
70- DISABLED_CLASSES ,
71- ARIA_DISABLED_CLASSES ,
64+ BASE_CLASSES ,
7265 size_classes ,
7366 "bg-secondary text-secondary-foreground" ,
7467 "hover:bg-opacity-80"
@@ -77,10 +70,7 @@ def secondary_classes
7770
7871 def destructive_classes
7972 [
80- DEFAULT_CLASSES ,
81- FOCUS_VISIBLE_CLASSES ,
82- DISABLED_CLASSES ,
83- ARIA_DISABLED_CLASSES ,
73+ BASE_CLASSES ,
8474 size_classes ,
8575 "bg-destructive text-destructive-foreground shadow-sm" ,
8676 "hover:bg-destructive/90"
@@ -89,10 +79,7 @@ def destructive_classes
8979
9080 def outline_classes
9181 [
92- DEFAULT_CLASSES ,
93- FOCUS_VISIBLE_CLASSES ,
94- DISABLED_CLASSES ,
95- ARIA_DISABLED_CLASSES ,
82+ BASE_CLASSES ,
9683 size_classes ,
9784 "border border-input bg-background shadow-sm" ,
9885 "hover:bg-accent hover:text-accent-foreground"
@@ -101,10 +88,7 @@ def outline_classes
10188
10289 def ghost_classes
10390 [
104- DEFAULT_CLASSES ,
105- FOCUS_VISIBLE_CLASSES ,
106- DISABLED_CLASSES ,
107- ARIA_DISABLED_CLASSES ,
91+ BASE_CLASSES ,
10892 size_classes ,
10993 "hover:bg-accent hover:text-accent-foreground"
11094 ]
0 commit comments