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,87 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DatePicker < Base
5
- STYLES = "w-full"
6
- CONTAINER_STYLES = <<~HEREDOC
7
- flex rounded-md border border-input items-center shadow-sm outline-none
8
- data-[focus=true]:ring-1 data-[focus=true]:ring-ring focus:ring-1 focus:ring-ring
9
- data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50
10
- HEREDOC
11
- INPUT_STYLES = <<~HEREDOC
12
- flex h-9 w-full bg-transparent px-3 py-1 text-base transition-colors placeholder:text-muted-foreground
13
- focus-visible:outline-none grow md:text-sm
14
- HEREDOC
15
-
16
- def initialize(name: nil, id: nil, value: nil, format: "DD/MM/YYYY", select_only: false, placeholder: nil,
17
- disabled: false, settings: {}, aria_id: "date-picker-#{SecureRandom.hex(5)}", **attributes)
18
- @name = name
19
- @id = id || @name
20
- @value = value&.utc&.iso8601
21
- @format = format
22
- @select_only = select_only
23
- @placeholder = placeholder
24
- @disabled = disabled
25
- @settings = settings
26
- @aria_id = aria_id
27
- super(**attributes)
28
- end
29
-
30
- def default_attributes
31
- {
32
- data: {
33
- controller: "date-picker",
34
- value: @value,
35
- format: @format,
36
- settings: @settings.to_json,
37
- },
38
- }
39
- end
40
-
41
- def view_template(&)
42
- div(**@attributes) do
43
- input(
44
- type: :hidden,
45
- name: @name,
46
- value: @value,
47
- data: { "date-picker-target": "hiddenInput" },
48
- )
49
-
50
- if @select_only
51
- DatePickerTrigger(
52
- disabled: @disabled,
53
- aria_id: @aria_id,
54
- select_only: @select_only,
55
- select_only_id: @id,
56
- placeholder: @placeholder,
57
- )
58
- else
59
- div(class: CONTAINER_STYLES, data: { "date-picker-target": "inputContainer", disabled: @disabled }) do
60
- input(
61
- id: @id,
62
- placeholder: @placeholder || @format,
63
- type: :text,
64
- class: INPUT_STYLES,
65
- disabled: @disabled,
66
- data: {
67
- "date-picker-target": "input",
68
- action: "input->date-picker#changeDate
69
- blur->date-picker#inputBlur
70
- focus->date-picker#setContainerFocus",
71
- },
72
- )
73
-
74
- DatePickerTrigger(
75
- disabled: @disabled,
76
- aria_id: @aria_id,
77
- select_only: @select_only,
78
- placeholder: @placeholder,
79
- )
80
- end
81
- end
82
-
83
- DatePickerContent(aria_id: @aria_id)
84
- end
85
- end
86
- end
87
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DatePickerContent < Base
5
- STYLES = <<~HEREDOC
6
- z-51 bg-popover text-popover-foreground outline-none rounded-md min-w-[300px]
7
- fixed left-[50%] top-[50%] shadow-lg grid translate-x-[-50%] translate-y-[-50%]#{" "}
8
- md:relative md:left-[unset] md:top-[unset] md:shadow-md md:block md:translate-x-[unset] md:translate-y-[unset] md:min-w-auto
9
- data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0
10
- data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95
11
- slide-in-from-top-2
12
- HEREDOC
13
-
14
- def initialize(aria_id: nil, **attributes)
15
- @aria_id = aria_id
16
- super(**attributes)
17
- end
18
-
19
- def view_template(&)
20
- div(
21
- class: "hidden fixed top-0 left-0 w-max z-51",
22
- data: { "#{stimulus_controller_name}-target" => "contentWrapper" },
23
- ) do
24
- div(**@attributes) do
25
- div(data: { "#{stimulus_controller_name}-target" => "calendar" })
26
- end
27
- end
28
- end
29
-
30
- def default_attributes
31
- {
32
- id: "#{@aria_id}-content",
33
- tabindex: -1,
34
- role: "dialog",
35
- data: {
36
- "#{stimulus_controller_name}-target" => "content",
37
- },
38
- }
39
- end
40
-
41
- def stimulus_controller_name
42
- "date-picker"
43
- end
44
- end
45
- end
@@ -1,64 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DatePickerTrigger < Base
5
- SELECT_ONLY_BUTTON_STYLES = <<~HEREDOC
6
- flex h-9 items-center justify-between whitespace-nowrap rounded-md border
7
- border-input bg-transparent px-3 py-2 gap-1.5 text-base md:text-sm shadow-sm ring-offset-background
8
- data-[placeholder]:data-[has-value=false]:text-muted-foreground focus:outline-none focus:ring-1
9
- focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1
10
- w-full cursor-pointer hover:bg-accent hover:text-accent-foreground disabled:hover:bg-transparent
11
- HEREDOC
12
-
13
- def initialize(disabled: false, select_only: true, placeholder: nil, select_only_id: nil, aria_id: nil,
14
- **attributes)
15
- @disabled = disabled
16
- @select_only = select_only
17
- @placeholder = placeholder
18
- @select_only_id = select_only_id
19
- @aria_id = aria_id
20
- super(**attributes)
21
- end
22
-
23
- def view_template
24
- if @select_only
25
- button(type: :button, disabled: @disabled, id: @select_only_id, **@attributes) do
26
- span(class: "pointer-events-none", data: { "#{stimulus_controller_name}-target" => "triggerText" })
27
-
28
- icon("calendar", class: "size-4 text-foreground")
29
- end
30
- else
31
- button(type: :button, disabled: @disabled, **@attributes) do
32
- icon("calendar")
33
- end
34
- end
35
- end
36
-
37
- def default_styles
38
- if @select_only
39
- SELECT_ONLY_BUTTON_STYLES
40
- else
41
- "#{Button.default_styles(variant: :ghost, size: :icon)} mr-1.25 h-7 w-8 disabled:!opacity-100"
42
- end
43
- end
44
-
45
- def default_attributes
46
- {
47
- aria: {
48
- haspopup: "dialog",
49
- expanded: false,
50
- controls: "#{@aria_id}-content",
51
- },
52
- data: {
53
- placeholder: @placeholder,
54
- action: "click->#{stimulus_controller_name}#toggle",
55
- "#{stimulus_controller_name}-target" => "trigger",
56
- },
57
- }
58
- end
59
-
60
- def stimulus_controller_name
61
- "date-picker"
62
- end
63
- end
64
- end
@@ -1,105 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DateRangePicker < Base
5
- def initialize(
6
- start_date_name: nil,
7
- end_date_name: nil,
8
- id: nil,
9
- start_date: nil,
10
- end_date: nil,
11
- format: "DD/MM/YYYY",
12
- select_only: false,
13
- placeholder: nil,
14
- disabled: false,
15
- settings: {},
16
- aria_id: "date-range-picker-#{SecureRandom.hex(5)}",
17
- **attributes
18
- )
19
- @start_date_name = start_date_name
20
- @end_date_name = end_date_name
21
- @id = id || start_date_name
22
- @start_date = start_date&.utc&.iso8601
23
- @end_date = end_date&.utc&.iso8601
24
- @format = format
25
- @select_only = select_only
26
- @placeholder = placeholder
27
- @disabled = disabled
28
- @settings = settings
29
- @aria_id = aria_id
30
- super(**attributes)
31
- end
32
-
33
- def default_styles
34
- DatePicker::STYLES
35
- end
36
-
37
- def default_attributes
38
- {
39
- data: {
40
- controller: "date-range-picker",
41
- start_date: @start_date,
42
- end_date: @end_date,
43
- format: @format,
44
- settings: @settings.to_json,
45
- },
46
- }
47
- end
48
-
49
- def view_template(&)
50
- div(**@attributes) do
51
- input(
52
- type: :hidden,
53
- name: @start_date_name,
54
- value: @start_date,
55
- data: { "date-range-picker-target": "startDateHiddenInput" },
56
- )
57
-
58
- input(
59
- type: :hidden,
60
- name: @end_date_name,
61
- value: @end_date,
62
- data: { "date-range-picker-target": "endDateHiddenInput" },
63
- )
64
-
65
- if @select_only
66
- DateRangePickerTrigger(
67
- disabled: @disabled,
68
- aria_id: @aria_id,
69
- select_only: @select_only,
70
- select_only_id: @id,
71
- placeholder: @placeholder,
72
- )
73
- else
74
- div(
75
- class: DatePicker::CONTAINER_STYLES,
76
- data: { "date-range-picker-target": "inputContainer", disabled: @disabled },
77
- ) do
78
- input(
79
- id: @id,
80
- placeholder: @placeholder || "#{@format} - #{@format}",
81
- type: :text,
82
- class: DatePicker::INPUT_STYLES,
83
- disabled: @disabled,
84
- data: {
85
- "date-range-picker-target": "input",
86
- action: "input->date-range-picker#changeDate
87
- blur->date-range-picker#inputBlur
88
- focus->date-range-picker#setContainerFocus",
89
- },
90
- )
91
-
92
- DateRangePickerTrigger(
93
- disabled: @disabled,
94
- aria_id: @aria_id,
95
- select_only: @select_only,
96
- placeholder: @placeholder,
97
- )
98
- end
99
- end
100
-
101
- DateRangePickerContent(aria_id: @aria_id)
102
- end
103
- end
104
- end
105
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DateRangePickerContent < DatePickerContent
5
- def stimulus_controller_name
6
- "date-range-picker"
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DateRangePickerTrigger < DatePickerTrigger
5
- def stimulus_controller_name
6
- "date-range-picker"
7
- end
8
- end
9
- end
@@ -1,52 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class Dialog < Base
5
- STYLES = "inline-block"
6
-
7
- def initialize(aria_id: "dialog-#{SecureRandom.hex(5)}", **attributes)
8
- @aria_id = aria_id
9
- super(**attributes)
10
- end
11
-
12
- def trigger(**attributes, &)
13
- DialogTrigger(aria_id: @aria_id, **attributes, &)
14
- end
15
-
16
- def content(**attributes, &)
17
- DialogContent(aria_id: @aria_id, **attributes, &)
18
- end
19
-
20
- def header(**attributes, &)
21
- DialogHeader(**attributes, &)
22
- end
23
-
24
- def title(**attributes, &)
25
- DialogTitle(aria_id: @aria_id, **attributes, &)
26
- end
27
-
28
- def description(**attributes, &)
29
- DialogDescription(aria_id: @aria_id, **attributes, &)
30
- end
31
-
32
- def footer(**attributes, &)
33
- DialogFooter(**attributes, &)
34
- end
35
-
36
- def close(**attributes, &)
37
- DialogClose(**attributes, &)
38
- end
39
-
40
- def default_attributes
41
- {
42
- data: {
43
- controller: "dialog",
44
- },
45
- }
46
- end
47
-
48
- def view_template(&)
49
- div(**@attributes, &)
50
- end
51
- end
52
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DialogClose < Base
5
- def initialize(as_child: false, **attributes)
6
- @as_child = as_child
7
- super(**attributes)
8
- end
9
-
10
- def default_attributes
11
- {
12
- role: "button",
13
- data: {
14
- action: "click->dialog#close",
15
- },
16
- }
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
- element_attributes = nokogiri_attributes_to_hash(element)
26
- styles = TAILWIND_MERGER.merge("#{@attributes[:class]} #{element_attributes[:class]}")
27
- merged_attributes = mix(@attributes, element_attributes)
28
- merged_attributes[:class] = styles
29
-
30
- if element.name == "button"
31
- merged_attributes.delete(:role)
32
- end
33
-
34
- send(element.name, **merged_attributes) do
35
- sanitize_as_child(element.children.to_s)
36
- end
37
- else
38
- div(**@attributes, &)
39
- end
40
- end
41
- end
42
- end
@@ -1,54 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DialogContent < Base
5
- STYLES = <<~HEREDOC
6
- fixed left-[50%] top-[50%] z-51 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
- CLOSE_BUTTON_STYLES = <<~HEREDOC
15
- absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background
16
- transition-opacity hover:opacity-100 focus:outline-none focus:ring-2
17
- focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none
18
- cursor-pointer
19
- HEREDOC
20
-
21
- def initialize(aria_id: nil, **attributes)
22
- @aria_id = aria_id
23
- super(**attributes)
24
- end
25
-
26
- def default_attributes
27
- {
28
- id: "#{@aria_id}-content",
29
- tabindex: -1,
30
- role: "dialog",
31
- aria: {
32
- describedby: "#{@aria_id}-description",
33
- labelledby: "#{@aria_id}-title",
34
- },
35
- data: {
36
- "dialog-target": "content",
37
- state: "closed",
38
- },
39
- }
40
- end
41
-
42
- def view_template(&)
43
- @class = @attributes.delete(:class)
44
- div(class: "#{@class} hidden", **@attributes) do
45
- yield
46
-
47
- button(class: CLOSE_BUTTON_STYLES, data: { action: "click->dialog#close" }) do
48
- icon("x", class: "size-4")
49
- span(class: "sr-only") { "close" }
50
- end
51
- end
52
- end
53
- end
54
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DialogDescription < Base
5
- STYLES = "text-sm text-muted-foreground"
6
-
7
- def initialize(aria_id: nil, **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 DialogFooter < 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 DialogHeader < Base
5
- STYLES = "flex flex-col space-y-1.5 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 DialogTitle < Base
5
- STYLES = "text-lg font-semibold leading-none tracking-tight"
6
-
7
- def initialize(aria_id: nil, **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 DialogTrigger < 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->dialog#open",
21
- "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,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShadcnPhlexcomponents
4
- class DropdownMenu < Base
5
- STYLES = "inline-block"
6
-
7
- def initialize(side: :bottom, aria_id: "dropdown-menu-#{SecureRandom.hex(5)}", **attributes)
8
- @side = side
9
- @aria_id = aria_id
10
- super(**attributes)
11
- end
12
-
13
- def trigger(**attributes, &)
14
- DropdownMenuTrigger(aria_id: @aria_id, **attributes, &)
15
- end
16
-
17
- def content(**attributes, &)
18
- DropdownMenuContent(aria_id: @aria_id, side: @side, **attributes, &)
19
- end
20
-
21
- def label(**attributes, &)
22
- DropdownMenuLabel(**attributes, &)
23
- end
24
-
25
- def item(**attributes, &)
26
- DropdownMenuItem(**attributes, &)
27
- end
28
-
29
- def item_to(name = nil, options = nil, html_options = nil, &block)
30
- DropdownMenuItemTo(name, options, html_options, &block)
31
- end
32
-
33
- def separator(**attributes, &)
34
- DropdownMenuSeparator(**attributes, &)
35
- end
36
-
37
- def default_attributes
38
- {
39
- data: {
40
- controller: "dropdown-menu",
41
- side: @side,
42
- },
43
- }
44
- end
45
-
46
- def view_template(&)
47
- div(**@attributes, &)
48
- end
49
- end
50
- end