@idds/styles 1.0.42 → 1.0.44

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idds/styles",
3
- "version": "1.0.42",
3
+ "version": "1.0.44",
4
4
  "description": "Shared CSS styles and colors for INA Digital Design System",
5
5
  "type": "module",
6
6
  "main": "./src/index.css",
@@ -260,7 +260,6 @@
260
260
  .ina-drawer--position-right .ina-drawer__panel {
261
261
  /* Default width for panels without specific width variant */
262
262
  min-width: 420px;
263
- width: 420px;
264
263
  max-width: 520px;
265
264
  /* Full height for side panels */
266
265
  height: 100vh;
@@ -268,24 +267,21 @@
268
267
  }
269
268
 
270
269
  /* Width variants for desktop - Side panels (left/right) */
271
- /* .ina-drawer--position-left .ina-drawer__panel--width-sm,
270
+ .ina-drawer--position-left .ina-drawer__panel--width-sm,
272
271
  .ina-drawer--position-right .ina-drawer__panel--width-sm {
273
- min-width: 320px !important;
274
- max-width: 400px !important;
272
+ width: 420px !important;
275
273
  height: 100vh !important;
276
274
  max-height: 100vh !important;
277
- } */
275
+ }
278
276
 
279
- /* .ina-drawer--position-left .ina-drawer__panel--width-md,
277
+ .ina-drawer--position-left .ina-drawer__panel--width-md,
280
278
  .ina-drawer--position-right .ina-drawer__panel--width-md {
281
- width: 400px !important;
282
- min-width: 400px !important;
283
- max-width: 500px !important;
279
+ width: 520px !important;
284
280
  height: 100vh !important;
285
281
  max-height: 100vh !important;
286
282
  }
287
283
 
288
- .ina-drawer--position-left .ina-drawer__panel--width-lg,
284
+ /* .ina-drawer--position-left .ina-drawer__panel--width-lg,
289
285
  .ina-drawer--position-right .ina-drawer__panel--width-lg {
290
286
  width: 500px !important;
291
287
  min-width: 500px !important;
@@ -40,12 +40,6 @@
40
40
  background-color: var(--ina-neutral-50);
41
41
  }
42
42
 
43
- .ina-radio-input__option:focus-within {
44
- background-color: var(--ina-neutral-100);
45
- outline: 2px solid var(--ina-primary-500);
46
- outline-offset: 2px;
47
- }
48
-
49
43
  .ina-radio-input__option--disabled {
50
44
  cursor: not-allowed;
51
45
  opacity: 0.6;
@@ -96,8 +90,8 @@
96
90
  top: 50%;
97
91
  left: 50%;
98
92
  transform: translate(-50%, -50%);
99
- width: 8px;
100
- height: 8px;
93
+ width: 11px;
94
+ height: 11px;
101
95
  border-radius: 50%;
102
96
  background-color: var(--ina-stroke-tertiary, #141414);
103
97
  }
@@ -111,7 +105,7 @@
111
105
 
112
106
  /* Disabled states */
113
107
  .ina-radio-input__field:disabled {
114
- border-color: var(--ina-neutral-200, #E5E5E5);
108
+ border-color: var(--ina-neutral-200, #e5e5e5);
115
109
  background-color: var(--ina-background-secondary, var(--ina-neutral-50));
116
110
  cursor: not-allowed;
117
111
  opacity: 1;
@@ -120,8 +114,11 @@
120
114
 
121
115
  /* Disabled + Checked state - Higher specificity */
122
116
  .ina-radio-input__field:disabled:checked {
123
- border-color: var(--ina-neutral-200, #E5E5E5) !important;
124
- background-color: var(--ina-background-secondary, var(--ina-neutral-50)) !important;
117
+ border-color: var(--ina-neutral-200, #e5e5e5) !important;
118
+ background-color: var(
119
+ --ina-background-secondary,
120
+ var(--ina-neutral-50)
121
+ ) !important;
125
122
  filter: none;
126
123
  }
127
124
 
@@ -134,7 +131,7 @@
134
131
  width: 8px;
135
132
  height: 8px;
136
133
  border-radius: 50%;
137
- background-color: var(--ina-neutral-200, #E5E5E5);
134
+ background-color: var(--ina-neutral-200, #e5e5e5);
138
135
  }
139
136
 
140
137
  /* Radio option label */
@@ -153,7 +150,7 @@
153
150
  }
154
151
 
155
152
  /* Size variants */
156
- .ina-radio-input--size-sm .ina-radio-input__main-label {
153
+ /* .ina-radio-input--size-sm .ina-radio-input__main-label {
157
154
  font-size: var(--ina-font-xs);
158
155
  }
159
156
 
@@ -164,9 +161,9 @@
164
161
  .ina-radio-input--size-sm .ina-radio-input__field {
165
162
  width: 16px;
166
163
  height: 16px;
167
- }
164
+ } */
168
165
 
169
- .ina-radio-input--size-lg .ina-radio-input__main-label {
166
+ /* .ina-radio-input--size-lg .ina-radio-input__main-label {
170
167
  font-size: var(--ina-font-base);
171
168
  }
172
169
 
@@ -177,7 +174,7 @@
177
174
  .ina-radio-input--size-lg .ina-radio-input__field {
178
175
  width: 24px;
179
176
  height: 24px;
180
- }
177
+ } */
181
178
 
182
179
  /* Orientation variants */
183
180
  .ina-radio-input--orientation-horizontal .ina-radio-input__group {
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Single File Upload Component Styles
3
+ * Menggunakan BEM naming convention dengan prefix "ina-"
4
+ * Sesuai dengan design Figma
5
+ */
6
+
7
+ .ina-single-file-upload {
8
+ width: 300px;
9
+ height: 72px;
10
+ position: relative;
11
+ }
12
+
13
+ .ina-single-file-upload__container {
14
+ width: 100%;
15
+ height: 100%;
16
+ border: 1px solid var(--ina-stroke-primary);
17
+ border-radius: var(--ina-rounded-lg, 8px);
18
+ background: var(--ina-background-primary, #fff);
19
+ padding: 12px;
20
+ display: flex;
21
+ align-items: center;
22
+ gap: 12px;
23
+ cursor: pointer;
24
+ transition: all 0.2s ease;
25
+ box-sizing: border-box;
26
+ }
27
+
28
+ .ina-single-file-upload__container:hover:not(.ina-single-file-upload__container--disabled) {
29
+ border-color: var(--ina-guide-500, #0968f6);
30
+ }
31
+
32
+ .ina-single-file-upload__container--active {
33
+ border: 1px solid var(--ina-guide-500, #0968f6);
34
+ box-shadow: 0 0 6px 0 rgba(9, 104, 246, 0.1),
35
+ 0 0 4px 6px rgba(9, 104, 246, 0.04);
36
+ }
37
+
38
+ .ina-single-file-upload__container--disabled {
39
+ background: var(--ina-background-secondary);
40
+ border-color: var(--ina-stroke-primary);
41
+ cursor: not-allowed;
42
+ pointer-events: none;
43
+ }
44
+
45
+ .ina-single-file-upload__input {
46
+ display: none;
47
+ }
48
+
49
+ /* Default State - Upload Icon */
50
+ .ina-single-file-upload__icon-wrapper {
51
+ width: 32px;
52
+ height: 32px;
53
+ min-width: 32px;
54
+ min-height: 32px;
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: center;
58
+ flex-shrink: 0;
59
+ }
60
+
61
+ .ina-single-file-upload__icon-wrapper--default {
62
+ color: var(--ina-content-primary);
63
+ }
64
+
65
+ .ina-single-file-upload__icon-wrapper--disabled {
66
+ color: var(--ina-content-tertiary);
67
+ }
68
+
69
+ /* Success State - File Icon */
70
+ .ina-single-file-upload__icon-wrapper--file {
71
+ width: 32px;
72
+ height: 32px;
73
+ min-width: 32px;
74
+ min-height: 32px;
75
+ padding: 8px;
76
+ background: var(--ina-background-secondary);
77
+ border-radius: var(--ina-rounded-lg, 8px);
78
+ display: flex;
79
+ align-items: center;
80
+ justify-content: center;
81
+ flex-shrink: 0;
82
+ }
83
+
84
+ .ina-single-file-upload__file-icon {
85
+ width: 100%;
86
+ height: 100%;
87
+ object-fit: contain;
88
+ }
89
+
90
+ /* Content Area */
91
+ .ina-single-file-upload__content {
92
+ flex: 1;
93
+ min-width: 0;
94
+ display: flex;
95
+ flex-direction: column;
96
+ gap: 2px;
97
+ }
98
+
99
+ .ina-single-file-upload__title {
100
+ font-size: 14px;
101
+ font-weight: 600;
102
+ line-height: 20px;
103
+ color: var(--ina-content-primary);
104
+ margin: 0;
105
+ white-space: nowrap;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ }
109
+
110
+ .ina-single-file-upload__description {
111
+ font-size: 12px;
112
+ font-weight: 400;
113
+ line-height: 16px;
114
+ color: var(--ina-content-secondary);
115
+ margin: 0;
116
+ white-space: nowrap;
117
+ overflow: hidden;
118
+ text-overflow: ellipsis;
119
+ }
120
+
121
+ .ina-single-file-upload__container--disabled .ina-single-file-upload__title,
122
+ .ina-single-file-upload__container--disabled .ina-single-file-upload__description {
123
+ color: var(--ina-content-tertiary);
124
+ }
125
+
126
+ /* Progress State */
127
+ .ina-single-file-upload__progress {
128
+ flex: 1;
129
+ min-width: 0;
130
+ display: flex;
131
+ flex-direction: column;
132
+ gap: 4px;
133
+ }
134
+
135
+ .ina-single-file-upload__progress-bar {
136
+ width: 100%;
137
+ height: 4px;
138
+ background: var(--ina-background-secondary);
139
+ border-radius: 2px;
140
+ overflow: hidden;
141
+ }
142
+
143
+ .ina-single-file-upload__progress-fill {
144
+ height: 100%;
145
+ background: var(--ina-guide-500, #0968f6);
146
+ transition: width 0.3s ease;
147
+ }
148
+
149
+ .ina-single-file-upload__progress-text {
150
+ font-size: 12px;
151
+ font-weight: 400;
152
+ line-height: 16px;
153
+ color: var(--ina-content-secondary);
154
+ margin: 0;
155
+ }
156
+
157
+ /* Delete Button */
158
+ .ina-single-file-upload__delete-button {
159
+ width: 20px;
160
+ height: 20px;
161
+ min-width: 20px;
162
+ min-height: 20px;
163
+ padding: 0;
164
+ border: none;
165
+ background: transparent;
166
+ color: var(--ina-content-primary);
167
+ cursor: pointer;
168
+ display: flex;
169
+ align-items: center;
170
+ justify-content: center;
171
+ flex-shrink: 0;
172
+ transition: color 0.2s ease;
173
+ }
174
+
175
+ .ina-single-file-upload__delete-button:hover {
176
+ color: var(--ina-content-negative, var(--ina-red-600));
177
+ }
178
+
179
+ .ina-single-file-upload__delete-button:focus-visible {
180
+ outline: 2px solid var(--ina-guide-500, #0968f6);
181
+ outline-offset: 2px;
182
+ border-radius: 2px;
183
+ }
184
+
@@ -1,20 +1,21 @@
1
1
  .ina-stepper {
2
2
  display: flex;
3
- width: 100%;
4
3
  position: relative;
5
4
  }
6
5
 
7
6
  /* Horizontal Layout */
8
7
  .ina-stepper--horizontal {
9
8
  flex-direction: row;
10
- align-items: flex-start;
9
+ align-items: center;
11
10
  justify-content: space-between;
11
+ width: 100%;
12
12
  }
13
13
 
14
14
  /* Vertical Layout */
15
15
  .ina-stepper--vertical {
16
16
  flex-direction: column;
17
17
  align-items: flex-start;
18
+ height: 100%;
18
19
  }
19
20
 
20
21
  /* Responsive: Horizontal stepper becomes vertical on mobile */
@@ -26,6 +27,7 @@
26
27
  .ina-stepper--horizontal-responsive {
27
28
  flex-direction: column;
28
29
  align-items: flex-start;
30
+ height: 100%;
29
31
  }
30
32
 
31
33
  .ina-stepper--horizontal-responsive .ina-stepper__item {
@@ -59,7 +61,7 @@
59
61
  position: relative;
60
62
  z-index: 1;
61
63
  flex-shrink: 0;
62
- padding: 0 0.5rem;
64
+ padding: 0;
63
65
  }
64
66
 
65
67
  .ina-stepper--vertical .ina-stepper__item {
@@ -81,17 +83,17 @@
81
83
  height: 24px;
82
84
  min-width: 24px;
83
85
  min-height: 24px;
84
- border-radius: 4px;
86
+ border-radius: var(--ina-rounded-lg, 8px);
85
87
  display: flex;
86
88
  align-items: center;
87
89
  justify-content: center;
88
- font-size: 0.75rem;
90
+ font-size: 16px;
89
91
  font-weight: 500;
90
92
  transition: background-color 0.2s ease, border-color 0.2s ease,
91
93
  color 0.2s ease;
92
94
  border: 1px solid var(--ina-stroke-primary);
93
- color: var(--ina-content-secondary);
94
- background-color: var(--ina-background-primary);
95
+ color: var(--ina-content-tertiary);
96
+ background-color: var(--ina-background-secondary);
95
97
  }
96
98
 
97
99
  .ina-stepper--vertical .ina-stepper__icon-wrapper {
@@ -99,14 +101,14 @@
99
101
  }
100
102
 
101
103
  .ina-stepper__step-number {
102
- color: var(--ina-content-secondary);
103
- font-size: 0.75rem;
104
+ color: inherit;
105
+ font-size: 16px;
104
106
  font-weight: 500;
105
107
  }
106
108
 
107
109
  .ina-stepper__check-icon {
108
- color: var(--ina-background-primary);
109
- stroke: var(--ina-background-primary);
110
+ color: inherit;
111
+ stroke: currentColor;
110
112
  width: 16px;
111
113
  height: 16px;
112
114
  }
@@ -138,13 +140,12 @@
138
140
  /* Separator */
139
141
  .ina-stepper__separator {
140
142
  flex-grow: 1;
143
+ width: 2px;
141
144
  height: 2px;
142
145
  background-color: var(--ina-stroke-primary);
143
- /* Align to center of icon-wrapper: icon-wrapper is 24px, center is at 12px from top */
144
- /* Separator height is 2px, so we need to position it so its center aligns with icon center */
145
- /* Using align-self: center and margin-top to offset: 12px (icon center) - 1px (half separator) = 11px */
146
- align-self: flex-start;
147
- margin: 11px -0.5rem 0 -0.5rem;
146
+ /* Align to center of icon-wrapper: icon-wrapper is 24px, center is at 12px */
147
+ /* Separator width/height is 2px, so we need to position it so its center aligns with icon center */
148
+ align-self: center;
148
149
  position: relative;
149
150
  z-index: 0;
150
151
  transition: background-color 0.2s ease;
@@ -153,7 +154,6 @@
153
154
  .ina-stepper--vertical .ina-stepper__separator {
154
155
  width: 2px;
155
156
  height: 2rem;
156
- margin: 0;
157
157
  flex-grow: 0;
158
158
  align-self: flex-start;
159
159
  /* Align to center of icon-wrapper: icon-wrapper is 24px, center is at 12px from left */
@@ -163,25 +163,49 @@
163
163
  }
164
164
 
165
165
  /* States */
166
+ /* Active State */
167
+ .ina-stepper__item--active .ina-stepper__icon-wrapper {
168
+ border-color: var(--ina-guide-500);
169
+ color: var(--ina-guide-500);
170
+ background-color: var(--ina-guide-50);
171
+ }
172
+
173
+ .ina-stepper__item--active .ina-stepper__label {
174
+ color: var(--ina-guide-500);
175
+ font-weight: 500;
176
+ }
177
+
178
+ /* Done/Completed State */
166
179
  .ina-stepper__item--completed .ina-stepper__icon-wrapper {
167
- background-color: var(--ina-semantic-success);
168
- border-color: var(--ina-semantic-success);
169
- color: var(--ina-background-primary);
180
+ border-color: var(--ina-positive-600);
181
+ color: var(--ina-positive-600);
182
+ background-color: var(--ina-positive-50);
170
183
  }
171
184
 
172
185
  .ina-stepper__item--completed .ina-stepper__label {
173
- color: var(--ina-content-primary);
186
+ color: var(--ina-positive-600);
174
187
  }
175
188
 
176
- .ina-stepper__item--active .ina-stepper__icon-wrapper {
177
- border-color: var(--ina-semantic-info);
178
- color: var(--ina-semantic-info);
179
- background-color: var(--ina-background-primary);
189
+ /* Inactive State (default) */
190
+ .ina-stepper__item:not(.ina-stepper__item--active):not(.ina-stepper__item--completed):not(.ina-stepper__item--error) .ina-stepper__icon-wrapper {
191
+ border-color: var(--ina-stroke-primary);
192
+ color: var(--ina-content-tertiary);
193
+ background-color: var(--ina-background-secondary);
180
194
  }
181
195
 
182
- .ina-stepper__item--active .ina-stepper__label {
183
- color: var(--ina-content-primary);
184
- font-weight: 500;
196
+ .ina-stepper__item:not(.ina-stepper__item--active):not(.ina-stepper__item--completed):not(.ina-stepper__item--error) .ina-stepper__label {
197
+ color: var(--ina-content-tertiary);
198
+ }
199
+
200
+ /* Error State */
201
+ .ina-stepper__item--error .ina-stepper__icon-wrapper {
202
+ border-color: var(--ina-negative-500);
203
+ color: var(--ina-negative-500);
204
+ background-color: var(--ina-negative-50);
205
+ }
206
+
207
+ .ina-stepper__item--error .ina-stepper__label {
208
+ color: var(--ina-negative-500);
185
209
  }
186
210
 
187
211
  .ina-stepper__item--clickable {
@@ -197,9 +221,11 @@
197
221
  cursor: not-allowed;
198
222
  }
199
223
 
200
- /* Completed separator - thick 2px stroke-primary */
224
+ /* Separator States */
225
+ /* Completed separator - positive-600 */
201
226
  .ina-stepper__separator--completed {
202
- background-color: var(--ina-stroke-primary);
227
+ background-color: var(--ina-positive-600);
228
+ width: 2px;
203
229
  height: 2px;
204
230
  }
205
231
 
@@ -207,3 +233,8 @@
207
233
  width: 2px;
208
234
  height: 2rem;
209
235
  }
236
+
237
+ /* Inactive separator - stroke-primary (default) */
238
+ .ina-stepper__separator:not(.ina-stepper__separator--completed) {
239
+ background-color: var(--ina-stroke-primary);
240
+ }