@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
@@ -1 +1 @@
1
- {"version":3,"file":"built.d.ts","sourceRoot":"","sources":["../../../src/styles/.generated/built.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG,k8nJAAg+6H,CAAC;AAC1+6H,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"built.d.ts","sourceRoot":"","sources":["../../../src/styles/.generated/built.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,GAAG,y04JAAijmI,CAAC;AAC3jmI,eAAe,GAAG,CAAC"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunk3SCSND6S_js = require('../chunks/chunk-3SCSND6S.js');
3
+ var chunkJICW6KWH_js = require('../chunks/chunk-JICW6KWH.js');
4
4
 
5
5
  // src/styles/inject-layer.ts
6
6
  var STYLE_ID = "__nexus-ds-layer__";
@@ -8,7 +8,7 @@ var __nexus_styles_injected__ = typeof document !== "undefined" && !document.get
8
8
  const style = document.createElement("style");
9
9
  style.id = STYLE_ID;
10
10
  style.textContent = `@layer nexus {
11
- ${chunk3SCSND6S_js.built_default}
11
+ ${chunkJICW6KWH_js.built_default}
12
12
  }`;
13
13
  document.head.appendChild(style);
14
14
  return true;
@@ -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-layer.ts
4
4
  var STYLE_ID = "__nexus-ds-layer__";
package/dist/styles.css CHANGED
@@ -341,10 +341,12 @@
341
341
  gap: 0.25rem;
342
342
  }
343
343
  .nexus-text-input-field__label {
344
- font-size: var(--text-text-sm, 0.875rem);
345
- font-weight: 600;
346
- color: var(--color-text-muted);
344
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈/색상. */
345
+ font-size: var(--text-label-semibold-sm, 0.75rem);
346
+ font-weight: var(--font-weight-label-semibold-sm, 600);
347
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
347
348
  line-height: 1;
349
+ color: var(--color-text-tertiary);
348
350
  }
349
351
  .nexus-text-input-field__footer {
350
352
  display: flex;
@@ -353,7 +355,7 @@
353
355
  }
354
356
  .nexus-text-input-field__description {
355
357
  font-size: var(--text-text-xs, 0.75rem);
356
- color: var(--color-text-muted);
358
+ color: var(--color-text-tertiary);
357
359
  line-height: 1.5;
358
360
  letter-spacing: -0.12px;
359
361
  }
@@ -362,7 +364,7 @@
362
364
  }
363
365
  .nexus-text-input-field__count {
364
366
  font-size: var(--text-text-xs, 0.75rem);
365
- color: var(--color-text-muted);
367
+ color: var(--color-text-tertiary);
366
368
  margin-left: auto;
367
369
  flex-shrink: 0;
368
370
  }
@@ -486,8 +488,10 @@
486
488
  gap: 0.5rem;
487
489
  }
488
490
  .nexus-price-input-field__label {
489
- font-size: var(--text-text-sm, 0.875rem);
490
- font-weight: 600;
491
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
492
+ font-size: var(--text-label-semibold-sm, 0.75rem);
493
+ font-weight: var(--font-weight-label-semibold-sm, 600);
494
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
491
495
  color: var(--color-text-tertiary);
492
496
  line-height: 1;
493
497
  }
@@ -644,8 +648,10 @@
644
648
  gap: 0.25rem;
645
649
  }
646
650
  .nexus-textarea-field__label {
647
- font-size: var(--text-label-semibold-md, 0.875rem);
648
- font-weight: 600;
651
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
652
+ font-size: var(--text-label-semibold-sm, 0.75rem);
653
+ font-weight: var(--font-weight-label-semibold-sm, 600);
654
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
649
655
  color: var(--color-text-tertiary);
650
656
  line-height: 1;
651
657
  }
@@ -791,8 +797,10 @@
791
797
  margin-bottom: 4px;
792
798
  }
793
799
  .nexus-number-input__label {
794
- font-size: var(--text-label-semibold-md, 0.875rem);
795
- font-weight: var(--font-weight-label-semibold-md, 600);
800
+ /* label-semibold-sm 토큰 기준 (12px / 600). TextInput과 동일한 라벨 사이즈로 sync. */
801
+ font-size: var(--text-label-semibold-sm, 0.75rem);
802
+ font-weight: var(--font-weight-label-semibold-sm, 600);
803
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
796
804
  line-height: 1;
797
805
  color: var(--color-text-tertiary);
798
806
  }
@@ -895,7 +903,6 @@
895
903
  border: none;
896
904
  background: transparent;
897
905
  outline: none;
898
- font-size: var(--text-label-lg, 1rem);
899
906
  font-weight: var(--font-weight-label-lg, 500);
900
907
  line-height: 1;
901
908
  color: var(--color-text-primary);
@@ -911,26 +918,82 @@
911
918
  cursor: not-allowed;
912
919
  }
913
920
 
914
- /* ── Size: field padding (basic) ── */
915
- .nexus-number-input--basic.nexus-number-input--lg .nexus-number-input__field {
916
- padding: var(--spacing-padding-sm, 0.75rem);
921
+ /* ── Size: field padding + font-size ──
922
+ * TextInput과 동일한 사이즈 체계 (md / lg / xl).
923
+ * basic, bind 변형 모두 동일 padding/font를 사용 (variant는 좌우 컨트롤만 다름).
924
+ *
925
+ * :where()로 명시도 0 — 외부 className의 height/padding/font utility(`h-12`, `py-3`, `text-base`)
926
+ * 가 항상 우선해서 사이즈 오버라이드가 자연스럽게 동작한다.
927
+ */
928
+ :where(.nexus-number-input--md) .nexus-number-input__field {
929
+ padding: calc(var(--spacing-padding-xs, 0.5rem) - 1px) var(--spacing-padding-sm, 0.75rem);
930
+ font-size: var(--text-text-sm, 0.875rem);
917
931
  }
918
- .nexus-number-input--basic.nexus-number-input--xl .nexus-number-input__field {
919
- padding: var(--spacing-padding-md, 1rem);
932
+ :where(.nexus-number-input--lg) .nexus-number-input__field {
933
+ padding: calc(var(--spacing-padding-sm, 0.75rem) - 1px) var(--spacing-padding-sm, 0.75rem);
934
+ font-size: var(--text-text-base, 1rem);
935
+ }
936
+ :where(.nexus-number-input--xl) .nexus-number-input__field {
937
+ padding: calc(var(--spacing-padding-md, 1rem) - 1px) var(--spacing-padding-md, 1rem);
938
+ font-size: var(--text-text-base, 1rem);
939
+ }
940
+
941
+ /* ── Prefix / Suffix icon (text or ReactNode) ──
942
+ * basic / bind variant 모두 공통.
943
+ * field padding과 자연스럽게 이어지도록 padding-inline은 size별 :where() 규칙 참고.
944
+ * 좌측 prefix는 field 좌측 padding을 줄여서 visual gap 통일.
945
+ */
946
+ .nexus-number-input__icon {
947
+ display: flex;
948
+ align-items: center;
949
+ flex-shrink: 0;
950
+ color: var(--color-text-muted);
951
+ font-size: inherit;
952
+ line-height: 1;
953
+ user-select: none;
954
+ pointer-events: none;
955
+ }
956
+ :where(.nexus-number-input--md) .nexus-number-input__icon {
957
+ padding-inline-start: var(--spacing-padding-sm, 0.75rem);
958
+ font-size: var(--text-text-sm, 0.875rem);
959
+ }
960
+ :where(.nexus-number-input--lg) .nexus-number-input__icon {
961
+ padding-inline-start: var(--spacing-padding-sm, 0.75rem);
962
+ font-size: var(--text-text-base, 1rem);
963
+ }
964
+ :where(.nexus-number-input--xl) .nexus-number-input__icon {
965
+ padding-inline-start: var(--spacing-padding-md, 1rem);
966
+ font-size: var(--text-text-base, 1rem);
967
+ }
968
+ :where(.nexus-number-input__icon--suffix) {
969
+ padding-inline-start: 0;
970
+ padding-inline-end: var(--spacing-padding-sm, 0.75rem);
971
+ }
972
+ :where(.nexus-number-input--xl .nexus-number-input__icon--suffix) {
973
+ padding-inline-end: var(--spacing-padding-md, 1rem);
974
+ }
975
+ /* prefix가 있으면 field 좌측 padding을 한번만 가지도록 (icon이 좌측 패딩 담당) */
976
+ :where(.nexus-number-input__icon--prefix) ~ .nexus-number-input__field {
977
+ padding-inline-start: var(--spacing-padding-xs, 0.5rem);
978
+ }
979
+ .nexus-number-input--disabled .nexus-number-input__icon {
980
+ color: var(--color-text-muted);
920
981
  }
921
982
 
922
- /* ── Size: field padding (bind) ── */
983
+ /* ── Bind variant: 좌우 ± 버튼이 들어갈 자리 ── */
923
984
  .nexus-number-input--bind .nexus-number-input__container {
924
985
  padding-inline: var(--spacing-padding-xs, 0.5rem);
925
986
  }
926
987
  .nexus-number-input--bind .nexus-number-input__field {
927
988
  text-align: center;
928
989
  }
929
- .nexus-number-input--bind.nexus-number-input--lg .nexus-number-input__field {
930
- padding: var(--spacing-padding-sm, 0.75rem);
990
+ /* bind variant에서는 ± 버튼이 padding 역할이므로 icon padding 살짝만 */
991
+ .nexus-number-input--bind .nexus-number-input__icon {
992
+ padding-inline-start: var(--spacing-padding-2xs, 0.25rem);
931
993
  }
932
- .nexus-number-input--bind.nexus-number-input--xl .nexus-number-input__field {
933
- padding: var(--spacing-padding-md, 1rem) var(--spacing-padding-sm, 0.75rem);
994
+ .nexus-number-input--bind .nexus-number-input__icon--suffix {
995
+ padding-inline-start: 0;
996
+ padding-inline-end: var(--spacing-padding-2xs, 0.25rem);
934
997
  }
935
998
 
936
999
  /* ── Basic variant: chevron buttons column ── */
@@ -1004,7 +1067,17 @@
1004
1067
  color: var(--color-text-muted);
1005
1068
  cursor: not-allowed;
1006
1069
  }
1007
- .nexus-number-input--xl .nexus-number-input__bind-btn {
1070
+ /* bind ± 버튼: 사이즈별로 가시 영역이 자연스럽게 늘어나도록.
1071
+ * :where()로 명시도 0 — 외부 className으로 버튼 크기도 오버라이드 가능. */
1072
+ :where(.nexus-number-input--md) .nexus-number-input__bind-btn {
1073
+ width: 20px;
1074
+ height: 20px;
1075
+ }
1076
+ :where(.nexus-number-input--lg) .nexus-number-input__bind-btn {
1077
+ width: 24px;
1078
+ height: 24px;
1079
+ }
1080
+ :where(.nexus-number-input--xl) .nexus-number-input__bind-btn {
1008
1081
  width: 30px;
1009
1082
  height: 30px;
1010
1083
  }
@@ -1828,6 +1901,15 @@
1828
1901
  border-radius: var(--radius-corner-lg, 0.5rem);
1829
1902
  padding: 0.25rem;
1830
1903
  }
1904
+ /* fullWidth: 모든 트리거를 균등 분할해서 부모 너비를 채움. :where()로 specificity 0
1905
+ → 사용처에서 className(w-*, flex-*)으로 자유롭게 오버라이드 가능. */
1906
+ :where(.nexus-tab-list--full-width) {
1907
+ width: 100%;
1908
+ }
1909
+ :where(.nexus-tab-list--full-width) .nexus-tab-trigger {
1910
+ flex: 1;
1911
+ justify-content: center;
1912
+ }
1831
1913
  .nexus-tab-trigger {
1832
1914
  position: relative;
1833
1915
  display: inline-flex;
@@ -1915,7 +1997,10 @@
1915
1997
 
1916
1998
  .nexus-spinner {
1917
1999
  animation: nexus-spin 1s linear infinite;
1918
- color: currentColor;
2000
+ }
2001
+ /* default color: brand primary (semantic). :where()로 specificity 0 → 외부 className(text-*, color)이 항상 우선 override 가능. */
2002
+ :where(.nexus-spinner) {
2003
+ color: var(--color-accent-primary);
1919
2004
  }
1920
2005
 
1921
2006
  /* ═══════════════════════════════════════════
@@ -2141,16 +2226,17 @@
2141
2226
  .nexus-select-trigger--outline {
2142
2227
  background: var(--color-surface-default);
2143
2228
  }
2144
- .nexus-select-trigger--sm {
2229
+ /* size variant width: :where() 로 명시도 0 — 외부 className 의 w- / min-w- / max-w- 유틸이 항상 우선. */
2230
+ :where(.nexus-select-trigger--sm) {
2145
2231
  width: 4rem;
2146
2232
  }
2147
- .nexus-select-trigger--md {
2233
+ :where(.nexus-select-trigger--md) {
2148
2234
  width: 8rem;
2149
2235
  }
2150
- .nexus-select-trigger--lg {
2236
+ :where(.nexus-select-trigger--lg) {
2151
2237
  width: 12rem;
2152
2238
  }
2153
- .nexus-select-trigger--full {
2239
+ :where(.nexus-select-trigger--full) {
2154
2240
  width: 100%;
2155
2241
  }
2156
2242
  .nexus-select-trigger--justify-end {
@@ -2226,17 +2312,19 @@
2226
2312
  transform: translateY(-4px) scaleY(0.96);
2227
2313
  }
2228
2314
  }
2229
- .nexus-select-content--sm {
2230
- width: 4rem;
2231
- }
2232
- .nexus-select-content--md {
2233
- width: 8rem;
2234
- }
2235
- .nexus-select-content--lg {
2236
- width: 12rem;
2237
- }
2238
- .nexus-select-content--full {
2315
+ /* Content는 size variant와 무관하게 항상 trigger 너비를 추종한다.
2316
+ * - size는 트리거 크기만 결정. content는 anchor-width 자동 동기화 → 외부 className으로
2317
+ * Select 하나만 늘리면 드롭다운/Item도 자연스럽게 같이 늘어난다.
2318
+ * - SelectItem이 anchor-width보다 더 크면 min-width가 그대로라 content 자식 너비만큼 자연
2319
+ * 확장된다.
2320
+ * - 별도 너비를 원하면 `contentClassName`으로 명시적으로 오버라이드 (외부 className은 :where()
2321
+ * 덕분에 항상 우선). */
2322
+ :where(.nexus-select-content--sm),
2323
+ :where(.nexus-select-content--md),
2324
+ :where(.nexus-select-content--lg),
2325
+ :where(.nexus-select-content--full) {
2239
2326
  width: var(--radix-popper-anchor-width);
2327
+ min-width: var(--radix-popper-anchor-width);
2240
2328
  }
2241
2329
  .nexus-select-viewport {
2242
2330
  padding: 0.25rem;
@@ -2245,7 +2333,6 @@
2245
2333
  .nexus-select-item {
2246
2334
  position: relative;
2247
2335
  display: flex;
2248
- width: 100%;
2249
2336
  cursor: pointer;
2250
2337
  align-items: center;
2251
2338
  border-radius: var(--radius-corner-sm, 0.25rem);
@@ -2257,6 +2344,10 @@
2257
2344
  outline: none;
2258
2345
  user-select: none;
2259
2346
  }
2347
+ /* width 만 :where()로 명시도 0 — 외부 className 의 w-* 가 항상 우선. */
2348
+ :where(.nexus-select-item) {
2349
+ width: 100%;
2350
+ }
2260
2351
  .nexus-select-item:hover,
2261
2352
  .nexus-select-item:focus,
2262
2353
  .nexus-select-item[data-highlighted] {
@@ -4579,6 +4670,53 @@
4579
4670
  height: 16px;
4580
4671
  }
4581
4672
 
4673
+ /* ─── ImageUpload: previewMode="cover" — 박스 가득 채우는 풀 이미지 ─── */
4674
+ .nexus-image-upload--preview-cover {
4675
+ position: relative;
4676
+ display: block;
4677
+ padding: 0;
4678
+ border: 1px solid var(--color-border-default);
4679
+ border-style: solid;
4680
+ background: var(--color-surface-strong);
4681
+ cursor: pointer;
4682
+ /* X 버튼이 모서리 밖으로 살짝 튀어나올 수 있도록 visible. 이미지는 아래 clip wrapper가 라운드 처리. */
4683
+ overflow: visible;
4684
+ }
4685
+ .nexus-image-upload--preview-cover:hover {
4686
+ border-color: var(--color-border-default-hover);
4687
+ box-shadow: 0 0 0 0.5px var(--color-border-default-hover);
4688
+ }
4689
+ /* 이미지 클리핑 — 박스 border-radius와 동일하게 라운드. */
4690
+ .nexus-image-upload__preview-cover-clip {
4691
+ position: absolute;
4692
+ inset: 0;
4693
+ overflow: hidden;
4694
+ border-radius: var(--radius-corner-md, 8px);
4695
+ }
4696
+ .nexus-image-upload__preview-cover-img {
4697
+ position: absolute;
4698
+ inset: 0;
4699
+ width: 100%;
4700
+ height: 100%;
4701
+ object-fit: cover;
4702
+ display: block;
4703
+ pointer-events: none;
4704
+ }
4705
+ .nexus-image-upload__preview-cover-img--contain {
4706
+ object-fit: contain;
4707
+ }
4708
+ /* cover 모드의 X 버튼 — card preview와 동일하게 우측 상단 모서리에 걸치는 형태. */
4709
+ .nexus-image-upload__remove--cover {
4710
+ top: -6px;
4711
+ right: -6px;
4712
+ background: var(--color-surface-inverted);
4713
+ color: var(--color-icon-inverted);
4714
+ }
4715
+ .nexus-image-upload__remove--cover:hover {
4716
+ opacity: 0.85;
4717
+ background: var(--color-surface-inverted);
4718
+ }
4719
+
4582
4720
  .nexus-image-upload__info {
4583
4721
  display: flex;
4584
4722
  flex-direction: column;
@@ -4616,10 +4754,11 @@
4616
4754
  gap: var(--spacing-gap-xs, 0.25rem);
4617
4755
  }
4618
4756
  .nexus-image-upload-field__label {
4619
- font-size: var(--text-label-semibold-md);
4620
- font-weight: var(--font-weight-label-semibold-md, 600);
4757
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
4758
+ font-size: var(--text-label-semibold-sm, 0.75rem);
4759
+ font-weight: var(--font-weight-label-semibold-sm, 600);
4621
4760
  line-height: 1;
4622
- letter-spacing: var(--letter-spacing-label-semibold-md, 0);
4761
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
4623
4762
  color: var(--color-text-tertiary);
4624
4763
  }
4625
4764
  .nexus-image-upload-field__description {
@@ -4830,8 +4969,10 @@
4830
4969
  gap: var(--spacing-gap-xs, 0.25rem);
4831
4970
  }
4832
4971
  .nexus-combobox-field__label {
4833
- font-size: var(--text-label-semibold-md);
4834
- font-weight: var(--font-weight-label-semibold-md, 600);
4972
+ /* label-semibold-sm 토큰 기준 (12px / 600). 다른 input 컴포넌트들과 sync된 라벨 사이즈. */
4973
+ font-size: var(--text-label-semibold-sm, 0.75rem);
4974
+ font-weight: var(--font-weight-label-semibold-sm, 600);
4975
+ letter-spacing: var(--letter-spacing-label-semibold-sm, 0);
4835
4976
  line-height: 1;
4836
4977
  color: var(--color-text-tertiary);
4837
4978
  }
package/dist/styles.js CHANGED
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunk3SCSND6S_js = require('./chunks/chunk-3SCSND6S.js');
3
+ var chunkJICW6KWH_js = require('./chunks/chunk-JICW6KWH.js');
4
4
 
5
5
  // src/styles/inject.ts
6
6
  var STYLE_ID = "__nexus-ds__";
7
7
  var __nexus_styles_injected__ = typeof document !== "undefined" && !document.getElementById(STYLE_ID) ? (() => {
8
8
  const style = document.createElement("style");
9
9
  style.id = STYLE_ID;
10
- style.textContent = chunk3SCSND6S_js.built_default;
10
+ style.textContent = chunkJICW6KWH_js.built_default;
11
11
  document.head.appendChild(style);
12
12
  return true;
13
13
  })() : false;