stimulus_plumbers 0.3.3 → 0.4.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 (123) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +69 -0
  3. data/README.md +11 -4
  4. data/app/assets/javascripts/stimulus-plumbers/controllers.manifest.json +386 -0
  5. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.es.js +756 -304
  6. data/app/assets/javascripts/stimulus-plumbers/stimulus-plumbers-controllers.umd.js +1 -1
  7. data/app/assets/stylesheets/stimulus_plumbers/tokens.css +66 -26
  8. data/config/locales/en.yml +31 -0
  9. data/lib/stimulus_plumbers/components/avatar.rb +22 -13
  10. data/lib/stimulus_plumbers/components/button/group.rb +9 -4
  11. data/lib/stimulus_plumbers/components/button/slots.rb +11 -0
  12. data/lib/stimulus_plumbers/components/button.rb +30 -34
  13. data/lib/stimulus_plumbers/components/calendar/turbo/days_of_month.rb +191 -0
  14. data/lib/stimulus_plumbers/components/calendar/turbo/days_of_week.rb +62 -0
  15. data/lib/stimulus_plumbers/components/calendar/turbo/months_of_year.rb +137 -0
  16. data/lib/stimulus_plumbers/components/calendar/turbo/years_of_decade.rb +114 -0
  17. data/lib/stimulus_plumbers/components/calendar/turbo.rb +112 -0
  18. data/lib/stimulus_plumbers/components/calendar.rb +57 -32
  19. data/lib/stimulus_plumbers/components/card/slots.rb +26 -0
  20. data/lib/stimulus_plumbers/components/card.rb +53 -13
  21. data/lib/stimulus_plumbers/components/combobox/builder.rb +45 -0
  22. data/lib/stimulus_plumbers/components/combobox/date/navigation.rb +80 -0
  23. data/lib/stimulus_plumbers/components/combobox/date/navigator.rb +27 -0
  24. data/lib/stimulus_plumbers/components/combobox/date.rb +55 -28
  25. data/lib/stimulus_plumbers/components/combobox/dropdown.rb +27 -24
  26. data/lib/stimulus_plumbers/components/combobox/options/option.rb +1 -1
  27. data/lib/stimulus_plumbers/components/combobox/options/option_group.rb +1 -1
  28. data/lib/stimulus_plumbers/components/combobox/time.rb +83 -78
  29. data/lib/stimulus_plumbers/components/combobox/trigger.rb +17 -12
  30. data/lib/stimulus_plumbers/components/combobox/typeahead.rb +63 -16
  31. data/lib/stimulus_plumbers/components/combobox.rb +58 -38
  32. data/lib/stimulus_plumbers/components/divider.rb +9 -8
  33. data/lib/stimulus_plumbers/components/icon.rb +5 -1
  34. data/lib/stimulus_plumbers/components/input_group.rb +2 -2
  35. data/lib/stimulus_plumbers/components/link/slots.rb +11 -0
  36. data/lib/stimulus_plumbers/components/link.rb +63 -0
  37. data/lib/stimulus_plumbers/components/list/item/slots.rb +13 -0
  38. data/lib/stimulus_plumbers/components/list/item.rb +83 -0
  39. data/lib/stimulus_plumbers/components/list/section.rb +73 -0
  40. data/lib/stimulus_plumbers/components/list.rb +31 -0
  41. data/lib/stimulus_plumbers/components/popover/panel.rb +32 -0
  42. data/lib/stimulus_plumbers/components/popover/trigger.rb +27 -0
  43. data/lib/stimulus_plumbers/components/popover.rb +44 -18
  44. data/lib/stimulus_plumbers/components/timeline/event/slots.rb +18 -0
  45. data/lib/stimulus_plumbers/components/timeline/event.rb +189 -0
  46. data/lib/stimulus_plumbers/components/timeline/group.rb +42 -0
  47. data/lib/stimulus_plumbers/components/timeline.rb +40 -0
  48. data/lib/stimulus_plumbers/engine.rb +1 -0
  49. data/lib/stimulus_plumbers/form/base.rb +103 -0
  50. data/lib/stimulus_plumbers/form/builder.rb +78 -23
  51. data/lib/stimulus_plumbers/form/field.rb +55 -88
  52. data/lib/stimulus_plumbers/form/fields/error.rb +1 -1
  53. data/lib/stimulus_plumbers/form/fields/fieldset.rb +11 -8
  54. data/lib/stimulus_plumbers/form/fields/hint.rb +1 -1
  55. data/lib/stimulus_plumbers/form/fields/inputs/checkbox.rb +115 -0
  56. data/lib/stimulus_plumbers/form/fields/inputs/combobox.rb +24 -0
  57. data/lib/stimulus_plumbers/form/fields/inputs/datetime.rb +52 -58
  58. data/lib/stimulus_plumbers/form/fields/inputs/file.rb +15 -9
  59. data/lib/stimulus_plumbers/form/fields/inputs/password.rb +46 -28
  60. data/lib/stimulus_plumbers/form/fields/inputs/radio.rb +72 -0
  61. data/lib/stimulus_plumbers/form/fields/inputs/search.rb +73 -65
  62. data/lib/stimulus_plumbers/form/fields/inputs/select/grouped.rb +22 -33
  63. data/lib/stimulus_plumbers/form/fields/inputs/select/timezone.rb +3 -46
  64. data/lib/stimulus_plumbers/form/fields/inputs/select/weekday.rb +3 -26
  65. data/lib/stimulus_plumbers/form/fields/inputs/select.rb +64 -61
  66. data/lib/stimulus_plumbers/form/fields/inputs/submit.rb +10 -7
  67. data/lib/stimulus_plumbers/form/fields/inputs/text.rb +34 -22
  68. data/lib/stimulus_plumbers/form/fields/inputs/text_area.rb +15 -9
  69. data/lib/stimulus_plumbers/form/fields/label/floating.rb +41 -0
  70. data/lib/stimulus_plumbers/form/fields/label.rb +9 -3
  71. data/lib/stimulus_plumbers/form/fields/renderer.rb +39 -0
  72. data/lib/stimulus_plumbers/helpers/button_helper.rb +1 -1
  73. data/lib/stimulus_plumbers/helpers/calendar_helper.rb +2 -2
  74. data/lib/stimulus_plumbers/helpers/calendar_turbo_helper.rb +76 -4
  75. data/lib/stimulus_plumbers/helpers/card_helper.rb +1 -11
  76. data/lib/stimulus_plumbers/helpers/combobox_helper.rb +27 -60
  77. data/lib/stimulus_plumbers/helpers/icon_helper.rb +11 -0
  78. data/lib/stimulus_plumbers/helpers/link_helper.rb +11 -0
  79. data/lib/stimulus_plumbers/helpers/list_helper.rb +11 -0
  80. data/lib/stimulus_plumbers/helpers/plumber_helper.rb +3 -6
  81. data/lib/stimulus_plumbers/helpers/timeline_helper.rb +15 -0
  82. data/lib/stimulus_plumbers/helpers.rb +8 -2
  83. data/lib/stimulus_plumbers/logger.rb +4 -3
  84. data/lib/stimulus_plumbers/plumber/base.rb +6 -1
  85. data/lib/stimulus_plumbers/plumber/dispatcher/klass_proxy.rb +4 -3
  86. data/lib/stimulus_plumbers/plumber/dispatcher/method_call.rb +4 -3
  87. data/lib/stimulus_plumbers/plumber/dispatcher.rb +4 -4
  88. data/lib/stimulus_plumbers/plumber/options/aria.rb +17 -0
  89. data/lib/stimulus_plumbers/plumber/options/html.rb +29 -0
  90. data/lib/stimulus_plumbers/plumber/options/stimulus.rb +29 -0
  91. data/lib/stimulus_plumbers/plumber/options/theme.rb +19 -0
  92. data/lib/stimulus_plumbers/plumber/options/token_list.rb +29 -0
  93. data/lib/stimulus_plumbers/plumber/renderer.rb +136 -41
  94. data/lib/stimulus_plumbers/plumber/slots.rb +74 -0
  95. data/lib/stimulus_plumbers/themes/base.rb +6 -7
  96. data/lib/stimulus_plumbers/themes/schema/avatar/ranges.rb +13 -0
  97. data/lib/stimulus_plumbers/themes/schema/button/ranges.rb +16 -0
  98. data/lib/stimulus_plumbers/themes/schema/card/ranges.rb +13 -0
  99. data/lib/stimulus_plumbers/themes/schema/form/checkbox/ranges.rb +16 -0
  100. data/lib/stimulus_plumbers/themes/schema/form/floating/ranges.rb +15 -0
  101. data/lib/stimulus_plumbers/themes/schema/form/radio/ranges.rb +16 -0
  102. data/lib/stimulus_plumbers/themes/schema/form/ranges.rb +1 -2
  103. data/lib/stimulus_plumbers/themes/schema/link/ranges.rb +14 -0
  104. data/lib/stimulus_plumbers/themes/schema/ranges.rb +1 -5
  105. data/lib/stimulus_plumbers/themes/schema.rb +169 -51
  106. data/lib/stimulus_plumbers/version.rb +1 -1
  107. data/lib/stimulus_plumbers.rb +24 -16
  108. metadata +48 -16
  109. data/lib/stimulus_plumbers/components/action_list/item.rb +0 -30
  110. data/lib/stimulus_plumbers/components/action_list/section.rb +0 -28
  111. data/lib/stimulus_plumbers/components/action_list.rb +0 -29
  112. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_month.rb +0 -149
  113. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_week.rb +0 -43
  114. data/lib/stimulus_plumbers/components/calendar/month/turbo.rb +0 -59
  115. data/lib/stimulus_plumbers/components/card/section.rb +0 -31
  116. data/lib/stimulus_plumbers/components/combobox/popover.rb +0 -47
  117. data/lib/stimulus_plumbers/components/combobox/time/drum.rb +0 -43
  118. data/lib/stimulus_plumbers/components/date_picker/navigation.rb +0 -41
  119. data/lib/stimulus_plumbers/components/date_picker/navigator.rb +0 -23
  120. data/lib/stimulus_plumbers/components/popover/builder.rb +0 -25
  121. data/lib/stimulus_plumbers/form/fields/inputs/choice.rb +0 -69
  122. data/lib/stimulus_plumbers/helpers/action_list_helper.rb +0 -25
  123. data/lib/stimulus_plumbers/plumber/html_options.rb +0 -52
@@ -7,7 +7,7 @@ module StimulusPlumbers
7
7
  module Themes
8
8
  class Base
9
9
  SCHEMA = {
10
- **Schema::ACTION_LIST,
10
+ **Schema::LIST,
11
11
  **Schema::AVATAR,
12
12
  **Schema::BUTTON,
13
13
  **Schema::CALENDAR,
@@ -16,18 +16,20 @@ module StimulusPlumbers
16
16
  **Schema::FORM,
17
17
  **Schema::ICON,
18
18
  **Schema::INPUT_GROUP,
19
- **Schema::LAYOUT
19
+ **Schema::LAYOUT,
20
+ **Schema::LINK,
21
+ **Schema::TIMELINE
20
22
  }.freeze
21
23
 
22
24
  def name
23
25
  @name ||= self.class.name.demodulize.delete_suffix("Theme")
24
26
  end
25
27
 
26
- def avatar_colors
28
+ def avatar_variants
27
29
  {}
28
30
  end
29
31
 
30
- def avatar_color_range
32
+ def avatar_variant_range
31
33
  []
32
34
  end
33
35
 
@@ -39,9 +41,6 @@ module StimulusPlumbers
39
41
  SCHEMA.fetch(component, {}).keys
40
42
  end
41
43
 
42
- # Resolves presentational classes for a component slot.
43
- # Returns a Hash with :classes (String) and optionally :style (String).
44
- # Returns {} when no mapping exists for the given component.
45
44
  def resolve(component, **args)
46
45
  method_name = :"#{component}_classes"
47
46
  unless respond_to?(method_name, true)
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Avatar
7
+ module Ranges
8
+ SIZE = %i[xs sm md lg xl].freeze
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Button
7
+ module Ranges
8
+ TYPE = %i[default outline ghost fab fab_outline dashed card].freeze
9
+ SIZE = %i[xs sm md lg xl].freeze
10
+ LAYOUT = %i[stacked inline].freeze
11
+ VARIANT = %i[primary secondary tertiary success destructive warning info].freeze
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Card
7
+ module Ranges
8
+ VARIANT = %i[primary secondary tertiary success destructive warning info].freeze
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Form
7
+ module Checkbox
8
+ module Ranges
9
+ TYPE = %i[default button card].freeze
10
+ VARIANT = %i[primary secondary tertiary success destructive warning info].freeze
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Form
7
+ module Floating
8
+ module Ranges
9
+ TYPE = %i[standard filled outlined].freeze
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Form
7
+ module Radio
8
+ module Ranges
9
+ TYPE = %i[default button card].freeze
10
+ VARIANT = %i[primary secondary tertiary success destructive warning info].freeze
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -5,8 +5,7 @@ module StimulusPlumbers
5
5
  module Schema
6
6
  module Form
7
7
  module Ranges
8
- LAYOUT = %i[stacked inline].freeze
9
- SUBMIT_VARIANT = %i[default button].freeze
8
+ LAYOUT = %i[stacked inline].freeze
10
9
  end
11
10
  end
12
11
  end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Schema
6
+ module Link
7
+ module Ranges
8
+ TYPE = %i[default button card].freeze
9
+ VARIANT = %i[default success destructive warning info].freeze
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -4,11 +4,7 @@ module StimulusPlumbers
4
4
  module Themes
5
5
  module Schema
6
6
  module Ranges
7
- BOOL = [true, false].freeze
8
- SIZE = %i[xs sm md lg xl].freeze
9
- FLEX_ALIGN = %i[left center right top bottom].freeze
10
- FLEX_DIRECTION = %i[row col].freeze
11
- BUTTON_VARIANT = %i[primary secondary outline destructive ghost link fab dashed].freeze
7
+ BOOL = [true, false].freeze
12
8
  end
13
9
  end
14
10
  end
@@ -1,96 +1,170 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "../form/field"
3
4
  require_relative "schema/ranges"
5
+ require_relative "schema/avatar/ranges"
6
+ require_relative "schema/button/ranges"
7
+ require_relative "schema/card/ranges"
8
+ require_relative "schema/link/ranges"
4
9
  require_relative "schema/form/ranges"
10
+ require_relative "schema/form/checkbox/ranges"
11
+ require_relative "schema/form/floating/ranges"
12
+ require_relative "schema/form/radio/ranges"
5
13
  require_relative "schema/icon"
6
14
 
7
15
  module StimulusPlumbers
8
16
  module Themes
9
17
  module Schema
10
- ACTION_LIST = {
11
- action_list_item: {
12
- active: { default: false, validate: Ranges::BOOL }
13
- }.freeze,
14
- action_list: {}.freeze
18
+ LIST = {
19
+ list: {}.freeze,
20
+ list_section: {}.freeze,
21
+ list_section_title: {}.freeze,
22
+ list_section_description: {}.freeze,
23
+ list_item: {}.freeze,
24
+ list_item_icon: {}.freeze,
25
+ list_item_content: {}.freeze,
26
+ list_item_title: {}.freeze,
27
+ list_item_description: {}.freeze
15
28
  }.freeze
16
29
 
17
30
  AVATAR = {
18
- avatar: {
19
- size: { default: :md, validate: Ranges::SIZE },
20
- color: { default: nil, validate: :avatar_color_range }
21
- }.freeze
31
+ avatar: {
32
+ size: { default: :md, validate: Avatar::Ranges::SIZE },
33
+ variant: { default: nil, validate: :avatar_variant_range }
34
+ }.freeze,
35
+ avatar_image: {}.freeze
22
36
  }.freeze
23
37
 
24
38
  BUTTON = {
25
39
  button: {
26
- variant: { default: :primary, validate: Ranges::BUTTON_VARIANT },
27
- size: { default: :md, validate: Ranges::SIZE }
40
+ type: { default: :default, validate: Button::Ranges::TYPE },
41
+ variant: { default: :primary, validate: Button::Ranges::VARIANT },
42
+ size: { default: :md, validate: Button::Ranges::SIZE }
28
43
  }.freeze,
29
44
  button_group: {
30
- alignment: { default: :left, validate: Ranges::FLEX_ALIGN },
31
- direction: { default: :row, validate: Ranges::FLEX_DIRECTION }
45
+ layout: { default: :inline, validate: Button::Ranges::LAYOUT }
32
46
  }.freeze,
33
47
  button_icon: {}.freeze
34
48
  }.freeze
35
49
 
36
50
  CALENDAR = {
37
- calendar: {}.freeze,
38
- calendar_days_of_week: {}.freeze,
39
- calendar_week: {}.freeze,
40
- calendar_days_of_month: {}.freeze,
41
- calendar_day: {
51
+ calendar: {}.freeze,
52
+ calendar_days_of_week: {}.freeze,
53
+ calendar_days_of_month: {}.freeze,
54
+ calendar_months_of_year: {}.freeze,
55
+ calendar_years_of_decade: {}.freeze,
56
+ calendar_row: {}.freeze,
57
+ calendar_day: {
42
58
  today: { default: false, validate: Ranges::BOOL },
43
59
  selected: { default: false, validate: Ranges::BOOL },
44
60
  outside: { default: false, validate: Ranges::BOOL }
45
61
  }.freeze,
46
- calendar_navigation: {}.freeze,
47
- calendar_navigation_navigator: {}.freeze
62
+ calendar_month: {
63
+ outside: { default: false, validate: Ranges::BOOL }
64
+ }.freeze,
65
+ calendar_year: {
66
+ outside: { default: false, validate: Ranges::BOOL }
67
+ }.freeze,
68
+ calendar_quarter_grid: {}.freeze
48
69
  }.freeze
49
70
 
50
71
  CARD = {
51
- card: {}.freeze,
52
- card_section: {}.freeze
72
+ card: { variant: { default: :tertiary, validate: Card::Ranges::VARIANT } }.freeze,
73
+ card_header: {}.freeze,
74
+ card_icon: {}.freeze,
75
+ card_title: {}.freeze,
76
+ card_body: {}.freeze,
77
+ card_action: {}.freeze
53
78
  }.freeze
54
79
 
55
80
  COMBOBOX = {
56
- combobox_trigger: {}.freeze,
57
- combobox_trigger_group: {}.freeze,
58
- combobox_option: {
81
+ combobox: {}.freeze,
82
+ combobox_popover: {}.freeze,
83
+ combobox_trigger: {}.freeze,
84
+ combobox_trigger_icon: {}.freeze,
85
+ combobox_trigger_group: {}.freeze,
86
+ combobox_option: {
59
87
  selected: { default: false, validate: Ranges::BOOL },
60
88
  disabled: { default: false, validate: Ranges::BOOL }
61
89
  }.freeze,
62
- combobox_option_group: {}.freeze,
63
- combobox_listbox: {}.freeze,
64
- combobox_typeahead_loading: {}.freeze,
65
- combobox_typeahead_empty: {}.freeze,
66
- combobox_time: {}.freeze
90
+ combobox_option_group: {}.freeze,
91
+ combobox_listbox: {}.freeze,
92
+ combobox_typeahead_loading: {}.freeze,
93
+ combobox_typeahead_loading_icon: {}.freeze,
94
+ combobox_typeahead_empty: {}.freeze,
95
+ combobox_time: {}.freeze,
96
+ combobox_time_drum: { type: { default: :unit, validate: %i[unit period] } }.freeze,
97
+ combobox_date_navigation: {}.freeze,
98
+ combobox_date_navigation_navigator: {}.freeze,
99
+ combobox_date_navigation_title: {}.freeze
67
100
  }.freeze
68
101
 
69
102
  FORM = {
70
- form_group: {
103
+ form_group: {
71
104
  layout: { default: :stacked, validate: Form::Ranges::LAYOUT },
72
105
  error: { default: false, validate: Ranges::BOOL }
73
106
  }.freeze,
74
- form_label: {
107
+ form_field_label: {
75
108
  required: { default: false, validate: Ranges::BOOL },
76
- hidden: { default: false, validate: Ranges::BOOL }
77
- }.freeze,
78
- form_required_mark: {}.freeze,
79
- form_details: {}.freeze,
80
- form_error: {}.freeze,
81
- form_input: { error: { default: false, validate: Ranges::BOOL } }.freeze,
82
- form_textarea: { error: { default: false, validate: Ranges::BOOL } }.freeze,
83
- form_file: { error: { default: false, validate: Ranges::BOOL } }.freeze,
84
- form_select: { error: { default: false, validate: Ranges::BOOL } }.freeze,
85
- form_checkbox: { error: { default: false, validate: Ranges::BOOL } }.freeze,
86
- form_radio: { error: { default: false, validate: Ranges::BOOL } }.freeze,
87
- form_combobox: { error: { default: false, validate: Ranges::BOOL } }.freeze,
88
- form_input_reveal: { error: { default: false, validate: Ranges::BOOL } }.freeze,
89
- form_input_clearable: {}.freeze,
90
- form_button_reveal: {}.freeze,
91
- form_button_clear: {}.freeze,
92
- form_submit: {
93
- variant: { default: :default, validate: Form::Ranges::SUBMIT_VARIANT }
109
+ hidden: { default: false, validate: Ranges::BOOL },
110
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] },
111
+ error: { default: false, validate: Ranges::BOOL }
112
+ }.freeze,
113
+ form_field_required_mark: {}.freeze,
114
+ form_field_hint: {}.freeze,
115
+ form_field_error: {}.freeze,
116
+ form_field_choice_items: {
117
+ layout: { default: :stacked, validate: Form::Ranges::LAYOUT }
118
+ }.freeze,
119
+ form_field_checkbox_label: {
120
+ type: { default: :default, validate: Form::Checkbox::Ranges::TYPE },
121
+ variant: { default: :tertiary, validate: Form::Checkbox::Ranges::VARIANT }
122
+ }.freeze,
123
+ form_field_radio_label: {
124
+ type: { default: :default, validate: Form::Radio::Ranges::TYPE },
125
+ variant: { default: :tertiary, validate: Form::Radio::Ranges::VARIANT }
126
+ }.freeze,
127
+ form_field_radio_item_group: {}.freeze,
128
+ form_field_input: {
129
+ error: { default: false, validate: Ranges::BOOL },
130
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
131
+ }.freeze,
132
+ form_field_input_group: {
133
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
134
+ }.freeze,
135
+ form_field_input_textarea: {
136
+ error: { default: false, validate: Ranges::BOOL },
137
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
138
+ }.freeze,
139
+ form_field_input_file: {
140
+ error: { default: false, validate: Ranges::BOOL },
141
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
142
+ }.freeze,
143
+ form_field_input_select: {
144
+ error: { default: false, validate: Ranges::BOOL },
145
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
146
+ }.freeze,
147
+ form_field_input_checkbox: {
148
+ error: { default: false, validate: Ranges::BOOL },
149
+ type: { default: :default, validate: Form::Checkbox::Ranges::TYPE },
150
+ variant: { default: :tertiary, validate: Form::Checkbox::Ranges::VARIANT }
151
+ }.freeze,
152
+ form_field_input_radio: {
153
+ error: { default: false, validate: Ranges::BOOL },
154
+ type: { default: :default, validate: Form::Radio::Ranges::TYPE },
155
+ variant: { default: :tertiary, validate: Form::Radio::Ranges::VARIANT }
156
+ }.freeze,
157
+ form_field_input_combobox: {
158
+ error: { default: false, validate: Ranges::BOOL },
159
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
160
+ }.freeze,
161
+ form_field_input_reveal: { error: { default: false, validate: Ranges::BOOL } }.freeze,
162
+ form_field_input_clearable: {}.freeze,
163
+ form_field_input_button_reveal: {}.freeze,
164
+ form_field_input_button_clear: {}.freeze,
165
+ form_submit: {
166
+ type: { default: :default, validate: Button::Ranges::TYPE },
167
+ variant: { default: :primary, validate: Button::Ranges::VARIANT }
94
168
  }.freeze
95
169
  }.freeze
96
170
 
@@ -99,15 +173,59 @@ module StimulusPlumbers
99
173
  }.freeze
100
174
 
101
175
  INPUT_GROUP = {
102
- input_group: { error: { default: false, validate: Ranges::BOOL } }.freeze
176
+ input_group: {
177
+ error: { default: false, validate: Ranges::BOOL },
178
+ floating: { default: nil, validate: [nil, *Form::Floating::Ranges::TYPE] }
179
+ }.freeze
180
+ }.freeze
181
+
182
+ LINK = {
183
+ link: {
184
+ type: { default: :default, validate: Link::Ranges::TYPE },
185
+ variant: { default: :default, validate: Link::Ranges::VARIANT }
186
+ }.freeze,
187
+ link_icon: {}.freeze
103
188
  }.freeze
104
189
 
105
190
  LAYOUT = {
106
191
  divider: {}.freeze,
107
192
  divider_separator: {}.freeze,
108
193
  divider_label: {}.freeze,
194
+ popover_wrapper: {}.freeze,
195
+ popover_trigger: {}.freeze,
109
196
  popover: {}.freeze
110
197
  }.freeze
198
+
199
+ TIMELINE = {
200
+ timeline: {
201
+ orientation: { default: :vertical, validate: %i[vertical horizontal] }
202
+ }.freeze,
203
+ timeline_item: {
204
+ orientation: { default: :vertical, validate: %i[vertical horizontal] }
205
+ }.freeze,
206
+ timeline_item_indicator: {
207
+ type: { default: :dot, validate: %i[dot icon] },
208
+ orientation: { default: :vertical, validate: %i[vertical horizontal] }
209
+ }.freeze,
210
+ timeline_item_time: {
211
+ type: { default: :default, validate: %i[default badge] }
212
+ }.freeze,
213
+ timeline_item_title: {}.freeze,
214
+ timeline_item_heading: {}.freeze,
215
+ timeline_item_trigger: {}.freeze,
216
+ timeline_item_description: {}.freeze,
217
+ timeline_item_detail: {}.freeze,
218
+ timeline_item_actions: {}.freeze,
219
+ timeline_item_indicator_dot: {}.freeze,
220
+ timeline_item_connector: {}.freeze,
221
+ timeline_item_content: {}.freeze,
222
+ timeline_track_line: {}.freeze,
223
+ timeline_item_indicator_icon_slot: {}.freeze,
224
+ timeline_group: {}.freeze,
225
+ timeline_group_section: {}.freeze,
226
+ timeline_group_section_date: {}.freeze,
227
+ timeline_group_section_list: {}.freeze
228
+ }.freeze
111
229
  end
112
230
  end
113
231
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module StimulusPlumbers
4
- VERSION = "0.3.3"
4
+ VERSION = "0.4.2"
5
5
  end
@@ -11,48 +11,55 @@ require_relative "stimulus_plumbers/helpers"
11
11
  require_relative "stimulus_plumbers/logger"
12
12
 
13
13
  # -- Plumber base --
14
- require_relative "stimulus_plumbers/plumber/html_options"
15
14
  require_relative "stimulus_plumbers/plumber/dispatcher"
16
- require_relative "stimulus_plumbers/plumber/renderer"
15
+ require_relative "stimulus_plumbers/plumber/slots"
17
16
  require_relative "stimulus_plumbers/plumber/base"
18
17
 
19
18
  # -- UI components --
20
19
  require_relative "stimulus_plumbers/components/icon"
21
20
  require_relative "stimulus_plumbers/components/avatar"
22
21
  require_relative "stimulus_plumbers/components/button"
22
+ require_relative "stimulus_plumbers/components/button/slots"
23
23
  require_relative "stimulus_plumbers/components/button/group"
24
+ require_relative "stimulus_plumbers/components/link"
25
+ require_relative "stimulus_plumbers/components/link/slots"
24
26
  require_relative "stimulus_plumbers/components/card"
25
- require_relative "stimulus_plumbers/components/card/section"
26
- require_relative "stimulus_plumbers/components/action_list"
27
- require_relative "stimulus_plumbers/components/action_list/section"
28
- require_relative "stimulus_plumbers/components/action_list/item"
27
+ require_relative "stimulus_plumbers/components/card/slots"
28
+ require_relative "stimulus_plumbers/components/list"
29
+ require_relative "stimulus_plumbers/components/list/section"
30
+ require_relative "stimulus_plumbers/components/list/item"
31
+ require_relative "stimulus_plumbers/components/list/item/slots"
32
+ require_relative "stimulus_plumbers/components/timeline"
33
+ require_relative "stimulus_plumbers/components/timeline/event"
34
+ require_relative "stimulus_plumbers/components/timeline/event/slots"
35
+ require_relative "stimulus_plumbers/components/timeline/group"
29
36
  require_relative "stimulus_plumbers/components/divider"
30
37
  require_relative "stimulus_plumbers/components/input_group"
31
38
  require_relative "stimulus_plumbers/components/popover"
32
- require_relative "stimulus_plumbers/components/popover/builder"
39
+ require_relative "stimulus_plumbers/components/popover/trigger"
40
+ require_relative "stimulus_plumbers/components/popover/panel"
33
41
 
34
42
  # -- Calendar --
35
43
  require_relative "stimulus_plumbers/components/calendar"
36
- require_relative "stimulus_plumbers/components/calendar/month/turbo"
37
- require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_week"
38
- require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_month"
39
-
40
- # -- Date picker --
41
- require_relative "stimulus_plumbers/components/date_picker/navigator"
42
- require_relative "stimulus_plumbers/components/date_picker/navigation"
44
+ require_relative "stimulus_plumbers/components/calendar/turbo"
45
+ require_relative "stimulus_plumbers/components/calendar/turbo/days_of_week"
46
+ require_relative "stimulus_plumbers/components/calendar/turbo/days_of_month"
47
+ require_relative "stimulus_plumbers/components/calendar/turbo/months_of_year"
48
+ require_relative "stimulus_plumbers/components/calendar/turbo/years_of_decade"
43
49
 
44
50
  # -- Combobox --
45
51
  require_relative "stimulus_plumbers/components/combobox"
46
52
  require_relative "stimulus_plumbers/components/combobox/trigger"
47
- require_relative "stimulus_plumbers/components/combobox/popover"
48
53
  require_relative "stimulus_plumbers/components/combobox/options"
49
54
  require_relative "stimulus_plumbers/components/combobox/options/option"
50
55
  require_relative "stimulus_plumbers/components/combobox/options/option_group"
51
56
  require_relative "stimulus_plumbers/components/combobox/date"
57
+ require_relative "stimulus_plumbers/components/combobox/date/navigator"
58
+ require_relative "stimulus_plumbers/components/combobox/date/navigation"
52
59
  require_relative "stimulus_plumbers/components/combobox/dropdown"
53
60
  require_relative "stimulus_plumbers/components/combobox/typeahead"
54
61
  require_relative "stimulus_plumbers/components/combobox/time"
55
- require_relative "stimulus_plumbers/components/combobox/time/drum"
62
+ require_relative "stimulus_plumbers/components/combobox/builder"
56
63
 
57
64
  # -- Form --
58
65
  require_relative "stimulus_plumbers/form/field"
@@ -60,6 +67,7 @@ require_relative "stimulus_plumbers/form/fields/error"
60
67
  require_relative "stimulus_plumbers/form/fields/group"
61
68
  require_relative "stimulus_plumbers/form/fields/hint"
62
69
  require_relative "stimulus_plumbers/form/fields/label"
70
+ require_relative "stimulus_plumbers/form/fields/label/floating"
63
71
  require_relative "stimulus_plumbers/form/builder"
64
72
 
65
73
  module StimulusPlumbers