@nexus-cross/design-system 2.0.0 → 2.0.2

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 (67) hide show
  1. package/README.md +375 -0
  2. package/cursor-rules/nexus-ui-api.mdc +366 -7
  3. package/dist/chunks/{chunk-2T7RUYEK.js → chunk-2BINGHGR.js} +11 -3
  4. package/dist/chunks/chunk-3NSJMG3G.mjs +5 -0
  5. package/dist/chunks/{chunk-QOREDNWO.mjs → chunk-53BHDUID.mjs} +2 -1
  6. package/dist/chunks/{chunk-QZ4QR3XV.mjs → chunk-ATZE57ZO.mjs} +11 -3
  7. package/dist/chunks/{chunk-OX5MEJ7B.js → chunk-HU6E2R2T.js} +2 -1
  8. package/dist/chunks/chunk-JICW6KWH.js +7 -0
  9. package/dist/chunks/{chunk-5J63FUAS.mjs → chunk-LNC3TV6N.mjs} +53 -2
  10. package/dist/chunks/{chunk-BJM3NDT2.mjs → chunk-RL5UAEGQ.mjs} +11 -3
  11. package/dist/chunks/{chunk-LAGQ7J5A.js → chunk-VCN7DMCQ.js} +53 -2
  12. package/dist/chunks/{chunk-2ZXDXO4I.js → chunk-VDEB5BMT.js} +11 -3
  13. package/dist/components/ImageUpload.d.ts +14 -0
  14. package/dist/components/ImageUpload.d.ts.map +1 -1
  15. package/dist/components/NumberInput.d.ts +20 -1
  16. package/dist/components/NumberInput.d.ts.map +1 -1
  17. package/dist/components/Select.d.ts +5 -1
  18. package/dist/components/Select.d.ts.map +1 -1
  19. package/dist/components/Tab.d.ts +12 -1
  20. package/dist/components/Tab.d.ts.map +1 -1
  21. package/dist/image-upload.js +3 -3
  22. package/dist/image-upload.mjs +1 -1
  23. package/dist/index.js +16 -16
  24. package/dist/index.mjs +4 -4
  25. package/dist/number-input.js +4 -4
  26. package/dist/number-input.mjs +1 -1
  27. package/dist/schemas/_all.json +48 -10
  28. package/dist/schemas/image-upload.d.ts +6 -0
  29. package/dist/schemas/image-upload.d.ts.map +1 -1
  30. package/dist/schemas/imageUpload.json +19 -1
  31. package/dist/schemas/number-input.d.ts +9 -3
  32. package/dist/schemas/number-input.d.ts.map +1 -1
  33. package/dist/schemas/numberInput.json +10 -3
  34. package/dist/schemas/spinner.json +2 -2
  35. package/dist/schemas/tab.d.ts +11 -0
  36. package/dist/schemas/tab.d.ts.map +1 -1
  37. package/dist/schemas/tab.json +17 -4
  38. package/dist/schemas.js +48 -10
  39. package/dist/schemas.mjs +48 -10
  40. package/dist/select.js +5 -5
  41. package/dist/select.mjs +1 -1
  42. package/dist/styles/.generated/built.d.ts +1 -1
  43. package/dist/styles/.generated/built.d.ts.map +1 -1
  44. package/dist/styles/layer.js +2 -2
  45. package/dist/styles/layer.mjs +1 -1
  46. package/dist/styles.css +185 -44
  47. package/dist/styles.js +2 -2
  48. package/dist/styles.layered.css +185 -44
  49. package/dist/styles.mjs +1 -1
  50. package/dist/tab.js +4 -4
  51. package/dist/tab.mjs +1 -1
  52. package/dist/tokens/TOKENS.md +13 -0
  53. package/dist/tokens/company.css +21 -1
  54. package/dist/tokens/css.css +21 -1
  55. package/dist/tokens/data/color.json +32 -0
  56. package/dist/tokens/data/space.json +1 -1
  57. package/dist/tokens/data/typography.json +55 -1
  58. package/dist/tokens-domains/data/gamehub/domain.json +258 -0
  59. package/dist/tokens-domains/data/index.ts +3 -1
  60. package/dist/tokens-domains/data/prediction/domain.json +0 -12
  61. package/dist/tokens-domains/gamehub.md +62 -0
  62. package/dist/tokens-domains/prediction-vars.css +1 -5
  63. package/dist/tokens-domains/prediction.css +1 -5
  64. package/dist/tokens-domains/prediction.md +0 -1
  65. package/package.json +3 -3
  66. package/dist/chunks/chunk-3SCSND6S.js +0 -7
  67. package/dist/chunks/chunk-QWK4CLS2.mjs +0 -5
@@ -342,10 +342,12 @@
342
342
  gap: 0.25rem;
343
343
  }
344
344
  .nexus-text-input-field__label {
345
- font-size: var(--text-text-sm, 0.875rem);
346
- font-weight: 600;
347
- color: var(--color-text-muted);
345
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈/색상. */
346
+ font-size: var(--text-label-semibold-sm, 0.75rem);
347
+ font-weight: var(--font-weight-label-semibold-sm, 600);
348
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
348
349
  line-height: 1;
350
+ color: var(--color-text-tertiary);
349
351
  }
350
352
  .nexus-text-input-field__footer {
351
353
  display: flex;
@@ -354,7 +356,7 @@
354
356
  }
355
357
  .nexus-text-input-field__description {
356
358
  font-size: var(--text-text-xs, 0.75rem);
357
- color: var(--color-text-muted);
359
+ color: var(--color-text-tertiary);
358
360
  line-height: 1.5;
359
361
  letter-spacing: -0.12px;
360
362
  }
@@ -363,7 +365,7 @@
363
365
  }
364
366
  .nexus-text-input-field__count {
365
367
  font-size: var(--text-text-xs, 0.75rem);
366
- color: var(--color-text-muted);
368
+ color: var(--color-text-tertiary);
367
369
  margin-left: auto;
368
370
  flex-shrink: 0;
369
371
  }
@@ -487,8 +489,10 @@
487
489
  gap: 0.5rem;
488
490
  }
489
491
  .nexus-price-input-field__label {
490
- font-size: var(--text-text-sm, 0.875rem);
491
- font-weight: 600;
492
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
493
+ font-size: var(--text-label-semibold-sm, 0.75rem);
494
+ font-weight: var(--font-weight-label-semibold-sm, 600);
495
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
492
496
  color: var(--color-text-tertiary);
493
497
  line-height: 1;
494
498
  }
@@ -645,8 +649,10 @@
645
649
  gap: 0.25rem;
646
650
  }
647
651
  .nexus-textarea-field__label {
648
- font-size: var(--text-label-semibold-md, 0.875rem);
649
- font-weight: 600;
652
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
653
+ font-size: var(--text-label-semibold-sm, 0.75rem);
654
+ font-weight: var(--font-weight-label-semibold-sm, 600);
655
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
650
656
  color: var(--color-text-tertiary);
651
657
  line-height: 1;
652
658
  }
@@ -792,8 +798,10 @@
792
798
  margin-bottom: 4px;
793
799
  }
794
800
  .nexus-number-input__label {
795
- font-size: var(--text-label-semibold-md, 0.875rem);
796
- font-weight: var(--font-weight-label-semibold-md, 600);
801
+ /* label-semibold-sm 토큰 기준 (12px / 600). TextInput과 동일한 라벨 사이즈로 sync. */
802
+ font-size: var(--text-label-semibold-sm, 0.75rem);
803
+ font-weight: var(--font-weight-label-semibold-sm, 600);
804
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
797
805
  line-height: 1;
798
806
  color: var(--color-text-tertiary);
799
807
  }
@@ -896,7 +904,6 @@
896
904
  border: none;
897
905
  background: transparent;
898
906
  outline: none;
899
- font-size: var(--text-label-lg, 1rem);
900
907
  font-weight: var(--font-weight-label-lg, 500);
901
908
  line-height: 1;
902
909
  color: var(--color-text-primary);
@@ -912,26 +919,82 @@
912
919
  cursor: not-allowed;
913
920
  }
914
921
 
915
- /* ── Size: field padding (basic) ── */
916
- .nexus-number-input--basic.nexus-number-input--lg .nexus-number-input__field {
917
- padding: var(--spacing-padding-sm, 0.75rem);
922
+ /* ── Size: field padding + font-size ──
923
+ * TextInput과 동일한 사이즈 체계 (md / lg / xl).
924
+ * basic, bind 변형 모두 동일 padding/font를 사용 (variant는 좌우 컨트롤만 다름).
925
+ *
926
+ * :where()로 명시도 0 — 외부 className의 height/padding/font utility(`h-12`, `py-3`, `text-base`)
927
+ * 가 항상 우선해서 사이즈 오버라이드가 자연스럽게 동작한다.
928
+ */
929
+ :where(.nexus-number-input--md) .nexus-number-input__field {
930
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px) var(--spacing-padding-sm, 0.75rem);
931
+ font-size: var(--text-text-sm, 0.875rem);
918
932
  }
919
- .nexus-number-input--basic.nexus-number-input--xl .nexus-number-input__field {
920
- padding: var(--spacing-padding-md, 1rem);
933
+ :where(.nexus-number-input--lg) .nexus-number-input__field {
934
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px) var(--spacing-padding-sm, 0.75rem);
935
+ font-size: var(--text-text-base, 1rem);
936
+ }
937
+ :where(.nexus-number-input--xl) .nexus-number-input__field {
938
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px) var(--spacing-padding-md, 1rem);
939
+ font-size: var(--text-text-base, 1rem);
940
+ }
941
+
942
+ /* ── Prefix / Suffix icon (text or ReactNode) ──
943
+ * basic / bind variant 모두 공통.
944
+ * field padding과 자연스럽게 이어지도록 padding-inline은 size별 :where() 규칙 참고.
945
+ * 좌측 prefix는 field 좌측 padding을 줄여서 visual gap 통일.
946
+ */
947
+ .nexus-number-input__icon {
948
+ display: flex;
949
+ align-items: center;
950
+ flex-shrink: 0;
951
+ color: var(--color-text-muted);
952
+ font-size: inherit;
953
+ line-height: 1;
954
+ user-select: none;
955
+ pointer-events: none;
956
+ }
957
+ :where(.nexus-number-input--md) .nexus-number-input__icon {
958
+ padding-inline-start: var(--spacing-padding-sm, 0.75rem);
959
+ font-size: var(--text-text-sm, 0.875rem);
960
+ }
961
+ :where(.nexus-number-input--lg) .nexus-number-input__icon {
962
+ padding-inline-start: var(--spacing-padding-sm, 0.75rem);
963
+ font-size: var(--text-text-base, 1rem);
964
+ }
965
+ :where(.nexus-number-input--xl) .nexus-number-input__icon {
966
+ padding-inline-start: var(--spacing-padding-md, 1rem);
967
+ font-size: var(--text-text-base, 1rem);
968
+ }
969
+ :where(.nexus-number-input__icon--suffix) {
970
+ padding-inline-start: 0;
971
+ padding-inline-end: var(--spacing-padding-sm, 0.75rem);
972
+ }
973
+ :where(.nexus-number-input--xl .nexus-number-input__icon--suffix) {
974
+ padding-inline-end: var(--spacing-padding-md, 1rem);
975
+ }
976
+ /* prefix가 있으면 field 좌측 padding을 한번만 가지도록 (icon이 좌측 패딩 담당) */
977
+ :where(.nexus-number-input__icon--prefix) ~ .nexus-number-input__field {
978
+ padding-inline-start: var(--spacing-padding-xs, 0.5rem);
979
+ }
980
+ .nexus-number-input--disabled .nexus-number-input__icon {
981
+ color: var(--color-text-muted);
921
982
  }
922
983
 
923
- /* ── Size: field padding (bind) ── */
984
+ /* ── Bind variant: 좌우 ± 버튼이 들어갈 자리 ── */
924
985
  .nexus-number-input--bind .nexus-number-input__container {
925
986
  padding-inline: var(--spacing-padding-xs, 0.5rem);
926
987
  }
927
988
  .nexus-number-input--bind .nexus-number-input__field {
928
989
  text-align: center;
929
990
  }
930
- .nexus-number-input--bind.nexus-number-input--lg .nexus-number-input__field {
931
- padding: var(--spacing-padding-sm, 0.75rem);
991
+ /* bind variant에서는 ± 버튼이 padding 역할이므로 icon padding 살짝만 */
992
+ .nexus-number-input--bind .nexus-number-input__icon {
993
+ padding-inline-start: var(--spacing-padding-2xs, 0.25rem);
932
994
  }
933
- .nexus-number-input--bind.nexus-number-input--xl .nexus-number-input__field {
934
- padding: var(--spacing-padding-md, 1rem) var(--spacing-padding-sm, 0.75rem);
995
+ .nexus-number-input--bind .nexus-number-input__icon--suffix {
996
+ padding-inline-start: 0;
997
+ padding-inline-end: var(--spacing-padding-2xs, 0.25rem);
935
998
  }
936
999
 
937
1000
  /* ── Basic variant: chevron buttons column ── */
@@ -1005,7 +1068,17 @@
1005
1068
  color: var(--color-text-muted);
1006
1069
  cursor: not-allowed;
1007
1070
  }
1008
- .nexus-number-input--xl .nexus-number-input__bind-btn {
1071
+ /* bind ± 버튼: 사이즈별로 가시 영역이 자연스럽게 늘어나도록.
1072
+ * :where()로 명시도 0 — 외부 className으로 버튼 크기도 오버라이드 가능. */
1073
+ :where(.nexus-number-input--md) .nexus-number-input__bind-btn {
1074
+ width: 20px;
1075
+ height: 20px;
1076
+ }
1077
+ :where(.nexus-number-input--lg) .nexus-number-input__bind-btn {
1078
+ width: 24px;
1079
+ height: 24px;
1080
+ }
1081
+ :where(.nexus-number-input--xl) .nexus-number-input__bind-btn {
1009
1082
  width: 30px;
1010
1083
  height: 30px;
1011
1084
  }
@@ -1829,6 +1902,15 @@
1829
1902
  border-radius: var(--radius-corner-lg, 0.5rem);
1830
1903
  padding: 0.25rem;
1831
1904
  }
1905
+ /* fullWidth: 모든 트리거를 균등 분할해서 부모 너비를 채움. :where()로 specificity 0
1906
+ → 사용처에서 className(w-*, flex-*)으로 자유롭게 오버라이드 가능. */
1907
+ :where(.nexus-tab-list--full-width) {
1908
+ width: 100%;
1909
+ }
1910
+ :where(.nexus-tab-list--full-width) .nexus-tab-trigger {
1911
+ flex: 1;
1912
+ justify-content: center;
1913
+ }
1832
1914
  .nexus-tab-trigger {
1833
1915
  position: relative;
1834
1916
  display: inline-flex;
@@ -1916,7 +1998,10 @@
1916
1998
 
1917
1999
  .nexus-spinner {
1918
2000
  animation: nexus-spin 1s linear infinite;
1919
- color: currentColor;
2001
+ }
2002
+ /* default color: brand primary (semantic). :where()로 specificity 0 → 외부 className(text-*, color)이 항상 우선 override 가능. */
2003
+ :where(.nexus-spinner) {
2004
+ color: var(--color-accent-primary);
1920
2005
  }
1921
2006
 
1922
2007
  /* ═══════════════════════════════════════════
@@ -2142,16 +2227,17 @@
2142
2227
  .nexus-select-trigger--outline {
2143
2228
  background: var(--color-surface-default);
2144
2229
  }
2145
- .nexus-select-trigger--sm {
2230
+ /* size variant width: :where() 로 명시도 0 — 외부 className 의 w- / min-w- / max-w- 유틸이 항상 우선. */
2231
+ :where(.nexus-select-trigger--sm) {
2146
2232
  width: 4rem;
2147
2233
  }
2148
- .nexus-select-trigger--md {
2234
+ :where(.nexus-select-trigger--md) {
2149
2235
  width: 8rem;
2150
2236
  }
2151
- .nexus-select-trigger--lg {
2237
+ :where(.nexus-select-trigger--lg) {
2152
2238
  width: 12rem;
2153
2239
  }
2154
- .nexus-select-trigger--full {
2240
+ :where(.nexus-select-trigger--full) {
2155
2241
  width: 100%;
2156
2242
  }
2157
2243
  .nexus-select-trigger--justify-end {
@@ -2227,17 +2313,19 @@
2227
2313
  transform: translateY(-4px) scaleY(0.96);
2228
2314
  }
2229
2315
  }
2230
- .nexus-select-content--sm {
2231
- width: 4rem;
2232
- }
2233
- .nexus-select-content--md {
2234
- width: 8rem;
2235
- }
2236
- .nexus-select-content--lg {
2237
- width: 12rem;
2238
- }
2239
- .nexus-select-content--full {
2316
+ /* Content는 size variant와 무관하게 항상 trigger 너비를 추종한다.
2317
+ * - size는 트리거 크기만 결정. content는 anchor-width 자동 동기화 → 외부 className으로
2318
+ * Select 하나만 늘리면 드롭다운/Item도 자연스럽게 같이 늘어난다.
2319
+ * - SelectItem이 anchor-width보다 더 크면 min-width가 그대로라 content 자식 너비만큼 자연
2320
+ * 확장된다.
2321
+ * - 별도 너비를 원하면 `contentClassName`으로 명시적으로 오버라이드 (외부 className은 :where()
2322
+ * 덕분에 항상 우선). */
2323
+ :where(.nexus-select-content--sm),
2324
+ :where(.nexus-select-content--md),
2325
+ :where(.nexus-select-content--lg),
2326
+ :where(.nexus-select-content--full) {
2240
2327
  width: var(--radix-popper-anchor-width);
2328
+ min-width: var(--radix-popper-anchor-width);
2241
2329
  }
2242
2330
  .nexus-select-viewport {
2243
2331
  padding: 0.25rem;
@@ -2246,7 +2334,6 @@
2246
2334
  .nexus-select-item {
2247
2335
  position: relative;
2248
2336
  display: flex;
2249
- width: 100%;
2250
2337
  cursor: pointer;
2251
2338
  align-items: center;
2252
2339
  border-radius: var(--radius-corner-sm, 0.25rem);
@@ -2258,6 +2345,10 @@
2258
2345
  outline: none;
2259
2346
  user-select: none;
2260
2347
  }
2348
+ /* width 만 :where()로 명시도 0 — 외부 className 의 w-* 가 항상 우선. */
2349
+ :where(.nexus-select-item) {
2350
+ width: 100%;
2351
+ }
2261
2352
  .nexus-select-item:hover,
2262
2353
  .nexus-select-item:focus,
2263
2354
  .nexus-select-item[data-highlighted] {
@@ -4580,6 +4671,53 @@
4580
4671
  height: 16px;
4581
4672
  }
4582
4673
 
4674
+ /* ─── ImageUpload: previewMode="cover" — 박스 가득 채우는 풀 이미지 ─── */
4675
+ .nexus-image-upload--preview-cover {
4676
+ position: relative;
4677
+ display: block;
4678
+ padding: 0;
4679
+ border: 1px solid var(--color-border-default);
4680
+ border-style: solid;
4681
+ background: var(--color-surface-strong);
4682
+ cursor: pointer;
4683
+ /* X 버튼이 모서리 밖으로 살짝 튀어나올 수 있도록 visible. 이미지는 아래 clip wrapper가 라운드 처리. */
4684
+ overflow: visible;
4685
+ }
4686
+ .nexus-image-upload--preview-cover:hover {
4687
+ border-color: var(--color-border-default-hover);
4688
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
4689
+ }
4690
+ /* 이미지 클리핑 — 박스 border-radius와 동일하게 라운드. */
4691
+ .nexus-image-upload__preview-cover-clip {
4692
+ position: absolute;
4693
+ inset: 0;
4694
+ overflow: hidden;
4695
+ border-radius: var(--radius-corner-md, 8px);
4696
+ }
4697
+ .nexus-image-upload__preview-cover-img {
4698
+ position: absolute;
4699
+ inset: 0;
4700
+ width: 100%;
4701
+ height: 100%;
4702
+ object-fit: cover;
4703
+ display: block;
4704
+ pointer-events: none;
4705
+ }
4706
+ .nexus-image-upload__preview-cover-img--contain {
4707
+ object-fit: contain;
4708
+ }
4709
+ /* cover 모드의 X 버튼 — card preview와 동일하게 우측 상단 모서리에 걸치는 형태. */
4710
+ .nexus-image-upload__remove--cover {
4711
+ top: -6px;
4712
+ right: -6px;
4713
+ background: var(--color-surface-inverted);
4714
+ color: var(--color-icon-inverted);
4715
+ }
4716
+ .nexus-image-upload__remove--cover:hover {
4717
+ opacity: 0.85;
4718
+ background: var(--color-surface-inverted);
4719
+ }
4720
+
4583
4721
  .nexus-image-upload__info {
4584
4722
  display: flex;
4585
4723
  flex-direction: column;
@@ -4617,10 +4755,11 @@
4617
4755
  gap: var(--spacing-gap-xs, 0.25rem);
4618
4756
  }
4619
4757
  .nexus-image-upload-field__label {
4620
- font-size: var(--text-label-semibold-md);
4621
- font-weight: var(--font-weight-label-semibold-md, 600);
4758
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
4759
+ font-size: var(--text-label-semibold-sm, 0.75rem);
4760
+ font-weight: var(--font-weight-label-semibold-sm, 600);
4622
4761
  line-height: 1;
4623
- letter-spacing: var(--letter-spacing-label-semibold-md, 0);
4762
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
4624
4763
  color: var(--color-text-tertiary);
4625
4764
  }
4626
4765
  .nexus-image-upload-field__description {
@@ -4831,8 +4970,10 @@
4831
4970
  gap: var(--spacing-gap-xs, 0.25rem);
4832
4971
  }
4833
4972
  .nexus-combobox-field__label {
4834
- font-size: var(--text-label-semibold-md);
4835
- font-weight: var(--font-weight-label-semibold-md, 600);
4973
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
4974
+ font-size: var(--text-label-semibold-sm, 0.75rem);
4975
+ font-weight: var(--font-weight-label-semibold-sm, 600);
4976
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
4836
4977
  line-height: 1;
4837
4978
  color: var(--color-text-tertiary);
4838
4979
  }
package/dist/styles.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { built_default } from './chunks/chunk-QWK4CLS2.mjs';
1
+ import { built_default } from './chunks/chunk-3NSJMG3G.mjs';
2
2
 
3
3
  // src/styles/inject.ts
4
4
  var STYLE_ID = "__nexus-ds__";
package/dist/tab.js CHANGED
@@ -1,19 +1,19 @@
1
1
  'use strict';
2
2
 
3
- var chunk2ZXDXO4I_js = require('./chunks/chunk-2ZXDXO4I.js');
3
+ var chunkVDEB5BMT_js = require('./chunks/chunk-VDEB5BMT.js');
4
4
  require('./chunks/chunk-CZC76ZD5.js');
5
5
 
6
6
 
7
7
 
8
8
  Object.defineProperty(exports, "Tab", {
9
9
  enumerable: true,
10
- get: function () { return chunk2ZXDXO4I_js.Tab; }
10
+ get: function () { return chunkVDEB5BMT_js.Tab; }
11
11
  });
12
12
  Object.defineProperty(exports, "tabListVariants", {
13
13
  enumerable: true,
14
- get: function () { return chunk2ZXDXO4I_js.tabListVariants; }
14
+ get: function () { return chunkVDEB5BMT_js.tabListVariants; }
15
15
  });
16
16
  Object.defineProperty(exports, "tabTriggerVariants", {
17
17
  enumerable: true,
18
- get: function () { return chunk2ZXDXO4I_js.tabTriggerVariants; }
18
+ get: function () { return chunkVDEB5BMT_js.tabTriggerVariants; }
19
19
  });
package/dist/tab.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export { Tab, tabListVariants, tabTriggerVariants } from './chunks/chunk-QZ4QR3XV.mjs';
1
+ export { Tab, tabListVariants, tabTriggerVariants } from './chunks/chunk-ATZE57ZO.mjs';
2
2
  import './chunks/chunk-MCKOWMLS.mjs';
@@ -133,12 +133,14 @@ const { semantic } = getTheme("dark");
133
133
  | `bg-status-success-disabled` | `--color-status-success-disabled` | Success - disabled | `#CDF4EA` | `#0D4431` |
134
134
  | `bg-status-success-intense` | `--color-status-success-intense` | Success - intense | `#1B9674` | `#0BDFA5` |
135
135
  | `bg-status-success-dim` | `--color-status-success-dim` | Success - dim | `#9FECD7` | `#1B9674` |
136
+ | `bg-status-success-bg` | `--color-status-success-bg` | | `#EAFAF6` | `#06261B` |
136
137
  | `bg-status-warning` | `--color-status-warning` | Warning | `#FF9D00` | `#FFAA00` |
137
138
  | `bg-status-warning-hover` | `--color-status-warning-hover` | Warning - hover | `#FFAA00` | `#FF9D00` |
138
139
  | `bg-status-warning-pressed` | `--color-status-warning-pressed` | Warning - pressed | `#F9C127` | `#F9C127` |
139
140
  | `bg-status-warning-disabled` | `--color-status-warning-disabled` | Warning - disabled | `#FFF2D2` | `#4A3F2B` |
140
141
  | `bg-status-warning-intense` | `--color-status-warning-intense` | Warning - intense | `#D9840C` | `#FFAA00` |
141
142
  | `bg-status-warning-dim` | `--color-status-warning-dim` | Warning - dim | `#FFDB6E` | `#9F701A` |
143
+ | `bg-status-warning-bg` | `--color-status-warning-bg` | | `#FBF7EC` | `#393421` |
142
144
  | `bg-status-danger` | `--color-status-danger` | Danger | `#DB0A2D` | `#DB0A2D` |
143
145
  | `bg-status-danger-hover` | `--color-status-danger-hover` | Danger - hover | `#E62848` | `#E62848` |
144
146
  | `bg-status-danger-pressed` | `--color-status-danger-pressed` | Danger - pressed | `#AF2239` | `#D20625` |
@@ -146,12 +148,14 @@ const { semantic } = getTheme("dark");
146
148
  | `bg-status-danger-intense` | `--color-status-danger-intense` | Danger - intense | `#D20625` | `#EC3C56` |
147
149
  | `bg-status-danger-dim` | `--color-status-danger-dim` | Danger - dim | `#FFBBC4` | `#AF2239` |
148
150
  | `bg-status-danger-focus` | `--color-status-danger-focus` | Danger - focus | `#E62848` | `#AF2239` |
151
+ | `bg-status-danger-bg` | `--color-status-danger-bg` | | `#FFF4F5` | `#530E1A` |
149
152
  | `bg-status-info` | `--color-status-info` | Info | `#0095FF` | `#0095FF` |
150
153
  | `bg-status-info-hover` | `--color-status-info-hover` | Info - hover | `#20B1FF` | `#20B1FF` |
151
154
  | `bg-status-info-pressed` | `--color-status-info-pressed` | Info - pressed | `#1087FF` | `#1087FF` |
152
155
  | `bg-status-info-disabled` | `--color-status-info-disabled` | Info - disabled | `#CCEFFF` | `#143A67` |
153
156
  | `bg-status-info-intense` | `--color-status-info-intense` | Info - intense | `#1672D0` | `#20B1FF` |
154
157
  | `bg-status-info-dim` | `--color-status-info-dim` | Info - dim | `#92DDFF` | `#1672D0` |
158
+ | `bg-status-info-bg` | `--color-status-info-bg` | | `#EAF8FF` | `#0E2F53` |
155
159
 
156
160
  ### Overlay
157
161
 
@@ -210,11 +214,13 @@ const { semantic } = getTheme("dark");
210
214
  | `text-text-base` | `--text-text-base` | `1rem` |
211
215
  | `text-text-lg` | `--text-text-lg` | `1.125rem` |
212
216
  | `text-text-xl` | `--text-text-xl` | `1.25rem` |
217
+ | `text-text-2xs` | `--text-text-2xs` | `0.625rem` |
213
218
  | `text-text-medium-xs` | `--text-text-medium-xs` | `0.75rem` |
214
219
  | `text-text-medium-sm` | `--text-text-medium-sm` | `0.875rem` |
215
220
  | `text-text-medium-base` | `--text-text-medium-base` | `1rem` |
216
221
  | `text-text-medium-lg` | `--text-text-medium-lg` | `1.125rem` |
217
222
  | `text-text-medium-xl` | `--text-text-medium-xl` | `1.25rem` |
223
+ | `text-text-medium-2xs` | `--text-text-medium-2xs` | `0.625rem` |
218
224
  | `text-text-semibold-xs` | `--text-text-semibold-xs` | `0.75rem` |
219
225
  | `text-text-semibold-sm` | `--text-text-semibold-sm` | `0.875rem` |
220
226
  | `text-text-semibold-base` | `--text-text-semibold-base` | `1rem` |
@@ -233,6 +239,7 @@ const { semantic } = getTheme("dark");
233
239
  | `text-label-sm` | `--text-label-sm` | `0.75rem` |
234
240
  | `text-label-md` | `--text-label-md` | `0.875rem` |
235
241
  | `text-label-lg` | `--text-label-lg` | `1rem` |
242
+ | `text-label-xs` | `--text-label-xs` | `0.625rem` |
236
243
  | `text-label-semibold-sm` | `--text-label-semibold-sm` | `0.75rem` |
237
244
  | `text-label-semibold-md` | `--text-label-semibold-md` | `0.875rem` |
238
245
  | `text-label-semibold-lg` | `--text-label-semibold-lg` | `1rem` |
@@ -349,11 +356,13 @@ const { semantic } = getTheme("dark");
349
356
  | `--font-weight-text-base` | `400` | `font-weight: var(--font-weight-text-base)` |
350
357
  | `--font-weight-text-lg` | `400` | `font-weight: var(--font-weight-text-lg)` |
351
358
  | `--font-weight-text-xl` | `400` | `font-weight: var(--font-weight-text-xl)` |
359
+ | `--font-weight-text-2xs` | `400` | `font-weight: var(--font-weight-text-2xs)` |
352
360
  | `--font-weight-text-medium-xs` | `500` | `font-weight: var(--font-weight-text-medium-xs)` |
353
361
  | `--font-weight-text-medium-sm` | `500` | `font-weight: var(--font-weight-text-medium-sm)` |
354
362
  | `--font-weight-text-medium-base` | `500` | `font-weight: var(--font-weight-text-medium-base)` |
355
363
  | `--font-weight-text-medium-lg` | `500` | `font-weight: var(--font-weight-text-medium-lg)` |
356
364
  | `--font-weight-text-medium-xl` | `500` | `font-weight: var(--font-weight-text-medium-xl)` |
365
+ | `--font-weight-text-medium-2xs` | `500` | `font-weight: var(--font-weight-text-medium-2xs)` |
357
366
  | `--font-weight-text-semibold-xs` | `600` | `font-weight: var(--font-weight-text-semibold-xs)` |
358
367
  | `--font-weight-text-semibold-sm` | `600` | `font-weight: var(--font-weight-text-semibold-sm)` |
359
368
  | `--font-weight-text-semibold-base` | `600` | `font-weight: var(--font-weight-text-semibold-base)` |
@@ -372,6 +381,7 @@ const { semantic } = getTheme("dark");
372
381
  | `--font-weight-label-sm` | `500` | `font-weight: var(--font-weight-label-sm)` |
373
382
  | `--font-weight-label-md` | `500` | `font-weight: var(--font-weight-label-md)` |
374
383
  | `--font-weight-label-lg` | `500` | `font-weight: var(--font-weight-label-lg)` |
384
+ | `--font-weight-label-xs` | `500` | `font-weight: var(--font-weight-label-xs)` |
375
385
  | `--font-weight-label-semibold-sm` | `600` | `font-weight: var(--font-weight-label-semibold-sm)` |
376
386
  | `--font-weight-label-semibold-md` | `600` | `font-weight: var(--font-weight-label-semibold-md)` |
377
387
  | `--font-weight-label-semibold-lg` | `600` | `font-weight: var(--font-weight-label-semibold-lg)` |
@@ -385,11 +395,13 @@ const { semantic } = getTheme("dark");
385
395
  | `--letter-spacing-text-base` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-base)` |
386
396
  | `--letter-spacing-text-lg` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-lg)` |
387
397
  | `--letter-spacing-text-xl` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-xl)` |
398
+ | `--letter-spacing-text-2xs` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-2xs)` |
388
399
  | `--letter-spacing-text-medium-xs` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-xs)` |
389
400
  | `--letter-spacing-text-medium-sm` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-sm)` |
390
401
  | `--letter-spacing-text-medium-base` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-base)` |
391
402
  | `--letter-spacing-text-medium-lg` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-lg)` |
392
403
  | `--letter-spacing-text-medium-xl` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-xl)` |
404
+ | `--letter-spacing-text-medium-2xs` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-medium-2xs)` |
393
405
  | `--letter-spacing-text-semibold-xs` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-semibold-xs)` |
394
406
  | `--letter-spacing-text-semibold-sm` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-semibold-sm)` |
395
407
  | `--letter-spacing-text-semibold-base` | `-0.01em` | `letter-spacing: var(--letter-spacing-text-semibold-base)` |
@@ -408,6 +420,7 @@ const { semantic } = getTheme("dark");
408
420
  | `--letter-spacing-label-sm` | `0` | `letter-spacing: var(--letter-spacing-label-sm)` |
409
421
  | `--letter-spacing-label-md` | `0` | `letter-spacing: var(--letter-spacing-label-md)` |
410
422
  | `--letter-spacing-label-lg` | `0` | `letter-spacing: var(--letter-spacing-label-lg)` |
423
+ | `--letter-spacing-label-xs` | `0` | `letter-spacing: var(--letter-spacing-label-xs)` |
411
424
  | `--letter-spacing-label-semibold-sm` | `0` | `letter-spacing: var(--letter-spacing-label-semibold-sm)` |
412
425
  | `--letter-spacing-label-semibold-md` | `0` | `letter-spacing: var(--letter-spacing-label-semibold-md)` |
413
426
  | `--letter-spacing-label-semibold-lg` | `0` | `letter-spacing: var(--letter-spacing-label-semibold-lg)` |
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Company CSS — Tailwind v4 (@theme + .dark)
3
3
  * 자동 생성: scripts/generate-css.js
4
- * 생성일: 2026-05-06T03:32:31.081Z
4
+ * 생성일: 2026-05-07T10:05:13.498Z
5
5
  *
6
6
  * @theme: Tailwind 유틸리티 클래스 자동 생성
7
7
  * :root: 순수 CSS 변수 (var()로 직접 사용)
@@ -74,12 +74,14 @@
74
74
  --color-status-success-disabled: #CDF4EA;
75
75
  --color-status-success-intense: #1B9674;
76
76
  --color-status-success-dim: #9FECD7;
77
+ --color-status-success-bg: #EAFAF6;
77
78
  --color-status-warning: #FF9D00;
78
79
  --color-status-warning-hover: #FFAA00;
79
80
  --color-status-warning-pressed: #F9C127;
80
81
  --color-status-warning-disabled: #FFF2D2;
81
82
  --color-status-warning-intense: #D9840C;
82
83
  --color-status-warning-dim: #FFDB6E;
84
+ --color-status-warning-bg: #FBF7EC;
83
85
  --color-status-danger: #DB0A2D;
84
86
  --color-status-danger-hover: #E62848;
85
87
  --color-status-danger-pressed: #AF2239;
@@ -87,12 +89,14 @@
87
89
  --color-status-danger-intense: #D20625;
88
90
  --color-status-danger-dim: #FFBBC4;
89
91
  --color-status-danger-focus: #E62848;
92
+ --color-status-danger-bg: #FFF4F5;
90
93
  --color-status-info: #0095FF;
91
94
  --color-status-info-hover: #20B1FF;
92
95
  --color-status-info-pressed: #1087FF;
93
96
  --color-status-info-disabled: #CCEFFF;
94
97
  --color-status-info-intense: #1672D0;
95
98
  --color-status-info-dim: #92DDFF;
99
+ --color-status-info-bg: #EAF8FF;
96
100
  --color-overlay-dim: #000000;
97
101
  --color-overlay-light: #000000;
98
102
  --color-static-white: #FFFFFF;
@@ -126,6 +130,8 @@
126
130
  --text-text-lg--line-height: 1.5;
127
131
  --text-text-xl: 1.25rem;
128
132
  --text-text-xl--line-height: 1.5;
133
+ --text-text-2xs: 0.625rem;
134
+ --text-text-2xs--line-height: 1.5;
129
135
  --text-text-medium-xs: 0.75rem;
130
136
  --text-text-medium-xs--line-height: 1.5;
131
137
  --text-text-medium-sm: 0.875rem;
@@ -136,6 +142,8 @@
136
142
  --text-text-medium-lg--line-height: 1.5;
137
143
  --text-text-medium-xl: 1.25rem;
138
144
  --text-text-medium-xl--line-height: 1.5;
145
+ --text-text-medium-2xs: 0.625rem;
146
+ --text-text-medium-2xs--line-height: 1.5;
139
147
  --text-text-semibold-xs: 0.75rem;
140
148
  --text-text-semibold-xs--line-height: 1.5;
141
149
  --text-text-semibold-sm: 0.875rem;
@@ -172,6 +180,8 @@
172
180
  --text-label-md--line-height: 1;
173
181
  --text-label-lg: 1rem;
174
182
  --text-label-lg--line-height: 1;
183
+ --text-label-xs: 0.625rem;
184
+ --text-label-xs--line-height: 1;
175
185
  --text-label-semibold-sm: 0.75rem;
176
186
  --text-label-semibold-sm--line-height: 1;
177
187
  --text-label-semibold-md: 0.875rem;
@@ -257,6 +267,8 @@
257
267
  --letter-spacing-text-lg: -0.01em;
258
268
  --font-weight-text-xl: 400;
259
269
  --letter-spacing-text-xl: -0.01em;
270
+ --font-weight-text-2xs: 400;
271
+ --letter-spacing-text-2xs: -0.01em;
260
272
  --font-weight-text-medium-xs: 500;
261
273
  --letter-spacing-text-medium-xs: -0.01em;
262
274
  --font-weight-text-medium-sm: 500;
@@ -267,6 +279,8 @@
267
279
  --letter-spacing-text-medium-lg: -0.01em;
268
280
  --font-weight-text-medium-xl: 500;
269
281
  --letter-spacing-text-medium-xl: -0.01em;
282
+ --font-weight-text-medium-2xs: 500;
283
+ --letter-spacing-text-medium-2xs: -0.01em;
270
284
  --font-weight-text-semibold-xs: 600;
271
285
  --letter-spacing-text-semibold-xs: -0.01em;
272
286
  --font-weight-text-semibold-sm: 600;
@@ -303,6 +317,8 @@
303
317
  --letter-spacing-label-md: 0;
304
318
  --font-weight-label-lg: 500;
305
319
  --letter-spacing-label-lg: 0;
320
+ --font-weight-label-xs: 500;
321
+ --letter-spacing-label-xs: 0;
306
322
  --font-weight-label-semibold-sm: 600;
307
323
  --letter-spacing-label-semibold-sm: 0;
308
324
  --font-weight-label-semibold-md: 600;
@@ -378,12 +394,14 @@
378
394
  --color-status-success-disabled: #0D4431;
379
395
  --color-status-success-intense: #0BDFA5;
380
396
  --color-status-success-dim: #1B9674;
397
+ --color-status-success-bg: #06261B;
381
398
  --color-status-warning: #FFAA00;
382
399
  --color-status-warning-hover: #FF9D00;
383
400
  --color-status-warning-pressed: #F9C127;
384
401
  --color-status-warning-disabled: #4A3F2B;
385
402
  --color-status-warning-intense: #FFAA00;
386
403
  --color-status-warning-dim: #9F701A;
404
+ --color-status-warning-bg: #393421;
387
405
  --color-status-danger: #DB0A2D;
388
406
  --color-status-danger-hover: #E62848;
389
407
  --color-status-danger-pressed: #D20625;
@@ -391,12 +409,14 @@
391
409
  --color-status-danger-intense: #EC3C56;
392
410
  --color-status-danger-dim: #AF2239;
393
411
  --color-status-danger-focus: #AF2239;
412
+ --color-status-danger-bg: #530E1A;
394
413
  --color-status-info: #0095FF;
395
414
  --color-status-info-hover: #20B1FF;
396
415
  --color-status-info-pressed: #1087FF;
397
416
  --color-status-info-disabled: #143A67;
398
417
  --color-status-info-intense: #20B1FF;
399
418
  --color-status-info-dim: #1672D0;
419
+ --color-status-info-bg: #0E2F53;
400
420
  --color-overlay-dim: #000000;
401
421
  --color-overlay-light: #000000;
402
422
  --color-static-white: #FFFFFF;