@idds/styles 1.2.11 → 1.2.13

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 (96) hide show
  1. package/README.md +178 -42
  2. package/dist/base.css +1071 -0
  3. package/dist/base.min.css +1 -0
  4. package/dist/index.css +14801 -0
  5. package/dist/index.min.css +15 -0
  6. package/dist/tailwind/css/bgn.min.css +1 -0
  7. package/dist/tailwind/css/bkn.min.css +1 -0
  8. package/dist/tailwind/css/idds.min.css +1 -0
  9. package/dist/tailwind/css/inagov.min.css +1 -0
  10. package/dist/tailwind/css/inaku.min.css +1 -0
  11. package/dist/tailwind/css/inapas.min.css +1 -0
  12. package/dist/tailwind/css/lan.min.css +1 -0
  13. package/dist/tailwind/css/pan-rb.min.css +1 -0
  14. package/package.json +31 -21
  15. package/src/colors/brands/bgn.css +0 -30
  16. package/src/colors/brands/bkn.css +0 -33
  17. package/src/colors/brands/inagov.css +0 -40
  18. package/src/colors/brands/inaku.css +0 -29
  19. package/src/colors/brands/inapas.css +0 -29
  20. package/src/colors/brands/lan.css +0 -39
  21. package/src/colors/brands/pan-rb.css +0 -31
  22. package/src/colors/index.css +0 -11
  23. package/src/colors/primitives/index.css +0 -175
  24. package/src/colors/product/index.css +0 -205
  25. package/src/colors/utilities/index.css +0 -77
  26. package/src/components/accordion-card.css +0 -99
  27. package/src/components/accordion.css +0 -120
  28. package/src/components/action-dropdown.css +0 -140
  29. package/src/components/alert.css +0 -180
  30. package/src/components/avatar.css +0 -182
  31. package/src/components/badge.css +0 -247
  32. package/src/components/bottom-sheet.css +0 -61
  33. package/src/components/breadcrumb.css +0 -97
  34. package/src/components/button-group.css +0 -130
  35. package/src/components/button.css +0 -241
  36. package/src/components/card.css +0 -576
  37. package/src/components/carousel.css +0 -100
  38. package/src/components/chart.css +0 -81
  39. package/src/components/checkbox.css +0 -211
  40. package/src/components/chip.css +0 -245
  41. package/src/components/collapse.css +0 -84
  42. package/src/components/confirmation.css +0 -131
  43. package/src/components/date-picker.css +0 -1059
  44. package/src/components/divider.css +0 -174
  45. package/src/components/drawer.css +0 -752
  46. package/src/components/dropdown.css +0 -370
  47. package/src/components/field-input-table.css +0 -347
  48. package/src/components/file-upload.css +0 -333
  49. package/src/components/input-search.css +0 -428
  50. package/src/components/linear-progress-indicator.css +0 -34
  51. package/src/components/modal.css +0 -507
  52. package/src/components/month-picker.css +0 -326
  53. package/src/components/multiple-choice-grid.css +0 -383
  54. package/src/components/one-time-password.css +0 -119
  55. package/src/components/pagination.css +0 -429
  56. package/src/components/password-input.css +0 -477
  57. package/src/components/phone-input.css +0 -412
  58. package/src/components/progress-bar.css +0 -447
  59. package/src/components/radio-input.css +0 -277
  60. package/src/components/reset.css +0 -431
  61. package/src/components/select-dropdown.css +0 -663
  62. package/src/components/select-option.css +0 -217
  63. package/src/components/single-file-upload.css +0 -186
  64. package/src/components/skeleton.css +0 -488
  65. package/src/components/spinner.css +0 -450
  66. package/src/components/stepper.css +0 -260
  67. package/src/components/tab-horizontal.css +0 -278
  68. package/src/components/tab-vertical.css +0 -261
  69. package/src/components/table-progress-bar.css +0 -48
  70. package/src/components/table.css +0 -538
  71. package/src/components/text-area.css +0 -220
  72. package/src/components/text-field.css +0 -278
  73. package/src/components/theme-toggle.css +0 -259
  74. package/src/components/time-picker.css +0 -436
  75. package/src/components/toast.css +0 -265
  76. package/src/components/toggle.css +0 -195
  77. package/src/components/tooltip.css +0 -343
  78. package/src/components/year-picker.css +0 -424
  79. package/src/index.css +0 -3
  80. /package/{src → dist}/tailwind/css/bgn.css +0 -0
  81. /package/{src → dist}/tailwind/css/bkn.css +0 -0
  82. /package/{src → dist}/tailwind/css/idds.css +0 -0
  83. /package/{src → dist}/tailwind/css/inagov.css +0 -0
  84. /package/{src → dist}/tailwind/css/inaku.css +0 -0
  85. /package/{src → dist}/tailwind/css/inapas.css +0 -0
  86. /package/{src → dist}/tailwind/css/lan.css +0 -0
  87. /package/{src → dist}/tailwind/css/pan-rb.css +0 -0
  88. /package/{src → dist}/tailwind/ts/bgn.ts +0 -0
  89. /package/{src → dist}/tailwind/ts/bkn.ts +0 -0
  90. /package/{src → dist}/tailwind/ts/default.ts +0 -0
  91. /package/{src → dist}/tailwind/ts/idds.ts +0 -0
  92. /package/{src → dist}/tailwind/ts/inagov.ts +0 -0
  93. /package/{src → dist}/tailwind/ts/inaku.ts +0 -0
  94. /package/{src → dist}/tailwind/ts/inapas.ts +0 -0
  95. /package/{src → dist}/tailwind/ts/lan.ts +0 -0
  96. /package/{src → dist}/tailwind/ts/pan-rb.ts +0 -0
@@ -1,447 +0,0 @@
1
- /**
2
- * ProgressBar Component Styles
3
- * Menggunakan BEM naming convention dengan prefix "ina-"
4
- */
5
-
6
- .ina-progress-bar {
7
- /* Base container styling */
8
- position: relative;
9
- width: 100%;
10
- background-color: var(--ina-neutral-200);
11
- border-radius: var(--ina-radius-full);
12
- overflow: hidden;
13
- transition: opacity var(--ina-transition-base);
14
- }
15
-
16
- .ina-progress-bar--hidden {
17
- opacity: 0;
18
- visibility: hidden;
19
- }
20
-
21
- /* Height variants */
22
- .ina-progress-bar--height-sm {
23
- height: 2px;
24
- }
25
-
26
- .ina-progress-bar--height-md {
27
- height: 4px;
28
- }
29
-
30
- .ina-progress-bar--height-lg {
31
- height: 6px;
32
- }
33
-
34
- /* Progress fill */
35
- .ina-progress-bar__fill {
36
- position: absolute;
37
- top: 0;
38
- left: 0;
39
- height: 100%;
40
- width: 0%;
41
- border-radius: inherit;
42
- transition: width var(--ina-transition-duration-1000) ease-out;
43
- background-color: var(--ina-primary-500);
44
- }
45
-
46
- /* Variant colors */
47
- .ina-progress-bar__fill--primary {
48
- background-color: var(--ina-primary-500);
49
- }
50
-
51
- .ina-progress-bar__fill--secondary {
52
- background-color: var(--ina-neutral-500);
53
- }
54
-
55
- .ina-progress-bar__fill--success {
56
- background-color: var(--ina-positive-500);
57
- }
58
-
59
- .ina-progress-bar__fill--warning {
60
- background-color: var(--ina-warning-500);
61
- }
62
-
63
- .ina-progress-bar__fill--error {
64
- background-color: var(--ina-negative-500);
65
- }
66
-
67
- /* Shimmer effect */
68
- .ina-progress-bar__shimmer {
69
- position: absolute;
70
- top: 0;
71
- left: 0;
72
- height: 100%;
73
- width: 100%;
74
- background: linear-gradient(
75
- 90deg,
76
- transparent,
77
- rgba(255, 255, 255, 0.3),
78
- transparent
79
- );
80
- animation: shimmer 2s infinite linear;
81
- opacity: 0;
82
- transition: opacity var(--ina-transition-base);
83
- }
84
-
85
- .ina-progress-bar--shimmer .ina-progress-bar__shimmer {
86
- opacity: 1;
87
- }
88
-
89
- @keyframes shimmer {
90
- 0% {
91
- transform: translateX(-100%);
92
- }
93
- 100% {
94
- transform: translateX(100%);
95
- }
96
- }
97
-
98
- /* Animated indicator */
99
- .ina-progress-bar__indicator {
100
- position: absolute;
101
- top: 0;
102
- height: 100%;
103
- width: 32px;
104
- border-radius: inherit;
105
- opacity: 0.8;
106
- transform: translateX(-100%);
107
- transition: left var(--ina-transition-duration-1000) ease-out;
108
- animation: pulse 1.5s infinite;
109
- }
110
-
111
- .ina-progress-bar__indicator--primary {
112
- background-color: var(--ina-primary-500);
113
- }
114
-
115
- .ina-progress-bar__indicator--secondary {
116
- background-color: var(--ina-neutral-500);
117
- }
118
-
119
- .ina-progress-bar__indicator--success {
120
- background-color: var(--ina-positive-500);
121
- }
122
-
123
- .ina-progress-bar__indicator--warning {
124
- background-color: var(--ina-warning-500);
125
- }
126
-
127
- .ina-progress-bar__indicator--error {
128
- background-color: var(--ina-negative-500);
129
- }
130
-
131
- @keyframes pulse {
132
- 0%,
133
- 100% {
134
- opacity: 0.8;
135
- }
136
- 50% {
137
- opacity: 0.6;
138
- }
139
- }
140
-
141
- /* Striped variant */
142
- .ina-progress-bar__fill--striped {
143
- background-image: linear-gradient(
144
- 45deg,
145
- rgba(255, 255, 255, 0.15) 25%,
146
- transparent 25%,
147
- transparent 50%,
148
- rgba(255, 255, 255, 0.15) 50%,
149
- rgba(255, 255, 255, 0.15) 75%,
150
- transparent 75%,
151
- transparent
152
- );
153
- background-size: 20px 20px;
154
- animation: moveStripes 1s linear infinite;
155
- }
156
-
157
- @keyframes moveStripes {
158
- 0% {
159
- background-position: 0 0;
160
- }
161
- 100% {
162
- background-position: 20px 0;
163
- }
164
- }
165
-
166
- /* Size variants with more height options */
167
- .ina-progress-bar--height-xs {
168
- height: 1px;
169
- }
170
-
171
- .ina-progress-bar--height-xl {
172
- height: 8px;
173
- }
174
-
175
- .ina-progress-bar--height-2xl {
176
- height: 12px;
177
- }
178
-
179
- /* Custom duration variants */
180
- .ina-progress-bar--duration-fast .ina-progress-bar__fill {
181
- transition-duration: var(--ina-transition-duration-200);
182
- }
183
-
184
- .ina-progress-bar--duration-medium .ina-progress-bar__fill {
185
- transition-duration: var(--ina-transition-duration-500);
186
- }
187
-
188
- .ina-progress-bar--duration-slow .ina-progress-bar__fill {
189
- transition-duration: var(--ina-transition-duration-2000);
190
- }
191
-
192
- /* Loading state animation */
193
- .ina-progress-bar--loading {
194
- animation: indeterminate 2s infinite linear;
195
- }
196
-
197
- .ina-progress-bar--loading .ina-progress-bar__fill {
198
- position: relative;
199
- width: 30%;
200
- background: linear-gradient(
201
- 90deg,
202
- var(--ina-primary-500) 0%,
203
- var(--ina-primary-400) 50%,
204
- var(--ina-primary-500) 100%
205
- );
206
- background-size: 200% 100%;
207
- animation: loading-shift 1s infinite linear;
208
- }
209
-
210
- @keyframes indeterminate {
211
- 0% {
212
- transform: translateX(-100%);
213
- }
214
- 100% {
215
- transform: translateX(400%);
216
- }
217
- }
218
-
219
- @keyframes loading-shift {
220
- 0% {
221
- background-position: 200% 0;
222
- }
223
- 100% {
224
- background-position: -200% 0;
225
- }
226
- }
227
-
228
- /* Gradient variants */
229
- .ina-progress-bar__fill--gradient-primary {
230
- background: linear-gradient(
231
- 90deg,
232
- var(--ina-primary-400),
233
- var(--ina-primary-500),
234
- var(--ina-primary-600)
235
- );
236
- }
237
-
238
- .ina-progress-bar__fill--gradient-success {
239
- background: linear-gradient(
240
- 90deg,
241
- var(--ina-positive-400),
242
- var(--ina-positive-500),
243
- var(--ina-positive-600)
244
- );
245
- }
246
-
247
- .ina-progress-bar__fill--gradient-warning {
248
- background: linear-gradient(
249
- 90deg,
250
- var(--ina-warning-400),
251
- var(--ina-warning-500),
252
- var(--ina-warning-600)
253
- );
254
- }
255
-
256
- .ina-progress-bar__fill--gradient-error {
257
- background: linear-gradient(
258
- 90deg,
259
- var(--ina-negative-400),
260
- var(--ina-negative-500),
261
- var(--ina-negative-600)
262
- );
263
- }
264
-
265
- /* Status-based styling */
266
- .ina-progress-bar__fill--complete {
267
- background-color: var(--ina-positive-500);
268
- }
269
-
270
- .ina-progress-bar__fill--in-progress {
271
- animation: breathing 2s infinite ease-in-out;
272
- }
273
-
274
- @keyframes breathing {
275
- 0%,
276
- 100% {
277
- opacity: 1;
278
- }
279
- 50% {
280
- opacity: 0.8;
281
- }
282
- }
283
-
284
- /* Circular variant */
285
- .ina-progress-bar--circular {
286
- width: 120px;
287
- height: 120px;
288
- border-radius: 50%;
289
- background: conic-gradient(
290
- var(--ina-primary-500) 0deg,
291
- var(--ina-neutral-200) 0deg
292
- );
293
- display: flex;
294
- align-items: center;
295
- justify-content: center;
296
- position: relative;
297
- }
298
-
299
- .ina-progress-bar--circular .ina-progress-bar__fill {
300
- display: none;
301
- }
302
-
303
- .ina-progress-bar__circular-content {
304
- position: absolute;
305
- inset: 20%;
306
- background-color: var(--ina-background-primary);
307
- border-radius: 50%;
308
- display: flex;
309
- align-items: center;
310
- justify-content: center;
311
- font-size: var(--ina-font-xs);
312
- font-weight: var(--ina-font-medium);
313
- color: var(--ina-content-primary);
314
- }
315
-
316
- /* Progress label */
317
- .ina-progress-bar__label {
318
- position: absolute;
319
- top: 50%;
320
- left: 50%;
321
- transform: translate(-50%, -50%);
322
- font-size: var(--ina-font-xs);
323
- font-weight: var(--ina-font-medium);
324
- color: var(--ina-content-primary);
325
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
326
- }
327
-
328
- /* Skeleton variant */
329
- .ina-progress-bar--skeleton {
330
- background: linear-gradient(
331
- 90deg,
332
- var(--ina-neutral-200) 25%,
333
- var(--ina-neutral-300) 50%,
334
- var(--ina-neutral-200) 75%
335
- );
336
- background-size: 200% 100%;
337
- animation: skeleton 1.5s infinite ease-out;
338
- }
339
-
340
- .ina-progress-bar--skeleton .ina-progress-bar__fill {
341
- display: none;
342
- }
343
-
344
- @keyframes skeleton {
345
- 0% {
346
- background-position: 200% 0;
347
- }
348
- 100% {
349
- background-position: -200% 0;
350
- }
351
- }
352
-
353
- /* Dark mode support */
354
- /* @media (prefers-color-scheme: dark) {
355
- .ina-progress-bar {
356
- background-color: var(--ina-neutral-700);
357
- }
358
-
359
- .ina-progress-bar__fill--primary {
360
- background-color: var(--ina-primary-400);
361
- }
362
-
363
- .ina-progress-bar__fill--secondary {
364
- background-color: var(--ina-neutral-400);
365
- }
366
-
367
- .ina-progress-bar__fill--success {
368
- background-color: var(--ina-positive-400);
369
- }
370
-
371
- .ina-progress-bar__fill--warning {
372
- background-color: var(--ina-warning-400);
373
- }
374
-
375
- .ina-progress-bar__fill--error {
376
- background-color: var(--ina-negative-400);
377
- }
378
-
379
- .ina-progress-bar__shimmer {
380
- background: linear-gradient(
381
- 90deg,
382
- transparent,
383
- rgba(255, 255, 255, 0.1),
384
- transparent
385
- );
386
- }
387
-
388
- .ina-progress-bar__circular-content {
389
- background-color: var(--ina-background-dark-primary);
390
- color: var(--ina-content-dark-primary);
391
- }
392
-
393
- .ina-progress-bar__label {
394
- color: var(--ina-content-dark-primary);
395
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.8);
396
- }
397
-
398
- .ina-progress-bar--skeleton {
399
- background: linear-gradient(
400
- 90deg,
401
- var(--ina-neutral-700) 25%,
402
- var(--ina-neutral-600) 50%,
403
- var(--ina-neutral-700) 75%
404
- );
405
- }
406
- } */
407
-
408
- /* Responsive adjustments */
409
- @media (max-width: 640px) {
410
- .ina-progress-bar--circular {
411
- width: 80px;
412
- height: 80px;
413
- }
414
-
415
- .ina-progress-bar__circular-content {
416
- font-size: var(--ina-font-xs);
417
- }
418
- }
419
-
420
- /* Accessibility improvements */
421
- .ina-progress-bar[aria-hidden='true'] {
422
- visibility: hidden;
423
- }
424
-
425
- /* High contrast mode */
426
- @media (prefers-contrast: high) {
427
- .ina-progress-bar {
428
- border: 1px solid var(--ina-content-primary);
429
- }
430
-
431
- .ina-progress-bar__fill {
432
- border: 1px solid var(--ina-background-primary);
433
- }
434
- }
435
-
436
- /* Reduced motion */
437
- @media (prefers-reduced-motion: reduce) {
438
- .ina-progress-bar__fill,
439
- .ina-progress-bar__indicator,
440
- .ina-progress-bar__shimmer,
441
- .ina-progress-bar--skeleton,
442
- .ina-progress-bar--loading,
443
- .ina-progress-bar--loading .ina-progress-bar__fill {
444
- animation: none;
445
- transition: none;
446
- }
447
- }
@@ -1,277 +0,0 @@
1
- /**
2
- * RadioInput Component Styles
3
- * Menggunakan BEM naming convention dengan prefix "ina-"
4
- */
5
-
6
- .ina-radio-input {
7
- /* Base container styling */
8
- display: flex;
9
- flex-direction: column;
10
- gap: var(--ina-spacing-2);
11
- }
12
-
13
- /* Label styling */
14
- .ina-radio-input__main-label {
15
- display: block;
16
- font-size: var(--ina-font-sm);
17
- color: var(--ina-content-color-181717);
18
- font-weight: var(--ina-font-medium);
19
- }
20
-
21
- /* Radio group container */
22
- .ina-radio-input__group {
23
- display: flex;
24
- flex-direction: column;
25
- gap: var(--ina-spacing-2);
26
- }
27
-
28
- /* Individual radio option */
29
- .ina-radio-input__option {
30
- display: flex;
31
- align-items: center;
32
- gap: var(--ina-spacing-2);
33
- cursor: pointer;
34
- transition: background-color var(--ina-transition-base);
35
- padding: var(--ina-spacing-2);
36
- border-radius: var(--ina-radius-md);
37
- }
38
-
39
- .ina-radio-input__option:hover {
40
- background-color: var(--ina-neutral-50);
41
- }
42
-
43
- .ina-radio-input__option--disabled {
44
- cursor: not-allowed;
45
- }
46
-
47
- .ina-radio-input__option--disabled:hover {
48
- background-color: transparent;
49
- }
50
-
51
- /* Radio input field - Default styling */
52
- .ina-radio-input__field {
53
- appearance: none;
54
- width: 20px;
55
- height: 20px;
56
- border: 1px solid var(--ina-stroke-tertiary, #141414);
57
- border-radius: 50%;
58
- background-color: var(--ina-background-primary, var(--ina-neutral-25));
59
- cursor: pointer;
60
- position: relative;
61
- transition: all var(--ina-transition-base);
62
- flex-shrink: 0;
63
- }
64
-
65
- /* Hover state - Add drop shadow */
66
- .ina-radio-input__field:hover:not(:disabled) {
67
- filter: drop-shadow(0 0 3px #737373);
68
- }
69
-
70
- /* Focus state - Add drop shadow */
71
- .ina-radio-input__field:focus-visible:not(:disabled) {
72
- filter: drop-shadow(0 0 3px #737373);
73
- }
74
-
75
- /* Active state - Add drop shadow */
76
- .ina-radio-input__field:active:not(:disabled) {
77
- filter: drop-shadow(0 0 3px #737373);
78
- }
79
-
80
- /* Selected state */
81
- .ina-radio-input__field:checked {
82
- border-color: var(--ina-stroke-tertiary, #141414);
83
- background-color: var(--ina-background-primary, var(--ina-neutral-25));
84
- }
85
-
86
- .ina-radio-input__field:checked::after {
87
- content: '';
88
- position: absolute;
89
- top: 50%;
90
- left: 50%;
91
- transform: translate(-50%, -50%);
92
- width: 11px;
93
- height: 11px;
94
- border-radius: 50%;
95
- background-color: var(--ina-stroke-tertiary, #141414);
96
- }
97
-
98
- /* Checked + Hover/Focus/Active - Keep drop shadow */
99
- .ina-radio-input__field:checked:hover:not(:disabled),
100
- .ina-radio-input__field:checked:focus-visible:not(:disabled),
101
- .ina-radio-input__field:checked:active:not(:disabled) {
102
- filter: drop-shadow(0 0 3px #737373);
103
- }
104
-
105
- /* Disabled states */
106
- .ina-radio-input__field:disabled {
107
- border-color: var(--ina-neutral-200, #e5e5e5);
108
- background-color: var(--ina-background-secondary, var(--ina-neutral-50));
109
- cursor: not-allowed;
110
- opacity: 1;
111
- filter: none;
112
- }
113
-
114
- /* Disabled + Checked state - Higher specificity */
115
- .ina-radio-input__field:disabled:checked {
116
- border-color: var(--ina-neutral-200, #e5e5e5) !important;
117
- background-color: var(
118
- --ina-background-secondary,
119
- var(--ina-neutral-50)
120
- ) !important;
121
- filter: none;
122
- }
123
-
124
- .ina-radio-input__field:disabled:checked::after {
125
- content: '' !important;
126
- position: absolute;
127
- top: 50%;
128
- left: 50%;
129
- transform: translate(-50%, -50%);
130
- width: 11px;
131
- height: 11px;
132
- border-radius: 50%;
133
- background-color: var(--ina-neutral-200, #e5e5e5);
134
- }
135
-
136
- /* Radio option label */
137
- .ina-radio-input__option-label {
138
- font-size: var(--ina-font-sm);
139
- color: #000000;
140
- cursor: pointer;
141
- user-select: none;
142
- flex: 1;
143
- line-height: 1.5;
144
- }
145
-
146
- .ina-radio-input__option-label--disabled {
147
- cursor: not-allowed;
148
- }
149
-
150
- /* Size variants */
151
- /* .ina-radio-input--size-sm .ina-radio-input__main-label {
152
- font-size: var(--ina-font-xs);
153
- }
154
-
155
- .ina-radio-input--size-sm .ina-radio-input__option-label {
156
- font-size: var(--ina-font-xs);
157
- }
158
-
159
- .ina-radio-input--size-sm .ina-radio-input__field {
160
- width: 16px;
161
- height: 16px;
162
- } */
163
-
164
- /* .ina-radio-input--size-lg .ina-radio-input__main-label {
165
- font-size: var(--ina-font-base);
166
- }
167
-
168
- .ina-radio-input--size-lg .ina-radio-input__option-label {
169
- font-size: var(--ina-font-base);
170
- }
171
-
172
- .ina-radio-input--size-lg .ina-radio-input__field {
173
- width: 24px;
174
- height: 24px;
175
- } */
176
-
177
- /* Orientation variants */
178
- .ina-radio-input--orientation-horizontal .ina-radio-input__group {
179
- flex-direction: row;
180
- flex-wrap: wrap;
181
- gap: var(--ina-spacing-4);
182
- align-items: center;
183
- }
184
-
185
- /* Status variants */
186
- .ina-radio-input__main-label--required::after {
187
- content: '*';
188
- color: var(--ina-danger-5);
189
- margin-left: var(--ina-spacing-1);
190
- }
191
-
192
- /* Focus indicators */
193
- .ina-radio-input__field:focus-visible {
194
- outline: 2px solid var(--ina-stroke-tertiary, #141414);
195
- outline-offset: 2px;
196
- }
197
-
198
- /* Error state */
199
- .ina-radio-input--error .ina-radio-input__main-label {
200
- color: #dc2626;
201
- }
202
-
203
- .ina-radio-input--error .ina-radio-input__field {
204
- border-color: #dc2626;
205
- }
206
-
207
- .ina-radio-input--error .ina-radio-input__field:focus-visible {
208
- outline-color: #dc2626;
209
- }
210
-
211
- /* Loading state */
212
- .ina-radio-input--loading .ina-radio-input__option {
213
- cursor: not-allowed;
214
- }
215
-
216
- .ina-radio-input--loading .ina-radio-input__field {
217
- cursor: not-allowed;
218
- }
219
-
220
- /* Help text */
221
- .ina-radio-input__help-text {
222
- font-size: var(--ina-font-xs);
223
- color: #666666;
224
- margin-top: var(--ina-spacing-1);
225
- }
226
-
227
- .ina-radio-input__help-text--error {
228
- color: #dc2626;
229
- }
230
-
231
- /* Responsive adjustments */
232
- @media (max-width: 640px) {
233
- .ina-radio-input__main-label {
234
- font-size: var(--ina-font-xs); /* Turun dari sm ke xs */
235
- }
236
-
237
- .ina-radio-input__option-label {
238
- font-size: var(--ina-font-xs); /* Turun dari sm ke xs */
239
- }
240
-
241
- .ina-radio-input__help-text {
242
- font-size: var(--ina-font-xs); /* Tetap xs */
243
- }
244
-
245
- .ina-radio-input--orientation-horizontal .ina-radio-input__group {
246
- flex-direction: column;
247
- gap: var(--ina-spacing-2);
248
- }
249
- }
250
-
251
- /* Dark mode support - handled by CSS variables in css-variables.css */
252
-
253
- /* Accessibility improvements */
254
- .ina-radio-input__field + .ina-radio-input__option-label {
255
- /* Improve tap target size for touch devices */
256
- padding: var(--ina-spacing-1) var(--ina-spacing-2);
257
- margin: calc(var(--ina-spacing-1) * -1) calc(var(--ina-spacing-2) * -1);
258
- }
259
-
260
- /* High contrast mode */
261
- @media (prefers-contrast: high) {
262
- .ina-radio-input__field {
263
- border-width: 3px;
264
- }
265
-
266
- .ina-radio-input__field:checked {
267
- border-width: 3px;
268
- }
269
- }
270
-
271
- /* Reduced motion */
272
- @media (prefers-reduced-motion: reduce) {
273
- .ina-radio-input__option,
274
- .ina-radio-input__field {
275
- transition: none;
276
- }
277
- }