2
2
3
3
module RubyUI
4
4
class Link < Base
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
11
+
5
12
def initialize ( href : "#" , variant : :link , size : :md , icon : false , **attrs )
6
13
@href = href
7
14
@variant = variant . to_sym
@@ -36,43 +43,54 @@ def size_classes
36
43
37
44
def primary_classes
38
45
[
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
46
+ BASE_CLASSES ,
47
+ size_classes ,
48
+ "bg-primary text-primary-foreground shadow" ,
49
+ "hover:bg-primary/90"
41
50
]
42
51
end
43
52
44
53
def link_classes
45
54
[
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
55
+ BASE_CLASSES ,
56
+ size_classes ,
57
+ "text-primary underline-offset-4" ,
58
+ "hover:underline"
48
59
]
49
60
end
50
61
51
62
def secondary_classes
52
63
[
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
64
+ BASE_CLASSES ,
65
+ size_classes ,
66
+ "bg-secondary text-secondary-foreground" ,
67
+ "hover:bg-opacity-80"
55
68
]
56
69
end
57
70
58
71
def destructive_classes
59
72
[
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
73
+ BASE_CLASSES ,
74
+ size_classes ,
75
+ "bg-destructive text-destructive-foreground shadow-sm" ,
76
+ "hover:bg-destructive/90"
62
77
]
63
78
end
64
79
65
80
def outline_classes
66
81
[
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
82
+ BASE_CLASSES ,
83
+ size_classes ,
84
+ "border border-input bg-background shadow-sm" ,
85
+ "hover:bg-accent hover:text-accent-foreground"
69
86
]
70
87
end
71
88
72
89
def ghost_classes
73
90
[
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
91
+ BASE_CLASSES ,
92
+ size_classes ,
93
+ "hover:bg-accent hover:text-accent-foreground"
76
94
]
77
95
end
78
96
@@ -88,10 +106,7 @@ def default_classes
88
106
end
89
107
90
108
def default_attrs
91
- {
92
- type : "button" ,
93
- class : default_classes
94
- }
109
+ { type : "button" , class : default_classes }
95
110
end
96
111
end
97
112
end
0 commit comments