@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,259 @@
1
+ /* =========================== */
2
+ /* THEME TOGGLE STYLES */
3
+ /* =========================== */
4
+
5
+ .ina-theme-toggle {
6
+ display: inline-flex;
7
+ align-items: center;
8
+ gap: var(--ina-spacing-3);
9
+ }
10
+
11
+ /* Label */
12
+ .ina-theme-toggle__label {
13
+ font-size: var(--ina-font-sm);
14
+ font-weight: var(--ina-font-medium);
15
+ color: var(--ina-text-secondary);
16
+ white-space: nowrap;
17
+ }
18
+
19
+ /* Main Toggle Button */
20
+ .ina-theme-toggle__button {
21
+ position: relative;
22
+ display: inline-flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ border: none;
26
+ background-color: transparent;
27
+ cursor: pointer;
28
+ border-radius: var(--ina-radius-full);
29
+ padding: var(--ina-spacing-2);
30
+ transition: all var(--ina-transition-base);
31
+ }
32
+
33
+ .ina-theme-toggle__button:hover {
34
+ background-color: var(--ina-background-secondary);
35
+ transform: scale(1.05);
36
+ }
37
+
38
+ .ina-theme-toggle__button:active {
39
+ transform: scale(0.95);
40
+ }
41
+
42
+ .ina-theme-toggle__button:focus-visible {
43
+ outline: 2px solid var(--ina-primary-500);
44
+ outline-offset: 2px;
45
+ }
46
+
47
+ /* Icon Container */
48
+ .ina-theme-toggle__icon {
49
+ position: relative;
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: center;
53
+ color: var(--ina-text-secondary);
54
+ transition: all var(--ina-transition-base);
55
+ z-index: 2;
56
+ }
57
+
58
+ /* Icon Colors for Light Mode */
59
+ [data-theme='light'] .ina-theme-toggle__icon {
60
+ color: var(--ina-primary-600);
61
+ }
62
+
63
+ [data-theme='dark'] .ina-theme-toggle__icon {
64
+ color: var(--ina-primary-400);
65
+ }
66
+
67
+ /* Track */
68
+ .ina-theme-toggle__track {
69
+ position: absolute;
70
+ top: 50%;
71
+ left: 50%;
72
+ transform: translate(-50%, -50%);
73
+ width: 24px;
74
+ height: 12px;
75
+ background-color: var(--ina-neutral-300);
76
+ border-radius: var(--ina-radius-full);
77
+ transition: all var(--ina-transition-base);
78
+ z-index: 1;
79
+ }
80
+
81
+ /* Track active state */
82
+ [data-theme='dark'] .ina-theme-toggle__track {
83
+ background-color: var(--ina-primary-500);
84
+ }
85
+
86
+ /* Size variants */
87
+ .ina-theme-toggle--size-sm {
88
+ gap: var(--ina-spacing-2);
89
+ }
90
+
91
+ .ina-theme-toggle--size-sm .ina-theme-toggle__label {
92
+ font-size: var(--ina-font-xs);
93
+ }
94
+
95
+ .ina-theme-toggle--size-sm .ina-theme-toggle__button {
96
+ padding: var(--ina-spacing-1);
97
+ min-width: 32px;
98
+ height: 32px;
99
+ }
100
+
101
+ .ina-theme-toggle--size-sm .ina-theme-toggle__track {
102
+ width: 20px;
103
+ height: 10px;
104
+ }
105
+
106
+ .ina-theme-toggle--size-md .ina-theme-toggle__button {
107
+ padding: var(--ina-spacing-2);
108
+ min-width: 40px;
109
+ height: 40px;
110
+ }
111
+
112
+ .ina-theme-toggle--size-md .ina-theme-toggle__track {
113
+ width: 24px;
114
+ height: 12px;
115
+ }
116
+
117
+ .ina-theme-toggle--size-lg {
118
+ gap: var(--ina-spacing-4);
119
+ }
120
+
121
+ .ina-theme-toggle--size-lg .ina-theme-toggle__label {
122
+ font-size: var(--ina-font-base);
123
+ }
124
+
125
+ .ina-theme-toggle--size-lg .ina-theme-toggle__button {
126
+ padding: var(--ina-spacing-3);
127
+ min-width: 48px;
128
+ height: 48px;
129
+ }
130
+
131
+ .ina-theme-toggle--size-lg .ina-theme-toggle__track {
132
+ width: 28px;
133
+ height: 14px;
134
+ }
135
+
136
+ /* Responsive adjustments */
137
+ @media (max-width: 640px) {
138
+ .ina-theme-toggle__label {
139
+ font-size: var(--ina-font-xs); /* Turun dari sm ke xs */
140
+ }
141
+
142
+ .ina-theme-toggle--size-sm .ina-theme-toggle__label {
143
+ font-size: var(--ina-font-xs); /* Tetap xs */
144
+ }
145
+
146
+ .ina-theme-toggle--size-lg .ina-theme-toggle__label {
147
+ font-size: var(--ina-font-sm); /* Turun dari base ke sm */
148
+ }
149
+ }
150
+
151
+ /* Animation for icon rotation */
152
+ .ina-theme-toggle__icon {
153
+ animation: none;
154
+ }
155
+
156
+ [data-theme='light'] .ina-theme-toggle__icon:last-child {
157
+ animation: rotate-in 0.3s ease-out;
158
+ }
159
+
160
+ [data-theme='dark'] .ina-theme-toggle__icon:first-child {
161
+ animation: rotate-out 0.3s ease-out;
162
+ }
163
+
164
+ /* Keyframes */
165
+ @keyframes rotate-in {
166
+ from {
167
+ opacity: 0;
168
+ transform: rotate(-90deg);
169
+ }
170
+ to {
171
+ opacity: 1;
172
+ transform: rotate(0deg);
173
+ }
174
+ }
175
+
176
+ @keyframes rotate-out {
177
+ from {
178
+ opacity: 0;
179
+ transform: rotate(90deg);
180
+ }
181
+ to {
182
+ opacity: 1;
183
+ transform: rotate(0deg);
184
+ }
185
+ }
186
+
187
+ /* Hover effects */
188
+ .ina-theme-toggle__button:hover .ina-theme-toggle__icon {
189
+ color: var(--ina-content-primary);
190
+ }
191
+
192
+ [data-theme='light'] .ina-theme-toggle__button:hover .ina-theme-toggle__icon {
193
+ color: var(--ina-primary-500);
194
+ }
195
+
196
+ [data-theme='dark'] .ina-theme-toggle__button:hover .ina-theme-toggle__icon {
197
+ color: var(--ina-primary-300);
198
+ }
199
+
200
+ /* Disabled state */
201
+ .ina-theme-toggle--disabled .ina-theme-toggle__button {
202
+ cursor: not-allowed;
203
+ opacity: 0.5;
204
+ }
205
+
206
+ .ina-theme-toggle--disabled .ina-theme-toggle__button:hover {
207
+ background-color: transparent;
208
+ transform: none;
209
+ }
210
+
211
+ .ina-theme-toggle--disabled .ina-theme-toggle__icon {
212
+ color: var(--ina-content-tertiary);
213
+ }
214
+
215
+ /* Accessible focus ring */
216
+ .ina-theme-toggle__button:focus-visible {
217
+ box-shadow: 0 0 0 2px var(--ina-background-primary),
218
+ 0 0 0 4px var(--ina-primary-500);
219
+ }
220
+
221
+ /* High contrast mode */
222
+ @media (prefers-contrast: high) {
223
+ .ina-theme-toggle__button {
224
+ border: 2px solid var(--ina-stroke-primary);
225
+ }
226
+
227
+ .ina-theme-toggle__track {
228
+ border: 1px solid var(--ina-stroke-primary);
229
+ }
230
+
231
+ .ina-theme-toggle__button:focus-visible {
232
+ outline-width: 3px;
233
+ }
234
+ }
235
+
236
+ /* Reduced motion */
237
+ @media (prefers-reduced-motion: reduce) {
238
+ .ina-theme-toggle__button,
239
+ .ina-theme-toggle__icon {
240
+ transition: none;
241
+ }
242
+
243
+ .ina-theme-toggle__icon {
244
+ animation: none;
245
+ }
246
+ }
247
+
248
+ /* Dark mode specific adjustments */
249
+ [data-theme='dark'] .ina-theme-toggle {
250
+ /* Ensure proper contrast in dark mode */
251
+ }
252
+
253
+ [data-theme='dark'] .ina-theme-toggle__label {
254
+ color: var(--ina-text-secondary);
255
+ }
256
+
257
+ [data-theme='dark'] .ina-theme-toggle__button:hover {
258
+ background-color: var(--ina-background-secondary);
259
+ }
@@ -0,0 +1,436 @@
1
+ /* =========================== */
2
+ /* TIME PICKER STYLES */
3
+ /* =========================== */
4
+
5
+ .ina-time-picker {
6
+ position: relative;
7
+ display: inline-block;
8
+ background-color: inherit;
9
+ }
10
+
11
+ /* Wrapper */
12
+ .ina-time-picker__wrapper {
13
+ position: relative;
14
+ display: flex;
15
+ align-items: center;
16
+ background-color: var(--ina-background-primary);
17
+ border: 1px solid var(--ina-stroke-primary);
18
+ border-radius: var(--ina-radius-lg);
19
+ transition: all var(--ina-transition-base);
20
+ }
21
+
22
+ /* Size variants */
23
+ .ina-time-picker--size-sm .ina-time-picker__wrapper {
24
+ /* Desktop >= 768px */
25
+ height: 40px;
26
+ }
27
+
28
+ .ina-time-picker--size-md .ina-time-picker__wrapper {
29
+ /* Desktop >= 768px */
30
+ height: 44px;
31
+ }
32
+
33
+ .ina-time-picker--size-lg .ina-time-picker__wrapper {
34
+ /* Desktop >= 768px */
35
+ height: 48px;
36
+ }
37
+
38
+ /* Responsive adjustments */
39
+ @media (max-width: 767px) {
40
+ .ina-time-picker--size-sm .ina-time-picker__wrapper {
41
+ height: 36px;
42
+ }
43
+
44
+ .ina-time-picker--size-md .ina-time-picker__wrapper {
45
+ height: 40px;
46
+ }
47
+
48
+ .ina-time-picker--size-lg .ina-time-picker__wrapper {
49
+ height: 44px;
50
+ }
51
+ }
52
+
53
+ @media (max-width: 639px) {
54
+ .ina-time-picker--size-sm .ina-time-picker__wrapper {
55
+ height: 32px;
56
+ }
57
+
58
+ .ina-time-picker--size-md .ina-time-picker__wrapper {
59
+ height: 36px;
60
+ }
61
+
62
+ .ina-time-picker--size-lg .ina-time-picker__wrapper {
63
+ height: 40px;
64
+ }
65
+ }
66
+
67
+ .ina-time-picker__wrapper:hover {
68
+ border-color: var(--ina-stroke-secondary);
69
+ }
70
+
71
+ .ina-time-picker--open .ina-time-picker__wrapper {
72
+ border-color: var(--ina-primary-500);
73
+ box-shadow: 0 0 0 2px var(--ina-primary-50);
74
+ }
75
+
76
+ /* Input */
77
+ .ina-time-picker__input {
78
+ width: 100%;
79
+ border: none;
80
+ outline: none;
81
+ background-color: transparent;
82
+ color: var(--ina-content-primary);
83
+ font-size: var(--ina-font-sm);
84
+ font-weight: var(--ina-font-normal);
85
+ line-height: var(--ina-line-height-sm);
86
+ transition: all var(--ina-transition-base);
87
+ }
88
+
89
+ .ina-time-picker__input::placeholder {
90
+ color: var(--ina-content-tertiary);
91
+ }
92
+
93
+ .ina-time-picker__input:focus {
94
+ outline: none;
95
+ }
96
+
97
+ /* Prefix and Suffix Icons */
98
+ .ina-time-picker__prefix-icon,
99
+ .ina-time-picker__suffix-icon {
100
+ display: flex;
101
+ align-items: center;
102
+ justify-content: center;
103
+ color: var(--ina-text-secondary);
104
+ pointer-events: none;
105
+ }
106
+
107
+ .ina-time-picker__suffix-icon {
108
+ cursor: pointer;
109
+ pointer-events: all;
110
+ }
111
+
112
+ /* Clear Button */
113
+ .ina-time-picker__clear-button {
114
+ display: flex;
115
+ align-items: center;
116
+ justify-content: center;
117
+ width: 16px;
118
+ height: 16px;
119
+ border: none;
120
+ background-color: var(--ina-background-secondary);
121
+ color: var(--ina-text-secondary);
122
+ cursor: pointer;
123
+ border-radius: var(--ina-radius-full);
124
+ font-size: 12px;
125
+ font-weight: var(--ina-font-medium);
126
+ transition: all var(--ina-transition-fast);
127
+ }
128
+
129
+ .ina-time-picker__clear-button:hover {
130
+ background-color: var(--ina-background-tertiary);
131
+ color: var(--ina-content-primary);
132
+ }
133
+
134
+ /* Size Variants */
135
+ .ina-time-picker--size-sm .ina-time-picker__wrapper {
136
+ padding: var(--ina-spacing-1) var(--ina-spacing-2);
137
+ min-height: 32px;
138
+ }
139
+
140
+ .ina-time-picker--size-sm .ina-time-picker__input {
141
+ font-size: var(--ina-font-xs);
142
+ padding: 0 var(--ina-spacing-1);
143
+ }
144
+
145
+ .ina-time-picker--size-sm .ina-time-picker__prefix-icon,
146
+ .ina-time-picker--size-sm .ina-time-picker__suffix-icon {
147
+ margin: 0 var(--ina-spacing-1);
148
+ }
149
+
150
+ .ina-time-picker--size-md .ina-time-picker__wrapper {
151
+ padding: var(--ina-spacing-2) var(--ina-spacing-3);
152
+ min-height: 40px;
153
+ }
154
+
155
+ .ina-time-picker--size-md .ina-time-picker__input {
156
+ font-size: var(--ina-font-sm);
157
+ padding: 0 var(--ina-spacing-1);
158
+ }
159
+
160
+ .ina-time-picker--size-md .ina-time-picker__prefix-icon,
161
+ .ina-time-picker--size-md .ina-time-picker__suffix-icon {
162
+ margin: 0 var(--ina-spacing-1);
163
+ }
164
+
165
+ .ina-time-picker--size-lg .ina-time-picker__wrapper {
166
+ padding: var(--ina-spacing-3) var(--ina-spacing-4);
167
+ min-height: 48px;
168
+ }
169
+
170
+ .ina-time-picker--size-lg .ina-time-picker__input {
171
+ font-size: var(--ina-font-base);
172
+ padding: 0 var(--ina-spacing-2);
173
+ }
174
+
175
+ .ina-time-picker--size-lg .ina-time-picker__prefix-icon,
176
+ .ina-time-picker--size-lg .ina-time-picker__suffix-icon {
177
+ margin: 0 var(--ina-spacing-2);
178
+ }
179
+
180
+ /* Status Variants */
181
+ .ina-time-picker--status-error .ina-time-picker__wrapper {
182
+ border-color: var(--ina-error-500);
183
+ }
184
+
185
+ .ina-time-picker--status-error.ina-time-picker--open .ina-time-picker__wrapper {
186
+ box-shadow: 0 0 0 2px var(--ina-error-50);
187
+ }
188
+
189
+ .ina-time-picker--status-warning .ina-time-picker__wrapper {
190
+ border-color: var(--ina-warning-500);
191
+ }
192
+
193
+ .ina-time-picker--status-warning.ina-time-picker--open
194
+ .ina-time-picker__wrapper {
195
+ box-shadow: 0 0 0 2px var(--ina-warning-50);
196
+ }
197
+
198
+ .ina-time-picker--status-success .ina-time-picker__wrapper {
199
+ border-color: var(--ina-success-500);
200
+ }
201
+
202
+ .ina-time-picker--status-success.ina-time-picker--open
203
+ .ina-time-picker__wrapper {
204
+ box-shadow: 0 0 0 2px var(--ina-success-50);
205
+ }
206
+
207
+ /* Disabled State */
208
+ .ina-time-picker--disabled .ina-time-picker__wrapper {
209
+ background-color: var(--ina-background-secondary);
210
+ border-color: var(--ina-stroke-primary);
211
+ cursor: not-allowed;
212
+ }
213
+
214
+ .ina-time-picker--disabled .ina-time-picker__input {
215
+ cursor: not-allowed;
216
+ opacity: 0.6;
217
+ }
218
+
219
+ .ina-time-picker--disabled .ina-time-picker__suffix-icon {
220
+ cursor: not-allowed;
221
+ }
222
+
223
+ /* Panel */
224
+ .ina-time-picker__panel {
225
+ position: absolute;
226
+ top: 100%;
227
+ left: 0;
228
+ right: 0;
229
+ z-index: 1000;
230
+ background-color: var(--ina-background-primary);
231
+ border: 1px solid var(--ina-stroke-primary);
232
+ border-radius: var(--ina-radius-lg);
233
+ box-shadow: var(--ina-shadow-lg);
234
+ margin-top: var(--ina-spacing-2);
235
+ min-width: 200px;
236
+ overflow: hidden;
237
+ animation: time-picker-fade-in 0.15s ease-out;
238
+ }
239
+
240
+ @keyframes time-picker-fade-in {
241
+ from {
242
+ opacity: 0;
243
+ transform: translateY(-4px);
244
+ }
245
+ to {
246
+ opacity: 1;
247
+ transform: translateY(0);
248
+ }
249
+ }
250
+
251
+ /* Panel Content */
252
+ .ina-time-picker__content {
253
+ display: flex;
254
+ max-height: 200px;
255
+ overflow: hidden;
256
+ }
257
+
258
+ /* Columns */
259
+ .ina-time-picker__column {
260
+ flex: 1;
261
+ border-right: 1px solid var(--ina-stroke-primary);
262
+ overflow-y: auto;
263
+ scrollbar-width: none;
264
+ -ms-overflow-style: none;
265
+ }
266
+
267
+ .ina-time-picker__column::-webkit-scrollbar {
268
+ display: none;
269
+ }
270
+
271
+ .ina-time-picker__column:last-child {
272
+ border-right: none;
273
+ }
274
+
275
+ .ina-time-picker__column--hovered {
276
+ background-color: var(--ina-background-secondary);
277
+ }
278
+
279
+ /* Column Content */
280
+ .ina-time-picker__column-content {
281
+ padding: var(--ina-spacing-2);
282
+ }
283
+
284
+ /* Options */
285
+ .ina-time-picker__option {
286
+ display: flex;
287
+ align-items: center;
288
+ justify-content: center;
289
+ min-height: 32px;
290
+ padding: var(--ina-spacing-1) var(--ina-spacing-2);
291
+ color: var(--ina-text-secondary);
292
+ font-size: var(--ina-font-sm);
293
+ font-weight: var(--ina-font-medium);
294
+ cursor: pointer;
295
+ border-radius: var(--ina-radius-lg);
296
+ transition: all var(--ina-transition-fast);
297
+ user-select: none;
298
+ }
299
+
300
+ .ina-time-picker__option:hover {
301
+ background-color: var(--ina-background-tertiary);
302
+ color: var(--ina-content-primary);
303
+ }
304
+
305
+ .ina-time-picker__option--hovered {
306
+ background-color: var(--ina-background-tertiary);
307
+ color: var(--ina-content-primary);
308
+ }
309
+
310
+ .ina-time-picker__option--selected {
311
+ background-color: var(--ina-primary-500);
312
+ color: var(--ina-white);
313
+ }
314
+
315
+ .ina-time-picker__option--selected:hover {
316
+ background-color: var(--ina-primary-600);
317
+ color: var(--ina-white);
318
+ }
319
+
320
+ .ina-time-picker__option--disabled {
321
+ opacity: 0.5;
322
+ cursor: not-allowed;
323
+ color: var(--ina-content-tertiary);
324
+ }
325
+
326
+ .ina-time-picker__option--disabled:hover {
327
+ background-color: transparent;
328
+ color: var(--ina-content-tertiary);
329
+ }
330
+
331
+ /* Actions */
332
+ .ina-time-picker__actions {
333
+ display: grid;
334
+ grid-template-columns: 1fr auto; /* keep confirm on the far right */
335
+ align-items: center;
336
+ gap: var(--ina-spacing-2);
337
+ padding: var(--ina-spacing-2) var(--ina-spacing-3);
338
+ border-top: 1px solid var(--ina-stroke-primary);
339
+ background-color: var(--ina-background-secondary);
340
+ }
341
+
342
+ /* When both buttons exist, place them in two columns */
343
+ .ina-time-picker__action-button {
344
+ justify-self: start;
345
+ }
346
+
347
+ .ina-time-picker__confirm-button {
348
+ justify-self: end; /* always right aligned */
349
+ }
350
+
351
+ .ina-time-picker__action-button,
352
+ .ina-time-picker__confirm-button {
353
+ padding: var(--ina-spacing-1) var(--ina-spacing-3);
354
+ border: none;
355
+ border-radius: var(--ina-radius-lg);
356
+ font-size: var(--ina-font-sm);
357
+ font-weight: var(--ina-font-medium);
358
+ cursor: pointer;
359
+ transition: all var(--ina-transition-fast);
360
+ }
361
+
362
+ .ina-time-picker__action-button {
363
+ background-color: transparent;
364
+ color: var(--ina-primary-600);
365
+ }
366
+
367
+ .ina-time-picker__action-button:hover {
368
+ background-color: var(--ina-primary-50);
369
+ color: var(--ina-primary-700);
370
+ }
371
+
372
+ .ina-time-picker__confirm-button {
373
+ background-color: var(--ina-primary-500);
374
+ color: var(--ina-white);
375
+ }
376
+
377
+ .ina-time-picker__confirm-button:hover {
378
+ background-color: var(--ina-primary-600);
379
+ }
380
+ /* Focus styles - Sesuai design Figma */
381
+ .ina-time-picker__wrapper:focus-within {
382
+ box-shadow: 0 1px 2px 0 rgba(31, 31, 31, 0.1), 0 0 0 3px #f3f3f3;
383
+ outline: none;
384
+ background-color: var(--ina-background-primary);
385
+ }
386
+ /* hover styles - Sesuai design Figma */
387
+ .ina-time-picker__wrapper:hover {
388
+ background-color: var(--ina-neutral-50);
389
+ }
390
+ /* High Contrast Mode */
391
+ @media (prefers-contrast: high) {
392
+ .ina-time-picker__wrapper {
393
+ border-width: 2px;
394
+ }
395
+
396
+ .ina-time-picker__panel {
397
+ border-width: 2px;
398
+ }
399
+ }
400
+
401
+ /* Reduced Motion */
402
+ @media (prefers-reduced-motion: reduce) {
403
+ .ina-time-picker__wrapper,
404
+ .ina-time-picker__panel,
405
+ .ina-time-picker__option {
406
+ transition: none;
407
+ }
408
+
409
+ .ina-time-picker__panel {
410
+ animation: none;
411
+ }
412
+ }
413
+
414
+ /* Responsive Design */
415
+ @media (max-width: 640px) {
416
+ .ina-time-picker__panel {
417
+ /* Keep absolute positioning like SelectDropdown */
418
+ position: absolute;
419
+ top: 100%;
420
+ left: 0;
421
+ right: auto;
422
+ transform: none;
423
+ width: 90vw;
424
+ max-width: 320px;
425
+ margin-top: var(--ina-spacing-1);
426
+ }
427
+
428
+ .ina-time-picker__content {
429
+ max-height: 180px;
430
+ }
431
+
432
+ .ina-time-picker__option {
433
+ min-height: 40px;
434
+ font-size: var(--ina-font-base);
435
+ }
436
+ }