phlex_kit 0.2.1 → 0.2.2

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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +81 -6
  3. data/THIRD_PARTY_LICENSES +104 -0
  4. data/app/assets/stylesheets/phlex_kit/_tokens.css +72 -0
  5. data/app/assets/stylesheets/phlex_kit/phlex_kit.css +1 -1
  6. data/app/assets/stylesheets/phlex_kit/themes/claude.css +86 -0
  7. data/app/assets/stylesheets/phlex_kit/themes/neutral.css +95 -0
  8. data/app/assets/stylesheets/phlex_kit/themes/zinc.css +85 -0
  9. data/app/components/phlex_kit/accordion/accordion.css +13 -0
  10. data/app/components/phlex_kit/accordion/accordion.rb +11 -2
  11. data/app/components/phlex_kit/accordion/accordion_icon.rb +1 -3
  12. data/app/components/phlex_kit/accordion/accordion_item.rb +5 -2
  13. data/app/components/phlex_kit/alert_dialog/alert_dialog.css +45 -4
  14. data/app/components/phlex_kit/alert_dialog/alert_dialog_action.rb +3 -2
  15. data/app/components/phlex_kit/alert_dialog/alert_dialog_content.rb +6 -2
  16. data/app/components/phlex_kit/alert_dialog/alert_dialog_media.rb +14 -0
  17. data/app/components/phlex_kit/attachment/attachment.css +102 -2
  18. data/app/components/phlex_kit/attachment/attachment.rb +18 -6
  19. data/app/components/phlex_kit/attachment/attachment_action.rb +1 -6
  20. data/app/components/phlex_kit/attachment/attachment_group.rb +21 -0
  21. data/app/components/phlex_kit/attachment/attachment_media.rb +13 -4
  22. data/app/components/phlex_kit/attachment/attachment_trigger.rb +22 -0
  23. data/app/components/phlex_kit/breadcrumb/breadcrumb_ellipsis.rb +1 -5
  24. data/app/components/phlex_kit/breadcrumb/breadcrumb_separator.rb +1 -1
  25. data/app/components/phlex_kit/calendar/calendar_next.rb +1 -15
  26. data/app/components/phlex_kit/calendar/calendar_prev.rb +1 -15
  27. data/app/components/phlex_kit/card/card.css +50 -14
  28. data/app/components/phlex_kit/card/card.rb +6 -2
  29. data/app/components/phlex_kit/card/card_action.rb +14 -0
  30. data/app/components/phlex_kit/carousel/carousel_next.rb +1 -15
  31. data/app/components/phlex_kit/carousel/carousel_previous.rb +1 -15
  32. data/app/components/phlex_kit/codeblock/codeblock.css +1 -1
  33. data/app/components/phlex_kit/combobox/combobox_clear_button.rb +1 -15
  34. data/app/components/phlex_kit/combobox/combobox_input_trigger.rb +1 -12
  35. data/app/components/phlex_kit/combobox/combobox_item_indicator.rb +1 -15
  36. data/app/components/phlex_kit/combobox/combobox_search_input.rb +1 -14
  37. data/app/components/phlex_kit/combobox/combobox_trigger.rb +1 -14
  38. data/app/components/phlex_kit/command/command.css +2 -2
  39. data/app/components/phlex_kit/command/command_input.rb +1 -13
  40. data/app/components/phlex_kit/context_menu/context_menu_item.rb +1 -3
  41. data/app/components/phlex_kit/data_table/data_table_column_toggle.rb +1 -13
  42. data/app/components/phlex_kit/data_table/data_table_expand_toggle.rb +1 -12
  43. data/app/components/phlex_kit/data_table/data_table_sort_head.rb +2 -28
  44. data/app/components/phlex_kit/dialog/dialog.css +8 -2
  45. data/app/components/phlex_kit/dialog/dialog_content.rb +1 -3
  46. data/app/components/phlex_kit/drawer/drawer.css +1 -0
  47. data/app/components/phlex_kit/dropdown_menu/dropdown_menu.css +64 -0
  48. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_checkbox_item.rb +31 -0
  49. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_group.rb +11 -0
  50. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_item.rb +5 -2
  51. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_radio_group.rb +10 -0
  52. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_radio_item.rb +31 -0
  53. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_shortcut.rb +10 -0
  54. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_sub.rb +11 -0
  55. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_sub_content.rb +12 -0
  56. data/app/components/phlex_kit/dropdown_menu/dropdown_menu_sub_trigger.rb +18 -0
  57. data/app/components/phlex_kit/icon/icon.rb +51 -0
  58. data/app/components/phlex_kit/marker/marker.css +25 -0
  59. data/app/components/phlex_kit/marker/marker.rb +18 -0
  60. data/app/components/phlex_kit/marker/marker_content.rb +7 -0
  61. data/app/components/phlex_kit/marker/marker_icon.rb +7 -0
  62. data/app/components/phlex_kit/native_select/native_select_icon.rb +1 -10
  63. data/app/components/phlex_kit/navigation_menu/navigation_menu_trigger.rb +1 -5
  64. data/app/components/phlex_kit/pagination/pagination_ellipsis.rb +1 -5
  65. data/app/components/phlex_kit/select/select_item.rb +1 -11
  66. data/app/components/phlex_kit/select/select_trigger.rb +1 -14
  67. data/app/components/phlex_kit/sheet/sheet.css +1 -1
  68. data/app/components/phlex_kit/sheet/sheet_content.rb +1 -3
  69. data/app/components/phlex_kit/sidebar/sidebar.css +129 -11
  70. data/app/components/phlex_kit/sidebar/sidebar.rb +19 -6
  71. data/app/components/phlex_kit/sidebar/sidebar_group_action.rb +14 -0
  72. data/app/components/phlex_kit/sidebar/sidebar_group_content.rb +13 -0
  73. data/app/components/phlex_kit/sidebar/sidebar_group_label.rb +13 -0
  74. data/app/components/phlex_kit/sidebar/sidebar_input.rb +14 -0
  75. data/app/components/phlex_kit/sidebar/sidebar_menu_action.rb +13 -0
  76. data/app/components/phlex_kit/sidebar/sidebar_menu_badge.rb +13 -0
  77. data/app/components/phlex_kit/sidebar/sidebar_menu_skeleton.rb +19 -0
  78. data/app/components/phlex_kit/sidebar/sidebar_menu_sub.rb +13 -0
  79. data/app/components/phlex_kit/sidebar/sidebar_menu_sub_button.rb +18 -0
  80. data/app/components/phlex_kit/sidebar/sidebar_menu_sub_item.rb +13 -0
  81. data/app/components/phlex_kit/sidebar/sidebar_separator.rb +14 -0
  82. data/app/components/phlex_kit/spinner/spinner.rb +5 -10
  83. data/app/components/phlex_kit/toast/toast_close.rb +1 -15
  84. data/app/components/phlex_kit/toast/toast_icon.rb +12 -36
  85. data/app/components/phlex_kit/typography/heading.rb +1 -1
  86. data/app/components/phlex_kit/typography/typography.css +7 -3
  87. data/app/javascript/phlex_kit/controllers/accordion_controller.js +17 -1
  88. data/app/javascript/phlex_kit/controllers/index.js +2 -0
  89. data/app/javascript/phlex_kit/controllers/scroll_fade_controller.js +31 -0
  90. data/lib/phlex_kit/configuration.rb +7 -0
  91. data/lib/phlex_kit/icons/lucide.rb +88 -0
  92. data/lib/phlex_kit/icons/phosphor.rb +88 -0
  93. data/lib/phlex_kit/icons/remix.rb +88 -0
  94. data/lib/phlex_kit/icons/tabler.rb +88 -0
  95. data/lib/phlex_kit/icons.rb +40 -0
  96. data/lib/phlex_kit/version.rb +1 -1
  97. data/lib/phlex_kit.rb +1 -0
  98. metadata +45 -8
  99. data/app/components/phlex_kit/stars/stars.css +0 -4
  100. data/app/components/phlex_kit/stars/stars.rb +0 -19
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: phlex_kit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matt Kennedy
@@ -105,10 +105,10 @@ dependencies:
105
105
  - - ">="
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
- description: PhlexKit ports ruby_ui's components to Phlex, replacing Tailwind with
109
- co-located vanilla CSS per component plus a global :root design-token theme. phlex-reactive
110
- is an optional, per-component integration — never a required dependency. Assets
111
- ship precompiled-static, so no host build step.
108
+ description: PhlexKit brings the shadcn/ui component catalog to Phlex and Rails, replacing
109
+ Tailwind with co-located vanilla CSS per component plus a global :root design-token
110
+ theme. phlex-reactive is an optional, per-component integration — never a required
111
+ dependency. Assets ship precompiled-static, so no host build step.
112
112
  email:
113
113
  - m.kennedy@aypex.io
114
114
  executables: []
@@ -117,8 +117,12 @@ extra_rdoc_files: []
117
117
  files:
118
118
  - MIT-LICENSE
119
119
  - README.md
120
+ - THIRD_PARTY_LICENSES
120
121
  - app/assets/stylesheets/phlex_kit/_tokens.css
121
122
  - app/assets/stylesheets/phlex_kit/phlex_kit.css
123
+ - app/assets/stylesheets/phlex_kit/themes/claude.css
124
+ - app/assets/stylesheets/phlex_kit/themes/neutral.css
125
+ - app/assets/stylesheets/phlex_kit/themes/zinc.css
122
126
  - app/components/phlex_kit/accordion/accordion.css
123
127
  - app/components/phlex_kit/accordion/accordion.rb
124
128
  - app/components/phlex_kit/accordion/accordion_content.rb
@@ -139,6 +143,7 @@ files:
139
143
  - app/components/phlex_kit/alert_dialog/alert_dialog_description.rb
140
144
  - app/components/phlex_kit/alert_dialog/alert_dialog_footer.rb
141
145
  - app/components/phlex_kit/alert_dialog/alert_dialog_header.rb
146
+ - app/components/phlex_kit/alert_dialog/alert_dialog_media.rb
142
147
  - app/components/phlex_kit/alert_dialog/alert_dialog_title.rb
143
148
  - app/components/phlex_kit/alert_dialog/alert_dialog_trigger.rb
144
149
  - app/components/phlex_kit/aspect_ratio/aspect_ratio.css
@@ -149,8 +154,10 @@ files:
149
154
  - app/components/phlex_kit/attachment/attachment_actions.rb
150
155
  - app/components/phlex_kit/attachment/attachment_content.rb
151
156
  - app/components/phlex_kit/attachment/attachment_description.rb
157
+ - app/components/phlex_kit/attachment/attachment_group.rb
152
158
  - app/components/phlex_kit/attachment/attachment_media.rb
153
159
  - app/components/phlex_kit/attachment/attachment_title.rb
160
+ - app/components/phlex_kit/attachment/attachment_trigger.rb
154
161
  - app/components/phlex_kit/avatar/avatar.css
155
162
  - app/components/phlex_kit/avatar/avatar.rb
156
163
  - app/components/phlex_kit/avatar/avatar_fallback.rb
@@ -186,6 +193,7 @@ files:
186
193
  - app/components/phlex_kit/calendar/calendar_weekdays.rb
187
194
  - app/components/phlex_kit/card/card.css
188
195
  - app/components/phlex_kit/card/card.rb
196
+ - app/components/phlex_kit/card/card_action.rb
189
197
  - app/components/phlex_kit/card/card_content.rb
190
198
  - app/components/phlex_kit/card/card_description.rb
191
199
  - app/components/phlex_kit/card/card_footer.rb
@@ -286,10 +294,18 @@ files:
286
294
  - app/components/phlex_kit/drawer/drawer_trigger.rb
287
295
  - app/components/phlex_kit/dropdown_menu/dropdown_menu.css
288
296
  - app/components/phlex_kit/dropdown_menu/dropdown_menu.rb
297
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_checkbox_item.rb
289
298
  - app/components/phlex_kit/dropdown_menu/dropdown_menu_content.rb
299
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_group.rb
290
300
  - app/components/phlex_kit/dropdown_menu/dropdown_menu_item.rb
291
301
  - app/components/phlex_kit/dropdown_menu/dropdown_menu_label.rb
302
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_radio_group.rb
303
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_radio_item.rb
292
304
  - app/components/phlex_kit/dropdown_menu/dropdown_menu_separator.rb
305
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_shortcut.rb
306
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_sub.rb
307
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_sub_content.rb
308
+ - app/components/phlex_kit/dropdown_menu/dropdown_menu_sub_trigger.rb
293
309
  - app/components/phlex_kit/dropdown_menu/dropdown_menu_trigger.rb
294
310
  - app/components/phlex_kit/empty/empty.css
295
311
  - app/components/phlex_kit/empty/empty.rb
@@ -309,6 +325,7 @@ files:
309
325
  - app/components/phlex_kit/hover_card/hover_card.rb
310
326
  - app/components/phlex_kit/hover_card/hover_card_content.rb
311
327
  - app/components/phlex_kit/hover_card/hover_card_trigger.rb
328
+ - app/components/phlex_kit/icon/icon.rb
312
329
  - app/components/phlex_kit/input/input.css
313
330
  - app/components/phlex_kit/input/input.rb
314
331
  - app/components/phlex_kit/input_group/input_group.css
@@ -335,6 +352,10 @@ files:
335
352
  - app/components/phlex_kit/label/label.rb
336
353
  - app/components/phlex_kit/link/link.css
337
354
  - app/components/phlex_kit/link/link.rb
355
+ - app/components/phlex_kit/marker/marker.css
356
+ - app/components/phlex_kit/marker/marker.rb
357
+ - app/components/phlex_kit/marker/marker_content.rb
358
+ - app/components/phlex_kit/marker/marker_icon.rb
338
359
  - app/components/phlex_kit/masked_input/masked_input.rb
339
360
  - app/components/phlex_kit/menubar/menubar.css
340
361
  - app/components/phlex_kit/menubar/menubar.rb
@@ -412,11 +433,22 @@ files:
412
433
  - app/components/phlex_kit/sidebar/sidebar_content.rb
413
434
  - app/components/phlex_kit/sidebar/sidebar_footer.rb
414
435
  - app/components/phlex_kit/sidebar/sidebar_group.rb
436
+ - app/components/phlex_kit/sidebar/sidebar_group_action.rb
437
+ - app/components/phlex_kit/sidebar/sidebar_group_content.rb
438
+ - app/components/phlex_kit/sidebar/sidebar_group_label.rb
415
439
  - app/components/phlex_kit/sidebar/sidebar_header.rb
440
+ - app/components/phlex_kit/sidebar/sidebar_input.rb
416
441
  - app/components/phlex_kit/sidebar/sidebar_inset.rb
417
442
  - app/components/phlex_kit/sidebar/sidebar_menu.rb
443
+ - app/components/phlex_kit/sidebar/sidebar_menu_action.rb
444
+ - app/components/phlex_kit/sidebar/sidebar_menu_badge.rb
418
445
  - app/components/phlex_kit/sidebar/sidebar_menu_button.rb
419
446
  - app/components/phlex_kit/sidebar/sidebar_menu_item.rb
447
+ - app/components/phlex_kit/sidebar/sidebar_menu_skeleton.rb
448
+ - app/components/phlex_kit/sidebar/sidebar_menu_sub.rb
449
+ - app/components/phlex_kit/sidebar/sidebar_menu_sub_button.rb
450
+ - app/components/phlex_kit/sidebar/sidebar_menu_sub_item.rb
451
+ - app/components/phlex_kit/sidebar/sidebar_separator.rb
420
452
  - app/components/phlex_kit/sidebar/sidebar_wrapper.rb
421
453
  - app/components/phlex_kit/skeleton/skeleton.css
422
454
  - app/components/phlex_kit/skeleton/skeleton.rb
@@ -424,8 +456,6 @@ files:
424
456
  - app/components/phlex_kit/slider/slider.rb
425
457
  - app/components/phlex_kit/spinner/spinner.css
426
458
  - app/components/phlex_kit/spinner/spinner.rb
427
- - app/components/phlex_kit/stars/stars.css
428
- - app/components/phlex_kit/stars/stars.rb
429
459
  - app/components/phlex_kit/switch/switch.css
430
460
  - app/components/phlex_kit/switch/switch.rb
431
461
  - app/components/phlex_kit/table/table.css
@@ -497,6 +527,7 @@ files:
497
527
  - app/javascript/phlex_kit/controllers/message_scroller_controller.js
498
528
  - app/javascript/phlex_kit/controllers/popover_controller.js
499
529
  - app/javascript/phlex_kit/controllers/resizable_controller.js
530
+ - app/javascript/phlex_kit/controllers/scroll_fade_controller.js
500
531
  - app/javascript/phlex_kit/controllers/select_controller.js
501
532
  - app/javascript/phlex_kit/controllers/select_item_controller.js
502
533
  - app/javascript/phlex_kit/controllers/sheet_content_controller.js
@@ -516,6 +547,11 @@ files:
516
547
  - lib/phlex_kit/base_component.rb
517
548
  - lib/phlex_kit/configuration.rb
518
549
  - lib/phlex_kit/engine.rb
550
+ - lib/phlex_kit/icons.rb
551
+ - lib/phlex_kit/icons/lucide.rb
552
+ - lib/phlex_kit/icons/phosphor.rb
553
+ - lib/phlex_kit/icons/remix.rb
554
+ - lib/phlex_kit/icons/tabler.rb
519
555
  - lib/phlex_kit/propshaft_skip_source.rb
520
556
  - lib/phlex_kit/version.rb
521
557
  homepage: https://github.com/MatthewKennedy/phlex_kit
@@ -541,5 +577,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
541
577
  requirements: []
542
578
  rubygems_version: 4.0.15
543
579
  specification_version: 4
544
- summary: A ruby_ui-style Phlex component kit styled with vanilla CSS and design tokens.
580
+ summary: shadcn/ui-style component system for Phlex, styled with vanilla CSS and design
581
+ tokens.
545
582
  test_files: []
@@ -1,4 +0,0 @@
1
- /* Co-located with stars.rb — UI::Stars. The gold rating glyphs; self-colours so
2
- product cards / summaries get amber stars too (the old `.review .stars` rule
3
- only coloured stars inside a review). Theme tokens come from the global stylesheet. */
4
- .pk-stars { color: var(--pk-amber); letter-spacing: 1px; }
@@ -1,19 +0,0 @@
1
- module PhlexKit
2
- # Star rating (CUSTOM — ruby_ui has no rating component). Replaces the `stars`
3
- # view helper: renders `rating` filled stars + the remainder empty, out of
4
- # `max`. Presentational; attrs pass through via mix. Self-colours (amber) so it
5
- # works anywhere, not just inside a review.
6
- class Stars < BaseComponent
7
- def initialize(rating:, max: 5, **attrs)
8
- @rating = rating.to_i.clamp(0, max)
9
- @max = max
10
- @attrs = attrs
11
- end
12
-
13
- def view_template
14
- span(**mix({ class: "pk-stars", title: "#{@rating}/#{@max}" }, @attrs)) do
15
- plain(("★" * @rating) + ("☆" * (@max - @rating)))
16
- end
17
- end
18
- end
19
- end