@svkit/styles 0.0.2-beta.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/dist/components/accordion.css +82 -0
- package/dist/components/accordion.js +1 -0
- package/dist/components/alert-dialog.css +26 -0
- package/dist/components/alert-dialog.js +1 -0
- package/dist/components/alert.css +21 -0
- package/dist/components/alert.js +1 -0
- package/dist/components/avatar.css +158 -0
- package/dist/components/avatar.js +1 -0
- package/dist/components/badge.css +125 -0
- package/dist/components/badge.js +1 -0
- package/dist/components/breadcrumb.css +30 -0
- package/dist/components/breadcrumb.js +1 -0
- package/dist/components/button-group.css +99 -0
- package/dist/components/button-group.js +1 -0
- package/dist/components/button.css +205 -0
- package/dist/components/button.js +1 -0
- package/dist/components/calendar.css +34 -0
- package/dist/components/calendar.js +1 -0
- package/dist/components/card.css +114 -0
- package/dist/components/card.js +1 -0
- package/dist/components/carousel.css +5 -0
- package/dist/components/carousel.js +1 -0
- package/dist/components/chart.css +5 -0
- package/dist/components/chart.js +1 -0
- package/dist/components/checkbox.css +20 -0
- package/dist/components/checkbox.js +1 -0
- package/dist/components/command.css +14 -0
- package/dist/components/command.js +1 -0
- package/dist/components/context-menu.css +43 -0
- package/dist/components/context-menu.js +1 -0
- package/dist/components/data-table.css +5 -0
- package/dist/components/data-table.js +1 -0
- package/dist/components/dialog.css +30 -0
- package/dist/components/dialog.js +1 -0
- package/dist/components/drawer.css +10 -0
- package/dist/components/drawer.js +1 -0
- package/dist/components/dropdown-menu.css +195 -0
- package/dist/components/dropdown-menu.js +1 -0
- package/dist/components/empty.css +25 -0
- package/dist/components/empty.js +1 -0
- package/dist/components/field.css +25 -0
- package/dist/components/field.js +1 -0
- package/dist/components/form.css +7 -0
- package/dist/components/form.js +1 -0
- package/dist/components/hover-card.css +3 -0
- package/dist/components/hover-card.js +1 -0
- package/dist/components/index.css +55 -0
- package/dist/components/index.js +1 -0
- package/dist/components/input-group.css +42 -0
- package/dist/components/input-group.js +1 -0
- package/dist/components/input-otp.css +33 -0
- package/dist/components/input-otp.js +1 -0
- package/dist/components/input.css +65 -0
- package/dist/components/input.js +1 -0
- package/dist/components/item.css +62 -0
- package/dist/components/item.js +1 -0
- package/dist/components/kbd.css +12 -0
- package/dist/components/kbd.js +1 -0
- package/dist/components/label.css +20 -0
- package/dist/components/label.js +1 -0
- package/dist/components/menu.css +110 -0
- package/dist/components/menu.js +1 -0
- package/dist/components/menubar.css +54 -0
- package/dist/components/menubar.js +1 -0
- package/dist/components/native-select.css +23 -0
- package/dist/components/native-select.js +1 -0
- package/dist/components/navigation-menu.css +48 -0
- package/dist/components/navigation-menu.js +1 -0
- package/dist/components/pagination.css +33 -0
- package/dist/components/pagination.js +1 -0
- package/dist/components/popover.css +6 -0
- package/dist/components/popover.js +1 -0
- package/dist/components/progress.css +9 -0
- package/dist/components/progress.js +1 -0
- package/dist/components/radio-group.css +24 -0
- package/dist/components/radio-group.js +1 -0
- package/dist/components/range-calendar.css +34 -0
- package/dist/components/range-calendar.js +1 -0
- package/dist/components/resizable.css +4 -0
- package/dist/components/resizable.js +1 -0
- package/dist/components/scroll-area.css +18 -0
- package/dist/components/scroll-area.js +1 -0
- package/dist/components/select.css +57 -0
- package/dist/components/select.js +1 -0
- package/dist/components/separator.css +13 -0
- package/dist/components/separator.js +1 -0
- package/dist/components/sheet.css +45 -0
- package/dist/components/sheet.js +1 -0
- package/dist/components/sidebar.css +71 -0
- package/dist/components/sidebar.js +1 -0
- package/dist/components/skeleton.css +33 -0
- package/dist/components/skeleton.js +1 -0
- package/dist/components/slider.css +43 -0
- package/dist/components/slider.js +1 -0
- package/dist/components/spinner.css +5 -0
- package/dist/components/spinner.js +1 -0
- package/dist/components/switch.css +46 -0
- package/dist/components/switch.js +1 -0
- package/dist/components/table.css +10 -0
- package/dist/components/table.js +1 -0
- package/dist/components/tabs.css +40 -0
- package/dist/components/tabs.js +1 -0
- package/dist/components/textarea.css +11 -0
- package/dist/components/textarea.js +1 -0
- package/dist/components/toast.css +156 -0
- package/dist/components/toast.js +1 -0
- package/dist/components/toggle-group.css +13 -0
- package/dist/components/toggle-group.js +1 -0
- package/dist/components/toggle.css +25 -0
- package/dist/components/toggle.js +1 -0
- package/dist/components/tooltip.css +90 -0
- package/dist/components/tooltip.js +1 -0
- package/dist/index-full.css +11 -0
- package/dist/index.css +9 -0
- package/dist/index.js +1 -0
- package/dist/styles.css +5344 -0
- package/index-full.css +11 -0
- package/index.css +9 -0
- package/package.json +37 -0
- package/src/base/base.css +161 -0
- package/src/components/accordion.css +82 -0
- package/src/components/alert-dialog.css +26 -0
- package/src/components/alert.css +21 -0
- package/src/components/avatar.css +158 -0
- package/src/components/badge.css +125 -0
- package/src/components/breadcrumb.css +30 -0
- package/src/components/button-group.css +99 -0
- package/src/components/button.css +205 -0
- package/src/components/calendar.css +34 -0
- package/src/components/card.css +114 -0
- package/src/components/carousel.css +5 -0
- package/src/components/chart.css +5 -0
- package/src/components/checkbox.css +20 -0
- package/src/components/command.css +14 -0
- package/src/components/context-menu.css +43 -0
- package/src/components/data-table.css +5 -0
- package/src/components/dialog.css +30 -0
- package/src/components/drawer.css +10 -0
- package/src/components/dropdown-menu.css +195 -0
- package/src/components/empty.css +25 -0
- package/src/components/field.css +25 -0
- package/src/components/form.css +7 -0
- package/src/components/hover-card.css +3 -0
- package/src/components/index.css +55 -0
- package/src/components/input-group.css +42 -0
- package/src/components/input-otp.css +33 -0
- package/src/components/input.css +65 -0
- package/src/components/item.css +62 -0
- package/src/components/kbd.css +12 -0
- package/src/components/label.css +20 -0
- package/src/components/menu.css +110 -0
- package/src/components/menubar.css +54 -0
- package/src/components/native-select.css +23 -0
- package/src/components/navigation-menu.css +48 -0
- package/src/components/pagination.css +33 -0
- package/src/components/popover.css +6 -0
- package/src/components/progress.css +9 -0
- package/src/components/radio-group.css +24 -0
- package/src/components/range-calendar.css +34 -0
- package/src/components/resizable.css +4 -0
- package/src/components/scroll-area.css +18 -0
- package/src/components/select.css +57 -0
- package/src/components/separator.css +13 -0
- package/src/components/sheet.css +45 -0
- package/src/components/sidebar.css +71 -0
- package/src/components/skeleton.css +33 -0
- package/src/components/slider.css +43 -0
- package/src/components/spinner.css +5 -0
- package/src/components/switch.css +46 -0
- package/src/components/table.css +10 -0
- package/src/components/tabs.css +40 -0
- package/src/components/textarea.css +11 -0
- package/src/components/toast.css +156 -0
- package/src/components/toggle-group.css +13 -0
- package/src/components/toggle.css +25 -0
- package/src/components/tooltip.css +90 -0
- package/src/themes/default.css +91 -0
- package/src/tokens/interactions.css +72 -0
- package/src/tokens/variables.css +111 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.sv-toast-viewport {
|
|
3
|
+
@apply fixed z-50 mx-auto flex w-62.5 sm:w-75;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
.sv-toast-viewport[data-position='bottom-right'] {
|
|
7
|
+
@apply top-auto right-4 bottom-4 sm:right-8 sm:bottom-8;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sv-toast-root {
|
|
11
|
+
@apply border-border absolute right-0 bottom-0 left-auto z-[calc(1000-var(--toast-index))] mr-0 h-(--height) w-full origin-bottom transform-[translateX(var(--toast-swipe-movement-x))_translateY(calc(var(--toast-swipe-movement-y)-(var(--toast-index)*var(--peek))-(var(--shrink)*var(--height))))_scale(var(--scale))] rounded-lg border bg-clip-padding p-4 shadow-lg select-none [--gap:0.75rem] [--height:var(--toast-frontmost-height,var(--toast-height))] [--offset-y:calc(var(--toast-offset-y)*-1+calc(var(--toast-index)*var(--gap)*-1)+var(--toast-swipe-movement-y))] [--peek:0.75rem] [--scale:calc(max(0,1-(var(--toast-index)*0.1)))] [--shrink:calc(1-var(--scale))] [transition:transform_0.5s_cubic-bezier(0.22,1,0.36,1),opacity_0.5s,height_0.15s] after:absolute after:top-full after:left-0 after:h-[calc(var(--gap)+1px)] after:w-full after:content-[''] data-ending-style:transform-[translateY(150%)] data-ending-style:opacity-0 data-expanded:h-(--toast-height) data-expanded:transform-[translateX(var(--toast-swipe-movement-x))_translateY(var(--offset-y))] data-limited:opacity-0 data-starting-style:transform-[translateY(150%)] data-ending-style:data-swipe-direction-down:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-expanded:data-ending-style:data-swipe-direction-down:transform-[translateY(calc(var(--toast-swipe-movement-y)+150%))] data-ending-style:data-swipe-direction-left:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-swipe-direction-left:transform-[translateX(calc(var(--toast-swipe-movement-x)-150%))_translateY(var(--offset-y))] data-ending-style:data-swipe-direction-right:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-expanded:data-ending-style:data-swipe-direction-right:transform-[translateX(calc(var(--toast-swipe-movement-x)+150%))_translateY(var(--offset-y))] data-ending-style:data-swipe-direction-up:transform-[translateY(calc(var(--toast-swipe-movement-y)-150%))];
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sv-toast-content {
|
|
15
|
+
@apply overflow-hidden transition-opacity duration-250 data-behind:pointer-events-none data-behind:opacity-0 data-expanded:pointer-events-auto data-expanded:opacity-100;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sv-toast-title {
|
|
19
|
+
@apply text-surface-foreground text-[0.975rem] leading-5;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.sv-toast-description {
|
|
23
|
+
@apply text-surface-foreground/85 text-sm leading-5;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.sv-toast-icon {
|
|
27
|
+
@apply relative size-5 rounded-[10px] opacity-0;
|
|
28
|
+
transform: rotate(45deg);
|
|
29
|
+
animation: circleAnimation 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
|
|
30
|
+
animation-delay: 150ms;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.sv-toast-icon[data-type='success'] {
|
|
34
|
+
@apply bg-success/75;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.sv-toast-icon[data-type='error'] {
|
|
38
|
+
@apply bg-danger/75;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.sv-toast-icon[data-type='warning'] {
|
|
42
|
+
@apply bg-warning/75;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.sv-toast-icon[data-type='loading'] {
|
|
46
|
+
@apply bg-primary/75;
|
|
47
|
+
animation:
|
|
48
|
+
circleAnimation 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards,
|
|
49
|
+
toastLoadingSpin 1.2s linear infinite;
|
|
50
|
+
animation-delay: 150ms, 450ms;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.sv-toast-icon[data-type='message'] {
|
|
54
|
+
/* @apply bg-primary/75; */
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.sv-toast-icon[data-type='error']::after,
|
|
58
|
+
.sv-toast-icon[data-type='error']::before {
|
|
59
|
+
content: '';
|
|
60
|
+
animation: firstLineAnimation 0.15s ease-out forwards;
|
|
61
|
+
animation-delay: 150ms;
|
|
62
|
+
position: absolute;
|
|
63
|
+
border-radius: 3px;
|
|
64
|
+
opacity: 0;
|
|
65
|
+
background: var(--color-danger-foreground);
|
|
66
|
+
bottom: 9px;
|
|
67
|
+
left: 4px;
|
|
68
|
+
height: 2px;
|
|
69
|
+
width: 12px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.sv-toast-icon[data-type='error']::after {
|
|
73
|
+
animation: secondLineAnimation 0.15s ease-out forwards;
|
|
74
|
+
animation-delay: 180ms;
|
|
75
|
+
transform: rotate(90deg);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.sv-toast-icon[data-type='success']::after {
|
|
79
|
+
content: '';
|
|
80
|
+
box-sizing: border-box;
|
|
81
|
+
animation: checkmarkAnimation 0.2s ease-out forwards;
|
|
82
|
+
opacity: 0;
|
|
83
|
+
animation-delay: 200ms;
|
|
84
|
+
position: absolute;
|
|
85
|
+
border-right: 2px solid;
|
|
86
|
+
border-bottom: 2px solid;
|
|
87
|
+
border-color: var(--color-primary-foreground);
|
|
88
|
+
bottom: 6px;
|
|
89
|
+
left: 6px;
|
|
90
|
+
height: 10px;
|
|
91
|
+
width: 6px;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@keyframes firstLineAnimation {
|
|
95
|
+
from {
|
|
96
|
+
transform: scale(0);
|
|
97
|
+
opacity: 0;
|
|
98
|
+
}
|
|
99
|
+
to {
|
|
100
|
+
transform: scale(1);
|
|
101
|
+
opacity: 1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@keyframes secondLineAnimation {
|
|
106
|
+
from {
|
|
107
|
+
transform: scale(0) rotate(90deg);
|
|
108
|
+
opacity: 0;
|
|
109
|
+
}
|
|
110
|
+
to {
|
|
111
|
+
transform: scale(1) rotate(90deg);
|
|
112
|
+
opacity: 1;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
@keyframes checkmarkAnimation {
|
|
117
|
+
0% {
|
|
118
|
+
height: 0;
|
|
119
|
+
width: 0;
|
|
120
|
+
opacity: 0;
|
|
121
|
+
}
|
|
122
|
+
40% {
|
|
123
|
+
height: 0;
|
|
124
|
+
width: 6px;
|
|
125
|
+
opacity: 1;
|
|
126
|
+
}
|
|
127
|
+
100% {
|
|
128
|
+
opacity: 1;
|
|
129
|
+
height: 10px;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
@keyframes toastLoadingSpin {
|
|
134
|
+
from {
|
|
135
|
+
transform: rotate(45deg);
|
|
136
|
+
}
|
|
137
|
+
to {
|
|
138
|
+
transform: rotate(405deg);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@keyframes circleAnimation {
|
|
143
|
+
from {
|
|
144
|
+
transform: scale(0) rotate(45deg);
|
|
145
|
+
opacity: 0;
|
|
146
|
+
}
|
|
147
|
+
to {
|
|
148
|
+
transform: scale(1) rotate(45deg);
|
|
149
|
+
opacity: 1;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.sv-toast-close {
|
|
154
|
+
@apply text-surface-foreground/50 hover:text-surface-foreground absolute top-2 right-2 flex h-5 w-5 cursor-pointer items-center justify-center rounded-sm border-none bg-transparent;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
.sv-toggle {
|
|
3
|
+
@apply inline-flex items-center justify-center gap-1 rounded-lg text-sm font-medium whitespace-nowrap transition-all outline-none;
|
|
4
|
+
@apply focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-3;
|
|
5
|
+
@apply hover:text-foreground hover:bg-muted;
|
|
6
|
+
@apply data-state-on:bg-muted;
|
|
7
|
+
@apply [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.sv-toggle[data-size='sm'] {
|
|
11
|
+
@apply h-7 min-w-7 px-2.5 text-xs;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.sv-toggle[data-size='md'] {
|
|
15
|
+
@apply h-8 min-w-8 px-2.5;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.sv-toggle[data-size='lg'] {
|
|
19
|
+
@apply h-9 min-w-9 px-2.5;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
.sv-toggle[data-variant='outline'] {
|
|
23
|
+
@apply border-border border bg-transparent;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
@layer components {
|
|
2
|
+
/* =========================
|
|
3
|
+
TOOLTIP CONTENT
|
|
4
|
+
========================== */
|
|
5
|
+
|
|
6
|
+
.sv-tooltip-content {
|
|
7
|
+
@apply inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-xs bg-foreground text-background;
|
|
8
|
+
|
|
9
|
+
/* Open animations */
|
|
10
|
+
&[data-state="open"],
|
|
11
|
+
&[data-state="delayed-open"] {
|
|
12
|
+
@apply animate-in fade-in-0 zoom-in-95;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* Close animation */
|
|
16
|
+
&[data-state="closed"] {
|
|
17
|
+
@apply animate-out fade-out-0 zoom-out-95;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Slide direction — physical sides */
|
|
21
|
+
&[data-side="bottom"] {
|
|
22
|
+
@apply slide-in-from-top-2;
|
|
23
|
+
}
|
|
24
|
+
&[data-side="top"] {
|
|
25
|
+
@apply slide-in-from-bottom-2;
|
|
26
|
+
}
|
|
27
|
+
&[data-side="left"] {
|
|
28
|
+
@apply slide-in-from-right-2;
|
|
29
|
+
}
|
|
30
|
+
&[data-side="right"] {
|
|
31
|
+
@apply slide-in-from-left-2;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Slide direction — logical sides */
|
|
35
|
+
&[data-side="inline-start"] {
|
|
36
|
+
@apply slide-in-from-right-2;
|
|
37
|
+
}
|
|
38
|
+
&[data-side="inline-end"] {
|
|
39
|
+
@apply slide-in-from-left-2;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* kbd slot adjustments */
|
|
43
|
+
&:has([data-slot="kbd"]) {
|
|
44
|
+
padding-inline-end: 0.375rem;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/* Styles for nested kbd elements */
|
|
48
|
+
& [data-slot="kbd"] {
|
|
49
|
+
@apply relative isolate z-50 rounded-sm;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* =========================
|
|
54
|
+
TOOLTIP ARROW
|
|
55
|
+
========================== */
|
|
56
|
+
|
|
57
|
+
.sv-tooltip-arrow {
|
|
58
|
+
@apply size-2.5 rotate-45 rounded-xs bg-foreground fill-foreground;
|
|
59
|
+
|
|
60
|
+
/* Physical side offsets */
|
|
61
|
+
&[data-side="top"] {
|
|
62
|
+
translate: 50% calc(-50% + 2px);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&[data-side="bottom"] {
|
|
66
|
+
translate: -50% calc(- ((-50% + 1px)));
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&[data-side="right"] {
|
|
70
|
+
translate: calc(50% + 2px) 50%;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
&[data-side="left"] {
|
|
74
|
+
translate: 0 calc(- (50% - 3px));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Logical side offsets */
|
|
78
|
+
&[data-side="inline-end"] {
|
|
79
|
+
top: 50% !important;
|
|
80
|
+
left: -0.25rem;
|
|
81
|
+
translate: 0 -50%;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
&[data-side="inline-start"] {
|
|
85
|
+
top: 50% !important;
|
|
86
|
+
right: -0.25rem;
|
|
87
|
+
translate: 0 -50%;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
@theme {
|
|
2
|
+
/* BACKGROUND */
|
|
3
|
+
|
|
4
|
+
--color-background: var(--background);
|
|
5
|
+
--color-foreground: var(--foreground);
|
|
6
|
+
|
|
7
|
+
/* SURFACE */
|
|
8
|
+
|
|
9
|
+
--color-surface: var(--surface);
|
|
10
|
+
--color-surface-elevated: color-mix(
|
|
11
|
+
in oklab,
|
|
12
|
+
var(--surface) 96%,
|
|
13
|
+
var(--foreground) 5%
|
|
14
|
+
);
|
|
15
|
+
--color-surface-foreground: var(--surface-foreground);
|
|
16
|
+
--color-surface-hover: color-mix(
|
|
17
|
+
in oklab,
|
|
18
|
+
var(--surface) 95%,
|
|
19
|
+
var(--surface-foreground) 5%
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
/* TEXT / UTILITY */
|
|
23
|
+
|
|
24
|
+
--color-muted: var(--muted);
|
|
25
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
26
|
+
|
|
27
|
+
/* BORDER */
|
|
28
|
+
|
|
29
|
+
--color-border: var(--border);
|
|
30
|
+
--color-separator: var(--separator);
|
|
31
|
+
|
|
32
|
+
--color-ring: var(--ring);
|
|
33
|
+
|
|
34
|
+
/* LINK */
|
|
35
|
+
|
|
36
|
+
--color-link: var(--link);
|
|
37
|
+
--color-link-hover: color-mix(
|
|
38
|
+
in oklab,
|
|
39
|
+
var(--link) 90%,
|
|
40
|
+
var(--foreground) 10%
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
/* SEMANTIC COLORS */
|
|
44
|
+
|
|
45
|
+
--color-primary: var(--primary);
|
|
46
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
47
|
+
|
|
48
|
+
--color-secondary: var(--secondary);
|
|
49
|
+
--color-secondary-foreground: var(--secondary-foreground);
|
|
50
|
+
|
|
51
|
+
--color-success: var(--success);
|
|
52
|
+
--color-success-foreground: var(--success-foreground);
|
|
53
|
+
|
|
54
|
+
--color-warning: var(--warning);
|
|
55
|
+
--color-warning-foreground: var(--warning-foreground);
|
|
56
|
+
|
|
57
|
+
--color-danger: var(--danger);
|
|
58
|
+
--color-danger-foreground: var(--danger-foreground);
|
|
59
|
+
|
|
60
|
+
/* STATE COLORS (VISUAL ONLY, NOT BEHAVIOR) */
|
|
61
|
+
|
|
62
|
+
--color-primary-hover: color-mix(
|
|
63
|
+
in oklab,
|
|
64
|
+
var(--primary) 96%,
|
|
65
|
+
var(--primary-foreground) 4%
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
--color-secondary-hover: color-mix(
|
|
69
|
+
in oklab,
|
|
70
|
+
var(--secondary) 90%,
|
|
71
|
+
var(--secondary-foreground) 10%
|
|
72
|
+
);
|
|
73
|
+
|
|
74
|
+
--color-success-hover: color-mix(
|
|
75
|
+
in oklab,
|
|
76
|
+
var(--success) 90%,
|
|
77
|
+
var(--success-foreground) 10%
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
--color-warning-hover: color-mix(
|
|
81
|
+
in oklab,
|
|
82
|
+
var(--warning) 90%,
|
|
83
|
+
var(--warning-foreground) 10%
|
|
84
|
+
);
|
|
85
|
+
|
|
86
|
+
--color-danger-hover: color-mix(
|
|
87
|
+
in oklab,
|
|
88
|
+
var(--danger) 90%,
|
|
89
|
+
var(--danger-foreground) 10%
|
|
90
|
+
);
|
|
91
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
@layer base {
|
|
2
|
+
:root {
|
|
3
|
+
/* =========================
|
|
4
|
+
MOTION TOKENS
|
|
5
|
+
========================== */
|
|
6
|
+
|
|
7
|
+
--duration-instant: 0ms;
|
|
8
|
+
--duration-fast: 120ms;
|
|
9
|
+
--duration-normal: 200ms;
|
|
10
|
+
--duration-slow: 300ms;
|
|
11
|
+
|
|
12
|
+
/* Easing (standardized set) */
|
|
13
|
+
--ease-linear: linear;
|
|
14
|
+
--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
|
|
15
|
+
--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
|
|
16
|
+
--ease-fluid: cubic-bezier(0.32, 0.72, 0, 1);
|
|
17
|
+
|
|
18
|
+
/* =========================
|
|
19
|
+
PRESS / ACTIVE SYSTEM
|
|
20
|
+
========================== */
|
|
21
|
+
|
|
22
|
+
/* Physical press feel */
|
|
23
|
+
--press-offset: 1px;
|
|
24
|
+
|
|
25
|
+
/* Optional (future scaling variant) */
|
|
26
|
+
--press-scale: 0.98;
|
|
27
|
+
|
|
28
|
+
/* =========================
|
|
29
|
+
HOVER SYSTEM
|
|
30
|
+
========================== */
|
|
31
|
+
|
|
32
|
+
/*
|
|
33
|
+
* Controls how strong hover effect is
|
|
34
|
+
* Used with color-mix based hover
|
|
35
|
+
*/
|
|
36
|
+
--hover-mix-strength: 8%;
|
|
37
|
+
|
|
38
|
+
/* =========================
|
|
39
|
+
STATE TOKENS (GENERIC)
|
|
40
|
+
========================== */
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* These are fallback tokens.
|
|
44
|
+
* Components SHOULD override these.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
--state-bg-hover: color-mix(in oklab, currentColor var(--hover-mix-strength), transparent);
|
|
48
|
+
|
|
49
|
+
--state-bg-active: color-mix(in oklab, currentColor var(--hover-mix-strength), transparent);
|
|
50
|
+
|
|
51
|
+
/* Ring */
|
|
52
|
+
--state-ring: var(--focus-ring-color);
|
|
53
|
+
|
|
54
|
+
/* =========================
|
|
55
|
+
TRANSITION PRESETS
|
|
56
|
+
========================== */
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
* Centralized transition definitions
|
|
60
|
+
* Components can reuse instead of redefining
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
--transition-colors:
|
|
64
|
+
background-color var(--duration-fast) var(--ease-standard),
|
|
65
|
+
color var(--duration-fast) var(--ease-standard),
|
|
66
|
+
border-color var(--duration-fast) var(--ease-standard);
|
|
67
|
+
|
|
68
|
+
--transition-transform: transform var(--duration-fast) var(--ease-standard);
|
|
69
|
+
|
|
70
|
+
--transition-all: var(--transition-colors), var(--transition-transform);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
@layer base {
|
|
2
|
+
:root {
|
|
3
|
+
color-scheme: light;
|
|
4
|
+
|
|
5
|
+
/* =========================
|
|
6
|
+
CORE SURFACE & TEXT
|
|
7
|
+
========================== */
|
|
8
|
+
|
|
9
|
+
--background: oklch(100% 0.00011 271.152);
|
|
10
|
+
--foreground: var(--color-gray-900);
|
|
11
|
+
|
|
12
|
+
--surface: oklch(95.815% 0.00011 271.152);
|
|
13
|
+
--surface-foreground: oklch(14.479% 0.00002 271.152);
|
|
14
|
+
|
|
15
|
+
/* =========================
|
|
16
|
+
BRAND / SEMANTIC COLORS
|
|
17
|
+
========================== */
|
|
18
|
+
|
|
19
|
+
--primary: oklch(0.6385 0.1991 34.99);
|
|
20
|
+
--primary-foreground: var(--color-gray-50);
|
|
21
|
+
|
|
22
|
+
--secondary: oklch(0.97 0 0);
|
|
23
|
+
--secondary-foreground: oklch(0.205 0 0);
|
|
24
|
+
|
|
25
|
+
--success: oklch(0.5464 0.1442 147.32);
|
|
26
|
+
--success-foreground: var(--color-gray-900);
|
|
27
|
+
|
|
28
|
+
--warning: oklch(0.7238 0.142 71.83);
|
|
29
|
+
--warning-foreground: var(--color-gray-900);
|
|
30
|
+
|
|
31
|
+
--danger: oklch(0.5771 0.2152 27.33);
|
|
32
|
+
--danger-foreground: var(--color-gray-50);
|
|
33
|
+
|
|
34
|
+
/* =========================
|
|
35
|
+
UI ELEMENT COLORS
|
|
36
|
+
========================== */
|
|
37
|
+
|
|
38
|
+
--border: oklch(0.9219 0 0);
|
|
39
|
+
--separator: color-mix(in oklab, var(--border) 70%, transparent);
|
|
40
|
+
|
|
41
|
+
--muted: oklch(0.97 0 0);
|
|
42
|
+
--muted-foreground: oklch(0.556 0 0);
|
|
43
|
+
|
|
44
|
+
--link: var(--primary);
|
|
45
|
+
|
|
46
|
+
/* tmp */
|
|
47
|
+
--ring: oklch(0.708 0 0);
|
|
48
|
+
|
|
49
|
+
/* =========================
|
|
50
|
+
FOCUS SYSTEM
|
|
51
|
+
========================== */
|
|
52
|
+
|
|
53
|
+
--focus-ring-color: var(--primary);
|
|
54
|
+
--focus-ring-width: 2px;
|
|
55
|
+
--focus-ring-offset: 2px;
|
|
56
|
+
|
|
57
|
+
/* =========================
|
|
58
|
+
RADIUS (BASE SCALE)
|
|
59
|
+
========================== */
|
|
60
|
+
|
|
61
|
+
--radius: 0.5rem;
|
|
62
|
+
|
|
63
|
+
/* =========================
|
|
64
|
+
BORDER SYSTEM
|
|
65
|
+
========================== */
|
|
66
|
+
|
|
67
|
+
--border-width: 1px;
|
|
68
|
+
|
|
69
|
+
/* =========================
|
|
70
|
+
INTERACTION BASICS
|
|
71
|
+
========================== */
|
|
72
|
+
|
|
73
|
+
--cursor-interactive: pointer;
|
|
74
|
+
--cursor-disabled: not-allowed;
|
|
75
|
+
|
|
76
|
+
--disabled-opacity: 0.5;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/* =========================
|
|
80
|
+
DARK MODE
|
|
81
|
+
========================== */
|
|
82
|
+
|
|
83
|
+
.dark,
|
|
84
|
+
[data-theme="dark"] {
|
|
85
|
+
color-scheme: dark;
|
|
86
|
+
|
|
87
|
+
/* Surface */
|
|
88
|
+
--background: oklch(18.22% 0.00002 271.152);
|
|
89
|
+
--foreground: var(--color-gray-50);
|
|
90
|
+
|
|
91
|
+
--surface: oklch(21.342% 0.00002 271.152);
|
|
92
|
+
--surface-foreground: oklch(78.261% 0.00009 271.152);
|
|
93
|
+
|
|
94
|
+
/* Secondary */
|
|
95
|
+
--secondary: oklch(0.269 0 0);
|
|
96
|
+
--secondary-foreground: oklch(0.985 0 0);
|
|
97
|
+
|
|
98
|
+
/* Semantic adjustments */
|
|
99
|
+
--warning: oklch(0.759 0.1248 75.9);
|
|
100
|
+
--danger: oklch(0.6368 0.2078 25.33);
|
|
101
|
+
|
|
102
|
+
/* UI */
|
|
103
|
+
--border: oklch(51.028% 0.00006 271.152 / 0.2);
|
|
104
|
+
--separator: color-mix(in oklab, var(--border) 70%, transparent);
|
|
105
|
+
|
|
106
|
+
--muted: oklch(0.269 0 0);
|
|
107
|
+
--muted-foreground: oklch(0.708 0 0);
|
|
108
|
+
|
|
109
|
+
--ring: oklch(0.556 0 0);
|
|
110
|
+
}
|
|
111
|
+
}
|