@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,412 @@
1
+ /**
2
+ * PhoneInput Component Styles
3
+ * Menggunakan BEM naming convention dengan prefix "ina-"
4
+ */
5
+
6
+ .ina-phone-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-phone-input__label {
15
+ display: block;
16
+ font-size: var(--ina-font-sm);
17
+ color: var(--ina-content-secondary);
18
+ font-weight: var(--ina-font-medium);
19
+ }
20
+
21
+ .ina-phone-input__label--required .ina-phone-input__asterisk {
22
+ color: var(--ina-error-500);
23
+ margin-left: var(--ina-spacing-1);
24
+ }
25
+
26
+ /* Input wrapper */
27
+ .ina-phone-input__wrapper {
28
+ position: relative;
29
+ display: flex;
30
+ width: 100%;
31
+ align-items: center;
32
+ border-radius: var(--ina-radius-xl);
33
+ border: 1px solid var(--ina-border-ededed);
34
+ background-color: var(--ina-background-white);
35
+ padding: 14px var(--ina-spacing-3);
36
+ transition: border-color var(--ina-transition-duration-200),
37
+ box-shadow var(--ina-transition-duration-200);
38
+ }
39
+
40
+ .ina-phone-input__wrapper--focused {
41
+ border-color: var(--ina-primary-blue-500);
42
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.1); /* ring-2 equivalent */
43
+ }
44
+
45
+ .ina-phone-input__wrapper--error {
46
+ border-color: var(--ina-negative-500);
47
+ }
48
+
49
+ .ina-phone-input__wrapper--error:focus-within {
50
+ border-color: var(--ina-negative-500);
51
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2);
52
+ }
53
+
54
+ .ina-phone-input__wrapper--disabled {
55
+ background-color: var(--ina-neutral-100);
56
+ border-color: var(--ina-neutral-300);
57
+ opacity: 0.6;
58
+ cursor: not-allowed;
59
+ }
60
+
61
+ /* Country code prefix */
62
+ .ina-phone-input__country-code {
63
+ white-space: nowrap;
64
+ margin-right: var(--ina-spacing-3);
65
+ display: flex;
66
+ align-items: center;
67
+ border-right: 1px solid var(--ina-tertiary-300);
68
+ padding-right: var(--ina-spacing-3);
69
+ font-size: var(--ina-font-sm);
70
+ font-weight: var(--ina-font-semibold);
71
+ color: var(--ina-tertiary-800);
72
+ flex-shrink: 0;
73
+ }
74
+
75
+ .ina-phone-input__country-code--disabled {
76
+ color: var(--ina-neutral-400);
77
+ }
78
+
79
+ /* Input field */
80
+ .ina-phone-input__input {
81
+ position: specific;
82
+ flex: 1;
83
+ font-size: var(--ina-font-sm);
84
+ color: var(--ina-content-color-181717);
85
+ transition: all var(--ina-transition-duration-200);
86
+ outline: none;
87
+ border: none;
88
+ background: transparent;
89
+ padding: 0;
90
+ }
91
+
92
+ .ina-phone-input__input::placeholder {
93
+ color: var(--ina-content-tertiary);
94
+ }
95
+
96
+ .ina-phone-input__input:focus {
97
+ outline: none;
98
+ }
99
+
100
+ .ina-phone-input__input:disabled {
101
+ cursor: not-allowed;
102
+ color: var(--ina-neutral-400);
103
+ }
104
+
105
+ /* Contact icon */
106
+ .ina-phone-input__contact-icon {
107
+ white-space: nowrap;
108
+ display: flex;
109
+ align-items: center;
110
+ font-size: var(--ina-font-sm);
111
+ font-weight: var(--ina-font-semibold);
112
+ color: var(--ina-tertiary-800);
113
+ margin-left: var(--ina-spacing-2);
114
+ flex-shrink: 0;
115
+ }
116
+
117
+ .ina-phone-input__contact-icon--disabled {
118
+ color: var(--ina-neutral-400);
119
+ }
120
+
121
+ .ina-phone-input__icon {
122
+ width: 20px;
123
+ height: 20px;
124
+ }
125
+
126
+ /* Phone format mask */
127
+ .ina-phone-input__mask {
128
+ position: absolute;
129
+ left: 0;
130
+ top: 0;
131
+ pointer-events: none;
132
+ z-index: 1;
133
+ font-size: var(--ina-font-sm);
134
+ color: var(--ina-content-light-placeholder);
135
+ }
136
+
137
+ /* Example text */
138
+ .ina-phone-input__example {
139
+ font-size: var(--ina-font-sm);
140
+ color: var(--ina-content-secondary);
141
+ margin-top: var(--ina-spacing-1);
142
+ }
143
+
144
+ /* Size variants */
145
+ .ina-phone-input--size-sm .ina-phone-input__wrapper {
146
+ padding: var(--ina-spacing-2) var(--ina-spacing-3);
147
+ }
148
+
149
+ .ina-phone-input--size-sm .ina-phone-input__country-code,
150
+ .ina-phone-input--size-sm .ina-phone-input__input,
151
+ .ina-phone-input--size-sm .ina-phone-input__contact-icon {
152
+ font-size: var(--ina-font-xs);
153
+ }
154
+
155
+ .ina-phone-input--size-sm .ina-phone-input__icon {
156
+ width: 16px;
157
+ height: 16px;
158
+ }
159
+
160
+ .ina-phone-input--size-lg .ina-phone-input__wrapper {
161
+ padding: var(--ina-spacing-4) var(--ina-spacing-5);
162
+ }
163
+
164
+ .ina-phone-input--size-lg .ina-phone-input__country-code,
165
+ .ina-phone-input--size-lg .ina-phone-input__input,
166
+ .ina-phone-input--size-lg .ina-phone-input__contact-icon {
167
+ font-size: var(--ina-font-base);
168
+ }
169
+
170
+ .ina-phone-input--size-lg .ina-phone-input__icon {
171
+ width: 24px;
172
+ height: 24px;
173
+ }
174
+
175
+ /* Variant styles */
176
+ .ina-phone-input--variant-outlined .ina-phone-input__wrapper {
177
+ border-width: 2px;
178
+ }
179
+
180
+ .ina-phone-input--variant-filled .ina-phone-input__wrapper {
181
+ background-color: var(--ina-neutral-100);
182
+ border-color: var(--ina-neutral-200);
183
+ }
184
+
185
+ .ina-phone-input--variant-filled .ina-phone-input__wrapper:focus-within {
186
+ background-color: var(--ina-background-primary);
187
+ border-color: var(--ina-primary-500);
188
+ }
189
+
190
+ /* With floating label */
191
+ .ina-phone-input--floating-label .ina-phone-input__label {
192
+ position: absolute;
193
+ top: 50%;
194
+ left: var(--ina-spacing-4);
195
+ transform: translateY(-50%);
196
+ transition: transform var(--ina-transition-base),
197
+ font-size var(--ina-transition-base), color var(--ina-transition-base);
198
+ background-color: var(--ina-background-primary);
199
+ padding: 0 var(--ina-spacing-1);
200
+ z-index: 10;
201
+ }
202
+
203
+ .ina-phone-input--floating-label.ina-phone-input--focused
204
+ .ina-phone-input__label,
205
+ .ina-phone-input--floating-label.ina-phone-input--has-value
206
+ .ina-phone-input__label {
207
+ transform: translateY(-100%) translateY(-2px);
208
+ font-size: var(--ina-font-xs);
209
+ color: var(--ina-primary-600);
210
+ }
211
+
212
+ .ina-phone-input--floating-label .ina-phone-input__wrapper {
213
+ padding-top: var(--ina-spacing-6);
214
+ }
215
+
216
+ /* Country selector */
217
+ .ina-phone-input__country-selector {
218
+ display: flex;
219
+ align-items: center;
220
+ gap: var(--ina-spacing-2);
221
+ cursor: pointer;
222
+ padding: var(--ina-spacing-1);
223
+ border-radius: var(--ina-radius-base);
224
+ transition: background-color var(--ina-transition-base);
225
+ }
226
+
227
+ .ina-phone-input__country-selector:hover {
228
+ background-color: var(--ina-neutral-100);
229
+ }
230
+
231
+ .ina-phone-input__country-selector--disabled {
232
+ cursor: not-allowed;
233
+ opacity: 0.6;
234
+ }
235
+
236
+ .ina-phone-input__country-flag {
237
+ width: 20px;
238
+ height: 14px;
239
+ border-radius: var(--ina-radius-sm);
240
+ object-fit: cover;
241
+ }
242
+
243
+ .ina-phone-input__country-caret {
244
+ width: 12px;
245
+ height: 12px;
246
+ color: var(--ina-content-secondary);
247
+ transition: transform var(--ina-transition-base);
248
+ }
249
+
250
+ .ina-phone-input__country-selector--open .ina-phone-input__country-caret {
251
+ transform: rotate(180deg);
252
+ }
253
+
254
+ /* Loading state */
255
+ .ina-phone-input--loading .ina-phone-input__wrapper {
256
+ opacity: 0.6;
257
+ cursor: not-allowed;
258
+ }
259
+
260
+ .ina-phone-input--loading .ina-phone-input__input {
261
+ cursor: not-allowed;
262
+ }
263
+
264
+ /* Validation indicators */
265
+ .ina-phone-input__validation-icon {
266
+ width: 16px;
267
+ height: 16px;
268
+ margin-right: var(--ina-spacing-2);
269
+ }
270
+
271
+ .ina-phone-input__validation-icon--valid {
272
+ color: var(--ina-positive-500);
273
+ }
274
+
275
+ .ina-phone-input__validation-icon--invalid {
276
+ color: var(--ina-negative-500);
277
+ }
278
+
279
+ .ina-phone-input__validation-icon--loading {
280
+ color: var(--ina-content-secondary);
281
+ animation: spin 1s linear infinite;
282
+ }
283
+
284
+ @keyframes spin {
285
+ to {
286
+ transform: rotate(360deg);
287
+ }
288
+ }
289
+
290
+ /* Focus ring animation */
291
+ .ina-phone-input__wrapper {
292
+ position: relative;
293
+ }
294
+
295
+ .ina-phone-input__focus-ring {
296
+ position: absolute;
297
+ inset: -2px;
298
+ border-radius: inherit;
299
+ opacity: 0;
300
+ transition: opacity var(--ina-transition-base);
301
+ pointer-events: none;
302
+ }
303
+
304
+ .ina-phone-input__wrapper:focus-within .ina-phone-input__focus-ring {
305
+ opacity: 1;
306
+ }
307
+
308
+ .ina-phone-input__focus-ring--default {
309
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
310
+ }
311
+
312
+ .ina-phone-input__focus-ring--error {
313
+ box-shadow: 0 0 0 2px rgba(239, 68, 68, 0.2);
314
+ }
315
+
316
+ /* Size responsive adjustments */
317
+ @media (max-width: 640px) {
318
+ .ina-phone-input__wrapper {
319
+ padding: var(--ina-spacing-3);
320
+ }
321
+
322
+ .ina-phone-input__country-code {
323
+ margin-right: var(--ina-spacing-2);
324
+ padding-right: var(--ina-spacing-2);
325
+ font-size: var(--ina-font-xs);
326
+ }
327
+
328
+ .ina-phone-input__input {
329
+ font-size: var(--ina-font-base);
330
+ }
331
+
332
+ .ina-phone-input__example {
333
+ font-size: var(--ina-font-xs);
334
+ }
335
+ }
336
+
337
+ /* Dark mode support */
338
+ /* @media (prefers-color-scheme: dark) {
339
+ .ina-phone-input__label {
340
+ color: var(--ina-content-dark-secondary);
341
+ }
342
+
343
+ .ina-phone-input__wrapper {
344
+ background-color: var(--ina-background-dark-primary);
345
+ border-color: var(--ina-stroke-primary-dark);
346
+ }
347
+
348
+ .ina-phone-input__wrapper--focused {
349
+ border-color: var(--ina-primary-400);
350
+ box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3);
351
+ }
352
+
353
+ .ina-phone-input__country-code {
354
+ color: var(--ina-content-dark-secondary);
355
+ border-color: var(--ina-neutral-600);
356
+ }
357
+
358
+ .ina-phone-input__input {
359
+ color: var(--ina-content-dark-primary);
360
+ }
361
+
362
+ .ina-phone-input__input::placeholder {
363
+ color: var(--ina-content-dark-placeholder);
364
+ }
365
+
366
+ .ina-phone-input__contact-icon {
367
+ color: var(--ina-content-dark-secondary);
368
+ }
369
+
370
+ .ina-phone-input__example {
371
+ color: var(--ina-content-dark-secondary);
372
+ }
373
+
374
+ .ina-phone-input--variant-filled .ina-phone-input__wrapper {
375
+ background-color: var(--ina-neutral-900);
376
+ .ina-phone-input__wrapper:focus-within {
377
+ background-color: var(--ina-background-dark-primary);
378
+ border-color: var(--ina-primary-400);
379
+ }
380
+ }
381
+
382
+ .ina-phone-input__country-selector:hover {
383
+ background-color: var(--ina-neutral-800);
384
+ }
385
+ } */
386
+
387
+ /* Accessibility improvements */
388
+ .ina-phone-input__wrapper:focus-within {
389
+ outline: 2px solid var(--ina-primary-500);
390
+ outline-offset: 2px;
391
+ }
392
+
393
+ /* High contrast mode */
394
+ @media (prefers-contrast: high) {
395
+ .ina-phone-input__wrapper {
396
+ border-width: 2px;
397
+ }
398
+
399
+ .ina-phone-input__wrapper:focus-within {
400
+ border-width: 3px;
401
+ }
402
+ }
403
+
404
+ /* Reduced motion */
405
+ @media (prefers-reduced-motion: reduce) {
406
+ .ina-phone-input__wrapper,
407
+ .ina-phone-input__input,
408
+ .ina-phone-input__country-caret,
409
+ .ina-phone-input__focus-ring {
410
+ transition: none;
411
+ }
412
+ }