@uniai-fe/uds-primitives 0.3.5 → 0.3.7
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/dist/styles.css +162 -40
- package/package.json +3 -2
- package/src/components/input/markup/address/Template.tsx +11 -2
- package/src/components/input/markup/foundation/Input.tsx +10 -2
- package/src/components/input/styles/foundation.scss +68 -30
- package/src/components/input/styles/variables.scss +32 -0
- package/src/components/select/markup/Default.tsx +16 -1
- package/src/components/select/markup/foundation/Base.tsx +7 -1
- package/src/components/select/markup/multiple/Multiple.tsx +14 -2
- package/src/components/select/styles/select.scss +57 -14
- package/src/components/select/styles/variables.scss +26 -1
- package/src/components/select/types/props.ts +2 -0
- package/src/components/select/types/trigger.ts +13 -0
- package/src/components/table/styles/foundation.scss +1 -0
- package/src/components/table/styles/variables.scss +2 -0
package/dist/styles.css
CHANGED
|
@@ -316,6 +316,7 @@
|
|
|
316
316
|
/* Layout presets */
|
|
317
317
|
--input-width: 100%;
|
|
318
318
|
--input-flex: 0 1 auto;
|
|
319
|
+
--input-layout-gap: var(--spacing-gap-3);
|
|
319
320
|
/* Input sizing tokens; Button 변수 규칙과 동일한 prefix 패턴을 맞춘다. */
|
|
320
321
|
--input-default-height-small: var(--theme-size-medium-1);
|
|
321
322
|
--input-default-height-medium: var(--theme-size-medium-2);
|
|
@@ -323,10 +324,16 @@
|
|
|
323
324
|
--input-tertiary-height-base: calc(var(--theme-size-medium-2) + 24px);
|
|
324
325
|
--input-default-padding-inline: var(--spacing-padding-6);
|
|
325
326
|
--input-default-padding-block: var(--spacing-padding-4);
|
|
327
|
+
--input-secondary-padding-block: var(--spacing-padding-4);
|
|
326
328
|
--input-default-gap: var(--spacing-gap-4);
|
|
329
|
+
--input-affix-gap: var(--spacing-gap-3);
|
|
330
|
+
--input-utility-gap: var(--spacing-gap-2);
|
|
331
|
+
--input-tertiary-row-gap: var(--spacing-gap-1);
|
|
332
|
+
--input-tertiary-control-row-gap: var(--spacing-gap-1);
|
|
327
333
|
--input-default-radius-base: var(--theme-radius-large-1);
|
|
328
334
|
--input-tertiary-radius-base: var(--theme-radius-large-2);
|
|
329
335
|
--input-table-radius-base: 0;
|
|
336
|
+
--input-tertiary-element-min-height: var(--theme-size-medium-2);
|
|
330
337
|
--input-table-text-small-size: var(--font-body-xxsmall-size);
|
|
331
338
|
--input-table-text-small-line-height: var(--font-body-xxsmall-line-height);
|
|
332
339
|
--input-table-text-small-weight: var(--font-body-xxsmall-weight);
|
|
@@ -340,13 +347,26 @@
|
|
|
340
347
|
--input-label-color: var(--color-label-standard);
|
|
341
348
|
--input-label-accent-color: var(--color-primary-default);
|
|
342
349
|
--input-label-error-color: var(--color-error);
|
|
350
|
+
--input-label-font-size: var(--font-label-small-size);
|
|
351
|
+
--input-label-line-height: var(--font-label-small-line-height);
|
|
352
|
+
--input-label-font-weight: var(--font-label-small-weight);
|
|
343
353
|
--input-helper-color: var(--color-label-neutral);
|
|
344
354
|
--input-helper-success-color: var(--color-success);
|
|
345
355
|
--input-helper-error-color: var(--color-error);
|
|
346
356
|
--input-helper-disabled-color: var(--color-label-disabled);
|
|
357
|
+
--input-helper-font-size: var(--font-label-small-size);
|
|
358
|
+
--input-helper-line-height: var(--font-label-small-line-height);
|
|
347
359
|
/* Text & placeholder colors */
|
|
348
360
|
--input-text-color: var(--color-label-strong);
|
|
361
|
+
--input-text-readonly-color: var(--color-label-strong);
|
|
362
|
+
--input-text-disabled-color: var(--color-label-disabled);
|
|
349
363
|
--input-placeholder-color: var(--color-label-alternative);
|
|
364
|
+
--input-placeholder-disabled-color: var(--color-label-disabled);
|
|
365
|
+
--input-placeholder-readonly-color: var(--input-placeholder-disabled-color);
|
|
366
|
+
--input-font-size: var(--font-body-medium-size);
|
|
367
|
+
--input-line-height: var(--font-body-medium-line-height);
|
|
368
|
+
--input-font-weight: 400;
|
|
369
|
+
--input-letter-spacing: 0px;
|
|
350
370
|
/* Border tokens */
|
|
351
371
|
--input-border-color: var(--color-border-standard-cool-gray);
|
|
352
372
|
--input-border-width-default: 1px;
|
|
@@ -354,6 +374,8 @@
|
|
|
354
374
|
--input-border-active-color: var(--color-blue-80);
|
|
355
375
|
--input-border-success-color: var(--color-blue-80);
|
|
356
376
|
--input-border-table-default-color: transparent;
|
|
377
|
+
--input-border-table-disabled-color: var(--input-border-table-default-color);
|
|
378
|
+
--input-border-table-readonly-color: var(--input-border-table-disabled-color);
|
|
357
379
|
/* error는 Figma 44% alpha */
|
|
358
380
|
--input-border-error-color: rgba(218, 29, 11, 0.44);
|
|
359
381
|
--input-border-disabled-color: var(--color-border-standard-cool-gray);
|
|
@@ -362,6 +384,15 @@
|
|
|
362
384
|
--input-surface-color: var(--color-common-100);
|
|
363
385
|
--input-surface-muted-color: var(--color-neutral-99);
|
|
364
386
|
--input-surface-disabled-color: var(--color-neutral-95);
|
|
387
|
+
--input-table-surface-color: transparent;
|
|
388
|
+
--input-table-surface-disabled-color: var(--input-table-surface-color);
|
|
389
|
+
--input-table-surface-readonly-color: var(
|
|
390
|
+
--input-table-surface-disabled-color
|
|
391
|
+
);
|
|
392
|
+
--input-secondary-surface-color: transparent;
|
|
393
|
+
/* Status/affix colors */
|
|
394
|
+
--input-status-error-color: var(--color-error);
|
|
395
|
+
--input-status-success-color: var(--color-primary-default);
|
|
365
396
|
--theme-navigation-height: 86px;
|
|
366
397
|
--theme-navigation-padding-inline: 32px;
|
|
367
398
|
--theme-navigation-padding-block-start: 8px;
|
|
@@ -405,6 +436,8 @@
|
|
|
405
436
|
/* layout presets */
|
|
406
437
|
--select-width: 100%;
|
|
407
438
|
--select-flex: 0 1 auto;
|
|
439
|
+
--select-layout-gap: var(--spacing-gap-2);
|
|
440
|
+
--select-value-gap: var(--spacing-gap-2);
|
|
408
441
|
--select-primary-height-small: var(--input-default-height-small);
|
|
409
442
|
--select-primary-height-medium: var(--input-default-height-medium);
|
|
410
443
|
--select-primary-height-large: var(--input-default-height-large);
|
|
@@ -426,9 +459,16 @@
|
|
|
426
459
|
--select-table-border-default-color: var(--input-border-table-default-color);
|
|
427
460
|
--select-table-border-focus-color: var(--input-border-active-color);
|
|
428
461
|
--select-table-border-disabled-color: var(--input-border-disabled-color);
|
|
462
|
+
--select-table-border-readonly-color: var(
|
|
463
|
+
--select-table-border-disabled-color
|
|
464
|
+
);
|
|
429
465
|
--select-table-surface-color: transparent;
|
|
430
466
|
--select-table-surface-disabled-color: var(--input-surface-disabled-color);
|
|
467
|
+
--select-table-surface-readonly-color: var(
|
|
468
|
+
--select-table-surface-disabled-color
|
|
469
|
+
);
|
|
431
470
|
--select-table-color-text: var(--input-text-color);
|
|
471
|
+
--select-table-color-text-readonly: var(--select-primary-color-text-readonly);
|
|
432
472
|
--select-table-color-placeholder: var(--input-placeholder-color);
|
|
433
473
|
--select-table-icon-color-default: var(--select-icon-color-default);
|
|
434
474
|
--select-table-icon-color-focused: var(--select-icon-color-focused);
|
|
@@ -464,9 +504,11 @@
|
|
|
464
504
|
--select-icon-size-medium: 2rem;
|
|
465
505
|
--select-icon-size-large: 2rem;
|
|
466
506
|
--select-primary-color-placeholder: var(--input-placeholder-color);
|
|
507
|
+
--select-primary-color-surface: var(--input-surface-color);
|
|
467
508
|
--select-primary-color-text: var(--color-label-alternative);
|
|
468
509
|
--select-primary-color-text-focused: var(--color-label-strong);
|
|
469
510
|
--select-primary-color-text-disabled: var(--color-label-disabled);
|
|
511
|
+
--select-primary-color-text-readonly: var(--color-label-strong);
|
|
470
512
|
--select-primary-color-border: var(--input-border-color);
|
|
471
513
|
--select-primary-color-border-focused: var(--input-border-active-color);
|
|
472
514
|
--select-primary-color-border-disabled: var(--input-border-disabled-color);
|
|
@@ -478,7 +520,15 @@
|
|
|
478
520
|
);
|
|
479
521
|
--select-primary-color-surface-disabled: var(--input-surface-disabled-color);
|
|
480
522
|
--select-secondary-color-text: var(--color-label-standard);
|
|
523
|
+
--select-secondary-color-text-disabled: var(--color-label-disabled);
|
|
524
|
+
--select-secondary-color-text-readonly: var(
|
|
525
|
+
--select-primary-color-text-readonly
|
|
526
|
+
);
|
|
481
527
|
--select-secondary-color-placeholder: var(--color-label-alternative);
|
|
528
|
+
--select-secondary-color-placeholder-disabled: var(--color-label-disabled);
|
|
529
|
+
--select-secondary-color-placeholder-readonly: var(
|
|
530
|
+
--select-secondary-color-placeholder-disabled
|
|
531
|
+
);
|
|
482
532
|
--select-color-surface-secondary: transparent;
|
|
483
533
|
--select-color-surface-secondary-hover: var(--color-surface-static-cool-gray);
|
|
484
534
|
--select-color-surface-secondary-active: var(--color-surface-standard);
|
|
@@ -488,8 +538,10 @@
|
|
|
488
538
|
--select-icon-color-disabled: var(--color-cool-gray-85);
|
|
489
539
|
/* Multi select chip */
|
|
490
540
|
--select-multiple-chip-gap: var(--spacing-gap-2);
|
|
541
|
+
--select-multiple-tag-label-gap: var(--spacing-gap-1);
|
|
491
542
|
--select-multiple-chip-padding-inline: var(--spacing-padding-4);
|
|
492
543
|
--select-multiple-chip-padding-block: 0px;
|
|
544
|
+
--select-multiple-chip-removable-padding-right: var(--spacing-padding-2);
|
|
493
545
|
--select-multiple-chip-radius: var(--theme-radius-medium-2);
|
|
494
546
|
--select-multiple-chip-font-size: var(--font-body-small-size);
|
|
495
547
|
--select-multiple-chip-line-height: var(--font-body-small-line-height);
|
|
@@ -501,6 +553,7 @@
|
|
|
501
553
|
--select-multiple-chip-border-color: transparent;
|
|
502
554
|
--select-multiple-chip-remove-color: var(--color-label-strong);
|
|
503
555
|
--select-multiple-chip-remove-hover-color: var(--color-label-strong);
|
|
556
|
+
--select-multiple-chip-remove-focus-outline-color: var(--color-border-strong);
|
|
504
557
|
--select-multiple-chip-summary-color: var(--color-label-standard);
|
|
505
558
|
--select-multiple-chip-summary-surface: var(--color-surface-standard);
|
|
506
559
|
--select-multiple-chip-summary-border-color: transparent;
|
|
@@ -512,6 +565,8 @@
|
|
|
512
565
|
--font-body-medium-line-height
|
|
513
566
|
);
|
|
514
567
|
--select-multiple-chip-summary-font-weight: 400;
|
|
568
|
+
/* Typography tokens */
|
|
569
|
+
--select-text-font-family: var(--font-body-medium-family);
|
|
515
570
|
--table-border-color: var(--color-border-standard-cool-gray);
|
|
516
571
|
--table-line-head-background-color: var(--color-surface-static-cool-gray);
|
|
517
572
|
--table-grid-head-background-color: var(
|
|
@@ -522,6 +577,7 @@
|
|
|
522
577
|
);
|
|
523
578
|
--table-grid-row-highlight-background-color: rgba(229, 238, 255, 0.52);
|
|
524
579
|
--table-cell-background-color: var(--color-surface-static-white);
|
|
580
|
+
--table-cell-content-gap: var(--spacing-gap-2);
|
|
525
581
|
--table-line-cell-height-head: 44px;
|
|
526
582
|
--table-line-cell-height-body: 56px;
|
|
527
583
|
--table-grid-cell-height: 48px;
|
|
@@ -2317,7 +2373,7 @@ figure.chip {
|
|
|
2317
2373
|
.input {
|
|
2318
2374
|
display: flex;
|
|
2319
2375
|
flex-direction: column;
|
|
2320
|
-
gap: var(--
|
|
2376
|
+
gap: var(--input-layout-gap);
|
|
2321
2377
|
width: var(--input-width);
|
|
2322
2378
|
flex: var(--input-flex);
|
|
2323
2379
|
min-width: 0;
|
|
@@ -2347,9 +2403,9 @@ figure.chip {
|
|
|
2347
2403
|
|
|
2348
2404
|
.input-label {
|
|
2349
2405
|
color: var(--input-label-color);
|
|
2350
|
-
font-size: var(--
|
|
2351
|
-
line-height: var(--
|
|
2352
|
-
font-weight: var(--
|
|
2406
|
+
font-size: var(--input-label-font-size);
|
|
2407
|
+
line-height: var(--input-label-line-height);
|
|
2408
|
+
font-weight: var(--input-label-font-weight);
|
|
2353
2409
|
}
|
|
2354
2410
|
|
|
2355
2411
|
.input-label--visually-hidden {
|
|
@@ -2395,8 +2451,8 @@ figure.chip {
|
|
|
2395
2451
|
border-bottom: var(--input-border-width-default) solid var(--input-border-color);
|
|
2396
2452
|
border-radius: 0;
|
|
2397
2453
|
padding-inline: 0;
|
|
2398
|
-
padding-block: var(--
|
|
2399
|
-
background-color:
|
|
2454
|
+
padding-block: var(--input-secondary-padding-block);
|
|
2455
|
+
background-color: var(--input-secondary-surface-color);
|
|
2400
2456
|
}
|
|
2401
2457
|
.input-field[data-priority=secondary][data-state=active], .input-field[data-priority=secondary][data-state=focused] {
|
|
2402
2458
|
border-bottom-color: var(--input-border-active-color);
|
|
@@ -2418,7 +2474,7 @@ figure.chip {
|
|
|
2418
2474
|
border-radius: var(--input-tertiary-radius-base);
|
|
2419
2475
|
background-color: var(--input-surface-color);
|
|
2420
2476
|
min-height: var(--input-tertiary-height-base);
|
|
2421
|
-
row-gap: var(--
|
|
2477
|
+
row-gap: var(--input-tertiary-row-gap);
|
|
2422
2478
|
column-gap: var(--input-default-gap);
|
|
2423
2479
|
flex-wrap: wrap;
|
|
2424
2480
|
align-items: center;
|
|
@@ -2427,7 +2483,7 @@ figure.chip {
|
|
|
2427
2483
|
display: grid;
|
|
2428
2484
|
grid-template-columns: auto minmax(0, 1fr);
|
|
2429
2485
|
column-gap: var(--input-default-gap);
|
|
2430
|
-
row-gap: var(--
|
|
2486
|
+
row-gap: var(--input-tertiary-control-row-gap);
|
|
2431
2487
|
align-items: center;
|
|
2432
2488
|
flex: 1 1 auto;
|
|
2433
2489
|
min-width: 0;
|
|
@@ -2438,7 +2494,7 @@ figure.chip {
|
|
|
2438
2494
|
align-self: flex-start;
|
|
2439
2495
|
}
|
|
2440
2496
|
.input-field[data-priority=tertiary] .input-element {
|
|
2441
|
-
min-height: var(--
|
|
2497
|
+
min-height: var(--input-tertiary-element-min-height);
|
|
2442
2498
|
width: auto;
|
|
2443
2499
|
flex: 1 1 auto;
|
|
2444
2500
|
}
|
|
@@ -2449,7 +2505,15 @@ figure.chip {
|
|
|
2449
2505
|
.input-field[data-priority=table] {
|
|
2450
2506
|
border-radius: var(--input-table-radius-base);
|
|
2451
2507
|
border-color: var(--input-border-table-default-color);
|
|
2452
|
-
background-color:
|
|
2508
|
+
background-color: var(--input-table-surface-color);
|
|
2509
|
+
}
|
|
2510
|
+
.input-field[data-priority=table][data-state=disabled] {
|
|
2511
|
+
border-color: var(--input-border-table-disabled-color);
|
|
2512
|
+
background-color: var(--input-table-surface-disabled-color);
|
|
2513
|
+
}
|
|
2514
|
+
.input-field[data-priority=table][data-readonly=true] {
|
|
2515
|
+
border-color: var(--input-border-table-readonly-color);
|
|
2516
|
+
background-color: var(--input-table-surface-readonly-color);
|
|
2453
2517
|
}
|
|
2454
2518
|
.input-field:not([data-priority=secondary])[data-state=active], .input-field:not([data-priority=secondary])[data-state=focused] {
|
|
2455
2519
|
border-color: var(--input-border-active-color);
|
|
@@ -2468,6 +2532,11 @@ figure.chip {
|
|
|
2468
2532
|
border-width: var(--input-border-width-default);
|
|
2469
2533
|
background-color: var(--input-surface-disabled-color); /* disabled 배경 토큰 */
|
|
2470
2534
|
}
|
|
2535
|
+
.input-field:not([data-priority=secondary])[data-readonly=true] {
|
|
2536
|
+
border-color: var(--input-border-disabled-color);
|
|
2537
|
+
border-width: var(--input-border-width-default);
|
|
2538
|
+
background-color: var(--input-surface-disabled-color);
|
|
2539
|
+
}
|
|
2471
2540
|
|
|
2472
2541
|
.input-element {
|
|
2473
2542
|
flex: 1 1 auto;
|
|
@@ -2476,10 +2545,10 @@ figure.chip {
|
|
|
2476
2545
|
background: transparent;
|
|
2477
2546
|
color: var(--input-text-color);
|
|
2478
2547
|
caret-color: var(--input-text-color);
|
|
2479
|
-
font-size: var(--font-
|
|
2480
|
-
line-height: var(--
|
|
2481
|
-
font-weight:
|
|
2482
|
-
letter-spacing:
|
|
2548
|
+
font-size: var(--input-font-size);
|
|
2549
|
+
line-height: var(--input-line-height);
|
|
2550
|
+
font-weight: var(--input-font-weight);
|
|
2551
|
+
letter-spacing: var(--input-letter-spacing);
|
|
2483
2552
|
outline: none;
|
|
2484
2553
|
box-shadow: none;
|
|
2485
2554
|
min-width: 0;
|
|
@@ -2487,11 +2556,18 @@ figure.chip {
|
|
|
2487
2556
|
.input-element::placeholder {
|
|
2488
2557
|
color: var(--input-placeholder-color);
|
|
2489
2558
|
}
|
|
2559
|
+
.input-element:read-only {
|
|
2560
|
+
color: var(--input-text-readonly-color);
|
|
2561
|
+
caret-color: var(--input-text-readonly-color);
|
|
2562
|
+
}
|
|
2563
|
+
.input-element:read-only::placeholder {
|
|
2564
|
+
color: var(--input-placeholder-readonly-color);
|
|
2565
|
+
}
|
|
2490
2566
|
.input-element:disabled {
|
|
2491
|
-
color: var(--
|
|
2567
|
+
color: var(--input-text-disabled-color);
|
|
2492
2568
|
}
|
|
2493
2569
|
.input-element:disabled::placeholder {
|
|
2494
|
-
color: var(--
|
|
2570
|
+
color: var(--input-placeholder-disabled-color);
|
|
2495
2571
|
}
|
|
2496
2572
|
.input-element:focus, .input-element:focus-visible, .input-element:focus-within {
|
|
2497
2573
|
outline: none;
|
|
@@ -2509,9 +2585,9 @@ figure.chip {
|
|
|
2509
2585
|
.input-field-utilities {
|
|
2510
2586
|
display: flex;
|
|
2511
2587
|
align-items: center;
|
|
2512
|
-
gap: var(--
|
|
2588
|
+
gap: var(--input-utility-gap);
|
|
2513
2589
|
flex-shrink: 0;
|
|
2514
|
-
margin-left: var(--
|
|
2590
|
+
margin-left: var(--input-affix-gap);
|
|
2515
2591
|
}
|
|
2516
2592
|
.input-field-utilities .input-affix {
|
|
2517
2593
|
margin-left: 0;
|
|
@@ -2520,8 +2596,8 @@ figure.chip {
|
|
|
2520
2596
|
.input-inline-label {
|
|
2521
2597
|
order: -2;
|
|
2522
2598
|
flex-basis: 100%;
|
|
2523
|
-
font-size: var(--
|
|
2524
|
-
line-height: var(--
|
|
2599
|
+
font-size: var(--input-label-font-size);
|
|
2600
|
+
line-height: var(--input-label-line-height);
|
|
2525
2601
|
color: var(--input-label-color);
|
|
2526
2602
|
}
|
|
2527
2603
|
|
|
@@ -2530,7 +2606,7 @@ figure.chip {
|
|
|
2530
2606
|
}
|
|
2531
2607
|
|
|
2532
2608
|
.input-field[data-priority=tertiary] .input-element {
|
|
2533
|
-
min-height: var(--
|
|
2609
|
+
min-height: var(--input-tertiary-element-min-height);
|
|
2534
2610
|
}
|
|
2535
2611
|
|
|
2536
2612
|
.input-field[data-priority=table][data-size=small] .input-element {
|
|
@@ -2553,8 +2629,8 @@ figure.chip {
|
|
|
2553
2629
|
|
|
2554
2630
|
.input-helper-text {
|
|
2555
2631
|
color: var(--input-helper-color);
|
|
2556
|
-
font-size: var(--
|
|
2557
|
-
line-height: var(--
|
|
2632
|
+
font-size: var(--input-helper-font-size);
|
|
2633
|
+
line-height: var(--input-helper-line-height);
|
|
2558
2634
|
}
|
|
2559
2635
|
[data-state=error] .input-helper-text {
|
|
2560
2636
|
color: var(--input-border-error-color);
|
|
@@ -2572,19 +2648,19 @@ figure.chip {
|
|
|
2572
2648
|
}
|
|
2573
2649
|
.input-affix-left {
|
|
2574
2650
|
order: -1;
|
|
2575
|
-
margin-right: var(--
|
|
2651
|
+
margin-right: var(--input-affix-gap);
|
|
2576
2652
|
}
|
|
2577
2653
|
.input-affix-right, .input-affix-clear, .input-affix-status {
|
|
2578
|
-
margin-left: var(--
|
|
2654
|
+
margin-left: var(--input-affix-gap);
|
|
2579
2655
|
}
|
|
2580
2656
|
.input-affix-clear, .input-affix-status {
|
|
2581
2657
|
color: var(--input-text-color);
|
|
2582
2658
|
}
|
|
2583
2659
|
.input-affix-status[data-state=error] {
|
|
2584
|
-
color: var(--
|
|
2660
|
+
color: var(--input-status-error-color);
|
|
2585
2661
|
}
|
|
2586
2662
|
.input-affix-status[data-state=success] {
|
|
2587
|
-
color: var(--
|
|
2663
|
+
color: var(--input-status-success-color);
|
|
2588
2664
|
}
|
|
2589
2665
|
|
|
2590
2666
|
.input-field[data-priority=secondary] {
|
|
@@ -2606,6 +2682,10 @@ figure.chip {
|
|
|
2606
2682
|
border-bottom-color: var(--input-border-underline-disabled-color);
|
|
2607
2683
|
border-bottom-width: var(--input-border-width-default);
|
|
2608
2684
|
}
|
|
2685
|
+
.input-field[data-priority=secondary][data-readonly=true] {
|
|
2686
|
+
border-bottom-color: var(--input-border-underline-disabled-color);
|
|
2687
|
+
border-bottom-width: var(--input-border-width-default);
|
|
2688
|
+
}
|
|
2609
2689
|
|
|
2610
2690
|
.input[data-state=active] .input-label,
|
|
2611
2691
|
.input[data-state=active] .input-inline-label,
|
|
@@ -2635,11 +2715,16 @@ figure.chip {
|
|
|
2635
2715
|
background-color: var(--input-surface-disabled-color);
|
|
2636
2716
|
}
|
|
2637
2717
|
.input[data-state=disabled] .input-field[data-priority=secondary] {
|
|
2638
|
-
background-color:
|
|
2718
|
+
background-color: var(--input-secondary-surface-color);
|
|
2639
2719
|
}
|
|
2640
2720
|
.input[data-state=disabled] .input-field[data-priority=table] {
|
|
2641
|
-
background-color:
|
|
2642
|
-
border-color: var(--input-border-table-
|
|
2721
|
+
background-color: var(--input-table-surface-disabled-color);
|
|
2722
|
+
border-color: var(--input-border-table-disabled-color);
|
|
2723
|
+
}
|
|
2724
|
+
|
|
2725
|
+
.input[data-readonly=true] .input-field[data-priority=table] {
|
|
2726
|
+
background-color: var(--input-table-surface-readonly-color);
|
|
2727
|
+
border-color: var(--input-border-table-readonly-color);
|
|
2643
2728
|
}
|
|
2644
2729
|
|
|
2645
2730
|
.input-side {
|
|
@@ -3496,7 +3581,7 @@ figure.chip {
|
|
|
3496
3581
|
width: var(--select-width);
|
|
3497
3582
|
flex: var(--select-flex);
|
|
3498
3583
|
flex-direction: column;
|
|
3499
|
-
gap: var(--
|
|
3584
|
+
gap: var(--select-layout-gap);
|
|
3500
3585
|
min-width: 0;
|
|
3501
3586
|
}
|
|
3502
3587
|
|
|
@@ -3535,7 +3620,7 @@ figure.chip {
|
|
|
3535
3620
|
padding: var(--select-primary-padding-block) var(--select-primary-padding-inline);
|
|
3536
3621
|
border: var(--select-primary-border-width-default) solid var(--select-primary-color-border);
|
|
3537
3622
|
border-radius: var(--select-primary-radius-medium);
|
|
3538
|
-
background-color: var(--
|
|
3623
|
+
background-color: var(--select-primary-color-surface);
|
|
3539
3624
|
cursor: pointer;
|
|
3540
3625
|
transition: border-color 150ms ease, background-color 150ms ease, color 150ms ease;
|
|
3541
3626
|
text-align: left;
|
|
@@ -3580,7 +3665,7 @@ figure.chip {
|
|
|
3580
3665
|
background-color: var(--select-color-border-secondary-focused);
|
|
3581
3666
|
}
|
|
3582
3667
|
.select-button[data-priority=secondary][data-state=disabled], .select-button[data-priority=secondary]:disabled {
|
|
3583
|
-
color: var(--color-
|
|
3668
|
+
color: var(--select-secondary-color-text-disabled);
|
|
3584
3669
|
cursor: not-allowed;
|
|
3585
3670
|
}
|
|
3586
3671
|
.select-button[data-priority=table] {
|
|
@@ -3599,6 +3684,27 @@ figure.chip {
|
|
|
3599
3684
|
border-width: var(--select-primary-border-width-focus);
|
|
3600
3685
|
--select-icon-fill: var(--select-table-icon-color-focused);
|
|
3601
3686
|
}
|
|
3687
|
+
.select-button:not([data-priority=secondary])[data-readonly=true] {
|
|
3688
|
+
border-color: var(--select-primary-color-border-disabled);
|
|
3689
|
+
background-color: var(--select-primary-color-surface-disabled);
|
|
3690
|
+
cursor: default;
|
|
3691
|
+
--select-icon-fill: var(--select-icon-color-disabled);
|
|
3692
|
+
}
|
|
3693
|
+
.select-button[data-priority=secondary][data-readonly=true] {
|
|
3694
|
+
border-color: transparent;
|
|
3695
|
+
background-color: var(--select-color-surface-secondary-disabled);
|
|
3696
|
+
cursor: default;
|
|
3697
|
+
}
|
|
3698
|
+
.select-button[data-priority=secondary][data-readonly=true]::after {
|
|
3699
|
+
background-color: var(--select-color-border-secondary-disabled);
|
|
3700
|
+
height: var(--select-secondary-underline-width-default);
|
|
3701
|
+
}
|
|
3702
|
+
.select-button[data-priority=table][data-readonly=true] {
|
|
3703
|
+
border-color: var(--select-table-border-readonly-color);
|
|
3704
|
+
background-color: var(--select-table-surface-readonly-color);
|
|
3705
|
+
cursor: not-allowed;
|
|
3706
|
+
--select-icon-fill: var(--select-table-icon-color-disabled);
|
|
3707
|
+
}
|
|
3602
3708
|
.select-button:not([data-priority=secondary])[data-state=disabled], .select-button:not([data-priority=secondary]):disabled {
|
|
3603
3709
|
border-color: var(--select-primary-color-border-disabled);
|
|
3604
3710
|
background-color: var(--select-primary-color-surface-disabled);
|
|
@@ -3625,13 +3731,13 @@ figure.chip {
|
|
|
3625
3731
|
min-width: 0;
|
|
3626
3732
|
display: flex;
|
|
3627
3733
|
flex-direction: column;
|
|
3628
|
-
gap: var(--
|
|
3734
|
+
gap: var(--select-value-gap);
|
|
3629
3735
|
}
|
|
3630
3736
|
|
|
3631
3737
|
.select-label {
|
|
3632
3738
|
flex: 1 1 auto;
|
|
3633
3739
|
min-width: 0;
|
|
3634
|
-
font-family: var(--
|
|
3740
|
+
font-family: var(--select-text-font-family);
|
|
3635
3741
|
font-size: var(--select-text-medium-size);
|
|
3636
3742
|
font-weight: var(--select-text-medium-weight);
|
|
3637
3743
|
line-height: var(--select-text-medium-line-height);
|
|
@@ -3647,14 +3753,23 @@ figure.chip {
|
|
|
3647
3753
|
.select-button[data-priority=table] .select-label {
|
|
3648
3754
|
color: var(--select-table-color-text);
|
|
3649
3755
|
}
|
|
3756
|
+
.select-button[data-priority=table][data-readonly=true] .select-label {
|
|
3757
|
+
color: var(--select-table-color-text-readonly);
|
|
3758
|
+
}
|
|
3650
3759
|
.select-button[data-state=focused] .select-label, .select-button[data-open=true] .select-label {
|
|
3651
3760
|
color: var(--select-primary-color-text-focused);
|
|
3652
3761
|
}
|
|
3653
3762
|
.select-button[data-state=disabled] .select-label {
|
|
3654
3763
|
color: var(--select-primary-color-text-disabled);
|
|
3655
3764
|
}
|
|
3765
|
+
.select-button[data-readonly=true] .select-label {
|
|
3766
|
+
color: var(--select-primary-color-text-readonly);
|
|
3767
|
+
}
|
|
3656
3768
|
.select-button[data-priority=secondary][data-state=disabled] .select-label {
|
|
3657
|
-
color: var(--color-
|
|
3769
|
+
color: var(--select-secondary-color-text-disabled);
|
|
3770
|
+
}
|
|
3771
|
+
.select-button[data-priority=secondary][data-readonly=true] .select-label {
|
|
3772
|
+
color: var(--select-secondary-color-text-readonly);
|
|
3658
3773
|
}
|
|
3659
3774
|
|
|
3660
3775
|
.select-label-placeholder {
|
|
@@ -3666,6 +3781,12 @@ figure.chip {
|
|
|
3666
3781
|
.select-button[data-priority=table] .select-label-placeholder {
|
|
3667
3782
|
color: var(--select-table-color-placeholder);
|
|
3668
3783
|
}
|
|
3784
|
+
.select-button[data-state=disabled] .select-label-placeholder, .select-button[data-readonly=true] .select-label-placeholder {
|
|
3785
|
+
color: var(--select-primary-color-text-disabled);
|
|
3786
|
+
}
|
|
3787
|
+
.select-button[data-priority=secondary][data-state=disabled] .select-label-placeholder, .select-button[data-priority=secondary][data-readonly=true] .select-label-placeholder {
|
|
3788
|
+
color: var(--select-secondary-color-placeholder-disabled);
|
|
3789
|
+
}
|
|
3669
3790
|
|
|
3670
3791
|
.select-button[data-size=small] .select-label {
|
|
3671
3792
|
font-size: var(--select-text-small-size);
|
|
@@ -3718,7 +3839,7 @@ figure.chip {
|
|
|
3718
3839
|
gap: var(--select-multiple-chip-gap);
|
|
3719
3840
|
padding: var(--select-multiple-chip-padding-block) var(--select-multiple-chip-padding-inline);
|
|
3720
3841
|
border-radius: var(--select-multiple-chip-radius);
|
|
3721
|
-
border: 1px solid var(--select-multiple-chip-border-color
|
|
3842
|
+
border: 1px solid var(--select-multiple-chip-border-color);
|
|
3722
3843
|
background-color: var(--select-multiple-chip-surface);
|
|
3723
3844
|
color: var(--select-multiple-chip-color);
|
|
3724
3845
|
font-size: var(--select-multiple-chip-font-size);
|
|
@@ -3731,7 +3852,7 @@ figure.chip {
|
|
|
3731
3852
|
border-color: var(--select-color-border-secondary-focused);
|
|
3732
3853
|
}
|
|
3733
3854
|
.select-tag[data-removable=true] {
|
|
3734
|
-
padding-right: var(--
|
|
3855
|
+
padding-right: var(--select-multiple-chip-removable-padding-right);
|
|
3735
3856
|
}
|
|
3736
3857
|
|
|
3737
3858
|
.select-tag[data-kind=summary],
|
|
@@ -3750,7 +3871,7 @@ figure.chip {
|
|
|
3750
3871
|
.select-tag-label {
|
|
3751
3872
|
display: flex;
|
|
3752
3873
|
align-items: center;
|
|
3753
|
-
gap: var(--
|
|
3874
|
+
gap: var(--select-multiple-tag-label-gap);
|
|
3754
3875
|
min-width: 0;
|
|
3755
3876
|
}
|
|
3756
3877
|
|
|
@@ -3776,7 +3897,7 @@ figure.chip {
|
|
|
3776
3897
|
transition: color 150ms ease;
|
|
3777
3898
|
}
|
|
3778
3899
|
.select-tag-remove:focus-visible {
|
|
3779
|
-
outline: 0.2rem solid var(--
|
|
3900
|
+
outline: 0.2rem solid var(--select-multiple-chip-remove-focus-outline-color);
|
|
3780
3901
|
outline-offset: 0.1rem;
|
|
3781
3902
|
}
|
|
3782
3903
|
.select-tag-remove:hover {
|
|
@@ -4094,6 +4215,7 @@ figure.chip {
|
|
|
4094
4215
|
height: 100%;
|
|
4095
4216
|
justify-content: flex-start;
|
|
4096
4217
|
box-sizing: border-box;
|
|
4218
|
+
gap: var(--table-cell-content-gap);
|
|
4097
4219
|
padding-inline: var(--table-cell-padding-inline);
|
|
4098
4220
|
padding-block: var(--table-cell-padding-block);
|
|
4099
4221
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uniai-fe/uds-primitives",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.7",
|
|
4
4
|
"description": "UNIAI Design System; Primitives Components Package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -53,7 +53,8 @@
|
|
|
53
53
|
"module:typecheck": "pnpm typecheck",
|
|
54
54
|
"module:build": "pnpm build",
|
|
55
55
|
"design-primitives:build": "pnpm run build",
|
|
56
|
-
"design-primitives:dev": "pnpm run dev"
|
|
56
|
+
"design-primitives:dev": "pnpm run dev",
|
|
57
|
+
"publish:public": "bash ../../../scripts/npm-publish.sh"
|
|
57
58
|
},
|
|
58
59
|
"peerDependencies": {
|
|
59
60
|
"@mantine/core": "^8",
|
|
@@ -52,6 +52,8 @@ export default function AddressFieldTemplate({
|
|
|
52
52
|
}: AddressTemplateProps) {
|
|
53
53
|
const formContext = useFormContext<FieldValues>();
|
|
54
54
|
const inputSize = inputStyle?.size ?? "medium";
|
|
55
|
+
// 변경: 템플릿 루트 disabled가 선언되면 하위 컨트롤에 우선 적용한다.
|
|
56
|
+
const isRootDisabled = disabled === true;
|
|
55
57
|
|
|
56
58
|
const resolvedAddressFieldName = addressFieldName
|
|
57
59
|
? (addressFieldName as Path<FieldValues>)
|
|
@@ -84,6 +86,11 @@ export default function AddressFieldTemplate({
|
|
|
84
86
|
: detailInput?.register;
|
|
85
87
|
const detailName =
|
|
86
88
|
detailInput?.name ?? detailFieldName ?? resolvedDetailFieldName;
|
|
89
|
+
const isAddressFieldDisabled =
|
|
90
|
+
isRootDisabled || Boolean(addressInput?.disabled);
|
|
91
|
+
const isDetailFieldDisabled =
|
|
92
|
+
isRootDisabled || Boolean(detailInput?.disabled);
|
|
93
|
+
const isFindButtonDisabled = isRootDisabled || Boolean(buttonProps?.disabled);
|
|
87
94
|
|
|
88
95
|
return (
|
|
89
96
|
<div className={clsx("input-address-container", className)}>
|
|
@@ -95,7 +102,7 @@ export default function AddressFieldTemplate({
|
|
|
95
102
|
value={resolvedAddress.text}
|
|
96
103
|
width="fill"
|
|
97
104
|
readOnly
|
|
98
|
-
disabled
|
|
105
|
+
disabled={isAddressFieldDisabled}
|
|
99
106
|
className="input-address-field input-address-field-base"
|
|
100
107
|
/>
|
|
101
108
|
<AddressFindButton
|
|
@@ -115,7 +122,7 @@ export default function AddressFieldTemplate({
|
|
|
115
122
|
? "large"
|
|
116
123
|
: "medium")
|
|
117
124
|
}
|
|
118
|
-
disabled={
|
|
125
|
+
disabled={isFindButtonDisabled}
|
|
119
126
|
/>
|
|
120
127
|
</div>
|
|
121
128
|
{detailInput && (
|
|
@@ -126,6 +133,8 @@ export default function AddressFieldTemplate({
|
|
|
126
133
|
register={detailRegister}
|
|
127
134
|
name={detailName}
|
|
128
135
|
width="full"
|
|
136
|
+
// 변경: 루트 disabled가 선언되면 상세 주소 입력도 비활성화한다.
|
|
137
|
+
disabled={isDetailFieldDisabled}
|
|
129
138
|
className="input-address-field input-address-field-detail"
|
|
130
139
|
/>
|
|
131
140
|
</div>
|
|
@@ -86,6 +86,7 @@ const InputBase = forwardRef<HTMLInputElement, InputProps>(
|
|
|
86
86
|
},
|
|
87
87
|
ref,
|
|
88
88
|
) => {
|
|
89
|
+
const isReadOnly = restProps.readOnly === true;
|
|
89
90
|
// table priority는 width 지정이 없으면 셀 가로폭을 기본으로 채운다.
|
|
90
91
|
const isTablePriority = priority === "table";
|
|
91
92
|
const resolvedBlock = block || (isTablePriority && width === undefined);
|
|
@@ -104,8 +105,9 @@ const InputBase = forwardRef<HTMLInputElement, InputProps>(
|
|
|
104
105
|
: false;
|
|
105
106
|
});
|
|
106
107
|
useEffect(() => {
|
|
107
|
-
if (disabled || stateProp === "disabled"
|
|
108
|
-
|
|
108
|
+
if (disabled || stateProp === "disabled" || isReadOnly)
|
|
109
|
+
setIsFocused(false);
|
|
110
|
+
}, [disabled, isReadOnly, stateProp]);
|
|
109
111
|
|
|
110
112
|
useEffect(() => {
|
|
111
113
|
if (value !== undefined && value !== null)
|
|
@@ -129,6 +131,10 @@ const InputBase = forwardRef<HTMLInputElement, InputProps>(
|
|
|
129
131
|
);
|
|
130
132
|
|
|
131
133
|
const handleFocus = (event: FocusEvent<HTMLInputElement>) => {
|
|
134
|
+
if (isReadOnly) {
|
|
135
|
+
onFocus?.(event);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
132
138
|
setIsFocused(true);
|
|
133
139
|
onFocus?.(event);
|
|
134
140
|
};
|
|
@@ -203,6 +209,7 @@ const InputBase = forwardRef<HTMLInputElement, InputProps>(
|
|
|
203
209
|
data-priority={priority}
|
|
204
210
|
data-size={size}
|
|
205
211
|
data-state={visualState}
|
|
212
|
+
data-readonly={isReadOnly ? "true" : undefined}
|
|
206
213
|
data-block={resolvedBlock ? "true" : undefined}
|
|
207
214
|
{...(simulatedState ? { "data-simulated-state": simulatedState } : {})}
|
|
208
215
|
data-width={widthAttr}
|
|
@@ -224,6 +231,7 @@ const InputBase = forwardRef<HTMLInputElement, InputProps>(
|
|
|
224
231
|
data-state={visualState}
|
|
225
232
|
data-priority={priority}
|
|
226
233
|
data-size={size}
|
|
234
|
+
data-readonly={isReadOnly ? "true" : undefined}
|
|
227
235
|
data-block={resolvedBlock ? "true" : undefined}
|
|
228
236
|
>
|
|
229
237
|
{/* 필드 컨트롤 wrapper; 슬롯과 input 정렬 */}
|