shadcn-phlex 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +195 -0
- data/app.css +20 -0
- data/css/shadcn-source.css +3 -0
- data/css/shadcn-tailwind.css +160 -0
- data/css/themes/mauve.css +62 -0
- data/css/themes/mist.css +62 -0
- data/css/themes/neutral.css +74 -0
- data/css/themes/olive.css +62 -0
- data/css/themes/stone.css +62 -0
- data/css/themes/taupe.css +62 -0
- data/css/themes/zinc.css +62 -0
- data/js/controllers/accordion_controller.js +135 -0
- data/js/controllers/checkbox_controller.js +52 -0
- data/js/controllers/collapsible_controller.js +85 -0
- data/js/controllers/combobox_controller.js +168 -0
- data/js/controllers/command_controller.js +171 -0
- data/js/controllers/context_menu_controller.js +132 -0
- data/js/controllers/dark_mode_controller.js +106 -0
- data/js/controllers/dialog_controller.js +205 -0
- data/js/controllers/drawer_controller.js +161 -0
- data/js/controllers/dropdown_menu_controller.js +189 -0
- data/js/controllers/hover_card_controller.js +85 -0
- data/js/controllers/index.js +89 -0
- data/js/controllers/menubar_controller.js +171 -0
- data/js/controllers/navigation_menu_controller.js +160 -0
- data/js/controllers/popover_controller.js +151 -0
- data/js/controllers/radio_group_controller.js +78 -0
- data/js/controllers/scroll_area_controller.js +117 -0
- data/js/controllers/select_controller.js +198 -0
- data/js/controllers/sheet_controller.js +130 -0
- data/js/controllers/slider_controller.js +142 -0
- data/js/controllers/switch_controller.js +40 -0
- data/js/controllers/tabs_controller.js +96 -0
- data/js/controllers/toast_controller.js +206 -0
- data/js/controllers/toggle_controller.js +30 -0
- data/js/controllers/toggle_group_controller.js +73 -0
- data/js/controllers/tooltip_controller.js +146 -0
- data/lib/generators/shadcn_phlex/component_generator.rb +79 -0
- data/lib/generators/shadcn_phlex/install_generator.rb +217 -0
- data/lib/shadcn/base.rb +27 -0
- data/lib/shadcn/engine.rb +24 -0
- data/lib/shadcn/kit.rb +1158 -0
- data/lib/shadcn/themes/accent_colors.rb +106 -0
- data/lib/shadcn/themes/base_colors.rb +313 -0
- data/lib/shadcn/ui/accordion.rb +135 -0
- data/lib/shadcn/ui/alert.rb +79 -0
- data/lib/shadcn/ui/alert_dialog.rb +220 -0
- data/lib/shadcn/ui/aspect_ratio.rb +35 -0
- data/lib/shadcn/ui/avatar.rb +134 -0
- data/lib/shadcn/ui/badge.rb +48 -0
- data/lib/shadcn/ui/breadcrumb.rb +180 -0
- data/lib/shadcn/ui/button.rb +63 -0
- data/lib/shadcn/ui/button_group.rb +58 -0
- data/lib/shadcn/ui/card.rb +133 -0
- data/lib/shadcn/ui/checkbox.rb +72 -0
- data/lib/shadcn/ui/collapsible.rb +76 -0
- data/lib/shadcn/ui/combobox.rb +229 -0
- data/lib/shadcn/ui/command.rb +256 -0
- data/lib/shadcn/ui/context_menu.rb +319 -0
- data/lib/shadcn/ui/dialog.rb +226 -0
- data/lib/shadcn/ui/direction.rb +23 -0
- data/lib/shadcn/ui/drawer.rb +217 -0
- data/lib/shadcn/ui/dropdown_menu.rb +384 -0
- data/lib/shadcn/ui/empty.rb +97 -0
- data/lib/shadcn/ui/field.rb +126 -0
- data/lib/shadcn/ui/hover_card.rb +75 -0
- data/lib/shadcn/ui/input.rb +36 -0
- data/lib/shadcn/ui/input_group.rb +32 -0
- data/lib/shadcn/ui/input_otp.rb +112 -0
- data/lib/shadcn/ui/item.rb +115 -0
- data/lib/shadcn/ui/kbd.rb +45 -0
- data/lib/shadcn/ui/label.rb +28 -0
- data/lib/shadcn/ui/menubar.rb +345 -0
- data/lib/shadcn/ui/native_select.rb +31 -0
- data/lib/shadcn/ui/navigation_menu.rb +238 -0
- data/lib/shadcn/ui/pagination.rb +224 -0
- data/lib/shadcn/ui/popover.rb +147 -0
- data/lib/shadcn/ui/progress.rb +40 -0
- data/lib/shadcn/ui/radio_group.rb +92 -0
- data/lib/shadcn/ui/resizable.rb +108 -0
- data/lib/shadcn/ui/scroll_area.rb +75 -0
- data/lib/shadcn/ui/select.rb +235 -0
- data/lib/shadcn/ui/separator.rb +36 -0
- data/lib/shadcn/ui/sheet.rb +231 -0
- data/lib/shadcn/ui/sidebar.rb +420 -0
- data/lib/shadcn/ui/skeleton.rb +23 -0
- data/lib/shadcn/ui/slider.rb +72 -0
- data/lib/shadcn/ui/sonner.rb +177 -0
- data/lib/shadcn/ui/spinner.rb +58 -0
- data/lib/shadcn/ui/switch.rb +75 -0
- data/lib/shadcn/ui/table.rb +154 -0
- data/lib/shadcn/ui/tabs.rb +154 -0
- data/lib/shadcn/ui/text_field.rb +146 -0
- data/lib/shadcn/ui/textarea.rb +32 -0
- data/lib/shadcn/ui/theme_toggle.rb +74 -0
- data/lib/shadcn/ui/toggle.rb +66 -0
- data/lib/shadcn/ui/toggle_group.rb +75 -0
- data/lib/shadcn/ui/tooltip.rb +78 -0
- data/lib/shadcn/ui/typography.rb +217 -0
- data/lib/shadcn/version.rb +5 -0
- data/lib/shadcn-phlex.rb +6 -0
- data/lib/shadcn.rb +80 -0
- data/package.json +14 -0
- data/skills/shadcn-phlex/SKILL.md +190 -0
- data/skills/shadcn-phlex/evals/evals.json +90 -0
- data/skills/shadcn-phlex/references/component-catalog.md +355 -0
- data/skills/shadcn-phlex/rules/composition.md +235 -0
- data/skills/shadcn-phlex/rules/forms.md +151 -0
- data/skills/shadcn-phlex/rules/helpers.md +54 -0
- data/skills/shadcn-phlex/rules/stimulus.md +61 -0
- data/skills/shadcn-phlex/rules/styling.md +177 -0
- metadata +209 -0
data/lib/shadcn/kit.rb
ADDED
|
@@ -0,0 +1,1158 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Shadcn
|
|
4
|
+
# Include this module in any Phlex view to get short helper methods
|
|
5
|
+
# for all Shadcn UI components.
|
|
6
|
+
#
|
|
7
|
+
# class MyView < Phlex::HTML
|
|
8
|
+
# include Shadcn::Kit
|
|
9
|
+
#
|
|
10
|
+
# def view_template
|
|
11
|
+
# ui_card do
|
|
12
|
+
# ui_card_header do
|
|
13
|
+
# ui_card_title { "Hello" }
|
|
14
|
+
# end
|
|
15
|
+
# ui_card_content do
|
|
16
|
+
# ui_button(variant: :destructive) { "Delete" }
|
|
17
|
+
# end
|
|
18
|
+
# end
|
|
19
|
+
# end
|
|
20
|
+
# end
|
|
21
|
+
module Kit
|
|
22
|
+
# ── Accordion ──────────────────────────────────────────────
|
|
23
|
+
|
|
24
|
+
def ui_accordion(**attrs, &block)
|
|
25
|
+
render Shadcn::UI::Accordion.new(**attrs, &block)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def ui_accordion_item(**attrs, &block)
|
|
29
|
+
render Shadcn::UI::AccordionItem.new(**attrs, &block)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def ui_accordion_trigger(**attrs, &block)
|
|
33
|
+
render Shadcn::UI::AccordionTrigger.new(**attrs, &block)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def ui_accordion_content(**attrs, &block)
|
|
37
|
+
render Shadcn::UI::AccordionContent.new(**attrs, &block)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# ── Alert ──────────────────────────────────────────────────
|
|
41
|
+
|
|
42
|
+
def ui_alert(**attrs, &block)
|
|
43
|
+
render Shadcn::UI::Alert.new(**attrs, &block)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def ui_alert_title(**attrs, &block)
|
|
47
|
+
render Shadcn::UI::AlertTitle.new(**attrs, &block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def ui_alert_description(**attrs, &block)
|
|
51
|
+
render Shadcn::UI::AlertDescription.new(**attrs, &block)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
# ── Alert Dialog ───────────────────────────────────────────
|
|
55
|
+
|
|
56
|
+
def ui_alert_dialog(**attrs, &block)
|
|
57
|
+
render Shadcn::UI::AlertDialog.new(**attrs, &block)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def ui_alert_dialog_trigger(**attrs, &block)
|
|
61
|
+
render Shadcn::UI::AlertDialogTrigger.new(**attrs, &block)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def ui_alert_dialog_overlay(**attrs, &block)
|
|
65
|
+
render Shadcn::UI::AlertDialogOverlay.new(**attrs, &block)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def ui_alert_dialog_content(**attrs, &block)
|
|
69
|
+
render Shadcn::UI::AlertDialogContent.new(**attrs, &block)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def ui_alert_dialog_header(**attrs, &block)
|
|
73
|
+
render Shadcn::UI::AlertDialogHeader.new(**attrs, &block)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def ui_alert_dialog_footer(**attrs, &block)
|
|
77
|
+
render Shadcn::UI::AlertDialogFooter.new(**attrs, &block)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def ui_alert_dialog_title(**attrs, &block)
|
|
81
|
+
render Shadcn::UI::AlertDialogTitle.new(**attrs, &block)
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def ui_alert_dialog_description(**attrs, &block)
|
|
85
|
+
render Shadcn::UI::AlertDialogDescription.new(**attrs, &block)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def ui_alert_dialog_action(**attrs, &block)
|
|
89
|
+
render Shadcn::UI::AlertDialogAction.new(**attrs, &block)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def ui_alert_dialog_cancel(**attrs, &block)
|
|
93
|
+
render Shadcn::UI::AlertDialogCancel.new(**attrs, &block)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# ── Aspect Ratio ───────────────────────────────────────────
|
|
97
|
+
|
|
98
|
+
def ui_aspect_ratio(**attrs, &block)
|
|
99
|
+
render Shadcn::UI::AspectRatio.new(**attrs, &block)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# ── Avatar ─────────────────────────────────────────────────
|
|
103
|
+
|
|
104
|
+
def ui_avatar(**attrs, &block)
|
|
105
|
+
render Shadcn::UI::Avatar.new(**attrs, &block)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def ui_avatar_image(**attrs, &block)
|
|
109
|
+
render Shadcn::UI::AvatarImage.new(**attrs, &block)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def ui_avatar_fallback(**attrs, &block)
|
|
113
|
+
render Shadcn::UI::AvatarFallback.new(**attrs, &block)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
def ui_avatar_badge(**attrs, &block)
|
|
117
|
+
render Shadcn::UI::AvatarBadge.new(**attrs, &block)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def ui_avatar_group(**attrs, &block)
|
|
121
|
+
render Shadcn::UI::AvatarGroup.new(**attrs, &block)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def ui_avatar_group_count(**attrs, &block)
|
|
125
|
+
render Shadcn::UI::AvatarGroupCount.new(**attrs, &block)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# ── Badge ──────────────────────────────────────────────────
|
|
129
|
+
|
|
130
|
+
def ui_badge(**attrs, &block)
|
|
131
|
+
render Shadcn::UI::Badge.new(**attrs, &block)
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
# ── Breadcrumb ─────────────────────────────────────────────
|
|
135
|
+
|
|
136
|
+
def ui_breadcrumb(**attrs, &block)
|
|
137
|
+
render Shadcn::UI::Breadcrumb.new(**attrs, &block)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def ui_breadcrumb_list(**attrs, &block)
|
|
141
|
+
render Shadcn::UI::BreadcrumbList.new(**attrs, &block)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def ui_breadcrumb_item(**attrs, &block)
|
|
145
|
+
render Shadcn::UI::BreadcrumbItem.new(**attrs, &block)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def ui_breadcrumb_link(**attrs, &block)
|
|
149
|
+
render Shadcn::UI::BreadcrumbLink.new(**attrs, &block)
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def ui_breadcrumb_page(**attrs, &block)
|
|
153
|
+
render Shadcn::UI::BreadcrumbPage.new(**attrs, &block)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def ui_breadcrumb_separator(**attrs, &block)
|
|
157
|
+
render Shadcn::UI::BreadcrumbSeparator.new(**attrs, &block)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def ui_breadcrumb_ellipsis(**attrs, &block)
|
|
161
|
+
render Shadcn::UI::BreadcrumbEllipsis.new(**attrs, &block)
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
# ── Button ─────────────────────────────────────────────────
|
|
165
|
+
|
|
166
|
+
def ui_button(**attrs, &block)
|
|
167
|
+
render Shadcn::UI::Button.new(**attrs, &block)
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
def ui_button_group(**attrs, &block)
|
|
171
|
+
render Shadcn::UI::ButtonGroup.new(**attrs, &block)
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def ui_button_group_text(**attrs, &block)
|
|
175
|
+
render Shadcn::UI::ButtonGroupText.new(**attrs, &block)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
# ── Card ───────────────────────────────────────────────────
|
|
179
|
+
|
|
180
|
+
def ui_card(**attrs, &block)
|
|
181
|
+
render Shadcn::UI::Card.new(**attrs, &block)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def ui_card_header(**attrs, &block)
|
|
185
|
+
render Shadcn::UI::CardHeader.new(**attrs, &block)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def ui_card_title(**attrs, &block)
|
|
189
|
+
render Shadcn::UI::CardTitle.new(**attrs, &block)
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def ui_card_description(**attrs, &block)
|
|
193
|
+
render Shadcn::UI::CardDescription.new(**attrs, &block)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def ui_card_action(**attrs, &block)
|
|
197
|
+
render Shadcn::UI::CardAction.new(**attrs, &block)
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def ui_card_content(**attrs, &block)
|
|
201
|
+
render Shadcn::UI::CardContent.new(**attrs, &block)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
def ui_card_footer(**attrs, &block)
|
|
205
|
+
render Shadcn::UI::CardFooter.new(**attrs, &block)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
# ── Checkbox ───────────────────────────────────────────────
|
|
209
|
+
|
|
210
|
+
def ui_checkbox(**attrs, &block)
|
|
211
|
+
render Shadcn::UI::Checkbox.new(**attrs, &block)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
# ── Collapsible ────────────────────────────────────────────
|
|
215
|
+
|
|
216
|
+
def ui_collapsible(**attrs, &block)
|
|
217
|
+
render Shadcn::UI::Collapsible.new(**attrs, &block)
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def ui_collapsible_trigger(**attrs, &block)
|
|
221
|
+
render Shadcn::UI::CollapsibleTrigger.new(**attrs, &block)
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
def ui_collapsible_content(**attrs, &block)
|
|
225
|
+
render Shadcn::UI::CollapsibleContent.new(**attrs, &block)
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
# ── Combobox ───────────────────────────────────────────────
|
|
229
|
+
|
|
230
|
+
def ui_combobox(**attrs, &block)
|
|
231
|
+
render Shadcn::UI::Combobox.new(**attrs, &block)
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def ui_combobox_trigger(**attrs, &block)
|
|
235
|
+
render Shadcn::UI::ComboboxTrigger.new(**attrs, &block)
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
def ui_combobox_value(**attrs, &block)
|
|
239
|
+
render Shadcn::UI::ComboboxValue.new(**attrs, &block)
|
|
240
|
+
end
|
|
241
|
+
|
|
242
|
+
def ui_combobox_content(**attrs, &block)
|
|
243
|
+
render Shadcn::UI::ComboboxContent.new(**attrs, &block)
|
|
244
|
+
end
|
|
245
|
+
|
|
246
|
+
def ui_combobox_input(**attrs, &block)
|
|
247
|
+
render Shadcn::UI::ComboboxInput.new(**attrs, &block)
|
|
248
|
+
end
|
|
249
|
+
|
|
250
|
+
def ui_combobox_item(**attrs, &block)
|
|
251
|
+
render Shadcn::UI::ComboboxItem.new(**attrs, &block)
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
def ui_combobox_empty(**attrs, &block)
|
|
255
|
+
render Shadcn::UI::ComboboxEmpty.new(**attrs, &block)
|
|
256
|
+
end
|
|
257
|
+
|
|
258
|
+
# ── Command ────────────────────────────────────────────────
|
|
259
|
+
|
|
260
|
+
def ui_command(**attrs, &block)
|
|
261
|
+
render Shadcn::UI::Command.new(**attrs, &block)
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
def ui_command_dialog(**attrs, &block)
|
|
265
|
+
render Shadcn::UI::CommandDialog.new(**attrs, &block)
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
def ui_command_input(**attrs, &block)
|
|
269
|
+
render Shadcn::UI::CommandInput.new(**attrs, &block)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def ui_command_list(**attrs, &block)
|
|
273
|
+
render Shadcn::UI::CommandList.new(**attrs, &block)
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def ui_command_empty(**attrs, &block)
|
|
277
|
+
render Shadcn::UI::CommandEmpty.new(**attrs, &block)
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
def ui_command_group(**attrs, &block)
|
|
281
|
+
render Shadcn::UI::CommandGroup.new(**attrs, &block)
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def ui_command_item(**attrs, &block)
|
|
285
|
+
render Shadcn::UI::CommandItem.new(**attrs, &block)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
def ui_command_separator(**attrs, &block)
|
|
289
|
+
render Shadcn::UI::CommandSeparator.new(**attrs, &block)
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def ui_command_shortcut(**attrs, &block)
|
|
293
|
+
render Shadcn::UI::CommandShortcut.new(**attrs, &block)
|
|
294
|
+
end
|
|
295
|
+
|
|
296
|
+
# ── Context Menu ───────────────────────────────────────────
|
|
297
|
+
|
|
298
|
+
def ui_context_menu(**attrs, &block)
|
|
299
|
+
render Shadcn::UI::ContextMenu.new(**attrs, &block)
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def ui_context_menu_trigger(**attrs, &block)
|
|
303
|
+
render Shadcn::UI::ContextMenuTrigger.new(**attrs, &block)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def ui_context_menu_content(**attrs, &block)
|
|
307
|
+
render Shadcn::UI::ContextMenuContent.new(**attrs, &block)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def ui_context_menu_item(**attrs, &block)
|
|
311
|
+
render Shadcn::UI::ContextMenuItem.new(**attrs, &block)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def ui_context_menu_checkbox_item(**attrs, &block)
|
|
315
|
+
render Shadcn::UI::ContextMenuCheckboxItem.new(**attrs, &block)
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def ui_context_menu_radio_group(**attrs, &block)
|
|
319
|
+
render Shadcn::UI::ContextMenuRadioGroup.new(**attrs, &block)
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
def ui_context_menu_radio_item(**attrs, &block)
|
|
323
|
+
render Shadcn::UI::ContextMenuRadioItem.new(**attrs, &block)
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def ui_context_menu_label(**attrs, &block)
|
|
327
|
+
render Shadcn::UI::ContextMenuLabel.new(**attrs, &block)
|
|
328
|
+
end
|
|
329
|
+
|
|
330
|
+
def ui_context_menu_separator(**attrs, &block)
|
|
331
|
+
render Shadcn::UI::ContextMenuSeparator.new(**attrs, &block)
|
|
332
|
+
end
|
|
333
|
+
|
|
334
|
+
def ui_context_menu_shortcut(**attrs, &block)
|
|
335
|
+
render Shadcn::UI::ContextMenuShortcut.new(**attrs, &block)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
def ui_context_menu_sub_trigger(**attrs, &block)
|
|
339
|
+
render Shadcn::UI::ContextMenuSubTrigger.new(**attrs, &block)
|
|
340
|
+
end
|
|
341
|
+
|
|
342
|
+
def ui_context_menu_sub_content(**attrs, &block)
|
|
343
|
+
render Shadcn::UI::ContextMenuSubContent.new(**attrs, &block)
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
# ── Dialog ─────────────────────────────────────────────────
|
|
347
|
+
|
|
348
|
+
def ui_dialog(**attrs, &block)
|
|
349
|
+
render Shadcn::UI::Dialog.new(**attrs, &block)
|
|
350
|
+
end
|
|
351
|
+
|
|
352
|
+
def ui_dialog_trigger(**attrs, &block)
|
|
353
|
+
render Shadcn::UI::DialogTrigger.new(**attrs, &block)
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
def ui_dialog_overlay(**attrs, &block)
|
|
357
|
+
render Shadcn::UI::DialogOverlay.new(**attrs, &block)
|
|
358
|
+
end
|
|
359
|
+
|
|
360
|
+
def ui_dialog_content(**attrs, &block)
|
|
361
|
+
render Shadcn::UI::DialogContent.new(**attrs, &block)
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
def ui_dialog_header(**attrs, &block)
|
|
365
|
+
render Shadcn::UI::DialogHeader.new(**attrs, &block)
|
|
366
|
+
end
|
|
367
|
+
|
|
368
|
+
def ui_dialog_footer(**attrs, &block)
|
|
369
|
+
render Shadcn::UI::DialogFooter.new(**attrs, &block)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def ui_dialog_title(**attrs, &block)
|
|
373
|
+
render Shadcn::UI::DialogTitle.new(**attrs, &block)
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
def ui_dialog_description(**attrs, &block)
|
|
377
|
+
render Shadcn::UI::DialogDescription.new(**attrs, &block)
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
def ui_dialog_close(**attrs, &block)
|
|
381
|
+
render Shadcn::UI::DialogClose.new(**attrs, &block)
|
|
382
|
+
end
|
|
383
|
+
|
|
384
|
+
# ── Direction ──────────────────────────────────────────────
|
|
385
|
+
|
|
386
|
+
def ui_direction(**attrs, &block)
|
|
387
|
+
render Shadcn::UI::Direction.new(**attrs, &block)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
# ── Drawer ─────────────────────────────────────────────────
|
|
391
|
+
|
|
392
|
+
def ui_drawer(**attrs, &block)
|
|
393
|
+
render Shadcn::UI::Drawer.new(**attrs, &block)
|
|
394
|
+
end
|
|
395
|
+
|
|
396
|
+
def ui_drawer_trigger(**attrs, &block)
|
|
397
|
+
render Shadcn::UI::DrawerTrigger.new(**attrs, &block)
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
def ui_drawer_overlay(**attrs, &block)
|
|
401
|
+
render Shadcn::UI::DrawerOverlay.new(**attrs, &block)
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
def ui_drawer_content(**attrs, &block)
|
|
405
|
+
render Shadcn::UI::DrawerContent.new(**attrs, &block)
|
|
406
|
+
end
|
|
407
|
+
|
|
408
|
+
def ui_drawer_header(**attrs, &block)
|
|
409
|
+
render Shadcn::UI::DrawerHeader.new(**attrs, &block)
|
|
410
|
+
end
|
|
411
|
+
|
|
412
|
+
def ui_drawer_footer(**attrs, &block)
|
|
413
|
+
render Shadcn::UI::DrawerFooter.new(**attrs, &block)
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
def ui_drawer_title(**attrs, &block)
|
|
417
|
+
render Shadcn::UI::DrawerTitle.new(**attrs, &block)
|
|
418
|
+
end
|
|
419
|
+
|
|
420
|
+
def ui_drawer_description(**attrs, &block)
|
|
421
|
+
render Shadcn::UI::DrawerDescription.new(**attrs, &block)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
def ui_drawer_close(**attrs, &block)
|
|
425
|
+
render Shadcn::UI::DrawerClose.new(**attrs, &block)
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
# ── Dropdown Menu ──────────────────────────────────────────
|
|
429
|
+
|
|
430
|
+
def ui_dropdown_menu(**attrs, &block)
|
|
431
|
+
render Shadcn::UI::DropdownMenu.new(**attrs, &block)
|
|
432
|
+
end
|
|
433
|
+
|
|
434
|
+
def ui_dropdown_menu_trigger(**attrs, &block)
|
|
435
|
+
render Shadcn::UI::DropdownMenuTrigger.new(**attrs, &block)
|
|
436
|
+
end
|
|
437
|
+
|
|
438
|
+
def ui_dropdown_menu_content(**attrs, &block)
|
|
439
|
+
render Shadcn::UI::DropdownMenuContent.new(**attrs, &block)
|
|
440
|
+
end
|
|
441
|
+
|
|
442
|
+
def ui_dropdown_menu_item(**attrs, &block)
|
|
443
|
+
render Shadcn::UI::DropdownMenuItem.new(**attrs, &block)
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
def ui_dropdown_menu_checkbox_item(**attrs, &block)
|
|
447
|
+
render Shadcn::UI::DropdownMenuCheckboxItem.new(**attrs, &block)
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
def ui_dropdown_menu_radio_group(**attrs, &block)
|
|
451
|
+
render Shadcn::UI::DropdownMenuRadioGroup.new(**attrs, &block)
|
|
452
|
+
end
|
|
453
|
+
|
|
454
|
+
def ui_dropdown_menu_radio_item(**attrs, &block)
|
|
455
|
+
render Shadcn::UI::DropdownMenuRadioItem.new(**attrs, &block)
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
def ui_dropdown_menu_label(**attrs, &block)
|
|
459
|
+
render Shadcn::UI::DropdownMenuLabel.new(**attrs, &block)
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
def ui_dropdown_menu_separator(**attrs, &block)
|
|
463
|
+
render Shadcn::UI::DropdownMenuSeparator.new(**attrs, &block)
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
def ui_dropdown_menu_shortcut(**attrs, &block)
|
|
467
|
+
render Shadcn::UI::DropdownMenuShortcut.new(**attrs, &block)
|
|
468
|
+
end
|
|
469
|
+
|
|
470
|
+
def ui_dropdown_menu_group(**attrs, &block)
|
|
471
|
+
render Shadcn::UI::DropdownMenuGroup.new(**attrs, &block)
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
def ui_dropdown_menu_sub_trigger(**attrs, &block)
|
|
475
|
+
render Shadcn::UI::DropdownMenuSubTrigger.new(**attrs, &block)
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
def ui_dropdown_menu_sub_content(**attrs, &block)
|
|
479
|
+
render Shadcn::UI::DropdownMenuSubContent.new(**attrs, &block)
|
|
480
|
+
end
|
|
481
|
+
|
|
482
|
+
# ── Empty ──────────────────────────────────────────────────
|
|
483
|
+
|
|
484
|
+
def ui_empty(**attrs, &block)
|
|
485
|
+
render Shadcn::UI::Empty.new(**attrs, &block)
|
|
486
|
+
end
|
|
487
|
+
|
|
488
|
+
def ui_empty_media(**attrs, &block)
|
|
489
|
+
render Shadcn::UI::EmptyMedia.new(**attrs, &block)
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
def ui_empty_title(**attrs, &block)
|
|
493
|
+
render Shadcn::UI::EmptyTitle.new(**attrs, &block)
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
def ui_empty_description(**attrs, &block)
|
|
497
|
+
render Shadcn::UI::EmptyDescription.new(**attrs, &block)
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
def ui_empty_actions(**attrs, &block)
|
|
501
|
+
render Shadcn::UI::EmptyActions.new(**attrs, &block)
|
|
502
|
+
end
|
|
503
|
+
|
|
504
|
+
# ── Field ──────────────────────────────────────────────────
|
|
505
|
+
|
|
506
|
+
def ui_field(**attrs, &block)
|
|
507
|
+
render Shadcn::UI::Field.new(**attrs, &block)
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
def ui_field_control(**attrs, &block)
|
|
511
|
+
render Shadcn::UI::FieldControl.new(**attrs, &block)
|
|
512
|
+
end
|
|
513
|
+
|
|
514
|
+
def ui_field_description(**attrs, &block)
|
|
515
|
+
render Shadcn::UI::FieldDescription.new(**attrs, &block)
|
|
516
|
+
end
|
|
517
|
+
|
|
518
|
+
def ui_field_error(**attrs, &block)
|
|
519
|
+
render Shadcn::UI::FieldError.new(**attrs, &block)
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
def ui_fieldset(**attrs, &block)
|
|
523
|
+
render Shadcn::UI::Fieldset.new(**attrs, &block)
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
def ui_fieldset_legend(**attrs, &block)
|
|
527
|
+
render Shadcn::UI::FieldsetLegend.new(**attrs, &block)
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
# ── Hover Card ─────────────────────────────────────────────
|
|
531
|
+
|
|
532
|
+
def ui_hover_card(**attrs, &block)
|
|
533
|
+
render Shadcn::UI::HoverCard.new(**attrs, &block)
|
|
534
|
+
end
|
|
535
|
+
|
|
536
|
+
def ui_hover_card_trigger(**attrs, &block)
|
|
537
|
+
render Shadcn::UI::HoverCardTrigger.new(**attrs, &block)
|
|
538
|
+
end
|
|
539
|
+
|
|
540
|
+
def ui_hover_card_content(**attrs, &block)
|
|
541
|
+
render Shadcn::UI::HoverCardContent.new(**attrs, &block)
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
# ── Input ──────────────────────────────────────────────────
|
|
545
|
+
|
|
546
|
+
def ui_input(**attrs, &block)
|
|
547
|
+
render Shadcn::UI::Input.new(**attrs, &block)
|
|
548
|
+
end
|
|
549
|
+
|
|
550
|
+
def ui_input_group(**attrs, &block)
|
|
551
|
+
render Shadcn::UI::InputGroup.new(**attrs, &block)
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
# ── Input OTP ──────────────────────────────────────────────
|
|
555
|
+
|
|
556
|
+
def ui_input_otp(**attrs, &block)
|
|
557
|
+
render Shadcn::UI::InputOTP.new(**attrs, &block)
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
def ui_input_otp_group(**attrs, &block)
|
|
561
|
+
render Shadcn::UI::InputOTPGroup.new(**attrs, &block)
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
def ui_input_otp_slot(**attrs, &block)
|
|
565
|
+
render Shadcn::UI::InputOTPSlot.new(**attrs, &block)
|
|
566
|
+
end
|
|
567
|
+
|
|
568
|
+
def ui_input_otp_separator(**attrs, &block)
|
|
569
|
+
render Shadcn::UI::InputOTPSeparator.new(**attrs, &block)
|
|
570
|
+
end
|
|
571
|
+
|
|
572
|
+
# ── Item ───────────────────────────────────────────────────
|
|
573
|
+
|
|
574
|
+
def ui_item(**attrs, &block)
|
|
575
|
+
render Shadcn::UI::Item.new(**attrs, &block)
|
|
576
|
+
end
|
|
577
|
+
|
|
578
|
+
def ui_item_media(**attrs, &block)
|
|
579
|
+
render Shadcn::UI::ItemMedia.new(**attrs, &block)
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
def ui_item_content(**attrs, &block)
|
|
583
|
+
render Shadcn::UI::ItemContent.new(**attrs, &block)
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
def ui_item_title(**attrs, &block)
|
|
587
|
+
render Shadcn::UI::ItemTitle.new(**attrs, &block)
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
def ui_item_description(**attrs, &block)
|
|
591
|
+
render Shadcn::UI::ItemDescription.new(**attrs, &block)
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
def ui_item_actions(**attrs, &block)
|
|
595
|
+
render Shadcn::UI::ItemActions.new(**attrs, &block)
|
|
596
|
+
end
|
|
597
|
+
|
|
598
|
+
# ── Kbd ────────────────────────────────────────────────────
|
|
599
|
+
|
|
600
|
+
def ui_kbd(**attrs, &block)
|
|
601
|
+
render Shadcn::UI::Kbd.new(**attrs, &block)
|
|
602
|
+
end
|
|
603
|
+
|
|
604
|
+
def ui_kbd_group(**attrs, &block)
|
|
605
|
+
render Shadcn::UI::KbdGroup.new(**attrs, &block)
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
# ── Label ──────────────────────────────────────────────────
|
|
609
|
+
|
|
610
|
+
def ui_label(**attrs, &block)
|
|
611
|
+
render Shadcn::UI::Label.new(**attrs, &block)
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
# ── Menubar ────────────────────────────────────────────────
|
|
615
|
+
|
|
616
|
+
def ui_menubar(**attrs, &block)
|
|
617
|
+
render Shadcn::UI::Menubar.new(**attrs, &block)
|
|
618
|
+
end
|
|
619
|
+
|
|
620
|
+
def ui_menubar_menu(**attrs, &block)
|
|
621
|
+
render Shadcn::UI::MenubarMenu.new(**attrs, &block)
|
|
622
|
+
end
|
|
623
|
+
|
|
624
|
+
def ui_menubar_trigger(**attrs, &block)
|
|
625
|
+
render Shadcn::UI::MenubarTrigger.new(**attrs, &block)
|
|
626
|
+
end
|
|
627
|
+
|
|
628
|
+
def ui_menubar_content(**attrs, &block)
|
|
629
|
+
render Shadcn::UI::MenubarContent.new(**attrs, &block)
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
def ui_menubar_item(**attrs, &block)
|
|
633
|
+
render Shadcn::UI::MenubarItem.new(**attrs, &block)
|
|
634
|
+
end
|
|
635
|
+
|
|
636
|
+
def ui_menubar_checkbox_item(**attrs, &block)
|
|
637
|
+
render Shadcn::UI::MenubarCheckboxItem.new(**attrs, &block)
|
|
638
|
+
end
|
|
639
|
+
|
|
640
|
+
def ui_menubar_radio_group(**attrs, &block)
|
|
641
|
+
render Shadcn::UI::MenubarRadioGroup.new(**attrs, &block)
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
def ui_menubar_radio_item(**attrs, &block)
|
|
645
|
+
render Shadcn::UI::MenubarRadioItem.new(**attrs, &block)
|
|
646
|
+
end
|
|
647
|
+
|
|
648
|
+
def ui_menubar_label(**attrs, &block)
|
|
649
|
+
render Shadcn::UI::MenubarLabel.new(**attrs, &block)
|
|
650
|
+
end
|
|
651
|
+
|
|
652
|
+
def ui_menubar_separator(**attrs, &block)
|
|
653
|
+
render Shadcn::UI::MenubarSeparator.new(**attrs, &block)
|
|
654
|
+
end
|
|
655
|
+
|
|
656
|
+
def ui_menubar_shortcut(**attrs, &block)
|
|
657
|
+
render Shadcn::UI::MenubarShortcut.new(**attrs, &block)
|
|
658
|
+
end
|
|
659
|
+
|
|
660
|
+
def ui_menubar_sub_trigger(**attrs, &block)
|
|
661
|
+
render Shadcn::UI::MenubarSubTrigger.new(**attrs, &block)
|
|
662
|
+
end
|
|
663
|
+
|
|
664
|
+
def ui_menubar_sub_content(**attrs, &block)
|
|
665
|
+
render Shadcn::UI::MenubarSubContent.new(**attrs, &block)
|
|
666
|
+
end
|
|
667
|
+
|
|
668
|
+
# ── Native Select ──────────────────────────────────────────
|
|
669
|
+
|
|
670
|
+
def ui_native_select(**attrs, &block)
|
|
671
|
+
render Shadcn::UI::NativeSelect.new(**attrs, &block)
|
|
672
|
+
end
|
|
673
|
+
|
|
674
|
+
# ── Navigation Menu ────────────────────────────────────────
|
|
675
|
+
|
|
676
|
+
def ui_navigation_menu(**attrs, &block)
|
|
677
|
+
render Shadcn::UI::NavigationMenu.new(**attrs, &block)
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
def ui_navigation_menu_list(**attrs, &block)
|
|
681
|
+
render Shadcn::UI::NavigationMenuList.new(**attrs, &block)
|
|
682
|
+
end
|
|
683
|
+
|
|
684
|
+
def ui_navigation_menu_item(**attrs, &block)
|
|
685
|
+
render Shadcn::UI::NavigationMenuItem.new(**attrs, &block)
|
|
686
|
+
end
|
|
687
|
+
|
|
688
|
+
def ui_navigation_menu_trigger(**attrs, &block)
|
|
689
|
+
render Shadcn::UI::NavigationMenuTrigger.new(**attrs, &block)
|
|
690
|
+
end
|
|
691
|
+
|
|
692
|
+
def ui_navigation_menu_content(**attrs, &block)
|
|
693
|
+
render Shadcn::UI::NavigationMenuContent.new(**attrs, &block)
|
|
694
|
+
end
|
|
695
|
+
|
|
696
|
+
def ui_navigation_menu_link(**attrs, &block)
|
|
697
|
+
render Shadcn::UI::NavigationMenuLink.new(**attrs, &block)
|
|
698
|
+
end
|
|
699
|
+
|
|
700
|
+
def ui_navigation_menu_viewport(**attrs, &block)
|
|
701
|
+
render Shadcn::UI::NavigationMenuViewport.new(**attrs, &block)
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
def ui_navigation_menu_indicator(**attrs, &block)
|
|
705
|
+
render Shadcn::UI::NavigationMenuIndicator.new(**attrs, &block)
|
|
706
|
+
end
|
|
707
|
+
|
|
708
|
+
# ── Pagination ─────────────────────────────────────────────
|
|
709
|
+
|
|
710
|
+
def ui_pagination(**attrs, &block)
|
|
711
|
+
render Shadcn::UI::Pagination.new(**attrs, &block)
|
|
712
|
+
end
|
|
713
|
+
|
|
714
|
+
def ui_pagination_content(**attrs, &block)
|
|
715
|
+
render Shadcn::UI::PaginationContent.new(**attrs, &block)
|
|
716
|
+
end
|
|
717
|
+
|
|
718
|
+
def ui_pagination_item(**attrs, &block)
|
|
719
|
+
render Shadcn::UI::PaginationItem.new(**attrs, &block)
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
def ui_pagination_link(**attrs, &block)
|
|
723
|
+
render Shadcn::UI::PaginationLink.new(**attrs, &block)
|
|
724
|
+
end
|
|
725
|
+
|
|
726
|
+
def ui_pagination_previous(**attrs, &block)
|
|
727
|
+
render Shadcn::UI::PaginationPrevious.new(**attrs, &block)
|
|
728
|
+
end
|
|
729
|
+
|
|
730
|
+
def ui_pagination_next(**attrs, &block)
|
|
731
|
+
render Shadcn::UI::PaginationNext.new(**attrs, &block)
|
|
732
|
+
end
|
|
733
|
+
|
|
734
|
+
def ui_pagination_ellipsis(**attrs, &block)
|
|
735
|
+
render Shadcn::UI::PaginationEllipsis.new(**attrs, &block)
|
|
736
|
+
end
|
|
737
|
+
|
|
738
|
+
# ── Popover ────────────────────────────────────────────────
|
|
739
|
+
|
|
740
|
+
def ui_popover(**attrs, &block)
|
|
741
|
+
render Shadcn::UI::Popover.new(**attrs, &block)
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
def ui_popover_trigger(**attrs, &block)
|
|
745
|
+
render Shadcn::UI::PopoverTrigger.new(**attrs, &block)
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
def ui_popover_content(**attrs, &block)
|
|
749
|
+
render Shadcn::UI::PopoverContent.new(**attrs, &block)
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
def ui_popover_anchor(**attrs, &block)
|
|
753
|
+
render Shadcn::UI::PopoverAnchor.new(**attrs, &block)
|
|
754
|
+
end
|
|
755
|
+
|
|
756
|
+
def ui_popover_header(**attrs, &block)
|
|
757
|
+
render Shadcn::UI::PopoverHeader.new(**attrs, &block)
|
|
758
|
+
end
|
|
759
|
+
|
|
760
|
+
def ui_popover_title(**attrs, &block)
|
|
761
|
+
render Shadcn::UI::PopoverTitle.new(**attrs, &block)
|
|
762
|
+
end
|
|
763
|
+
|
|
764
|
+
def ui_popover_description(**attrs, &block)
|
|
765
|
+
render Shadcn::UI::PopoverDescription.new(**attrs, &block)
|
|
766
|
+
end
|
|
767
|
+
|
|
768
|
+
# ── Progress ───────────────────────────────────────────────
|
|
769
|
+
|
|
770
|
+
def ui_progress(**attrs, &block)
|
|
771
|
+
render Shadcn::UI::Progress.new(**attrs, &block)
|
|
772
|
+
end
|
|
773
|
+
|
|
774
|
+
# ── Radio Group ────────────────────────────────────────────
|
|
775
|
+
|
|
776
|
+
def ui_radio_group(**attrs, &block)
|
|
777
|
+
render Shadcn::UI::RadioGroup.new(**attrs, &block)
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
def ui_radio_group_item(**attrs, &block)
|
|
781
|
+
render Shadcn::UI::RadioGroupItem.new(**attrs, &block)
|
|
782
|
+
end
|
|
783
|
+
|
|
784
|
+
# ── Resizable ──────────────────────────────────────────────
|
|
785
|
+
|
|
786
|
+
def ui_resizable_panel_group(**attrs, &block)
|
|
787
|
+
render Shadcn::UI::ResizablePanelGroup.new(**attrs, &block)
|
|
788
|
+
end
|
|
789
|
+
|
|
790
|
+
def ui_resizable_panel(**attrs, &block)
|
|
791
|
+
render Shadcn::UI::ResizablePanel.new(**attrs, &block)
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
def ui_resizable_handle(**attrs, &block)
|
|
795
|
+
render Shadcn::UI::ResizableHandle.new(**attrs, &block)
|
|
796
|
+
end
|
|
797
|
+
|
|
798
|
+
# ── Scroll Area ────────────────────────────────────────────
|
|
799
|
+
|
|
800
|
+
def ui_scroll_area(**attrs, &block)
|
|
801
|
+
render Shadcn::UI::ScrollArea.new(**attrs, &block)
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
def ui_scroll_bar(**attrs, &block)
|
|
805
|
+
render Shadcn::UI::ScrollBar.new(**attrs, &block)
|
|
806
|
+
end
|
|
807
|
+
|
|
808
|
+
# ── Select ─────────────────────────────────────────────────
|
|
809
|
+
|
|
810
|
+
def ui_select(**attrs, &block)
|
|
811
|
+
render Shadcn::UI::Select.new(**attrs, &block)
|
|
812
|
+
end
|
|
813
|
+
|
|
814
|
+
def ui_select_trigger(**attrs, &block)
|
|
815
|
+
render Shadcn::UI::SelectTrigger.new(**attrs, &block)
|
|
816
|
+
end
|
|
817
|
+
|
|
818
|
+
def ui_select_value(**attrs, &block)
|
|
819
|
+
render Shadcn::UI::SelectValue.new(**attrs, &block)
|
|
820
|
+
end
|
|
821
|
+
|
|
822
|
+
def ui_select_content(**attrs, &block)
|
|
823
|
+
render Shadcn::UI::SelectContent.new(**attrs, &block)
|
|
824
|
+
end
|
|
825
|
+
|
|
826
|
+
def ui_select_group(**attrs, &block)
|
|
827
|
+
render Shadcn::UI::SelectGroup.new(**attrs, &block)
|
|
828
|
+
end
|
|
829
|
+
|
|
830
|
+
def ui_select_item(**attrs, &block)
|
|
831
|
+
render Shadcn::UI::SelectItem.new(**attrs, &block)
|
|
832
|
+
end
|
|
833
|
+
|
|
834
|
+
def ui_select_label(**attrs, &block)
|
|
835
|
+
render Shadcn::UI::SelectLabel.new(**attrs, &block)
|
|
836
|
+
end
|
|
837
|
+
|
|
838
|
+
def ui_select_separator(**attrs, &block)
|
|
839
|
+
render Shadcn::UI::SelectSeparator.new(**attrs, &block)
|
|
840
|
+
end
|
|
841
|
+
|
|
842
|
+
# ── Separator ──────────────────────────────────────────────
|
|
843
|
+
|
|
844
|
+
def ui_separator(**attrs, &block)
|
|
845
|
+
render Shadcn::UI::Separator.new(**attrs, &block)
|
|
846
|
+
end
|
|
847
|
+
|
|
848
|
+
# ── Sheet ──────────────────────────────────────────────────
|
|
849
|
+
|
|
850
|
+
def ui_sheet(**attrs, &block)
|
|
851
|
+
render Shadcn::UI::Sheet.new(**attrs, &block)
|
|
852
|
+
end
|
|
853
|
+
|
|
854
|
+
def ui_sheet_trigger(**attrs, &block)
|
|
855
|
+
render Shadcn::UI::SheetTrigger.new(**attrs, &block)
|
|
856
|
+
end
|
|
857
|
+
|
|
858
|
+
def ui_sheet_overlay(**attrs, &block)
|
|
859
|
+
render Shadcn::UI::SheetOverlay.new(**attrs, &block)
|
|
860
|
+
end
|
|
861
|
+
|
|
862
|
+
def ui_sheet_content(**attrs, &block)
|
|
863
|
+
render Shadcn::UI::SheetContent.new(**attrs, &block)
|
|
864
|
+
end
|
|
865
|
+
|
|
866
|
+
def ui_sheet_header(**attrs, &block)
|
|
867
|
+
render Shadcn::UI::SheetHeader.new(**attrs, &block)
|
|
868
|
+
end
|
|
869
|
+
|
|
870
|
+
def ui_sheet_footer(**attrs, &block)
|
|
871
|
+
render Shadcn::UI::SheetFooter.new(**attrs, &block)
|
|
872
|
+
end
|
|
873
|
+
|
|
874
|
+
def ui_sheet_title(**attrs, &block)
|
|
875
|
+
render Shadcn::UI::SheetTitle.new(**attrs, &block)
|
|
876
|
+
end
|
|
877
|
+
|
|
878
|
+
def ui_sheet_description(**attrs, &block)
|
|
879
|
+
render Shadcn::UI::SheetDescription.new(**attrs, &block)
|
|
880
|
+
end
|
|
881
|
+
|
|
882
|
+
def ui_sheet_close(**attrs, &block)
|
|
883
|
+
render Shadcn::UI::SheetClose.new(**attrs, &block)
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
# ── Sidebar ────────────────────────────────────────────────
|
|
887
|
+
|
|
888
|
+
def ui_sidebar(**attrs, &block)
|
|
889
|
+
render Shadcn::UI::Sidebar.new(**attrs, &block)
|
|
890
|
+
end
|
|
891
|
+
|
|
892
|
+
def ui_sidebar_header(**attrs, &block)
|
|
893
|
+
render Shadcn::UI::SidebarHeader.new(**attrs, &block)
|
|
894
|
+
end
|
|
895
|
+
|
|
896
|
+
def ui_sidebar_content(**attrs, &block)
|
|
897
|
+
render Shadcn::UI::SidebarContent.new(**attrs, &block)
|
|
898
|
+
end
|
|
899
|
+
|
|
900
|
+
def ui_sidebar_footer(**attrs, &block)
|
|
901
|
+
render Shadcn::UI::SidebarFooter.new(**attrs, &block)
|
|
902
|
+
end
|
|
903
|
+
|
|
904
|
+
def ui_sidebar_group(**attrs, &block)
|
|
905
|
+
render Shadcn::UI::SidebarGroup.new(**attrs, &block)
|
|
906
|
+
end
|
|
907
|
+
|
|
908
|
+
def ui_sidebar_group_label(**attrs, &block)
|
|
909
|
+
render Shadcn::UI::SidebarGroupLabel.new(**attrs, &block)
|
|
910
|
+
end
|
|
911
|
+
|
|
912
|
+
def ui_sidebar_group_content(**attrs, &block)
|
|
913
|
+
render Shadcn::UI::SidebarGroupContent.new(**attrs, &block)
|
|
914
|
+
end
|
|
915
|
+
|
|
916
|
+
def ui_sidebar_menu(**attrs, &block)
|
|
917
|
+
render Shadcn::UI::SidebarMenu.new(**attrs, &block)
|
|
918
|
+
end
|
|
919
|
+
|
|
920
|
+
def ui_sidebar_menu_item(**attrs, &block)
|
|
921
|
+
render Shadcn::UI::SidebarMenuItem.new(**attrs, &block)
|
|
922
|
+
end
|
|
923
|
+
|
|
924
|
+
def ui_sidebar_menu_button(**attrs, &block)
|
|
925
|
+
render Shadcn::UI::SidebarMenuButton.new(**attrs, &block)
|
|
926
|
+
end
|
|
927
|
+
|
|
928
|
+
def ui_sidebar_menu_action(**attrs, &block)
|
|
929
|
+
render Shadcn::UI::SidebarMenuAction.new(**attrs, &block)
|
|
930
|
+
end
|
|
931
|
+
|
|
932
|
+
def ui_sidebar_menu_sub(**attrs, &block)
|
|
933
|
+
render Shadcn::UI::SidebarMenuSub.new(**attrs, &block)
|
|
934
|
+
end
|
|
935
|
+
|
|
936
|
+
def ui_sidebar_menu_sub_item(**attrs, &block)
|
|
937
|
+
render Shadcn::UI::SidebarMenuSubItem.new(**attrs, &block)
|
|
938
|
+
end
|
|
939
|
+
|
|
940
|
+
def ui_sidebar_menu_sub_button(**attrs, &block)
|
|
941
|
+
render Shadcn::UI::SidebarMenuSubButton.new(**attrs, &block)
|
|
942
|
+
end
|
|
943
|
+
|
|
944
|
+
def ui_sidebar_panel(**attrs, &block)
|
|
945
|
+
render Shadcn::UI::SidebarPanel.new(**attrs, &block)
|
|
946
|
+
end
|
|
947
|
+
|
|
948
|
+
def ui_sidebar_separator(**attrs, &block)
|
|
949
|
+
render Shadcn::UI::SidebarSeparator.new(**attrs, &block)
|
|
950
|
+
end
|
|
951
|
+
|
|
952
|
+
def ui_sidebar_trigger(**attrs, &block)
|
|
953
|
+
render Shadcn::UI::SidebarTrigger.new(**attrs, &block)
|
|
954
|
+
end
|
|
955
|
+
|
|
956
|
+
# ── Skeleton ───────────────────────────────────────────────
|
|
957
|
+
|
|
958
|
+
def ui_skeleton(**attrs, &block)
|
|
959
|
+
render Shadcn::UI::Skeleton.new(**attrs, &block)
|
|
960
|
+
end
|
|
961
|
+
|
|
962
|
+
# ── Slider ─────────────────────────────────────────────────
|
|
963
|
+
|
|
964
|
+
def ui_slider(**attrs, &block)
|
|
965
|
+
render Shadcn::UI::Slider.new(**attrs, &block)
|
|
966
|
+
end
|
|
967
|
+
|
|
968
|
+
# ── Spinner ────────────────────────────────────────────────
|
|
969
|
+
|
|
970
|
+
def ui_spinner(**attrs, &block)
|
|
971
|
+
render Shadcn::UI::Spinner.new(**attrs, &block)
|
|
972
|
+
end
|
|
973
|
+
|
|
974
|
+
# ── Switch ─────────────────────────────────────────────────
|
|
975
|
+
|
|
976
|
+
def ui_switch(**attrs, &block)
|
|
977
|
+
render Shadcn::UI::Switch.new(**attrs, &block)
|
|
978
|
+
end
|
|
979
|
+
|
|
980
|
+
# ── Table ──────────────────────────────────────────────────
|
|
981
|
+
|
|
982
|
+
def ui_table(**attrs, &block)
|
|
983
|
+
render Shadcn::UI::Table.new(**attrs, &block)
|
|
984
|
+
end
|
|
985
|
+
|
|
986
|
+
def ui_table_header(**attrs, &block)
|
|
987
|
+
render Shadcn::UI::TableHeader.new(**attrs, &block)
|
|
988
|
+
end
|
|
989
|
+
|
|
990
|
+
def ui_table_body(**attrs, &block)
|
|
991
|
+
render Shadcn::UI::TableBody.new(**attrs, &block)
|
|
992
|
+
end
|
|
993
|
+
|
|
994
|
+
def ui_table_footer(**attrs, &block)
|
|
995
|
+
render Shadcn::UI::TableFooter.new(**attrs, &block)
|
|
996
|
+
end
|
|
997
|
+
|
|
998
|
+
def ui_table_row(**attrs, &block)
|
|
999
|
+
render Shadcn::UI::TableRow.new(**attrs, &block)
|
|
1000
|
+
end
|
|
1001
|
+
|
|
1002
|
+
def ui_table_head(**attrs, &block)
|
|
1003
|
+
render Shadcn::UI::TableHead.new(**attrs, &block)
|
|
1004
|
+
end
|
|
1005
|
+
|
|
1006
|
+
def ui_table_cell(**attrs, &block)
|
|
1007
|
+
render Shadcn::UI::TableCell.new(**attrs, &block)
|
|
1008
|
+
end
|
|
1009
|
+
|
|
1010
|
+
def ui_table_caption(**attrs, &block)
|
|
1011
|
+
render Shadcn::UI::TableCaption.new(**attrs, &block)
|
|
1012
|
+
end
|
|
1013
|
+
|
|
1014
|
+
# ── Tabs ───────────────────────────────────────────────────
|
|
1015
|
+
|
|
1016
|
+
def ui_tabs(**attrs, &block)
|
|
1017
|
+
render Shadcn::UI::Tabs.new(**attrs, &block)
|
|
1018
|
+
end
|
|
1019
|
+
|
|
1020
|
+
def ui_tabs_list(**attrs, &block)
|
|
1021
|
+
render Shadcn::UI::TabsList.new(**attrs, &block)
|
|
1022
|
+
end
|
|
1023
|
+
|
|
1024
|
+
def ui_tabs_trigger(**attrs, &block)
|
|
1025
|
+
render Shadcn::UI::TabsTrigger.new(**attrs, &block)
|
|
1026
|
+
end
|
|
1027
|
+
|
|
1028
|
+
def ui_tabs_content(**attrs, &block)
|
|
1029
|
+
render Shadcn::UI::TabsContent.new(**attrs, &block)
|
|
1030
|
+
end
|
|
1031
|
+
|
|
1032
|
+
# ── Textarea ───────────────────────────────────────────────
|
|
1033
|
+
|
|
1034
|
+
def ui_textarea(**attrs, &block)
|
|
1035
|
+
render Shadcn::UI::Textarea.new(**attrs, &block)
|
|
1036
|
+
end
|
|
1037
|
+
|
|
1038
|
+
# ── Toast / Sonner ─────────────────────────────────────────
|
|
1039
|
+
|
|
1040
|
+
def ui_toaster(**attrs, &block)
|
|
1041
|
+
render Shadcn::UI::Toaster.new(**attrs, &block)
|
|
1042
|
+
end
|
|
1043
|
+
|
|
1044
|
+
def ui_toast(**attrs, &block)
|
|
1045
|
+
render Shadcn::UI::Toast.new(**attrs, &block)
|
|
1046
|
+
end
|
|
1047
|
+
|
|
1048
|
+
def ui_toast_title(**attrs, &block)
|
|
1049
|
+
render Shadcn::UI::ToastTitle.new(**attrs, &block)
|
|
1050
|
+
end
|
|
1051
|
+
|
|
1052
|
+
def ui_toast_description(**attrs, &block)
|
|
1053
|
+
render Shadcn::UI::ToastDescription.new(**attrs, &block)
|
|
1054
|
+
end
|
|
1055
|
+
|
|
1056
|
+
def ui_toast_action(**attrs, &block)
|
|
1057
|
+
render Shadcn::UI::ToastAction.new(**attrs, &block)
|
|
1058
|
+
end
|
|
1059
|
+
|
|
1060
|
+
def ui_toast_close(**attrs, &block)
|
|
1061
|
+
render Shadcn::UI::ToastClose.new(**attrs, &block)
|
|
1062
|
+
end
|
|
1063
|
+
|
|
1064
|
+
# ── Toggle ─────────────────────────────────────────────────
|
|
1065
|
+
|
|
1066
|
+
def ui_toggle(**attrs, &block)
|
|
1067
|
+
render Shadcn::UI::Toggle.new(**attrs, &block)
|
|
1068
|
+
end
|
|
1069
|
+
|
|
1070
|
+
def ui_toggle_group(**attrs, &block)
|
|
1071
|
+
render Shadcn::UI::ToggleGroup.new(**attrs, &block)
|
|
1072
|
+
end
|
|
1073
|
+
|
|
1074
|
+
def ui_toggle_group_item(**attrs, &block)
|
|
1075
|
+
render Shadcn::UI::ToggleGroupItem.new(**attrs, &block)
|
|
1076
|
+
end
|
|
1077
|
+
|
|
1078
|
+
# ── Tooltip ────────────────────────────────────────────────
|
|
1079
|
+
|
|
1080
|
+
def ui_tooltip(**attrs, &block)
|
|
1081
|
+
render Shadcn::UI::Tooltip.new(**attrs, &block)
|
|
1082
|
+
end
|
|
1083
|
+
|
|
1084
|
+
def ui_tooltip_trigger(**attrs, &block)
|
|
1085
|
+
render Shadcn::UI::TooltipTrigger.new(**attrs, &block)
|
|
1086
|
+
end
|
|
1087
|
+
|
|
1088
|
+
def ui_tooltip_content(**attrs, &block)
|
|
1089
|
+
render Shadcn::UI::TooltipContent.new(**attrs, &block)
|
|
1090
|
+
end
|
|
1091
|
+
|
|
1092
|
+
# ── Typography ─────────────────────────────────────────────
|
|
1093
|
+
|
|
1094
|
+
def ui_typography_h1(**attrs, &block)
|
|
1095
|
+
render Shadcn::UI::TypographyH1.new(**attrs, &block)
|
|
1096
|
+
end
|
|
1097
|
+
|
|
1098
|
+
def ui_typography_h2(**attrs, &block)
|
|
1099
|
+
render Shadcn::UI::TypographyH2.new(**attrs, &block)
|
|
1100
|
+
end
|
|
1101
|
+
|
|
1102
|
+
def ui_typography_h3(**attrs, &block)
|
|
1103
|
+
render Shadcn::UI::TypographyH3.new(**attrs, &block)
|
|
1104
|
+
end
|
|
1105
|
+
|
|
1106
|
+
def ui_typography_h4(**attrs, &block)
|
|
1107
|
+
render Shadcn::UI::TypographyH4.new(**attrs, &block)
|
|
1108
|
+
end
|
|
1109
|
+
|
|
1110
|
+
def ui_typography_p(**attrs, &block)
|
|
1111
|
+
render Shadcn::UI::TypographyP.new(**attrs, &block)
|
|
1112
|
+
end
|
|
1113
|
+
|
|
1114
|
+
def ui_typography_blockquote(**attrs, &block)
|
|
1115
|
+
render Shadcn::UI::TypographyBlockquote.new(**attrs, &block)
|
|
1116
|
+
end
|
|
1117
|
+
|
|
1118
|
+
def ui_typography_inline_code(**attrs, &block)
|
|
1119
|
+
render Shadcn::UI::TypographyInlineCode.new(**attrs, &block)
|
|
1120
|
+
end
|
|
1121
|
+
|
|
1122
|
+
def ui_typography_lead(**attrs, &block)
|
|
1123
|
+
render Shadcn::UI::TypographyLead.new(**attrs, &block)
|
|
1124
|
+
end
|
|
1125
|
+
|
|
1126
|
+
def ui_typography_large(**attrs, &block)
|
|
1127
|
+
render Shadcn::UI::TypographyLarge.new(**attrs, &block)
|
|
1128
|
+
end
|
|
1129
|
+
|
|
1130
|
+
def ui_typography_small(**attrs, &block)
|
|
1131
|
+
render Shadcn::UI::TypographySmall.new(**attrs, &block)
|
|
1132
|
+
end
|
|
1133
|
+
|
|
1134
|
+
def ui_typography_muted(**attrs, &block)
|
|
1135
|
+
render Shadcn::UI::TypographyMuted.new(**attrs, &block)
|
|
1136
|
+
end
|
|
1137
|
+
|
|
1138
|
+
def ui_typography_list(**attrs, &block)
|
|
1139
|
+
render Shadcn::UI::TypographyList.new(**attrs, &block)
|
|
1140
|
+
end
|
|
1141
|
+
|
|
1142
|
+
# ── Compound Field Helpers ─────────────────────────────────
|
|
1143
|
+
|
|
1144
|
+
def ui_text_field(**attrs, &block)
|
|
1145
|
+
render Shadcn::UI::TextField.new(**attrs, &block)
|
|
1146
|
+
end
|
|
1147
|
+
|
|
1148
|
+
def ui_textarea_field(**attrs, &block)
|
|
1149
|
+
render Shadcn::UI::TextareaField.new(**attrs, &block)
|
|
1150
|
+
end
|
|
1151
|
+
|
|
1152
|
+
# ── Theme Toggle ───────────────────────────────────────────
|
|
1153
|
+
|
|
1154
|
+
def ui_theme_toggle(**attrs, &block)
|
|
1155
|
+
render Shadcn::UI::ThemeToggle.new(**attrs, &block)
|
|
1156
|
+
end
|
|
1157
|
+
end
|
|
1158
|
+
end
|