@aleph-front/ds 0.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/package.json +67 -0
- package/src/components/badge/badge.tsx +64 -0
- package/src/components/button/button.tsx +153 -0
- package/src/components/card/card.tsx +48 -0
- package/src/components/checkbox/checkbox.tsx +82 -0
- package/src/components/form-field/form-field.tsx +71 -0
- package/src/components/input/input.tsx +52 -0
- package/src/components/radio-group/radio-group.tsx +87 -0
- package/src/components/select/select.tsx +145 -0
- package/src/components/status-dot/status-dot.tsx +53 -0
- package/src/components/switch/switch.tsx +74 -0
- package/src/components/table/table.tsx +208 -0
- package/src/components/textarea/textarea.tsx +56 -0
- package/src/components/tooltip/tooltip.tsx +35 -0
- package/src/components/ui/skeleton.tsx +21 -0
- package/src/components/ui/spinner.tsx +27 -0
- package/src/lib/cn.ts +6 -0
- package/src/styles/tokens.css +267 -0
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/* ──────────────────────────────────────────────
|
|
2
|
+
Layer 1: Color Scales, Gradients, Shadows, Fonts
|
|
3
|
+
────────────────────────────────────────────── */
|
|
4
|
+
@theme {
|
|
5
|
+
/* Primary (brand purple, H: 285.48) — 600 = brand #5100CD */
|
|
6
|
+
--color-primary-50: oklch(0.97 0.012 285.48);
|
|
7
|
+
--color-primary-100: oklch(0.93 0.040 285.48);
|
|
8
|
+
--color-primary-200: oklch(0.87 0.080 285.48);
|
|
9
|
+
--color-primary-300: oklch(0.77 0.140 285.48);
|
|
10
|
+
--color-primary-400: oklch(0.64 0.210 285.48);
|
|
11
|
+
--color-primary-500: oklch(0.50 0.254 285.48);
|
|
12
|
+
--color-primary-600: oklch(0.372 0.254 285.48);
|
|
13
|
+
--color-primary-700: oklch(0.31 0.224 285.48);
|
|
14
|
+
--color-primary-800: oklch(0.25 0.174 285.48);
|
|
15
|
+
--color-primary-900: oklch(0.20 0.114 285.48);
|
|
16
|
+
--color-primary-950: oklch(0.15 0.064 285.48);
|
|
17
|
+
|
|
18
|
+
/* Accent (brand lime, H: 121.30) — 300 = brand #D4FF00 */
|
|
19
|
+
--color-accent-50: oklch(0.98 0.030 121.30);
|
|
20
|
+
--color-accent-100: oklch(0.96 0.100 121.30);
|
|
21
|
+
--color-accent-200: oklch(0.94 0.180 121.30);
|
|
22
|
+
--color-accent-300: oklch(0.929 0.228 121.30);
|
|
23
|
+
--color-accent-400: oklch(0.82 0.200 121.30);
|
|
24
|
+
--color-accent-500: oklch(0.72 0.175 121.30);
|
|
25
|
+
--color-accent-600: oklch(0.62 0.150 121.30);
|
|
26
|
+
--color-accent-700: oklch(0.52 0.120 121.30);
|
|
27
|
+
--color-accent-800: oklch(0.42 0.085 121.30);
|
|
28
|
+
--color-accent-900: oklch(0.32 0.055 121.30);
|
|
29
|
+
--color-accent-950: oklch(0.22 0.030 121.30);
|
|
30
|
+
|
|
31
|
+
/* Success (green, H: 145) — 500 = #36D846 */
|
|
32
|
+
--color-success-50: oklch(0.98 0.020 145);
|
|
33
|
+
--color-success-100: oklch(0.94 0.050 145);
|
|
34
|
+
--color-success-200: oklch(0.88 0.100 145);
|
|
35
|
+
--color-success-300: oklch(0.81 0.160 145);
|
|
36
|
+
--color-success-400: oklch(0.76 0.200 145);
|
|
37
|
+
--color-success-500: oklch(0.72 0.230 145);
|
|
38
|
+
--color-success-600: oklch(0.60 0.200 145);
|
|
39
|
+
--color-success-700: oklch(0.50 0.170 145);
|
|
40
|
+
--color-success-800: oklch(0.40 0.130 145);
|
|
41
|
+
--color-success-900: oklch(0.30 0.085 145);
|
|
42
|
+
--color-success-950: oklch(0.20 0.045 145);
|
|
43
|
+
|
|
44
|
+
/* Warning (amber, H: 75) — 500 = #FBAE18 */
|
|
45
|
+
--color-warning-50: oklch(0.98 0.020 75);
|
|
46
|
+
--color-warning-100: oklch(0.95 0.050 75);
|
|
47
|
+
--color-warning-200: oklch(0.90 0.100 75);
|
|
48
|
+
--color-warning-300: oklch(0.86 0.140 75);
|
|
49
|
+
--color-warning-400: oklch(0.83 0.165 75);
|
|
50
|
+
--color-warning-500: oklch(0.80 0.180 75);
|
|
51
|
+
--color-warning-600: oklch(0.70 0.165 75);
|
|
52
|
+
--color-warning-700: oklch(0.60 0.140 75);
|
|
53
|
+
--color-warning-800: oklch(0.48 0.110 75);
|
|
54
|
+
--color-warning-900: oklch(0.35 0.075 75);
|
|
55
|
+
--color-warning-950: oklch(0.24 0.045 75);
|
|
56
|
+
|
|
57
|
+
/* Error (red, H: 12) — 600 = #DE3668 */
|
|
58
|
+
--color-error-50: oklch(0.98 0.010 12);
|
|
59
|
+
--color-error-100: oklch(0.93 0.040 12);
|
|
60
|
+
--color-error-200: oklch(0.87 0.080 12);
|
|
61
|
+
--color-error-300: oklch(0.79 0.130 12);
|
|
62
|
+
--color-error-400: oklch(0.70 0.170 12);
|
|
63
|
+
--color-error-500: oklch(0.63 0.200 12);
|
|
64
|
+
--color-error-600: oklch(0.57 0.200 12);
|
|
65
|
+
--color-error-700: oklch(0.48 0.175 12);
|
|
66
|
+
--color-error-800: oklch(0.39 0.140 12);
|
|
67
|
+
--color-error-900: oklch(0.30 0.095 12);
|
|
68
|
+
--color-error-950: oklch(0.20 0.055 12);
|
|
69
|
+
|
|
70
|
+
/* Destructive (alias → error, for shadcn/Tailwind convention compatibility) */
|
|
71
|
+
--color-destructive-50: var(--color-error-50);
|
|
72
|
+
--color-destructive-100: var(--color-error-100);
|
|
73
|
+
--color-destructive-200: var(--color-error-200);
|
|
74
|
+
--color-destructive-300: var(--color-error-300);
|
|
75
|
+
--color-destructive-400: var(--color-error-400);
|
|
76
|
+
--color-destructive-500: var(--color-error-500);
|
|
77
|
+
--color-destructive-600: var(--color-error-600);
|
|
78
|
+
--color-destructive-700: var(--color-error-700);
|
|
79
|
+
--color-destructive-800: var(--color-error-800);
|
|
80
|
+
--color-destructive-900: var(--color-error-900);
|
|
81
|
+
--color-destructive-950: var(--color-error-950);
|
|
82
|
+
|
|
83
|
+
/* Neutral (gray with slight purple tint, H: 265) */
|
|
84
|
+
--color-neutral-50: oklch(0.98 0.003 265);
|
|
85
|
+
--color-neutral-100: oklch(0.94 0.006 265);
|
|
86
|
+
--color-neutral-200: oklch(0.90 0.008 265);
|
|
87
|
+
--color-neutral-300: oklch(0.83 0.012 265);
|
|
88
|
+
--color-neutral-400: oklch(0.71 0.015 265);
|
|
89
|
+
--color-neutral-500: oklch(0.55 0.015 265);
|
|
90
|
+
--color-neutral-600: oklch(0.45 0.014 265);
|
|
91
|
+
--color-neutral-700: oklch(0.37 0.012 265);
|
|
92
|
+
--color-neutral-800: oklch(0.29 0.010 265);
|
|
93
|
+
--color-neutral-900: oklch(0.21 0.008 265);
|
|
94
|
+
--color-neutral-950: oklch(0.14 0.005 265);
|
|
95
|
+
|
|
96
|
+
/* Base (dark indigo, H: 280) — tone-sur-tone dark surface palette */
|
|
97
|
+
--color-base-900: oklch(0.22 0.025 280);
|
|
98
|
+
--color-base-800: oklch(0.28 0.030 280);
|
|
99
|
+
--color-base-700: oklch(0.34 0.034 280);
|
|
100
|
+
|
|
101
|
+
/* Gradients */
|
|
102
|
+
--gradient-main-base: linear-gradient(90deg, #141421 8.24%, #5100CD 71.81%);
|
|
103
|
+
--gradient-main-dark: linear-gradient(90deg, #1C1C32 8.24%, #5100CD 71.81%);
|
|
104
|
+
--gradient-lime: linear-gradient(90deg, #D6FF00 27.88%, #F5F7DB 100%);
|
|
105
|
+
--gradient-success: linear-gradient(90deg, #36D846 0%, #63E570 100%);
|
|
106
|
+
--gradient-warning: linear-gradient(90deg, #FFE814 0%, #FBAE18 100%);
|
|
107
|
+
--gradient-error: linear-gradient(90deg, #FFAC89 0%, #DE3668 90.62%);
|
|
108
|
+
--gradient-info: linear-gradient(90deg, #C8ADF0 22.66%, #5100CD 244.27%);
|
|
109
|
+
--gradient-destructive: var(--gradient-error);
|
|
110
|
+
|
|
111
|
+
/* Shadows */
|
|
112
|
+
--shadow-brand-sm: 0px 4px 4px oklch(0.372 0.254 285.48 / 0.15);
|
|
113
|
+
--shadow-brand: 0px 4px 24px oklch(0.372 0.254 285.48 / 0.1);
|
|
114
|
+
--shadow-brand-lg: 0px 4px 48px oklch(0.372 0.254 285.48 / 0.25);
|
|
115
|
+
|
|
116
|
+
/* Fonts */
|
|
117
|
+
--font-heading: "rigid-square", ui-sans-serif, system-ui, sans-serif;
|
|
118
|
+
--font-sans: "Titillium Web", ui-sans-serif, system-ui, sans-serif;
|
|
119
|
+
--font-mono: "Source Code Pro", ui-monospace, monospace;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* ──────────────────────────────────────────────
|
|
123
|
+
Layer 2: Semantic Surface Tokens (theme-dependent)
|
|
124
|
+
────────────────────────────────────────────── */
|
|
125
|
+
:root {
|
|
126
|
+
--background: #F9F4FF;
|
|
127
|
+
--foreground: #141421;
|
|
128
|
+
--primary: var(--color-primary-600);
|
|
129
|
+
--primary-foreground: #ffffff;
|
|
130
|
+
--accent: var(--color-accent-300);
|
|
131
|
+
--accent-foreground: #141421;
|
|
132
|
+
--muted: var(--color-primary-100);
|
|
133
|
+
--muted-foreground: var(--color-neutral-500);
|
|
134
|
+
--surface: var(--color-primary-50);
|
|
135
|
+
--surface-foreground: #141421;
|
|
136
|
+
--edge: var(--color-primary-200);
|
|
137
|
+
--edge-hover: var(--color-primary-300);
|
|
138
|
+
|
|
139
|
+
--gradient-main: var(--gradient-main-base);
|
|
140
|
+
|
|
141
|
+
--duration-fast: 200ms;
|
|
142
|
+
--duration-normal: 500ms;
|
|
143
|
+
--duration-slow: 700ms;
|
|
144
|
+
--timing: ease-in-out;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.theme-dark {
|
|
148
|
+
--background: #141421;
|
|
149
|
+
--foreground: #F9F4FF;
|
|
150
|
+
--primary: var(--color-primary-400);
|
|
151
|
+
--primary-foreground: #ffffff;
|
|
152
|
+
--accent: var(--color-accent-300);
|
|
153
|
+
--accent-foreground: #141421;
|
|
154
|
+
--muted: var(--color-base-900);
|
|
155
|
+
--muted-foreground: var(--color-neutral-400);
|
|
156
|
+
--surface: var(--color-base-900);
|
|
157
|
+
--surface-foreground: #F9F4FF;
|
|
158
|
+
--edge: var(--color-base-800);
|
|
159
|
+
--edge-hover: var(--color-base-700);
|
|
160
|
+
|
|
161
|
+
--gradient-main: var(--gradient-main-dark);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/* ──────────────────────────────────────────────
|
|
165
|
+
Layer 3: Tailwind Bridge (semantic → utilities)
|
|
166
|
+
────────────────────────────────────────────── */
|
|
167
|
+
@theme inline {
|
|
168
|
+
--color-background: var(--background);
|
|
169
|
+
--color-foreground: var(--foreground);
|
|
170
|
+
--color-primary: var(--primary);
|
|
171
|
+
--color-primary-foreground: var(--primary-foreground);
|
|
172
|
+
--color-accent: var(--accent);
|
|
173
|
+
--color-accent-foreground: var(--accent-foreground);
|
|
174
|
+
--color-muted: var(--muted);
|
|
175
|
+
--color-muted-foreground: var(--muted-foreground);
|
|
176
|
+
--color-surface: var(--surface);
|
|
177
|
+
--color-surface-foreground: var(--surface-foreground);
|
|
178
|
+
--color-edge: var(--edge);
|
|
179
|
+
--color-edge-hover: var(--edge-hover);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/* ──────────────────────────────────────────────
|
|
183
|
+
Utilities: gradient border effects
|
|
184
|
+
|
|
185
|
+
Uses full background declarations per state to
|
|
186
|
+
avoid setting custom properties inside :hover
|
|
187
|
+
(Turbopack's CSS optimizer can't parse var()
|
|
188
|
+
in custom property assignments within nested
|
|
189
|
+
hover media queries).
|
|
190
|
+
────────────────────────────────────────────── */
|
|
191
|
+
.border-gradient-main {
|
|
192
|
+
border-color: transparent;
|
|
193
|
+
background:
|
|
194
|
+
linear-gradient(var(--color-primary-100), var(--color-primary-100)) padding-box,
|
|
195
|
+
var(--gradient-main) border-box;
|
|
196
|
+
}
|
|
197
|
+
.border-gradient-main:hover {
|
|
198
|
+
background:
|
|
199
|
+
linear-gradient(var(--color-primary-200), var(--color-primary-200)) padding-box,
|
|
200
|
+
var(--gradient-main) border-box;
|
|
201
|
+
}
|
|
202
|
+
.border-gradient-main:active {
|
|
203
|
+
background:
|
|
204
|
+
linear-gradient(var(--color-primary-300), var(--color-primary-300)) padding-box,
|
|
205
|
+
var(--gradient-main) border-box;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
.gradient-fill-main {
|
|
209
|
+
background: var(--gradient-main) border-box;
|
|
210
|
+
}
|
|
211
|
+
.gradient-fill-main:hover {
|
|
212
|
+
background:
|
|
213
|
+
linear-gradient(oklch(1 0 0 / 0.1), oklch(1 0 0 / 0.1)) border-box,
|
|
214
|
+
var(--gradient-main) border-box;
|
|
215
|
+
}
|
|
216
|
+
.gradient-fill-main:active {
|
|
217
|
+
background:
|
|
218
|
+
linear-gradient(oklch(0 0 0 / 0.1), oklch(0 0 0 / 0.1)) border-box,
|
|
219
|
+
var(--gradient-main) border-box;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
.gradient-fill-lime {
|
|
223
|
+
background: var(--gradient-lime) border-box;
|
|
224
|
+
}
|
|
225
|
+
.gradient-fill-lime:hover {
|
|
226
|
+
background:
|
|
227
|
+
linear-gradient(oklch(0 0 0 / 0.06), oklch(0 0 0 / 0.06)) border-box,
|
|
228
|
+
var(--gradient-lime) border-box;
|
|
229
|
+
}
|
|
230
|
+
.gradient-fill-lime:active {
|
|
231
|
+
background:
|
|
232
|
+
linear-gradient(oklch(0 0 0 / 0.12), oklch(0 0 0 / 0.12)) border-box,
|
|
233
|
+
var(--gradient-lime) border-box;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/* ── Card Noise (fx-grain) ─────────────────────────────── */
|
|
237
|
+
|
|
238
|
+
.card-noise {
|
|
239
|
+
position: relative;
|
|
240
|
+
isolation: isolate;
|
|
241
|
+
background-image: radial-gradient(
|
|
242
|
+
50% 50%,
|
|
243
|
+
var(--color-primary-100) 0%,
|
|
244
|
+
oklch(from var(--color-primary-100) l c h / 0.57) 100%
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.theme-dark .card-noise {
|
|
249
|
+
background-image: radial-gradient(
|
|
250
|
+
50% 50%,
|
|
251
|
+
var(--color-primary-950) 0%,
|
|
252
|
+
oklch(from var(--color-primary-950) l c h / 0.57) 100%
|
|
253
|
+
);
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
.card-noise::after {
|
|
257
|
+
content: "";
|
|
258
|
+
position: absolute;
|
|
259
|
+
inset: 0;
|
|
260
|
+
z-index: -1;
|
|
261
|
+
border-radius: inherit;
|
|
262
|
+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNDAwIiB3aWR0aD0iNDAwIj48ZmlsdGVyIGlkPSJmIj48ZmVUdXJidWxlbmNlIGJhc2VGcmVxdWVuY3k9Ii4yNSIgdHlwZT0iZnJhY3RhbE5vaXNlIiBudW1PY3RhdmVzPSIzIi8+PGZlQ29sb3JNYXRyaXggdmFsdWVzPSIwIDAgMCAwIDAuMSAwIDAgMCAwIDAgMCAwIDAgMCAwLjgwIDAgMCAwIDEwIC03LjI1Ii8+PC9maWx0ZXI+PHJlY3Qgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZmlsdGVyPSJ1cmwoI2YpIi8+PC9zdmc+");
|
|
263
|
+
background-size: 400px 400px;
|
|
264
|
+
background-repeat: repeat;
|
|
265
|
+
opacity: 0.3;
|
|
266
|
+
pointer-events: none;
|
|
267
|
+
}
|