ariadne_view_components 0.0.93.2 → 0.0.94

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +13 -4
  4. data/app/assets/javascripts/ariadne_view_components.js +14 -14
  5. data/app/assets/javascripts/ariadne_view_components.js.br +0 -0
  6. data/app/assets/javascripts/ariadne_view_components.js.gz +0 -0
  7. data/app/assets/javascripts/ariadne_view_components.js.map +1 -1
  8. data/app/assets/stylesheets/ariadne_view_components.css +1 -1
  9. data/app/assets/stylesheets/ariadne_view_components.css.br +0 -0
  10. data/app/assets/stylesheets/ariadne_view_components.css.gz +0 -0
  11. data/app/components/ariadne/base_component.rb +25 -22
  12. data/app/components/ariadne/behaviors/tooltipable.rb +12 -12
  13. data/app/components/ariadne/form/checkbox/component.rb +2 -2
  14. data/app/components/ariadne/form/group/component.rb +1 -1
  15. data/app/components/ariadne/form/radio_button/component.rb +2 -2
  16. data/app/components/ariadne/form/select/component.rb +1 -1
  17. data/app/components/ariadne/form/text_field/component.html.erb +2 -2
  18. data/app/components/ariadne/form/text_field/component.rb +14 -7
  19. data/app/components/ariadne/form/toggle/component.rb +2 -2
  20. data/app/components/ariadne/form/toggle_group/component.rb +1 -1
  21. data/app/components/ariadne/form/toggle_group/option/component.rb +1 -1
  22. data/app/components/ariadne/layout/grid/component.rb +1 -1
  23. data/app/components/ariadne/layout/grid/item/component.rb +2 -2
  24. data/app/components/ariadne/layout/label_block/component.rb +1 -1
  25. data/app/components/ariadne/layout/narrow/component.rb +1 -1
  26. data/app/components/ariadne/ui/accordion/component.rb +3 -1
  27. data/app/components/ariadne/ui/accordion/item/component.html.erb +10 -10
  28. data/app/components/ariadne/ui/accordion/item/component.rb +12 -3
  29. data/app/components/ariadne/ui/avatar/component.html.erb +9 -7
  30. data/app/components/ariadne/ui/avatar/component.rb +55 -7
  31. data/app/components/ariadne/ui/badge/component.rb +35 -16
  32. data/app/components/ariadne/ui/banner/component.html.erb +23 -0
  33. data/app/components/ariadne/ui/banner/component.rb +226 -0
  34. data/app/components/ariadne/ui/banner/component.ts +46 -0
  35. data/app/components/ariadne/ui/blankslate/component.html.erb +2 -2
  36. data/app/components/ariadne/ui/blankslate/component.rb +12 -1
  37. data/app/components/ariadne/ui/button/component.rb +35 -24
  38. data/app/components/ariadne/ui/card/body/component.rb +1 -1
  39. data/app/components/ariadne/ui/card/component.rb +11 -7
  40. data/app/components/ariadne/ui/card/footer/component.rb +1 -1
  41. data/app/components/ariadne/ui/card/header/component.html.erb +2 -2
  42. data/app/components/ariadne/ui/card/header/component.rb +25 -16
  43. data/app/components/ariadne/ui/clipboard_copy/component.html.erb +1 -0
  44. data/app/components/ariadne/ui/clipboard_copy/component.rb +17 -21
  45. data/app/components/ariadne/ui/clipboard_copy/component.ts +15 -0
  46. data/app/components/ariadne/ui/color_dot/component.html.erb +5 -5
  47. data/app/components/ariadne/ui/color_dot/component.rb +19 -4
  48. data/app/components/ariadne/ui/combobox/component.html.erb +1 -1
  49. data/app/components/ariadne/ui/combobox/component.rb +54 -23
  50. data/app/components/ariadne/ui/combobox/component.ts +2 -0
  51. data/app/components/ariadne/ui/dialog/body/component.html.erb +3 -0
  52. data/app/components/ariadne/ui/dialog/body/component.rb +28 -0
  53. data/app/components/ariadne/ui/dialog/component.html.erb +25 -24
  54. data/app/components/ariadne/ui/dialog/component.rb +87 -18
  55. data/app/components/ariadne/ui/dialog/component.ts +5 -1
  56. data/app/components/ariadne/ui/dialog/footer/component.html.erb +3 -0
  57. data/app/components/ariadne/ui/dialog/footer/component.rb +34 -0
  58. data/app/components/ariadne/ui/heroicon/component.rb +21 -21
  59. data/app/components/ariadne/ui/image/component.rb +11 -23
  60. data/app/components/ariadne/ui/link/component.html.erb +1 -3
  61. data/app/components/ariadne/ui/link/component.rb +17 -4
  62. data/app/components/ariadne/ui/list/component.html.erb +5 -9
  63. data/app/components/ariadne/ui/list/component.rb +31 -7
  64. data/app/components/ariadne/ui/list/item/component.rb +6 -5
  65. data/app/components/ariadne/ui/pagination/component.rb +1 -2
  66. data/app/components/ariadne/ui/popover/component.html.erb +1 -1
  67. data/app/components/ariadne/ui/popover/component.rb +31 -26
  68. data/app/components/ariadne/ui/relative_time/component.html.erb +1 -0
  69. data/app/components/ariadne/ui/{time_ago → relative_time}/component.rb +15 -15
  70. data/app/components/ariadne/ui/{time_ago → relative_time}/component.ts +1 -1
  71. data/app/components/ariadne/ui/shortcut/component.html.erb +0 -1
  72. data/app/components/ariadne/ui/shortcut/component.rb +31 -5
  73. data/app/components/ariadne/ui/shortcut/component.ts +1 -1
  74. data/app/components/ariadne/ui/skeleton/component.rb +2 -8
  75. data/app/components/ariadne/ui/stats_panel/component.html.erb +3 -3
  76. data/app/components/ariadne/ui/stats_panel/component.rb +25 -1
  77. data/app/components/ariadne/ui/stats_panel/item/component.html.erb +3 -3
  78. data/app/components/ariadne/ui/stats_panel/item/component.rb +6 -6
  79. data/app/components/ariadne/ui/table/cell/component.rb +1 -1
  80. data/app/components/ariadne/ui/table/row/component.rb +1 -1
  81. data/app/components/ariadne/ui/typography/component.rb +3 -1
  82. data/app/frontend/controllers/tooltip_controller.ts +8 -3
  83. data/app/frontend/stylesheets/ariadne_view_components.css +1 -0
  84. data/app/frontend/stylesheets/theme.css +88 -0
  85. data/app/frontend/utils/createController.ts +9 -0
  86. data/app/helpers/ariadne/color_helper.rb +158 -0
  87. data/app/helpers/ariadne/form_helper.rb +1 -0
  88. data/app/helpers/ariadne/size_helper.rb +7 -0
  89. data/app/lib/ariadne/attributes_helper.rb +4 -4
  90. data/app/lib/ariadne/view_component/style_variants.rb +1 -1
  91. data/app/lib/ariadne/view_helper.rb +0 -6
  92. data/lib/ariadne/accessibility.rb +64 -0
  93. data/lib/ariadne/forms/dsl/form_object.rb +5 -1
  94. data/lib/ariadne/forms/dsl/input.rb +1 -1
  95. data/lib/ariadne/static/generate_arguments.rb +54 -0
  96. data/lib/ariadne/static/generate_audited_at.rb +17 -0
  97. data/lib/ariadne/static/generate_constants.rb +19 -0
  98. data/lib/ariadne/static/generate_previews.rb +53 -0
  99. data/lib/ariadne/static/generate_statuses.rb +17 -0
  100. data/lib/ariadne/static/generate_structure.rb +279 -0
  101. data/lib/ariadne/static.rb +68 -0
  102. data/lib/ariadne/view_components/constants.rb +2 -2
  103. data/lib/ariadne/view_components/version.rb +1 -1
  104. data/lib/ariadne/view_components.rb +0 -51
  105. data/lib/ariadne/yard/component_manifest.rb +81 -81
  106. data/lib/ariadne/yard/component_ref.rb +1 -1
  107. data/lib/ariadne/yard/docs_helper.rb +24 -16
  108. data/lib/ariadne/yard/dry_initializer/common_handler.rb +103 -0
  109. data/lib/ariadne/yard/dry_initializer/option_handler.rb +38 -0
  110. data/lib/ariadne/yard/dry_initializer/param_handler.rb +57 -0
  111. data/lib/ariadne/yard/registry.rb +2 -5
  112. data/lib/ariadne/yard/{info_arch_docs_helper.rb → structure_docs_helper.rb} +5 -5
  113. data/lib/ariadne/yard.rb +20 -8
  114. data/lib/rubocop/config/default.yml +0 -3
  115. metadata +34 -37
  116. data/app/components/ariadne/behaviors/captionable.rb +0 -55
  117. data/app/components/ariadne/turbo/frame/component.html.erb +0 -3
  118. data/app/components/ariadne/turbo/frame/component.rb +0 -16
  119. data/app/components/ariadne/turbo/stream_action/component.html.erb +0 -4
  120. data/app/components/ariadne/turbo/stream_action/component.rb +0 -25
  121. data/app/components/ariadne/ui/data_table/component.html.erb +0 -1
  122. data/app/components/ariadne/ui/data_table/component.rb +0 -11
  123. data/app/components/ariadne/ui/flash/component.html.erb +0 -18
  124. data/app/components/ariadne/ui/flash/component.rb +0 -151
  125. data/app/components/ariadne/ui/flash/component.ts +0 -56
  126. data/app/components/ariadne/ui/overlay/component.html.erb +0 -12
  127. data/app/components/ariadne/ui/overlay/component.rb +0 -54
  128. data/app/components/ariadne/ui/overlay/component.ts +0 -92
  129. data/app/components/ariadne/ui/time_ago/component.html.erb +0 -1
  130. data/lib/ariadne/view_components/commands.rb +0 -90
  131. data/lib/ariadne/view_components/statuses.rb +0 -14
  132. data/lib/ariadne/view_components/upstream.rb +0 -19
  133. data/lib/ariadne/yard/lookbook_pages_backend.rb +0 -235
  134. data/lib/rubocop/cop/ariadne/no_tag_memoize.rb +0 -44
  135. data/static/arguments.yml +0 -879
  136. data/static/assets/view-components.svg +0 -18
  137. data/static/classes.yml +0 -211
  138. data/static/constants.json +0 -743
  139. data/static/statuses.json +0 -58
  140. data/static/tailwindcss.yml +0 -727
  141. /data/app/components/ariadne/ui/{time_ago → relative_time}/en.yml +0 -0
@@ -1,235 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # :nocov:
4
- module Ariadne
5
- module Yard
6
- # A single Lookbook page.
7
- class LookbookPage
8
- include DocsHelper
9
-
10
- PREVIEW_MAP = {
11
- Ariadne::Alpha::TextField => [:single_text_field_form, :multi_text_field_form],
12
- Ariadne::Alpha::TextArea => [],
13
- Ariadne::Alpha::Select => [:select_form],
14
- Ariadne::Alpha::MultiInput => [:multi_input_form],
15
- Ariadne::Alpha::RadioButton => [:radio_button_with_nested_form],
16
- Ariadne::Alpha::RadioButtonGroup => [:radio_button_group_form],
17
- Ariadne::Alpha::CheckBox => [:check_box_with_nested_form],
18
- Ariadne::Alpha::CheckBoxGroup => [:check_box_group_form],
19
- Ariadne::Alpha::SubmitButton => [:submit_button_form],
20
- Ariadne::Alpha::FormButton => [:submit_button_form],
21
- }.freeze
22
-
23
- attr_reader :component_ref, :backend, :docs
24
-
25
- def initialize(component_ref, backend, docs)
26
- @component_ref = component_ref
27
- @backend = backend
28
- @docs = docs
29
- end
30
-
31
- def page_id
32
- @page_id ||= docs.short_name.dasherize.underscore.tap do |page_id|
33
- page_id << "_input" unless page_id.end_with?("_input")
34
- end
35
- end
36
-
37
- def generate
38
- path = File.expand_path(
39
- File.join(
40
- "..",
41
- "..",
42
- "..",
43
- "previews",
44
- "pages",
45
- "forms",
46
- "inputs",
47
- "#{docs.short_name.dasherize.underscore}.md.erb",
48
- ),
49
- __dir__,
50
- )
51
-
52
- docs.non_slot_methods.select do |mtd|
53
- [component.name, "Ariadne::Forms::Dsl::InputMethods"].include?(mtd.parent.title)
54
- end
55
-
56
- preview_methods = PREVIEW_MAP[component]
57
- preview_methods.map do |preview_method|
58
- if Ariadne::FormsPreview.instance_methods.exclude?(preview_method)
59
- raise "Preview '#{preview_method}' does not exist in Ariadne::FormsPreview"
60
- end
61
- # rubocop:enable Style/IfUnlessModifier
62
-
63
- "<%= embed Ariadne::FormsPreview, #{preview_method.inspect} %>"
64
- end
65
- # rubocop:disable Security/Eval
66
- File.open(path, "w") do |f|
67
- f.write(eval(Erubi::Engine.new(<<~ERB, trim: true).src))
68
- ---
69
- title: <%= docs.title.underscore.titleize %>
70
- id: <%= page_id %>
71
- ---
72
-
73
- <%= docs.base_docstring %>
74
-
75
- ## Usage
76
-
77
- ```ruby
78
- <%= docs.tags(:form_usage).first.text %>
79
- ```
80
-
81
- <% specific_args = specific_args_from(docs.params) %>
82
- <% unless specific_args.empty? %>
83
- ## Arguments
84
-
85
- <%= generate_args_table(specific_args) %>
86
- <% end %>
87
-
88
- ## Common arguments
89
-
90
- <%= generate_args_table(common_args_from(docs.params)) %>
91
-
92
- <% unless documented_methods.empty? %>
93
- ## Methods
94
-
95
- <% documented_methods.each do |method_docs| %>
96
- ### `#<%= method_docs.signature.sub(/def /, "") %>`
97
-
98
- <%= method_docs.base_docstring %>
99
-
100
- <% param_tags = method_docs.tags(:param) %>
101
-
102
- <% if param_tags.any? %>
103
-
104
- <%= generate_args_table(param_tags) %>
105
- <% end %>
106
- <% end %>
107
- <% end %>
108
-
109
- <% unless preview_methods.empty? %>
110
- ## Examples
111
-
112
- <%= preview_erbs.join("\n") %>
113
- <% end %>
114
- ERB
115
- end
116
- # rubocop:enable Security/Eval
117
- end
118
-
119
- private
120
-
121
- def registry
122
- backend.registry
123
- end
124
-
125
- def generate_args_table(params)
126
- rows = params.map do |tag|
127
- description = backend.view_context.render(inline: tag.text.squish)
128
- parts = [
129
- "`#{tag.name}`",
130
- tag.types.join(", "),
131
- description,
132
- ]
133
-
134
- "| #{parts.join(" | ")} |"
135
- end
136
-
137
- <<~MARKDOWN
138
- | Name | Type | Description |
139
- | :- | :- | :- |
140
- #{rows.join("\n")}
141
- MARKDOWN
142
- end
143
-
144
- def common_args_from(params)
145
- params.select { |param| common_form_input_argument_names.include?(param.name) }
146
- end
147
-
148
- def specific_args_from(params)
149
- params.reject { |param| common_form_input_argument_names.include?(param.name) }
150
- end
151
-
152
- def common_form_input_argument_names
153
- @common_form_input_argument_names ||= begin
154
- macro = registry.yard_registry[".macro.form_input_arguments"]
155
- parser = ::YARD::Docstring.parser
156
- parser.parse(macro.macro_data)
157
- parser
158
- .tags
159
- .select { |tag| tag.tag_name == "param" }
160
- .map(&:name)
161
- end
162
- end
163
-
164
- def component
165
- component_ref.klass
166
- end
167
- end
168
-
169
- # Backend that generates Lookbook pages.
170
- class LookbookPagesBackend < Backend
171
- attr_reader :registry, :manifest
172
-
173
- def initialize(registry, manifest)
174
- @registry = registry
175
- @manifest = manifest
176
- end
177
-
178
- def generate
179
- each_component do |component_ref|
180
- page_for(component_ref).generate
181
- end
182
- generate_system_args_docs
183
- end
184
-
185
- def page_for(component_ref)
186
- docs = registry.find(component_ref.klass)
187
- LookbookPage.new(component_ref, self, docs)
188
- end
189
-
190
- def view_context
191
- @view_context ||= super.tap do |vc|
192
- vc.singleton_class.include(LookbookDocsHelper)
193
- end
194
- end
195
-
196
- private
197
-
198
- def each_component(&block)
199
- manifest.each(&block)
200
- end
201
-
202
- def generate_system_args_docs
203
- docs = registry.find(Ariadne::BaseComponent)
204
-
205
- path = File.expand_path(
206
- File.join(
207
- "..", "..", "..", "previews", "pages", "system-arguments.md.erb"
208
- ),
209
- __dir__,
210
- )
211
-
212
- data = {
213
- "description_md" => docs.base_docstring.to_s,
214
- "args_md" => view_context.render(inline: docs.constructor.base_docstring),
215
- }
216
-
217
- frontmatter = {
218
- "title" => "System arguments",
219
- "id" => "system_arguments",
220
- "data" => data,
221
- }
222
-
223
- File.write(
224
- path, <<~ERB
225
- #{YAML.dump(frontmatter)}
226
- ---
227
- <%= @page.data[:description_md].html_safe %>
228
- <%= @page.data[:args_md].html_safe %>
229
- ERB
230
- )
231
- end
232
- end
233
- end
234
- end
235
- # :nocov:
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "rubocop"
4
-
5
- # :nocov:
6
- module RuboCop
7
- module Cop
8
- module Ariadne
9
- # This cop ensures that tags are not set with ||=
10
- #
11
- # bad
12
- # @attributes[:tag] ||= :h1
13
- #
14
- # good
15
- # @attributes[:tag] = fetch_or_raise(TAG_OPTIONS, tag)
16
- #
17
- # good
18
- # @attributes[:tag] = :h2
19
- # TODO: TEST THIS
20
- class NoTagMemoize < Base
21
- INVALID_MESSAGE = <<~STR
22
- Avoid `[:tag] ||=`. Instead, try one of the following:
23
- - Don't allow consumers to update the tag by having a fixed tag (e.g. `attributes[:tag] = :div`)
24
- - Use the `fetch_or_raise` helper to only allow a tag from a restricted list.
25
- STR
26
-
27
- def_node_search :tag_memoized?, <<~PATTERN
28
- (or-asgn
29
- (send
30
- _
31
- _
32
- (sym :tag)
33
- )
34
- _
35
- )
36
- PATTERN
37
-
38
- def on_or_asgn(node)
39
- add_offense(node, message: INVALID_MESSAGE) if tag_memoized?(node)
40
- end
41
- end
42
- end
43
- end
44
- end