ariadne_view_components 0.0.93.1 → 0.0.94

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -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