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.
- checksums.yaml +4 -4
- data/README.md +30 -0
- data/app/assets/stylesheets/lightning_ui_kit/application.css +58 -0
- data/app/assets/stylesheets/lightning_ui_kit/themes.css +133 -0
- data/app/assets/vendor/lightning_ui_kit.css +415 -374
- data/app/assets/vendor/lightning_ui_kit.js +2 -2
- data/app/components/lightning_ui_kit/alert_component.rb +1 -1
- data/app/components/lightning_ui_kit/avatar_component.html.erb +1 -1
- data/app/components/lightning_ui_kit/badge_component.rb +14 -14
- data/app/components/lightning_ui_kit/banner_component.html.erb +1 -1
- data/app/components/lightning_ui_kit/banner_component.rb +3 -3
- data/app/components/lightning_ui_kit/button_component.rb +16 -16
- data/app/components/lightning_ui_kit/checkbox_component.html.erb +10 -10
- data/app/components/lightning_ui_kit/combobox_component.html.erb +14 -14
- data/app/components/lightning_ui_kit/combobox_component.rb +4 -4
- data/app/components/lightning_ui_kit/description_list/item_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/dropdown_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/dropdown_component.rb +1 -1
- data/app/components/lightning_ui_kit/dropzone_component.html.erb +13 -13
- data/app/components/lightning_ui_kit/dropzone_component.rb +1 -1
- data/app/components/lightning_ui_kit/file_input_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/file_input_component.rb +3 -3
- data/app/components/lightning_ui_kit/input_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/input_component.rb +9 -9
- data/app/components/lightning_ui_kit/layout_component.html.erb +10 -10
- data/app/components/lightning_ui_kit/modal_component.html.erb +4 -4
- data/app/components/lightning_ui_kit/pagination_component.html.erb +3 -3
- data/app/components/lightning_ui_kit/pagination_component.rb +14 -5
- data/app/components/lightning_ui_kit/select_component.html.erb +3 -3
- data/app/components/lightning_ui_kit/select_component.rb +3 -3
- data/app/components/lightning_ui_kit/sidebar_link_component.html.erb +1 -1
- data/app/components/lightning_ui_kit/sidebar_link_component.rb +11 -7
- data/app/components/lightning_ui_kit/sidebar_section_component.rb +1 -1
- data/app/components/lightning_ui_kit/skeleton_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/spinner_component.html.erb +5 -4
- data/app/components/lightning_ui_kit/switch_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/switch_component.rb +7 -7
- data/app/components/lightning_ui_kit/table_component.html.erb +7 -7
- data/app/components/lightning_ui_kit/text_component.rb +1 -1
- data/app/components/lightning_ui_kit/textarea_component.html.erb +2 -2
- data/app/components/lightning_ui_kit/textarea_component.rb +3 -3
- data/app/components/lightning_ui_kit/toast_component.html.erb +3 -3
- data/app/components/lightning_ui_kit/tooltip_component.html.erb +2 -2
- data/app/javascript/lightning_ui_kit/controllers/combobox_controller.js +2 -2
- data/app/javascript/lightning_ui_kit/controllers/dropzone_controller.js +1 -1
- data/lib/lightning_ui_kit/builder.rb +56 -56
- data/lib/lightning_ui_kit/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/bigdecimal.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/bigdecimal-3.2.2/mkmf.log +3 -3
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/date_core.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/date-3.4.1/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-5.0.2/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/io-console-0.8.1/io/console.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/generator.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/json-2.18.0/json/ext/parser.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/nio4r-2.7.4/nio4r_ext.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/prism-1.8.0/prism/prism.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/psych-5.2.6/psych.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/racc-1.8.1/racc/cparse.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/stringio-3.1.7/stringio.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/gem_make.out +5 -5
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/websocket-driver-0.8.0/websocket_mask.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/bigdecimal-3.2.2/lib/bigdecimal.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/date-3.4.1/lib/date_core.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/erb-5.0.2/lib/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/io-console-0.8.1/lib/io/console.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/generator.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/json-2.18.0/lib/json/ext/parser.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/nio4r-2.7.4/lib/nio4r_ext.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/prism-1.8.0/lib/prism/prism.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/psych-5.2.6/lib/psych.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/racc-1.8.1/lib/racc/cparse.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/stringio-3.1.7/lib/stringio.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/websocket-driver-0.8.0/lib/websocket_mask.so +0 -0
- 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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
118
|
-
"lui:border lui:border-
|
|
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-
|
|
121
|
-
"lui:data-disabled:border-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
9
|
-
<h5 class="lui:text-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
121
|
-
"lui:data-[hover]:border-
|
|
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-
|
|
129
|
-
"[&::-webkit-slider-thumb]:lui:appearance-none [&::-webkit-slider-thumb]:lui:w-4 [&::-webkit-slider-thumb]:lui:h-4 [&::-webkit-slider-thumb]:lui:bg-
|
|
130
|
-
"[&::-moz-range-thumb]:lui:appearance-none [&::-moz-range-thumb]:lui:w-4 [&::-moz-range-thumb]:lui:h-4 [&::-moz-range-thumb]:lui:bg-
|
|
131
|
-
"[&::-moz-range-track]:lui:bg-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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:
|
|
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-
|
|
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:
|
|
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-
|
|
22
|
-
lui:data-[disabled]:opacity-50 lui:data-[disabled]:pointer-events-none lui:border-transparent lui:text-
|
|
23
|
-
lui:data-[active]:bg-
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|