stimulus_plumbers 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 (62) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +75 -0
  3. data/app/assets/javascripts/stimulus-plumbers/.keep +0 -0
  4. data/app/assets/stylesheets/stimulus_plumbers/tokens.css +83 -0
  5. data/lib/stimulus_plumbers/components/action_list/renderer.rb +47 -0
  6. data/lib/stimulus_plumbers/components/avatar/renderer.rb +74 -0
  7. data/lib/stimulus_plumbers/components/button/renderer.rb +33 -0
  8. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_month.rb +124 -0
  9. data/lib/stimulus_plumbers/components/calendar/month/turbo/days_of_week.rb +36 -0
  10. data/lib/stimulus_plumbers/components/calendar/month/turbo/renderer.rb +57 -0
  11. data/lib/stimulus_plumbers/components/calendar/renderer.rb +35 -0
  12. data/lib/stimulus_plumbers/components/card/renderer.rb +41 -0
  13. data/lib/stimulus_plumbers/components/date_picker/navigation.rb +49 -0
  14. data/lib/stimulus_plumbers/components/date_picker/navigator.rb +31 -0
  15. data/lib/stimulus_plumbers/components/date_picker/renderer.rb +82 -0
  16. data/lib/stimulus_plumbers/components/icon/renderer.rb +51 -0
  17. data/lib/stimulus_plumbers/components/plumber/base.rb +22 -0
  18. data/lib/stimulus_plumbers/components/plumber/dispatcher.rb +113 -0
  19. data/lib/stimulus_plumbers/components/plumber/html_options.rb +34 -0
  20. data/lib/stimulus_plumbers/components/plumber/renderer.rb +91 -0
  21. data/lib/stimulus_plumbers/components/popover/renderer.rb +46 -0
  22. data/lib/stimulus_plumbers/configuration.rb +39 -0
  23. data/lib/stimulus_plumbers/engine.rb +21 -0
  24. data/lib/stimulus_plumbers/form/builder.rb +67 -0
  25. data/lib/stimulus_plumbers/form/field_component.rb +80 -0
  26. data/lib/stimulus_plumbers/form/fields/choice.rb +25 -0
  27. data/lib/stimulus_plumbers/form/fields/file.rb +16 -0
  28. data/lib/stimulus_plumbers/form/fields/renderer.rb +57 -0
  29. data/lib/stimulus_plumbers/form/fields/select.rb +27 -0
  30. data/lib/stimulus_plumbers/form/fields/text.rb +25 -0
  31. data/lib/stimulus_plumbers/form/fields/text_area.rb +16 -0
  32. data/lib/stimulus_plumbers/helpers/action_list_helper.rb +25 -0
  33. data/lib/stimulus_plumbers/helpers/avatar_helper.rb +17 -0
  34. data/lib/stimulus_plumbers/helpers/button_helper.rb +25 -0
  35. data/lib/stimulus_plumbers/helpers/calendar_helper.rb +26 -0
  36. data/lib/stimulus_plumbers/helpers/calendar_turbo_helper.rb +31 -0
  37. data/lib/stimulus_plumbers/helpers/card_helper.rb +21 -0
  38. data/lib/stimulus_plumbers/helpers/date_picker_helper.rb +17 -0
  39. data/lib/stimulus_plumbers/helpers/plumber_helper.rb +15 -0
  40. data/lib/stimulus_plumbers/helpers/popover_helper.rb +17 -0
  41. data/lib/stimulus_plumbers/helpers.rb +25 -0
  42. data/lib/stimulus_plumbers/logger.rb +20 -0
  43. data/lib/stimulus_plumbers/themes/action_list.rb +14 -0
  44. data/lib/stimulus_plumbers/themes/avatar.rb +14 -0
  45. data/lib/stimulus_plumbers/themes/base.rb +73 -0
  46. data/lib/stimulus_plumbers/themes/button.rb +18 -0
  47. data/lib/stimulus_plumbers/themes/calendar.rb +15 -0
  48. data/lib/stimulus_plumbers/themes/card.rb +12 -0
  49. data/lib/stimulus_plumbers/themes/form.rb +30 -0
  50. data/lib/stimulus_plumbers/themes/layout.rb +12 -0
  51. data/lib/stimulus_plumbers/themes/schema/ranges.rb +15 -0
  52. data/lib/stimulus_plumbers/themes/tailwind/action_list.rb +33 -0
  53. data/lib/stimulus_plumbers/themes/tailwind/avatar.rb +52 -0
  54. data/lib/stimulus_plumbers/themes/tailwind/button.rb +89 -0
  55. data/lib/stimulus_plumbers/themes/tailwind/calendar.rb +34 -0
  56. data/lib/stimulus_plumbers/themes/tailwind/card.rb +24 -0
  57. data/lib/stimulus_plumbers/themes/tailwind/form.rb +104 -0
  58. data/lib/stimulus_plumbers/themes/tailwind/layout.rb +25 -0
  59. data/lib/stimulus_plumbers/themes/tailwind_theme.rb +29 -0
  60. data/lib/stimulus_plumbers/version.rb +5 -0
  61. data/lib/stimulus_plumbers.rb +48 -0
  62. metadata +129 -0
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Avatar
7
+ COLORS = {
8
+ amber: "text-white bg-amber-600",
9
+ lime: "text-white bg-lime-600",
10
+ sky: "text-white bg-sky-600",
11
+ cyan: "text-white bg-cyan-600",
12
+ teal: "text-white bg-teal-600",
13
+ emerald: "text-white bg-emerald-600",
14
+ indigo: "text-white bg-indigo-600",
15
+ fuchsia: "text-white bg-fuchsia-600",
16
+ rose: "text-white bg-rose-600",
17
+ pink: "text-white bg-pink-600",
18
+ violet: "text-white bg-violet-600",
19
+ blue: "text-white bg-blue-600"
20
+ }.freeze
21
+
22
+ SIZES = {
23
+ sm: "size-[--sp-icon-size]",
24
+ md: "size-[--sp-avatar-size]",
25
+ lg: "size-12"
26
+ }.freeze
27
+
28
+ BASE = %w[rounded-[--sp-radius-full] overflow-hidden inline-flex items-center justify-center].freeze
29
+
30
+ def avatar_colors
31
+ COLORS
32
+ end
33
+
34
+ def avatar_color_range
35
+ COLORS.values
36
+ end
37
+
38
+ private
39
+
40
+ def avatar_classes(size: :md, color: nil)
41
+ {
42
+ classes: klasses(
43
+ SIZES.fetch(size, SIZES[:md]),
44
+ COLORS.fetch(color, nil),
45
+ *BASE
46
+ )
47
+ }
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Button
7
+ VARIANTS = {
8
+ primary: %w[
9
+ bg-[--sp-color-primary]
10
+ text-[--sp-color-primary-fg]
11
+ hover:bg-[--sp-color-primary]/90
12
+ focus-visible:ring-[--sp-focus-ring-color]
13
+ ].freeze,
14
+ secondary: %w[
15
+ bg-[--sp-color-muted]
16
+ text-[--sp-color-fg]
17
+ hover:bg-[--sp-color-border]
18
+ ].freeze,
19
+ outline: %w[
20
+ border border-[--sp-color-border]
21
+ bg-transparent
22
+ text-[--sp-color-fg]
23
+ hover:bg-[--sp-color-muted]
24
+ ].freeze,
25
+ destructive: %w[
26
+ bg-[--sp-color-destructive]
27
+ text-[--sp-color-destructive-fg]
28
+ hover:bg-[--sp-color-destructive]/90
29
+ ].freeze,
30
+ ghost: %w[hover:bg-[--sp-color-muted] text-[--sp-color-fg]].freeze,
31
+ link: %w[text-[--sp-color-primary] underline-offset-4 hover:underline].freeze
32
+ }.freeze
33
+
34
+ SIZES = {
35
+ sm: %w[h-8 px-[--sp-space-3] text-[--sp-text-sm]].freeze,
36
+ md: %w[h-9 px-[--sp-space-4] text-[--sp-text-base]].freeze,
37
+ lg: %w[h-11 px-[--sp-space-6] text-[--sp-text-lg]].freeze
38
+ }.freeze
39
+
40
+ FLEX_ALIGN = {
41
+ row: {
42
+ left: "justify-start",
43
+ center: %w[justify-center items-center].freeze,
44
+ right: "justify-end",
45
+ top: "items-start",
46
+ bottom: "items-end"
47
+ }.freeze,
48
+ col: {
49
+ top: "justify-start",
50
+ center: %w[justify-center items-center].freeze,
51
+ bottom: "justify-end",
52
+ left: "items-start",
53
+ right: "items-end"
54
+ }.freeze
55
+ }.freeze
56
+
57
+ BASE = %w[
58
+ inline-flex items-center justify-center gap-2 font-medium
59
+ rounded-[--sp-radius-md] transition-colors
60
+ focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2
61
+ disabled:pointer-events-none disabled:opacity-50
62
+ ].freeze
63
+
64
+ GROUP_BASE = %w[flex gap-[--sp-space-2]].freeze
65
+
66
+ private
67
+
68
+ def button_classes(variant: :primary, size: :md)
69
+ {
70
+ classes: klasses(
71
+ *BASE,
72
+ *VARIANTS.fetch(variant, []),
73
+ *SIZES.fetch(size, [])
74
+ )
75
+ }
76
+ end
77
+
78
+ def button_group_classes(alignment: :left, direction: :row)
79
+ {
80
+ classes: klasses(
81
+ *GROUP_BASE,
82
+ *Array(FLEX_ALIGN.dig(direction, alignment))
83
+ )
84
+ }
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Calendar
7
+ BASE = %w[
8
+ size-[--sp-calendar-day-size] rounded-[--sp-radius-md]
9
+ flex items-center justify-center text-[--sp-text-sm]
10
+ hover:bg-[--sp-color-muted] cursor-pointer
11
+ ].freeze
12
+
13
+ DAY_SELECTED = %w[
14
+ bg-[--sp-color-primary]
15
+ text-[--sp-color-primary-fg]
16
+ hover:bg-[--sp-color-primary]/90
17
+ ].freeze
18
+
19
+ private
20
+
21
+ def calendar_day_classes(today: false, selected: false, outside: false)
22
+ {
23
+ classes: klasses(
24
+ *BASE,
25
+ *(today ? ["font-bold"] : []),
26
+ *(selected ? DAY_SELECTED : []),
27
+ *(outside ? %w[text-[--sp-color-muted-fg] opacity-50] : [])
28
+ )
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Card
7
+ BASE = %w[
8
+ rounded-[--sp-radius-lg] border border-[--sp-color-border]
9
+ bg-[--sp-color-bg] shadow-[--sp-shadow-sm]
10
+ ].freeze
11
+
12
+ private
13
+
14
+ def card_classes
15
+ { classes: klasses(*BASE) }
16
+ end
17
+
18
+ def card_section_classes
19
+ { classes: klasses("p-[--sp-space-6]") }
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Form
7
+ INPUT_BASE = %w[
8
+ w-full rounded-md border px-3 py-2 text-sm text-gray-900
9
+ bg-white focus:outline-none focus:ring-2 focus:ring-offset-0
10
+ ].freeze
11
+ INPUT_ERROR = %w[border-red-700 focus:ring-red-700].freeze
12
+ INPUT_DEFAULT = %w[border-gray-500 focus:ring-blue-700].freeze
13
+
14
+ GROUP_BASE = %w[flex gap-1 mb-3].freeze
15
+ GROUP_INLINE = %w[flex-row items-center].freeze
16
+
17
+ LABEL = %w[text-sm font-medium text-gray-900].freeze
18
+ REQUIRED_MARK = %w[text-red-700 ml-0.5].freeze
19
+ DETAILS = %w[text-xs text-gray-600].freeze
20
+ ERROR_TEXT = %w[text-xs text-red-700].freeze
21
+ CHECKBOX = %w[size-4 rounded border-gray-500 text-blue-700].freeze
22
+ RADIO = %w[size-4 border-gray-500 text-blue-700].freeze
23
+
24
+ ACTOR_BASE = %w[flex items-center overflow-hidden rounded-md border].freeze
25
+ ACTOR_BORDER = { error: "border-red-700", default: "border-gray-500" }.freeze
26
+
27
+ INPUT_REVEAL = %w[
28
+ flex-1 border-0 bg-transparent px-3 py-2 text-sm text-gray-900 focus:outline-none
29
+ ].freeze
30
+ BUTTON_REVEAL = %w[
31
+ self-stretch border-0 bg-transparent px-3 cursor-pointer text-gray-600 hover:text-gray-900 text-sm
32
+ ].freeze
33
+ SUBMIT_LINK = %w[cursor-pointer text-sm font-medium text-gray-900 hover:underline].freeze
34
+
35
+ private
36
+
37
+ def form_group_classes(layout: :stacked, **_rest)
38
+ { classes: klasses(*GROUP_BASE, layout == :inline ? GROUP_INLINE : "flex-col") }
39
+ end
40
+
41
+ def form_label_classes(**)
42
+ { classes: klasses(*LABEL) }
43
+ end
44
+
45
+ def form_required_mark_classes
46
+ { classes: klasses(*REQUIRED_MARK) }
47
+ end
48
+
49
+ def form_details_classes
50
+ { classes: klasses(*DETAILS) }
51
+ end
52
+
53
+ def form_error_classes
54
+ { classes: klasses(*ERROR_TEXT) }
55
+ end
56
+
57
+ def form_input_classes(error: false)
58
+ { classes: klasses(*INPUT_BASE, *(error ? INPUT_ERROR : INPUT_DEFAULT)) }
59
+ end
60
+
61
+ def form_textarea_classes(error: false)
62
+ form_input_classes(error: error)
63
+ end
64
+
65
+ def form_file_classes(error: false)
66
+ form_input_classes(error: error)
67
+ end
68
+
69
+ def form_select_classes(error: false)
70
+ form_input_classes(error: error)
71
+ end
72
+
73
+ def form_checkbox_classes(**)
74
+ { classes: klasses(*CHECKBOX) }
75
+ end
76
+
77
+ def form_radio_classes(**)
78
+ { classes: klasses(*RADIO) }
79
+ end
80
+
81
+ def form_actor_classes(error: false)
82
+ { classes: klasses(*ACTOR_BASE, ACTOR_BORDER[error ? :error : :default]) }
83
+ end
84
+
85
+ def form_input_reveal_classes
86
+ { classes: klasses(*INPUT_REVEAL) }
87
+ end
88
+
89
+ def form_button_reveal_classes
90
+ { classes: klasses(*BUTTON_REVEAL) }
91
+ end
92
+
93
+ def form_submit_classes(variant: :default)
94
+ case variant
95
+ when :button
96
+ { classes: klasses(*Button::BASE, *Button::VARIANTS[:primary], *Button::SIZES[:md]) }
97
+ else
98
+ { classes: klasses(*SUBMIT_LINK) }
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ module Themes
5
+ module Tailwind
6
+ module Layout
7
+ DIVIDER = %w[border-t border-[--sp-color-border] my-[--sp-space-1]].freeze
8
+ POPOVER = %w[
9
+ rounded-[--sp-radius-lg] border border-[--sp-color-border]
10
+ bg-[--sp-color-bg] shadow-[--sp-shadow-md] z-[--sp-z-popover]
11
+ ].freeze
12
+
13
+ private
14
+
15
+ def divider_classes
16
+ { classes: klasses(*DIVIDER) }
17
+ end
18
+
19
+ def popover_classes
20
+ { classes: klasses(*POPOVER) }
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "tailwind/action_list"
4
+ require_relative "tailwind/avatar"
5
+ require_relative "tailwind/button"
6
+ require_relative "tailwind/calendar"
7
+ require_relative "tailwind/card"
8
+ require_relative "tailwind/form"
9
+ require_relative "tailwind/layout"
10
+
11
+ module StimulusPlumbers
12
+ module Themes
13
+ class TailwindTheme < Base
14
+ include Tailwind::ActionList
15
+ include Tailwind::Avatar
16
+ include Tailwind::Button
17
+ include Tailwind::Calendar
18
+ include Tailwind::Card
19
+ include Tailwind::Form
20
+ include Tailwind::Layout
21
+
22
+ private
23
+
24
+ def klasses(*classes)
25
+ classes.flatten.reject(&:blank?).join(" ")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module StimulusPlumbers
4
+ VERSION = "0.2.2"
5
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "stimulus_plumbers/version"
4
+
5
+ require "active_support"
6
+ require "active_support/core_ext/string"
7
+
8
+ require_relative "stimulus_plumbers/configuration"
9
+ require_relative "stimulus_plumbers/helpers"
10
+ require_relative "stimulus_plumbers/logger"
11
+
12
+ require_relative "stimulus_plumbers/components/plumber/html_options"
13
+ require_relative "stimulus_plumbers/components/plumber/dispatcher"
14
+ require_relative "stimulus_plumbers/components/plumber/renderer"
15
+ require_relative "stimulus_plumbers/components/plumber/base"
16
+
17
+ require_relative "stimulus_plumbers/components/icon/renderer"
18
+ require_relative "stimulus_plumbers/components/avatar/renderer"
19
+ require_relative "stimulus_plumbers/components/button/renderer"
20
+ require_relative "stimulus_plumbers/components/card/renderer"
21
+ require_relative "stimulus_plumbers/components/action_list/renderer"
22
+ require_relative "stimulus_plumbers/components/popover/renderer"
23
+
24
+ require_relative "stimulus_plumbers/components/calendar/renderer"
25
+ require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_week"
26
+ require_relative "stimulus_plumbers/components/calendar/month/turbo/days_of_month"
27
+ require_relative "stimulus_plumbers/components/calendar/month/turbo/renderer"
28
+
29
+ require_relative "stimulus_plumbers/components/date_picker/navigator"
30
+ require_relative "stimulus_plumbers/components/date_picker/navigation"
31
+ require_relative "stimulus_plumbers/components/date_picker/renderer"
32
+
33
+ require_relative "stimulus_plumbers/form/field_component"
34
+ require_relative "stimulus_plumbers/form/builder"
35
+
36
+ module StimulusPlumbers
37
+ class << self
38
+ def configure
39
+ yield config
40
+ end
41
+
42
+ def config
43
+ @config ||= Configuration.new
44
+ end
45
+ end
46
+ end
47
+
48
+ require_relative "stimulus_plumbers/engine" if defined?(Rails::Engine)
metadata ADDED
@@ -0,0 +1,129 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stimulus_plumbers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.2
5
+ platform: ruby
6
+ authors:
7
+ - Ryan Chang
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-04-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: railties
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8.2'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '6.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8.2'
33
+ description: Semantically correct, accessible UI components for Rails using ActionView
34
+ helpers and Stimulus
35
+ email:
36
+ - ryancyq@gmail.com
37
+ executables: []
38
+ extensions: []
39
+ extra_rdoc_files: []
40
+ files:
41
+ - README.md
42
+ - app/assets/javascripts/stimulus-plumbers/.keep
43
+ - app/assets/stylesheets/stimulus_plumbers/tokens.css
44
+ - lib/stimulus_plumbers.rb
45
+ - lib/stimulus_plumbers/components/action_list/renderer.rb
46
+ - lib/stimulus_plumbers/components/avatar/renderer.rb
47
+ - lib/stimulus_plumbers/components/button/renderer.rb
48
+ - lib/stimulus_plumbers/components/calendar/month/turbo/days_of_month.rb
49
+ - lib/stimulus_plumbers/components/calendar/month/turbo/days_of_week.rb
50
+ - lib/stimulus_plumbers/components/calendar/month/turbo/renderer.rb
51
+ - lib/stimulus_plumbers/components/calendar/renderer.rb
52
+ - lib/stimulus_plumbers/components/card/renderer.rb
53
+ - lib/stimulus_plumbers/components/date_picker/navigation.rb
54
+ - lib/stimulus_plumbers/components/date_picker/navigator.rb
55
+ - lib/stimulus_plumbers/components/date_picker/renderer.rb
56
+ - lib/stimulus_plumbers/components/icon/renderer.rb
57
+ - lib/stimulus_plumbers/components/plumber/base.rb
58
+ - lib/stimulus_plumbers/components/plumber/dispatcher.rb
59
+ - lib/stimulus_plumbers/components/plumber/html_options.rb
60
+ - lib/stimulus_plumbers/components/plumber/renderer.rb
61
+ - lib/stimulus_plumbers/components/popover/renderer.rb
62
+ - lib/stimulus_plumbers/configuration.rb
63
+ - lib/stimulus_plumbers/engine.rb
64
+ - lib/stimulus_plumbers/form/builder.rb
65
+ - lib/stimulus_plumbers/form/field_component.rb
66
+ - lib/stimulus_plumbers/form/fields/choice.rb
67
+ - lib/stimulus_plumbers/form/fields/file.rb
68
+ - lib/stimulus_plumbers/form/fields/renderer.rb
69
+ - lib/stimulus_plumbers/form/fields/select.rb
70
+ - lib/stimulus_plumbers/form/fields/text.rb
71
+ - lib/stimulus_plumbers/form/fields/text_area.rb
72
+ - lib/stimulus_plumbers/helpers.rb
73
+ - lib/stimulus_plumbers/helpers/action_list_helper.rb
74
+ - lib/stimulus_plumbers/helpers/avatar_helper.rb
75
+ - lib/stimulus_plumbers/helpers/button_helper.rb
76
+ - lib/stimulus_plumbers/helpers/calendar_helper.rb
77
+ - lib/stimulus_plumbers/helpers/calendar_turbo_helper.rb
78
+ - lib/stimulus_plumbers/helpers/card_helper.rb
79
+ - lib/stimulus_plumbers/helpers/date_picker_helper.rb
80
+ - lib/stimulus_plumbers/helpers/plumber_helper.rb
81
+ - lib/stimulus_plumbers/helpers/popover_helper.rb
82
+ - lib/stimulus_plumbers/logger.rb
83
+ - lib/stimulus_plumbers/themes/action_list.rb
84
+ - lib/stimulus_plumbers/themes/avatar.rb
85
+ - lib/stimulus_plumbers/themes/base.rb
86
+ - lib/stimulus_plumbers/themes/button.rb
87
+ - lib/stimulus_plumbers/themes/calendar.rb
88
+ - lib/stimulus_plumbers/themes/card.rb
89
+ - lib/stimulus_plumbers/themes/form.rb
90
+ - lib/stimulus_plumbers/themes/layout.rb
91
+ - lib/stimulus_plumbers/themes/schema/ranges.rb
92
+ - lib/stimulus_plumbers/themes/tailwind/action_list.rb
93
+ - lib/stimulus_plumbers/themes/tailwind/avatar.rb
94
+ - lib/stimulus_plumbers/themes/tailwind/button.rb
95
+ - lib/stimulus_plumbers/themes/tailwind/calendar.rb
96
+ - lib/stimulus_plumbers/themes/tailwind/card.rb
97
+ - lib/stimulus_plumbers/themes/tailwind/form.rb
98
+ - lib/stimulus_plumbers/themes/tailwind/layout.rb
99
+ - lib/stimulus_plumbers/themes/tailwind_theme.rb
100
+ - lib/stimulus_plumbers/version.rb
101
+ homepage: https://github.com/ryancyq/stimulus-plumbers
102
+ licenses:
103
+ - MIT
104
+ metadata:
105
+ rubygems_mfa_required: 'true'
106
+ allowed_push_host: https://rubygems.org
107
+ changelog_uri: https://github.com/ryancyq/stimulus-plumbers/blob/main/CHANGELOG.md
108
+ homepage_uri: https://github.com/ryancyq/stimulus-plumbers
109
+ source_code_uri: https://github.com/ryancyq/stimulus-plumbers/tree/main/stimulus-plumbers-rails
110
+ post_install_message:
111
+ rdoc_options: []
112
+ require_paths:
113
+ - lib
114
+ required_ruby_version: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ version: '3.0'
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: 3.2.0
124
+ requirements: []
125
+ rubygems_version: 3.5.22
126
+ signing_key:
127
+ specification_version: 4
128
+ summary: Accessible ActionView components for Rails with Stimulus controllers
129
+ test_files: []