shadcn_phlexcomponents 0.1.9 → 0.1.14

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.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/app/javascript/controllers/accordion_controller.ts +136 -0
  3. data/app/javascript/controllers/alert_dialog_controller.ts +12 -0
  4. data/app/javascript/controllers/avatar_controller.ts +24 -0
  5. data/app/javascript/controllers/checkbox_controller.ts +41 -0
  6. data/app/javascript/controllers/collapsible_controller.ts +52 -0
  7. data/app/javascript/controllers/combobox_controller.ts +376 -0
  8. data/app/javascript/controllers/command_controller.ts +301 -0
  9. data/app/javascript/controllers/date_picker_controller.ts +334 -0
  10. data/app/javascript/controllers/date_range_picker_controller.ts +253 -0
  11. data/app/javascript/controllers/dialog_controller.ts +115 -0
  12. data/app/javascript/controllers/dropdown_menu_controller.ts +309 -0
  13. data/app/javascript/controllers/dropdown_menu_sub_controller.ts +152 -0
  14. data/app/javascript/controllers/form_field_controller.ts +27 -0
  15. data/app/javascript/controllers/hover_card_controller.ts +103 -0
  16. data/app/javascript/controllers/{loading_button_controller.js → loading_button_controller.ts} +7 -2
  17. data/app/javascript/controllers/popover_controller.ts +118 -0
  18. data/app/javascript/controllers/progress_controller.ts +23 -0
  19. data/app/javascript/controllers/radio_group_controller.ts +113 -0
  20. data/app/javascript/controllers/select_controller.ts +341 -0
  21. data/app/javascript/controllers/{sidebar_controller.js → sidebar_controller.ts} +6 -2
  22. data/app/javascript/controllers/sidebar_trigger_controller.ts +21 -0
  23. data/app/javascript/controllers/slider_controller.ts +114 -0
  24. data/app/javascript/controllers/switch_controller.ts +37 -0
  25. data/app/javascript/controllers/tabs_controller.ts +87 -0
  26. data/app/javascript/controllers/theme_switcher_controller.ts +40 -0
  27. data/app/javascript/controllers/toast_container_controller.ts +67 -0
  28. data/app/javascript/controllers/toast_controller.ts +34 -0
  29. data/app/javascript/controllers/toggle_controller.ts +28 -0
  30. data/app/javascript/controllers/toggle_group_controller.ts +28 -0
  31. data/app/javascript/controllers/tooltip_controller.ts +110 -0
  32. data/app/javascript/shadcn_phlexcomponents.ts +61 -0
  33. data/app/javascript/utils/command.ts +544 -0
  34. data/app/javascript/utils/floating_ui.ts +196 -0
  35. data/app/javascript/utils/index.ts +417 -0
  36. data/app/stylesheets/date_picker.css +81 -101
  37. data/app/stylesheets/nouislider.css +173 -0
  38. data/app/stylesheets/tw-animate.css +486 -0
  39. data/lib/install/install_shadcn_phlexcomponents.rb +16 -3
  40. data/lib/shadcn_phlexcomponents/alias.rb +6 -1
  41. data/lib/shadcn_phlexcomponents/components/accordion.rb +130 -0
  42. data/lib/shadcn_phlexcomponents/components/alert.rb +59 -0
  43. data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +279 -0
  44. data/lib/shadcn_phlexcomponents/components/{aspect_ratio/aspect_ratio.rb → aspect_ratio.rb} +2 -2
  45. data/lib/shadcn_phlexcomponents/components/avatar.rb +63 -0
  46. data/lib/shadcn_phlexcomponents/components/badge.rb +35 -0
  47. data/lib/shadcn_phlexcomponents/components/base.rb +48 -7
  48. data/lib/shadcn_phlexcomponents/components/breadcrumb.rb +150 -0
  49. data/lib/shadcn_phlexcomponents/components/button.rb +49 -0
  50. data/lib/shadcn_phlexcomponents/components/card.rb +88 -0
  51. data/lib/shadcn_phlexcomponents/components/{checkbox/checkbox.rb → checkbox.rb} +18 -14
  52. data/lib/shadcn_phlexcomponents/components/{checkbox_group/checkbox_group.rb → checkbox_group.rb} +7 -8
  53. data/lib/shadcn_phlexcomponents/components/collapsible.rb +90 -0
  54. data/lib/shadcn_phlexcomponents/components/combobox.rb +428 -0
  55. data/lib/shadcn_phlexcomponents/components/command.rb +381 -0
  56. data/lib/shadcn_phlexcomponents/components/date_picker.rb +208 -0
  57. data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +143 -0
  58. data/lib/shadcn_phlexcomponents/components/dialog.rb +236 -0
  59. data/lib/shadcn_phlexcomponents/components/dropdown_menu.rb +283 -0
  60. data/lib/shadcn_phlexcomponents/components/dropdown_menu_sub.rb +136 -0
  61. data/lib/shadcn_phlexcomponents/components/form/form_checkbox.rb +6 -7
  62. data/lib/shadcn_phlexcomponents/components/form/form_checkbox_group.rb +2 -2
  63. data/lib/shadcn_phlexcomponents/components/form/form_combobox.rb +64 -0
  64. data/lib/shadcn_phlexcomponents/components/form/form_date_picker.rb +3 -4
  65. data/lib/shadcn_phlexcomponents/components/form/form_date_range_picker.rb +27 -41
  66. data/lib/shadcn_phlexcomponents/components/form/form_error.rb +1 -1
  67. data/lib/shadcn_phlexcomponents/components/form/form_helpers.rb +43 -8
  68. data/lib/shadcn_phlexcomponents/components/form/form_hint.rb +1 -1
  69. data/lib/shadcn_phlexcomponents/components/form/form_input.rb +3 -4
  70. data/lib/shadcn_phlexcomponents/components/form/form_radio_group.rb +4 -5
  71. data/lib/shadcn_phlexcomponents/components/form/form_select.rb +3 -4
  72. data/lib/shadcn_phlexcomponents/components/form/form_slider.rb +91 -0
  73. data/lib/shadcn_phlexcomponents/components/form/form_switch.rb +7 -6
  74. data/lib/shadcn_phlexcomponents/components/form/form_textarea.rb +3 -4
  75. data/lib/shadcn_phlexcomponents/components/{form/form.rb → form.rb} +36 -4
  76. data/lib/shadcn_phlexcomponents/components/hover_card.rb +111 -0
  77. data/lib/shadcn_phlexcomponents/components/input.rb +31 -0
  78. data/lib/shadcn_phlexcomponents/components/label.rb +16 -0
  79. data/lib/shadcn_phlexcomponents/components/{link/link.rb → link.rb} +10 -3
  80. data/lib/shadcn_phlexcomponents/components/{loading_button/loading_button.rb → loading_button.rb} +9 -2
  81. data/lib/shadcn_phlexcomponents/components/pagination.rb +166 -0
  82. data/lib/shadcn_phlexcomponents/components/popover.rb +116 -0
  83. data/lib/shadcn_phlexcomponents/components/{progress/progress.rb → progress.rb} +4 -4
  84. data/lib/shadcn_phlexcomponents/components/radio_group.rb +155 -0
  85. data/lib/shadcn_phlexcomponents/components/select.rb +406 -0
  86. data/lib/shadcn_phlexcomponents/components/{separator/separator.rb → separator.rb} +9 -8
  87. data/lib/shadcn_phlexcomponents/components/sheet.rb +243 -0
  88. data/lib/shadcn_phlexcomponents/components/{skeleton/skeleton.rb → skeleton.rb} +1 -1
  89. data/lib/shadcn_phlexcomponents/components/slider.rb +72 -0
  90. data/lib/shadcn_phlexcomponents/components/switch.rb +75 -0
  91. data/lib/shadcn_phlexcomponents/components/table.rb +140 -0
  92. data/lib/shadcn_phlexcomponents/components/tabs.rb +135 -0
  93. data/lib/shadcn_phlexcomponents/components/textarea.rb +24 -0
  94. data/lib/shadcn_phlexcomponents/components/toast.rb +153 -0
  95. data/lib/shadcn_phlexcomponents/components/{toast/toast_container.rb → toast_container.rb} +23 -4
  96. data/lib/shadcn_phlexcomponents/components/toggle.rb +54 -0
  97. data/lib/shadcn_phlexcomponents/components/tooltip.rb +132 -0
  98. data/lib/shadcn_phlexcomponents/engine.rb +1 -5
  99. data/lib/shadcn_phlexcomponents/initializers/shadcn_phlexcomponents.rb +25 -0
  100. data/lib/shadcn_phlexcomponents/version.rb +1 -1
  101. data/lib/tasks/install.rake +1 -1
  102. metadata +83 -167
  103. data/app/javascript/controllers/accordion_controller.js +0 -124
  104. data/app/javascript/controllers/alert_dialog_controller.js +0 -21
  105. data/app/javascript/controllers/avatar_controller.js +0 -15
  106. data/app/javascript/controllers/checkbox_controller.js +0 -28
  107. data/app/javascript/controllers/collapsible_controller.js +0 -35
  108. data/app/javascript/controllers/combobox_controller.js +0 -54
  109. data/app/javascript/controllers/date_picker_controller.js +0 -253
  110. data/app/javascript/controllers/date_range_picker_controller.js +0 -344
  111. data/app/javascript/controllers/dialog_controller.js +0 -114
  112. data/app/javascript/controllers/dropdown_menu_controller.js +0 -171
  113. data/app/javascript/controllers/form_field_controller.js +0 -24
  114. data/app/javascript/controllers/hover_card_controller.js +0 -21
  115. data/app/javascript/controllers/popover_controller.js +0 -113
  116. data/app/javascript/controllers/progress_controller.js +0 -14
  117. data/app/javascript/controllers/radio_group_controller.js +0 -90
  118. data/app/javascript/controllers/select_controller.js +0 -274
  119. data/app/javascript/controllers/sidebar_trigger_controller.js +0 -15
  120. data/app/javascript/controllers/switch_controller.js +0 -24
  121. data/app/javascript/controllers/tabs_controller.js +0 -73
  122. data/app/javascript/controllers/theme_switcher_controller.js +0 -32
  123. data/app/javascript/controllers/toast_container_controller.js +0 -22
  124. data/app/javascript/controllers/toast_controller.js +0 -45
  125. data/app/javascript/controllers/tooltip_controller.js +0 -40
  126. data/app/javascript/shadcn_phlexcomponents.js +0 -53
  127. data/app/javascript/utils.js +0 -184
  128. data/app/stylesheets/choices.css +0 -324
  129. data/app/stylesheets/tailwindcss-animate.css +0 -318
  130. data/lib/shadcn_phlexcomponents/components/accordion/accordion.rb +0 -38
  131. data/lib/shadcn_phlexcomponents/components/accordion/accordion_content.rb +0 -30
  132. data/lib/shadcn_phlexcomponents/components/accordion/accordion_item.rb +0 -26
  133. data/lib/shadcn_phlexcomponents/components/accordion/accordion_trigger.rb +0 -46
  134. data/lib/shadcn_phlexcomponents/components/alert/alert.rb +0 -40
  135. data/lib/shadcn_phlexcomponents/components/alert/alert_description.rb +0 -11
  136. data/lib/shadcn_phlexcomponents/components/alert/alert_title.rb +0 -11
  137. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog.rb +0 -60
  138. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_action.rb +0 -22
  139. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_action_to.rb +0 -40
  140. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_cancel.rb +0 -22
  141. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_content.rb +0 -40
  142. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_description.rb +0 -22
  143. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_footer.rb +0 -11
  144. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_header.rb +0 -11
  145. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_title.rb +0 -22
  146. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_trigger.rb +0 -50
  147. data/lib/shadcn_phlexcomponents/components/avatar/avatar.rb +0 -31
  148. data/lib/shadcn_phlexcomponents/components/avatar/avatar_fallback.rb +0 -21
  149. data/lib/shadcn_phlexcomponents/components/avatar/avatar_image.rb +0 -19
  150. data/lib/shadcn_phlexcomponents/components/badge/badge.rb +0 -30
  151. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb.rb +0 -53
  152. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_ellipsis.rb +0 -23
  153. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_item.rb +0 -11
  154. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_link.rb +0 -7
  155. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_page.rb +0 -21
  156. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_separator.rb +0 -26
  157. data/lib/shadcn_phlexcomponents/components/button/button.rb +0 -53
  158. data/lib/shadcn_phlexcomponents/components/card/card.rb +0 -31
  159. data/lib/shadcn_phlexcomponents/components/card/card_content.rb +0 -11
  160. data/lib/shadcn_phlexcomponents/components/card/card_description.rb +0 -11
  161. data/lib/shadcn_phlexcomponents/components/card/card_footer.rb +0 -11
  162. data/lib/shadcn_phlexcomponents/components/card/card_header.rb +0 -11
  163. data/lib/shadcn_phlexcomponents/components/card/card_title.rb +0 -11
  164. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible.rb +0 -31
  165. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible_content.rb +0 -24
  166. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible_trigger.rb +0 -50
  167. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker.rb +0 -87
  168. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_content.rb +0 -45
  169. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_trigger.rb +0 -64
  170. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker.rb +0 -105
  171. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_content.rb +0 -9
  172. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_trigger.rb +0 -9
  173. data/lib/shadcn_phlexcomponents/components/dialog/dialog.rb +0 -52
  174. data/lib/shadcn_phlexcomponents/components/dialog/dialog_close.rb +0 -42
  175. data/lib/shadcn_phlexcomponents/components/dialog/dialog_content.rb +0 -54
  176. data/lib/shadcn_phlexcomponents/components/dialog/dialog_description.rb +0 -22
  177. data/lib/shadcn_phlexcomponents/components/dialog/dialog_footer.rb +0 -11
  178. data/lib/shadcn_phlexcomponents/components/dialog/dialog_header.rb +0 -11
  179. data/lib/shadcn_phlexcomponents/components/dialog/dialog_title.rb +0 -22
  180. data/lib/shadcn_phlexcomponents/components/dialog/dialog_trigger.rb +0 -50
  181. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu.rb +0 -50
  182. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_content.rb +0 -52
  183. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_item.rb +0 -56
  184. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_item_to.rb +0 -28
  185. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_label.rb +0 -11
  186. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_separator.rb +0 -20
  187. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_trigger.rb +0 -57
  188. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card.rb +0 -33
  189. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card_content.rb +0 -32
  190. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card_trigger.rb +0 -44
  191. data/lib/shadcn_phlexcomponents/components/input/input.rb +0 -32
  192. data/lib/shadcn_phlexcomponents/components/label/label.rb +0 -14
  193. data/lib/shadcn_phlexcomponents/components/pagination/pagination.rb +0 -38
  194. data/lib/shadcn_phlexcomponents/components/pagination/pagination_ellipsis.rb +0 -24
  195. data/lib/shadcn_phlexcomponents/components/pagination/pagination_link.rb +0 -34
  196. data/lib/shadcn_phlexcomponents/components/pagination/pagination_next.rb +0 -32
  197. data/lib/shadcn_phlexcomponents/components/pagination/pagination_previous.rb +0 -32
  198. data/lib/shadcn_phlexcomponents/components/popover/popover.rb +0 -34
  199. data/lib/shadcn_phlexcomponents/components/popover/popover_content.rb +0 -40
  200. data/lib/shadcn_phlexcomponents/components/popover/popover_trigger.rb +0 -50
  201. data/lib/shadcn_phlexcomponents/components/radio_group/radio_group.rb +0 -88
  202. data/lib/shadcn_phlexcomponents/components/radio_group/radio_group_item.rb +0 -66
  203. data/lib/shadcn_phlexcomponents/components/select/select.rb +0 -194
  204. data/lib/shadcn_phlexcomponents/components/select/select_content.rb +0 -64
  205. data/lib/shadcn_phlexcomponents/components/select/select_group.rb +0 -23
  206. data/lib/shadcn_phlexcomponents/components/select/select_item.rb +0 -59
  207. data/lib/shadcn_phlexcomponents/components/select/select_label.rb +0 -24
  208. data/lib/shadcn_phlexcomponents/components/select/select_trigger.rb +0 -56
  209. data/lib/shadcn_phlexcomponents/components/sheet/sheet.rb +0 -53
  210. data/lib/shadcn_phlexcomponents/components/sheet/sheet_close.rb +0 -42
  211. data/lib/shadcn_phlexcomponents/components/sheet/sheet_content.rb +0 -65
  212. data/lib/shadcn_phlexcomponents/components/sheet/sheet_description.rb +0 -22
  213. data/lib/shadcn_phlexcomponents/components/sheet/sheet_footer.rb +0 -11
  214. data/lib/shadcn_phlexcomponents/components/sheet/sheet_header.rb +0 -11
  215. data/lib/shadcn_phlexcomponents/components/sheet/sheet_title.rb +0 -22
  216. data/lib/shadcn_phlexcomponents/components/sheet/sheet_trigger.rb +0 -50
  217. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar.rb +0 -108
  218. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_container.rb +0 -11
  219. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_content.rb +0 -11
  220. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_footer.rb +0 -11
  221. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group.rb +0 -11
  222. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group_content.rb +0 -11
  223. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group_label.rb +0 -16
  224. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_header.rb +0 -11
  225. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_inset.rb +0 -15
  226. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu.rb +0 -11
  227. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_button.rb +0 -61
  228. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_item.rb +0 -9
  229. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub.rb +0 -14
  230. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub_button.rb +0 -48
  231. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub_item.rb +0 -9
  232. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_trigger.rb +0 -40
  233. data/lib/shadcn_phlexcomponents/components/switch/switch.rb +0 -66
  234. data/lib/shadcn_phlexcomponents/components/table/table.rb +0 -75
  235. data/lib/shadcn_phlexcomponents/components/table/table_body.rb +0 -11
  236. data/lib/shadcn_phlexcomponents/components/table/table_caption.rb +0 -11
  237. data/lib/shadcn_phlexcomponents/components/table/table_cell.rb +0 -11
  238. data/lib/shadcn_phlexcomponents/components/table/table_footer.rb +0 -11
  239. data/lib/shadcn_phlexcomponents/components/table/table_head.rb +0 -14
  240. data/lib/shadcn_phlexcomponents/components/table/table_header.rb +0 -11
  241. data/lib/shadcn_phlexcomponents/components/table/table_row.rb +0 -11
  242. data/lib/shadcn_phlexcomponents/components/tabs/tabs.rb +0 -38
  243. data/lib/shadcn_phlexcomponents/components/tabs/tabs_content.rb +0 -35
  244. data/lib/shadcn_phlexcomponents/components/tabs/tabs_list.rb +0 -23
  245. data/lib/shadcn_phlexcomponents/components/tabs/tabs_trigger.rb +0 -45
  246. data/lib/shadcn_phlexcomponents/components/textarea/textarea.rb +0 -29
  247. data/lib/shadcn_phlexcomponents/components/toast/toast.rb +0 -101
  248. data/lib/shadcn_phlexcomponents/components/toast/toast_action.rb +0 -39
  249. data/lib/shadcn_phlexcomponents/components/toast/toast_action_to.rb +0 -28
  250. data/lib/shadcn_phlexcomponents/components/toast/toast_content.rb +0 -11
  251. data/lib/shadcn_phlexcomponents/components/toast/toast_description.rb +0 -11
  252. data/lib/shadcn_phlexcomponents/components/toast/toast_title.rb +0 -11
  253. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip.rb +0 -34
  254. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip_content.rb +0 -39
  255. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip_trigger.rb +0 -48
  256. /data/lib/shadcn_phlexcomponents/components/{theme_switcher/theme_switcher.rb → theme_switcher.rb} +0 -0
@@ -1,26 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AccordionItem < Base
5
- STYLES = "border-b"
6
-
7
- def initialize(value:, **attributes)
8
- @value = value
9
- super(**attributes)
10
- end
11
-
12
- def default_attributes
13
- {
14
- data: {
15
- state: "closed",
16
- value: @value,
17
- "accordion-target": "item",
18
- },
19
- }
20
- end
21
-
22
- def view_template(&)
23
- div(**@attributes, &)
24
- end
25
- end
26
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AccordionTrigger < Base
5
- STYLES = <<~HEREDOC
6
- flex flex-1 items-center justify-between py-4 text-sm font-medium cursor-pointer
7
- transition-all hover:underline text-left [&[data-state=open]>svg]:rotate-180
8
- disabled:opacity-50 disabled:hover:no-underline
9
- HEREDOC
10
-
11
- def initialize(aria_id: nil, **attributes)
12
- @aria_id = aria_id
13
- super(**attributes)
14
- end
15
-
16
- def default_attributes
17
- {
18
- type: "button",
19
- id: "#{@aria_id}-trigger",
20
- aria: {
21
- controls: "#{@aria_id}-content",
22
- expanded: "false",
23
- },
24
- data: {
25
- state: "closed",
26
- "accordion-target": "trigger",
27
- action: <<~HEREDOC,
28
- click->accordion#toggleItem
29
- keydown.up->accordion#focusPrev:prevent
30
- keydown.down->accordion#focusNext:prevent
31
- HEREDOC
32
- },
33
- }
34
- end
35
-
36
- def view_template(&)
37
- h3(class: "flex") do
38
- button(**@attributes) do
39
- yield
40
-
41
- icon("chevron-down", class: "size-4 shrink-0 text-muted-foreground transition-transform duration-200")
42
- end
43
- end
44
- end
45
- end
46
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Alert < Base
5
- STYLES = <<~HEREDOC
6
- relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px]
7
- [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7
8
- HEREDOC
9
-
10
- VARIANTS = {
11
- default: "bg-background text-foreground",
12
- destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive",
13
- }.freeze
14
-
15
- def initialize(variant: :default, **attributes)
16
- @variant = variant
17
- super(**attributes)
18
- end
19
-
20
- def title(**attributes, &)
21
- AlertTitle(**attributes, &)
22
- end
23
-
24
- def description(**attributes, &)
25
- AlertDescription(**attributes, &)
26
- end
27
-
28
- def default_attributes
29
- { role: "alert" }
30
- end
31
-
32
- def default_styles
33
- "#{STYLES} #{VARIANTS[@variant]}"
34
- end
35
-
36
- def view_template(&)
37
- div(**@attributes, &)
38
- end
39
- end
40
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDescription < Base
5
- STYLES = "text-sm [&_p]:leading-relaxed"
6
-
7
- def view_template(&)
8
- div(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertTitle < Base
5
- STYLES = "mb-1 font-medium leading-none tracking-tight"
6
-
7
- def view_template(&)
8
- div(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,60 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialog < Base
5
- STYLES = "inline-block"
6
-
7
- def initialize(aria_id: "alert-dialog-#{SecureRandom.hex(5)}", **attributes)
8
- @aria_id = aria_id
9
- super(**attributes)
10
- end
11
-
12
- def trigger(**attributes, &)
13
- AlertDialogTrigger(aria_id: @aria_id, **attributes, &)
14
- end
15
-
16
- def content(**attributes, &)
17
- AlertDialogContent(aria_id: @aria_id, **attributes, &)
18
- end
19
-
20
- def header(**attributes, &)
21
- AlertDialogHeader(**attributes, &)
22
- end
23
-
24
- def title(**attributes, &)
25
- AlertDialogTitle(aria_id: @aria_id, **attributes, &)
26
- end
27
-
28
- def description(**attributes, &)
29
- AlertDialogDescription(aria_id: @aria_id, **attributes, &)
30
- end
31
-
32
- def footer(**attributes, &)
33
- AlertDialogFooter(**attributes, &)
34
- end
35
-
36
- def cancel(**attributes, &)
37
- AlertDialogCancel(**attributes, &)
38
- end
39
-
40
- def action(**attributes, &)
41
- AlertDialogAction(**attributes, &)
42
- end
43
-
44
- def action_to(name = nil, options = nil, html_options = nil, &block)
45
- AlertDialogActionTo(name, options, html_options, &block)
46
- end
47
-
48
- def default_attributes
49
- {
50
- data: {
51
- controller: "alert-dialog",
52
- },
53
- }
54
- end
55
-
56
- def view_template(&)
57
- div(**@attributes, &)
58
- end
59
- end
60
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogAction < Base
5
- def initialize(variant: :primary, **attributes)
6
- @variant = variant
7
- super(**attributes)
8
- end
9
-
10
- def default_attributes
11
- {
12
- data: {
13
- action: "click->alert-dialog#close",
14
- },
15
- }
16
- end
17
-
18
- def view_template(&)
19
- Button(variant: @variant, **@attributes, &)
20
- end
21
- end
22
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogActionTo < Base
5
- def initialize(name = nil, options = nil, html_options = nil)
6
- @name = name
7
- @options = options
8
- @html_options = html_options
9
- end
10
-
11
- def default_attributes
12
- {
13
- data: {
14
- action: "click->alert-dialog#close",
15
- },
16
- }
17
- end
18
-
19
- def default_styles
20
- Button.default_styles(variant: @variant, size: :default)
21
- end
22
-
23
- def view_template(&)
24
- if block_given?
25
- @html_options = @options
26
- @options = @name
27
- end
28
- @html_options ||= {}
29
- @variant = @html_options.delete(:variant) || :primary
30
- @html_options = mix(default_attributes, @html_options)
31
- @html_options[:class] = TAILWIND_MERGER.merge("#{default_styles} #{@html_options[:class]}")
32
-
33
- if block_given?
34
- button_to(@options, @html_options, &)
35
- else
36
- button_to(@name, @options, @html_options)
37
- end
38
- end
39
- end
40
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogCancel < Base
5
- def initialize(variant: :outline, **attributes)
6
- @variant = variant
7
- super(**attributes)
8
- end
9
-
10
- def default_attributes
11
- {
12
- data: {
13
- action: "click->alert-dialog#close",
14
- },
15
- }
16
- end
17
-
18
- def view_template(&)
19
- Button(variant: @variant, **@attributes, &)
20
- end
21
- end
22
- end
@@ -1,40 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogContent < Base
5
- STYLES = <<~HEREDOC
6
- fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] pointer-events-auto
7
- translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200
8
- data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0
9
- data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95
10
- data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]
11
- data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg
12
- HEREDOC
13
-
14
- def initialize(aria_id: nil, **attributes)
15
- @aria_id = aria_id
16
- super(**attributes)
17
- end
18
-
19
- def default_attributes
20
- {
21
- id: "#{@aria_id}-content",
22
- tabindex: -1,
23
- role: "alertdialog",
24
- aria: {
25
- describedby: "#{@aria_id}-description",
26
- labelledby: "#{@aria_id}-title",
27
- },
28
- data: {
29
- state: "closed",
30
- "alert-dialog-target": "content",
31
- },
32
- }
33
- end
34
-
35
- def view_template(&)
36
- @class = @attributes.delete(:class)
37
- div(class: "#{@class} hidden", **@attributes, &)
38
- end
39
- end
40
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogDescription < Base
5
- STYLES = "text-sm text-muted-foreground"
6
-
7
- def initialize(aria_id:, **attributes)
8
- @aria_id = aria_id
9
- super(**attributes)
10
- end
11
-
12
- def default_attributes
13
- {
14
- id: "#{@aria_id}-description",
15
- }
16
- end
17
-
18
- def view_template(&)
19
- p(**@attributes, &)
20
- end
21
- end
22
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogFooter < Base
5
- STYLES = "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2"
6
-
7
- def view_template(&)
8
- div(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogHeader < Base
5
- STYLES = "flex flex-col space-y-2 text-center sm:text-left"
6
-
7
- def view_template(&)
8
- div(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogTitle < Base
5
- STYLES = "text-lg font-semibold"
6
-
7
- def initialize(aria_id:, **attributes)
8
- @aria_id = aria_id
9
- super(**attributes)
10
- end
11
-
12
- def default_attributes
13
- {
14
- id: "#{@aria_id}-title",
15
- }
16
- end
17
-
18
- def view_template(&)
19
- h2(**@attributes, &)
20
- end
21
- end
22
- end
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AlertDialogTrigger < Base
5
- def initialize(as_child: false, aria_id: nil, **attributes)
6
- @as_child = as_child
7
- @aria_id = aria_id
8
- super(**attributes)
9
- end
10
-
11
- def default_attributes
12
- {
13
- role: "button",
14
- aria: {
15
- haspopup: "dialog",
16
- expanded: "false",
17
- controls: "#{@aria_id}-content",
18
- },
19
- data: {
20
- action: "click->alert-dialog#open",
21
- "alert-dialog-target": "trigger",
22
- as_child: @as_child.to_s,
23
- },
24
- }
25
- end
26
-
27
- def view_template(&)
28
- if @as_child
29
- content = capture(&)
30
- element = find_as_child(content.to_s)
31
-
32
- vanish(&)
33
- element_attributes = nokogiri_attributes_to_hash(element)
34
- styles = TAILWIND_MERGER.merge("#{@attributes[:class]} #{element_attributes[:class]}")
35
- merged_attributes = mix(@attributes, element_attributes)
36
- merged_attributes[:class] = styles
37
-
38
- if element.name == "button"
39
- merged_attributes.delete(:role)
40
- end
41
-
42
- send(element.name, **merged_attributes) do
43
- sanitize_as_child(element.children.to_s)
44
- end
45
- else
46
- div(**@attributes, &)
47
- end
48
- end
49
- end
50
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Avatar < Base
5
- STYLES = "relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full"
6
-
7
- def initialize(**attributes)
8
- super(**attributes)
9
- end
10
-
11
- def image(**attributes, &)
12
- AvatarImage(**attributes, &)
13
- end
14
-
15
- def fallback(**attributes, &)
16
- AvatarFallback(**attributes, &)
17
- end
18
-
19
- def default_attributes
20
- {
21
- data: {
22
- controller: "avatar",
23
- },
24
- }
25
- end
26
-
27
- def view_template(&)
28
- span(**@attributes, &)
29
- end
30
- end
31
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AvatarFallback < Base
5
- STYLES = "flex h-full w-full items-center justify-center rounded-full bg-muted"
6
-
7
- def default_attributes
8
- {
9
- data: {
10
- "avatar-target": "fallback",
11
- },
12
- }
13
- end
14
-
15
- def view_template(&)
16
- @class = @attributes.delete(:class)
17
-
18
- span(class: "#{@class} hidden", **@attributes, &)
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class AvatarImage < Base
5
- STYLES = "aspect-square h-full w-full"
6
-
7
- def default_attributes
8
- {
9
- data: {
10
- "avatar-target": "image",
11
- },
12
- }
13
- end
14
-
15
- def view_template(&)
16
- img(**@attributes, &)
17
- end
18
- end
19
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Badge < Base
5
- STYLES = <<~HEREDOC
6
- inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold
7
- transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2
8
- HEREDOC
9
-
10
- VARIANTS = {
11
- primary: "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",
12
- secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
13
- destructive: "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",
14
- outline: "text-foreground",
15
- }.freeze
16
-
17
- def initialize(variant: :primary, **attributes)
18
- @variant = variant
19
- super(**attributes)
20
- end
21
-
22
- def default_styles
23
- "#{STYLES} #{VARIANTS[@variant]}"
24
- end
25
-
26
- def view_template(&)
27
- span(**@attributes, &)
28
- end
29
- end
30
- end
@@ -1,53 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Breadcrumb < Base
5
- STYLES = "flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5"
6
-
7
- def item(**attributes, &)
8
- BreadcrumbItem(**attributes, &)
9
- end
10
-
11
- def link(name = nil, options = nil, html_options = nil, &block)
12
- BreadcrumbLink(name, options, html_options, &block)
13
- end
14
-
15
- def separator(**attributes, &)
16
- BreadcrumbSeparator(**attributes, &)
17
- end
18
-
19
- def page(**attributes, &)
20
- BreadcrumbPage(**attributes, &)
21
- end
22
-
23
- def ellipsis(**attributes)
24
- BreadcrumbEllipsis(**attributes)
25
- end
26
-
27
- def links(collection)
28
- collection.each_with_index do |link, index|
29
- if index == collection.size - 1
30
- item do
31
- page { link[:name] }
32
- end
33
- else
34
- item do
35
- link(link[:name], link[:path])
36
- end
37
- end
38
-
39
- if index < collection.size - 1
40
- separator
41
- end
42
- end
43
-
44
- nil
45
- end
46
-
47
- def view_template(&)
48
- nav(aria: { label: "breadcrumb" }) do
49
- ol(**@attributes, &)
50
- end
51
- end
52
- end
53
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class BreadcrumbEllipsis < Base
5
- STYLES = "flex h-9 w-9 items-center justify-center"
6
-
7
- def default_attributes
8
- {
9
- role: "presentation",
10
- aria: {
11
- hidden: "true",
12
- },
13
- }
14
- end
15
-
16
- def view_template
17
- span(**@attributes) do
18
- icon("ellipsis", class: "size-4")
19
- span(class: "sr-only") { "More" }
20
- end
21
- end
22
- end
23
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class BreadcrumbItem < Base
5
- STYLES = "inline-flex items-center gap-1.5"
6
-
7
- def view_template(&)
8
- li(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class BreadcrumbLink < Link
5
- STYLES = "transition-colors hover:text-foreground"
6
- end
7
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class BreadcrumbPage < Base
5
- STYLES = "font-normal text-foreground"
6
-
7
- def default_attributes
8
- {
9
- role: "link",
10
- aria: {
11
- disabled: "true",
12
- current: "page",
13
- },
14
- }
15
- end
16
-
17
- def view_template(&)
18
- span(**@attributes, &)
19
- end
20
- end
21
- end