@auronui/styles 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/DATA_ATTRIBUTES.md +163 -0
- package/LICENSE +21 -0
- package/README.md +54 -0
- package/base/base.css +40 -0
- package/components/accordion.css +201 -0
- package/components/alert-dialog.css +307 -0
- package/components/alert.css +143 -0
- package/components/aspect-ratio.css +8 -0
- package/components/autocomplete.css +685 -0
- package/components/avatar.css +78 -0
- package/components/badge.css +186 -0
- package/components/breadcrumbs.css +76 -0
- package/components/button-group.css +126 -0
- package/components/button.css +282 -0
- package/components/calendar-year-picker.css +193 -0
- package/components/calendar.css +332 -0
- package/components/card.css +225 -0
- package/components/checkbox-group.css +7 -0
- package/components/checkbox.css +268 -0
- package/components/chip.css +227 -0
- package/components/close-button.css +65 -0
- package/components/collapsible-group.css +7 -0
- package/components/collapsible.css +74 -0
- package/components/color-area.css +81 -0
- package/components/color-field.css +99 -0
- package/components/color-input-group.css +153 -0
- package/components/color-picker.css +121 -0
- package/components/color-slider.css +266 -0
- package/components/color-swatch-picker.css +247 -0
- package/components/color-swatch.css +42 -0
- package/components/combo-box.css +203 -0
- package/components/date-input-group.css +125 -0
- package/components/date-input.css +529 -0
- package/components/date-picker.css +86 -0
- package/components/date-range-field.css +538 -0
- package/components/date-range-picker.css +93 -0
- package/components/description.css +4 -0
- package/components/drawer.css +222 -0
- package/components/dropdown.css +67 -0
- package/components/empty-state.css +4 -0
- package/components/error-message.css +13 -0
- package/components/field-error.css +19 -0
- package/components/fieldset.css +39 -0
- package/components/header.css +7 -0
- package/components/index.css +164 -0
- package/components/input-otp.css +124 -0
- package/components/input.css +603 -0
- package/components/kbd.css +27 -0
- package/components/label.css +28 -0
- package/components/link.css +144 -0
- package/components/list-box-item.css +29 -0
- package/components/list-box-section.css +13 -0
- package/components/list-box.css +11 -0
- package/components/menu-item.css +68 -0
- package/components/menu-section.css +18 -0
- package/components/menu.css +7 -0
- package/components/meter.css +104 -0
- package/components/modal.css +335 -0
- package/components/number-field.css +395 -0
- package/components/pagination.css +157 -0
- package/components/popover.css +96 -0
- package/components/progress-bar.css +126 -0
- package/components/progress-circle.css +82 -0
- package/components/radio-group.css +47 -0
- package/components/radio.css +157 -0
- package/components/range-calendar.css +402 -0
- package/components/scroll-area.css +70 -0
- package/components/scroll-shadow.css +77 -0
- package/components/select.css +649 -0
- package/components/separator.css +59 -0
- package/components/skeleton.css +48 -0
- package/components/slider.css +155 -0
- package/components/spinner.css +42 -0
- package/components/splitter.css +74 -0
- package/components/stepper.css +160 -0
- package/components/surface.css +23 -0
- package/components/switch-group.css +17 -0
- package/components/switch.css +194 -0
- package/components/table.css +341 -0
- package/components/tabs.css +262 -0
- package/components/tag-group.css +66 -0
- package/components/tag.css +99 -0
- package/components/textarea.css +536 -0
- package/components/time-field.css +530 -0
- package/components/toast.css +267 -0
- package/components/toggle-button-group.css +174 -0
- package/components/toggle-button.css +149 -0
- package/components/toolbar.css +32 -0
- package/components/tooltip.css +47 -0
- package/components/tree.css +81 -0
- package/index.css +29 -0
- package/package.json +415 -0
- package/src/components/accordion/accordion.styles.ts +46 -0
- package/src/components/accordion/index.ts +1 -0
- package/src/components/alert/alert.styles.ts +37 -0
- package/src/components/alert/index.ts +1 -0
- package/src/components/alert-dialog/alert-dialog.styles.ts +72 -0
- package/src/components/alert-dialog/index.ts +1 -0
- package/src/components/aspect-ratio/aspect-ratio.styles.ts +10 -0
- package/src/components/aspect-ratio/index.ts +1 -0
- package/src/components/autocomplete/autocomplete.styles.ts +86 -0
- package/src/components/autocomplete/index.ts +1 -0
- package/src/components/avatar/avatar.styles.ts +53 -0
- package/src/components/avatar/index.ts +1 -0
- package/src/components/badge/badge.styles.ts +77 -0
- package/src/components/badge/index.ts +1 -0
- package/src/components/breadcrumbs/breadcrumbs.styles.ts +14 -0
- package/src/components/breadcrumbs/index.ts +1 -0
- package/src/components/button/__tests__/button.styles.test.ts +79 -0
- package/src/components/button/button.styles.ts +65 -0
- package/src/components/button/index.ts +1 -0
- package/src/components/button-group/button-group.styles.ts +32 -0
- package/src/components/button-group/index.ts +1 -0
- package/src/components/calendar/calendar.styles.ts +60 -0
- package/src/components/calendar/index.ts +1 -0
- package/src/components/calendar-year-picker/calendar-year-picker.styles.ts +15 -0
- package/src/components/calendar-year-picker/index.ts +1 -0
- package/src/components/card/card.styles.ts +65 -0
- package/src/components/card/index.ts +1 -0
- package/src/components/checkbox/checkbox.styles.ts +27 -0
- package/src/components/checkbox/index.ts +1 -0
- package/src/components/checkbox-group/checkbox-group.styles.ts +18 -0
- package/src/components/checkbox-group/index.ts +1 -0
- package/src/components/chip/chip.styles.ts +65 -0
- package/src/components/chip/index.ts +1 -0
- package/src/components/close-button/close-button.styles.ts +17 -0
- package/src/components/close-button/index.ts +1 -0
- package/src/components/collapsible/collapsible.styles.ts +25 -0
- package/src/components/collapsible/index.ts +1 -0
- package/src/components/collapsible-group/collapsible-group.styles.ts +13 -0
- package/src/components/collapsible-group/index.ts +1 -0
- package/src/components/color-area/color-area.styles.ts +23 -0
- package/src/components/color-area/index.ts +1 -0
- package/src/components/color-field/color-field.styles.ts +18 -0
- package/src/components/color-field/index.ts +1 -0
- package/src/components/color-input-group/color-input-group.styles.ts +34 -0
- package/src/components/color-input-group/index.ts +1 -0
- package/src/components/color-picker/color-picker.styles.ts +13 -0
- package/src/components/color-picker/index.ts +1 -0
- package/src/components/color-slider/color-slider.styles.ts +14 -0
- package/src/components/color-slider/index.ts +1 -0
- package/src/components/color-swatch/color-swatch.styles.ts +26 -0
- package/src/components/color-swatch/index.ts +1 -0
- package/src/components/color-swatch-picker/color-swatch-picker.styles.ts +54 -0
- package/src/components/color-swatch-picker/index.ts +1 -0
- package/src/components/combo-box/combo-box.styles.ts +26 -0
- package/src/components/combo-box/index.ts +1 -0
- package/src/components/date-input/date-input.styles.ts +86 -0
- package/src/components/date-input/index.ts +1 -0
- package/src/components/date-picker/date-picker.styles.ts +14 -0
- package/src/components/date-picker/index.ts +1 -0
- package/src/components/date-range-field/date-range-field.styles.ts +87 -0
- package/src/components/date-range-field/index.ts +1 -0
- package/src/components/date-range-picker/date-range-picker.styles.ts +14 -0
- package/src/components/date-range-picker/index.ts +1 -0
- package/src/components/description/description.styles.ts +9 -0
- package/src/components/description/index.ts +1 -0
- package/src/components/drawer/drawer.styles.ts +55 -0
- package/src/components/drawer/index.ts +1 -0
- package/src/components/dropdown/dropdown.styles.ts +14 -0
- package/src/components/dropdown/index.ts +1 -0
- package/src/components/empty-state/empty-state.styles.ts +9 -0
- package/src/components/empty-state/index.ts +1 -0
- package/src/components/error-message/error-message.styles.ts +9 -0
- package/src/components/error-message/index.ts +1 -0
- package/src/components/fieldset/fieldset.styles.ts +29 -0
- package/src/components/fieldset/index.ts +1 -0
- package/src/components/header/header.styles.ts +5 -0
- package/src/components/header/index.ts +1 -0
- package/src/components/index.ts +84 -0
- package/src/components/input/index.ts +1 -0
- package/src/components/input/input.styles.ts +87 -0
- package/src/components/input-otp/index.ts +1 -0
- package/src/components/input-otp/input-otp.styles.ts +30 -0
- package/src/components/kbd/index.ts +1 -0
- package/src/components/kbd/kbd.styles.ts +20 -0
- package/src/components/label/index.ts +1 -0
- package/src/components/label/label.styles.ts +25 -0
- package/src/components/link/index.ts +1 -0
- package/src/components/link/link.styles.ts +38 -0
- package/src/components/list-box/index.ts +1 -0
- package/src/components/list-box/list-box.styles.ts +18 -0
- package/src/components/list-box-item/index.ts +1 -0
- package/src/components/list-box-item/list-box-item.styles.ts +25 -0
- package/src/components/list-box-section/index.ts +1 -0
- package/src/components/list-box-section/list-box-section.styles.ts +13 -0
- package/src/components/menu/index.ts +1 -0
- package/src/components/menu/menu.styles.ts +9 -0
- package/src/components/menu-item/index.ts +1 -0
- package/src/components/menu-item/menu-item.styles.ts +26 -0
- package/src/components/menu-section/index.ts +1 -0
- package/src/components/menu-section/menu-section.styles.ts +14 -0
- package/src/components/meter/index.ts +1 -0
- package/src/components/meter/meter.styles.ts +48 -0
- package/src/components/modal/index.ts +1 -0
- package/src/components/modal/modal.styles.ts +70 -0
- package/src/components/number-field/index.ts +1 -0
- package/src/components/number-field/number-field.styles.ts +80 -0
- package/src/components/pagination/index.ts +1 -0
- package/src/components/pagination/pagination.styles.ts +32 -0
- package/src/components/popover/index.ts +1 -0
- package/src/components/popover/popover.styles.ts +14 -0
- package/src/components/progress-bar/index.ts +1 -0
- package/src/components/progress-bar/progress-bar.styles.ts +97 -0
- package/src/components/progress-circle/index.ts +1 -0
- package/src/components/progress-circle/progress-circle.styles.ts +74 -0
- package/src/components/radio/index.ts +1 -0
- package/src/components/radio/radio.styles.ts +14 -0
- package/src/components/radio-group/index.ts +1 -0
- package/src/components/radio-group/radio-group.styles.ts +18 -0
- package/src/components/range-calendar/index.ts +1 -0
- package/src/components/range-calendar/range-calendar.styles.ts +60 -0
- package/src/components/scroll-shadow/index.ts +1 -0
- package/src/components/scroll-shadow/scroll-shadow.styles.ts +37 -0
- package/src/components/select/index.ts +1 -0
- package/src/components/select/select.styles.ts +86 -0
- package/src/components/separator/index.ts +1 -0
- package/src/components/separator/separator.styles.ts +25 -0
- package/src/components/skeleton/index.ts +1 -0
- package/src/components/skeleton/skeleton.styles.ts +21 -0
- package/src/components/slider/index.ts +1 -0
- package/src/components/slider/slider.styles.ts +40 -0
- package/src/components/spinner/index.ts +1 -0
- package/src/components/spinner/spinner.styles.ts +28 -0
- package/src/components/splitter/index.ts +1 -0
- package/src/components/splitter/splitter.styles.ts +28 -0
- package/src/components/stepper/index.ts +1 -0
- package/src/components/stepper/stepper.styles.ts +57 -0
- package/src/components/surface/index.ts +1 -0
- package/src/components/surface/surface.styles.ts +20 -0
- package/src/components/switch/index.ts +1 -0
- package/src/components/switch/switch.styles.ts +31 -0
- package/src/components/switch-group/index.ts +1 -0
- package/src/components/switch-group/switch-group.styles.ts +25 -0
- package/src/components/table/index.ts +1 -0
- package/src/components/table/table.styles.ts +47 -0
- package/src/components/tabs/index.ts +1 -0
- package/src/components/tabs/tabs.styles.ts +31 -0
- package/src/components/tag/index.ts +1 -0
- package/src/components/tag/tag.styles.ts +37 -0
- package/src/components/tag-group/index.ts +1 -0
- package/src/components/tag-group/tag-group.styles.ts +12 -0
- package/src/components/text/index.ts +1 -0
- package/src/components/text/text.styles.ts +29 -0
- package/src/components/textarea/index.ts +1 -0
- package/src/components/textarea/textarea.styles.ts +86 -0
- package/src/components/time-field/index.ts +1 -0
- package/src/components/time-field/time-field.styles.ts +86 -0
- package/src/components/toast/index.ts +1 -0
- package/src/components/toast/toast.styles.ts +67 -0
- package/src/components/toggle-button/index.ts +1 -0
- package/src/components/toggle-button/toggle-button.styles.ts +28 -0
- package/src/components/toggle-button-group/index.ts +1 -0
- package/src/components/toggle-button-group/toggle-button-group.styles.ts +39 -0
- package/src/components/toolbar/index.ts +1 -0
- package/src/components/toolbar/toolbar.styles.ts +23 -0
- package/src/components/tooltip/index.ts +1 -0
- package/src/components/tooltip/tooltip.styles.ts +12 -0
- package/src/components/tree/index.ts +1 -0
- package/src/components/tree/tree.styles.ts +33 -0
- package/src/index.ts +5 -0
- package/src/utils/index.ts +15 -0
- package/themes/default/components/index.css +6 -0
- package/themes/default/index.css +8 -0
- package/themes/default/variables.css +168 -0
- package/themes/shared/theme.css +196 -0
- package/utilities/index.css +244 -0
- package/variants/index.css +106 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Base checkbox styles
|
|
3
|
+
========================================================================== */
|
|
4
|
+
|
|
5
|
+
.checkbox {
|
|
6
|
+
@apply flex gap-3 outline-none no-highlight;
|
|
7
|
+
|
|
8
|
+
cursor: var(--cursor-interactive);
|
|
9
|
+
|
|
10
|
+
/* Align center when there's no description */
|
|
11
|
+
&:not(:has([data-slot="description"])) {
|
|
12
|
+
@apply items-center;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Align start when there's a description */
|
|
16
|
+
&:has([data-slot="description"]) {
|
|
17
|
+
@apply items-start;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
[data-slot="label"] {
|
|
21
|
+
@apply select-none;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[data-slot="description"] {
|
|
25
|
+
@apply text-wrap select-none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* Disabled state */
|
|
29
|
+
&:disabled,
|
|
30
|
+
&[data-disabled],
|
|
31
|
+
&[aria-disabled="true"] {
|
|
32
|
+
@apply status-disabled;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Indicator styles */
|
|
36
|
+
&[data-state="checked"],
|
|
37
|
+
&[data-state="indeterminate"] {
|
|
38
|
+
.checkbox__indicator {
|
|
39
|
+
border-color: var(--accent-foreground);
|
|
40
|
+
background: var(--accent-hover);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* Checkmark SVG indicator */
|
|
45
|
+
[data-slot="checkbox-default-indicator--checkmark"] {
|
|
46
|
+
@apply size-2.5 stroke-[2.5px] text-accent-foreground;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Transitions
|
|
50
|
+
*/
|
|
51
|
+
@apply transition-all duration-300 motion-reduce:transition-none;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&[data-state="checked"] [data-slot="checkbox-default-indicator--checkmark"] {
|
|
55
|
+
transition: stroke-dashoffset 300ms linear 300ms;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Invalid + Selected: checkmark icon color */
|
|
59
|
+
&[aria-invalid="true"][data-state="checked"] [data-slot="checkbox-default-indicator--checkmark"],
|
|
60
|
+
&[aria-invalid="true"][aria-checked="true"] [data-slot="checkbox-default-indicator--checkmark"],
|
|
61
|
+
&[aria-invalid="true"][data-state="checked"] [data-slot="checkbox-default-indicator--checkmark"],
|
|
62
|
+
&[aria-invalid="true"][aria-checked="true"] [data-slot="checkbox-default-indicator--checkmark"] {
|
|
63
|
+
@apply text-danger-foreground;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Indeterminate line indicator */
|
|
67
|
+
&[data-state="indeterminate"] {
|
|
68
|
+
[data-slot="checkbox-default-indicator--indeterminate"] {
|
|
69
|
+
@apply size-3;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* Invalid + Indeterminate: indeterminate icon color */
|
|
74
|
+
&[data-state="indeterminate"][aria-invalid="true"]
|
|
75
|
+
[data-slot="checkbox-default-indicator--indeterminate"],
|
|
76
|
+
&[data-state="indeterminate"][aria-invalid="true"]
|
|
77
|
+
[data-slot="checkbox-default-indicator--indeterminate"] {
|
|
78
|
+
@apply text-danger-foreground;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* ==========================================================================
|
|
83
|
+
Checkbox control (the square button)
|
|
84
|
+
========================================================================== */
|
|
85
|
+
|
|
86
|
+
.checkbox__control {
|
|
87
|
+
@apply relative inline-flex size-4 shrink-0 items-center justify-center overflow-hidden rounded-md border border-border-secondary bg-field shadow-field outline-none no-highlight;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Transitions
|
|
91
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
92
|
+
*/
|
|
93
|
+
transition:
|
|
94
|
+
background-color 300ms var(--ease-out),
|
|
95
|
+
transform 300ms var(--ease-out);
|
|
96
|
+
@apply motion-reduce:transition-none;
|
|
97
|
+
|
|
98
|
+
cursor: var(--cursor-interactive);
|
|
99
|
+
|
|
100
|
+
/* Add top margin when there's a description */
|
|
101
|
+
.checkbox:has([data-slot="description"]) & {
|
|
102
|
+
@apply mt-0.5;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Background indicator pseudo-element */
|
|
106
|
+
&::before {
|
|
107
|
+
@apply pointer-events-none absolute inset-0 z-0 origin-center scale-70 rounded-md bg-accent opacity-0 content-[''];
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Transitions
|
|
111
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
112
|
+
*/
|
|
113
|
+
transition:
|
|
114
|
+
scale 300ms var(--ease-linear),
|
|
115
|
+
opacity 300ms var(--ease-linear),
|
|
116
|
+
background-color 300ms var(--ease-out);
|
|
117
|
+
@apply motion-reduce:transition-none;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Interactive states */
|
|
121
|
+
/* Focus */
|
|
122
|
+
.checkbox:focus-visible &,
|
|
123
|
+
.checkbox:focus-visible & {
|
|
124
|
+
@apply status-focused;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* Hover */
|
|
128
|
+
.checkbox:hover &,
|
|
129
|
+
.checkbox:hover & {
|
|
130
|
+
@apply border-field-border-hover;
|
|
131
|
+
|
|
132
|
+
&::before {
|
|
133
|
+
@apply bg-accent-hover;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/* Pressed */
|
|
138
|
+
.checkbox:active &,
|
|
139
|
+
.checkbox:active & {
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Selection states */
|
|
143
|
+
/* Selected */
|
|
144
|
+
.checkbox[aria-checked="true"] &,
|
|
145
|
+
.checkbox[data-state="checked"] & {
|
|
146
|
+
@apply border-transparent text-accent-foreground border-0;
|
|
147
|
+
|
|
148
|
+
&::before {
|
|
149
|
+
@apply scale-100 opacity-100;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/* Indeterminate */
|
|
154
|
+
.checkbox[data-state="indeterminate"] & {
|
|
155
|
+
@apply bg-accent text-accent-foreground;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Indeterminate + Pressed */
|
|
159
|
+
.checkbox:active[data-state="indeterminate"] &,
|
|
160
|
+
.checkbox:active[data-state="indeterminate"] & {
|
|
161
|
+
@apply bg-accent-hover;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* Validation states */
|
|
165
|
+
/* Invalid (only when not selected/indeterminate) */
|
|
166
|
+
.checkbox[aria-invalid="true"]:not([aria-checked="true"]):not([data-state="checked"]):not(
|
|
167
|
+
[data-state="indeterminate"]
|
|
168
|
+
)
|
|
169
|
+
&,
|
|
170
|
+
.checkbox[aria-invalid="true"]:not([aria-checked="true"]):not([data-state="checked"]):not(
|
|
171
|
+
[data-state="indeterminate"]
|
|
172
|
+
)
|
|
173
|
+
& {
|
|
174
|
+
@apply status-invalid-field;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/* Invalid + Selected */
|
|
178
|
+
.checkbox[aria-invalid="true"][aria-checked="true"] &,
|
|
179
|
+
.checkbox[aria-invalid="true"][data-state="checked"] &,
|
|
180
|
+
.checkbox[aria-invalid="true"][aria-checked="true"] &,
|
|
181
|
+
.checkbox[aria-invalid="true"][data-state="checked"] & {
|
|
182
|
+
@apply border-transparent bg-danger text-danger-foreground;
|
|
183
|
+
|
|
184
|
+
&::before {
|
|
185
|
+
@apply scale-100 bg-danger opacity-100;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/* Invalid + Indeterminate */
|
|
190
|
+
.checkbox[data-state="indeterminate"][aria-invalid="true"] &,
|
|
191
|
+
.checkbox[data-state="indeterminate"][aria-invalid="true"] & {
|
|
192
|
+
@apply bg-danger text-danger-foreground;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/* ==========================================================================
|
|
197
|
+
Checkbox indicator
|
|
198
|
+
========================================================================== */
|
|
199
|
+
|
|
200
|
+
.checkbox__indicator {
|
|
201
|
+
@apply relative z-10 flex size-3 items-center justify-center;
|
|
202
|
+
|
|
203
|
+
& svg {
|
|
204
|
+
@apply transform-gpu;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/* ==========================================================================
|
|
209
|
+
Checkbox content wrapper
|
|
210
|
+
========================================================================== */
|
|
211
|
+
|
|
212
|
+
.checkbox__content {
|
|
213
|
+
@apply flex flex-col gap-0;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/* ==========================================================================
|
|
217
|
+
Disabled modifier
|
|
218
|
+
========================================================================== */
|
|
219
|
+
|
|
220
|
+
.checkbox--disabled {
|
|
221
|
+
@apply status-disabled;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/* ==========================================================================
|
|
225
|
+
Variant property definitions
|
|
226
|
+
========================================================================== */
|
|
227
|
+
|
|
228
|
+
.checkbox--primary {
|
|
229
|
+
/* Default styles */
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
.checkbox--secondary .checkbox__control {
|
|
233
|
+
@apply shadow-none;
|
|
234
|
+
background-color: var(--checkbox-control-bg);
|
|
235
|
+
|
|
236
|
+
--checkbox-control-bg: var(--color-default);
|
|
237
|
+
|
|
238
|
+
/* Hover state */
|
|
239
|
+
.checkbox:hover &,
|
|
240
|
+
.checkbox:hover & {
|
|
241
|
+
@apply border-field-border-hover;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/* Unselected state background for secondary variant */
|
|
246
|
+
.checkbox--secondary:not([aria-checked="true"]):not([data-state="checked"]):not(
|
|
247
|
+
[data-state="indeterminate"]
|
|
248
|
+
)
|
|
249
|
+
.checkbox__control {
|
|
250
|
+
background-color: var(--checkbox-control-bg);
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
/* Selected state on secondary variant */
|
|
254
|
+
.checkbox--secondary[aria-checked="true"] .checkbox__control,
|
|
255
|
+
.checkbox--secondary[data-state="checked"] .checkbox__control {
|
|
256
|
+
&::before {
|
|
257
|
+
@apply bg-accent;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/* Indeterminate state on secondary variant */
|
|
262
|
+
.checkbox--secondary[data-state="indeterminate"] .checkbox__control {
|
|
263
|
+
@apply bg-accent;
|
|
264
|
+
|
|
265
|
+
&::before {
|
|
266
|
+
@apply bg-accent;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
/* ==========================================================================
|
|
2
|
+
Chip - Compact pill-shaped element for tags, statuses, filters, and labels.
|
|
3
|
+
========================================================================== */
|
|
4
|
+
|
|
5
|
+
/* Base styles */
|
|
6
|
+
.chip {
|
|
7
|
+
@apply inline-flex shrink-0 items-center gap-1 rounded-full px-2.5 text-xs leading-none font-medium align-middle;
|
|
8
|
+
|
|
9
|
+
/* Default tokens */
|
|
10
|
+
--chip-bg: transparent;
|
|
11
|
+
--chip-fg: currentColor;
|
|
12
|
+
--chip-border: transparent;
|
|
13
|
+
|
|
14
|
+
height: 1.75rem; /* 28px — md default */
|
|
15
|
+
background-color: var(--chip-bg);
|
|
16
|
+
color: var(--chip-fg);
|
|
17
|
+
border: 1px solid var(--chip-border);
|
|
18
|
+
transition:
|
|
19
|
+
background-color 0.15s ease,
|
|
20
|
+
border-color 0.15s ease,
|
|
21
|
+
color 0.15s ease;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.chip__label {
|
|
25
|
+
@apply inline-flex items-center px-0.5 leading-none;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.chip__start-content,
|
|
29
|
+
.chip__end-content {
|
|
30
|
+
@apply inline-flex shrink-0 items-center justify-center;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.chip__start-content > svg,
|
|
34
|
+
.chip__end-content > svg {
|
|
35
|
+
@apply h-3.5 w-3.5;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.chip__dot {
|
|
39
|
+
@apply inline-block shrink-0 rounded-full;
|
|
40
|
+
width: 0.5rem;
|
|
41
|
+
height: 0.5rem;
|
|
42
|
+
background-color: currentColor;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.chip__close-button {
|
|
46
|
+
@apply inline-flex shrink-0 items-center justify-center rounded-full cursor-pointer outline-none;
|
|
47
|
+
width: 1rem;
|
|
48
|
+
height: 1rem;
|
|
49
|
+
margin-inline-start: 0.125rem;
|
|
50
|
+
margin-inline-end: -0.25rem;
|
|
51
|
+
color: currentColor;
|
|
52
|
+
opacity: 0.7;
|
|
53
|
+
background-color: transparent;
|
|
54
|
+
border: none;
|
|
55
|
+
transition: opacity 0.15s ease, background-color 0.15s ease;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.chip__close-button:hover {
|
|
59
|
+
opacity: 1;
|
|
60
|
+
background-color: color-mix(in srgb, currentColor 15%, transparent);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
.chip__close-button:focus-visible {
|
|
64
|
+
outline: 2px solid var(--color-focus, currentColor);
|
|
65
|
+
outline-offset: 1px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.chip__close-button > svg {
|
|
69
|
+
@apply h-3 w-3;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* ==========================================================================
|
|
73
|
+
Color variants - set foreground color
|
|
74
|
+
========================================================================== */
|
|
75
|
+
|
|
76
|
+
.chip--accent {
|
|
77
|
+
--chip-fg: var(--color-accent);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
.chip--danger {
|
|
81
|
+
--chip-fg: var(--color-danger);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.chip--default {
|
|
85
|
+
--chip-fg: var(--color-default-foreground);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.chip--success {
|
|
89
|
+
--chip-fg: var(--color-success);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.chip--warning {
|
|
93
|
+
--chip-fg: var(--color-warning);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/* ==========================================================================
|
|
97
|
+
Variant styles
|
|
98
|
+
========================================================================== */
|
|
99
|
+
|
|
100
|
+
/* Solid: filled background using the color, contrasting foreground */
|
|
101
|
+
.chip--solid {
|
|
102
|
+
/* Compound variants below set --chip-bg / --chip-fg per color */
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/* Soft: muted/translucent background, colored foreground */
|
|
106
|
+
.chip--soft {
|
|
107
|
+
/* Compound variants below set --chip-bg / --chip-fg per color */
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Outlined: transparent background with a colored border */
|
|
111
|
+
.chip--outlined {
|
|
112
|
+
--chip-bg: transparent;
|
|
113
|
+
--chip-border: color-mix(in srgb, currentColor 45%, transparent);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Text: no background, no border — just colored text */
|
|
117
|
+
.chip--text {
|
|
118
|
+
--chip-bg: transparent;
|
|
119
|
+
--chip-border: transparent;
|
|
120
|
+
@apply px-1;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* ==========================================================================
|
|
124
|
+
Size variants
|
|
125
|
+
========================================================================== */
|
|
126
|
+
|
|
127
|
+
.chip--sm {
|
|
128
|
+
@apply px-2 text-[11px];
|
|
129
|
+
height: 1.375rem; /* 22px */
|
|
130
|
+
gap: 0.1875rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.chip--sm.chip--text {
|
|
134
|
+
@apply px-1;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
.chip--sm .chip__close-button {
|
|
138
|
+
width: 0.875rem;
|
|
139
|
+
height: 0.875rem;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
.chip--sm .chip__dot {
|
|
143
|
+
width: 0.4375rem;
|
|
144
|
+
height: 0.4375rem;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.chip--md {
|
|
148
|
+
/* Defaults applied on .chip */
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.chip--lg {
|
|
152
|
+
@apply px-3 text-sm;
|
|
153
|
+
height: 2rem; /* 32px */
|
|
154
|
+
gap: 0.375rem;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.chip--lg.chip--text {
|
|
158
|
+
@apply px-1.5;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.chip--lg .chip__close-button {
|
|
162
|
+
width: 1.125rem;
|
|
163
|
+
height: 1.125rem;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.chip--lg .chip__dot {
|
|
167
|
+
width: 0.5625rem;
|
|
168
|
+
height: 0.5625rem;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
/* ==========================================================================
|
|
172
|
+
Compound variants - Solid (filled backgrounds)
|
|
173
|
+
========================================================================== */
|
|
174
|
+
|
|
175
|
+
.chip--solid.chip--default {
|
|
176
|
+
--chip-bg: var(--color-default);
|
|
177
|
+
--chip-fg: var(--color-default-foreground);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
.chip--solid.chip--accent {
|
|
181
|
+
--chip-bg: var(--color-accent);
|
|
182
|
+
--chip-fg: var(--color-accent-foreground);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.chip--solid.chip--success {
|
|
186
|
+
--chip-bg: var(--color-success);
|
|
187
|
+
--chip-fg: var(--color-success-foreground);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
.chip--solid.chip--warning {
|
|
191
|
+
--chip-bg: var(--color-warning);
|
|
192
|
+
--chip-fg: var(--color-warning-foreground);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.chip--solid.chip--danger {
|
|
196
|
+
--chip-bg: var(--color-danger);
|
|
197
|
+
--chip-fg: var(--color-danger-foreground);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/* ==========================================================================
|
|
201
|
+
Compound variants - Soft (muted backgrounds)
|
|
202
|
+
========================================================================== */
|
|
203
|
+
|
|
204
|
+
.chip--soft.chip--default {
|
|
205
|
+
--chip-bg: color-mix(in srgb, var(--color-default) 40%, transparent);
|
|
206
|
+
--chip-fg: var(--color-default-foreground);
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.chip--soft.chip--accent {
|
|
210
|
+
--chip-bg: var(--color-accent-soft);
|
|
211
|
+
--chip-fg: var(--color-accent-soft-foreground);
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.chip--soft.chip--success {
|
|
215
|
+
--chip-bg: var(--color-success-soft);
|
|
216
|
+
--chip-fg: var(--color-success-soft-foreground);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
.chip--soft.chip--warning {
|
|
220
|
+
--chip-bg: var(--color-warning-soft);
|
|
221
|
+
--chip-fg: var(--color-warning-soft-foreground);
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.chip--soft.chip--danger {
|
|
225
|
+
--chip-bg: var(--color-danger-soft);
|
|
226
|
+
--chip-fg: var(--color-danger-soft-foreground);
|
|
227
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/* Close Button component styles */
|
|
2
|
+
|
|
3
|
+
/* Base close button styles */
|
|
4
|
+
.close-button {
|
|
5
|
+
@apply relative isolate inline-flex h-6 w-6 shrink-0 origin-center items-center justify-center rounded-xl p-1 select-none no-highlight;
|
|
6
|
+
|
|
7
|
+
/* Cursor */
|
|
8
|
+
cursor: var(--cursor-interactive);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Transitions
|
|
12
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
13
|
+
*/
|
|
14
|
+
transition:
|
|
15
|
+
transform 300ms var(--ease-out-quart),
|
|
16
|
+
color 300ms var(--ease-out),
|
|
17
|
+
background-color 300ms var(--ease-out),
|
|
18
|
+
box-shadow 300ms var(--ease-out);
|
|
19
|
+
@apply transform-gpu motion-reduce:transition-none;
|
|
20
|
+
|
|
21
|
+
/* Focus visible state */
|
|
22
|
+
&:focus-visible:not(:focus),
|
|
23
|
+
&[data-focus-visible="true"] {
|
|
24
|
+
@apply status-focused;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Disabled state */
|
|
28
|
+
&:disabled,
|
|
29
|
+
&[aria-disabled="true"] {
|
|
30
|
+
@apply status-disabled;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/* Pending state */
|
|
34
|
+
&[data-pending="true"] {
|
|
35
|
+
@apply status-pending;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* SVG icon styling*/
|
|
39
|
+
& svg {
|
|
40
|
+
@apply pointer-events-none;
|
|
41
|
+
@apply size-4 shrink-0 self-center;
|
|
42
|
+
@apply -mx-0.5 my-0.5;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/* Variants */
|
|
47
|
+
.close-button--default {
|
|
48
|
+
@apply bg-default text-muted;
|
|
49
|
+
|
|
50
|
+
&:active,
|
|
51
|
+
&[data-pressed="true"] {
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@media (hover: hover) {
|
|
55
|
+
&:hover,
|
|
56
|
+
&[data-hovered="true"] {
|
|
57
|
+
@apply bg-default-hover;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
&:active,
|
|
62
|
+
&[data-pressed="true"] {
|
|
63
|
+
transform: scale(0.93);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* Base collapsible styles */
|
|
2
|
+
.collapsible {
|
|
3
|
+
@apply relative w-full;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.collapsible__trigger {
|
|
7
|
+
cursor: var(--cursor-interactive);
|
|
8
|
+
@apply flex w-full items-center text-left font-medium no-highlight rounded-lg px-4 py-3.5 text-sm;
|
|
9
|
+
|
|
10
|
+
transition:
|
|
11
|
+
background-color 200ms var(--ease-out),
|
|
12
|
+
color 200ms var(--ease-out),
|
|
13
|
+
opacity 300ms var(--ease-out),
|
|
14
|
+
box-shadow 300ms var(--ease-out),
|
|
15
|
+
transform 120ms var(--ease-out);
|
|
16
|
+
@apply motion-reduce:transition-none;
|
|
17
|
+
|
|
18
|
+
/* Hover state — subtle surface lift */
|
|
19
|
+
@media (hover: hover) {
|
|
20
|
+
&:hover {
|
|
21
|
+
background-color: color-mix(in oklab, var(--color-foreground) 4%, transparent);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/* Pressed state — tactile feedback */
|
|
26
|
+
&:active:not([aria-disabled="true"]),
|
|
27
|
+
&[data-pressed="true"] {
|
|
28
|
+
transform: scale(0.995);
|
|
29
|
+
background-color: color-mix(in oklab, var(--color-foreground) 7%, transparent);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
&[aria-expanded="true"] {
|
|
33
|
+
@apply text-foreground;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* Focus state */
|
|
37
|
+
&:focus-visible:not(:focus),
|
|
38
|
+
&[data-focus-visible="true"] {
|
|
39
|
+
@apply status-focused;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Disabled state */
|
|
43
|
+
&:disabled,
|
|
44
|
+
&[aria-disabled="true"] {
|
|
45
|
+
@apply status-disabled;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.collapsible__indicator {
|
|
50
|
+
@apply ml-auto size-4 shrink-0 text-muted;
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
justify-content: center;
|
|
54
|
+
|
|
55
|
+
transition:
|
|
56
|
+
transform 250ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
57
|
+
color 200ms var(--ease-out);
|
|
58
|
+
@apply motion-reduce:transition-none;
|
|
59
|
+
|
|
60
|
+
/* Expanded state — rotate + color lift */
|
|
61
|
+
&[data-state="open"] {
|
|
62
|
+
@apply -rotate-180 text-foreground;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.collapsible__body {
|
|
67
|
+
@apply text-sm;
|
|
68
|
+
|
|
69
|
+
/* Height/opacity animation driven by motion-v in CollapsibleContent.vue */
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.collapsible__body-inner {
|
|
73
|
+
@apply px-4 pt-1 pb-4 text-sm text-muted leading-relaxed;
|
|
74
|
+
}
|