@uniai-fe/uds-primitives 0.6.15 → 0.7.0

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.
@@ -0,0 +1,410 @@
1
+ .input-time {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--input-time-layout-gap);
5
+ width: var(--input-time-width);
6
+ flex: var(--input-time-flex);
7
+ min-width: 0;
8
+
9
+ &:where([data-width="auto"]) {
10
+ --input-time-width: auto;
11
+ --input-time-flex: 0 1 auto;
12
+ }
13
+
14
+ &:where([data-width="fill"]) {
15
+ --input-time-width: auto;
16
+ --input-time-flex: 1 1 0%;
17
+ }
18
+
19
+ &:where([data-width="full"]),
20
+ &:where([data-block="true"]) {
21
+ --input-time-width: 100%;
22
+ --input-time-flex: 0 0 100%;
23
+ }
24
+
25
+ &:where([data-width="fit"]) {
26
+ --input-time-width: fit-content;
27
+ --input-time-flex: 0 0 auto;
28
+ }
29
+
30
+ &:where([data-width="custom"]) {
31
+ --input-time-flex: 0 0 auto;
32
+ }
33
+
34
+ &:where([data-priority="table"]) {
35
+ display: block;
36
+ --input-time-width: 100%;
37
+ height: 100%;
38
+ }
39
+ }
40
+
41
+ .input-time-picker,
42
+ .input-time-wrapper {
43
+ width: 100%;
44
+ }
45
+
46
+ .input-time-wrapper {
47
+ position: relative;
48
+ }
49
+
50
+ .input-time-input {
51
+ box-sizing: border-box;
52
+ width: 100%;
53
+ min-height: var(--input-time-height-medium);
54
+ border: var(--input-time-border-width) solid var(--input-time-border-color);
55
+ border-radius: var(--input-time-radius);
56
+ background-color: var(--input-time-surface-color);
57
+ color: var(--input-time-text-color);
58
+ padding: var(--input-time-padding-block) var(--input-time-padding-inline);
59
+ box-shadow: none;
60
+ transition:
61
+ border-color 0.15s ease,
62
+ background-color 0.15s ease;
63
+ }
64
+
65
+ .input-time:where([data-icon-position="left"]) {
66
+ .input-time-input {
67
+ padding-inline-start: var(--input-time-left-section-padding-offset);
68
+ }
69
+
70
+ &:where([data-has-clear="true"]) {
71
+ .input-time-input {
72
+ padding-inline-end: var(--input-time-right-section-padding-offset);
73
+ }
74
+ }
75
+ }
76
+
77
+ .input-time:where([data-icon-position="right"]) {
78
+ .input-time-input {
79
+ padding-inline-end: var(--input-time-right-section-padding-offset);
80
+ }
81
+
82
+ &:where([data-clearable="true"]) {
83
+ .input-time-input {
84
+ padding-inline-end: var(
85
+ --input-time-right-section-padding-offset-with-clear
86
+ );
87
+ }
88
+ }
89
+ }
90
+
91
+ .input-time:where([data-size="small"]) {
92
+ .input-time-input {
93
+ min-height: var(--input-time-height-small);
94
+ --input-time-font-size: var(--input-time-text-small-size);
95
+ --input-time-line-height: var(--input-time-text-small-line-height);
96
+ --input-time-font-weight: var(--input-time-text-small-weight);
97
+ --input-time-letter-spacing: var(--input-time-text-small-letter-spacing);
98
+ }
99
+ }
100
+
101
+ .input-time:where([data-size="large"]) {
102
+ .input-time-input {
103
+ min-height: var(--input-time-height-large);
104
+ --input-time-font-size: var(--input-time-text-large-size);
105
+ --input-time-line-height: var(--input-time-text-large-line-height);
106
+ --input-time-font-weight: var(--input-time-text-large-weight);
107
+ --input-time-letter-spacing: var(--input-time-text-large-letter-spacing);
108
+ }
109
+ }
110
+
111
+ .input-time:where([data-priority="secondary"]) {
112
+ .input-time-input {
113
+ border: none;
114
+ border-bottom: var(--input-time-border-width) solid
115
+ var(--input-time-border-color);
116
+ border-radius: 0;
117
+ background-color: var(--input-time-secondary-surface-color);
118
+ padding-inline: 0;
119
+ padding-block: var(--input-time-secondary-padding-block);
120
+ }
121
+ }
122
+
123
+ .input-time:where([data-priority="tertiary"]) {
124
+ .input-time-input {
125
+ min-height: var(--input-time-tertiary-height);
126
+ border-radius: var(--input-time-tertiary-radius);
127
+ }
128
+ }
129
+
130
+ .input-time:where([data-priority="table"]) {
131
+ height: 100%;
132
+
133
+ .input-time-picker,
134
+ .input-time-wrapper,
135
+ .input-time-input {
136
+ height: 100%;
137
+ }
138
+
139
+ .input-time-input {
140
+ min-height: var(--input-time-height-small);
141
+ border-color: var(--input-time-table-border-color);
142
+ border-radius: var(--input-time-table-radius);
143
+ background-color: var(--input-time-table-surface-color);
144
+ padding-inline: var(--input-time-table-padding-inline);
145
+ --input-time-font-size: var(--input-time-table-text-size);
146
+ --input-time-line-height: var(--input-time-table-text-line-height);
147
+ --input-time-font-weight: var(--input-time-table-text-weight);
148
+ }
149
+
150
+ &:where([data-icon-position="left"]) {
151
+ .input-time-input {
152
+ padding-inline-start: var(--input-time-table-section-padding-offset);
153
+ }
154
+ }
155
+
156
+ &:where([data-icon-position="right"]) {
157
+ .input-time-input {
158
+ padding-inline-end: var(--input-time-right-section-padding-offset);
159
+ }
160
+ }
161
+
162
+ &:where([data-has-clear="true"]) {
163
+ .input-time-input {
164
+ padding-inline-end: var(--input-time-table-clear-padding-offset);
165
+ }
166
+ }
167
+
168
+ .input-time-fields-group {
169
+ --input-time-field-y-offset: 0px;
170
+ }
171
+
172
+ .input-time-field {
173
+ --input-time-field-width: var(--input-time-table-field-width);
174
+ }
175
+
176
+ .input-time-field:where(select) {
177
+ --input-time-period-field-width: var(--input-time-table-period-field-width);
178
+ }
179
+ }
180
+
181
+ .input-time:where([data-state="active"]) {
182
+ .input-time-input {
183
+ border-color: var(--input-time-border-active-color);
184
+ border-width: var(--input-time-border-width-emphasis);
185
+ }
186
+ }
187
+
188
+ .input-time:where([data-state="success"]) {
189
+ .input-time-input {
190
+ border-color: var(--input-time-border-success-color);
191
+ border-width: var(--input-time-border-width-emphasis);
192
+ }
193
+ }
194
+
195
+ .input-time:where([data-state="error"]) {
196
+ .input-time-input {
197
+ border-color: var(--input-time-border-error-color);
198
+ border-width: var(--input-time-border-width-emphasis);
199
+ }
200
+ }
201
+
202
+ .input-time:where([data-state="disabled"]),
203
+ .input-time:where([data-readonly="true"]) {
204
+ .input-time-input {
205
+ border-color: var(--input-time-border-disabled-color);
206
+ background-color: var(--input-time-surface-disabled-color);
207
+ }
208
+ }
209
+
210
+ .input-time:where([data-priority="secondary"][data-state="active"]),
211
+ .input-time:where([data-priority="secondary"][data-state="success"]),
212
+ .input-time:where([data-priority="secondary"][data-state="error"]) {
213
+ .input-time-input {
214
+ border-bottom-width: var(--input-time-border-width-emphasis);
215
+ }
216
+ }
217
+
218
+ .input-time-fields-root {
219
+ display: flex;
220
+ align-items: center;
221
+ height: 100%;
222
+ width: 100%;
223
+ color: var(--input-time-text-color);
224
+ }
225
+
226
+ .input-time-fields-group {
227
+ display: flex;
228
+ align-items: center;
229
+ gap: var(--input-time-field-gap);
230
+ height: 100%;
231
+ min-width: 0;
232
+ color: var(--input-time-text-color);
233
+ transform: translateY(var(--input-time-field-y-offset));
234
+
235
+ > span {
236
+ color: var(--input-time-separator-color);
237
+ font-size: var(--input-time-font-size);
238
+ line-height: var(--input-time-line-height);
239
+ }
240
+ }
241
+
242
+ .input-time-field {
243
+ box-sizing: border-box;
244
+ width: var(--input-time-field-width);
245
+ min-width: var(--input-time-field-width);
246
+ height: var(--input-time-field-height);
247
+ padding: 0;
248
+ border: 0;
249
+ background-color: transparent;
250
+ color: var(--input-time-text-color);
251
+ caret-color: var(--input-time-text-color);
252
+ font-size: var(--input-time-font-size);
253
+ line-height: var(--input-time-line-height);
254
+ font-weight: var(--input-time-font-weight);
255
+ letter-spacing: var(--input-time-letter-spacing);
256
+ text-align: center;
257
+ outline: none;
258
+ box-shadow: none;
259
+
260
+ &::placeholder {
261
+ color: var(--input-time-placeholder-color);
262
+ }
263
+
264
+ &:disabled {
265
+ color: var(--input-time-text-disabled-color);
266
+ cursor: default;
267
+ }
268
+ }
269
+
270
+ .input-time-field:where(select) {
271
+ width: var(--input-time-period-field-width);
272
+ min-width: var(--input-time-period-field-width);
273
+ appearance: none;
274
+ text-align-last: center;
275
+ }
276
+
277
+ .input-time-section {
278
+ box-sizing: border-box;
279
+ position: absolute;
280
+ z-index: 1;
281
+ top: 0;
282
+ bottom: 0;
283
+ display: flex;
284
+ align-items: center;
285
+ justify-content: center;
286
+ width: var(--input-time-section-width);
287
+
288
+ &:where([data-position="left"]) {
289
+ left: 0;
290
+ width: var(--input-time-left-section-width);
291
+ }
292
+
293
+ &:where([data-position="right"]) {
294
+ right: 0;
295
+ justify-content: flex-end;
296
+ padding-inline-end: var(--input-time-section-edge-gap);
297
+ }
298
+ }
299
+
300
+ .input-time:where([data-icon-position="right"][data-clearable="true"]) {
301
+ .input-time-section:where([data-position="right"]) {
302
+ width: var(--input-time-section-width-with-clear);
303
+ }
304
+ }
305
+
306
+ .input-time-section-group {
307
+ display: flex;
308
+ align-items: center;
309
+ gap: var(--input-time-section-gap);
310
+ }
311
+
312
+ .input-time-section-button {
313
+ display: flex;
314
+ align-items: center;
315
+ justify-content: center;
316
+ width: var(--input-time-section-button-size);
317
+ height: var(--input-time-section-button-size);
318
+ margin: 0;
319
+ padding: 0;
320
+ border: 0;
321
+ border-radius: var(--input-time-section-button-radius);
322
+ background-color: transparent;
323
+ color: var(--input-time-icon-color);
324
+ cursor: pointer;
325
+
326
+ &:where([aria-disabled="true"]) {
327
+ color: var(--input-time-icon-disabled-color);
328
+ cursor: default;
329
+ }
330
+ }
331
+
332
+ .input-time-icon-graphic,
333
+ .input-time-section-button svg {
334
+ display: flex;
335
+ width: var(--input-time-icon-size);
336
+ height: var(--input-time-icon-size);
337
+ }
338
+
339
+ .input-time-dropdown {
340
+ position: absolute;
341
+ z-index: 20;
342
+ box-sizing: border-box;
343
+ padding: var(--input-time-dropdown-padding);
344
+ border: var(--input-time-dropdown-border-width) solid
345
+ var(--input-time-dropdown-border-color);
346
+ border-radius: var(--input-time-dropdown-radius);
347
+ background-color: var(--input-time-dropdown-surface-color);
348
+ box-shadow: var(--input-time-dropdown-shadow);
349
+ }
350
+
351
+ .input-time-scrollarea {
352
+ position: relative;
353
+ min-width: var(--input-time-scrollarea-width);
354
+ overflow: hidden;
355
+ }
356
+
357
+ .input-time-scrollarea .mantine-ScrollArea-viewport {
358
+ box-sizing: border-box;
359
+ height: 100%;
360
+ padding-inline-end: var(--input-time-scrollarea-gutter);
361
+ scrollbar-gutter: stable;
362
+ overflow: auto;
363
+ }
364
+
365
+ .input-time-controls-list-group {
366
+ display: flex;
367
+ gap: var(--input-time-dropdown-group-gap);
368
+ }
369
+
370
+ .input-time-controls-list {
371
+ display: flex;
372
+ flex-direction: column;
373
+ gap: var(--input-time-option-gap);
374
+ width: var(--input-time-option-min-width);
375
+ }
376
+
377
+ .input-time-option,
378
+ .input-time-preset-option {
379
+ width: var(--input-time-option-min-width);
380
+ min-width: var(--input-time-option-min-width);
381
+ height: var(--input-time-option-height);
382
+ border-radius: var(--input-time-option-radius);
383
+ color: var(--input-time-option-color);
384
+ font-size: var(--input-time-option-font-size);
385
+ line-height: var(--input-time-option-line-height);
386
+ font-weight: var(--input-time-option-font-weight);
387
+
388
+ &:where([data-active]) {
389
+ background-color: var(--input-time-option-active-surface-color);
390
+ color: var(--input-time-option-active-color);
391
+ }
392
+
393
+ &:hover:where(:not([data-active])) {
394
+ background-color: var(--input-time-option-hover-surface-color);
395
+ color: var(--input-time-option-hover-color);
396
+ }
397
+ }
398
+
399
+ .input-time-presets-group {
400
+ display: flex;
401
+ flex-direction: column;
402
+ gap: var(--input-time-option-gap);
403
+ }
404
+
405
+ .input-time-presets-group-label {
406
+ color: var(--input-time-presets-label-color);
407
+ font-size: var(--input-time-presets-label-size);
408
+ line-height: var(--input-time-presets-label-line-height);
409
+ font-weight: var(--input-time-presets-label-weight);
410
+ }
@@ -119,4 +119,104 @@
119
119
  /* Status/affix colors */
120
120
  --input-status-error-color: var(--color-error);
121
121
  --input-status-success-color: var(--color-primary-default);
122
+
123
+ /* TimePicker tokens */
124
+ --input-time-width: 100%;
125
+ --input-time-flex: 0 1 auto;
126
+ --input-time-layout-gap: var(--input-layout-gap);
127
+ --input-time-height-small: var(--input-default-height-small);
128
+ --input-time-height-medium: var(--input-default-height-medium);
129
+ --input-time-height-large: var(--input-default-height-large);
130
+ --input-time-tertiary-height: var(--input-tertiary-height-base);
131
+ --input-time-padding-inline: var(--input-default-padding-inline);
132
+ --input-time-padding-block: var(--input-default-padding-block);
133
+ --input-time-secondary-padding-block: var(--input-secondary-padding-block);
134
+ --input-time-table-padding-inline: var(--spacing-padding-4);
135
+ --input-time-radius: var(--input-default-radius-base);
136
+ --input-time-tertiary-radius: var(--input-tertiary-radius-base);
137
+ --input-time-table-radius: var(--input-table-radius-base);
138
+ --input-time-field-gap: var(--spacing-gap-2);
139
+ --input-time-field-width: 2.4ch;
140
+ --input-time-period-field-width: 3.8ch;
141
+ --input-time-field-height: 100%;
142
+ --input-time-field-y-offset: 2px;
143
+ --input-time-section-gap: var(--spacing-gap-1);
144
+ --input-time-section-button-size: 28px;
145
+ --input-time-section-button-radius: var(--theme-radius-medium-1);
146
+ --input-time-left-section-width: 44px;
147
+ --input-time-section-width: 56px;
148
+ --input-time-section-width-with-clear: 92px;
149
+ --input-time-section-edge-gap: var(--input-time-padding-inline);
150
+ --input-time-left-section-padding-offset: 44px;
151
+ --input-time-right-section-padding-offset: 64px;
152
+ --input-time-right-section-padding-offset-with-clear: 100px;
153
+ --input-time-table-section-padding-offset: 48px;
154
+ --input-time-table-clear-padding-offset: 56px;
155
+ --input-time-table-field-width: 2.4ch;
156
+ --input-time-table-period-field-width: 3.8ch;
157
+ --input-time-icon-size: 24px;
158
+ --input-time-text-color: var(--input-text-color);
159
+ --input-time-text-disabled-color: var(--input-text-disabled-color);
160
+ --input-time-placeholder-color: var(--input-placeholder-color);
161
+ --input-time-separator-color: var(--color-label-alternative);
162
+ --input-time-icon-color: var(--color-label-alternative);
163
+ --input-time-icon-disabled-color: var(--color-label-disabled);
164
+ --input-time-font-size: var(--input-text-medium-size);
165
+ --input-time-line-height: var(--input-text-medium-line-height);
166
+ --input-time-font-weight: var(--input-text-medium-weight);
167
+ --input-time-letter-spacing: var(--input-text-medium-letter-spacing);
168
+ --input-time-text-small-size: var(--input-text-small-size);
169
+ --input-time-text-small-line-height: var(--input-text-small-line-height);
170
+ --input-time-text-small-weight: var(--input-text-small-weight);
171
+ --input-time-text-small-letter-spacing: var(
172
+ --input-text-small-letter-spacing
173
+ );
174
+ --input-time-text-large-size: var(--input-text-large-size);
175
+ --input-time-text-large-line-height: var(--input-text-large-line-height);
176
+ --input-time-text-large-weight: var(--input-text-large-weight);
177
+ --input-time-text-large-letter-spacing: var(
178
+ --input-text-large-letter-spacing
179
+ );
180
+ --input-time-table-text-size: var(--input-table-text-small-size);
181
+ --input-time-table-text-line-height: var(
182
+ --input-table-text-small-line-height
183
+ );
184
+ --input-time-table-text-weight: var(--input-table-text-small-weight);
185
+ --input-time-border-color: var(--input-border-color);
186
+ --input-time-border-width: var(--input-border-width-default);
187
+ --input-time-border-width-emphasis: var(--input-border-width-emphasis);
188
+ --input-time-border-active-color: var(--input-border-active-color);
189
+ --input-time-border-success-color: var(--input-border-success-color);
190
+ --input-time-border-error-color: var(--input-border-error-color);
191
+ --input-time-border-disabled-color: var(--input-border-disabled-color);
192
+ --input-time-table-border-color: var(--input-border-table-default-color);
193
+ --input-time-surface-color: var(--input-surface-color);
194
+ --input-time-secondary-surface-color: var(--input-secondary-surface-color);
195
+ --input-time-surface-disabled-color: var(--input-surface-disabled-color);
196
+ --input-time-table-surface-color: var(--input-table-surface-color);
197
+ --input-time-dropdown-padding: var(--spacing-padding-2);
198
+ --input-time-dropdown-radius: var(--theme-radius-large-1);
199
+ --input-time-dropdown-border-width: 1px;
200
+ --input-time-dropdown-border-color: var(--color-border-standard-cool-gray);
201
+ --input-time-dropdown-surface-color: var(--color-common-100);
202
+ --input-time-dropdown-shadow: 0px 4px 22px rgba(19, 22, 32, 0.12);
203
+ --input-time-dropdown-group-gap: var(--spacing-gap-3);
204
+ --input-time-option-gap: var(--spacing-gap-1);
205
+ --input-time-scrollarea-width: 64px;
206
+ --input-time-scrollarea-gutter: 8px;
207
+ --input-time-option-min-width: 56px;
208
+ --input-time-option-height: 32px;
209
+ --input-time-option-radius: var(--theme-radius-medium-1);
210
+ --input-time-option-color: var(--color-label-standard);
211
+ --input-time-option-hover-color: var(--color-label-strong);
212
+ --input-time-option-active-color: var(--color-common-100);
213
+ --input-time-option-hover-surface-color: var(--color-neutral-95);
214
+ --input-time-option-active-surface-color: var(--color-primary-default);
215
+ --input-time-option-font-size: var(--font-body-xsmall-size);
216
+ --input-time-option-line-height: var(--font-body-xsmall-line-height);
217
+ --input-time-option-font-weight: var(--font-body-xsmall-weight);
218
+ --input-time-presets-label-color: var(--color-label-alternative);
219
+ --input-time-presets-label-size: var(--font-label-small-size);
220
+ --input-time-presets-label-line-height: var(--font-label-small-line-height);
221
+ --input-time-presets-label-weight: var(--font-label-small-weight);
122
222
  }
@@ -2,6 +2,7 @@ export type * from "./foundation";
2
2
  export type * from "./textarea";
3
3
  export type * from "./text";
4
4
  export type * from "./date";
5
+ export type * from "./time";
5
6
  export type * from "./verification";
6
7
  export type * from "./hooks";
7
8
  export type * from "./address";