lightning_ui_kit 0.3.1 → 0.3.3

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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +30 -0
  3. data/app/assets/stylesheets/lightning_ui_kit/application.css +58 -0
  4. data/app/assets/stylesheets/lightning_ui_kit/themes.css +133 -0
  5. data/app/assets/vendor/lightning_ui_kit.css +415 -374
  6. data/app/assets/vendor/lightning_ui_kit.js +2 -2
  7. data/app/components/lightning_ui_kit/alert_component.rb +1 -1
  8. data/app/components/lightning_ui_kit/avatar_component.html.erb +1 -1
  9. data/app/components/lightning_ui_kit/badge_component.rb +14 -14
  10. data/app/components/lightning_ui_kit/banner_component.html.erb +1 -1
  11. data/app/components/lightning_ui_kit/banner_component.rb +3 -3
  12. data/app/components/lightning_ui_kit/button_component.rb +16 -16
  13. data/app/components/lightning_ui_kit/checkbox_component.html.erb +10 -10
  14. data/app/components/lightning_ui_kit/combobox_component.html.erb +14 -14
  15. data/app/components/lightning_ui_kit/combobox_component.rb +4 -4
  16. data/app/components/lightning_ui_kit/description_list/item_component.html.erb +2 -2
  17. data/app/components/lightning_ui_kit/dropdown_component.html.erb +2 -2
  18. data/app/components/lightning_ui_kit/dropdown_component.rb +1 -1
  19. data/app/components/lightning_ui_kit/dropzone_component.html.erb +13 -13
  20. data/app/components/lightning_ui_kit/dropzone_component.rb +1 -1
  21. data/app/components/lightning_ui_kit/file_input_component.html.erb +2 -2
  22. data/app/components/lightning_ui_kit/file_input_component.rb +3 -3
  23. data/app/components/lightning_ui_kit/input_component.html.erb +2 -2
  24. data/app/components/lightning_ui_kit/input_component.rb +9 -9
  25. data/app/components/lightning_ui_kit/layout_component.html.erb +10 -10
  26. data/app/components/lightning_ui_kit/modal_component.html.erb +4 -4
  27. data/app/components/lightning_ui_kit/pagination_component.html.erb +3 -3
  28. data/app/components/lightning_ui_kit/pagination_component.rb +14 -5
  29. data/app/components/lightning_ui_kit/select_component.html.erb +3 -3
  30. data/app/components/lightning_ui_kit/select_component.rb +3 -3
  31. data/app/components/lightning_ui_kit/sidebar_link_component.html.erb +1 -1
  32. data/app/components/lightning_ui_kit/sidebar_link_component.rb +11 -7
  33. data/app/components/lightning_ui_kit/sidebar_section_component.rb +1 -1
  34. data/app/components/lightning_ui_kit/skeleton_component.html.erb +2 -2
  35. data/app/components/lightning_ui_kit/spinner_component.html.erb +5 -4
  36. data/app/components/lightning_ui_kit/switch_component.html.erb +2 -2
  37. data/app/components/lightning_ui_kit/switch_component.rb +7 -7
  38. data/app/components/lightning_ui_kit/table_component.html.erb +7 -7
  39. data/app/components/lightning_ui_kit/text_component.rb +1 -1
  40. data/app/components/lightning_ui_kit/textarea_component.html.erb +2 -2
  41. data/app/components/lightning_ui_kit/textarea_component.rb +3 -3
  42. data/app/components/lightning_ui_kit/toast_component.html.erb +3 -3
  43. data/app/components/lightning_ui_kit/tooltip_component.html.erb +2 -2
  44. data/app/javascript/lightning_ui_kit/controllers/combobox_controller.js +2 -2
  45. data/app/javascript/lightning_ui_kit/controllers/dropzone_controller.js +1 -1
  46. data/lib/lightning_ui_kit/builder.rb +56 -56
  47. data/lib/lightning_ui_kit/version.rb +1 -1
  48. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/bigdecimal.so +0 -0
  49. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/gem_make.out +5 -5
  50. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/mkmf.log +3 -3
  51. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/date_core.so +0 -0
  52. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/gem_make.out +5 -5
  53. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/erb/escape.so +0 -0
  54. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/gem_make.out +5 -5
  55. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/gem_make.out +5 -5
  56. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/io/console.so +0 -0
  57. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/gem_make.out +5 -5
  58. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/generator.so +0 -0
  59. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/parser.so +0 -0
  60. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/gem_make.out +5 -5
  61. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/nio4r_ext.so +0 -0
  62. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/gem_make.out +5 -5
  63. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/prism/prism.so +0 -0
  64. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/gem_make.out +5 -5
  65. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/psych.so +0 -0
  66. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/gem_make.out +5 -5
  67. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/racc/cparse.so +0 -0
  68. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/gem_make.out +5 -5
  69. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/stringio.so +0 -0
  70. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/gem_make.out +5 -5
  71. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/websocket_mask.so +0 -0
  72. data/vendor/bundle/ruby/3.4.0/gems/bigdecimal-3.2.2/lib/bigdecimal.so +0 -0
  73. data/vendor/bundle/ruby/3.4.0/gems/date-3.4.1/lib/date_core.so +0 -0
  74. data/vendor/bundle/ruby/3.4.0/gems/erb-5.0.2/lib/erb/escape.so +0 -0
  75. data/vendor/bundle/ruby/3.4.0/gems/io-console-0.8.1/lib/io/console.so +0 -0
  76. data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/generator.so +0 -0
  77. data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/parser.so +0 -0
  78. data/vendor/bundle/ruby/3.4.0/gems/nio4r-2.7.4/lib/nio4r_ext.so +0 -0
  79. data/vendor/bundle/ruby/3.4.0/gems/prism-1.8.0/lib/prism/prism.so +0 -0
  80. data/vendor/bundle/ruby/3.4.0/gems/psych-5.2.6/lib/psych.so +0 -0
  81. data/vendor/bundle/ruby/3.4.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  82. data/vendor/bundle/ruby/3.4.0/gems/stringio-3.1.7/lib/stringio.so +0 -0
  83. data/vendor/bundle/ruby/3.4.0/gems/websocket-driver-0.8.0/lib/websocket_mask.so +0 -0
  84. metadata +2 -1
@@ -2,14 +2,14 @@
2
2
  <% if render_label? %>
3
3
  <%= tag.label(
4
4
  effective_label,
5
- class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
5
+ class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
6
6
  data: label_data
7
7
  ) %>
8
8
  <% end %>
9
9
  <% if @description %>
10
10
  <%= tag.p(
11
11
  @description,
12
- class: "lui:text-base/6 lui:text-zinc-500 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
12
+ class: "lui:text-base/6 lui:text-foreground-muted lui:data-disabled:opacity-50 lui:sm:text-sm/6",
13
13
  data: description_data
14
14
  ) %>
15
15
  <% end %>
@@ -17,7 +17,7 @@
17
17
  <% if @multiple %>
18
18
  <%# Multiple selection: tags + input in a styled container %>
19
19
  <div
20
- class="lui:relative lui:flex lui:flex-wrap lui:items-center lui:gap-1.5 lui:w-full lui:min-h-[42px] lui:sm:min-h-[38px] lui:rounded-lg lui:border lui:border-zinc-950/10 lui:data-[hover]:border-zinc-950/20 lui:bg-white lui:shadow-sm lui:px-2 lui:py-1.5 lui:focus-within:ring-2 lui:focus-within:ring-blue-500 lui:focus-within:ring-offset-0 <%= 'lui:opacity-50' if @disabled %> <%= 'lui:border-red-500' if has_errors? %>"
20
+ class="lui:relative lui:flex lui:flex-wrap lui:items-center lui:gap-1.5 lui:w-full lui:min-h-[42px] lui:sm:min-h-[38px] lui:rounded-lg lui:border lui:border-border lui:data-[hover]:border-border-hover lui:bg-surface-input lui:shadow-sm lui:px-2 lui:py-1.5 lui:focus-within:ring-2 lui:focus-within:ring-focus lui:focus-within:ring-offset-0 <%= 'lui:opacity-50' if @disabled %> <%= 'lui:border-destructive-border' if has_errors? %>"
21
21
  data-lui-combobox-target="inputWrapper selectedTags"
22
22
  >
23
23
  <input
@@ -27,7 +27,7 @@
27
27
  aria-expanded="false"
28
28
  aria-haspopup="listbox"
29
29
  autocomplete="off"
30
- class="lui:flex-1 lui:min-w-[120px] lui:border-0 lui:bg-transparent lui:p-0 lui:text-base/6 lui:text-zinc-950 lui:placeholder:text-zinc-500 lui:sm:text-sm/6 lui:focus:outline-none lui:focus:ring-0"
30
+ class="lui:flex-1 lui:min-w-[120px] lui:border-0 lui:bg-transparent lui:p-0 lui:text-base/6 lui:text-foreground lui:placeholder:text-foreground-muted lui:sm:text-sm/6 lui:focus:outline-none lui:focus:ring-0"
31
31
  placeholder="<%= @placeholder %>"
32
32
  data-lui-combobox-target="input"
33
33
  data-action="input->lui-combobox#onInput focus->lui-combobox#onFocus keydown->lui-combobox#onKeydown"
@@ -36,7 +36,7 @@
36
36
  <%= "data-invalid=true" if has_errors? %>
37
37
  />
38
38
  <span class="lui:pointer-events-none lui:flex lui:items-center">
39
- <svg class="lui:size-5 lui:stroke-zinc-500 lui:sm:size-4" viewBox="0 0 16 16" aria-hidden="true" fill="none">
39
+ <svg class="lui:size-5 lui:stroke-foreground-muted lui:sm:size-4" viewBox="0 0 16 16" aria-hidden="true" fill="none">
40
40
  <path d="M5.75 10.75L8 13L10.25 10.75" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
41
41
  <path d="M10.25 5.25L8 3L5.75 5.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
42
42
  </svg>
@@ -44,7 +44,7 @@
44
44
  </div>
45
45
  <% else %>
46
46
  <%# Single selection: standard input styling %>
47
- <span class="lui:relative lui:block lui:w-full lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-white lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-blue-500 lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-zinc-950/5 lui:has-data-disabled:before:shadow-none lui:has-data-invalid:before:shadow-red-500/10">
47
+ <span class="lui:relative lui:block lui:w-full lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-surface-input lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-focus lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-surface-hover lui:has-data-disabled:before:shadow-none lui:has-data-invalid:before:shadow-destructive-border/10">
48
48
  <input
49
49
  type="text"
50
50
  role="combobox"
@@ -61,7 +61,7 @@
61
61
  <%= "data-invalid=true" if has_errors? %>
62
62
  />
63
63
  <span class="lui:pointer-events-none lui:absolute lui:inset-y-0 lui:right-0 lui:flex lui:items-center lui:pr-2">
64
- <svg class="lui:size-5 lui:stroke-zinc-500 lui:sm:size-4" viewBox="0 0 16 16" aria-hidden="true" fill="none">
64
+ <svg class="lui:size-5 lui:stroke-foreground-muted lui:sm:size-4" viewBox="0 0 16 16" aria-hidden="true" fill="none">
65
65
  <path d="M5.75 10.75L8 13L10.25 10.75" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
66
66
  <path d="M10.25 5.25L8 3L5.75 5.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
67
67
  </svg>
@@ -73,17 +73,17 @@
73
73
  data-lui-combobox-target="listbox"
74
74
  role="listbox"
75
75
  aria-label="<%= effective_label || 'Options' %>"
76
- class="lui:hidden lui:absolute lui:z-50 lui:mt-1 lui:w-full lui:max-h-60 lui:overflow-auto lui:rounded-lg lui:bg-white lui:shadow-lg lui:ring-1 lui:ring-zinc-950/10"
76
+ class="lui:hidden lui:absolute lui:z-50 lui:mt-1 lui:w-full lui:max-h-60 lui:overflow-auto lui:rounded-lg lui:bg-surface-secondary lui:shadow-lg lui:ring-1 lui:ring-border"
77
77
  >
78
78
  <template data-lui-combobox-target="optionTemplate">
79
79
  <div
80
80
  role="option"
81
81
  data-lui-combobox-target="option"
82
- class="lui:relative lui:cursor-pointer lui:select-none lui:py-2 lui:px-3 lui:text-zinc-900 lui:hover:bg-zinc-100 lui:data-[selected]:bg-blue-50 lui:data-[highlighted]:bg-zinc-100 lui:data-[disabled]:opacity-50 lui:data-[disabled]:cursor-not-allowed"
82
+ class="lui:relative lui:cursor-pointer lui:select-none lui:py-2 lui:px-3 lui:text-foreground lui:hover:bg-surface-tertiary lui:data-[selected]:bg-interactive-subtle lui:data-[highlighted]:bg-surface-tertiary lui:data-[disabled]:opacity-50 lui:data-[disabled]:cursor-not-allowed"
83
83
  data-action="click->lui-combobox#selectOption mouseenter->lui-combobox#highlightOption"
84
84
  >
85
85
  <span data-label class="lui:block lui:truncate"></span>
86
- <span data-checkmark class="lui:hidden lui:absolute lui:inset-y-0 lui:right-0 lui:flex lui:items-center lui:pr-3 lui:text-blue-600">
86
+ <span data-checkmark class="lui:hidden lui:absolute lui:inset-y-0 lui:right-0 lui:flex lui:items-center lui:pr-3 lui:text-interactive">
87
87
  <svg class="lui:size-5" viewBox="0 0 20 20" fill="currentColor">
88
88
  <path fill-rule="evenodd" d="M16.704 4.153a.75.75 0 01.143 1.052l-8 10.5a.75.75 0 01-1.127.075l-4.5-4.5a.75.75 0 011.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 011.05-.143z" clip-rule="evenodd" />
89
89
  </svg>
@@ -91,16 +91,16 @@
91
91
  </div>
92
92
  </template>
93
93
  <div data-lui-combobox-target="optionsContainer"></div>
94
- <div data-lui-combobox-target="loading" class="lui:hidden lui:py-2 lui:px-3 lui:text-zinc-500 lui:text-sm">
94
+ <div data-lui-combobox-target="loading" class="lui:hidden lui:py-2 lui:px-3 lui:text-foreground-muted lui:text-sm">
95
95
  Loading...
96
96
  </div>
97
- <div data-lui-combobox-target="noResults" class="lui:hidden lui:py-2 lui:px-3 lui:text-zinc-500 lui:text-sm">
97
+ <div data-lui-combobox-target="noResults" class="lui:hidden lui:py-2 lui:px-3 lui:text-foreground-muted lui:text-sm">
98
98
  No results found
99
99
  </div>
100
100
  <% if @allow_custom %>
101
101
  <div
102
102
  data-lui-combobox-target="createOption"
103
- class="lui:hidden lui:cursor-pointer lui:py-2 lui:px-3 lui:text-blue-600 lui:hover:bg-blue-50 lui:border-t lui:border-zinc-100 lui:flex lui:items-center lui:gap-1.5"
103
+ class="lui:hidden lui:cursor-pointer lui:py-2 lui:px-3 lui:text-interactive lui:hover:bg-interactive-subtle lui:border-t lui:border-border-subtle lui:flex lui:items-center lui:gap-1.5"
104
104
  data-action="click->lui-combobox#createCustomOption"
105
105
  >
106
106
  <%= heroicon "plus", variant: :solid, options: { class: "lui:size-4" } %>
@@ -121,7 +121,7 @@
121
121
  <% if has_errors? %>
122
122
  <%= tag.p(
123
123
  error_messages,
124
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
124
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
125
125
  data: error_data
126
126
  ) %>
127
127
  <% end %>
@@ -114,11 +114,11 @@ class LightningUiKit::ComboboxComponent < LightningUiKit::BaseComponent
114
114
  "lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg",
115
115
  "lui:px-[calc(--spacing(3.5)-1px)] lui:py-[calc(--spacing(2.5)-1px)]",
116
116
  "lui:sm:px-[calc(--spacing(3)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)]",
117
- "lui:text-base/6 lui:text-zinc-950 lui:placeholder:text-zinc-500 lui:sm:text-sm/6",
118
- "lui:border lui:border-zinc-950/10 lui:data-[hover]:border-zinc-950/20",
117
+ "lui:text-base/6 lui:text-foreground lui:placeholder:text-foreground-muted lui:sm:text-sm/6",
118
+ "lui:border lui:border-border lui:data-[hover]:border-border-hover",
119
119
  "lui:bg-transparent lui:focus:outline-hidden",
120
- "lui:data-invalid:border-red-500 lui:data-invalid:data-[hover]:border-red-500/60",
121
- "lui:data-disabled:border-zinc-950/20",
120
+ "lui:data-invalid:border-destructive-border lui:data-invalid:data-[hover]:border-destructive-border/60",
121
+ "lui:data-disabled:border-border-hover",
122
122
  "lui:pr-10"
123
123
  ].join(" "))
124
124
  end
@@ -1,8 +1,8 @@
1
- <dt class="lui:col-start-1 lui:border-t lui:border-zinc-950/5 lui:pt-3 lui:text-zinc-500 lui:first:border-none lui:sm:border-t lui:sm:border-zinc-950/5 lui:sm:py-3 lui:flex lui:items-center">
1
+ <dt class="lui:col-start-1 lui:border-t lui:border-border-subtle lui:pt-3 lui:text-foreground-muted lui:first:border-none lui:sm:border-t lui:sm:border-border-subtle lui:sm:py-3 lui:flex lui:items-center">
2
2
  <%= @label %>
3
3
  </dt>
4
4
 
5
- <dd class="lui:pt-1 lui:pb-3 lui:text-zinc-950 lui:sm:border-t lui:sm:border-zinc-950/5 lui:sm:py-3 lui:sm:nth-2:border-none lui:flex lui:items-center">
5
+ <dd class="lui:pt-1 lui:pb-3 lui:text-foreground lui:sm:border-t lui:sm:border-border-subtle lui:sm:py-3 lui:sm:nth-2:border-none lui:flex lui:items-center">
6
6
  <div class="lui:w-full">
7
7
  <% if @value %>
8
8
  <%= @value %>
@@ -1,5 +1,5 @@
1
1
  <div data-controller="lui-dropdown" class="lui:relative">
2
- <button type="button" data-action="lui-dropdown#toggle click@window->lui-dropdown#hide" class="lui:flex lui:items-center lui:justify-between lui:cursor-pointer lui:w-full lui:text-sm/6 lui:font-medium lui:text-zinc-700 lui:hover:text-zinc-950">
2
+ <button type="button" data-action="lui-dropdown#toggle click@window->lui-dropdown#hide" class="lui:flex lui:items-center lui:justify-between lui:cursor-pointer lui:w-full lui:text-sm/6 lui:font-medium lui:text-foreground-secondary lui:hover:text-foreground">
3
3
  <% if trigger? %>
4
4
  <%= trigger %>
5
5
  <% else %>
@@ -27,7 +27,7 @@
27
27
  data-transition-leave-to="opacity-0 scale-95"
28
28
  >
29
29
  <% items.each do |item| %>
30
- <div class="lui:px-4 lui:py-2 lui:text-sm/5 lui:font-medium lui:text-zinc-950 lui:hover:bg-zinc-950/5 lui:rounded-md">
30
+ <div class="lui:px-4 lui:py-2 lui:text-sm/5 lui:font-medium lui:text-foreground lui:hover:bg-surface-hover lui:rounded-md">
31
31
  <%= item %>
32
32
  </div>
33
33
  <% end %>
@@ -9,7 +9,7 @@ class LightningUiKit::DropdownComponent < LightningUiKit::BaseComponent
9
9
  end
10
10
 
11
11
  def menu_classes
12
- classes = %w[lui:hidden lui:transition lui:transform lui:p-1 lui:origin-top-left lui:absolute lui:left-0 lui:rounded-md lui:shadow-lg lui:bg-white lui:ring-1 lui:ring-zinc-950/10 lui:focus:outline-none lui:z-50]
12
+ classes = %w[lui:hidden lui:transition lui:transform lui:p-1 lui:origin-top-left lui:absolute lui:left-0 lui:rounded-md lui:shadow-lg lui:bg-surface-secondary lui:ring-1 lui:ring-border lui:focus:outline-none lui:z-50]
13
13
  case @position.to_s
14
14
  when "top"
15
15
  classes << "lui:mb-2 lui:top-auto lui:bottom-full"
@@ -3,25 +3,25 @@
3
3
  <div class="lui:w-full lui:grid lui:gap-1 lui:my-4" id="#NEW_FILE" data-lui-dropzone-target="file">
4
4
  <div class="lui:flex lui:items-center lui:justify-between lui:gap-2">
5
5
  <div class="lui:flex lui:items-center lui:gap-2">
6
- <%= heroicon("document", variant: :outline, options: {class: "lui:w-10 lui:h-10 lui:text-blue-500"}) %>
6
+ <%= heroicon("document", variant: :outline, options: {class: "lui:w-10 lui:h-10 lui:text-focus"}) %>
7
7
  <div class="lui:grid lui:gap-1">
8
- <h4 class="lui:text-zinc-950 lui:text-sm lui:font-normal lui:leading-snug" data-lui-dropzone-target="filename"></h4>
9
- <h5 class="lui:text-zinc-500 lui:text-xs lui:font-normal lui:leading-[18px]" data-lui-dropzone-target="status"></h5>
8
+ <h4 class="lui:text-foreground lui:text-sm lui:font-normal lui:leading-snug" data-lui-dropzone-target="filename"></h4>
9
+ <h5 class="lui:text-foreground-muted lui:text-xs lui:font-normal lui:leading-[18px]" data-lui-dropzone-target="status"></h5>
10
10
  </div>
11
11
  </div>
12
12
  <%= heroicon(
13
13
  "x-circle",
14
14
  variant: :outline,
15
15
  options: {
16
- class: "lui:w-6 lui:h-6 lui:text-zinc-500 lui:hover:text-blue-500 lui:hover:cursor-pointer",
16
+ class: "lui:w-6 lui:h-6 lui:text-foreground-muted lui:hover:text-focus lui:hover:cursor-pointer",
17
17
  data_action: "click->lui-dropzone#removeFile"
18
18
  }) %>
19
19
  </div>
20
20
  <div class="lui:relative lui:flex lui:items-center lui:gap-2.5 lui:py-1.5">
21
- <div class="lui:relative lui:w-full lui:h-2.5 lui:overflow-hidden lui:rounded-3xl lui:bg-zinc-100">
22
- <div data-lui-dropzone-target="progressbar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 0%" class="lui:flex lui:h-full lui:items-center lui:justify-center lui:bg-blue-600 lui:text-white lui:rounded-3xl"></div>
21
+ <div class="lui:relative lui:w-full lui:h-2.5 lui:overflow-hidden lui:rounded-3xl lui:bg-surface-tertiary">
22
+ <div data-lui-dropzone-target="progressbar" role="progressbar" aria-valuenow="100" aria-valuemin="0" aria-valuemax="100" style="width: 0%" class="lui:flex lui:h-full lui:items-center lui:justify-center lui:bg-interactive lui:text-foreground-invert lui:rounded-3xl"></div>
23
23
  </div>
24
- <span data-lui-dropzone-target="percentage-progress" class="lui:ml-2 lui:bg-white lui:rounded-full lui:text-zinc-950 lui:text-xs lui:font-medium lui:flex lui:justify-center lui:items-center">0%</span>
24
+ <span data-lui-dropzone-target="percentage-progress" class="lui:ml-2 lui:bg-surface lui:rounded-full lui:text-foreground lui:text-xs lui:font-medium lui:flex lui:justify-center lui:items-center">0%</span>
25
25
  </div>
26
26
  </div>
27
27
  </template>
@@ -30,18 +30,18 @@
30
30
  <% if @description %>
31
31
  <%= tag.p(
32
32
  @description,
33
- class: "lui:text-base/6 lui:text-zinc-500 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
33
+ class: "lui:text-base/6 lui:text-foreground-muted lui:data-disabled:opacity-50 lui:sm:text-sm/6",
34
34
  data: description_data
35
35
  ) %>
36
36
  <% end %>
37
37
 
38
- <div class="lui:py-9 lui:bg-zinc-50 lui:rounded-2xl lui:border lui:border-zinc-950/10 lui:border-dotted lui:hover:cursor-pointer lui:hover:bg-zinc-100" data-action="click->lui-dropzone#selectFiles">
38
+ <div class="lui:py-9 lui:bg-surface-secondary lui:rounded-2xl lui:border lui:border-border lui:border-dotted lui:hover:cursor-pointer lui:hover:bg-surface-tertiary" data-action="click->lui-dropzone#selectFiles">
39
39
  <div class="lui:mb-3 lui:flex lui:items-center lui:justify-center">
40
- <%= heroicon("cloud-arrow-up", variant: :outline, options: {class: "lui:w-10 lui:h-10 lui:text-blue-500"}) %>
40
+ <%= heroicon("cloud-arrow-up", variant: :outline, options: {class: "lui:w-10 lui:h-10 lui:text-focus"}) %>
41
41
  </div>
42
- <p class="lui:text-center lui:text-zinc-950 lui:text-base lui:font-medium lui:leading-snug"><%= t("dropzone.default_message") %></p>
42
+ <p class="lui:text-center lui:text-foreground lui:text-base lui:font-medium lui:leading-snug"><%= t("dropzone.default_message") %></p>
43
43
  <% if @placeholder %>
44
- <p class="lui:text-center lui:text-zinc-500 lui:text-base lui:sm:text-sm/6 lui:font-normal lui:leading-4 lui:mt-1.5"><%= @placeholder %></p>
44
+ <p class="lui:text-center lui:text-foreground-muted lui:text-base lui:sm:text-sm/6 lui:font-normal lui:leading-4 lui:mt-1.5"><%= @placeholder %></p>
45
45
  <% end %>
46
46
  <%= render_file_input %>
47
47
  </div>
@@ -49,7 +49,7 @@
49
49
  <% if has_errors? %>
50
50
  <%= tag.p(
51
51
  error_messages,
52
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
52
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
53
53
  data: error_data
54
54
  ) %>
55
55
  <% end %>
@@ -52,7 +52,7 @@ class LightningUiKit::DropzoneComponent < LightningUiKit::BaseComponent
52
52
 
53
53
  def label_html_options
54
54
  {
55
- class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
55
+ class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
56
56
  data: label_data
57
57
  }
58
58
  end
@@ -3,7 +3,7 @@
3
3
  <% if @description %>
4
4
  <%= tag.p(
5
5
  @description,
6
- class: "lui:text-base/6 lui:text-zinc-500 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
6
+ class: "lui:text-base/6 lui:text-foreground-muted lui:data-disabled:opacity-50 lui:sm:text-sm/6",
7
7
  data: description_data
8
8
  ) %>
9
9
  <% end %>
@@ -13,7 +13,7 @@
13
13
  <% if has_errors? %>
14
14
  <%= tag.p(
15
15
  error_messages,
16
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
16
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
17
17
  data: error_data
18
18
  ) %>
19
19
  <% end %>
@@ -51,7 +51,7 @@ class LightningUiKit::FileInputComponent < LightningUiKit::BaseComponent
51
51
 
52
52
  def label_html_options
53
53
  {
54
- class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
54
+ class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
55
55
  data: label_data
56
56
  }
57
57
  end
@@ -68,7 +68,7 @@ class LightningUiKit::FileInputComponent < LightningUiKit::BaseComponent
68
68
  end
69
69
 
70
70
  def file_input_classes
71
- "lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:text-base/6 lui:text-zinc-950 lui:placeholder:text-zinc-500 lui:sm:text-sm/6 lui:border lui:border-zinc-950/10 lui:data-[hover]:border-zinc-950/20 lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-red-500 lui:data-invalid:data-[hover]:border-red-500 lui:data-disabled:cursor-not-allowed lui:data-disabled:border-zinc-950/20 lui:data-disabled:file:cursor-not-allowed lui:file:cursor-pointer lui:cursor-pointer lui:file:border-0 lui:file:px-[calc(--spacing(3.5)-1px)] lui:file:py-[calc(--spacing(2.5)-1px)] lui:file:sm:px-[calc(--spacing(3)-1px)] lui:file:sm:py-[calc(--spacing(1.5)-1px)] lui:file:mr-4 lui:file:bg-zinc-100 lui:file:rounded-l-[calc(var(--radius-lg)-1px)]"
71
+ "lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:text-base/6 lui:text-foreground lui:placeholder:text-foreground-muted lui:sm:text-sm/6 lui:border lui:border-border lui:data-[hover]:border-border-hover lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-destructive-border lui:data-invalid:data-[hover]:border-destructive-border lui:data-disabled:cursor-not-allowed lui:data-disabled:border-border-hover lui:data-disabled:file:cursor-not-allowed lui:file:cursor-pointer lui:cursor-pointer lui:file:border-0 lui:file:px-[calc(--spacing(3.5)-1px)] lui:file:py-[calc(--spacing(2.5)-1px)] lui:file:sm:px-[calc(--spacing(3)-1px)] lui:file:sm:py-[calc(--spacing(1.5)-1px)] lui:file:mr-4 lui:file:bg-surface-tertiary lui:file:rounded-l-[calc(var(--radius-lg)-1px)]"
72
72
  end
73
73
 
74
74
  def file_input_html_options
@@ -91,6 +91,6 @@ class LightningUiKit::FileInputComponent < LightningUiKit::BaseComponent
91
91
  end
92
92
 
93
93
  def control_classes
94
- "lui:relative lui:block lui:w-full lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-blue-500 lui:has-data-disabled:opacity-50"
94
+ "lui:relative lui:block lui:w-full lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-focus lui:has-data-disabled:opacity-50"
95
95
  end
96
96
  end
@@ -3,7 +3,7 @@
3
3
  <% if @description %>
4
4
  <%= tag.p(
5
5
  @description,
6
- class: "lui:text-base/6 lui:text-zinc-500 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
6
+ class: "lui:text-base/6 lui:text-foreground-muted lui:data-disabled:opacity-50 lui:sm:text-sm/6",
7
7
  data: description_data
8
8
  ) %>
9
9
  <% end %>
@@ -25,7 +25,7 @@
25
25
  <% if has_errors? %>
26
26
  <%= tag.p(
27
27
  error_messages,
28
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
28
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
29
29
  data: error_data
30
30
  ) %>
31
31
  <% end %>
@@ -68,7 +68,7 @@ class LightningUiKit::InputComponent < LightningUiKit::BaseComponent
68
68
  end
69
69
 
70
70
  def input_classes
71
- "lui:peer lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:px-[calc(--spacing(3.5)-1px)] lui:py-[calc(--spacing(2.5)-1px)] lui:sm:px-[calc(--spacing(3)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)] lui:text-base/6 lui:text-zinc-950 lui:placeholder:text-zinc-500 lui:sm:text-sm/6 lui:border lui:border-zinc-950/10 lui:data-[hover]:border-zinc-950/20 lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-red-500 lui:data-invalid:data-[hover]:border-red-500/60 lui:data-disabled:border-zinc-950/20"
71
+ "lui:peer lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:px-[calc(--spacing(3.5)-1px)] lui:py-[calc(--spacing(2.5)-1px)] lui:sm:px-[calc(--spacing(3)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)] lui:text-base/6 lui:text-foreground lui:placeholder:text-foreground-muted lui:sm:text-sm/6 lui:border lui:border-border lui:data-[hover]:border-border-hover lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-destructive-border lui:data-invalid:data-[hover]:border-destructive-border/60 lui:data-disabled:border-border-hover"
72
72
  end
73
73
 
74
74
  def input_html_options
@@ -117,24 +117,24 @@ class LightningUiKit::InputComponent < LightningUiKit::BaseComponent
117
117
  end
118
118
 
119
119
  def color_classes
120
- "lui:h-10 lui:w-14 lui:cursor-pointer lui:appearance-none lui:rounded-lg lui:border lui:border-zinc-950/10 lui:bg-transparent lui:p-1 " \
121
- "lui:data-[hover]:border-zinc-950/20 lui:focus:outline-none lui:focus:ring-2 lui:focus:ring-blue-500 " \
120
+ "lui:h-10 lui:w-14 lui:cursor-pointer lui:appearance-none lui:rounded-lg lui:border lui:border-border lui:bg-transparent lui:p-1 " \
121
+ "lui:data-[hover]:border-border-hover lui:focus:outline-none lui:focus:ring-2 lui:focus:ring-focus " \
122
122
  "[&::-webkit-color-swatch-wrapper]:lui:p-0 [&::-webkit-color-swatch]:lui:rounded-md [&::-webkit-color-swatch]:lui:border-0 " \
123
123
  "[&::-moz-color-swatch]:lui:rounded-md [&::-moz-color-swatch]:lui:border-0 " \
124
124
  "lui:disabled:opacity-50 lui:disabled:cursor-not-allowed"
125
125
  end
126
126
 
127
127
  def range_classes
128
- "lui:w-full lui:h-2 lui:appearance-none lui:cursor-pointer lui:bg-zinc-200 lui:rounded-full lui:focus:outline-none " \
129
- "[&::-webkit-slider-thumb]:lui:appearance-none [&::-webkit-slider-thumb]:lui:w-4 [&::-webkit-slider-thumb]:lui:h-4 [&::-webkit-slider-thumb]:lui:bg-blue-600 [&::-webkit-slider-thumb]:lui:rounded-full [&::-webkit-slider-thumb]:lui:cursor-pointer [&::-webkit-slider-thumb]:lui:shadow-sm [&::-webkit-slider-thumb]:lui:transition-transform [&::-webkit-slider-thumb]:hover:lui:scale-110 " \
130
- "[&::-moz-range-thumb]:lui:appearance-none [&::-moz-range-thumb]:lui:w-4 [&::-moz-range-thumb]:lui:h-4 [&::-moz-range-thumb]:lui:bg-blue-600 [&::-moz-range-thumb]:lui:rounded-full [&::-moz-range-thumb]:lui:border-0 [&::-moz-range-thumb]:lui:cursor-pointer [&::-moz-range-thumb]:lui:shadow-sm [&::-moz-range-thumb]:lui:transition-transform [&::-moz-range-thumb]:hover:lui:scale-110 " \
131
- "[&::-moz-range-track]:lui:bg-zinc-200 [&::-moz-range-track]:lui:rounded-full " \
128
+ "lui:w-full lui:h-2 lui:appearance-none lui:cursor-pointer lui:bg-surface-tertiary lui:rounded-full lui:focus:outline-none " \
129
+ "[&::-webkit-slider-thumb]:lui:appearance-none [&::-webkit-slider-thumb]:lui:w-4 [&::-webkit-slider-thumb]:lui:h-4 [&::-webkit-slider-thumb]:lui:bg-interactive [&::-webkit-slider-thumb]:lui:rounded-full [&::-webkit-slider-thumb]:lui:cursor-pointer [&::-webkit-slider-thumb]:lui:shadow-sm [&::-webkit-slider-thumb]:lui:transition-transform [&::-webkit-slider-thumb]:hover:lui:scale-110 " \
130
+ "[&::-moz-range-thumb]:lui:appearance-none [&::-moz-range-thumb]:lui:w-4 [&::-moz-range-thumb]:lui:h-4 [&::-moz-range-thumb]:lui:bg-interactive [&::-moz-range-thumb]:lui:rounded-full [&::-moz-range-thumb]:lui:border-0 [&::-moz-range-thumb]:lui:cursor-pointer [&::-moz-range-thumb]:lui:shadow-sm [&::-moz-range-thumb]:lui:transition-transform [&::-moz-range-thumb]:hover:lui:scale-110 " \
131
+ "[&::-moz-range-track]:lui:bg-surface-tertiary [&::-moz-range-track]:lui:rounded-full " \
132
132
  "lui:disabled:opacity-50 lui:disabled:cursor-not-allowed"
133
133
  end
134
134
 
135
135
  def label_html_options
136
136
  {
137
- class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
137
+ class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
138
138
  data: label_data
139
139
  }
140
140
  end
@@ -151,7 +151,7 @@ class LightningUiKit::InputComponent < LightningUiKit::BaseComponent
151
151
  end
152
152
 
153
153
  def control_classes
154
- "lui:relative lui:block lui:w-full lui:before:pointer-events-none lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-white lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-blue-500 lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-zinc-950/5 lui:has-data-disabled:before:shadow-none lui:has-data-invalid:before:shadow-red-500/10"
154
+ "lui:relative lui:block lui:w-full lui:before:pointer-events-none lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-surface-input lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-transparent lui:after:ring-inset lui:sm:focus-within:after:ring-2 lui:sm:focus-within:after:ring-focus lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-surface-hover lui:has-data-disabled:before:shadow-none lui:has-data-invalid:before:shadow-destructive-border/10"
155
155
  end
156
156
 
157
157
  def standard_input_type?
@@ -1,4 +1,4 @@
1
- <div class="lui:relative lui:isolate lui:flex lui:h-screen lui:w-full lui:bg-white lui:max-lg:flex-col lui:max-lg:h-auto lui:max-lg:min-h-screen lui:lg:bg-zinc-100 lui:overflow-hidden" data-controller="lui-layout">
1
+ <div class="lui:relative lui:isolate lui:flex lui:h-screen lui:w-full lui:bg-surface lui:max-lg:flex-col lui:max-lg:h-auto lui:max-lg:min-h-screen lui:lg:bg-surface-aside lui:overflow-hidden" data-controller="lui-layout">
2
2
  <%# Desktop Sidebar (fixed, hidden on mobile) %>
3
3
  <div class="lui:fixed lui:inset-y-0 lui:left-0 <%= sidebar_width_class %> lui:max-lg:hidden lui:z-10">
4
4
  <nav class="lui:flex lui:h-full lui:min-h-0 lui:flex-col">
@@ -21,7 +21,7 @@
21
21
 
22
22
  <%# Footer at bottom of sidebar %>
23
23
  <% if footer? %>
24
- <div class="lui:border-t lui:border-zinc-950/5">
24
+ <div class="lui:border-t lui:border-border">
25
25
  <%= footer %>
26
26
  </div>
27
27
  <% end %>
@@ -34,11 +34,11 @@
34
34
  <button
35
35
  type="button"
36
36
  aria-label="Open navigation"
37
- class="lui:cursor-pointer lui:relative lui:flex lui:min-w-0 lui:items-center lui:gap-3 lui:rounded-lg lui:p-2 lui:text-left lui:text-base/6 lui:font-medium lui:text-zinc-950 lui:sm:text-sm/5 lui:hover:bg-zinc-950/5"
37
+ class="lui:cursor-pointer lui:relative lui:flex lui:min-w-0 lui:items-center lui:gap-3 lui:rounded-lg lui:p-2 lui:text-left lui:text-base/6 lui:font-medium lui:text-foreground lui:sm:text-sm/5 lui:hover:bg-surface-hover"
38
38
  data-action="lui-layout#openSidebar"
39
39
  >
40
40
  <span class="lui:absolute lui:top-1/2 lui:left-1/2 lui:size-[max(100%,2.75rem)] lui:-translate-x-1/2 lui:-translate-y-1/2 [@media(pointer:fine)]:lui:hidden" aria-hidden="true"></span>
41
- <svg class="lui:size-6 lui:shrink-0 lui:fill-zinc-500 lui:sm:size-5" viewBox="0 0 20 20" aria-hidden="true">
41
+ <svg class="lui:size-6 lui:shrink-0 lui:fill-foreground-muted lui:sm:size-5" viewBox="0 0 20 20" aria-hidden="true">
42
42
  <path d="M2 6.75C2 6.33579 2.33579 6 2.75 6H17.25C17.6642 6 18 6.33579 18 6.75C18 7.16421 17.6642 7.5 17.25 7.5H2.75C2.33579 7.5 2 7.16421 2 6.75ZM2 13.25C2 12.8358 2.33579 12.5 2.75 12.5H17.25C17.6642 12.5 18 12.8358 18 13.25C18 13.6642 17.6642 14 17.25 14H2.75C2.33579 14 2 13.6642 2 13.25Z"></path>
43
43
  </svg>
44
44
  </button>
@@ -59,22 +59,22 @@
59
59
  >
60
60
  <%# Backdrop %>
61
61
  <div
62
- class="lui:fixed lui:inset-0 lui:bg-zinc-950/25 lui:opacity-0 lui:transition-opacity lui:duration-300 lui:group-data-[open]:opacity-100"
62
+ class="lui:fixed lui:inset-0 lui:bg-surface-overlay lui:opacity-0 lui:transition-opacity lui:duration-300 lui:group-data-[open]:opacity-100"
63
63
  data-action="click->lui-layout#closeSidebar"
64
64
  ></div>
65
65
 
66
66
  <%# Mobile Sidebar Panel %>
67
- <div class="lui:fixed lui:inset-y-0 lui:left-0 <%= sidebar_width_class %> lui:bg-white lui:-translate-x-full lui:transition-transform lui:duration-300 lui:ease-out lui:shadow-xl lui:group-data-[open]:translate-x-0">
67
+ <div class="lui:fixed lui:inset-y-0 lui:left-0 <%= sidebar_width_class %> lui:bg-surface-aside lui:-translate-x-full lui:transition-transform lui:duration-300 lui:ease-out lui:shadow-xl lui:group-data-[open]:translate-x-0">
68
68
  <nav class="lui:flex lui:h-full lui:min-h-0 lui:flex-col">
69
69
  <%# Close button %>
70
70
  <div class="lui:flex lui:items-center lui:justify-end lui:p-4">
71
71
  <button
72
72
  type="button"
73
73
  aria-label="Close navigation"
74
- class="lui:cursor-pointer lui:rounded-lg lui:p-2 lui:hover:bg-zinc-950/5"
74
+ class="lui:cursor-pointer lui:rounded-lg lui:p-2 lui:hover:bg-surface-hover"
75
75
  data-action="lui-layout#closeSidebar"
76
76
  >
77
- <svg class="lui:size-6 lui:fill-zinc-500" viewBox="0 0 20 20" aria-hidden="true">
77
+ <svg class="lui:size-6 lui:fill-foreground-muted" viewBox="0 0 20 20" aria-hidden="true">
78
78
  <path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd"></path>
79
79
  </svg>
80
80
  </button>
@@ -99,7 +99,7 @@
99
99
 
100
100
  <%# Footer %>
101
101
  <% if footer? %>
102
- <div class="lui:border-t lui:border-zinc-950/5">
102
+ <div class="lui:border-t lui:border-border">
103
103
  <%= footer %>
104
104
  </div>
105
105
  <% end %>
@@ -109,7 +109,7 @@
109
109
 
110
110
  <%# Main Content Area %>
111
111
  <main class="lui:flex lui:flex-1 lui:flex-col lui:min-h-0 lui:pb-4 lui:lg:min-w-0 lui:lg:pt-4 lui:lg:pr-4 <%= main_padding_class %>">
112
- <div class="lui:flex-1 lui:min-h-0 lui:p-6 lui:lg:rounded-lg lui:lg:bg-white lui:lg:p-10 lui:lg:shadow-xs lui:lg:ring-1 lui:lg:ring-zinc-950/5 lui:lg:overflow-y-auto">
112
+ <div class="lui:flex-1 lui:min-h-0 lui:p-6 lui:lg:rounded-lg lui:lg:bg-surface-secondary lui:lg:p-10 lui:lg:shadow-xs lui:lg:ring-1 lui:lg:ring-border-subtle lui:lg:overflow-y-auto">
113
113
  <div class="lui:mx-auto lui:max-w-6xl">
114
114
  <%= content %>
115
115
  </div>
@@ -1,15 +1,15 @@
1
1
  <%= tag.dialog(id: @id, open: @open, data:) do %>
2
- <div class="lui:fixed lui:inset-0 lui:flex lui:w-screen lui:justify-center lui:overflow-y-auto lui:bg-zinc-950/25 lui:px-2 lui:py-2 lui:transition lui:duration-100 lui:focus:outline-0 lui:data-closed:opacity-0 lui:data-enter:ease-out lui:data-leave:ease-in lui:sm:px-6 lui:sm:py-8 lg:lui:px-8 lg:lui:py-16" aria-hidden="true" data-open=""></div>
2
+ <div class="lui:fixed lui:inset-0 lui:flex lui:w-screen lui:justify-center lui:overflow-y-auto lui:bg-surface-overlay lui:px-2 lui:py-2 lui:transition lui:duration-100 lui:focus:outline-0 lui:data-closed:opacity-0 lui:data-enter:ease-out lui:data-leave:ease-in lui:sm:px-6 lui:sm:py-8 lg:lui:px-8 lg:lui:py-16" aria-hidden="true" data-open=""></div>
3
3
  <div class="lui:fixed lui:inset-0 lui:w-screen lui:overflow-y-auto lui:pt-6 lui:sm:pt-0">
4
4
  <div class="lui:grid lui:min-h-full lui:grid-rows-[1fr_auto] lui:justify-items-center lui:sm:grid-rows-[1fr_auto_3fr] lui:sm:p-4" data-action="click->lui-modal#closeOnBackdrop">
5
- <div class="lui:sm:max-w-3xl lui:row-start-2 lui:w-full lui:min-w-0 lui:rounded-t-3xl lui:bg-white lui:p-(--gutter) lui:ring-1 lui:shadow-lg lui:ring-zinc-950/10 lui:[--gutter:--spacing(8)] lui:sm:mb-auto lui:sm:rounded-2xl lui:forced-colors:outline lui:transition lui:duration-100 lui:will-change-transform lui:data-closed:translate-y-12 lui:data-closed:opacity-0 lui:data-enter:ease-out lui:data-leave:ease-in lui:sm:data-closed:translate-y-0 lui:sm:data-closed:data-enter:scale-95" data-open="" data-lui-modal-target="panel">
5
+ <div class="lui:sm:max-w-3xl lui:row-start-2 lui:w-full lui:min-w-0 lui:rounded-t-3xl lui:bg-surface-secondary lui:p-(--gutter) lui:ring-1 lui:shadow-lg lui:ring-border lui:[--gutter:--spacing(8)] lui:sm:mb-auto lui:sm:rounded-2xl lui:forced-colors:outline lui:transition lui:duration-100 lui:will-change-transform lui:data-closed:translate-y-12 lui:data-closed:opacity-0 lui:data-enter:ease-out lui:data-leave:ease-in lui:sm:data-closed:translate-y-0 lui:sm:data-closed:data-enter:scale-95" data-open="" data-lui-modal-target="panel">
6
6
  <% if @title %>
7
- <h2 class="lui:text-lg/6 lui:font-semibold lui:text-balance lui:text-zinc-950 lui:sm:text-base/6" data-open="">
7
+ <h2 class="lui:text-lg/6 lui:font-semibold lui:text-balance lui:text-foreground lui:sm:text-base/6" data-open="">
8
8
  <%= @title %>
9
9
  </h2>
10
10
  <% end %>
11
11
  <% if @description %>
12
- <p data-slot="text" data-open="" class="lui:mt-2 lui:text-pretty lui:text-base/6 lui:text-zinc-500 lui:sm:text-sm/6">
12
+ <p data-slot="text" data-open="" class="lui:mt-2 lui:text-pretty lui:text-base/6 lui:text-foreground-muted lui:sm:text-sm/6">
13
13
  <%= @description %>
14
14
  </p>
15
15
  <% end %>
@@ -1,20 +1,20 @@
1
1
  <%= tag.div(class: "lui:items-center lui:gap-x-2 lui:sm:flex") do %>
2
2
  <% if @with_arrows %>
3
- <%= link_to(url(@current_page - 1), class: link_classes, data: data(disabled: @current_page == 1)) do %>
3
+ <%= link_to(url(@current_page - 1), class: arrow_link_classes, data: data(disabled: @current_page == 1)) do %>
4
4
  <%= heroicon("chevron-left", options: { class: "w-5 h-5" }) %>
5
5
  <% end %>
6
6
  <% end %>
7
7
 
8
8
  <% pages_with_gaps.each do |page| %>
9
9
  <% if page == :gap %>
10
- <span aria-hidden="true" class="lui:w-[2.25rem] lui:text-center lui:text-sm/6 lui:font-semibold lui:text-zinc-950 lui:select-none">…</span>
10
+ <span aria-hidden="true" class="lui:w-[2.25rem] lui:text-center lui:text-sm/6 lui:font-semibold lui:text-foreground lui:select-none">…</span>
11
11
  <% else %>
12
12
  <%= link_to(page, url(page), class: link_classes, data: data(active: @current_page == page)) %>
13
13
  <% end %>
14
14
  <% end %>
15
15
 
16
16
  <% if @with_arrows %>
17
- <%= link_to(url(@current_page + 1), class: link_classes, data: data(disabled: @current_page == @total_pages)) do %>
17
+ <%= link_to(url(@current_page + 1), class: arrow_link_classes, data: data(disabled: @current_page == @total_pages)) do %>
18
18
  <%= heroicon("chevron-right", options: {class: "w-5 h-5" }) %>
19
19
  <% end %>
20
20
  <% end %>
@@ -1,10 +1,11 @@
1
1
  class LightningUiKit::PaginationComponent < LightningUiKit::BaseComponent
2
- def initialize(current_page:, total_pages:, path:, page_param: "page", with_arrows: false, **options)
2
+ def initialize(current_page:, total_pages:, path:, page_param: "page", params: {}, with_arrows: false, **options)
3
3
  @current_page = current_page
4
4
  @total_pages = total_pages
5
5
  @with_arrows = with_arrows
6
6
  @path = path
7
7
  @page_param = page_param
8
+ @params = params
8
9
  @options = options
9
10
  end
10
11
 
@@ -18,9 +19,16 @@ class LightningUiKit::PaginationComponent < LightningUiKit::BaseComponent
18
19
  def link_classes
19
20
  "lui:min-w-[2.25rem] lui:flex lui:items-center lui:justify-center lui:rounded-lg lui:border lui:text-base/6 lui:font-semibold lui:px-[calc(--spacing(3.5)-1px)] \
20
21
  lui:py-[calc(--spacing(2.5)-1px)] lui:sm:px-[calc(--spacing(3)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)] lui:sm:text-sm/6 \
21
- lui:focus:outline-hidden lui:focus:outline lui:focus:outline-2 lui:focus:outline-offset-2 lui:focus:outline-blue-500 \
22
- lui:data-[disabled]:opacity-50 lui:data-[disabled]:pointer-events-none lui:border-transparent lui:text-zinc-950 \
23
- lui:data-[active]:bg-zinc-950/5 lui:hover:bg-zinc-950/5"
22
+ lui:focus:outline-hidden lui:focus:outline lui:focus:outline-2 lui:focus:outline-offset-2 lui:focus:outline-focus \
23
+ lui:data-[disabled]:opacity-50 lui:data-[disabled]:pointer-events-none lui:border-transparent lui:text-foreground \
24
+ lui:data-[active]:bg-surface-hover lui:hover:bg-surface-hover"
25
+ end
26
+
27
+ def arrow_link_classes
28
+ "lui:min-w-[2.25rem] lui:aspect-square lui:flex lui:items-center lui:justify-center lui:rounded-lg lui:border \
29
+ lui:focus:outline-hidden lui:focus:outline lui:focus:outline-2 lui:focus:outline-offset-2 lui:focus:outline-focus \
30
+ lui:data-[disabled]:opacity-50 lui:data-[disabled]:pointer-events-none lui:border-transparent lui:text-foreground \
31
+ lui:hover:bg-surface-hover"
24
32
  end
25
33
 
26
34
  def pages_with_gaps
@@ -36,6 +44,7 @@ class LightningUiKit::PaginationComponent < LightningUiKit::BaseComponent
36
44
  end
37
45
 
38
46
  def url(page)
39
- "#{@path}?#{@page_param}=#{page}"
47
+ query = @params.merge(@page_param => page).to_query
48
+ "#{@path}?#{query}"
40
49
  end
41
50
  end
@@ -1,14 +1,14 @@
1
1
  <%= tag.div data:, class: classes do %>
2
2
  <%= render_label %>
3
3
  <% if @description %>
4
- <p data-slot="description" class="lui:text-base/6 lui:text-zinc-500 lui:data-disabled:opacity-50 lui:sm:text-sm/6" <%= "data-disabled=true" if @disabled %>>
4
+ <p data-slot="description" class="lui:text-base/6 lui:text-foreground-muted lui:data-disabled:opacity-50 lui:sm:text-sm/6" <%= "data-disabled=true" if @disabled %>>
5
5
  <%= @description %>
6
6
  </p>
7
7
  <% end %>
8
8
  <span data-slot="control" class="<%= control_classes %>">
9
9
  <%= render_select %>
10
10
  <span class="lui:pointer-events-none lui:absolute lui:inset-y-0 lui:right-0 lui:flex lui:items-center lui:pr-2">
11
- <svg class="lui:size-5 lui:stroke-zinc-500 lui:sm:size-4 lui:forced-colors:stroke-[CanvasText]" viewBox="0 0 16 16" aria-hidden="true" fill="none">
11
+ <svg class="lui:size-5 lui:stroke-foreground-muted lui:sm:size-4 lui:forced-colors:stroke-[CanvasText]" viewBox="0 0 16 16" aria-hidden="true" fill="none">
12
12
  <path d="M5.75 10.75L8 13L10.25 10.75" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
13
13
  <path d="M10.25 5.25L8 3L5.75 5.25" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
14
14
  </svg>
@@ -17,7 +17,7 @@
17
17
  <% if has_errors? %>
18
18
  <%= tag.p(
19
19
  error_messages,
20
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
20
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
21
21
  data: error_data
22
22
  ) %>
23
23
  <% end %>
@@ -55,7 +55,7 @@ class LightningUiKit::SelectComponent < LightningUiKit::BaseComponent
55
55
 
56
56
  def label_html_options
57
57
  {
58
- class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
58
+ class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6",
59
59
  data: label_data
60
60
  }
61
61
  end
@@ -72,11 +72,11 @@ class LightningUiKit::SelectComponent < LightningUiKit::BaseComponent
72
72
  end
73
73
 
74
74
  def select_classes
75
- "lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:py-[calc(--spacing(2.5)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)] lui:pr-[calc(--spacing(10)-1px)] lui:pl-[calc(--spacing(3.5)-1px)] lui:sm:pr-[calc(--spacing(9)-1px)] lui:sm:pl-[calc(--spacing(3)-1px)] lui:[&_optgroup]:font-semibold lui:text-base/6 lui:text-zinc-950 lui:placeholder:text-zinc-500 lui:sm:text-sm/6 lui:border lui:border-zinc-950/10 lui:data-[hover]:border-zinc-950/20 lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-red-500 lui:data-invalid:data-[hover]:border-red-500 lui:data-disabled:border-zinc-950/20 lui:data-disabled:opacity-100"
75
+ "lui:relative lui:block lui:w-full lui:appearance-none lui:rounded-lg lui:py-[calc(--spacing(2.5)-1px)] lui:sm:py-[calc(--spacing(1.5)-1px)] lui:pr-[calc(--spacing(10)-1px)] lui:pl-[calc(--spacing(3.5)-1px)] lui:sm:pr-[calc(--spacing(9)-1px)] lui:sm:pl-[calc(--spacing(3)-1px)] lui:[&_optgroup]:font-semibold lui:text-base/6 lui:text-foreground lui:placeholder:text-foreground-muted lui:sm:text-sm/6 lui:border lui:border-border lui:data-[hover]:border-border-hover lui:bg-transparent lui:focus:outline-hidden lui:data-invalid:border-destructive-border lui:data-invalid:data-[hover]:border-destructive-border lui:data-disabled:border-border-hover lui:data-disabled:opacity-100"
76
76
  end
77
77
 
78
78
  def control_classes
79
- "lui:relative lui:block lui:w-full lui:before:pointer-events-none lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-white lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-inset lui:focus-within:after:ring-2 lui:focus-within:after:ring-blue-500 lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-zinc-950/5 lui:has-data-disabled:before:shadow-none"
79
+ "lui:relative lui:block lui:w-full lui:before:pointer-events-none lui:before:absolute lui:before:inset-px lui:before:rounded-[7px] lui:before:bg-surface-input lui:before:shadow-sm lui:after:pointer-events-none lui:after:absolute lui:after:inset-0 lui:after:rounded-lg lui:after:ring-inset lui:focus-within:after:ring-2 lui:focus-within:after:ring-focus lui:has-data-disabled:opacity-50 lui:has-data-disabled:before:bg-surface-hover lui:has-data-disabled:before:shadow-none"
80
80
  end
81
81
 
82
82
  def select_html_options
@@ -1,4 +1,4 @@
1
- <%= link_to @url, class: classes, data: data do %>
1
+ <%= link_to @url, class: "lui:group #{classes}", data: data do %>
2
2
  <% if @icon %>
3
3
  <%= heroicon(@icon, options: { class: icon_classes }) %>
4
4
  <% end %>