ruby_ui 1.1.0 → 1.3.0

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/lib/generators/ruby_ui/component_generator.rb +5 -1
  3. data/lib/generators/ruby_ui/dependencies.yml +32 -0
  4. data/lib/generators/ruby_ui/install/install_generator.rb +1 -1
  5. data/lib/generators/ruby_ui/install/templates/tailwind.css.erb +1 -1
  6. data/lib/generators/ruby_ui/javascript_utils.rb +27 -6
  7. data/lib/ruby_ui/avatar/avatar.rb +3 -0
  8. data/lib/ruby_ui/avatar/avatar_controller.js +33 -0
  9. data/lib/ruby_ui/avatar/avatar_fallback.rb +3 -0
  10. data/lib/ruby_ui/avatar/avatar_image.rb +4 -0
  11. data/lib/ruby_ui/base.rb +6 -0
  12. data/lib/ruby_ui/calendar/calendar.rb +3 -1
  13. data/lib/ruby_ui/calendar/calendar_controller.js +66 -7
  14. data/lib/ruby_ui/calendar/calendar_days.rb +20 -0
  15. data/lib/ruby_ui/calendar/calendar_docs.rb +9 -0
  16. data/lib/ruby_ui/combobox/combobox_badge.rb +17 -0
  17. data/lib/ruby_ui/combobox/combobox_badge_trigger.rb +47 -0
  18. data/lib/ruby_ui/combobox/combobox_clear_button.rb +40 -0
  19. data/lib/ruby_ui/combobox/combobox_controller.js +4 -2
  20. data/lib/ruby_ui/combobox/combobox_docs.rb +199 -64
  21. data/lib/ruby_ui/combobox/combobox_input_trigger.rb +64 -0
  22. data/lib/ruby_ui/combobox/combobox_item_indicator.rb +30 -0
  23. data/lib/ruby_ui/command/command_controller.js +10 -19
  24. data/lib/ruby_ui/command/command_dialog.rb +4 -1
  25. data/lib/ruby_ui/command/command_dialog_content.rb +2 -2
  26. data/lib/ruby_ui/command/command_dialog_controller.js +34 -0
  27. data/lib/ruby_ui/command/command_dialog_trigger.rb +2 -2
  28. data/lib/ruby_ui/data_table/data_table.rb +29 -0
  29. data/lib/ruby_ui/data_table/data_table_bulk_actions.rb +18 -0
  30. data/lib/ruby_ui/data_table/data_table_column_toggle.rb +62 -0
  31. data/lib/ruby_ui/data_table/data_table_column_visibility_controller.js +14 -0
  32. data/lib/ruby_ui/data_table/data_table_controller.js +57 -0
  33. data/lib/ruby_ui/data_table/data_table_docs.rb +180 -0
  34. data/lib/ruby_ui/data_table/data_table_expand_toggle.rb +53 -0
  35. data/lib/ruby_ui/data_table/data_table_form.rb +39 -0
  36. data/lib/ruby_ui/data_table/data_table_kaminari_adapter.rb +17 -0
  37. data/lib/ruby_ui/data_table/data_table_manual_adapter.rb +17 -0
  38. data/lib/ruby_ui/data_table/data_table_pagination.rb +100 -0
  39. data/lib/ruby_ui/data_table/data_table_pagination_bar.rb +15 -0
  40. data/lib/ruby_ui/data_table/data_table_pagy_adapter.rb +17 -0
  41. data/lib/ruby_ui/data_table/data_table_per_page_select.rb +35 -0
  42. data/lib/ruby_ui/data_table/data_table_row_checkbox.rb +30 -0
  43. data/lib/ruby_ui/data_table/data_table_search.rb +57 -0
  44. data/lib/ruby_ui/data_table/data_table_search_controller.js +62 -0
  45. data/lib/ruby_ui/data_table/data_table_select_all_checkbox.rb +21 -0
  46. data/lib/ruby_ui/data_table/data_table_selection_summary.rb +25 -0
  47. data/lib/ruby_ui/data_table/data_table_sort_head.rb +112 -0
  48. data/lib/ruby_ui/data_table/data_table_toolbar.rb +15 -0
  49. data/lib/ruby_ui/date_picker/date_picker.rb +85 -0
  50. data/lib/ruby_ui/date_picker/date_picker_docs.rb +23 -0
  51. data/lib/ruby_ui/native_select/native_select.rb +39 -0
  52. data/lib/ruby_ui/native_select/native_select_docs.rb +83 -0
  53. data/lib/ruby_ui/native_select/native_select_group.rb +15 -0
  54. data/lib/ruby_ui/native_select/native_select_icon.rb +39 -0
  55. data/lib/ruby_ui/native_select/native_select_option.rb +15 -0
  56. data/lib/ruby_ui/select/select_value.rb +2 -1
  57. data/lib/ruby_ui/sheet/sheet.rb +9 -1
  58. data/lib/ruby_ui/sheet/sheet_controller.js +6 -0
  59. data/lib/ruby_ui/theme_toggle/theme_toggle.rb +14 -2
  60. data/lib/ruby_ui/theme_toggle/theme_toggle_controller.js +27 -19
  61. data/lib/ruby_ui/theme_toggle/theme_toggle_docs.rb +12 -42
  62. data/lib/ruby_ui/toast/toast.rb +18 -0
  63. data/lib/ruby_ui/toast/toast_action.rb +27 -0
  64. data/lib/ruby_ui/toast/toast_cancel.rb +27 -0
  65. data/lib/ruby_ui/toast/toast_close.rb +40 -0
  66. data/lib/ruby_ui/toast/toast_controller.js +151 -0
  67. data/lib/ruby_ui/toast/toast_description.rb +18 -0
  68. data/lib/ruby_ui/toast/toast_docs.rb +12 -0
  69. data/lib/ruby_ui/toast/toast_icon.rb +65 -0
  70. data/lib/ruby_ui/toast/toast_item.rb +72 -0
  71. data/lib/ruby_ui/toast/toast_region.rb +124 -0
  72. data/lib/ruby_ui/toast/toast_title.rb +18 -0
  73. data/lib/ruby_ui/toast/toaster_controller.js +306 -0
  74. data/lib/ruby_ui/toggle/toggle.rb +101 -0
  75. data/lib/ruby_ui/toggle/toggle_controller.js +33 -0
  76. data/lib/ruby_ui/toggle_group/toggle_group.rb +119 -0
  77. data/lib/ruby_ui/toggle_group/toggle_group_controller.js +126 -0
  78. data/lib/ruby_ui/toggle_group/toggle_group_item.rb +67 -0
  79. data/lib/ruby_ui/tooltip/tooltip_content.rb +12 -5
  80. data/lib/ruby_ui/tooltip/tooltip_controller.js +58 -22
  81. data/lib/ruby_ui/tooltip/tooltip_docs.rb +13 -0
  82. data/lib/ruby_ui/tooltip/tooltip_trigger.rb +10 -3
  83. data/lib/ruby_ui.rb +3 -1
  84. metadata +66 -10
  85. data/lib/ruby_ui/theme_toggle/set_dark_mode.rb +0 -16
  86. data/lib/ruby_ui/theme_toggle/set_light_mode.rb +0 -16
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RubyUI
4
+ class ToggleGroupItem < Toggle
5
+ JOIN_BASE = "w-auto min-w-0 shrink-0 px-3 focus:z-10 focus-visible:z-10"
6
+
7
+ def initialize(value:, group_context:, variant: nil, size: nil, **attrs)
8
+ @item_value = value.to_s
9
+ @group_context = group_context
10
+
11
+ pressed = group_context[:selected_values].include?(@item_value)
12
+ super(
13
+ pressed: pressed,
14
+ name: nil,
15
+ value: @item_value,
16
+ variant: variant || group_context[:variant],
17
+ size: size || group_context[:size],
18
+ disabled: group_context[:disabled],
19
+ **attrs
20
+ )
21
+ end
22
+
23
+ def view_template(&block)
24
+ button(**attrs, &block)
25
+ end
26
+
27
+ private
28
+
29
+ def default_attrs
30
+ attrs = {type: "button"}
31
+ attrs[:disabled] = true if @disabled
32
+ attrs[:data] = {
33
+ state: @pressed ? "on" : "off",
34
+ value: @item_value,
35
+ "ruby-ui--toggle-group-target": "item",
36
+ action: "click->ruby-ui--toggle-group#select keydown->ruby-ui--toggle-group#navigate"
37
+ }
38
+ attrs[:class] = [Toggle.classes_for(variant: @variant, size: @size), join_classes]
39
+
40
+ if @group_context[:type] == :single
41
+ attrs[:role] = "radio"
42
+ attrs[:aria] = {checked: @pressed.to_s}
43
+ attrs[:tabindex] = @pressed ? "0" : "-1"
44
+ else
45
+ attrs[:aria] = {pressed: @pressed.to_s}
46
+ attrs[:tabindex] = "0"
47
+ end
48
+
49
+ attrs
50
+ end
51
+
52
+ def join_classes
53
+ classes = [JOIN_BASE]
54
+ return classes unless @group_context[:spacing] == 0
55
+
56
+ classes << "rounded-none shadow-none"
57
+ if @group_context[:orientation] == :vertical
58
+ classes << "first-of-type:rounded-t-md last-of-type:rounded-b-md"
59
+ classes << "border-t-0 first-of-type:border-t" if @group_context[:variant] == :outline
60
+ else
61
+ classes << "first-of-type:rounded-l-md last-of-type:rounded-r-md"
62
+ classes << "border-l-0 first-of-type:border-l" if @group_context[:variant] == :outline
63
+ end
64
+ classes
65
+ end
66
+ end
67
+ end
@@ -8,7 +8,9 @@ module RubyUI
8
8
  end
9
9
 
10
10
  def view_template(&)
11
- div(**attrs, &)
11
+ template(data: {ruby_ui__tooltip_target: "content"}) do
12
+ div(**attrs, &)
13
+ end
12
14
  end
13
15
 
14
16
  private
@@ -16,10 +18,15 @@ module RubyUI
16
18
  def default_attrs
17
19
  {
18
20
  id: @id,
19
- data: {
20
- ruby_ui__tooltip_target: "content"
21
- },
22
- class: "invisible peer-hover:visible peer-focus:visible w-max absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md peer-focus:zoom-in-95 animate-out fade-out-0 zoom-out-95 peer-hover:animate-in peer-focus:animate-in peer-hover:fade-in-0 peer-focus:fade-in-0 peer-hover:zoom-in-95 group-data-[ruby-ui--tooltip-placement-value=bottom]:slide-in-from-top-2 group-data-[ruby-ui--tooltip-placement-value=left]:slide-in-from-right-2 group-data-[ruby-ui--tooltip-placement-value=right]:slide-in-from-left-2 group-data-[ruby-ui--tooltip-placement-value=top]:slide-in-from-bottom-2 delay-500"
21
+ class: [
22
+ "invisible pointer-events-none w-fit max-w-[calc(100vw-2rem)] text-balance break-words absolute top-0 left-0 z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md",
23
+ "data-[placement=bottom]:slide-in-from-top-2",
24
+ "data-[placement=left]:slide-in-from-right-2",
25
+ "data-[placement=right]:slide-in-from-left-2",
26
+ "data-[placement=top]:slide-in-from-bottom-2",
27
+ "data-[state=open]:visible data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
28
+ "data-[state=closed]:visible data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=closed]:fill-mode-forwards"
29
+ ]
23
30
  }
24
31
  end
25
32
  end
@@ -3,36 +3,72 @@ import { computePosition, autoUpdate, offset, shift } from "@floating-ui/dom";
3
3
 
4
4
  export default class extends Controller {
5
5
  static targets = ["trigger", "content"];
6
- static values = { placement: String }
7
6
 
8
- constructor(...args) {
9
- super(...args);
10
- this.cleanup;
7
+ static values = { placement: "top" };
8
+
9
+ mount() {
10
+ if (this.mounted) return;
11
+
12
+ const element = this.cloneTemplate();
13
+ element.setAttribute("data-placement", this.placementValue);
14
+ document.body.appendChild(element);
15
+
16
+ this.triggerTarget.setAttribute("aria-describedby", element.id);
17
+ element.addEventListener("animationend", (event) => this.animationEnd(event));
18
+
19
+ const onBeforeCache = () => this.unmount();
20
+ document.addEventListener("turbo:before-cache", onBeforeCache);
21
+
22
+ this.mounted = { element, onBeforeCache };
23
+ this.mounted.stopAutoUpdate = autoUpdate(this.triggerTarget, element, () => this.reposition());
11
24
  }
12
25
 
13
- connect() {
14
- this.setFloatingElement();
26
+ unmount() {
27
+ if (!this.mounted) return;
15
28
 
16
- const tooltipId = this.contentTarget.getAttribute("id");
17
- this.triggerTarget.setAttribute("aria-describedby", tooltipId);
29
+ document.removeEventListener("turbo:before-cache", this.mounted.onBeforeCache);
18
30
 
31
+ this.mounted.stopAutoUpdate?.();
32
+ this.mounted.element.remove();
33
+ this.triggerTarget.removeAttribute("aria-describedby");
34
+
35
+ this.mounted = null;
19
36
  }
20
37
 
21
38
  disconnect() {
22
- this.cleanup();
23
- }
24
-
25
- setFloatingElement() {
26
- this.cleanup = autoUpdate(this.triggerTarget, this.contentTarget, () => {
27
- computePosition(this.triggerTarget, this.contentTarget, {
28
- placement: this.placementValue,
29
- middleware: [offset(4), shift()]
30
- }).then(({ x, y }) => {
31
- Object.assign(this.contentTarget.style, {
32
- left: `${x}px`,
33
- top: `${y}px`,
34
- });
35
- });
39
+ this.unmount();
40
+ }
41
+
42
+ show() {
43
+ if (!this.hasContentTarget) return;
44
+
45
+ this.mount();
46
+ this.mounted.element.setAttribute("data-state", "open");
47
+ }
48
+
49
+ hide() {
50
+ this.mounted?.element.setAttribute("data-state", "closed");
51
+ }
52
+
53
+ animationEnd(event) {
54
+ if (event.animationName !== "exit") return;
55
+ if (this.mounted?.element.getAttribute("data-state") !== "closed") return;
56
+
57
+ this.unmount();
58
+ }
59
+
60
+ cloneTemplate() {
61
+ return this.contentTarget.content.firstElementChild.cloneNode(true);
62
+ }
63
+
64
+ reposition() {
65
+ if (!this.mounted) return;
66
+
67
+ const position = { placement: this.placementValue, middleware: [offset(4), shift()] };
68
+
69
+ computePosition(this.triggerTarget, this.mounted.element, position).then(({ x, y }) => {
70
+ this.mounted?.element.style.setProperty("left", `${x}px`);
71
+ this.mounted?.element.style.setProperty("top", `${y}px`);
36
72
  });
37
73
  }
38
74
  }
@@ -24,6 +24,19 @@ class Views::Docs::Tooltip < Views::Base
24
24
  RUBY
25
25
  end
26
26
 
27
+ render Docs::VisualCodeExample.new(title: "Long content", context: self) do
28
+ <<~RUBY
29
+ Tooltip do
30
+ TooltipTrigger do
31
+ Button(variant: :outline) { "Hover me" }
32
+ end
33
+ TooltipContent do
34
+ Text { "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." }
35
+ end
36
+ end
37
+ RUBY
38
+ end
39
+
27
40
  render Components::ComponentSetup::Tabs.new(component_name: component)
28
41
 
29
42
  render Docs::ComponentsTable.new(component_files(component))
@@ -10,9 +10,16 @@ module RubyUI
10
10
 
11
11
  def default_attrs
12
12
  {
13
- data: {ruby_ui__tooltip_target: "trigger"},
14
- variant: :outline,
15
- class: "peer"
13
+ data: {
14
+ ruby_ui__tooltip_target: "trigger",
15
+ action: [
16
+ "mouseenter->ruby-ui--tooltip#show",
17
+ "mouseleave->ruby-ui--tooltip#hide",
18
+ "focus->ruby-ui--tooltip#show",
19
+ "blur->ruby-ui--tooltip#hide"
20
+ ]
21
+ },
22
+ variant: :outline
16
23
  }
17
24
  end
18
25
  end
data/lib/ruby_ui.rb CHANGED
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "date"
4
+
3
5
  module RubyUI
4
- VERSION = "1.1.0"
6
+ VERSION = "1.3.0"
5
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_ui
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - George Kettle
@@ -13,6 +13,9 @@ dependencies:
13
13
  name: phlex
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.1'
16
19
  - - ">="
17
20
  - !ruby/object:Gem::Version
18
21
  version: 2.1.2
@@ -20,6 +23,9 @@ dependencies:
20
23
  prerelease: false
21
24
  version_requirements: !ruby/object:Gem::Requirement
22
25
  requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '2.1'
23
29
  - - ">="
24
30
  - !ruby/object:Gem::Version
25
31
  version: 2.1.2
@@ -29,28 +35,28 @@ dependencies:
29
35
  requirements:
30
36
  - - "~>"
31
37
  - !ruby/object:Gem::Version
32
- version: 4.2.0
38
+ version: 5.0.0
33
39
  type: :development
34
40
  prerelease: false
35
41
  version_requirements: !ruby/object:Gem::Requirement
36
42
  requirements:
37
43
  - - "~>"
38
44
  - !ruby/object:Gem::Version
39
- version: 4.2.0
45
+ version: 5.0.0
40
46
  - !ruby/object:Gem::Dependency
41
47
  name: tailwind_merge
42
48
  requirement: !ruby/object:Gem::Requirement
43
49
  requirements:
44
50
  - - "~>"
45
51
  - !ruby/object:Gem::Version
46
- version: '0.12'
52
+ version: '1.4'
47
53
  type: :development
48
54
  prerelease: false
49
55
  version_requirements: !ruby/object:Gem::Requirement
50
56
  requirements:
51
57
  - - "~>"
52
58
  - !ruby/object:Gem::Version
53
- version: '0.12'
59
+ version: '1.4'
54
60
  - !ruby/object:Gem::Dependency
55
61
  name: rake
56
62
  requirement: !ruby/object:Gem::Requirement
@@ -85,14 +91,14 @@ dependencies:
85
91
  requirements:
86
92
  - - "~>"
87
93
  - !ruby/object:Gem::Version
88
- version: '5.0'
94
+ version: '6.0'
89
95
  type: :development
90
96
  prerelease: false
91
97
  version_requirements: !ruby/object:Gem::Requirement
92
98
  requirements:
93
99
  - - "~>"
94
100
  - !ruby/object:Gem::Version
95
- version: '5.0'
101
+ version: '6.0'
96
102
  description: Ruby UI is a UI Component Library for Ruby developers. Built on top of
97
103
  the Phlex Framework.
98
104
  email: george.kettle@icloud.com
@@ -138,6 +144,7 @@ files:
138
144
  - lib/ruby_ui/aspect_ratio/aspect_ratio.rb
139
145
  - lib/ruby_ui/aspect_ratio/aspect_ratio_docs.rb
140
146
  - lib/ruby_ui/avatar/avatar.rb
147
+ - lib/ruby_ui/avatar/avatar_controller.js
141
148
  - lib/ruby_ui/avatar/avatar_docs.rb
142
149
  - lib/ruby_ui/avatar/avatar_fallback.rb
143
150
  - lib/ruby_ui/avatar/avatar_image.rb
@@ -200,11 +207,16 @@ files:
200
207
  - lib/ruby_ui/collapsible/collapsible_docs.rb
201
208
  - lib/ruby_ui/collapsible/collapsible_trigger.rb
202
209
  - lib/ruby_ui/combobox/combobox.rb
210
+ - lib/ruby_ui/combobox/combobox_badge.rb
211
+ - lib/ruby_ui/combobox/combobox_badge_trigger.rb
203
212
  - lib/ruby_ui/combobox/combobox_checkbox.rb
213
+ - lib/ruby_ui/combobox/combobox_clear_button.rb
204
214
  - lib/ruby_ui/combobox/combobox_controller.js
205
215
  - lib/ruby_ui/combobox/combobox_docs.rb
206
216
  - lib/ruby_ui/combobox/combobox_empty_state.rb
217
+ - lib/ruby_ui/combobox/combobox_input_trigger.rb
207
218
  - lib/ruby_ui/combobox/combobox_item.rb
219
+ - lib/ruby_ui/combobox/combobox_item_indicator.rb
208
220
  - lib/ruby_ui/combobox/combobox_list.rb
209
221
  - lib/ruby_ui/combobox/combobox_list_group.rb
210
222
  - lib/ruby_ui/combobox/combobox_popover.rb
@@ -216,6 +228,7 @@ files:
216
228
  - lib/ruby_ui/command/command_controller.js
217
229
  - lib/ruby_ui/command/command_dialog.rb
218
230
  - lib/ruby_ui/command/command_dialog_content.rb
231
+ - lib/ruby_ui/command/command_dialog_controller.js
219
232
  - lib/ruby_ui/command/command_dialog_trigger.rb
220
233
  - lib/ruby_ui/command/command_docs.rb
221
234
  - lib/ruby_ui/command/command_empty.rb
@@ -231,6 +244,29 @@ files:
231
244
  - lib/ruby_ui/context_menu/context_menu_label.rb
232
245
  - lib/ruby_ui/context_menu/context_menu_separator.rb
233
246
  - lib/ruby_ui/context_menu/context_menu_trigger.rb
247
+ - lib/ruby_ui/data_table/data_table.rb
248
+ - lib/ruby_ui/data_table/data_table_bulk_actions.rb
249
+ - lib/ruby_ui/data_table/data_table_column_toggle.rb
250
+ - lib/ruby_ui/data_table/data_table_column_visibility_controller.js
251
+ - lib/ruby_ui/data_table/data_table_controller.js
252
+ - lib/ruby_ui/data_table/data_table_docs.rb
253
+ - lib/ruby_ui/data_table/data_table_expand_toggle.rb
254
+ - lib/ruby_ui/data_table/data_table_form.rb
255
+ - lib/ruby_ui/data_table/data_table_kaminari_adapter.rb
256
+ - lib/ruby_ui/data_table/data_table_manual_adapter.rb
257
+ - lib/ruby_ui/data_table/data_table_pagination.rb
258
+ - lib/ruby_ui/data_table/data_table_pagination_bar.rb
259
+ - lib/ruby_ui/data_table/data_table_pagy_adapter.rb
260
+ - lib/ruby_ui/data_table/data_table_per_page_select.rb
261
+ - lib/ruby_ui/data_table/data_table_row_checkbox.rb
262
+ - lib/ruby_ui/data_table/data_table_search.rb
263
+ - lib/ruby_ui/data_table/data_table_search_controller.js
264
+ - lib/ruby_ui/data_table/data_table_select_all_checkbox.rb
265
+ - lib/ruby_ui/data_table/data_table_selection_summary.rb
266
+ - lib/ruby_ui/data_table/data_table_sort_head.rb
267
+ - lib/ruby_ui/data_table/data_table_toolbar.rb
268
+ - lib/ruby_ui/date_picker/date_picker.rb
269
+ - lib/ruby_ui/date_picker/date_picker_docs.rb
234
270
  - lib/ruby_ui/dialog/dialog.rb
235
271
  - lib/ruby_ui/dialog/dialog_content.rb
236
272
  - lib/ruby_ui/dialog/dialog_controller.js
@@ -274,6 +310,11 @@ files:
274
310
  - lib/ruby_ui/masked_input/masked_input.rb
275
311
  - lib/ruby_ui/masked_input/masked_input_controller.js
276
312
  - lib/ruby_ui/masked_input/masked_input_docs.rb
313
+ - lib/ruby_ui/native_select/native_select.rb
314
+ - lib/ruby_ui/native_select/native_select_docs.rb
315
+ - lib/ruby_ui/native_select/native_select_group.rb
316
+ - lib/ruby_ui/native_select/native_select_icon.rb
317
+ - lib/ruby_ui/native_select/native_select_option.rb
277
318
  - lib/ruby_ui/pagination/pagination.rb
278
319
  - lib/ruby_ui/pagination/pagination_content.rb
279
320
  - lib/ruby_ui/pagination/pagination_docs.rb
@@ -363,11 +404,26 @@ files:
363
404
  - lib/ruby_ui/tabs/tabs_trigger.rb
364
405
  - lib/ruby_ui/textarea/textarea.rb
365
406
  - lib/ruby_ui/textarea/textarea_docs.rb
366
- - lib/ruby_ui/theme_toggle/set_dark_mode.rb
367
- - lib/ruby_ui/theme_toggle/set_light_mode.rb
368
407
  - lib/ruby_ui/theme_toggle/theme_toggle.rb
369
408
  - lib/ruby_ui/theme_toggle/theme_toggle_controller.js
370
409
  - lib/ruby_ui/theme_toggle/theme_toggle_docs.rb
410
+ - lib/ruby_ui/toast/toast.rb
411
+ - lib/ruby_ui/toast/toast_action.rb
412
+ - lib/ruby_ui/toast/toast_cancel.rb
413
+ - lib/ruby_ui/toast/toast_close.rb
414
+ - lib/ruby_ui/toast/toast_controller.js
415
+ - lib/ruby_ui/toast/toast_description.rb
416
+ - lib/ruby_ui/toast/toast_docs.rb
417
+ - lib/ruby_ui/toast/toast_icon.rb
418
+ - lib/ruby_ui/toast/toast_item.rb
419
+ - lib/ruby_ui/toast/toast_region.rb
420
+ - lib/ruby_ui/toast/toast_title.rb
421
+ - lib/ruby_ui/toast/toaster_controller.js
422
+ - lib/ruby_ui/toggle/toggle.rb
423
+ - lib/ruby_ui/toggle/toggle_controller.js
424
+ - lib/ruby_ui/toggle_group/toggle_group.rb
425
+ - lib/ruby_ui/toggle_group/toggle_group_controller.js
426
+ - lib/ruby_ui/toggle_group/toggle_group_item.rb
371
427
  - lib/ruby_ui/tooltip/tooltip.rb
372
428
  - lib/ruby_ui/tooltip/tooltip_content.rb
373
429
  - lib/ruby_ui/tooltip/tooltip_controller.js
@@ -397,7 +453,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
397
453
  - !ruby/object:Gem::Version
398
454
  version: '0'
399
455
  requirements: []
400
- rubygems_version: 3.6.9
456
+ rubygems_version: 4.0.10
401
457
  specification_version: 4
402
458
  summary: RubyUI is a UI Component Library for Ruby developers.
403
459
  test_files: []
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyUI
4
- class SetDarkMode < Base
5
- def view_template(&)
6
- div(**attrs, &)
7
- end
8
-
9
- def default_attrs
10
- {
11
- class: "hidden dark:inline-block",
12
- data: {controller: "ruby-ui--theme-toggle", action: "click->ruby-ui--theme-toggle#setLightTheme"}
13
- }
14
- end
15
- end
16
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module RubyUI
4
- class SetLightMode < Base
5
- def view_template(&)
6
- div(**attrs, &)
7
- end
8
-
9
- def default_attrs
10
- {
11
- class: "dark:hidden",
12
- data: {controller: "ruby-ui--theme-toggle", action: "click->ruby-ui--theme-toggle#setDarkTheme"}
13
- }
14
- end
15
- end
16
- end