@idds/styles 1.0.26

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.
Files changed (81) hide show
  1. package/README.md +147 -0
  2. package/package.json +55 -0
  3. package/src/colors/brands/bgn.css +29 -0
  4. package/src/colors/brands/bkn.css +32 -0
  5. package/src/colors/brands/inagov.css +39 -0
  6. package/src/colors/brands/inaku.css +28 -0
  7. package/src/colors/brands/inapas.css +28 -0
  8. package/src/colors/brands/lan.css +38 -0
  9. package/src/colors/brands/pan-rb.css +30 -0
  10. package/src/colors/index.css +11 -0
  11. package/src/colors/primitives/index.css +150 -0
  12. package/src/colors/product/index.css +205 -0
  13. package/src/colors/utilities/index.css +77 -0
  14. package/src/components/accordion-card.css +99 -0
  15. package/src/components/accordion.css +120 -0
  16. package/src/components/action-dropdown.css +140 -0
  17. package/src/components/alert.css +180 -0
  18. package/src/components/avatar.css +182 -0
  19. package/src/components/badge.css +244 -0
  20. package/src/components/bottom-sheet.css +61 -0
  21. package/src/components/breadcrumb.css +94 -0
  22. package/src/components/button-group.css +130 -0
  23. package/src/components/button.css +233 -0
  24. package/src/components/card.css +488 -0
  25. package/src/components/carousel.css +100 -0
  26. package/src/components/chart.css +81 -0
  27. package/src/components/checkbox.css +211 -0
  28. package/src/components/chip.css +228 -0
  29. package/src/components/collapse.css +84 -0
  30. package/src/components/confirmation.css +131 -0
  31. package/src/components/date-picker.css +1063 -0
  32. package/src/components/divider.css +174 -0
  33. package/src/components/drawer.css +757 -0
  34. package/src/components/dropdown.css +369 -0
  35. package/src/components/field-input-table.css +347 -0
  36. package/src/components/file-upload.css +357 -0
  37. package/src/components/input-search.css +428 -0
  38. package/src/components/linear-progress-indicator.css +34 -0
  39. package/src/components/modal.css +497 -0
  40. package/src/components/month-picker.css +325 -0
  41. package/src/components/multiple-choice-grid.css +383 -0
  42. package/src/components/pagination.css +415 -0
  43. package/src/components/password-input.css +472 -0
  44. package/src/components/phone-input.css +412 -0
  45. package/src/components/progress-bar.css +447 -0
  46. package/src/components/radio-input.css +263 -0
  47. package/src/components/reset.css +431 -0
  48. package/src/components/select-dropdown.css +663 -0
  49. package/src/components/select-option.css +217 -0
  50. package/src/components/skeleton.css +488 -0
  51. package/src/components/spinner.css +450 -0
  52. package/src/components/stepper.css +209 -0
  53. package/src/components/tab-horizontal.css +278 -0
  54. package/src/components/tab-vertical.css +261 -0
  55. package/src/components/table-progress-bar.css +48 -0
  56. package/src/components/table.css +538 -0
  57. package/src/components/text-area.css +216 -0
  58. package/src/components/text-field.css +275 -0
  59. package/src/components/theme-toggle.css +259 -0
  60. package/src/components/time-picker.css +436 -0
  61. package/src/components/toast.css +245 -0
  62. package/src/components/toggle.css +223 -0
  63. package/src/components/tooltip.css +452 -0
  64. package/src/components/year-picker.css +423 -0
  65. package/src/index.css +3 -0
  66. package/src/tailwind/css/bgn.css +43 -0
  67. package/src/tailwind/css/bkn.css +37 -0
  68. package/src/tailwind/css/idds.css +231 -0
  69. package/src/tailwind/css/inagov.css +33 -0
  70. package/src/tailwind/css/inaku.css +33 -0
  71. package/src/tailwind/css/inapas.css +33 -0
  72. package/src/tailwind/css/lan.css +43 -0
  73. package/src/tailwind/css/pan-rb.css +35 -0
  74. package/src/tailwind/ts/bgn.ts +20 -0
  75. package/src/tailwind/ts/bkn.ts +38 -0
  76. package/src/tailwind/ts/idds.ts +240 -0
  77. package/src/tailwind/ts/inagov.ts +35 -0
  78. package/src/tailwind/ts/inaku.ts +35 -0
  79. package/src/tailwind/ts/inapas.ts +35 -0
  80. package/src/tailwind/ts/lan.ts +45 -0
  81. package/src/tailwind/ts/panrb.ts +37 -0
@@ -0,0 +1,757 @@
1
+ /**
2
+ * Drawer Component Styles
3
+ * Menggunakan BEM naming convention dengan prefix "ina-"
4
+ */
5
+
6
+ .ina-drawer {
7
+ /* Base overlay container */
8
+ position: fixed;
9
+ inset: 0;
10
+ z-index: 1000;
11
+ display: flex;
12
+ animation: overlayFadeIn 0.2s cubic-bezier(0.16, 1, 0.3, 1);
13
+ }
14
+
15
+ @keyframes overlayFadeIn {
16
+ from {
17
+ opacity: 0;
18
+ }
19
+ to {
20
+ opacity: 1;
21
+ }
22
+ }
23
+
24
+ /* Position variants */
25
+ .ina-drawer--position-top {
26
+ align-items: flex-start;
27
+ justify-content: center;
28
+ }
29
+
30
+ .ina-drawer--position-bottom {
31
+ align-items: flex-end;
32
+ justify-content: center;
33
+ }
34
+
35
+ .ina-drawer--position-left {
36
+ align-items: center;
37
+ justify-content: flex-start;
38
+ }
39
+
40
+ .ina-drawer--position-right {
41
+ align-items: center;
42
+ justify-content: flex-end;
43
+ }
44
+
45
+ /* Mobile override position adjustments - left/right become bottom-like */
46
+ @media (max-width: 640px) {
47
+ .ina-drawer--position-right,
48
+ .ina-drawer--position-left {
49
+ align-items: flex-end;
50
+ justify-content: center;
51
+ }
52
+ }
53
+
54
+ /* Backdrop with smooth fade animation */
55
+ .ina-drawer__backdrop {
56
+ position: absolute;
57
+ inset: 0;
58
+ background-color: rgba(31, 31, 31, 0.48);
59
+ backdrop-filter: blur(2px);
60
+ animation: backdropFadeIn 0.25s cubic-bezier(0.16, 1, 0.3, 1);
61
+ }
62
+
63
+ @keyframes backdropFadeIn {
64
+ from {
65
+ opacity: 0;
66
+ backdrop-filter: blur(0px);
67
+ }
68
+ to {
69
+ opacity: 1;
70
+ backdrop-filter: blur(2px);
71
+ }
72
+ }
73
+
74
+ @keyframes backdropFadeOut {
75
+ 0% {
76
+ opacity: 1;
77
+ backdrop-filter: blur(2px);
78
+ }
79
+ 100% {
80
+ opacity: 0;
81
+ backdrop-filter: blur(0px);
82
+ }
83
+ }
84
+
85
+ /* Backdrop closing animation */
86
+ .ina-drawer--closing .ina-drawer__backdrop {
87
+ animation: backdropFadeOut 0.25s cubic-bezier(0.4, 0, 0.2, 1) forwards;
88
+ }
89
+
90
+ /* Main panel */
91
+ .ina-drawer__panel {
92
+ position: relative;
93
+ background-color: var(--ina-background-primary);
94
+ border-radius: var(--ina-radius-lg);
95
+ box-shadow: var(--ina-shadow-xl);
96
+ display: flex;
97
+ flex-direction: column;
98
+ z-index: 10;
99
+ transform-origin: center;
100
+ transition: transform var(--ina-transition-duration-300) ease-in-out;
101
+ }
102
+
103
+ /* Position-specific animations with smooth easing */
104
+ .ina-drawer--position-right .ina-drawer__panel {
105
+ animation: panelSlideInRight 0.35s cubic-bezier(0.16, 1, 0.3, 1);
106
+ }
107
+
108
+ .ina-drawer--position-left .ina-drawer__panel {
109
+ animation: panelSlideInLeft 0.35s cubic-bezier(0.16, 1, 0.3, 1);
110
+ }
111
+
112
+ .ina-drawer--position-top .ina-drawer__panel {
113
+ animation: panelSlideInTop 0.35s cubic-bezier(0.16, 1, 0.3, 1);
114
+ }
115
+
116
+ .ina-drawer--position-bottom .ina-drawer__panel {
117
+ animation: panelSlideInBottom 0.35s cubic-bezier(0.16, 1, 0.3, 1);
118
+ }
119
+
120
+ @keyframes panelSlideIn {
121
+ from {
122
+ opacity: 0;
123
+ transform: scale(0.95);
124
+ }
125
+ to {
126
+ opacity: 1;
127
+ transform: scale(1);
128
+ }
129
+ }
130
+
131
+ /* Position-specific slide-in animations with smooth easing */
132
+ @keyframes panelSlideInRight {
133
+ 0% {
134
+ opacity: 0;
135
+ transform: translateX(100%);
136
+ }
137
+ 100% {
138
+ opacity: 1;
139
+ transform: translateX(0);
140
+ }
141
+ }
142
+
143
+ @keyframes panelSlideInLeft {
144
+ 0% {
145
+ opacity: 0;
146
+ transform: translateX(-100%);
147
+ }
148
+ 100% {
149
+ opacity: 1;
150
+ transform: translateX(0);
151
+ }
152
+ }
153
+
154
+ @keyframes panelSlideInTop {
155
+ 0% {
156
+ opacity: 0;
157
+ transform: translateY(-100%);
158
+ }
159
+ 100% {
160
+ opacity: 1;
161
+ transform: translateY(0);
162
+ }
163
+ }
164
+
165
+ @keyframes panelSlideInBottom {
166
+ 0% {
167
+ opacity: 0;
168
+ transform: translateY(100%);
169
+ }
170
+ 100% {
171
+ opacity: 1;
172
+ transform: translateY(0);
173
+ }
174
+ }
175
+
176
+ /* Position-specific panel styling */
177
+ .ina-drawer--position-top .ina-drawer__panel {
178
+ border-bottom-left-radius: 0;
179
+ border-bottom-right-radius: 0;
180
+ }
181
+
182
+ .ina-drawer--position-bottom .ina-drawer__panel {
183
+ border-top-left-radius: 0;
184
+ border-top-right-radius: 0;
185
+ }
186
+
187
+ .ina-drawer--position-left .ina-drawer__panel {
188
+ border-top-right-radius: 0;
189
+ border-bottom-right-radius: 0;
190
+ }
191
+
192
+ .ina-drawer--position-right .ina-drawer__panel {
193
+ border-top-left-radius: 0;
194
+ border-bottom-left-radius: 0;
195
+ }
196
+
197
+ /* Panel sizes */
198
+ /* Removed old size classes - now using width variants */
199
+
200
+ /* Mobile size adjustments */
201
+ @media (max-width: 640px) {
202
+ .ina-drawer__panel {
203
+ border-radius: var(--ina-radius-lg) var(--ina-radius-lg) 0 0;
204
+ }
205
+
206
+ .ina-drawer__title {
207
+ font-size: var(--ina-font-base); /* Turun dari lg ke base */
208
+ }
209
+
210
+ /* Position bottom: min 280-320px (40-45%), max 90vh */
211
+ .ina-drawer--position-bottom .ina-drawer__panel {
212
+ width: 100vw;
213
+ min-height: 280px;
214
+ height: 45vh;
215
+ max-height: 90vh;
216
+ margin: 0;
217
+ }
218
+
219
+ /* Position top: same as bottom for mobile */
220
+ .ina-drawer--position-top .ina-drawer__panel {
221
+ width: 100vw;
222
+ min-height: 280px;
223
+ height: 45vh;
224
+ max-height: 90vh;
225
+ margin: 0;
226
+ border-radius: 0 0 var(--ina-radius-lg) var(--ina-radius-lg);
227
+ }
228
+
229
+ /* Position left/right: behave like bottom on mobile */
230
+ .ina-drawer--position-left .ina-drawer__panel,
231
+ .ina-drawer--position-right .ina-drawer__panel {
232
+ width: 100vw;
233
+ min-height: 280px;
234
+ height: 45vh;
235
+ max-height: 90vh;
236
+ margin: 0;
237
+ border-radius: var(--ina-radius-lg) var(--ina-radius-lg) 0 0;
238
+ }
239
+
240
+ /* Override animations for left/right to use bottom animation on mobile */
241
+ .ina-drawer--position-left .ina-drawer__panel,
242
+ .ina-drawer--position-right .ina-drawer__panel {
243
+ animation: panelSlideInBottom 0.35s cubic-bezier(0.16, 1, 0.3, 1);
244
+ }
245
+ }
246
+
247
+ /* Desktop size adjustments */
248
+ @media (min-width: 641px) {
249
+ /* Position top/bottom: min 40vh, max 80vh */
250
+ .ina-drawer--position-top .ina-drawer__panel,
251
+ .ina-drawer--position-bottom .ina-drawer__panel {
252
+ width: 100vw;
253
+ min-height: 40vh;
254
+ height: 60vh;
255
+ max-height: 80vh;
256
+ }
257
+
258
+ /* Position left/right: min 420px, max 520px (default) */
259
+ .ina-drawer--position-left .ina-drawer__panel,
260
+ .ina-drawer--position-right .ina-drawer__panel {
261
+ /* Default width for panels without specific width variant */
262
+ min-width: 420px;
263
+ width: 420px;
264
+ max-width: 520px;
265
+ /* Full height for side panels */
266
+ height: 100vh;
267
+ max-height: 100vh;
268
+ }
269
+
270
+ /* Width variants for desktop - Side panels (left/right) */
271
+ .ina-drawer--position-left .ina-drawer__panel--width-sm,
272
+ .ina-drawer--position-right .ina-drawer__panel--width-sm {
273
+ width: 320px !important;
274
+ min-width: 320px !important;
275
+ max-width: 400px !important;
276
+ height: 100vh !important;
277
+ max-height: 100vh !important;
278
+ }
279
+
280
+ .ina-drawer--position-left .ina-drawer__panel--width-md,
281
+ .ina-drawer--position-right .ina-drawer__panel--width-md {
282
+ width: 400px !important;
283
+ min-width: 400px !important;
284
+ max-width: 500px !important;
285
+ height: 100vh !important;
286
+ max-height: 100vh !important;
287
+ }
288
+
289
+ .ina-drawer--position-left .ina-drawer__panel--width-lg,
290
+ .ina-drawer--position-right .ina-drawer__panel--width-lg {
291
+ width: 500px !important;
292
+ min-width: 500px !important;
293
+ max-width: 600px !important;
294
+ height: 100vh !important;
295
+ max-height: 100vh !important;
296
+ }
297
+
298
+ .ina-drawer--position-left .ina-drawer__panel--width-xl,
299
+ .ina-drawer--position-right .ina-drawer__panel--width-xl {
300
+ width: 600px !important;
301
+ min-width: 600px !important;
302
+ max-width: 700px !important;
303
+ height: 100vh !important;
304
+ max-height: 100vh !important;
305
+ }
306
+
307
+ .ina-drawer--position-left .ina-drawer__panel--width-2xl,
308
+ .ina-drawer--position-right .ina-drawer__panel--width-2xl {
309
+ width: 700px !important;
310
+ min-width: 700px !important;
311
+ max-width: 800px !important;
312
+ height: 100vh !important;
313
+ max-height: 100vh !important;
314
+ }
315
+
316
+ .ina-drawer--position-left .ina-drawer__panel--width-full,
317
+ .ina-drawer--position-right .ina-drawer__panel--width-full {
318
+ width: 80vw !important;
319
+ min-width: 80vw !important;
320
+ max-width: 80vw !important;
321
+ height: 100vh !important;
322
+ max-height: 100vh !important;
323
+ }
324
+
325
+ /* Width variants for desktop - Top/Bottom panels (always 100vw) */
326
+ .ina-drawer--position-top .ina-drawer__panel--width-sm,
327
+ .ina-drawer--position-top .ina-drawer__panel--width-md,
328
+ .ina-drawer--position-top .ina-drawer__panel--width-lg,
329
+ .ina-drawer--position-top .ina-drawer__panel--width-xl,
330
+ .ina-drawer--position-top .ina-drawer__panel--width-2xl,
331
+ .ina-drawer--position-top .ina-drawer__panel--width-full,
332
+ .ina-drawer--position-bottom .ina-drawer__panel--width-sm,
333
+ .ina-drawer--position-bottom .ina-drawer__panel--width-md,
334
+ .ina-drawer--position-bottom .ina-drawer__panel--width-lg,
335
+ .ina-drawer--position-bottom .ina-drawer__panel--width-xl,
336
+ .ina-drawer--position-bottom .ina-drawer__panel--width-2xl,
337
+ .ina-drawer--position-bottom .ina-drawer__panel--width-full {
338
+ width: 100vw !important;
339
+ min-width: 100vw !important;
340
+ max-width: 100vw !important;
341
+ height: 60vh !important;
342
+ max-height: 60vh !important;
343
+ }
344
+
345
+ /* Custom width support - for values like '40vw', '500px', etc. - Side panels */
346
+ .ina-drawer--position-left .ina-drawer__panel--width-40vw,
347
+ .ina-drawer--position-right .ina-drawer__panel--width-40vw {
348
+ width: 40vw !important;
349
+ min-width: 40vw;
350
+ max-width: 40vw;
351
+ height: 100vh !important;
352
+ max-height: 100vh !important;
353
+ }
354
+
355
+ .ina-drawer--position-left .ina-drawer__panel--width-50vw,
356
+ .ina-drawer--position-right .ina-drawer__panel--width-50vw {
357
+ width: 50vw !important;
358
+ min-width: 50vw;
359
+ max-width: 50vw;
360
+ height: 100vh !important;
361
+ max-height: 100vh !important;
362
+ }
363
+
364
+ .ina-drawer--position-left .ina-drawer__panel--width-60vw,
365
+ .ina-drawer--position-right .ina-drawer__panel--width-60vw {
366
+ width: 60vw !important;
367
+ min-width: 60vw;
368
+ max-width: 60vw;
369
+ height: 100vh !important;
370
+ max-height: 100vh !important;
371
+ }
372
+
373
+ .ina-drawer--position-left .ina-drawer__panel--width-70vw,
374
+ .ina-drawer--position-right .ina-drawer__panel--width-70vw {
375
+ width: 70vw !important;
376
+ min-width: 70vw;
377
+ max-width: 70vw;
378
+ height: 100vh !important;
379
+ max-height: 100vh !important;
380
+ }
381
+
382
+ .ina-drawer--position-left .ina-drawer__panel--width-80vw,
383
+ .ina-drawer--position-right .ina-drawer__panel--width-80vw {
384
+ width: 80vw !important;
385
+ min-width: 80vw;
386
+ max-width: 80vw;
387
+ height: 100vh !important;
388
+ max-height: 100vh !important;
389
+ }
390
+
391
+ /* Custom width support - Top/Bottom panels (always 100vw) */
392
+ .ina-drawer--position-top .ina-drawer__panel--width-40vw,
393
+ .ina-drawer--position-top .ina-drawer__panel--width-50vw,
394
+ .ina-drawer--position-top .ina-drawer__panel--width-60vw,
395
+ .ina-drawer--position-top .ina-drawer__panel--width-70vw,
396
+ .ina-drawer--position-top .ina-drawer__panel--width-80vw,
397
+ .ina-drawer--position-bottom .ina-drawer__panel--width-40vw,
398
+ .ina-drawer--position-bottom .ina-drawer__panel--width-50vw,
399
+ .ina-drawer--position-bottom .ina-drawer__panel--width-60vw,
400
+ .ina-drawer--position-bottom .ina-drawer__panel--width-70vw,
401
+ .ina-drawer--position-bottom .ina-drawer__panel--width-80vw {
402
+ width: 100vw !important;
403
+ min-width: 100vw !important;
404
+ max-width: 100vw !important;
405
+ height: 60vh !important;
406
+ max-height: 60vh !important;
407
+ }
408
+ }
409
+
410
+ /* Header */
411
+ .ina-drawer__header {
412
+ display: flex;
413
+ align-items: center;
414
+ justify-content: space-between;
415
+ padding: var(--ina-spacing-4);
416
+ border-bottom: 1px solid var(--ina-stroke-primary);
417
+ flex-shrink: 0;
418
+ }
419
+
420
+ .ina-drawer--position-top .ina-drawer__header {
421
+ order: 1;
422
+ }
423
+
424
+ /* Header title */
425
+ .ina-drawer__title {
426
+ font-size: var(--ina-font-lg);
427
+ font-weight: var(--ina-font-semibold);
428
+ color: var(--ina-content-primary);
429
+ margin: 0;
430
+ }
431
+
432
+ /* Close button */
433
+ .ina-drawer__close-button {
434
+ padding: var(--ina-spacing-1);
435
+ border: none;
436
+ background: none;
437
+ border-radius: var(--ina-radius-base);
438
+ cursor: pointer;
439
+ color: var(--ina-content-secondary);
440
+ transition: all var(--ina-transition-base);
441
+ display: flex;
442
+ align-items: center;
443
+ justify-content: center;
444
+ width: 32px;
445
+ height: 32px;
446
+ }
447
+
448
+ .ina-drawer__close-button:hover {
449
+ background-color: var(--ina-neutral-100);
450
+ color: var(--ina-content-primary);
451
+ }
452
+
453
+ .ina-drawer__close-button:focus-visible {
454
+ outline: 2px solid var(--ina-primary-500);
455
+ outline-offset: 2px;
456
+ background-color: var(--ina-neutral-100);
457
+ }
458
+
459
+ .ina-drawer__close-icon {
460
+ width: 20px;
461
+ height: 20px;
462
+ }
463
+
464
+ /* Content area */
465
+ .ina-drawer__content {
466
+ padding: var(--ina-spacing-4);
467
+ overflow: auto;
468
+ flex: 1;
469
+ scrollbar-width: thin;
470
+ scrollbar-color: var(--ina-neutral-400) var(--ina-neutral-100);
471
+ }
472
+
473
+ .ina-drawer__content::-webkit-scrollbar {
474
+ width: 6px;
475
+ }
476
+
477
+ .ina-drawer__content::-webkit-scrollbar-track {
478
+ background: var(--ina-neutral-100);
479
+ }
480
+
481
+ .ina-drawer__content::-webkit-scrollbar-thumb {
482
+ background-color: var(--ina-neutral-400);
483
+ border-radius: var(--ina-radius-full);
484
+ }
485
+
486
+ .ina-drawer__content::-webkit-scrollbar-thumb:hover {
487
+ background-color: var(--ina-neutral-500);
488
+ }
489
+
490
+ /* Footer */
491
+ .ina-drawer__footer {
492
+ padding: var(--ina-spacing-4);
493
+ border-top: 1px solid var(--ina-stroke-primary);
494
+ flex-shrink: 0;
495
+ }
496
+
497
+ .ina-drawer--position-top .ina-drawer__footer {
498
+ order: 2;
499
+ }
500
+
501
+ /* Footer positioning */
502
+ .ina-drawer__footer--position-left {
503
+ display: flex;
504
+ justify-content: flex-start;
505
+ gap: var(--ina-spacing-2);
506
+ }
507
+
508
+ .ina-drawer__footer--position-right {
509
+ display: flex;
510
+ justify-content: flex-end;
511
+ gap: var(--ina-spacing-2);
512
+ }
513
+
514
+ .ina-drawer__footer--position-center {
515
+ display: flex;
516
+ justify-content: center;
517
+ gap: var(--ina-spacing-2);
518
+ }
519
+
520
+ .ina-drawer__footer--position-between {
521
+ display: flex;
522
+ justify-content: space-between;
523
+ align-items: center;
524
+ }
525
+
526
+ /* Animation states */
527
+ .ina-drawer--closing {
528
+ animation: overlayFadeOut 0.2s cubic-bezier(0.4, 0, 0.2, 1) forwards;
529
+ }
530
+
531
+ @keyframes overlayFadeOut {
532
+ from {
533
+ opacity: 1;
534
+ }
535
+ to {
536
+ opacity: 0;
537
+ }
538
+ }
539
+
540
+ /* Position-specific closing animations with smooth easing */
541
+ .ina-drawer--closing.ina-drawer--position-right .ina-drawer__panel {
542
+ animation: panelSlideOutRight 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
543
+ }
544
+
545
+ .ina-drawer--closing.ina-drawer--position-left .ina-drawer__panel {
546
+ animation: panelSlideOutLeft 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
547
+ }
548
+
549
+ .ina-drawer--closing.ina-drawer--position-top .ina-drawer__panel {
550
+ animation: panelSlideOutTop 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
551
+ }
552
+
553
+ .ina-drawer--closing.ina-drawer--position-bottom .ina-drawer__panel {
554
+ animation: panelSlideOutBottom 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
555
+ }
556
+
557
+ /* Mobile: left/right use bottom closing animation */
558
+ @media (max-width: 640px) {
559
+ .ina-drawer--closing.ina-drawer--position-left .ina-drawer__panel,
560
+ .ina-drawer--closing.ina-drawer--position-right .ina-drawer__panel {
561
+ animation: panelSlideOutBottom 0.3s cubic-bezier(0.4, 0, 0.2, 1) forwards;
562
+ }
563
+ }
564
+
565
+ @keyframes panelSlideOut {
566
+ from {
567
+ opacity: 1;
568
+ transform: scale(1);
569
+ }
570
+ to {
571
+ opacity: 0;
572
+ transform: scale(0.95);
573
+ }
574
+ }
575
+
576
+ /* Position-specific slide-out animations with smooth easing */
577
+ @keyframes panelSlideOutRight {
578
+ 0% {
579
+ opacity: 1;
580
+ transform: translateX(0);
581
+ }
582
+ 100% {
583
+ opacity: 0;
584
+ transform: translateX(100%);
585
+ }
586
+ }
587
+
588
+ @keyframes panelSlideOutLeft {
589
+ 0% {
590
+ opacity: 1;
591
+ transform: translateX(0);
592
+ }
593
+ 100% {
594
+ opacity: 0;
595
+ transform: translateX(-100%);
596
+ }
597
+ }
598
+
599
+ @keyframes panelSlideOutTop {
600
+ 0% {
601
+ opacity: 1;
602
+ transform: translateY(0);
603
+ }
604
+ 100% {
605
+ opacity: 0;
606
+ transform: translateY(-100%);
607
+ }
608
+ }
609
+
610
+ @keyframes panelSlideOutBottom {
611
+ 0% {
612
+ opacity: 1;
613
+ transform: translateY(0);
614
+ }
615
+ 100% {
616
+ opacity: 0;
617
+ transform: translateY(100%);
618
+ }
619
+ }
620
+
621
+ /* Position-specific animations - Fixed positioning */
622
+ .ina-drawer--position-right .ina-drawer__panel {
623
+ /* Panel should be visible by default, not hidden */
624
+ transform: translateX(0);
625
+ }
626
+
627
+ .ina-drawer--position-left .ina-drawer__panel {
628
+ /* Panel should be visible by default, not hidden */
629
+ transform: translateX(0);
630
+ }
631
+
632
+ .ina-drawer--position-top .ina-drawer__panel {
633
+ /* Panel should be visible by default, not hidden */
634
+ transform: translateY(0);
635
+ }
636
+
637
+ .ina-drawer--position-bottom .ina-drawer__panel {
638
+ /* Panel should be visible by default, not hidden */
639
+ transform: translateY(0);
640
+ }
641
+
642
+ /* Mobile: left/right use bottom transform */
643
+ @media (max-width: 640px) {
644
+ .ina-drawer--position-left .ina-drawer__panel,
645
+ .ina-drawer--position-right .ina-drawer__panel {
646
+ transform: translateY(0);
647
+ }
648
+ }
649
+
650
+ /* Variant styles */
651
+ .ina-drawer--variant-glass .ina-drawer__panel {
652
+ background-color: rgba(255, 255, 255, 0.95);
653
+ backdrop-filter: blur(20px);
654
+ }
655
+
656
+ .ina-drawer--variant-floating .ina-drawer__panel {
657
+ margin: var(--ina-spacing-8);
658
+ border-radius: var(--ina-radius-xl);
659
+ box-shadow: var(--ina-shadow-2xl);
660
+ }
661
+
662
+ .ina-drawer--variant-minimal .ina-drawer__panel {
663
+ box-shadow: none;
664
+ border: 1px solid var(--ina-stroke-primary);
665
+ }
666
+
667
+ /* Size variants with max-width */
668
+ .ina-drawer__panel--fullscreen {
669
+ width: 100vw !important;
670
+ height: 100vh !important;
671
+ max-width: 100vw !important;
672
+ max-height: 100vh !important;
673
+ margin: 0 !important;
674
+ border-radius: 0 !important;
675
+ }
676
+
677
+ /* Dark mode support */
678
+ /* @media (prefers-color-scheme: dark) {
679
+ .ina-drawer__backdrop {
680
+ background-color: rgba(0, 0, 0, 0.7);
681
+ }
682
+
683
+ .ina-drawer__panel {
684
+ background-color: var(--ina-background-dark-primary);
685
+ border-color: var(--ina-stroke-primary-dark);
686
+ }
687
+
688
+ .ina-drawer__header {
689
+ border-color: var(--ina-stroke-primary-dark);
690
+ }
691
+
692
+ .ina-drawer__title {
693
+ color: var(--ina-content-dark-primary);
694
+ }
695
+
696
+ .ina-drawer__close-button {
697
+ color: var(--ina-content-dark-secondary);
698
+ }
699
+
700
+ .ina-drawer__close-button:hover {
701
+ background-color: var(--ina-neutral-800);
702
+ color: var(--ina-content-dark-primary);
703
+ }
704
+
705
+ .ina-drawer__footer {
706
+ border-color: var(--ina-stroke-primary-dark);
707
+ }
708
+
709
+ .ina-drawer--variant-glass .ina-drawer__panel {
710
+ background-color: rgba(0, 0, 0, 0.95);
711
+ border-color: rgba(255, 255, 255, 0.1);
712
+ }
713
+
714
+ .ina-drawer--variant-minimal .ina-drawer__panel {
715
+ border-color: var(--ina-stroke-primary-dark);
716
+ }
717
+ } */
718
+
719
+ /* Accessibility improvements */
720
+ .ina-drawer__close-button:focus-visible {
721
+ outline: 2px solid var(--ina-primary-500);
722
+ outline-offset: 2px;
723
+ }
724
+
725
+ /* High contrast mode */
726
+ @media (prefers-contrast: high) {
727
+ .ina-drawer__panel {
728
+ border: 2px solid var(--ina-content-primary);
729
+ }
730
+
731
+ .ina-drawer__header,
732
+ .ina-drawer__footer {
733
+ border-width: 2px;
734
+ }
735
+ }
736
+
737
+ /* Reduced motion */
738
+ @media (prefers-reduced-motion: reduce) {
739
+ .ina-drawer,
740
+ .ina-drawer__backdrop,
741
+ .ina-drawer__panel,
742
+ .ina-drawer__close-button {
743
+ animation: none;
744
+ transition: none;
745
+ }
746
+
747
+ .ina-drawer__panel {
748
+ transform: none !important;
749
+ }
750
+ }
751
+
752
+ /* Print styles */
753
+ @media print {
754
+ .ina-drawer {
755
+ display: none;
756
+ }
757
+ }