Skip to content

Commit b6b2748

Browse files
committed
aria-disabled for Link
1 parent e4264da commit b6b2748

1 file changed

Lines changed: 47 additions & 16 deletions

File tree

lib/ruby_ui/link/link.rb

Lines changed: 47 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
module RubyUI
44
class Link < 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"
9+
510
def initialize(href: "#", variant: :link, size: :md, icon: false, **attrs)
611
@href = href
712
@variant = variant.to_sym
@@ -36,43 +41,72 @@ def size_classes
3641

3742
def primary_classes
3843
[
39-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground shadow hover:bg-primary/90",
40-
size_classes
44+
DEFAULT_CLASSES,
45+
FOCUS_VISIBLE_CLASSES,
46+
DISABLED_CLASSES,
47+
ARIA_DISABLED_CLASSES,
48+
size_classes,
49+
"bg-primary text-primary-foreground shadow",
50+
"hover:bg-primary/90"
4151
]
4252
end
4353

4454
def link_classes
4555
[
46-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 text-primary underline-offset-4 hover:underline",
47-
size_classes
56+
DEFAULT_CLASSES,
57+
FOCUS_VISIBLE_CLASSES,
58+
DISABLED_CLASSES,
59+
ARIA_DISABLED_CLASSES,
60+
size_classes,
61+
"text-primary underline-offset-4",
62+
"hover:underline"
4863
]
4964
end
5065

5166
def secondary_classes
5267
[
53-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-secondary text-secondary-foreground hover:bg-opacity-80",
54-
size_classes
68+
DEFAULT_CLASSES,
69+
FOCUS_VISIBLE_CLASSES,
70+
DISABLED_CLASSES,
71+
ARIA_DISABLED_CLASSES,
72+
size_classes,
73+
"bg-secondary text-secondary-foreground",
74+
"hover:bg-opacity-80"
5575
]
5676
end
5777

5878
def destructive_classes
5979
[
60-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",
61-
size_classes
80+
DEFAULT_CLASSES,
81+
FOCUS_VISIBLE_CLASSES,
82+
DISABLED_CLASSES,
83+
ARIA_DISABLED_CLASSES,
84+
size_classes,
85+
"bg-destructive text-destructive-foreground shadow-sm",
86+
"hover:bg-destructive/90"
6287
]
6388
end
6489

6590
def outline_classes
6691
[
67-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",
68-
size_classes
92+
DEFAULT_CLASSES,
93+
FOCUS_VISIBLE_CLASSES,
94+
DISABLED_CLASSES,
95+
ARIA_DISABLED_CLASSES,
96+
size_classes,
97+
"border border-input bg-background shadow-sm",
98+
"hover:bg-accent hover:text-accent-foreground"
6999
]
70100
end
71101

72102
def ghost_classes
73103
[
74-
"whitespace-nowrap inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground",
75-
size_classes
104+
DEFAULT_CLASSES,
105+
FOCUS_VISIBLE_CLASSES,
106+
DISABLED_CLASSES,
107+
ARIA_DISABLED_CLASSES,
108+
size_classes,
109+
"hover:bg-accent hover:text-accent-foreground"
76110
]
77111
end
78112

@@ -88,10 +122,7 @@ def default_classes
88122
end
89123

90124
def default_attrs
91-
{
92-
type: "button",
93-
class: default_classes
94-
}
125+
{type: "button", class: default_classes}
95126
end
96127
end
97128
end

0 commit comments

Comments
 (0)