@diyet24/design-system 0.1.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.
@@ -0,0 +1,890 @@
1
+ @import "tailwindcss";
2
+
3
+ @custom-variant dark (&:is(.dark *));
4
+
5
+ @source "../";
6
+
7
+ :root {
8
+ /* Brand Colors */
9
+ --primary: #7367F0;
10
+ --secondary: #808390;
11
+ --info: #00BAD1;
12
+ --success: #28C76F;
13
+ --warning: #FF9F43;
14
+ --danger: #FF4C51;
15
+ --main: #2F2B3D;
16
+ --main-foreground: #FFFFFF;
17
+ --gray: #97959E;
18
+
19
+ /* shadcn/ui Standard Variables - mapped to brand colors */
20
+ --background: #f8f7fa;
21
+ --foreground: var(--main);
22
+ --card: #FFFFFF;
23
+ --card-foreground: var(--main);
24
+ --popover: #FFFFFF;
25
+ --popover-foreground: var(--main);
26
+ --primary-foreground: #FFFFFF;
27
+ --secondary-foreground: var(--main);
28
+ --muted: #F5F5F5;
29
+ --muted-foreground: #6C6C6C;
30
+ --accent: #F5F5F5;
31
+ --accent-foreground: var(--main);
32
+ --destructive: var(--danger);
33
+ --destructive-foreground: #FFFFFF;
34
+ --border: #E0E0E0;
35
+ --input: #E0E0E0;
36
+ --ring: var(--primary);
37
+ --radius: 6px;
38
+
39
+ /* Chart Colors */
40
+ --chart-1: var(--primary);
41
+ --chart-2: var(--info);
42
+ --chart-3: var(--success);
43
+ --chart-4: var(--warning);
44
+ --chart-5: var(--danger);
45
+
46
+ /* Custom Application Variables */
47
+ --snackbar: #2f2b3d;
48
+ --paper: #FFFFFF;
49
+ --table-header: #FFFFFF;
50
+ --chat-bg: #f3f2f5;
51
+ --track-bg: #f1f0f2;
52
+ --grey-light: #FAFAFA;
53
+
54
+ /* Sidebar Variables */
55
+ --sidebar: #FFFFFF;
56
+ --sidebar-foreground: var(--main);
57
+ --sidebar-primary: var(--primary);
58
+ --sidebar-primary-foreground: #FFFFFF;
59
+ --sidebar-accent: #F5F5F5;
60
+ --sidebar-accent-foreground: var(--main);
61
+ --sidebar-border: #E0E0E0;
62
+ --sidebar-ring: var(--primary);
63
+ }
64
+
65
+ .dark {
66
+ color-scheme: dark;
67
+
68
+ /* Brand Colors - Keep same for consistency */
69
+ --primary: #7367F0;
70
+ --secondary: #808390;
71
+ --info: #00BAD1;
72
+ --success: #28C76F;
73
+ --warning: #FF9F43;
74
+ --danger: #FF4C51;
75
+ --main: #E1DEF5;
76
+ --main-foreground: #434968;
77
+ --gray: #9293AE;
78
+
79
+ /* shadcn/ui Dark Mode Variables */
80
+ --background: #25293c;
81
+ --foreground: #FFFFFF;
82
+ --card: #2F3349;
83
+ --card-foreground: #FFFFFF;
84
+ --popover: #2F3349;
85
+ --popover-foreground: #FFFFFF;
86
+ --primary-foreground: #FFFFFF;
87
+ --secondary-foreground: #FFFFFF;
88
+ --muted: #3A3F57;
89
+ --muted-foreground: #A0A0A0;
90
+ --accent: #3A3F57;
91
+ --accent-foreground: #FFFFFF;
92
+ --destructive: var(--danger);
93
+ --destructive-foreground: #FFFFFF;
94
+ --border: rgba(255, 255, 255, 0.1);
95
+ --input: rgba(255, 255, 255, 0.15);
96
+ --ring: var(--primary);
97
+
98
+ /* Chart Colors */
99
+ --chart-1: var(--primary);
100
+ --chart-2: var(--info);
101
+ --chart-3: var(--success);
102
+ --chart-4: var(--warning);
103
+ --chart-5: var(--danger);
104
+
105
+ /* Custom Application Variables - Dark Mode */
106
+ --snackbar: #F7F4FF;
107
+ --paper: #2F3349;
108
+ --table-header: #2F3349;
109
+ --chat-bg: #202534;
110
+ --track-bg: #3A3F57;
111
+ --grey-light: #353A52;
112
+
113
+ /* Sidebar Variables - Dark Mode */
114
+ --sidebar: #2F3349;
115
+ --sidebar-foreground: #FFFFFF;
116
+ --sidebar-primary: var(--primary);
117
+ --sidebar-primary-foreground: #FFFFFF;
118
+ --sidebar-accent: #3A3F57;
119
+ --sidebar-accent-foreground: #FFFFFF;
120
+ --sidebar-border: rgba(255, 255, 255, 0.1);
121
+ --sidebar-ring: var(--primary);
122
+ }
123
+
124
+ body {
125
+ background-color: var(--background);
126
+ color: var(--foreground);
127
+ }
128
+
129
+ @theme inline {
130
+ /* shadcn/ui Standard Colors */
131
+ --color-background: var(--background);
132
+ --color-foreground: var(--foreground);
133
+ --color-card: var(--card);
134
+ --color-card-foreground: var(--card-foreground);
135
+ --color-popover: var(--popover);
136
+ --color-popover-foreground: var(--popover-foreground);
137
+ --color-primary: var(--primary);
138
+ --color-primary-foreground: var(--primary-foreground);
139
+ --color-secondary: var(--secondary);
140
+ --color-secondary-foreground: var(--secondary-foreground);
141
+ --color-muted: var(--muted);
142
+ --color-muted-foreground: var(--muted-foreground);
143
+ --color-accent: var(--accent);
144
+ --color-accent-foreground: var(--accent-foreground);
145
+ --color-destructive: var(--destructive);
146
+ --color-destructive-foreground: var(--destructive-foreground);
147
+ --color-border: var(--border);
148
+ --color-input: var(--input);
149
+ --color-ring: var(--ring);
150
+
151
+ /* Chart Colors */
152
+ --color-chart-1: var(--chart-1);
153
+ --color-chart-2: var(--chart-2);
154
+ --color-chart-3: var(--chart-3);
155
+ --color-chart-4: var(--chart-4);
156
+ --color-chart-5: var(--chart-5);
157
+
158
+ /* Radius */
159
+ --radius-sm: calc(var(--radius) - 4px);
160
+ --radius-md: calc(var(--radius) - 2px);
161
+ --radius-lg: var(--radius);
162
+ --radius-xl: calc(var(--radius) + 4px);
163
+
164
+ /* Sidebar Colors */
165
+ --color-sidebar: var(--sidebar);
166
+ --color-sidebar-foreground: var(--sidebar-foreground);
167
+ --color-sidebar-primary: var(--sidebar-primary);
168
+ --color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
169
+ --color-sidebar-accent: var(--sidebar-accent);
170
+ --color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
171
+ --color-sidebar-border: var(--sidebar-border);
172
+ --color-sidebar-ring: var(--sidebar-ring);
173
+
174
+ /* Brand Color Variants - Primary */
175
+ --color-primary-100: color-mix(in srgb, var(--primary) 100%, white 80%);
176
+ --color-primary-200: color-mix(in srgb, var(--primary) 100%, white 60%);
177
+ --color-primary-300: color-mix(in srgb, var(--primary) 100%, white 40%);
178
+ --color-primary-400: color-mix(in srgb, var(--primary) 100%, white 20%);
179
+ --color-primary-500: var(--primary);
180
+ --color-primary-600: color-mix(in srgb, var(--primary) 100%, black 10%);
181
+ --color-primary-700: color-mix(in srgb, var(--primary) 100%, black 15%);
182
+ --color-primary-800: color-mix(in srgb, var(--primary) 100%, black 20%);
183
+ --color-primary-900: color-mix(in srgb, var(--primary) 100%, black 25%);
184
+
185
+ --color-primary-o-lighter: color-mix(in srgb, var(--primary) 8%, transparent);
186
+ --color-primary-o-light: color-mix(in srgb, var(--primary) 16%, transparent);
187
+ --color-primary-o-main: color-mix(in srgb, var(--primary) 24%, transparent);
188
+ --color-primary-o-dark: color-mix(in srgb, var(--primary) 32%, transparent);
189
+ --color-primary-o-darker: color-mix(in srgb, var(--primary) 38%, transparent);
190
+
191
+ --shadow-sm-primary: 0px 2px 6px color-mix(in srgb, var(--primary) 30%, transparent);
192
+ --shadow-md-primary: 0px 4px 16px color-mix(in srgb, var(--primary) 30%, transparent);
193
+ --shadow-lg-primary: 0px 6px 20px color-mix(in srgb, var(--primary) 50%, transparent);
194
+
195
+ --color-secondary: var(--secondary);
196
+ --color-secondary-100: color-mix(in srgb, var(--secondary) 100%, white 80%);
197
+ --color-secondary-200: color-mix(in srgb, var(--secondary) 100%, white 60%);
198
+ --color-secondary-300: color-mix(in srgb, var(--secondary) 100%, white 40%);
199
+ --color-secondary-400: color-mix(in srgb, var(--secondary) 100%, white 20%);
200
+ --color-secondary-500: var(--secondary);
201
+ --color-secondary-600: color-mix(in srgb, var(--secondary) 100%, black 10%);
202
+ --color-secondary-700: color-mix(in srgb, var(--secondary) 100%, black 15%);
203
+ --color-secondary-800: color-mix(in srgb, var(--secondary) 100%, black 20%);
204
+ --color-secondary-900: color-mix(in srgb, var(--secondary) 100%, black 25%);
205
+
206
+ --color-secondary-o-lighter: color-mix(in srgb, var(--secondary) 8%, transparent);
207
+ --color-secondary-o-light: color-mix(in srgb, var(--secondary) 16%, transparent);
208
+ --color-secondary-o-main: color-mix(in srgb, var(--secondary) 24%, transparent);
209
+ --color-secondary-o-dark: color-mix(in srgb, var(--secondary) 32%, transparent);
210
+ --color-secondary-o-darker: color-mix(in srgb, var(--secondary) 38%, transparent);
211
+
212
+ --shadow-sm-secondary: 0px 2px 6px color-mix(in srgb, var(--secondary) 30%, transparent);
213
+ --shadow-md-secondary: 0px 4px 16px color-mix(in srgb, var(--secondary) 30%, transparent);
214
+ --shadow-lg-secondary: 0px 6px 20px color-mix(in srgb, var(--secondary) 50%, transparent);
215
+
216
+ --color-info: var(--info);
217
+ --color-info-100: color-mix(in srgb, var(--info) 100%, white 80%);
218
+ --color-info-200: color-mix(in srgb, var(--info) 100%, white 60%);
219
+ --color-info-300: color-mix(in srgb, var(--info) 100%, white 40%);
220
+ --color-info-400: color-mix(in srgb, var(--info) 100%, white 20%);
221
+ --color-info-500: var(--info);
222
+ --color-info-600: color-mix(in srgb, var(--info) 100%, black 10%);
223
+ --color-info-700: color-mix(in srgb, var(--info) 100%, black 15%);
224
+ --color-info-800: color-mix(in srgb, var(--info) 100%, black 20%);
225
+ --color-info-900: color-mix(in srgb, var(--info) 100%, black 25%);
226
+
227
+ --color-info-o-lighter: color-mix(in srgb, var(--info) 8%, transparent);
228
+ --color-info-o-light: color-mix(in srgb, var(--info) 16%, transparent);
229
+ --color-info-o-main: color-mix(in srgb, var(--info) 24%, transparent);
230
+ --color-info-o-dark: color-mix(in srgb, var(--info) 32%, transparent);
231
+ --color-info-o-darker: color-mix(in srgb, var(--info) 38%, transparent);
232
+
233
+ --shadow-sm-info: 0px 2px 6px color-mix(in srgb, var(--info) 30%, transparent);
234
+ --shadow-md-info: 0px 4px 16px color-mix(in srgb, var(--info) 30%, transparent);
235
+ --shadow-lg-info: 0px 6px 20px color-mix(in srgb, var(--info) 50%, transparent);
236
+
237
+ --color-success: var(--success);
238
+ --color-success-100: color-mix(in srgb, var(--success) 100%, white 80%);
239
+ --color-success-200: color-mix(in srgb, var(--success) 100%, white 60%);
240
+ --color-success-300: color-mix(in srgb, var(--success) 100%, white 40%);
241
+ --color-success-400: color-mix(in srgb, var(--success) 100%, white 20%);
242
+ --color-success-500: var(--success);
243
+ --color-success-600: color-mix(in srgb, var(--success) 100%, black 10%);
244
+ --color-success-700: color-mix(in srgb, var(--success) 100%, black 15%);
245
+ --color-success-800: color-mix(in srgb, var(--success) 100%, black 20%);
246
+ --color-success-900: color-mix(in srgb, var(--success) 100%, black 25%);
247
+
248
+ --color-success-o-lighter: color-mix(in srgb, var(--success) 8%, transparent);
249
+ --color-success-o-light: color-mix(in srgb, var(--success) 16%, transparent);
250
+ --color-success-o-main: color-mix(in srgb, var(--success) 24%, transparent);
251
+ --color-success-o-dark: color-mix(in srgb, var(--success) 32%, transparent);
252
+ --color-success-o-darker: color-mix(in srgb, var(--success) 38%, transparent);
253
+
254
+ --shadow-sm-success: 0px 2px 6px color-mix(in srgb, var(--success) 30%, transparent);
255
+ --shadow-md-success: 0px 4px 16px color-mix(in srgb, var(--success) 30%, transparent);
256
+ --shadow-lg-success: 0px 6px 20px color-mix(in srgb, var(--success) 50%, transparent);
257
+
258
+ --color-warning: var(--warning);
259
+ --color-warning-100: color-mix(in srgb, var(--warning) 100%, white 80%);
260
+ --color-warning-200: color-mix(in srgb, var(--warning) 100%, white 60%);
261
+ --color-warning-300: color-mix(in srgb, var(--warning) 100%, white 40%);
262
+ --color-warning-400: color-mix(in srgb, var(--warning) 100%, white 20%);
263
+ --color-warning-500: var(--warning);
264
+ --color-warning-600: color-mix(in srgb, var(--warning) 100%, black 10%);
265
+ --color-warning-700: color-mix(in srgb, var(--warning) 100%, black 15%);
266
+ --color-warning-800: color-mix(in srgb, var(--warning) 100%, black 20%);
267
+ --color-warning-900: color-mix(in srgb, var(--warning) 100%, black 25%);
268
+
269
+ --color-warning-o-lighter: color-mix(in srgb, var(--warning) 8%, transparent);
270
+ --color-warning-o-light: color-mix(in srgb, var(--warning) 16%, transparent);
271
+ --color-warning-o-main: color-mix(in srgb, var(--warning) 24%, transparent);
272
+ --color-warning-o-dark: color-mix(in srgb, var(--warning) 32%, transparent);
273
+ --color-warning-o-darker: color-mix(in srgb, var(--warning) 38%, transparent);
274
+
275
+ --shadow-sm-warning: 0px 2px 6px color-mix(in srgb, var(--warning) 30%, transparent);
276
+ --shadow-md-warning: 0px 4px 16px color-mix(in srgb, var(--warning) 30%, transparent);
277
+ --shadow-lg-warning: 0px 6px 20px color-mix(in srgb, var(--warning) 50%, transparent);
278
+
279
+ --color-danger: var(--danger);
280
+ --color-danger-100: color-mix(in srgb, var(--danger) 100%, white 80%);
281
+ --color-danger-200: color-mix(in srgb, var(--danger) 100%, white 60%);
282
+ --color-danger-300: color-mix(in srgb, var(--danger) 100%, white 40%);
283
+ --color-danger-400: color-mix(in srgb, var(--danger) 100%, white 20%);
284
+ --color-danger-500: var(--danger);
285
+ --color-danger-600: color-mix(in srgb, var(--danger) 100%, black 10%);
286
+ --color-danger-700: color-mix(in srgb, var(--danger) 100%, black 15%);
287
+ --color-danger-800: color-mix(in srgb, var(--danger) 100%, black 20%);
288
+ --color-danger-900: color-mix(in srgb, var(--danger) 100%, black 25%);
289
+
290
+ --color-danger-o-lighter: color-mix(in srgb, var(--danger) 8%, transparent);
291
+ --color-danger-o-light: color-mix(in srgb, var(--danger) 16%, transparent);
292
+ --color-danger-o-main: color-mix(in srgb, var(--danger) 24%, transparent);
293
+ --color-danger-o-dark: color-mix(in srgb, var(--danger) 32%, transparent);
294
+ --color-danger-o-darker: color-mix(in srgb, var(--danger) 38%, transparent);
295
+
296
+ --shadow-sm-danger: 0px 2px 6px color-mix(in srgb, var(--danger) 30%, transparent);
297
+ --shadow-md-danger: 0px 4px 16px color-mix(in srgb, var(--danger) 30%, transparent);
298
+ --shadow-lg-danger: 0px 6px 20px color-mix(in srgb, var(--danger) 50%, transparent);
299
+
300
+ --color-main: var(--main);
301
+ --color-main-100: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 90%);
302
+ --color-main-200: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 80%);
303
+ --color-main-300: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 70%);
304
+ --color-main-400: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 60%);
305
+ --color-main-500: var(--gray);
306
+ --color-main-600: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 40%);
307
+ --color-main-700: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 30%);
308
+ --color-main-800: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 20%);
309
+ --color-main-900: color-mix(in srgb, var(--main) 100%, var(--main-foreground) 10%);
310
+
311
+ --color-main-o-lighter: color-mix(in srgb, var(--main) 8%, transparent);
312
+ --color-main-o-light: color-mix(in srgb, var(--main) 16%, transparent);
313
+ --color-main-o-main: color-mix(in srgb, var(--main) 24%, transparent);
314
+ --color-main-o-dark: color-mix(in srgb, var(--main) 32%, transparent);
315
+ --color-main-o-darker: color-mix(in srgb, var(--main) 38%, transparent);
316
+
317
+ --shadow-sm-main: 0px 2px 6px color-mix(in srgb, var(--main) 30%, transparent);
318
+ --shadow-md-main: 0px 4px 16px color-mix(in srgb, var(--main) 30%, transparent);
319
+ --shadow-lg-main: 0px 6px 20px color-mix(in srgb, var(--main) 50%, transparent);
320
+
321
+ --shadow-sm-light: 0px 2px 8px rgb(47 43 61 / 12%);
322
+ --shadow-md-light: 0px 2px 8px rgb(47 43 61 / 30%);
323
+ --shadow-lg-light: 0px 2px 8px rgb(47 43 61 / 50%);
324
+
325
+ --color-snackbar: var(--snackbar);
326
+ --color-paper: var(--paper);
327
+ --color-table-header: var(--table-header);
328
+ --color-chat-bg: var(--chat-bg);
329
+ --color-track-bg: var(--track-bg);
330
+ --color-grey-light: var(--grey-light);
331
+
332
+ /* Animation Keyframes */
333
+ --animate-spin: spin 1s linear infinite;
334
+ --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
335
+ --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
336
+ --animate-bounce: bounce 1s infinite;
337
+
338
+ @keyframes spin {
339
+ from {
340
+ transform: rotate(0deg);
341
+ }
342
+ to {
343
+ transform: rotate(360deg);
344
+ }
345
+ }
346
+
347
+ @keyframes ping {
348
+ 75%, 100% {
349
+ transform: scale(2);
350
+ opacity: 0;
351
+ }
352
+ }
353
+
354
+ @keyframes pulse {
355
+ 0%, 100% {
356
+ opacity: 1;
357
+ }
358
+ 50% {
359
+ opacity: .5;
360
+ }
361
+ }
362
+
363
+ @keyframes bounce {
364
+ 0%, 100% {
365
+ transform: translateY(-25%);
366
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
367
+ }
368
+ 50% {
369
+ transform: translateY(0);
370
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
371
+ }
372
+ }
373
+
374
+ @keyframes ripple {
375
+ 0% {
376
+ transform: scale(0);
377
+ opacity: 0.6;
378
+ }
379
+ 100% {
380
+ transform: scale(4);
381
+ opacity: 0;
382
+ }
383
+ }
384
+
385
+ @keyframes modal-overlay {
386
+ from {
387
+ opacity: 0;
388
+ }
389
+ to {
390
+ opacity: 1;
391
+ }
392
+ }
393
+
394
+ @keyframes modal-content {
395
+ from {
396
+ opacity: 0;
397
+ transform: translate(-50%, -48%) scale(0.95);
398
+ }
399
+ to {
400
+ opacity: 1;
401
+ transform: translate(-50%, -50%) scale(1);
402
+ }
403
+ }
404
+
405
+ @keyframes drawer-slide-left {
406
+ from {
407
+ transform: translateX(-100%);
408
+ }
409
+ to {
410
+ transform: translateX(0);
411
+ }
412
+ }
413
+
414
+ @keyframes drawer-slide-right {
415
+ from {
416
+ transform: translateX(100%);
417
+ }
418
+ to {
419
+ transform: translateX(0);
420
+ }
421
+ }
422
+
423
+ @keyframes drawer-slide-top {
424
+ from {
425
+ transform: translateY(-100%);
426
+ }
427
+ to {
428
+ transform: translateY(0);
429
+ }
430
+ }
431
+
432
+ @keyframes drawer-slide-bottom {
433
+ from {
434
+ transform: translateY(100%);
435
+ }
436
+ to {
437
+ transform: translateY(0);
438
+ }
439
+ }
440
+ }
441
+
442
+ @layer base {
443
+ * {
444
+ @apply border-border outline-ring/50;
445
+ }
446
+
447
+ body {
448
+ @apply bg-background text-foreground;
449
+ font-family: var(--font-main);
450
+ }
451
+
452
+ button {
453
+ @apply focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2;
454
+ }
455
+
456
+ /* Ripple Effect */
457
+ .ripple {
458
+ position: absolute;
459
+ border-radius: 50%;
460
+ background-color: rgba(255, 255, 255, 0.6);
461
+ transform: scale(0);
462
+ animation: ripple 600ms ease-out;
463
+ pointer-events: none;
464
+ }
465
+
466
+ @media (prefers-reduced-motion: reduce) {
467
+ .ripple {
468
+ animation: none;
469
+ }
470
+ }
471
+
472
+ /* Dialog Animations */
473
+ [role="dialog"][data-state="open"] {
474
+ animation: dialogFadeIn 300ms cubic-bezier(0.16, 1, 0.3, 1);
475
+ }
476
+
477
+ [role="dialog"][data-state="closed"] {
478
+ animation: dialogFadeOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
479
+ }
480
+
481
+ /* Dialog Overlay */
482
+ [data-radix-dialog-overlay][data-state="open"] {
483
+ animation: overlayFadeIn 300ms cubic-bezier(0.16, 1, 0.3, 1);
484
+ }
485
+
486
+ [data-radix-dialog-overlay][data-state="closed"] {
487
+ animation: overlayFadeOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
488
+ }
489
+
490
+ /* Accordion & Collapsible Animations */
491
+ [data-radix-accordion-content][data-state="open"],
492
+ [data-radix-collapsible-content][data-state="open"] {
493
+ animation: slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1);
494
+ }
495
+
496
+ [data-radix-accordion-content][data-state="closed"],
497
+ [data-radix-collapsible-content][data-state="closed"] {
498
+ animation: slideUp 200ms cubic-bezier(0.87, 0, 0.13, 1);
499
+ }
500
+
501
+ /* Dropdown, Select, Popover Content Animations */
502
+ /* Side-based animations for natural feel */
503
+ [data-radix-dropdown-menu-content][data-state="open"],
504
+ [data-radix-select-content][data-state="open"],
505
+ [data-radix-popover-content][data-state="open"],
506
+ [data-radix-context-menu-content][data-state="open"] {
507
+ animation: fadeIn 150ms cubic-bezier(0.16, 1, 0.3, 1);
508
+ }
509
+
510
+ [data-radix-dropdown-menu-content][data-state="closed"],
511
+ [data-radix-select-content][data-state="closed"],
512
+ [data-radix-popover-content][data-state="closed"],
513
+ [data-radix-context-menu-content][data-state="closed"] {
514
+ animation: fadeOut 100ms cubic-bezier(0.16, 1, 0.3, 1);
515
+ }
516
+
517
+ /* Top side - slide down slightly */
518
+ [data-radix-dropdown-menu-content][data-side="top"],
519
+ [data-radix-select-content][data-side="top"],
520
+ [data-radix-popover-content][data-side="top"] {
521
+ transform-origin: bottom center;
522
+ }
523
+
524
+ [data-radix-dropdown-menu-content][data-side="top"][data-state="open"],
525
+ [data-radix-select-content][data-side="top"][data-state="open"],
526
+ [data-radix-popover-content][data-side="top"][data-state="open"] {
527
+ animation: slideFromTop 150ms cubic-bezier(0.16, 1, 0.3, 1);
528
+ }
529
+
530
+ /* Bottom side - slide up slightly */
531
+ [data-radix-dropdown-menu-content][data-side="bottom"],
532
+ [data-radix-select-content][data-side="bottom"],
533
+ [data-radix-popover-content][data-side="bottom"] {
534
+ transform-origin: top center;
535
+ }
536
+
537
+ [data-radix-dropdown-menu-content][data-side="bottom"][data-state="open"],
538
+ [data-radix-select-content][data-side="bottom"][data-state="open"],
539
+ [data-radix-popover-content][data-side="bottom"][data-state="open"] {
540
+ animation: slideFromBottom 150ms cubic-bezier(0.16, 1, 0.3, 1);
541
+ }
542
+
543
+ /* Left side */
544
+ [data-radix-dropdown-menu-content][data-side="left"],
545
+ [data-radix-select-content][data-side="left"],
546
+ [data-radix-popover-content][data-side="left"] {
547
+ transform-origin: right center;
548
+ }
549
+
550
+ [data-radix-dropdown-menu-content][data-side="left"][data-state="open"],
551
+ [data-radix-select-content][data-side="left"][data-state="open"],
552
+ [data-radix-popover-content][data-side="left"][data-state="open"] {
553
+ animation: slideFromLeft 150ms cubic-bezier(0.16, 1, 0.3, 1);
554
+ }
555
+
556
+ /* Right side */
557
+ [data-radix-dropdown-menu-content][data-side="right"],
558
+ [data-radix-select-content][data-side="right"],
559
+ [data-radix-popover-content][data-side="right"] {
560
+ transform-origin: left center;
561
+ }
562
+
563
+ [data-radix-dropdown-menu-content][data-side="right"][data-state="open"],
564
+ [data-radix-select-content][data-side="right"][data-state="open"],
565
+ [data-radix-popover-content][data-side="right"][data-state="open"] {
566
+ animation: slideFromRight 150ms cubic-bezier(0.16, 1, 0.3, 1);
567
+ }
568
+
569
+ @keyframes slideFromTop {
570
+ from {
571
+ opacity: 0;
572
+ transform: translateY(-4px) scale(0.98);
573
+ }
574
+ to {
575
+ opacity: 1;
576
+ transform: translateY(0) scale(1);
577
+ }
578
+ }
579
+
580
+ @keyframes slideFromBottom {
581
+ from {
582
+ opacity: 0;
583
+ transform: translateY(4px) scale(0.98);
584
+ }
585
+ to {
586
+ opacity: 1;
587
+ transform: translateY(0) scale(1);
588
+ }
589
+ }
590
+
591
+ @keyframes slideFromLeft {
592
+ from {
593
+ opacity: 0;
594
+ transform: translateX(-4px) scale(0.98);
595
+ }
596
+ to {
597
+ opacity: 1;
598
+ transform: translateX(0) scale(1);
599
+ }
600
+ }
601
+
602
+ @keyframes slideFromRight {
603
+ from {
604
+ opacity: 0;
605
+ transform: translateX(4px) scale(0.98);
606
+ }
607
+ to {
608
+ opacity: 1;
609
+ transform: translateX(0) scale(1);
610
+ }
611
+ }
612
+
613
+ @keyframes fadeIn {
614
+ from {
615
+ opacity: 0;
616
+ transform: scale(0.98);
617
+ }
618
+ to {
619
+ opacity: 1;
620
+ transform: scale(1);
621
+ }
622
+ }
623
+
624
+ @keyframes fadeOut {
625
+ from {
626
+ opacity: 1;
627
+ transform: scale(1);
628
+ }
629
+ to {
630
+ opacity: 0;
631
+ transform: scale(0.98);
632
+ }
633
+ }
634
+
635
+ @keyframes scaleIn {
636
+ from {
637
+ opacity: 0;
638
+ transform: scale(0.95);
639
+ }
640
+ to {
641
+ opacity: 1;
642
+ transform: scale(1);
643
+ }
644
+ }
645
+
646
+ @keyframes scaleOut {
647
+ from {
648
+ opacity: 1;
649
+ transform: scale(1);
650
+ }
651
+ to {
652
+ opacity: 0;
653
+ transform: scale(0.95);
654
+ }
655
+ }
656
+
657
+ @keyframes slideDown {
658
+ from {
659
+ height: 0;
660
+ opacity: 0;
661
+ }
662
+ to {
663
+ height: var(--radix-accordion-content-height);
664
+ height: var(--radix-collapsible-content-height);
665
+ opacity: 1;
666
+ }
667
+ }
668
+
669
+ @keyframes slideUp {
670
+ from {
671
+ height: var(--radix-accordion-content-height);
672
+ height: var(--radix-collapsible-content-height);
673
+ opacity: 1;
674
+ }
675
+ to {
676
+ height: 0;
677
+ opacity: 0;
678
+ }
679
+ }
680
+
681
+ @keyframes dialogFadeIn {
682
+ from {
683
+ opacity: 0;
684
+ transform: translate(-50%, -48%) scale(0.95);
685
+ }
686
+ to {
687
+ opacity: 1;
688
+ transform: translate(-50%, -50%) scale(1);
689
+ }
690
+ }
691
+
692
+ @keyframes dialogFadeOut {
693
+ from {
694
+ opacity: 1;
695
+ transform: translate(-50%, -50%) scale(1);
696
+ }
697
+ to {
698
+ opacity: 0;
699
+ transform: translate(-50%, -48%) scale(0.95);
700
+ }
701
+ }
702
+
703
+ @keyframes overlayFadeIn {
704
+ from {
705
+ opacity: 0;
706
+ }
707
+ to {
708
+ opacity: 1;
709
+ }
710
+ }
711
+
712
+ @keyframes overlayFadeOut {
713
+ from {
714
+ opacity: 1;
715
+ }
716
+ to {
717
+ opacity: 0;
718
+ }
719
+ }
720
+
721
+ /* Accordion & Collapsible Animations */
722
+ .AccordionContent {
723
+ overflow: hidden;
724
+ font-size: 0.875rem;
725
+ line-height: 1.25rem;
726
+ }
727
+
728
+ .AccordionContent[data-state="open"] {
729
+ animation: slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1);
730
+ }
731
+
732
+ .AccordionContent[data-state="closed"] {
733
+ animation: slideUp 300ms cubic-bezier(0.87, 0, 0.13, 1);
734
+ }
735
+
736
+ .CollapsibleContent {
737
+ overflow: hidden;
738
+ }
739
+
740
+ .CollapsibleContent[data-state="open"] {
741
+ animation: slideDown 300ms cubic-bezier(0.87, 0, 0.13, 1);
742
+ }
743
+
744
+ .CollapsibleContent[data-state="closed"] {
745
+ animation: slideUp 300ms cubic-bezier(0.87, 0, 0.13, 1);
746
+ }
747
+
748
+ @keyframes slideDown {
749
+ from {
750
+ height: 0;
751
+ }
752
+ to {
753
+ height: var(--radix-accordion-content-height, var(--radix-collapsible-content-height));
754
+ }
755
+ }
756
+
757
+ @keyframes slideUp {
758
+ from {
759
+ height: var(--radix-accordion-content-height, var(--radix-collapsible-content-height));
760
+ }
761
+ to {
762
+ height: 0;
763
+ }
764
+ }
765
+
766
+ /* Dropdown, Select, Popover, Combobox Animations */
767
+ .DropdownMenuContent {
768
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
769
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
770
+ }
771
+
772
+ .SelectContent {
773
+ transform-origin: var(--radix-select-content-transform-origin);
774
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
775
+ }
776
+
777
+ .PopoverContent {
778
+ transform-origin: var(--radix-popover-content-transform-origin);
779
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
780
+ }
781
+
782
+ .DropdownMenuContent[data-state="closed"],
783
+ .SelectContent[data-state="closed"],
784
+ .PopoverContent[data-state="closed"] {
785
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
786
+ }
787
+
788
+ @keyframes scaleIn {
789
+ from {
790
+ opacity: 0;
791
+ transform: scale(0.95);
792
+ }
793
+ to {
794
+ opacity: 1;
795
+ transform: scale(1);
796
+ }
797
+ }
798
+
799
+ @keyframes scaleOut {
800
+ from {
801
+ opacity: 1;
802
+ transform: scale(1);
803
+ }
804
+ to {
805
+ opacity: 0;
806
+ transform: scale(0.95);
807
+ }
808
+ }
809
+
810
+ /* Button Ripple Effect */
811
+ .ripple {
812
+ position: absolute;
813
+ border-radius: 50%;
814
+ background: rgba(255, 255, 255, 0.6);
815
+ transform: scale(0);
816
+ animation: ripple-animation 600ms ease-out;
817
+ pointer-events: none;
818
+ }
819
+
820
+ @keyframes ripple-animation {
821
+ to {
822
+ transform: scale(4);
823
+ opacity: 0;
824
+ }
825
+ }
826
+ }
827
+
828
+
829
+
830
+
831
+ @keyframes scaleIn {
832
+ from { opacity: 0; scale: 0.95; }
833
+ to { opacity: 1; scale: 1; }
834
+ }
835
+ @keyframes scaleOut {
836
+ from { opacity: 1; scale: 1; }
837
+ to { opacity: 0; scale: 0.95; }
838
+ }
839
+
840
+ .PopoverContent {
841
+ transform-origin: var(--radix-popover-content-transform-origin);
842
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
843
+ }
844
+ .PopoverContent[data-state="closed"] {
845
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
846
+ }
847
+
848
+ .ContextMenuContent {
849
+ transform-origin: var(--radix-context-menu-content-transform-origin);
850
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
851
+ }
852
+ .ContextMenuContent[data-state="closed"] {
853
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
854
+ }
855
+
856
+ .DropdownMenuContent {
857
+ transform-origin: var(--radix-dropdown-menu-content-transform-origin);
858
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
859
+ }
860
+ .DropdownMenuContent[data-state="closed"] {
861
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
862
+ }
863
+
864
+ .HoverCardContent {
865
+ transform-origin: var(--radix-hover-card-content-transform-origin);
866
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
867
+ }
868
+ .HoverCardContent[data-state="closed"] {
869
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
870
+ }
871
+
872
+ .MenubarContent {
873
+ transform-origin: var(--radix-menubar-content-transform-origin);
874
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
875
+ }
876
+ .MenubarContent[data-state="closed"] {
877
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
878
+ }
879
+
880
+ .NavigationMenuViewport {
881
+ transform-origin: var(--radix-navigation-menu-viewport-transform-origin);
882
+ }
883
+
884
+ .SelectContent {
885
+ transform-origin: var(--radix-select-content-transform-origin);
886
+ animation: scaleIn 200ms cubic-bezier(0.16, 1, 0.3, 1);
887
+ }
888
+ .SelectContent[data-state="closed"] {
889
+ animation: scaleOut 200ms cubic-bezier(0.16, 1, 0.3, 1);
890
+ }