@stn-uiux/pub-ui 0.1.63 → 0.1.65

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 (44) hide show
  1. package/dist/{chunk-Q4QXONXL.js → chunk-4QTBT6OB.js} +2 -33
  2. package/dist/chunk-4QTBT6OB.js.map +1 -0
  3. package/dist/chunk-AVICAV6Z.js +1 -0
  4. package/dist/{chunk-XQ7UUG7Y.js → chunk-BTVWG4GB.js} +2 -2
  5. package/dist/{chunk-3RYAWLME.js → chunk-ESH5VDHX.js} +2 -2
  6. package/dist/{chunk-NHYZ7AWK.js → chunk-JHXSF7FS.js} +2 -2
  7. package/dist/{chunk-NHYZ7AWK.js.map → chunk-JHXSF7FS.js.map} +1 -1
  8. package/dist/{chunk-YMWHZNBT.js → chunk-N4GLOJTF.js} +2 -2
  9. package/dist/chunk-VNQUWGQ7.js +81 -0
  10. package/dist/chunk-VNQUWGQ7.js.map +1 -0
  11. package/dist/cli.js +3 -3
  12. package/dist/data/index.d.ts +1 -0
  13. package/dist/data/index.js +18 -6
  14. package/dist/data/stnBreadcrumb.js +3 -3
  15. package/dist/data/stnHeader.js +3 -3
  16. package/dist/data/stnSideNavItem.js +3 -3
  17. package/dist/data/stnSystemIcons.js +2 -2
  18. package/dist/data/stnSystemIconsData.generated.js +1 -1
  19. package/dist/data/stnTextArea.d.ts +46 -0
  20. package/dist/data/stnTextArea.js +15 -0
  21. package/dist/data/stnTextArea.js.map +1 -0
  22. package/dist/index.d.ts +1 -0
  23. package/dist/index.js +18 -6
  24. package/package.json +1 -1
  25. package/styles/@assets/svg/system/fill/alert1.svg +2 -2
  26. package/styles/components/stn-chip.css +6 -0
  27. package/styles/components/stn-dropdown.css +42 -97
  28. package/styles/components/stn-label-prefix.css +2 -9
  29. package/styles/components/stn-scroll.css +18 -9
  30. package/styles/components/stn-status.css +13 -11
  31. package/styles/components/stn-table.css +0 -29
  32. package/styles/components/stn-text-area.css +375 -0
  33. package/styles/components/stn-tooltip.css +11 -26
  34. package/styles/layouts/stn-layer1-content.css +25 -0
  35. package/styles/patterns/stn-alert-center.css +16 -9
  36. package/styles/patterns/stn-section-side.css +0 -7
  37. package/styles/style-pub.css +1 -0
  38. package/styles/tokens/stn-colors-semantic.css +53 -3
  39. package/dist/chunk-A5KLX6NX.js +0 -1
  40. package/dist/chunk-Q4QXONXL.js.map +0 -1
  41. /package/dist/{chunk-A5KLX6NX.js.map → chunk-AVICAV6Z.js.map} +0 -0
  42. /package/dist/{chunk-XQ7UUG7Y.js.map → chunk-BTVWG4GB.js.map} +0 -0
  43. /package/dist/{chunk-3RYAWLME.js.map → chunk-ESH5VDHX.js.map} +0 -0
  44. /package/dist/{chunk-YMWHZNBT.js.map → chunk-N4GLOJTF.js.map} +0 -0
@@ -70,14 +70,6 @@
70
70
  font-size: var(--stn-text-body-small-size);
71
71
  }
72
72
 
73
- .stn-dropdown.sm.on>.selected {
74
- border-radius: var(--stn-radius-dropdown-sm) var(--stn-radius-dropdown-sm) 0 0;
75
- }
76
-
77
- .stn-dropdown.sm>.select_option {
78
- border-radius: 0 0 var(--stn-radius-dropdown-sm) var(--stn-radius-dropdown-sm);
79
- }
80
-
81
73
  .stn-dropdown.sm>.select_option>li {
82
74
  height: var(--stn-dropdown-height-sm);
83
75
  line-height: var(--stn-line-height-px-22);
@@ -93,14 +85,6 @@
93
85
  font-size: var(--stn-text-body-small-size);
94
86
  }
95
87
 
96
- .stn-dropdown.md.on>.selected {
97
- border-radius: var(--stn-radius-dropdown-md) var(--stn-radius-dropdown-md) 0 0;
98
- }
99
-
100
- .stn-dropdown.md>.select_option {
101
- border-radius: 0 0 var(--stn-radius-dropdown-md) var(--stn-radius-dropdown-md);
102
- }
103
-
104
88
  .stn-dropdown.md>.select_option>li {
105
89
  height: var(--stn-dropdown-height-md);
106
90
  line-height: var(--stn-line-height-px-30);
@@ -116,14 +100,6 @@
116
100
  font-size: var(--stn-text-body-medium-size);
117
101
  }
118
102
 
119
- .stn-dropdown.lg.on>.selected {
120
- border-radius: var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg) 0 0;
121
- }
122
-
123
- .stn-dropdown.lg>.select_option {
124
- border-radius: 0 0 var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg);
125
- }
126
-
127
103
  .stn-dropdown.lg>.select_option>li {
128
104
  height: var(--stn-dropdown-height-lg);
129
105
  line-height: var(--stn-line-height-px-38);
@@ -143,14 +119,6 @@
143
119
  font-size: var(--stn-text-body-large-size, 15px);
144
120
  }
145
121
 
146
- .stn-dropdown.xl.on>.selected {
147
- border-radius: var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg) 0 0;
148
- }
149
-
150
- .stn-dropdown.xl>.select_option {
151
- border-radius: 0 0 var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg);
152
- }
153
-
154
122
  .stn-dropdown.xl>.select_option>li {
155
123
  height: var(--stn-dropdown-height-xl);
156
124
  line-height: var(--stn-line-height-px-54);
@@ -497,7 +465,7 @@
497
465
  }
498
466
 
499
467
  /* ==========================================================================
500
- 8. Options Popup (select_option & li items)
468
+ 8. Options Popup (select_option & li items) — Modern 8px Floating Card
501
469
  ========================================================================== */
502
470
  .stn-dropdown>.select_option {
503
471
  display: none;
@@ -505,17 +473,21 @@
505
473
  left: 0;
506
474
  top: 100%;
507
475
  width: 100%;
508
- margin: 0;
509
- padding: 0;
476
+ min-width: 100%;
477
+ margin: var(--stn-space-4, 4px) 0 0 0;
478
+ padding: var(--stn-space-4, 4px);
510
479
  list-style: none;
511
480
  box-sizing: border-box;
512
- background-color: var(--stn-dropdown-menu-bg, var(--stn-input-bg));
513
- border: var(--stn-size-1, 1px) solid var(--stn-input-border);
481
+ background-color: var(--stn-dropdown-menu-bg);
482
+ border: var(--stn-size-1, 1px) solid var(--stn-dropdown-menu-border, var(--stn-input-border));
483
+ border-radius: var(--stn-radius-8, 8px) !important;
514
484
  z-index: var(--stn-dropdown-menu-z, 150);
515
485
  box-shadow: var(--stn-dropdown-menu-shadow);
516
486
  max-height: 220px;
517
487
  overflow-y: auto;
518
488
  overflow-x: hidden;
489
+ --stn-scroll-width: var(--stn-scroll-width-thin, 4px);
490
+ --stn-scroll-radius: var(--stn-scroll-radius-thin, 2px);
519
491
  }
520
492
 
521
493
  .stn-dropdown.on>.select_option {
@@ -525,30 +497,53 @@
525
497
  .stn-dropdown>.select_option>li {
526
498
  display: flex;
527
499
  align-items: center;
528
- padding: 4px 8px;
500
+ gap: var(--stn-space-6, 6px);
501
+ padding: var(--stn-space-6, 6px) var(--stn-space-8, 8px);
502
+ border-radius: var(--stn-radius-4, 4px);
529
503
  box-sizing: border-box;
530
- color: var(--stn-input-fg, var(--stn-text-primary));
504
+ font-size: var(--stn-text-body-small-size, 13px);
505
+ line-height: var(--stn-line-height-tight, 1.4);
506
+ color: var(--stn-text-primary);
531
507
  cursor: pointer;
532
508
  white-space: nowrap;
533
509
  overflow: hidden;
534
510
  text-overflow: ellipsis;
535
511
  user-select: none;
536
- transition: background-color var(--stn-motion-duration-fast, 150ms) ease;
512
+ transition: background-color var(--stn-motion-duration-fast, 150ms) ease,
513
+ color var(--stn-motion-duration-fast, 150ms) ease;
537
514
  }
538
515
 
539
516
  .stn-dropdown>.select_option>li:hover,
540
517
  .stn-dropdown>.select_option>li.is-active,
541
518
  .stn-dropdown>.select_option>li.active {
542
- background-color: var(--stn-dropdown-menu-hover-bg, var(--stn-table-row-hover));
519
+ background-color: var(--stn-dropdown-menu-hover-bg);
520
+ color: var(--stn-text-primary);
543
521
  }
544
522
 
545
523
  .stn-dropdown>.select_option>li.is-selected,
546
524
  .stn-dropdown>.select_option>li.selected {
547
- background-color: var(--stn-table-row-selected);
548
- font-weight: var(--stn-font-weight-bold);
525
+ background-color: var(--stn-dropdown-menu-selected-bg);
526
+ font-weight: var(--stn-font-weight-medium, 500);
527
+ color: var(--stn-text-primary);
528
+ }
529
+
530
+ .stn-dropdown__check {
531
+ display: inline-flex;
532
+ align-items: center;
533
+ justify-content: center;
534
+ width: 14px;
535
+ height: 14px;
536
+ flex-shrink: 0;
549
537
  color: var(--stn-primary);
550
538
  }
551
539
 
540
+ .stn-dropdown__item-label {
541
+ flex: 1 1 auto;
542
+ overflow: hidden;
543
+ text-overflow: ellipsis;
544
+ white-space: nowrap;
545
+ }
546
+
552
547
  .stn-dropdown>.select_option>li.is-disabled,
553
548
  .stn-dropdown>.select_option>li[aria-disabled='true'] {
554
549
  opacity: 0.4;
@@ -565,63 +560,13 @@
565
560
  .stn-table .stn-table__footer .stn-dropdown>.select_option {
566
561
  top: auto;
567
562
  bottom: 100%;
568
- border-top: var(--stn-size-1, 1px) solid var(--stn-input-border);
569
- border-bottom: none;
563
+ margin-top: 0;
564
+ margin-bottom: var(--stn-space-4, 4px);
565
+ border: var(--stn-size-1, 1px) solid var(--stn-dropdown-menu-border, var(--stn-input-border));
566
+ border-radius: var(--stn-radius-8, 8px) !important;
570
567
  box-shadow: var(--stn-dropdown-menu-shadow-flip);
571
568
  }
572
569
 
573
- .stn-dropdown.up.on>.selected,
574
- .stn-dropdown.stn-table__page-size.on>.selected,
575
- .stn-table .stn-table__footer .stn-dropdown.on>.selected {
576
- border-top: none;
577
- border-bottom: var(--stn-size-1, 1px) solid var(--stn-input-border);
578
- }
579
-
580
- .stn-dropdown.up.sm>.select_option,
581
- .stn-table .stn-table__footer .stn-dropdown.sm>.select_option {
582
- border-radius: var(--stn-radius-dropdown-sm) var(--stn-radius-dropdown-sm) 0 0;
583
- }
584
-
585
- .stn-dropdown.up.sm.on>.selected,
586
- .stn-table .stn-table__footer .stn-dropdown.sm.on>.selected {
587
- border-radius: 0 0 var(--stn-radius-dropdown-sm) var(--stn-radius-dropdown-sm);
588
- }
589
-
590
- .stn-dropdown.up.md>.select_option,
591
- .stn-table .stn-table__footer .stn-dropdown.md>.select_option {
592
- border-radius: var(--stn-radius-dropdown-md) var(--stn-radius-dropdown-md) 0 0;
593
- }
594
-
595
- .stn-dropdown.up.md.on>.selected,
596
- .stn-table .stn-table__footer .stn-dropdown.md.on>.selected {
597
- border-radius: 0 0 var(--stn-radius-dropdown-md) var(--stn-radius-dropdown-md);
598
- }
599
-
600
- .stn-dropdown.up.lg>.select_option,
601
- .stn-table .stn-table__footer .stn-dropdown.lg>.select_option {
602
- border-radius: var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg) 0 0;
603
- }
604
-
605
- .stn-dropdown.up.lg.on>.selected,
606
- .stn-table .stn-table__footer .stn-dropdown.lg.on>.selected {
607
- border-radius: 0 0 var(--stn-radius-dropdown-lg) var(--stn-radius-dropdown-lg);
608
- }
609
-
610
- .stn-dropdown.up.xl>.select_option {
611
- border-radius: var(--stn-radius-dropdown-prominent) var(--stn-radius-dropdown-prominent) 0 0;
612
- }
613
-
614
- .stn-dropdown.up.xl.on>.selected {
615
- border-radius: 0 0 var(--stn-radius-dropdown-prominent) var(--stn-radius-dropdown-prominent);
616
- }
617
-
618
- /* 9-2. Z-Index & Elevation Safeguards */
619
- .search_area:has(.stn-dropdown.on),
620
- .stn-page-scaffold__search:has(.stn-dropdown.on) {
621
- position: relative;
622
- z-index: var(--stn-dropdown-menu-z, 150) !important;
623
- }
624
-
625
570
  .stn-search-requirement:has(.stn-dropdown.on),
626
571
  .stn-search-requirement__fields:has(.stn-dropdown.on),
627
572
  .stn-label-prefix:has(.stn-dropdown.on) {
@@ -53,16 +53,9 @@
53
53
  position: relative;
54
54
  }
55
55
 
56
- .stn-label-prefix .stn-dropdown > .select_option {
57
- top: 100%;
58
- border-top: none;
59
- border-radius: 0 0 var(--stn-radius-input-md, 4px) var(--stn-radius-input-md, 4px);
60
- }
61
56
 
62
- .stn-label-prefix:has(.stn-dropdown.on) {
63
- border-bottom-left-radius: 0 !important;
64
- border-bottom-right-radius: 0 !important;
65
- }
57
+
58
+
66
59
 
67
60
  /* ==========================================================================
68
61
  2. Label Area
@@ -24,7 +24,8 @@
24
24
  /* ===== 2. Unified Scrollbar Base (.stn-scroll 단일화) ===== */
25
25
  /* Firefox 및 webkit-scrollbar 미지원 브라우저용 W3C 표준 Scrollbar 속성 */
26
26
  @supports not selector(::-webkit-scrollbar) {
27
- .stn-scroll {
27
+ .stn-scroll,
28
+ .stn-dropdown > .select_option {
28
29
  scrollbar-width: thin;
29
30
  scrollbar-color: var(--stn-scroll-thumb) var(--stn-scroll-track);
30
31
  }
@@ -47,31 +48,39 @@
47
48
  }
48
49
 
49
50
  /* Chrome, Edge, Safari 등 WebKit / Chromium 기반 브라우저 세부 픽셀 스크롤바 */
50
- .stn-scroll::-webkit-scrollbar {
51
+ .stn-scroll::-webkit-scrollbar,
52
+ .stn-dropdown > .select_option::-webkit-scrollbar {
51
53
  width: var(--stn-scroll-width);
52
54
  height: var(--stn-scroll-width);
53
55
  background: var(--stn-scroll-track);
54
56
  }
55
57
 
56
- .stn-scroll::-webkit-scrollbar-track {
58
+ .stn-scroll::-webkit-scrollbar-track,
59
+ .stn-dropdown > .select_option::-webkit-scrollbar-track {
57
60
  background: var(--stn-scroll-track);
58
61
  border-radius: 99px;
59
62
  }
60
63
 
61
- .stn-scroll::-webkit-scrollbar-thumb {
64
+ .stn-scroll::-webkit-scrollbar-thumb,
65
+ .stn-dropdown > .select_option::-webkit-scrollbar-thumb {
62
66
  background: var(--stn-scroll-thumb);
63
67
  border-radius: var(--stn-scroll-radius);
64
68
  }
65
69
 
66
- .stn-scroll::-webkit-scrollbar-thumb:hover {
70
+ .stn-scroll::-webkit-scrollbar-thumb:hover,
71
+ .stn-dropdown > .select_option::-webkit-scrollbar-thumb:hover {
67
72
  background: var(--stn-scroll-thumb-hover);
68
73
  }
69
74
 
70
75
  /* OS 스크롤바 화살표 버튼은 항상 숨긴다. */
71
- .stn-scroll::-webkit-scrollbar-button {
72
- display: none;
73
- width: 0;
74
- height: 0;
76
+ .stn-scroll::-webkit-scrollbar-button,
77
+ .stn-scroll::-webkit-scrollbar-button:single-button,
78
+ .stn-dropdown > .select_option::-webkit-scrollbar-button,
79
+ .stn-dropdown > .select_option::-webkit-scrollbar-button:single-button {
80
+ display: none !important;
81
+ width: 0 !important;
82
+ height: 0 !important;
83
+ background: transparent !important;
75
84
  }
76
85
 
77
86
  /* ===== 3. StnScroll Container Base & Orientation ===== */
@@ -93,8 +93,8 @@
93
93
  gap: var(--stn-space-8, 8px);
94
94
  }
95
95
  .stn-status-dot.lg .stn-status-dot__point {
96
- width: var(--stn-size-9, 9px);
97
- height: var(--stn-size-9, 9px);
96
+ width: var(--stn-size-10, 10px);
97
+ height: var(--stn-size-10, 10px);
98
98
  }
99
99
  .stn-status-dot.lg.bordered {
100
100
  height: var(--stn-size-28, 28px);
@@ -452,8 +452,11 @@
452
452
  }
453
453
 
454
454
  .stn-status-flow.no-border .stn-status-flow__step.is-current {
455
+ background-color: transparent;
456
+ border-color: transparent;
455
457
  box-shadow: none;
456
458
  font-weight: var(--stn-font-weight-bold, 700);
459
+ color: var(--stn-primary);
457
460
  }
458
461
 
459
462
  /* Size 스케일 — STN 표준 규격: xs · sm · md(기본) · lg · xl */
@@ -471,8 +474,8 @@
471
474
  border-radius: var(--stn-radius-2, 2px);
472
475
  }
473
476
  .stn-status-flow.xs .stn-status-flow__badge .stn-icon {
474
- width: var(--stn-size-9, 9px);
475
- height: var(--stn-size-9, 9px);
477
+ width: var(--stn-size-10, 10px);
478
+ height: var(--stn-size-10, 10px);
476
479
  }
477
480
 
478
481
  /* sm — 22px */
@@ -521,13 +524,13 @@
521
524
  border-radius: var(--stn-radius-4, 4px);
522
525
  }
523
526
  .stn-status-flow.lg .stn-status-flow__badge .stn-icon {
524
- width: var(--stn-size-13, 13px);
525
- height: var(--stn-size-13, 13px);
527
+ width: var(--stn-size-14, 14px);
528
+ height: var(--stn-size-14, 14px);
526
529
  }
527
530
 
528
- /* xl — 38px */
531
+ /* xl — 36px */
529
532
  .stn-status-flow.xl .stn-status-flow__step {
530
- height: var(--stn-size-38, 38px);
533
+ height: var(--stn-size-36, 36px);
531
534
  font-size: var(--stn-font-size-14, 14px);
532
535
  padding: 0 var(--stn-space-14, 14px) 0 var(--stn-space-6, 6px);
533
536
  gap: var(--stn-space-10, 10px);
@@ -539,8 +542,8 @@
539
542
  border-radius: var(--stn-radius-6, 6px);
540
543
  }
541
544
  .stn-status-flow.xl .stn-status-flow__badge .stn-icon {
542
- width: var(--stn-size-15, 15px);
543
- height: var(--stn-size-15, 15px);
545
+ width: var(--stn-size-16, 16px);
546
+ height: var(--stn-size-16, 16px);
544
547
  }
545
548
 
546
549
  /* Flow 단계별 배지 색상 */
@@ -566,7 +569,6 @@
566
569
 
567
570
  .stn-status-flow__step.is-current {
568
571
  border-color: var(--stn-primary);
569
- box-shadow: var(--stn-status-flow-current-shadow);
570
572
  }
571
573
 
572
574
  .stn-status-flow__step.is-dimmed {
@@ -16,40 +16,11 @@
16
16
  }
17
17
 
18
18
  .stn-table__scroll {
19
- overflow-x: auto;
20
19
  position: relative;
21
- /* STN 표준 슬림 스크롤 (thin 4px) 규격 연동 */
22
- --stn-scroll-width: var(--stn-scroll-width-thin);
23
- --stn-scroll-radius: var(--stn-scroll-radius-thin);
24
- scrollbar-width: thin;
25
- scrollbar-color: var(--stn-scroll-thumb) var(--stn-scroll-track);
26
20
  }
27
21
 
28
- .stn-table__scroll::-webkit-scrollbar {
29
- width: var(--stn-scroll-width-thin);
30
- height: var(--stn-scroll-width-thin);
31
- background: var(--stn-scroll-track);
32
- }
33
22
 
34
- .stn-table__scroll::-webkit-scrollbar-track {
35
- background: var(--stn-scroll-track);
36
- border-radius: var(--stn-radius-circle);
37
- }
38
23
 
39
- .stn-table__scroll::-webkit-scrollbar-thumb {
40
- background: var(--stn-scroll-thumb);
41
- border-radius: var(--stn-scroll-radius-thin);
42
- }
43
-
44
- .stn-table__scroll::-webkit-scrollbar-thumb:hover {
45
- background: var(--stn-scroll-thumb-hover);
46
- }
47
-
48
- .stn-table__scroll::-webkit-scrollbar-button {
49
- display: none;
50
- width: 0;
51
- height: 0;
52
- }
53
24
 
54
25
  /* List view — StnTable `fill` · content_box 남은 높이에 스크롤 영역 채움 */
55
26
  .content_box:has(> .stn-table--fill) {