shadcn_phlexcomponents 0.1.9 → 0.1.11

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 (246) hide show
  1. checksums.yaml +4 -4
  2. data/app/javascript/controllers/accordion_controller.ts +133 -0
  3. data/app/javascript/controllers/{avatar_controller.js → avatar_controller.ts} +4 -0
  4. data/app/javascript/controllers/checkbox_controller.ts +34 -0
  5. data/app/javascript/controllers/collapsible_controller.ts +45 -0
  6. data/app/javascript/controllers/combobox_controller.ts +145 -0
  7. data/app/javascript/controllers/command_controller.ts +129 -0
  8. data/app/javascript/controllers/command_root_controller.ts +355 -0
  9. data/app/javascript/controllers/date_picker_controller.ts +274 -0
  10. data/app/javascript/controllers/date_range_picker_controller.ts +243 -0
  11. data/app/javascript/controllers/dialog_controller.ts +113 -0
  12. data/app/javascript/controllers/dropdown_menu_controller.ts +133 -0
  13. data/app/javascript/controllers/dropdown_menu_root_controller.ts +234 -0
  14. data/app/javascript/controllers/dropdown_menu_sub_controller.ts +150 -0
  15. data/app/javascript/controllers/{form_field_controller.js → form_field_controller.ts} +4 -6
  16. data/app/javascript/controllers/hover_card_controller.ts +93 -0
  17. data/app/javascript/controllers/{loading_button_controller.js → loading_button_controller.ts} +2 -2
  18. data/app/javascript/controllers/popover_controller.ts +141 -0
  19. data/app/javascript/controllers/progress_controller.ts +17 -0
  20. data/app/javascript/controllers/radio_group_controller.ts +106 -0
  21. data/app/javascript/controllers/select_controller.ts +200 -0
  22. data/app/javascript/controllers/{sidebar_controller.js → sidebar_controller.ts} +6 -2
  23. data/app/javascript/controllers/sidebar_trigger_controller.ts +21 -0
  24. data/app/javascript/controllers/slider_controller.ts +107 -0
  25. data/app/javascript/controllers/switch_controller.ts +30 -0
  26. data/app/javascript/controllers/tabs_controller.ts +79 -0
  27. data/app/javascript/controllers/{theme_switcher_controller.js → theme_switcher_controller.ts} +12 -9
  28. data/app/javascript/controllers/toast_container_controller.ts +62 -0
  29. data/app/javascript/controllers/toast_controller.ts +28 -0
  30. data/app/javascript/controllers/tooltip_controller.ts +98 -0
  31. data/app/javascript/{shadcn_phlexcomponents.js → shadcn_phlexcomponents.ts} +6 -2
  32. data/app/javascript/utils.ts +437 -0
  33. data/app/stylesheets/date_picker.css +16 -154
  34. data/app/stylesheets/nouislider.css +173 -0
  35. data/app/stylesheets/tw-animate.css +486 -0
  36. data/lib/install/install_shadcn_phlexcomponents.rb +16 -3
  37. data/lib/shadcn_phlexcomponents/alias.rb +3 -1
  38. data/lib/shadcn_phlexcomponents/components/accordion.rb +129 -0
  39. data/lib/shadcn_phlexcomponents/components/alert.rb +59 -0
  40. data/lib/shadcn_phlexcomponents/components/alert_dialog.rb +276 -0
  41. data/lib/shadcn_phlexcomponents/components/{aspect_ratio/aspect_ratio.rb → aspect_ratio.rb} +2 -2
  42. data/lib/shadcn_phlexcomponents/components/avatar.rb +63 -0
  43. data/lib/shadcn_phlexcomponents/components/badge.rb +35 -0
  44. data/lib/shadcn_phlexcomponents/components/base.rb +34 -7
  45. data/lib/shadcn_phlexcomponents/components/breadcrumb.rb +150 -0
  46. data/lib/shadcn_phlexcomponents/components/button.rb +49 -0
  47. data/lib/shadcn_phlexcomponents/components/card.rb +88 -0
  48. data/lib/shadcn_phlexcomponents/components/{checkbox/checkbox.rb → checkbox.rb} +18 -14
  49. data/lib/shadcn_phlexcomponents/components/{checkbox_group/checkbox_group.rb → checkbox_group.rb} +7 -8
  50. data/lib/shadcn_phlexcomponents/components/collapsible.rb +91 -0
  51. data/lib/shadcn_phlexcomponents/components/combobox.rb +398 -0
  52. data/lib/shadcn_phlexcomponents/components/command.rb +351 -0
  53. data/lib/shadcn_phlexcomponents/components/date_picker.rb +264 -0
  54. data/lib/shadcn_phlexcomponents/components/date_range_picker.rb +126 -0
  55. data/lib/shadcn_phlexcomponents/components/dialog.rb +234 -0
  56. data/lib/shadcn_phlexcomponents/components/dropdown_menu.rb +282 -0
  57. data/lib/shadcn_phlexcomponents/components/dropdown_menu_sub.rb +135 -0
  58. data/lib/shadcn_phlexcomponents/components/form/form_checkbox.rb +6 -7
  59. data/lib/shadcn_phlexcomponents/components/form/form_checkbox_group.rb +2 -2
  60. data/lib/shadcn_phlexcomponents/components/form/form_date_picker.rb +3 -4
  61. data/lib/shadcn_phlexcomponents/components/form/form_date_range_picker.rb +27 -41
  62. data/lib/shadcn_phlexcomponents/components/form/form_error.rb +1 -1
  63. data/lib/shadcn_phlexcomponents/components/form/form_helpers.rb +43 -8
  64. data/lib/shadcn_phlexcomponents/components/form/form_hint.rb +1 -1
  65. data/lib/shadcn_phlexcomponents/components/form/form_input.rb +3 -4
  66. data/lib/shadcn_phlexcomponents/components/form/form_radio_group.rb +4 -5
  67. data/lib/shadcn_phlexcomponents/components/form/form_select.rb +3 -4
  68. data/lib/shadcn_phlexcomponents/components/form/form_slider.rb +91 -0
  69. data/lib/shadcn_phlexcomponents/components/form/form_switch.rb +7 -6
  70. data/lib/shadcn_phlexcomponents/components/form/form_textarea.rb +3 -4
  71. data/lib/shadcn_phlexcomponents/components/{form/form.rb → form.rb} +22 -4
  72. data/lib/shadcn_phlexcomponents/components/hover_card.rb +110 -0
  73. data/lib/shadcn_phlexcomponents/components/input.rb +31 -0
  74. data/lib/shadcn_phlexcomponents/components/label.rb +16 -0
  75. data/lib/shadcn_phlexcomponents/components/{link/link.rb → link.rb} +10 -3
  76. data/lib/shadcn_phlexcomponents/components/{loading_button/loading_button.rb → loading_button.rb} +9 -2
  77. data/lib/shadcn_phlexcomponents/components/pagination.rb +166 -0
  78. data/lib/shadcn_phlexcomponents/components/popover.rb +116 -0
  79. data/lib/shadcn_phlexcomponents/components/{progress/progress.rb → progress.rb} +4 -4
  80. data/lib/shadcn_phlexcomponents/components/radio_group.rb +155 -0
  81. data/lib/shadcn_phlexcomponents/components/select.rb +421 -0
  82. data/lib/shadcn_phlexcomponents/components/{separator/separator.rb → separator.rb} +9 -8
  83. data/lib/shadcn_phlexcomponents/components/sheet.rb +239 -0
  84. data/lib/shadcn_phlexcomponents/components/{skeleton/skeleton.rb → skeleton.rb} +1 -1
  85. data/lib/shadcn_phlexcomponents/components/slider.rb +72 -0
  86. data/lib/shadcn_phlexcomponents/components/switch.rb +75 -0
  87. data/lib/shadcn_phlexcomponents/components/table.rb +140 -0
  88. data/lib/shadcn_phlexcomponents/components/tabs.rb +135 -0
  89. data/lib/shadcn_phlexcomponents/components/textarea.rb +24 -0
  90. data/lib/shadcn_phlexcomponents/components/toast.rb +153 -0
  91. data/lib/shadcn_phlexcomponents/components/{toast/toast_container.rb → toast_container.rb} +23 -4
  92. data/lib/shadcn_phlexcomponents/components/tooltip.rb +131 -0
  93. data/lib/shadcn_phlexcomponents/initializers/shadcn_phlexcomponents.rb +25 -0
  94. data/lib/shadcn_phlexcomponents/version.rb +1 -1
  95. data/lib/tasks/install.rake +1 -1
  96. metadata +78 -167
  97. data/app/javascript/controllers/accordion_controller.js +0 -124
  98. data/app/javascript/controllers/alert_dialog_controller.js +0 -21
  99. data/app/javascript/controllers/checkbox_controller.js +0 -28
  100. data/app/javascript/controllers/collapsible_controller.js +0 -35
  101. data/app/javascript/controllers/combobox_controller.js +0 -54
  102. data/app/javascript/controllers/date_picker_controller.js +0 -253
  103. data/app/javascript/controllers/date_range_picker_controller.js +0 -344
  104. data/app/javascript/controllers/dialog_controller.js +0 -114
  105. data/app/javascript/controllers/dropdown_menu_controller.js +0 -171
  106. data/app/javascript/controllers/hover_card_controller.js +0 -21
  107. data/app/javascript/controllers/popover_controller.js +0 -113
  108. data/app/javascript/controllers/progress_controller.js +0 -14
  109. data/app/javascript/controllers/radio_group_controller.js +0 -90
  110. data/app/javascript/controllers/select_controller.js +0 -274
  111. data/app/javascript/controllers/sidebar_trigger_controller.js +0 -15
  112. data/app/javascript/controllers/switch_controller.js +0 -24
  113. data/app/javascript/controllers/tabs_controller.js +0 -73
  114. data/app/javascript/controllers/toast_container_controller.js +0 -22
  115. data/app/javascript/controllers/toast_controller.js +0 -45
  116. data/app/javascript/controllers/tooltip_controller.js +0 -40
  117. data/app/javascript/utils.js +0 -184
  118. data/app/stylesheets/choices.css +0 -324
  119. data/app/stylesheets/tailwindcss-animate.css +0 -318
  120. data/lib/shadcn_phlexcomponents/components/accordion/accordion.rb +0 -38
  121. data/lib/shadcn_phlexcomponents/components/accordion/accordion_content.rb +0 -30
  122. data/lib/shadcn_phlexcomponents/components/accordion/accordion_item.rb +0 -26
  123. data/lib/shadcn_phlexcomponents/components/accordion/accordion_trigger.rb +0 -46
  124. data/lib/shadcn_phlexcomponents/components/alert/alert.rb +0 -40
  125. data/lib/shadcn_phlexcomponents/components/alert/alert_description.rb +0 -11
  126. data/lib/shadcn_phlexcomponents/components/alert/alert_title.rb +0 -11
  127. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog.rb +0 -60
  128. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_action.rb +0 -22
  129. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_action_to.rb +0 -40
  130. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_cancel.rb +0 -22
  131. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_content.rb +0 -40
  132. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_description.rb +0 -22
  133. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_footer.rb +0 -11
  134. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_header.rb +0 -11
  135. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_title.rb +0 -22
  136. data/lib/shadcn_phlexcomponents/components/alert_dialog/alert_dialog_trigger.rb +0 -50
  137. data/lib/shadcn_phlexcomponents/components/avatar/avatar.rb +0 -31
  138. data/lib/shadcn_phlexcomponents/components/avatar/avatar_fallback.rb +0 -21
  139. data/lib/shadcn_phlexcomponents/components/avatar/avatar_image.rb +0 -19
  140. data/lib/shadcn_phlexcomponents/components/badge/badge.rb +0 -30
  141. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb.rb +0 -53
  142. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_ellipsis.rb +0 -23
  143. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_item.rb +0 -11
  144. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_link.rb +0 -7
  145. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_page.rb +0 -21
  146. data/lib/shadcn_phlexcomponents/components/breadcrumb/breadcrumb_separator.rb +0 -26
  147. data/lib/shadcn_phlexcomponents/components/button/button.rb +0 -53
  148. data/lib/shadcn_phlexcomponents/components/card/card.rb +0 -31
  149. data/lib/shadcn_phlexcomponents/components/card/card_content.rb +0 -11
  150. data/lib/shadcn_phlexcomponents/components/card/card_description.rb +0 -11
  151. data/lib/shadcn_phlexcomponents/components/card/card_footer.rb +0 -11
  152. data/lib/shadcn_phlexcomponents/components/card/card_header.rb +0 -11
  153. data/lib/shadcn_phlexcomponents/components/card/card_title.rb +0 -11
  154. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible.rb +0 -31
  155. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible_content.rb +0 -24
  156. data/lib/shadcn_phlexcomponents/components/collapsible/collapsible_trigger.rb +0 -50
  157. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker.rb +0 -87
  158. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_content.rb +0 -45
  159. data/lib/shadcn_phlexcomponents/components/date_picker/date_picker_trigger.rb +0 -64
  160. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker.rb +0 -105
  161. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_content.rb +0 -9
  162. data/lib/shadcn_phlexcomponents/components/date_range_picker/date_range_picker_trigger.rb +0 -9
  163. data/lib/shadcn_phlexcomponents/components/dialog/dialog.rb +0 -52
  164. data/lib/shadcn_phlexcomponents/components/dialog/dialog_close.rb +0 -42
  165. data/lib/shadcn_phlexcomponents/components/dialog/dialog_content.rb +0 -54
  166. data/lib/shadcn_phlexcomponents/components/dialog/dialog_description.rb +0 -22
  167. data/lib/shadcn_phlexcomponents/components/dialog/dialog_footer.rb +0 -11
  168. data/lib/shadcn_phlexcomponents/components/dialog/dialog_header.rb +0 -11
  169. data/lib/shadcn_phlexcomponents/components/dialog/dialog_title.rb +0 -22
  170. data/lib/shadcn_phlexcomponents/components/dialog/dialog_trigger.rb +0 -50
  171. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu.rb +0 -50
  172. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_content.rb +0 -52
  173. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_item.rb +0 -56
  174. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_item_to.rb +0 -28
  175. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_label.rb +0 -11
  176. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_separator.rb +0 -20
  177. data/lib/shadcn_phlexcomponents/components/dropdown_menu/dropdown_menu_trigger.rb +0 -57
  178. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card.rb +0 -33
  179. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card_content.rb +0 -32
  180. data/lib/shadcn_phlexcomponents/components/hover_card/hover_card_trigger.rb +0 -44
  181. data/lib/shadcn_phlexcomponents/components/input/input.rb +0 -32
  182. data/lib/shadcn_phlexcomponents/components/label/label.rb +0 -14
  183. data/lib/shadcn_phlexcomponents/components/pagination/pagination.rb +0 -38
  184. data/lib/shadcn_phlexcomponents/components/pagination/pagination_ellipsis.rb +0 -24
  185. data/lib/shadcn_phlexcomponents/components/pagination/pagination_link.rb +0 -34
  186. data/lib/shadcn_phlexcomponents/components/pagination/pagination_next.rb +0 -32
  187. data/lib/shadcn_phlexcomponents/components/pagination/pagination_previous.rb +0 -32
  188. data/lib/shadcn_phlexcomponents/components/popover/popover.rb +0 -34
  189. data/lib/shadcn_phlexcomponents/components/popover/popover_content.rb +0 -40
  190. data/lib/shadcn_phlexcomponents/components/popover/popover_trigger.rb +0 -50
  191. data/lib/shadcn_phlexcomponents/components/radio_group/radio_group.rb +0 -88
  192. data/lib/shadcn_phlexcomponents/components/radio_group/radio_group_item.rb +0 -66
  193. data/lib/shadcn_phlexcomponents/components/select/select.rb +0 -194
  194. data/lib/shadcn_phlexcomponents/components/select/select_content.rb +0 -64
  195. data/lib/shadcn_phlexcomponents/components/select/select_group.rb +0 -23
  196. data/lib/shadcn_phlexcomponents/components/select/select_item.rb +0 -59
  197. data/lib/shadcn_phlexcomponents/components/select/select_label.rb +0 -24
  198. data/lib/shadcn_phlexcomponents/components/select/select_trigger.rb +0 -56
  199. data/lib/shadcn_phlexcomponents/components/sheet/sheet.rb +0 -53
  200. data/lib/shadcn_phlexcomponents/components/sheet/sheet_close.rb +0 -42
  201. data/lib/shadcn_phlexcomponents/components/sheet/sheet_content.rb +0 -65
  202. data/lib/shadcn_phlexcomponents/components/sheet/sheet_description.rb +0 -22
  203. data/lib/shadcn_phlexcomponents/components/sheet/sheet_footer.rb +0 -11
  204. data/lib/shadcn_phlexcomponents/components/sheet/sheet_header.rb +0 -11
  205. data/lib/shadcn_phlexcomponents/components/sheet/sheet_title.rb +0 -22
  206. data/lib/shadcn_phlexcomponents/components/sheet/sheet_trigger.rb +0 -50
  207. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar.rb +0 -108
  208. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_container.rb +0 -11
  209. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_content.rb +0 -11
  210. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_footer.rb +0 -11
  211. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group.rb +0 -11
  212. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group_content.rb +0 -11
  213. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_group_label.rb +0 -16
  214. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_header.rb +0 -11
  215. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_inset.rb +0 -15
  216. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu.rb +0 -11
  217. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_button.rb +0 -61
  218. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_item.rb +0 -9
  219. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub.rb +0 -14
  220. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub_button.rb +0 -48
  221. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_menu_sub_item.rb +0 -9
  222. data/lib/shadcn_phlexcomponents/components/sidebar/sidebar_trigger.rb +0 -40
  223. data/lib/shadcn_phlexcomponents/components/switch/switch.rb +0 -66
  224. data/lib/shadcn_phlexcomponents/components/table/table.rb +0 -75
  225. data/lib/shadcn_phlexcomponents/components/table/table_body.rb +0 -11
  226. data/lib/shadcn_phlexcomponents/components/table/table_caption.rb +0 -11
  227. data/lib/shadcn_phlexcomponents/components/table/table_cell.rb +0 -11
  228. data/lib/shadcn_phlexcomponents/components/table/table_footer.rb +0 -11
  229. data/lib/shadcn_phlexcomponents/components/table/table_head.rb +0 -14
  230. data/lib/shadcn_phlexcomponents/components/table/table_header.rb +0 -11
  231. data/lib/shadcn_phlexcomponents/components/table/table_row.rb +0 -11
  232. data/lib/shadcn_phlexcomponents/components/tabs/tabs.rb +0 -38
  233. data/lib/shadcn_phlexcomponents/components/tabs/tabs_content.rb +0 -35
  234. data/lib/shadcn_phlexcomponents/components/tabs/tabs_list.rb +0 -23
  235. data/lib/shadcn_phlexcomponents/components/tabs/tabs_trigger.rb +0 -45
  236. data/lib/shadcn_phlexcomponents/components/textarea/textarea.rb +0 -29
  237. data/lib/shadcn_phlexcomponents/components/toast/toast.rb +0 -101
  238. data/lib/shadcn_phlexcomponents/components/toast/toast_action.rb +0 -39
  239. data/lib/shadcn_phlexcomponents/components/toast/toast_action_to.rb +0 -28
  240. data/lib/shadcn_phlexcomponents/components/toast/toast_content.rb +0 -11
  241. data/lib/shadcn_phlexcomponents/components/toast/toast_description.rb +0 -11
  242. data/lib/shadcn_phlexcomponents/components/toast/toast_title.rb +0 -11
  243. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip.rb +0 -34
  244. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip_content.rb +0 -39
  245. data/lib/shadcn_phlexcomponents/components/tooltip/tooltip_trigger.rb +0 -48
  246. /data/lib/shadcn_phlexcomponents/components/{theme_switcher/theme_switcher.rb → theme_switcher.rb} +0 -0
@@ -1,75 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Table < Base
5
- STYLES = "w-full caption-bottom text-sm"
6
-
7
- def initialize(**attributes)
8
- @columns = []
9
- super(**attributes)
10
- end
11
-
12
- def view_template(&)
13
- table(**@attributes, &)
14
- end
15
-
16
- def header(**attributes, &)
17
- TableHeader(**attributes, &)
18
- end
19
-
20
- def caption(**attributes, &)
21
- TableCaption(**attributes, &)
22
- end
23
-
24
- def row(**attributes, &)
25
- TableRow(**attributes, &)
26
- end
27
-
28
- def head(**attributes, &)
29
- TableHead(**attributes, &)
30
- end
31
-
32
- def body(**attributes, &)
33
- TableBody(**attributes, &)
34
- end
35
-
36
- def cell(**attributes, &)
37
- TableCell(**attributes, &)
38
- end
39
-
40
- def footer(**attributes, &)
41
- TableFooter(**attributes, &)
42
- end
43
-
44
- def rows(rows, &)
45
- @rows = rows
46
-
47
- vanish(&)
48
-
49
- thead(class: TableHeader::STYLES) do
50
- tr(class: TableRow::STYLES) do
51
- @columns.each do |column|
52
- th(class: TAILWIND_MERGER.merge("#{TableHead::STYLES} #{column[:head_class]}")) { column[:header] }
53
- end
54
- end
55
- end
56
-
57
- tbody(class: TableBody::STYLES) do
58
- @rows.each do |row|
59
- tr(class: TableRow::STYLES) do
60
- @columns.each do |column|
61
- td(class: TAILWIND_MERGER.merge("#{TableCell::STYLES} #{column[:cell_class]}")) do
62
- column[:content].call(row)
63
- end
64
- end
65
- end
66
- end
67
- end
68
- end
69
-
70
- def column(header, head_class: nil, cell_class: nil, &content)
71
- @columns << { header:, head_class:, cell_class:, content: }
72
- nil
73
- end
74
- end
75
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableBody < Base
5
- STYLES = "[&_tr:last-child]:border-0"
6
-
7
- def view_template(&)
8
- tbody(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableCaption < Base
5
- STYLES = "mt-4 text-sm text-muted-foreground"
6
-
7
- def view_template(&)
8
- caption(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableCell < Base
5
- STYLES = "p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]"
6
-
7
- def view_template(&)
8
- td(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableFooter < Base
5
- STYLES = "border-t bg-muted/50 font-medium [&>tr]:last:border-b-0"
6
-
7
- def view_template(&)
8
- tfoot(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableHead < Base
5
- STYLES = <<~HEREDOC
6
- h-10 px-2 text-left align-middle font-medium text-muted-foreground
7
- [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]#{" "}
8
- HEREDOC
9
-
10
- def view_template(&)
11
- th(**@attributes, &)
12
- end
13
- end
14
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableHeader < Base
5
- STYLES = "[&_tr]:border-b"
6
-
7
- def view_template(&)
8
- thead(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TableRow < Base
5
- STYLES = "border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted"
6
-
7
- def view_template(&)
8
- tr(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,38 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Tabs < Base
5
- def initialize(value: nil, dir: "ltr", aria_id: "tabs-#{SecureRandom.hex(5)}", **attributes)
6
- @dir = dir
7
- @value = value
8
- @aria_id = aria_id
9
- super(**attributes)
10
- end
11
-
12
- def view_template(&)
13
- div(**@attributes, &)
14
- end
15
-
16
- def default_attributes
17
- {
18
- dir: @dir,
19
- data: {
20
- controller: "tabs",
21
- "tabs-selected-value": @value,
22
- },
23
- }
24
- end
25
-
26
- def list(**attributes, &)
27
- TabsList(**attributes, &)
28
- end
29
-
30
- def trigger(**attributes, &)
31
- TabsTrigger(aria_id: @aria_id, **attributes, &)
32
- end
33
-
34
- def content(**attributes, &)
35
- TabsContent(aria_id: @aria_id, **attributes, &)
36
- end
37
- end
38
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TabsContent < Base
5
- STYLES = <<~HEREDOC
6
- mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2
7
- focus-visible:ring-ring focus-visible:ring-offset-2 hidden
8
- HEREDOC
9
-
10
- def initialize(value: nil, aria_id: nil, **attributes)
11
- @value = value
12
- @aria_id = aria_id
13
- super(**attributes)
14
- end
15
-
16
- def view_template(&)
17
- div(**@attributes, &)
18
- end
19
-
20
- def default_attributes
21
- {
22
- id: "#{@aria_id}-content-#{@value}",
23
- role: "tabpanel",
24
- tabindex: "0",
25
- aria: {
26
- labelledby: "#{@aria_id}-trigger-#{@value}",
27
- },
28
- data: {
29
- value: @value,
30
- "tabs-target": "content",
31
- },
32
- }
33
- end
34
- end
35
- end
@@ -1,23 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TabsList < Base
5
- STYLES = <<~HEREDOC
6
- inline-flex h-9 items-center justify-center rounded-lg bg-muted p-1 text-muted-foreground outline-none
7
- HEREDOC
8
-
9
- def view_template(&)
10
- div(**@attributes, &)
11
- end
12
-
13
- def default_attributes
14
- {
15
- role: "tablist",
16
- tabindex: "-1",
17
- aria: {
18
- orientation: "horizontal",
19
- },
20
- }
21
- end
22
- end
23
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TabsTrigger < Base
5
- STYLES = <<~HEREDOC
6
- inline-flex items-center justify-center whitespace-nowrap rounded-md px-3 py-1 text-sm
7
- font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2
8
- focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50
9
- data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow
10
- cursor-pointer
11
- HEREDOC
12
-
13
- def initialize(value: nil, aria_id: nil, **attributes)
14
- @value = value
15
- @aria_id = aria_id
16
- super(**attributes)
17
- end
18
-
19
- def view_template(&)
20
- button(**@attributes, &)
21
- end
22
-
23
- def default_attributes
24
- {
25
- id: "#{@aria_id}-trigger-#{@value}",
26
- role: "tab",
27
- tabindex: "-1",
28
- aria: {
29
- controls: "#{@aria_id}-content-#{@value}",
30
- selected: false,
31
- },
32
- data: {
33
- "tabs-target": "trigger",
34
- value: @value,
35
- state: "inactive",
36
- action: <<~HEREDOC,
37
- click->tabs#setActiveTab
38
- keydown.left->tabs#setActiveToPrev:prevent
39
- keydown.right->tabs#setActiveToNext:prevent
40
- HEREDOC
41
- },
42
- }
43
- end
44
- end
45
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Textarea < Base
5
- STYLES = <<~HEREDOC
6
- flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3
7
- py-2 text-base shadow-sm placeholder:text-muted-foreground focus-visible:outline-none
8
- focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 md:text-sm
9
- HEREDOC
10
-
11
- def initialize(name: nil, id: nil, value: nil, **attributes)
12
- @name = name
13
- @id = id || @name
14
- @value = value
15
- super(**attributes)
16
- end
17
-
18
- def default_attributes
19
- {
20
- name: @name,
21
- id: @id,
22
- }
23
- end
24
-
25
- def view_template(&)
26
- textarea(**@attributes) { @value }
27
- end
28
- end
29
- end
@@ -1,101 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Toast < Base
5
- STYLES = <<~HEREDOC
6
- group pointer-events-auto relative flex w-full items-center justify-between
7
- space-x-2 overflow-hidden rounded-md border p-4 pr-6 shadow-lg transition-all
8
- data-[state=open]:animate-in data-[state=closed]:animate-out#{" "}
9
- data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full
10
- data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full
11
- HEREDOC
12
-
13
- CLOSE_BUTTON_STYLES = <<~HEREDOC
14
- absolute right-1 top-1 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity
15
- hover:text-foreground focus:opacity-100 focus:outline-none focus:ring-1 group-hover:opacity-100
16
- group-[.destructive]:text-red-300 group-[.destructive]:hover:text-red-50 group-[.destructive]:focus:ring-red-400
17
- group-[.destructive]:focus:ring-offset-red-600 cursor-pointer
18
- HEREDOC
19
-
20
- VARIANTS = {
21
- default: "border bg-background text-foreground",
22
- destructive: "destructive group border-destructive bg-destructive text-destructive-foreground",
23
- }.freeze
24
-
25
- def initialize(variant: :default, duration: 5000, **attributes)
26
- @variant = variant
27
- @duration = duration
28
- super(**attributes)
29
- end
30
-
31
- def title(**attributes, &)
32
- ToastTitle(data: { title: "" }, **attributes, &)
33
- end
34
-
35
- def description(**attributes, &)
36
- ToastDescription(data: { description: "" }, **attributes, &)
37
- end
38
-
39
- def content(**attributes, &)
40
- ToastContent(**attributes, &)
41
- end
42
-
43
- def action(**attributes, &)
44
- ToastAction(variant: @variant, **attributes, &)
45
- end
46
-
47
- def action_to(name = nil, options = nil, html_options = nil, &block)
48
- if block_given?
49
- options ||= {}
50
- options[:variant] = @variant
51
- else
52
- html_options ||= {}
53
- html_options[:variant] = @variant
54
- end
55
-
56
- ToastActionTo(name, options, html_options, &block)
57
- end
58
-
59
- def default_styles
60
- "#{STYLES} #{VARIANTS[@variant]}"
61
- end
62
-
63
- def default_attributes
64
- {
65
- role: "status",
66
- tabindex: 0,
67
- aria: {
68
- live: "off",
69
- atomic: "true",
70
- },
71
- data: {
72
- duration: @duration,
73
- state: "open",
74
- controller: "toast",
75
- action: <<~HEREDOC,
76
- focus->toast#cancelDismiss
77
- blur->toast#dismiss
78
- mouseover->toast#cancelDismiss
79
- mouseout->toast#dismiss
80
- keydown.esc->toast#close
81
- HEREDOC
82
- },
83
- }
84
- end
85
-
86
- def view_template(&)
87
- li(**@attributes) do
88
- yield
89
- button(
90
- type: "button",
91
- class: CLOSE_BUTTON_STYLES,
92
- data: {
93
- action: "toast#close",
94
- },
95
- ) do
96
- icon("x", class: "size-4")
97
- end
98
- end
99
- end
100
- end
101
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class ToastAction < Base
5
- STYLES = <<~HEREDOC
6
- inline-flex h-8 shrink-0 items-center justify-center rounded-md border
7
- bg-transparent px-3 text-sm font-medium transition-colors hover:bg-secondary
8
- focus:outline-none focus:ring-1 focus:ring-ring disabled:pointer-events-none
9
- disabled:opacity-50 group-[.destructive]:border-muted/40 group-[.destructive]:hover:border-destructive/30
10
- group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground
11
- group-[.destructive]:focus:ring-destructive cursor-pointer
12
- HEREDOC
13
-
14
- def initialize(as_child: false, **attributes)
15
- @as_child = as_child
16
- super(**attributes)
17
- end
18
-
19
- def view_template(&)
20
- if @as_child
21
- content = capture(&)
22
- element = find_as_child(content.to_s)
23
-
24
- vanish(&)
25
-
26
- element_attributes = nokogiri_attributes_to_hash(element)
27
- styles = TAILWIND_MERGER.merge("#{@attributes[:class]} #{element_attributes[:class]}")
28
- merged_attributes = mix(@attributes, element_attributes)
29
- merged_attributes[:class] = styles
30
-
31
- send(element.name, **merged_attributes) do
32
- sanitize_as_child(element.children.to_s)
33
- end
34
- else
35
- button(**@attributes, &)
36
- end
37
- end
38
- end
39
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class ToastActionTo < ToastAction
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 view_template(&)
12
- if block_given?
13
- @html_options = @options
14
- @options = @name
15
- end
16
- @html_options ||= {}
17
- @variant = @html_options.delete(:variant) || :default
18
- @html_options = mix(default_attributes, @html_options)
19
- @html_options[:class] = TAILWIND_MERGER.merge("#{default_styles} #{@html_options[:class]}")
20
-
21
- if block_given?
22
- button_to(@options, @html_options, &)
23
- else
24
- button_to(@name, @options, @html_options)
25
- end
26
- end
27
- end
28
- end
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class ToastContent < Base
5
- STYLES = "grid gap-1"
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 ToastDescription < Base
5
- STYLES = "text-sm opacity-90"
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 ToastTitle < Base
5
- STYLES = "text-sm font-semibold [&+div]:text-xs"
6
-
7
- def view_template(&)
8
- div(**@attributes, &)
9
- end
10
- end
11
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Tooltip < Base
5
- STYLES = "inline-block"
6
-
7
- def initialize(side: :top, aria_id: "tooltip-#{SecureRandom.hex(5)}", **attributes)
8
- @side = side
9
- @aria_id = aria_id
10
- super(**attributes)
11
- end
12
-
13
- def trigger(**attributes, &)
14
- TooltipTrigger(aria_id: @aria_id, **attributes, &)
15
- end
16
-
17
- def content(**attributes, &)
18
- TooltipContent(side: @side, aria_id: @aria_id, **attributes, &)
19
- end
20
-
21
- def default_attributes
22
- {
23
- data: {
24
- controller: "tooltip",
25
- side: @side,
26
- },
27
- }
28
- end
29
-
30
- def view_template(&)
31
- div(**@attributes, &)
32
- end
33
- end
34
- end
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TooltipContent < Base
5
- STYLES = <<~HEREDOC
6
- overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground
7
- animate-in fade-in-0 zoom-in-95
8
- data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2
9
- data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2
10
- HEREDOC
11
-
12
- def initialize(side: :top, aria_id: nil, **attributes)
13
- @side = side
14
- @aria_id = aria_id
15
- super(**attributes)
16
- end
17
-
18
- def view_template(&)
19
- div(class: "hidden", data: { "tooltip-target": "content" }) do
20
- div(**@attributes, &)
21
-
22
- span(
23
- id: "#{@aria_id}-content",
24
- role: "tooltip",
25
- class: "sr-only",
26
- &
27
- )
28
- end
29
- end
30
-
31
- def default_attributes
32
- {
33
- data: {
34
- side: @side,
35
- },
36
- }
37
- end
38
- end
39
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class TooltipTrigger < 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 view_template(&)
12
- if @as_child
13
- content = capture(&)
14
- element = find_as_child(content.to_s)
15
-
16
- vanish(&)
17
- element_attributes = nokogiri_attributes_to_hash(element)
18
- styles = TAILWIND_MERGER.merge("#{@attributes[:class]} #{element_attributes[:class]}")
19
- merged_attributes = mix(@attributes, element_attributes)
20
- merged_attributes[:class] = styles
21
-
22
- if element.name == "button"
23
- merged_attributes.delete(:role)
24
- end
25
-
26
- send(element.name, **merged_attributes) do
27
- sanitize_as_child(element.children.to_s)
28
- end
29
- else
30
- div(**@attributes, &)
31
- end
32
- end
33
-
34
- def default_attributes
35
- {
36
- id: @id,
37
- role: "button",
38
- aria: {
39
- describedby: "#{@aria_id}-content",
40
- },
41
- data: {
42
- as_child: @as_child.to_s,
43
- "tooltip-target": "trigger",
44
- },
45
- }
46
- end
47
- end
48
- end