ariadne_view_components 0.0.38-x86_64-linux → 0.0.40-x86_64-linux

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/CHANGELOG.md +8 -0
  3. data/lib/ariadne/view_components/upstream.rb +0 -1
  4. data/lib/ariadne/view_components/version.rb +1 -1
  5. data/static/audited_at.json +0 -1
  6. data/static/constants.json +0 -2
  7. data/static/statuses.json +0 -1
  8. metadata +2 -94
  9. data/app/assets/config/manifest.js +0 -2
  10. data/app/assets/stylesheets/ariadne_view_components.css +0 -7
  11. data/app/assets/stylesheets/dropdown.css +0 -46
  12. data/app/assets/stylesheets/prosemirror.css +0 -323
  13. data/app/assets/stylesheets/tooltip-component.css +0 -37
  14. data/app/components/ariadne/ariadne-form.ts +0 -96
  15. data/app/components/ariadne/ariadne.ts +0 -21
  16. data/app/components/ariadne/avatar_component.rb +0 -81
  17. data/app/components/ariadne/avatar_stack_component/avatar_stack_component.html.erb +0 -12
  18. data/app/components/ariadne/avatar_stack_component.rb +0 -75
  19. data/app/components/ariadne/base_button.rb +0 -70
  20. data/app/components/ariadne/base_component.rb +0 -37
  21. data/app/components/ariadne/blankslate_component/blankslate_component.html.erb +0 -26
  22. data/app/components/ariadne/blankslate_component.rb +0 -148
  23. data/app/components/ariadne/body_component.rb +0 -30
  24. data/app/components/ariadne/button_component/button_component.html.erb +0 -4
  25. data/app/components/ariadne/button_component.rb +0 -165
  26. data/app/components/ariadne/clipboard_copy_component/clipboard-copy-component.ts +0 -19
  27. data/app/components/ariadne/clipboard_copy_component/clipboard_copy_component.html.erb +0 -9
  28. data/app/components/ariadne/clipboard_copy_component.rb +0 -90
  29. data/app/components/ariadne/comment_component/comment_component.html.erb +0 -37
  30. data/app/components/ariadne/comment_component.rb +0 -71
  31. data/app/components/ariadne/component.rb +0 -127
  32. data/app/components/ariadne/container_component/container_component.html.erb +0 -3
  33. data/app/components/ariadne/container_component.rb +0 -25
  34. data/app/components/ariadne/content.rb +0 -12
  35. data/app/components/ariadne/counter_component.rb +0 -100
  36. data/app/components/ariadne/details_component/details_component.html.erb +0 -4
  37. data/app/components/ariadne/details_component.rb +0 -81
  38. data/app/components/ariadne/dropdown/menu_component.html.erb +0 -20
  39. data/app/components/ariadne/dropdown/menu_component.rb +0 -101
  40. data/app/components/ariadne/dropdown/menu_component.ts +0 -1
  41. data/app/components/ariadne/dropdown_component/dropdown_component.html.erb +0 -8
  42. data/app/components/ariadne/dropdown_component.rb +0 -172
  43. data/app/components/ariadne/flash_component/flash_component.html.erb +0 -31
  44. data/app/components/ariadne/flash_component.rb +0 -128
  45. data/app/components/ariadne/flex_component/flex_component.html.erb +0 -5
  46. data/app/components/ariadne/flex_component.rb +0 -56
  47. data/app/components/ariadne/footer_component/footer_component.html.erb +0 -7
  48. data/app/components/ariadne/footer_component.rb +0 -23
  49. data/app/components/ariadne/grid_component/grid_component.html.erb +0 -26
  50. data/app/components/ariadne/grid_component.rb +0 -63
  51. data/app/components/ariadne/header_component/header_component.html.erb +0 -29
  52. data/app/components/ariadne/header_component.rb +0 -111
  53. data/app/components/ariadne/heading_component.rb +0 -49
  54. data/app/components/ariadne/heroicon_component/heroicon_component.html.erb +0 -4
  55. data/app/components/ariadne/heroicon_component.rb +0 -166
  56. data/app/components/ariadne/image_component.rb +0 -53
  57. data/app/components/ariadne/inline_flex_component/inline_flex_component.html.erb +0 -6
  58. data/app/components/ariadne/inline_flex_component.rb +0 -72
  59. data/app/components/ariadne/link_component.rb +0 -65
  60. data/app/components/ariadne/list_component/list_component.html.erb +0 -6
  61. data/app/components/ariadne/list_component.rb +0 -70
  62. data/app/components/ariadne/narrow_container_component/narrow_container_component.html.erb +0 -3
  63. data/app/components/ariadne/narrow_container_component.rb +0 -30
  64. data/app/components/ariadne/panel_bar_component/panel_bar_component.html.erb +0 -20
  65. data/app/components/ariadne/panel_bar_component.rb +0 -80
  66. data/app/components/ariadne/pill_component/pill_component.html.erb +0 -3
  67. data/app/components/ariadne/pill_component.rb +0 -44
  68. data/app/components/ariadne/rich_text_area_component/rich-text-area-component.ts +0 -47
  69. data/app/components/ariadne/rich_text_area_component/rich_text_area_component.html.erb +0 -6
  70. data/app/components/ariadne/rich_text_area_component.rb +0 -35
  71. data/app/components/ariadne/slideover_component/slideover-component.ts +0 -17
  72. data/app/components/ariadne/slideover_component/slideover_component.html.erb +0 -9
  73. data/app/components/ariadne/slideover_component.rb +0 -66
  74. data/app/components/ariadne/tab_component/tab_component.html.erb +0 -3
  75. data/app/components/ariadne/tab_component.rb +0 -98
  76. data/app/components/ariadne/tab_container_component/tab-container-component.ts +0 -24
  77. data/app/components/ariadne/tab_container_component.erb +0 -10
  78. data/app/components/ariadne/tab_container_component.rb +0 -68
  79. data/app/components/ariadne/tab_nav_component/tab-nav-component.ts +0 -34
  80. data/app/components/ariadne/tab_nav_component/tab_nav_component.html.erb +0 -7
  81. data/app/components/ariadne/tab_nav_component.rb +0 -72
  82. data/app/components/ariadne/table_nav_component/table_nav_component.html.erb +0 -52
  83. data/app/components/ariadne/table_nav_component.rb +0 -338
  84. data/app/components/ariadne/text.rb +0 -25
  85. data/app/components/ariadne/time_ago_component/time-ago-component.ts +0 -1
  86. data/app/components/ariadne/time_ago_component.rb +0 -56
  87. data/app/components/ariadne/timeline_component/timeline_component.html.erb +0 -19
  88. data/app/components/ariadne/timeline_component.rb +0 -34
  89. data/app/components/ariadne/tooltip_component/tooltip-component.ts +0 -57
  90. data/app/components/ariadne/tooltip_component/tooltip_component.html.erb +0 -4
  91. data/app/components/ariadne/tooltip_component.rb +0 -108
  92. data/app/lib/ariadne/action_view_extensions/form_helper.rb +0 -30
  93. data/app/lib/ariadne/audited/dsl.rb +0 -32
  94. data/app/lib/ariadne/class_name_helper.rb +0 -22
  95. data/app/lib/ariadne/fetch_or_fallback_helper.rb +0 -110
  96. data/app/lib/ariadne/form_builder.rb +0 -74
  97. data/app/lib/ariadne/icon_helper.rb +0 -51
  98. data/app/lib/ariadne/logger_helper.rb +0 -23
  99. data/app/lib/ariadne/status/dsl.rb +0 -41
  100. data/app/lib/ariadne/view_helper.rb +0 -22
@@ -1,34 +0,0 @@
1
- import {Controller} from '@hotwired/stimulus'
2
-
3
- export default class TabNavComponent extends Controller {
4
- static targets = ['tab']
5
-
6
- declare readonly tabTargets: [HTMLAnchorElement]
7
-
8
- // keep in synch with tab_nav_component
9
- SELECTED_CLASSES = ['ariadne-border-slate-500', 'ariadne-text-slate-600']
10
- UNSELECTED_CLASSES = ['ariadne-text-gray-500', 'hover:ariadne-text-gray-700', 'hover:ariadne-border-gray-300']
11
-
12
- connect() {
13
- for (const tab of this.tabTargets) {
14
- if (tab.hasAttribute('aria-current')) {
15
- tab.classList.add(...this.SELECTED_CLASSES)
16
- tab.classList.remove(...this.UNSELECTED_CLASSES)
17
- }
18
- }
19
- }
20
-
21
- toggle(event: Event) {
22
- for (const tab of this.tabTargets) {
23
- if (tab === event.target) {
24
- tab.setAttribute('aria-current', 'page')
25
- tab.classList.add(...this.SELECTED_CLASSES)
26
- tab.classList.remove(...this.UNSELECTED_CLASSES)
27
- } else if (tab.hasAttribute('aria-current')) {
28
- tab.removeAttribute('aria-current')
29
- tab.classList.add(...this.UNSELECTED_CLASSES)
30
- tab.classList.remove(...this.SELECTED_CLASSES)
31
- }
32
- }
33
- }
34
- }
@@ -1,7 +0,0 @@
1
- <%= render Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes) do |component| %>
2
- <ul class="ariadne-list-none">
3
- <% tabs.each do |tab| %>
4
- <li class="ariadne-inline-flex"><%= tab %></li>
5
- <% end %>
6
- </ul>
7
- <% end %>
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ariadne
4
- # Use `TabNavComponent` to style navigation links, typically placed at the top
5
- # of the page.
6
- #
7
- # For panel navigation, use <%= link_to_component(Ariadne::TabContainerComponent) %> instead.
8
- #
9
- # @accessibility
10
- # - By default, `TabNavComponent` renders links within a `<nav>` element. `<nav>` has an
11
- # implicit landmark role of `navigation` which should be reserved for main links.
12
- # For all other set of links, set tag to `:div`.
13
- # - See <%= link_to_component(Ariadne::TabComponent) %> for additional
14
- # accessibility considerations.
15
- class TabNavComponent < Ariadne::Component
16
- DEFAULT_TAG = :nav
17
- TAG_OPTIONS = [DEFAULT_TAG, :div].freeze
18
-
19
- BODY_TAG_DEFAULT = :ul
20
-
21
- # keep this consistent with tab-container-component.ts
22
- SELECTED_CLASSES = "ariadne-border-slate-600 ariadne-text-slate-700"
23
- UNSELECTED_CLASSES = "ariadne-text-slate-500 hover:ariadne-text-slate-700 hover:ariadne-border-slate-700"
24
-
25
- DEFAULT_CLASSES = ""
26
-
27
- # Tabs to be rendered. Use the tabs to list page links.
28
- #
29
- # @param selected [Boolean] Whether the tab is selected.
30
- # @param classes [String] <%= link_to_classes_docs %>
31
- # @param attributes [Hash] <%= link_to_attributes_docs %>
32
- renders_many :tabs, lambda { |selected: false, href: nil, classes: "", attributes: {}|
33
- attributes[:href] = href
34
- attributes[:"data-tab-nav-component-target"] = "tab"
35
- attributes[:"data-action"] = "click->tab-nav-component#toggle"
36
-
37
- actual_classes = merge_class_names(selected ? SELECTED_CLASSES : UNSELECTED_CLASSES, classes)
38
- Ariadne::TabComponent.new(
39
- selected: selected,
40
-
41
- classes: actual_classes,
42
- attributes: attributes,
43
- )
44
- }
45
-
46
- # @example Default with `<nav>`
47
- # @description
48
- # `<nav>` is a landmark and should be reserved for main navigation links. See <%= link_to_accessibility %>.
49
- # @code
50
- # <%= render(Ariadne::TabNavComponent.new(label: "Nav")) do |c| %>
51
- # <% c.with_tab(selected: true, href: "#") { "Tab 1" } %>
52
- # <% c.with_tab(href: "#") { "Tab 2" } %>
53
- # <% c.with_tab(href: "#") { "Tab 3" } %>
54
- # <% end %>
55
- #
56
- # @param label [String] Sets an `aria-label` that helps assistive technology users understand the purpose of the links, and distinguish it from similar elements.
57
- # @param tag [Symbol, String] The rendered tag name.
58
- # @param classes [String] <%= link_to_classes_docs %>
59
- # @param attributes [Hash] <%= link_to_attributes_docs %>
60
- def initialize(label:, tag: DEFAULT_TAG, classes: "", attributes: {})
61
- @tag = check_incoming_tag(DEFAULT_TAG, tag)
62
- @classes = merge_class_names(
63
- DEFAULT_CLASSES,
64
- classes,
65
- )
66
-
67
- @attributes = attributes
68
- @attributes[:"aria-label"] = label
69
- @attributes[:"data-controller"] = "tab-nav-component"
70
- end
71
- end
72
- end
@@ -1,52 +0,0 @@
1
- <div class="ariadne-inline-block ariadne-min-w-full ariadne-align-middle md:ariadne-px-6 lg:ariadne-px-8">
2
- <div class="ariadne-overflow-hidden ariadne-shadow ariadne-ring-1 ariadne-ring-black ariadne-ring-opacity-5 md:ariadne-rounded-lg">
3
- <%= render(Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes)) do |table| %>
4
- <% if has_header_row? %>
5
- <thead>
6
- <%= render(Ariadne::BaseComponent.new(tag: :tr, classes: header_row.classes, attributes: header_row.attributes)) do %>
7
- <%= header_row.selection_cell %>
8
- <%= header_row.main_cell %>
9
- <% header_row.action_cells.each_with_index do |action_cell, idx| %>
10
- <% if idx.zero? %>
11
- <%= action_cell %>
12
- <% elsif idx == header_row.action_cells.size - 1 %>
13
- <%= action_cell %>
14
- <% else %>
15
- <%= action_cell %>
16
- <% end %>
17
- <% end %>
18
- <% end %>
19
- </thead>
20
- <% end %>
21
- <tbody>
22
- <% rows.each do |row| %>
23
- <%= render(Ariadne::BaseComponent.new(tag: :tr, classes: row.classes, attributes: row.attributes)) do %>
24
- <%= row.selection_cell %>
25
- <%= row.main_cell %>
26
- <% row.metadata_cells.each_with_index do |metadata_cell, idx| %>
27
- <% if idx.zero? %>
28
- <%= metadata_cell %>
29
- <% elsif idx == row.metadata_cells.size - 1 %>
30
- <%= metadata_cell %>
31
- <% else %>
32
- <%= metadata_cell %>
33
- <% end %>
34
- <% end %>
35
- <% end %>
36
- <% end %>
37
- </tbody>
38
- <% end %>
39
- </div>
40
- <% if has_footer? %>
41
- <%= render(Ariadne::BaseComponent.new(tag: :div, classes: footer.classes, attributes: footer.attributes)) do %>
42
- <%= footer.records_info %>
43
- <%= render(Ariadne::BaseComponent.new(tag: :nav, classes: footer.pagination_bar.classes, attributes: footer.pagination_bar.attributes)) do %>
44
- <%= footer.pagination_bar.prev_page %>
45
- <% footer.pagination_bar.items.each do |item| %>
46
- <%= item %>
47
- <% end %>
48
- <%= footer.pagination_bar.next_page %>
49
- <% end %>
50
- <% end %>
51
- <% end %>
52
- </div>
@@ -1,338 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ariadne
4
- # The `TableNavComponent` is used to render a table navigation.
5
- class TableNavComponent < Ariadne::Component
6
- DEFAULT_CLASSES = "ariadne-min-w-full ariadne-divide-y ariadne-divide-gray-300"
7
-
8
- renders_one :header_row, "BaseRowItem::HeaderRowItem"
9
-
10
- renders_many :rows, "BaseRowItem::RowItem"
11
-
12
- renders_one :footer, "FooterItem"
13
-
14
- DEFAULT_TAG = :table
15
-
16
- # @example Default
17
- #
18
- # <%= render(Ariadne::TableNavComponent.new) do |table| %>
19
- # <%= table.with_header_row do |header_row| %>
20
- # <% header_row.with_selection_cell do %>
21
- # Status
22
- # <% end %>
23
- # <% header_row.with_main_cell do %>
24
- # State
25
- # <% end %>
26
- # <% header_row.with_action_cell do %>
27
- # Labels
28
- # <% end %>
29
- # <% end %>
30
- # <%= table.with_row do |row| %>
31
- # <% row.with_selection_cell do %>
32
- # "G"
33
- # <% end %>
34
- # <% row.with_main_cell do %>
35
- # "California"
36
- # <% end %>
37
- # <% row.with_metadata_cell do %>
38
- # "Labels"
39
- # <% end %>
40
- # <% end %>
41
- # <%= table.with_row do |row| %>
42
- # <% row.with_selection_cell do %>
43
- # "V"
44
- # <% end %>
45
- # <% row.with_main_cell do %>
46
- # "New York"
47
- # <% end %>
48
- # <% row.with_metadata_cell do %>
49
- # "Labels"
50
- # <% end %>
51
- # <% end %>
52
- # <%= table.with_row do |row| %>
53
- # <% row.with_cell do %>
54
- # "D"
55
- # <% end %>
56
- # <% row.with_selection_cell do %>
57
- # "Texas"
58
- # <% end %>
59
- # <% row.with_metadata_cell do %>
60
- # "Labels"
61
- # <% end %>
62
- # <% end %>
63
- # <% end %>
64
- #
65
- # @param classes [String] <%= link_to_classes_docs %>
66
- # @param attributes [Hash] <%= link_to_attributes_docs %>
67
- def initialize(classes: "", attributes: {})
68
- @tag = DEFAULT_TAG
69
- @classes = merge_class_names(
70
- DEFAULT_CLASSES,
71
- classes,
72
- )
73
-
74
- @attributes = attributes
75
- end
76
-
77
- def has_header_row?
78
- header_row.present?
79
- end
80
-
81
- def has_footer?
82
- footer.present?
83
- end
84
-
85
- # This component is part of `TableNavComponent` and should not be
86
- # used as a standalone component.
87
- class BaseRowItem < Ariadne::TableNavComponent
88
- BASE_ROW_CLASSES = ""
89
-
90
- DEFAULT_TAG = :tr
91
-
92
- BASE_SELECTION_CLASSES = ""
93
- renders_one :selection_cell, lambda { |classes: "", attributes: {}|
94
- actual_classes = merge_class_names(BASE_SELECTION_CLASSES, classes)
95
- if header?
96
- Ariadne::TableNavComponent::BaseCellItem::HeaderCellItem.new(classes: actual_classes, attributes: attributes)
97
- else
98
- Ariadne::TableNavComponent::BaseCellItem::CellItem.new(classes: actual_classes, attributes: attributes)
99
- end
100
- }
101
-
102
- BASE_MAIN_CLASSES = "ariadne-pr-5"
103
- renders_one :main_cell, lambda { |classes: "", attributes: {}|
104
- actual_classes = merge_class_names(BASE_MAIN_CLASSES, classes)
105
- if header?
106
- Ariadne::TableNavComponent::BaseCellItem::HeaderCellItem.new(classes: actual_classes, attributes: attributes)
107
- else
108
- Ariadne::TableNavComponent::BaseCellItem::CellItem.new(classes: actual_classes, attributes: attributes)
109
- end
110
- }
111
-
112
- attr_reader :classes, :attributes
113
-
114
- def initialize(classes: "", attributes: {})
115
- @tag = DEFAULT_TAG
116
- @classes = merge_class_names(BASE_ROW_CLASSES, classes)
117
-
118
- @attributes = attributes
119
- end
120
-
121
- private def linked?
122
- @href.present?
123
- end
124
-
125
- private def header?
126
- @header.present?
127
- end
128
-
129
- def call
130
- Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes)
131
- end
132
-
133
- # This component is part of `TableNavComponent` and should not be
134
- # used as a standalone component.
135
- class RowItem < Ariadne::TableNavComponent::BaseRowItem
136
- DEFAULT_ROW_CLASSES = "ariadne-bg-white"
137
- DEFAULT_METADATA_CLASSES = ""
138
- renders_many :metadata_cells, lambda { |classes: "", attributes: {}|
139
- actual_classes = merge_class_names(DEFAULT_METADATA_CLASSES, classes)
140
- Ariadne::TableNavComponent::BaseCellItem::CellItem.new(classes: actual_classes, attributes: attributes)
141
- }
142
-
143
- attr_reader :href
144
-
145
- def initialize(classes: "", attributes: {})
146
- @header = false
147
-
148
- actual_classes = merge_class_names(DEFAULT_ROW_CLASSES, classes)
149
-
150
- super(classes: actual_classes, attributes: attributes)
151
- end
152
- end
153
-
154
- # This component is part of `TableNavComponent` and should not be
155
- # used as a standalone component.
156
- class HeaderRowItem < Ariadne::TableNavComponent::BaseRowItem
157
- DEFAULT_HEADER_ROW_CLASSES = "ariadne-bg-gray-50 ariadne-text-left"
158
-
159
- renders_many :action_cells, lambda { |classes: "", attributes: {}|
160
- Ariadne::TableNavComponent::BaseCellItem::HeaderCellItem.new(classes: classes, attributes: attributes)
161
- }
162
-
163
- def initialize(classes: "", attributes: {})
164
- @header = true
165
-
166
- actual_classes = merge_class_names(
167
- DEFAULT_HEADER_ROW_CLASSES,
168
- classes,
169
- )
170
-
171
- super(classes: actual_classes, attributes: attributes)
172
- end
173
- end
174
- end
175
-
176
- # This component is part of `TableNavComponent` and should not be
177
- # used as a standalone component.
178
- class BaseCellItem < Ariadne::TableNavComponent
179
- DEFAULT_CELL_CLASSES = "ariadne-py-3.5 ariadne-pl-4 ariadne-pr-3 ariadne-text-left ariadne-text-sm ariadne-text-gray-900"
180
-
181
- attr_writer :first, :last
182
-
183
- def initialize(classes: "", attributes: {})
184
- @classes = merge_class_names(
185
- DEFAULT_CELL_CLASSES,
186
- classes,
187
- )
188
-
189
- @attributes = attributes
190
- end
191
-
192
- def call
193
- render(Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes)) do
194
- content
195
- end
196
- end
197
-
198
- # This component is part of `TableNavComponent` and should not be
199
- # used as a standalone component.
200
- class HeaderCellItem < Ariadne::TableNavComponent::BaseCellItem
201
- DEFAULT_HEADER_CELL_CLASSES = "ariadne-py-3.5 ariadne-pl-4 ariadne-pr-3 ariadne-text-left ariadne-text-sm ariadne-font-semibold ariadne-text-gray-900 sm:ariadne-pl-6 md:ariadne-pl-0"
202
-
203
- DEFAULT_TAG = :th
204
-
205
- WIDTH_CLASSES = {
206
- none: "ariadne-flex-none ariadne-w-14 ariadne-px-4",
207
- default: "ariadne-flex-initial",
208
- narrow: "ariadne-flex-initial ariadne-w-1/5 ariadne-text-right",
209
- wide: "ariadne-flex-grow ariadne-w-3/5 sm:ariadne-pl-6",
210
- }
211
-
212
- # TODO: add one_of check for width
213
- def initialize(classes: "", attributes: {})
214
- @tag = DEFAULT_TAG
215
- actual_classes = merge_class_names(DEFAULT_HEADER_CELL_CLASSES, classes)
216
- attributes["scope"] = "col"
217
- super(classes: actual_classes, attributes: attributes)
218
- end
219
- end
220
-
221
- # This component is part of `TableNavComponent` and should not be
222
- # used as a standalone component.
223
- class CellItem < Ariadne::TableNavComponent::BaseCellItem
224
- DEFAULT_CELL_CLASSES = ""
225
-
226
- DEFAULT_TAG = :td
227
-
228
- # TODO: add one_of check for width
229
- def initialize(classes: "", attributes: {})
230
- @tag = DEFAULT_TAG
231
- actual_classes = merge_class_names(DEFAULT_CELL_CLASSES, classes)
232
- super(classes: actual_classes, attributes: attributes)
233
- end
234
- end
235
- end
236
-
237
- # This component is part of `TableNavComponent` and should not be
238
- # used as a standalone component.
239
- class FooterItem < Ariadne::TableNavComponent
240
- DEFAULT_FOOTER_CLASSES = "ariadne-border-none ariadne-flex ariadne-items-center ariadne-justify-between ariadne-px-4 ariadne-py-3 sm:ariadne-px-6"
241
-
242
- DEFAULT_RESULT_CLASSES = "ariadne-text-sm ariadne-text-gray-700"
243
- renders_one :records_info, lambda { |classes: "", attributes: {}|
244
- actual_classes = merge_class_names(DEFAULT_RESULT_CLASSES, classes)
245
- Ariadne::BaseComponent.new(tag: :p, classes: actual_classes, attributes: attributes)
246
- }
247
-
248
- renders_one :pagination_bar, "Ariadne::TableNavComponent::PaginationBarItem"
249
-
250
- attr_reader :classes, :attributes
251
-
252
- def initialize(classes: "", attributes: {})
253
- @classes = merge_class_names(
254
- DEFAULT_FOOTER_CLASSES,
255
- classes,
256
- )
257
-
258
- @attributes = attributes
259
- end
260
-
261
- def call
262
- render(Ariadne::BaseComponent.new(tag: :div, classes: @classes, attributes: @attributes)) do
263
- records_info.to_s + pagination_bar.to_s
264
- end
265
- end
266
- end
267
-
268
- # This component is part of `TableNavComponent` and should not be
269
- # used as a standalone component.
270
- class PaginationBarItem < Ariadne::FooterComponent
271
- DEFAULT_PREV_PAGE_CLASSES = "ariadne-relative ariadne-inline-flex ariadne-items-center ariadne-rounded-l-md ariadne-border ariadne-border-gray-300 ariadne-bg-white ariadne-px-2 ariadne-py-2 ariadne-text-sm ariadne-font-medium ariadne-text-gray-500 hover:ariadne-bg-gray-50 focus:ariadne-z-20"
272
- renders_one :prev_page, lambda { |disabled: false, href:, classes: "", attributes: {}|
273
- if disabled
274
- actual_classes = merge_class_names(DEFAULT_PREV_PAGE_CLASSES, "ariadne-bg-gray-50", classes)
275
-
276
- render(Ariadne::BaseComponent.new(tag: :span, classes: actual_classes, attributes: attributes)) do
277
- render(Ariadne::HeroiconComponent.new(icon: "chevron-left", size: :sm, variant: :mini, text_attributes: { "aria-hidden": true }, text_classes: "ariadne-sr-only"))
278
- end
279
- else
280
- actual_classes = merge_class_names(DEFAULT_PREV_PAGE_CLASSES, "hover:ariadne-bg-gray-50", classes)
281
- attributes[:"aria-label"] = "previous"
282
-
283
- render(Ariadne::LinkComponent.new(href: href, classes: actual_classes, attributes: attributes)) do
284
- render(Ariadne::HeroiconComponent.new(icon: "chevron-left", size: :sm, variant: :mini, text_attributes: { "aria-hidden": true }, text_classes: "ariadne-sr-only"))
285
- end
286
- end
287
- }
288
-
289
- DEFAULT_PAGE_CLASSES = "ariadne-relative ariadne-inline-flex ariadne-items-center ariadne-border ariadne-border-gray-300 ariadne-bg-white ariadne-px-4 ariadne-py-2 ariadne-text-sm ariadne-font-medium ariadne-text-gray-500 hover:ariadne-bg-gray-50 focus:ariadne-z-20"
290
- DEFAULT_CURRENT_PAGE_CLASSES = "ariadne-relative ariadne-z-10 ariadne-inline-flex ariadne-items-center ariadne-border ariadne-border-slate-500 ariadne-bg-slate-50 ariadne-px-4 ariadne-py-2 ariadne-text-sm ariadne-font-medium ariadne-text-slate-600 focus:ariadne-z-20"
291
- DEFAULT_GAP_CLASSES = " ariadne-relative ariadne-inline-flex ariadne-items-center ariadne-border ariadne-border-gray-300 ariadne-bg-white ariadne-px-4 ariadne-py-2 ariadne-text-sm ariadne-font-medium ariadne-text-gray-700"
292
- renders_many :items, lambda { |link:, classes: "", attributes: {}|
293
- page, href = link
294
- if page.is_a?(Integer)
295
- actual_classes = merge_class_names(DEFAULT_PAGE_CLASSES, classes)
296
- render(Ariadne::LinkComponent.new(href: href, classes: actual_classes, attributes: attributes)) { page.to_s }
297
- elsif page.is_a?(String)
298
- actual_classes = merge_class_names(DEFAULT_CURRENT_PAGE_CLASSES, classes)
299
- render(Ariadne::LinkComponent.new(href: href, classes: actual_classes, attributes: attributes)) { page.to_s }
300
- elsif page == :gap
301
- actual_classes = merge_class_names(DEFAULT_GAP_CLASSES, classes)
302
- render(Ariadne::BaseComponent.new(tag: :span, classes: actual_classes, attributes: attributes)) { h(href.to_s) }
303
- end
304
- }
305
-
306
- DEFAULT_NEXT_PAGE_CLASSES = "ariadne-relative ariadne-inline-flex ariadne-items-center ariadne-rounded-r-md ariadne-border ariadne-border-gray-300 ariadne-bg-white ariadne-px-2 ariadne-py-2 ariadne-text-sm ariadne-font-medium ariadne-text-gray-500 hover:ariadne-bg-gray-50 focus:ariadne-z-20"
307
- renders_one :next_page, lambda { |disabled: false, href:, classes: "", attributes: {}|
308
- if disabled
309
- actual_classes = merge_class_names(DEFAULT_NEXT_PAGE_CLASSES, "ariadne-bg-gray-50", classes)
310
-
311
- render(Ariadne::BaseComponent.new(tag: :span, classes: actual_classes, attributes: attributes)) do
312
- render(Ariadne::HeroiconComponent.new(icon: "chevron-right", size: :sm, variant: :mini, text_attributes: { "aria-hidden": true }, text_classes: "ariadne-sr-only"))
313
- end
314
- else
315
- actual_classes = merge_class_names(DEFAULT_NEXT_PAGE_CLASSES, "hover:ariadne-bg-gray-50", classes)
316
- attributes[:"aria-label"] = "next"
317
-
318
- render(Ariadne::LinkComponent.new(href: href, classes: actual_classes, attributes: attributes)) do
319
- render(Ariadne::HeroiconComponent.new(icon: "chevron-right", size: :sm, variant: :mini, text_attributes: { "aria-hidden": true }, text_classes: "ariadne-sr-only"))
320
- end
321
- end
322
- }
323
-
324
- attr_reader :classes, :attributes
325
-
326
- DEFAULT_PAGINATOR_CLASSES = "ariadne-flex ariadne-items-center ariadne-justify-between ariadne-m-10"
327
- def initialize(classes: "", attributes: {})
328
- @classes = merge_class_names(
329
- DEFAULT_PAGINATOR_CLASSES,
330
- classes,
331
- )
332
-
333
- @attributes = attributes
334
- @attributes[:"aria-label"] ||= "paginator"
335
- end
336
- end
337
- end
338
- end
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ariadne
4
- # `Text` is a wrapper component that will apply typography styles to the text inside.
5
- class Text < Ariadne::Component
6
- DEFAULT_TAG = :span
7
-
8
- # @example Default
9
- # <%= render(Ariadne::Text.new(tag: :p, attributes: { font_weight: :bold })) { "Bold Text" } %>
10
- # <%= render(Ariadne::Text.new(tag: :p, attributes: { color: :danger })) { "Danger Text" } %>
11
- #
12
- # @param tag [Symbol, String] The rendered tag name
13
- # @param classes [String] <%= link_to_classes_docs %>
14
- # @param attributes [Hash] <%= link_to_attributes_docs %>
15
- def initialize(tag: DEFAULT_TAG, classes: "", attributes: {})
16
- @tag = tag
17
- @classes = classes
18
- @attributes = attributes
19
- end
20
-
21
- def call
22
- render(Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes)) { content }
23
- end
24
- end
25
- end
@@ -1 +0,0 @@
1
- import '@github/time-elements'
@@ -1,56 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ariadne
4
- # Displays a time ariadne-relative to how long ago it was. This component requires JavaScript.
5
- class TimeAgoComponent < Ariadne::Component
6
- DEFAULT_TAG = :"time-ago"
7
- TAG_OPTIONS = [DEFAULT_TAG].freeze
8
-
9
- DEFAULT_CLASSES = "ariadne-whitespace-nowrap"
10
-
11
- # @example Default
12
- #
13
- # <%= render(Ariadne::TimeAgoComponent.new(time: Time.now)) %>
14
- #
15
- # @param tag [Symbol, String] The rendered tag name.
16
- # @param time [Time] The time to be formatted
17
- # @param micro [Boolean] If true then the text will be formatted in "micro" mode, using as few characters as possible
18
- # @param classes [String] <%%= link_to_classes_docs %>
19
- # @param attributes [Hash] <%= link_to_attributes_docs %>
20
- def initialize(tag: DEFAULT_TAG, time:, micro: false, classes: "", attributes: {})
21
- @tag = check_incoming_tag(DEFAULT_TAG, tag)
22
- @classes = merge_class_names(
23
- DEFAULT_CLASSES,
24
- classes,
25
- )
26
-
27
- @time = time
28
- @micro = micro
29
- @attributes = attributes
30
- @attributes[:datetime] = @time.utc.iso8601
31
- @attributes[:format] = "micro" if @micro
32
- end
33
-
34
- def call
35
- render(Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes)) { time_in_words }
36
- end
37
-
38
- private def time_in_words
39
- return @time.in_time_zone.strftime("%b %-d, %Y") unless @micro
40
-
41
- seconds_ago = Time.current - @time
42
-
43
- if seconds_ago < 1.minute
44
- "1m"
45
- elsif seconds_ago >= 1.minute && seconds_ago < 1.hour
46
- "#{(seconds_ago / 60).floor}m"
47
- elsif seconds_ago >= 1.hour && seconds_ago < 1.day
48
- "#{(seconds_ago / 60 / 60).floor}h"
49
- elsif seconds_ago >= 1.day && seconds_ago < 1.year
50
- "#{(seconds_ago / 60 / 60 / 24).floor}d"
51
- elsif seconds_ago >= 1.year
52
- "#{(seconds_ago / 60 / 60 / 24 / 365).floor}y"
53
- end
54
- end
55
- end
56
- end
@@ -1,19 +0,0 @@
1
- <%= render Ariadne::BaseComponent.new(tag: @tag, classes: @classes, attributes: @attributes) do %>
2
- <div>
3
- <div class="ariadne-divide-y ariadne-divide-gray-200">
4
- <div class="ariadne-pb-4">
5
- <h2 id="activity-title" class="ariadne-text-lg ariadne-font-medium ariadne-text-gray-900">Timeline</h2>
6
- </div>
7
- <div class="ariadne-pt-6">
8
- <!-- Activity feed-->
9
- <div class="ariadne-flow-root">
10
- <ul role="list" class="ariadne--mb-8">
11
- <% items.each do %>
12
- <%= items %>
13
- <% end %>
14
- </ul>
15
- </div>
16
- </div>
17
- </div>
18
- </div>
19
- <% end %>
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ariadne
4
- # Represents a linear timeline of events. Typically, this is shown
5
- # as part of the Conversation component.
6
- class TimelineComponent < Ariadne::Component
7
- DEFAULT_TAG = :div
8
- DEFAULT_CLASSES = ""
9
-
10
- # The sub-items(s) to render
11
- renders_many :items, lambda { |static_content = nil, &block|
12
- next static_content if static_content.present?
13
-
14
- view_context.capture { block&.call }
15
- }
16
-
17
- # @example Default
18
- #
19
- # <%= render(Ariadne::TimelineComponent.new) { "Example" } %>
20
- #
21
- # @param tag [Symbol, String] The rendered tag name
22
- # @param classes [String] <%= link_to_classes_docs %>
23
- # @param attributes [Hash] <%= link_to_attributes_docs %>
24
- def initialize(tag: DEFAULT_TAG, classes: "", attributes: {})
25
- @tag = check_incoming_tag(DEFAULT_TAG, tag)
26
- @classes = merge_class_names(
27
- DEFAULT_CLASSES,
28
- classes,
29
- )
30
-
31
- @attributes = attributes
32
- end
33
- end
34
- end