lightning_ui_kit 0.3.1 → 0.3.2

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/components/lightning_ui_kit/alert_component.rb +1 -1
  6. data/app/components/lightning_ui_kit/avatar_component.html.erb +1 -1
  7. data/app/components/lightning_ui_kit/badge_component.rb +14 -14
  8. data/app/components/lightning_ui_kit/banner_component.html.erb +1 -1
  9. data/app/components/lightning_ui_kit/banner_component.rb +3 -3
  10. data/app/components/lightning_ui_kit/button_component.rb +16 -16
  11. data/app/components/lightning_ui_kit/checkbox_component.html.erb +10 -10
  12. data/app/components/lightning_ui_kit/combobox_component.html.erb +14 -14
  13. data/app/components/lightning_ui_kit/combobox_component.rb +4 -4
  14. data/app/components/lightning_ui_kit/description_list/item_component.html.erb +2 -2
  15. data/app/components/lightning_ui_kit/dropdown_component.html.erb +2 -2
  16. data/app/components/lightning_ui_kit/dropdown_component.rb +1 -1
  17. data/app/components/lightning_ui_kit/dropzone_component.html.erb +13 -13
  18. data/app/components/lightning_ui_kit/dropzone_component.rb +1 -1
  19. data/app/components/lightning_ui_kit/file_input_component.html.erb +2 -2
  20. data/app/components/lightning_ui_kit/file_input_component.rb +3 -3
  21. data/app/components/lightning_ui_kit/input_component.html.erb +2 -2
  22. data/app/components/lightning_ui_kit/input_component.rb +9 -9
  23. data/app/components/lightning_ui_kit/layout_component.html.erb +10 -10
  24. data/app/components/lightning_ui_kit/modal_component.html.erb +4 -4
  25. data/app/components/lightning_ui_kit/pagination_component.html.erb +3 -3
  26. data/app/components/lightning_ui_kit/pagination_component.rb +14 -5
  27. data/app/components/lightning_ui_kit/select_component.html.erb +3 -3
  28. data/app/components/lightning_ui_kit/select_component.rb +3 -3
  29. data/app/components/lightning_ui_kit/sidebar_link_component.html.erb +1 -1
  30. data/app/components/lightning_ui_kit/sidebar_link_component.rb +11 -7
  31. data/app/components/lightning_ui_kit/sidebar_section_component.rb +1 -1
  32. data/app/components/lightning_ui_kit/skeleton_component.html.erb +2 -2
  33. data/app/components/lightning_ui_kit/spinner_component.html.erb +5 -4
  34. data/app/components/lightning_ui_kit/switch_component.html.erb +2 -2
  35. data/app/components/lightning_ui_kit/switch_component.rb +7 -7
  36. data/app/components/lightning_ui_kit/table_component.html.erb +7 -7
  37. data/app/components/lightning_ui_kit/text_component.rb +1 -1
  38. data/app/components/lightning_ui_kit/textarea_component.html.erb +2 -2
  39. data/app/components/lightning_ui_kit/textarea_component.rb +3 -3
  40. data/app/components/lightning_ui_kit/toast_component.html.erb +3 -3
  41. data/app/components/lightning_ui_kit/tooltip_component.html.erb +2 -2
  42. data/app/javascript/lightning_ui_kit/controllers/combobox_controller.js +2 -2
  43. data/app/javascript/lightning_ui_kit/controllers/dropzone_controller.js +1 -1
  44. data/lib/lightning_ui_kit/builder.rb +56 -56
  45. data/lib/lightning_ui_kit/version.rb +1 -1
  46. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/bigdecimal.so +0 -0
  47. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/gem_make.out +5 -5
  48. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/mkmf.log +3 -3
  49. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/date_core.so +0 -0
  50. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/gem_make.out +5 -5
  51. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/erb/escape.so +0 -0
  52. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/gem_make.out +5 -5
  53. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/gem_make.out +5 -5
  54. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/io/console.so +0 -0
  55. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/gem_make.out +5 -5
  56. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/generator.so +0 -0
  57. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/parser.so +0 -0
  58. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/gem_make.out +5 -5
  59. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/nio4r_ext.so +0 -0
  60. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/gem_make.out +5 -5
  61. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/prism/prism.so +0 -0
  62. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/gem_make.out +5 -5
  63. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/psych.so +0 -0
  64. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/gem_make.out +5 -5
  65. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/racc/cparse.so +0 -0
  66. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/gem_make.out +5 -5
  67. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/stringio.so +0 -0
  68. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/gem_make.out +5 -5
  69. data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/websocket_mask.so +0 -0
  70. data/vendor/bundle/ruby/3.4.0/gems/bigdecimal-3.2.2/lib/bigdecimal.so +0 -0
  71. data/vendor/bundle/ruby/3.4.0/gems/date-3.4.1/lib/date_core.so +0 -0
  72. data/vendor/bundle/ruby/3.4.0/gems/erb-5.0.2/lib/erb/escape.so +0 -0
  73. data/vendor/bundle/ruby/3.4.0/gems/io-console-0.8.1/lib/io/console.so +0 -0
  74. data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/generator.so +0 -0
  75. data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/parser.so +0 -0
  76. data/vendor/bundle/ruby/3.4.0/gems/nio4r-2.7.4/lib/nio4r_ext.so +0 -0
  77. data/vendor/bundle/ruby/3.4.0/gems/prism-1.8.0/lib/prism/prism.so +0 -0
  78. data/vendor/bundle/ruby/3.4.0/gems/psych-5.2.6/lib/psych.so +0 -0
  79. data/vendor/bundle/ruby/3.4.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
  80. data/vendor/bundle/ruby/3.4.0/gems/stringio-3.1.7/lib/stringio.so +0 -0
  81. data/vendor/bundle/ruby/3.4.0/gems/websocket-driver-0.8.0/lib/websocket_mask.so +0 -0
  82. metadata +2 -3
  83. data/app/assets/vendor/lightning_ui_kit.css +0 -3191
  84. data/app/assets/vendor/lightning_ui_kit.js +0 -12
@@ -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 %>
@@ -1,28 +1,32 @@
1
1
  class LightningUiKit::SidebarLinkComponent < LightningUiKit::BaseComponent
2
- def initialize(title:, url:, icon: nil, current: false, **options)
2
+ def initialize(title:, url:, icon: nil, current: false, animate_icon: false, **options)
3
3
  @title = title
4
4
  @url = url
5
5
  @icon = icon
6
6
  @current = current
7
+ @animate_icon = animate_icon
7
8
  @options = options
8
9
  end
9
10
 
10
11
  def classes
11
- base_classes = "lui:flex lui:items-center lui:gap-3 lui:rounded-lg lui:px-3 lui:py-2 lui:text-sm lui:transition-colors"
12
+ base_classes = "lui:relative lui:flex lui:items-center lui:gap-3 lui:rounded-lg lui:px-3 lui:py-2 lui:text-sm lui:transition-all lui:duration-150 lui:ease-out"
12
13
 
13
14
  if @current
14
- merge_classes([base_classes, "lui:bg-zinc-950/5 lui:text-zinc-950 lui:font-semibold", @options[:class]].compact.join(" "))
15
+ merge_classes([base_classes, "lui:bg-surface-hover lui:text-foreground lui:font-semibold", @options[:class]].compact.join(" "))
15
16
  else
16
- merge_classes([base_classes, "lui:text-zinc-600 lui:hover:bg-zinc-950/5 lui:hover:text-zinc-950", @options[:class]].compact.join(" "))
17
+ merge_classes([base_classes, "lui:text-foreground-secondary lui:hover:bg-surface-hover lui:hover:text-foreground", @options[:class]].compact.join(" "))
17
18
  end
18
19
  end
19
20
 
20
21
  def icon_classes
21
- if @current
22
- "lui:size-5 lui:shrink-0 lui:text-zinc-600"
22
+ base = if @current
23
+ "lui:size-5 lui:shrink-0 lui:text-foreground"
23
24
  else
24
- "lui:size-5 lui:shrink-0 lui:text-zinc-400"
25
+ "lui:size-5 lui:shrink-0 lui:text-foreground-faint lui:transition-colors lui:duration-150 lui:group-hover:text-foreground-secondary"
25
26
  end
27
+
28
+ base += " lui:group-hover:animate-icon-bounce" if @animate_icon
29
+ base
26
30
  end
27
31
 
28
32
  def data
@@ -11,6 +11,6 @@ class LightningUiKit::SidebarSectionComponent < LightningUiKit::BaseComponent
11
11
  end
12
12
 
13
13
  def title_classes
14
- "lui:px-3 lui:py-2 lui:text-xs lui:font-medium lui:text-zinc-400 lui:uppercase lui:tracking-wider"
14
+ "lui:px-3 lui:py-2 lui:text-[0.6875rem] lui:font-semibold lui:text-foreground-faint lui:uppercase lui:tracking-widest"
15
15
  end
16
16
  end
@@ -1,10 +1,10 @@
1
1
  <div role="status" class="lui:animate-pulse">
2
2
  <% if @with_title %>
3
- <h3 class="lui:h-3 lui:bg-gray-300 lui:rounded-full lui:w-48 lui:mb-4"></h3>
3
+ <h3 class="lui:h-3 lui:bg-surface-tertiary lui:rounded-full lui:w-48 lui:mb-4"></h3>
4
4
  <% end %>
5
5
  <div class="lui:space-y-2.5">
6
6
  <% @lines.times do %>
7
- <p class="lui:h-2 lui:bg-gray-300 lui:rounded-full"></p>
7
+ <p class="lui:h-2 lui:bg-surface-tertiary lui:rounded-full"></p>
8
8
  <% end %>
9
9
  </div>
10
10
  </div>
@@ -1,10 +1,11 @@
1
- <svg class="lui:animate-spin lui:border-zinc-500"
1
+ <svg class="lui:animate-spin"
2
2
  xmlns="http://www.w3.org/2000/svg" width="18" height="18"
3
- viewBox="0 0 30 30" fill="none">
3
+ viewBox="0 0 30 30" fill="none"
4
+ style="--lui-spinner-primary: var(--lui-theme-spinner-primary); --lui-spinner-secondary: var(--lui-theme-spinner-secondary);">
4
5
  <path fill-rule="evenodd" clip-rule="evenodd"
5
6
  d="M14.4304 0.0323927C14.0002 0.172039 13.7522 0.420298 13.6321 0.825659C13.5643 1.05258 13.5527 1.58013 13.5527 4.33426C13.5527 7.98251 13.5488 7.93596 13.9208 8.30835C14.4187 8.80487 15.5812 8.80487 16.0792 8.30835C16.4511 7.93596 16.4473 7.98251 16.4473 4.33426C16.4473 0.804324 16.4415 0.742259 16.1547 0.400903C15.9145 0.115792 15.6568 0.0207556 15.0775 0.00523939C14.8614 -0.00695113 14.6447 0.00214369 14.4304 0.0323927ZM24.4026 3.89593C24.1643 4.00648 23.7574 4.38857 21.816 6.33779C20.0316 8.12797 19.4872 8.70595 19.4 8.89602C19.3276 9.05362 19.2902 9.2251 19.2905 9.39857C19.2909 9.57205 19.3289 9.74338 19.4019 9.9007C19.5376 10.1916 19.9832 10.6494 20.2835 10.8065C20.5877 10.9655 21.0391 10.9636 21.3549 10.8026C21.6785 10.6358 26.1541 6.15547 26.3207 5.83157C26.4001 5.66482 26.4417 5.4826 26.4427 5.29788C26.4437 5.11317 26.404 4.93051 26.3265 4.7629C26.1121 4.40396 25.8092 4.10611 25.4469 3.89787C25.2865 3.81116 25.1072 3.7656 24.925 3.76526C24.7427 3.76492 24.5633 3.80982 24.4026 3.89593ZM22.2559 13.5858C21.9939 13.6581 21.7571 13.8017 21.5719 14.0009C21.3065 14.3597 21.2232 15.0889 21.3898 15.6029C21.5022 15.952 21.785 16.2352 22.1338 16.3477C22.3702 16.4253 22.7557 16.435 25.6406 16.435C28.4093 16.435 28.9189 16.4233 29.1475 16.3554C29.719 16.1848 29.998 15.7348 30 14.9842C30 14.2375 29.7152 13.7894 29.1242 13.611C28.9247 13.5509 28.2989 13.5392 25.6484 13.5431C23.8698 13.547 22.343 13.5664 22.2559 13.5858ZM20.3339 19.3811C20.0277 19.5207 19.5763 19.963 19.4194 20.2772C19.3393 20.4342 19.2957 20.6073 19.2916 20.7836C19.2876 20.9599 19.3233 21.1348 19.3961 21.2954C19.5395 21.6154 24.0422 26.1384 24.3968 26.3188C24.8986 26.5767 25.4139 26.4507 25.9332 25.9425C26.4447 25.4421 26.5803 24.899 26.3207 24.3928C26.1405 24.0379 21.6223 19.5304 21.3026 19.3869C21.1498 19.3207 20.9853 19.286 20.8188 19.285C20.6524 19.284 20.4874 19.3167 20.3339 19.3811ZM14.5059 21.342C14.2442 21.4158 14.0076 21.56 13.822 21.759C13.5546 22.1197 13.5527 22.1449 13.5527 25.6322C13.5527 28.4096 13.5643 28.9197 13.6321 29.1485C13.8026 29.7207 14.254 30 15 30C15.7459 30 16.1973 29.7207 16.3678 29.1485C16.488 28.7374 16.486 22.5018 16.364 22.143C16.3264 21.9983 16.2577 21.8636 16.1627 21.7484C16.0676 21.6331 15.9485 21.5401 15.8137 21.4758C15.6006 21.3594 15.4766 21.3303 15.1104 21.3167C14.9086 21.3046 14.706 21.313 14.5059 21.342Z"
6
- fill="#9F9FA9" />
7
+ fill="var(--lui-spinner-primary)" />
7
8
  <path fill-rule="evenodd" clip-rule="evenodd"
8
9
  d="M4.83402 3.86487C4.5279 4.00452 4.07647 4.44673 3.91953 4.76093C3.83948 4.918 3.79581 5.09111 3.79179 5.2674C3.78776 5.44369 3.82348 5.61861 3.89628 5.77918C4.03965 6.0992 8.54237 10.6222 8.89693 10.8026C9.39873 11.0605 9.91411 10.9344 10.4334 10.4263C10.9448 9.92589 11.0805 9.38282 10.8208 8.8766C10.6407 8.52167 6.12245 4.01421 5.80276 3.87069C5.65 3.80447 5.48545 3.76982 5.31899 3.76882C5.15252 3.76782 4.98757 3.80049 4.83402 3.86487ZM0.85443 13.6129C0.282873 13.7933 0 14.2491 0 14.9842C0.00193748 15.7348 0.280935 16.1847 0.852493 16.3554C1.08112 16.4233 1.59067 16.4349 4.35934 16.4349C7.24425 16.4349 7.62981 16.4252 7.86618 16.3477C8.03981 16.2905 8.19761 16.1934 8.32684 16.064C8.45607 15.9347 8.55313 15.7767 8.61018 15.6029C8.7768 15.0889 8.69349 14.3596 8.42805 13.9989C8.32166 13.8831 8.19656 13.7861 8.058 13.7118L7.79256 13.5644L4.4349 13.5528C1.73211 13.545 1.03268 13.5567 0.85443 13.6129ZM8.90274 19.4121C8.66443 19.5227 8.25756 19.9047 6.3162 21.854C4.53177 23.6442 3.98734 24.2221 3.90016 24.4122C3.82771 24.5698 3.79037 24.7413 3.7907 24.9148C3.79104 25.0882 3.82904 25.2596 3.90209 25.4169C4.03772 25.7078 4.48334 26.1655 4.78365 26.3226C5.08783 26.4817 5.53927 26.4797 5.85508 26.3188C6.17864 26.152 10.6542 21.6717 10.8208 21.3478C10.9002 21.181 10.9419 20.9988 10.9429 20.8141C10.9439 20.6294 10.9042 20.4467 10.8267 20.2791C10.6122 19.9201 10.3094 19.6223 9.94704 19.414C9.7867 19.3273 9.60738 19.2818 9.42513 19.2814C9.24289 19.2811 9.06341 19.326 8.90274 19.4121Z"
9
- fill="#D1D5DB" />
10
+ fill="var(--lui-spinner-secondary)" />
10
11
  </svg>
@@ -3,14 +3,14 @@
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 %>
10
10
  <% if has_errors? %>
11
11
  <%= tag.p(
12
12
  error_messages,
13
- class: "lui:text-base/6 lui:text-red-600 lui:data-disabled:opacity-50 lui:sm:text-sm/6",
13
+ class: "lui:text-base/6 lui:text-destructive-text lui:data-disabled:opacity-50 lui:sm:text-sm/6",
14
14
  data: error_data
15
15
  ) %>
16
16
  <% end %>
@@ -53,13 +53,13 @@ class LightningUiKit::SwitchComponent < LightningUiKit::BaseComponent
53
53
  def button_classes
54
54
  "lui:group lui:relative lui:isolate lui:inline-flex lui:h-6 lui:w-10 lui:cursor-default lui:rounded-full " \
55
55
  "lui:p-[3px] lui:sm:h-5 lui:sm:w-8 lui:transition lui:duration-200 lui:ease-in-out " \
56
- "lui:forced-colors:outline lui:forced-colors:[--switch-bg:Highlight] lui:bg-zinc-200 lui:ring-1 lui:ring-black/5 lui:ring-inset " \
56
+ "lui:forced-colors:outline lui:forced-colors:[--switch-bg:Highlight] lui:bg-surface-tertiary lui:ring-1 lui:ring-black/5 lui:ring-inset " \
57
57
  "lui:data-checked:bg-(--switch-bg) lui:data-checked:ring-(--switch-bg-ring) lui:focus:outline-hidden lui:data-focus:outline-2 " \
58
- "lui:data-focus:outline-offset-2 lui:data-focus:outline-blue-500 lui:hover:ring-black/15 lui:hover:data-checked:ring-(--switch-bg-ring) " \
59
- "lui:data-disabled:bg-zinc-200 lui:data-disabled:opacity-50 lui:data-disabled:data-checked:bg-zinc-200 lui:data-disabled:data-checked:ring-black/5 " \
60
- "lui:[--switch-bg-ring:var(--lui-color-zinc-950)]/90 " \
61
- "lui:[--switch-bg:var(--lui-color-zinc-900)] " \
62
- "lui:[--switch-ring:var(--lui-color-zinc-950)]/90 " \
58
+ "lui:data-focus:outline-offset-2 lui:data-focus:outline-focus lui:hover:ring-black/15 lui:hover:data-checked:ring-(--switch-bg-ring) " \
59
+ "lui:data-disabled:bg-surface-tertiary lui:data-disabled:opacity-50 lui:data-disabled:data-checked:bg-surface-tertiary lui:data-disabled:data-checked:ring-black/5 " \
60
+ "lui:[--switch-bg-ring:var(--lui-theme-border-invert)] " \
61
+ "lui:[--switch-bg:var(--lui-theme-surface-invert)] " \
62
+ "lui:[--switch-ring:var(--lui-theme-border-invert)] " \
63
63
  "lui:[--switch-shadow:var(--lui-color-black)]/10 " \
64
64
  "lui:[--switch:white]"
65
65
  end
@@ -97,7 +97,7 @@ class LightningUiKit::SwitchComponent < LightningUiKit::BaseComponent
97
97
  def render_label
98
98
  return unless render_label?
99
99
 
100
- tag.label(effective_label, id: label_id, class: "lui:text-base/6 lui:text-zinc-950 lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6", data: label_data)
100
+ tag.label(effective_label, id: label_id, class: "lui:text-base/6 lui:text-foreground lui:select-none lui:data-disabled:opacity-50 lui:sm:text-sm/6", data: label_data)
101
101
  end
102
102
 
103
103
  def render_hidden_field
@@ -1,12 +1,12 @@
1
- <div class="lui:border-zinc-950/5 lui:border lui:rounded-lg">
2
- <table class="lui:min-w-full lui:text-left lui:text-sm/6 lui:text-zinc-950 lui:border-collapse lui:border-inherit">
3
- <thead class="lui:text-zinc-500">
1
+ <div class="lui:border-border-subtle lui:border lui:rounded-lg">
2
+ <table class="lui:min-w-full lui:text-left lui:text-sm/6 lui:text-foreground lui:border-collapse lui:border-inherit">
3
+ <thead class="lui:text-foreground-muted">
4
4
  <tr class="">
5
5
  <% columns.each do |column| %>
6
- <th class="lui:border-b lui:border-b-zinc-950/10 lui:px-4 lui:py-2 lui:font-medium"><%= column.title %></th>
6
+ <th class="lui:border-b lui:border-b-border lui:px-4 lui:py-2 lui:font-medium"><%= column.title %></th>
7
7
  <% end %>
8
8
  <% if actions.present? %>
9
- <th class="lui:border-b lui:border-b-zinc-950/10 lui:px-4 lui:py-2 lui:font-medium"><%= @actions_title %></th>
9
+ <th class="lui:border-b lui:border-b-border lui:px-4 lui:py-2 lui:font-medium"><%= @actions_title %></th>
10
10
  <% end %>
11
11
  </tr>
12
12
  </thead>
@@ -21,12 +21,12 @@
21
21
  <% @data.each do |row| %>
22
22
  <tr class="lui:group">
23
23
  <% columns.each do |column| %>
24
- <td class="lui:p-4 lui:border-b lui:border-zinc-950/5 lui:group-last:border-b-0">
24
+ <td class="lui:p-4 lui:border-b lui:border-border-subtle lui:group-last:border-b-0">
25
25
  <%= column.call(row) %>
26
26
  </td>
27
27
  <% end %>
28
28
  <% if actions.present? %>
29
- <td class="lui:p-4 lui:flex lui:gap-3 lui:border-b lui:border-zinc-950/5 lui:group-last:border-b-0">
29
+ <td class="lui:p-4 lui:flex lui:gap-3 lui:border-b lui:border-border-subtle lui:group-last:border-b-0">
30
30
  <% actions.each do |action| %>
31
31
  <%= action.call(row) %>
32
32
  <% end %>
@@ -5,6 +5,6 @@ class LightningUiKit::TextComponent < LightningUiKit::BaseComponent
5
5
  end
6
6
 
7
7
  def classes
8
- merge_classes(["lui:text-zinc-600 lui:text-#{@size}", @options[:class]].compact.join(" "))
8
+ merge_classes(["lui:text-foreground-secondary lui:text-#{@size}", @options[:class]].compact.join(" "))
9
9
  end
10
10
  end