@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,48 @@
|
|
|
1
|
+
.skeleton {
|
|
2
|
+
@apply pointer-events-none relative overflow-hidden rounded-sm bg-surface-tertiary/70;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/* TODO: Skeleton with parent are not visible */
|
|
6
|
+
|
|
7
|
+
/* Animation types */
|
|
8
|
+
.skeleton--shimmer {
|
|
9
|
+
&::after {
|
|
10
|
+
@apply absolute inset-0 -translate-x-full animate-skeleton bg-linear-to-r from-transparent via-surface-tertiary to-transparent content-[''];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* When applied to a parent container with multiple skeletons */
|
|
14
|
+
&:has(.skeleton) {
|
|
15
|
+
&::after {
|
|
16
|
+
content: none;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* Single synchronized shimmer that passes over all children */
|
|
20
|
+
&::before {
|
|
21
|
+
@apply absolute inset-0 -translate-x-full animate-skeleton content-[''];
|
|
22
|
+
background: linear-gradient(
|
|
23
|
+
90deg,
|
|
24
|
+
transparent 0%,
|
|
25
|
+
rgba(255, 255, 255, 0.5) 50%,
|
|
26
|
+
transparent 100%
|
|
27
|
+
);
|
|
28
|
+
z-index: 10;
|
|
29
|
+
pointer-events: none;
|
|
30
|
+
/* Use mix-blend-mode to only show over skeleton elements */
|
|
31
|
+
mix-blend-mode: overlay;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Ensure children don't have their own shimmer */
|
|
35
|
+
& .skeleton {
|
|
36
|
+
&::after {
|
|
37
|
+
content: none;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.skeleton--pulse {
|
|
44
|
+
@apply animate-pulse;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.skeleton--none {
|
|
48
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/* Slider styles */
|
|
2
|
+
|
|
3
|
+
.slider {
|
|
4
|
+
@apply grid w-full gap-1;
|
|
5
|
+
|
|
6
|
+
grid-template-areas:
|
|
7
|
+
"label output"
|
|
8
|
+
"track track";
|
|
9
|
+
grid-template-columns: 1fr auto;
|
|
10
|
+
|
|
11
|
+
[data-slot="label"] {
|
|
12
|
+
@apply w-fit text-sm font-medium;
|
|
13
|
+
|
|
14
|
+
grid-area: label;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.slider__output {
|
|
18
|
+
@apply text-sm font-medium tabular-nums;
|
|
19
|
+
|
|
20
|
+
grid-area: output;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.slider__track {
|
|
24
|
+
@apply relative rounded-full bg-default;
|
|
25
|
+
|
|
26
|
+
grid-area: track;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.slider__fill {
|
|
30
|
+
@apply pointer-events-none absolute rounded-full bg-accent;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.slider__thumb {
|
|
34
|
+
/* Flex container for centering pseudo-elements */
|
|
35
|
+
@apply absolute flex cursor-grab items-center justify-center rounded-full bg-accent no-highlight;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Transitions
|
|
39
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
40
|
+
*/
|
|
41
|
+
transition:
|
|
42
|
+
background-color 300ms var(--ease-smooth),
|
|
43
|
+
transform 300ms var(--ease-out),
|
|
44
|
+
box-shadow 300ms var(--ease-out);
|
|
45
|
+
@apply motion-reduce:transition-none;
|
|
46
|
+
|
|
47
|
+
/* after: Visible thumb element */
|
|
48
|
+
&::after {
|
|
49
|
+
@apply relative z-10 rounded-full bg-accent-foreground text-black shadow-field;
|
|
50
|
+
content: "";
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Transitions
|
|
54
|
+
*/
|
|
55
|
+
@apply origin-center transition-all motion-reduce:transition-none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/* Dragging state - cursor changes and thumb scales down */
|
|
59
|
+
&[data-dragging="true"] {
|
|
60
|
+
@apply cursor-grabbing;
|
|
61
|
+
|
|
62
|
+
&::after {
|
|
63
|
+
@apply scale-[0.9] motion-reduce:scale-100;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* Focus state - increase z-index */
|
|
68
|
+
&:focus {
|
|
69
|
+
@apply z-10 status-focused;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Disabled state */
|
|
73
|
+
&[data-disabled] {
|
|
74
|
+
@apply cursor-default;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Disabled state */
|
|
79
|
+
&:disabled,
|
|
80
|
+
&[data-disabled],
|
|
81
|
+
&[aria-disabled="true"] {
|
|
82
|
+
@apply status-disabled;
|
|
83
|
+
|
|
84
|
+
[data-slot="label"] {
|
|
85
|
+
@apply opacity-100;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Horizontal orientation */
|
|
90
|
+
&[data-orientation="horizontal"] {
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
|
|
93
|
+
.slider__track {
|
|
94
|
+
@apply h-5 w-full overflow-visible;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.slider__fill {
|
|
98
|
+
@apply h-full;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
.slider__thumb {
|
|
102
|
+
@apply top-1/2 h-full;
|
|
103
|
+
|
|
104
|
+
width: 1.25rem;
|
|
105
|
+
--reka-slider-thumb-transform: translate(-50%, -50%);
|
|
106
|
+
|
|
107
|
+
&::after {
|
|
108
|
+
width: 0.875rem;
|
|
109
|
+
height: 0.875rem;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Vertical orientation */
|
|
115
|
+
&[data-orientation="vertical"] {
|
|
116
|
+
@apply h-full gap-2;
|
|
117
|
+
|
|
118
|
+
flex-direction: row;
|
|
119
|
+
grid-template-areas:
|
|
120
|
+
"output"
|
|
121
|
+
"track"
|
|
122
|
+
"label";
|
|
123
|
+
grid-template-rows: auto 1fr auto;
|
|
124
|
+
grid-template-columns: 1fr;
|
|
125
|
+
|
|
126
|
+
.slider__output {
|
|
127
|
+
text-align: center;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
[data-slot="label"] {
|
|
131
|
+
text-align: center;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.slider__track {
|
|
135
|
+
@apply h-full w-5 overflow-visible;
|
|
136
|
+
justify-self: center;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.slider__fill {
|
|
140
|
+
@apply w-full;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.slider__thumb {
|
|
144
|
+
@apply left-1/2 w-full;
|
|
145
|
+
|
|
146
|
+
height: 1.25rem;
|
|
147
|
+
--reka-slider-thumb-transform: translate(-50%, 50%);
|
|
148
|
+
|
|
149
|
+
&::after {
|
|
150
|
+
width: 0.875rem;
|
|
151
|
+
height: 0.875rem;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* Base spinner styles */
|
|
2
|
+
.spinner {
|
|
3
|
+
@apply pointer-events-none relative size-6 origin-center animate-spin-fast;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
/* Size variants */
|
|
7
|
+
.spinner--sm {
|
|
8
|
+
@apply size-4;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.spinner--md {
|
|
12
|
+
/* No styles as this is the default size */
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.spinner--lg {
|
|
16
|
+
@apply size-8;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.spinner--xl {
|
|
20
|
+
@apply size-10;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Color variants */
|
|
24
|
+
.spinner--current {
|
|
25
|
+
color: inherit;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.spinner--accent {
|
|
29
|
+
color: var(--accent);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.spinner--danger {
|
|
33
|
+
color: var(--danger);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
.spinner--success {
|
|
37
|
+
color: var(--success);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.spinner--warning {
|
|
41
|
+
color: var(--warning);
|
|
42
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/* Splitter component styles */
|
|
2
|
+
.splitter-group {
|
|
3
|
+
@apply flex size-full overflow-hidden;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.splitter-group--horizontal {
|
|
7
|
+
@apply flex-row;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.splitter-group--vertical {
|
|
11
|
+
@apply flex-col;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.splitter-panel {
|
|
15
|
+
@apply overflow-hidden;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Resize handle */
|
|
19
|
+
.splitter-handle {
|
|
20
|
+
@apply relative flex shrink-0 items-center justify-center focus-visible:outline-none;
|
|
21
|
+
|
|
22
|
+
/* Focus ring */
|
|
23
|
+
&:focus-visible {
|
|
24
|
+
@apply status-focused;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/* Active/dragging cursor */
|
|
28
|
+
&[data-state="drag"] {
|
|
29
|
+
@apply opacity-100;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.splitter-handle--horizontal {
|
|
34
|
+
@apply cursor-col-resize;
|
|
35
|
+
width: 1px;
|
|
36
|
+
margin-inline: 1px;
|
|
37
|
+
|
|
38
|
+
&::before {
|
|
39
|
+
@apply absolute inset-y-0 -inset-x-1.5 content-[''];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.splitter-handle--vertical {
|
|
44
|
+
@apply cursor-row-resize;
|
|
45
|
+
height: 1px;
|
|
46
|
+
margin-block: 1px;
|
|
47
|
+
|
|
48
|
+
&::before {
|
|
49
|
+
@apply absolute inset-x-0 -inset-y-1.5 content-[''];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Visual bar inside the handle */
|
|
54
|
+
.splitter-handle__bar {
|
|
55
|
+
@apply rounded-full bg-default transition-colors;
|
|
56
|
+
|
|
57
|
+
.splitter-handle--horizontal & {
|
|
58
|
+
@apply h-8 w-px;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.splitter-handle--vertical & {
|
|
62
|
+
@apply h-px w-8;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@media (hover: hover) {
|
|
66
|
+
.splitter-handle:hover & {
|
|
67
|
+
@apply bg-default-hover;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.splitter-handle[data-state="drag"] & {
|
|
72
|
+
@apply bg-accent;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/* Stepper component styles */
|
|
2
|
+
|
|
3
|
+
/* -------------------------------------------------- Container -------------------------------------------------- */
|
|
4
|
+
.stepper {
|
|
5
|
+
@apply flex;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.stepper--horizontal {
|
|
9
|
+
@apply flex-row items-start;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.stepper--vertical {
|
|
13
|
+
@apply flex-col;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* -------------------------------------------------- Item -------------------------------------------------- */
|
|
17
|
+
.stepper__item {
|
|
18
|
+
@apply relative flex;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.stepper__item--horizontal {
|
|
22
|
+
@apply flex-1 flex-col items-center;
|
|
23
|
+
|
|
24
|
+
&:last-child {
|
|
25
|
+
@apply flex-none;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.stepper__item--vertical {
|
|
30
|
+
@apply flex-row gap-3;
|
|
31
|
+
|
|
32
|
+
&:last-child .stepper__separator--vertical {
|
|
33
|
+
@apply hidden;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/* -------------------------------------------------- Indicator -------------------------------------------------- */
|
|
38
|
+
.stepper__indicator {
|
|
39
|
+
@apply relative z-10 flex shrink-0 items-center justify-center rounded-full font-semibold transition-colors;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Size variants */
|
|
43
|
+
.stepper__indicator--sm {
|
|
44
|
+
@apply size-6 text-xs;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.stepper__indicator--md {
|
|
48
|
+
@apply size-8 text-sm;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.stepper__indicator--lg {
|
|
52
|
+
@apply size-10 text-base;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/* Color: pending (default gray) */
|
|
56
|
+
.stepper__indicator {
|
|
57
|
+
@apply bg-default text-default-foreground;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Completed state — neutral green-ish using accent */
|
|
61
|
+
.stepper__item[data-status="completed"] .stepper__indicator {
|
|
62
|
+
@apply bg-success text-success-foreground;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Error state */
|
|
66
|
+
.stepper__item[data-status="error"] .stepper__indicator {
|
|
67
|
+
@apply bg-danger text-danger-foreground;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/* Current (active) step */
|
|
71
|
+
.stepper__item[data-status="current"] .stepper__indicator--default {
|
|
72
|
+
@apply bg-default text-default-foreground ring-2 ring-default;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.stepper__item[data-status="current"] .stepper__indicator--accent {
|
|
76
|
+
@apply bg-accent text-accent-foreground ring-2 ring-accent/30;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.stepper__item[data-status="current"] .stepper__indicator--success {
|
|
80
|
+
@apply bg-success text-success-foreground ring-2 ring-success/30;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.stepper__item[data-status="current"] .stepper__indicator--warning {
|
|
84
|
+
@apply bg-warning text-warning-foreground ring-2 ring-warning/30;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.stepper__item[data-status="current"] .stepper__indicator--danger {
|
|
88
|
+
@apply bg-danger text-danger-foreground ring-2 ring-danger/30;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/* -------------------------------------------------- Content (title + description) -------------------------------------------------- */
|
|
92
|
+
.stepper__content {
|
|
93
|
+
@apply flex flex-col;
|
|
94
|
+
|
|
95
|
+
.stepper__item--horizontal & {
|
|
96
|
+
@apply mt-2 items-center text-center;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.stepper__item--vertical & {
|
|
100
|
+
@apply pb-6;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.stepper__title {
|
|
105
|
+
@apply font-medium text-foreground;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.stepper__title--sm {
|
|
109
|
+
@apply text-xs;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.stepper__title--md {
|
|
113
|
+
@apply text-sm;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.stepper__title--lg {
|
|
117
|
+
@apply text-base;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
.stepper__item[data-status="pending"] .stepper__title {
|
|
121
|
+
@apply text-muted;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.stepper__description {
|
|
125
|
+
@apply text-xs text-muted;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* -------------------------------------------------- Separator -------------------------------------------------- */
|
|
129
|
+
.stepper__separator {
|
|
130
|
+
@apply bg-default transition-colors;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/* Horizontal separator fills the space between the step indicator and next one */
|
|
134
|
+
.stepper__separator--horizontal {
|
|
135
|
+
@apply mt-4 h-px flex-1;
|
|
136
|
+
|
|
137
|
+
.stepper__item--horizontal:last-child & {
|
|
138
|
+
@apply hidden;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/* Vertical separator is a line on the left side running down */
|
|
143
|
+
.stepper__separator--vertical {
|
|
144
|
+
@apply absolute left-4 top-8 -translate-x-1/2 w-px;
|
|
145
|
+
bottom: 0;
|
|
146
|
+
|
|
147
|
+
.stepper__indicator--sm ~ & {
|
|
148
|
+
@apply left-3 top-6;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
.stepper__indicator--lg ~ & {
|
|
152
|
+
@apply left-5 top-10;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/* Completed separator takes accent color */
|
|
157
|
+
.stepper__item[data-status="completed"] .stepper__separator,
|
|
158
|
+
.stepper__item[data-status="current"] .stepper__separator {
|
|
159
|
+
@apply bg-accent;
|
|
160
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/* Surface component styles */
|
|
2
|
+
|
|
3
|
+
/* Block */
|
|
4
|
+
.surface {
|
|
5
|
+
@apply relative text-foreground;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Modifier - variant */
|
|
9
|
+
.surface--transparent {
|
|
10
|
+
@apply bg-transparent;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.surface--default {
|
|
14
|
+
@apply bg-surface text-surface-foreground;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.surface--secondary {
|
|
18
|
+
@apply bg-surface-secondary text-surface-secondary-foreground;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.surface--tertiary {
|
|
22
|
+
@apply bg-surface-tertiary text-surface-tertiary-foreground;
|
|
23
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/* Switch Group styles */
|
|
2
|
+
.switch-group {
|
|
3
|
+
@apply flex flex-col gap-6;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.switch-group__items {
|
|
7
|
+
@apply flex gap-4;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/* Orientation modifiers */
|
|
11
|
+
.switch-group--horizontal .switch-group__items {
|
|
12
|
+
@apply flex-row;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.switch-group--vertical .switch-group__items {
|
|
16
|
+
@apply flex-col;
|
|
17
|
+
}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/* Switch base styles */
|
|
2
|
+
.switch {
|
|
3
|
+
@apply inline-flex items-center gap-3 no-highlight;
|
|
4
|
+
|
|
5
|
+
/* Cursor */
|
|
6
|
+
cursor: var(--cursor-interactive);
|
|
7
|
+
|
|
8
|
+
/* Default tokens for switch control states */
|
|
9
|
+
--switch-control-bg: var(--color-default);
|
|
10
|
+
--switch-control-bg-hover: color-mix(in oklab, var(--switch-control-bg), transparent 20%);
|
|
11
|
+
--switch-control-bg-pressed: var(--switch-control-bg-hover);
|
|
12
|
+
--switch-control-bg-checked: var(--color-accent);
|
|
13
|
+
--switch-control-bg-checked-hover: var(--color-accent-hover);
|
|
14
|
+
|
|
15
|
+
/* Disabled state */
|
|
16
|
+
&:disabled,
|
|
17
|
+
&[data-disabled],
|
|
18
|
+
&[aria-disabled="true"] {
|
|
19
|
+
@apply status-disabled;
|
|
20
|
+
|
|
21
|
+
.switch__thumb {
|
|
22
|
+
@apply bg-default-foreground/20;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/* Disabled + Selected state */
|
|
27
|
+
&:disabled[aria-checked="true"],
|
|
28
|
+
&:disabled[data-state="checked"],
|
|
29
|
+
&[data-disabled][aria-checked="true"],
|
|
30
|
+
&[data-disabled][data-state="checked"],
|
|
31
|
+
&[aria-disabled="true"][aria-checked="true"],
|
|
32
|
+
&[aria-disabled="true"][data-state="checked"] {
|
|
33
|
+
.switch__thumb {
|
|
34
|
+
opacity: 0.4;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/* Size variants - default is medium */
|
|
40
|
+
.switch--sm {
|
|
41
|
+
/* Small size modifier */
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.switch--md {
|
|
45
|
+
/* Medium size - no styles as this is the default */
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.switch--lg {
|
|
49
|
+
/* Large size modifier */
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Switch control (track) */
|
|
53
|
+
.switch__control {
|
|
54
|
+
/* Default size (medium) */
|
|
55
|
+
@apply relative flex shrink-0 items-center overflow-hidden rounded-full;
|
|
56
|
+
height: 1.25rem; /* 20px on desktop (14px base), 20px on mobile (16px base) - scales with font-size */
|
|
57
|
+
width: 2.5rem; /* 35px on desktop, 40px on mobile - scales with font-size */
|
|
58
|
+
|
|
59
|
+
background-color: var(--switch-control-bg);
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Transitions
|
|
63
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
64
|
+
*/
|
|
65
|
+
transition:
|
|
66
|
+
background-color 300ms var(--ease-smooth),
|
|
67
|
+
box-shadow 300ms var(--ease-out);
|
|
68
|
+
@apply motion-reduce:transition-none;
|
|
69
|
+
|
|
70
|
+
/* Focus states */
|
|
71
|
+
.switch:focus-visible &,
|
|
72
|
+
.switch:focus-visible & {
|
|
73
|
+
@apply status-focused;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Hover states */
|
|
77
|
+
.switch:hover &,
|
|
78
|
+
.switch:hover & {
|
|
79
|
+
background-color: var(--switch-control-bg-hover);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* Pressed states */
|
|
83
|
+
.switch:active &,
|
|
84
|
+
.switch:active & {
|
|
85
|
+
background-color: var(--switch-control-bg-pressed);
|
|
86
|
+
@apply motion-reduce:transform-none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/* Checked states */
|
|
90
|
+
.switch[aria-checked="true"] &,
|
|
91
|
+
.switch[data-state="checked"] & {
|
|
92
|
+
background-color: var(--switch-control-bg-checked);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/* Checked + Hover states */
|
|
96
|
+
.switch[aria-checked="true"]:hover &,
|
|
97
|
+
.switch[data-state="checked"]:hover &,
|
|
98
|
+
.switch[aria-checked="true"]:hover &,
|
|
99
|
+
.switch[data-state="checked"]:hover & {
|
|
100
|
+
background-color: var(--switch-control-bg-checked-hover);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/* Checked + Pressed states */
|
|
104
|
+
.switch[aria-checked="true"]:active &,
|
|
105
|
+
.switch[data-state="checked"]:active &,
|
|
106
|
+
.switch[aria-checked="true"]:active &,
|
|
107
|
+
.switch[data-state="checked"]:active & {
|
|
108
|
+
background-color: var(--switch-control-bg-checked-hover);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/* Size-specific control dimensions */
|
|
113
|
+
.switch--sm .switch__control {
|
|
114
|
+
height: 1rem; /* ~14px on desktop, ~16px on mobile */
|
|
115
|
+
width: 2rem; /* ~32px on desktop, ~36px on mobile */
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.switch--md .switch__control {
|
|
119
|
+
/* No styles as this is the default size */
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.switch--lg .switch__control {
|
|
123
|
+
height: 1.5rem; /* ~21px on desktop, ~24px on mobile */
|
|
124
|
+
width: 3rem; /* ~48px on desktop, ~56px on mobile */
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/* Switch thumb */
|
|
128
|
+
.switch__thumb {
|
|
129
|
+
/* Default size (medium) - circular thumb */
|
|
130
|
+
@apply ms-0.5 flex origin-center rounded-full bg-white text-black shadow-field;
|
|
131
|
+
height: 1rem; /* 16px - matches width for circle */
|
|
132
|
+
width: 1rem;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Transitions
|
|
136
|
+
* CRITICAL: motion-reduce must be AFTER transition for correct override specificity
|
|
137
|
+
*/
|
|
138
|
+
transition:
|
|
139
|
+
margin 300ms var(--ease-out),
|
|
140
|
+
background-color 300ms var(--ease-out);
|
|
141
|
+
@apply motion-reduce:transition-none;
|
|
142
|
+
|
|
143
|
+
/* Selected/checked state - use margin instead of translate */
|
|
144
|
+
.switch[aria-checked="true"] &,
|
|
145
|
+
.switch[data-state="checked"] & {
|
|
146
|
+
@apply ms-[calc(100%-1.125rem)] bg-accent-foreground text-accent;
|
|
147
|
+
box-shadow:
|
|
148
|
+
0px 0px 5px 0px rgb(0 0 0 / 0.02),
|
|
149
|
+
0px 2px 10px 0px rgb(0 0 0 / 0.06),
|
|
150
|
+
0px 0px 1px 0px rgb(0 0 0 / 0.3);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.switch:active &,
|
|
154
|
+
.switch:active & {
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* Size-specific thumb dimensions */
|
|
159
|
+
.switch--sm .switch__thumb {
|
|
160
|
+
height: 0.75rem; /* 12px circle */
|
|
161
|
+
width: 0.75rem;
|
|
162
|
+
|
|
163
|
+
/* Small selected state positioning */
|
|
164
|
+
.switch[aria-checked="true"] &,
|
|
165
|
+
.switch[data-state="checked"] & {
|
|
166
|
+
@apply ms-[calc(100%-0.875rem)];
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
.switch--lg .switch__thumb {
|
|
171
|
+
height: 1.25rem; /* 20px circle */
|
|
172
|
+
width: 1.25rem;
|
|
173
|
+
|
|
174
|
+
/* Large selected state positioning */
|
|
175
|
+
.switch[aria-checked="true"] &,
|
|
176
|
+
.switch[data-state="checked"] & {
|
|
177
|
+
@apply ms-[calc(100%-1.375rem)];
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/* Switch thumb content container */
|
|
182
|
+
.switch__thumb > * {
|
|
183
|
+
@apply flex size-full items-center justify-center;
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
/* Switch label */
|
|
187
|
+
.switch__label {
|
|
188
|
+
@apply text-sm font-medium text-foreground;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/* Switch content */
|
|
192
|
+
.switch__content {
|
|
193
|
+
@apply flex flex-col gap-0;
|
|
194
|
+
}
|