@nurihaus/web-design-system 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/dist/ai/components.md +166 -2
  2. package/dist/ai/tokens.md +64 -15
  3. package/dist/avatar.js +2 -1
  4. package/dist/bottom-nav.js +407 -0
  5. package/dist/chip-group.js +317 -0
  6. package/dist/chunk-436.js +2 -1
  7. package/dist/chunk-653.js +296 -0
  8. package/dist/chunk-713.js +2 -1
  9. package/dist/chunk-77.js +2 -1
  10. package/dist/components/bottom-nav/base-bottom-nav.d.ts +10 -0
  11. package/dist/components/bottom-nav/bottom-nav-props.d.ts +1 -0
  12. package/dist/components/bottom-nav/bottom-nav-type.d.ts +36 -0
  13. package/dist/components/bottom-nav/bottom-nav.d.ts +4 -0
  14. package/dist/components/bottom-nav/bottom-nav.stories.d.ts +55 -0
  15. package/dist/components/chip-group/base-chip-group.d.ts +5 -0
  16. package/dist/components/chip-group/chip-group-props.d.ts +1 -0
  17. package/dist/components/chip-group/chip-group-type.d.ts +25 -0
  18. package/dist/components/chip-group/chip-group.d.ts +4 -0
  19. package/dist/components/chip-group/chip-group.stories.d.ts +27 -0
  20. package/dist/components/elements/text/text-props.d.ts +1 -1
  21. package/dist/components/elements/text/text.stories.d.ts +1 -1
  22. package/dist/components/icon/base-icon.d.ts +3 -0
  23. package/dist/components/icon/icon-paths.d.ts +202 -0
  24. package/dist/components/icon/icon-props.d.ts +6 -0
  25. package/dist/components/icon/icon-type.d.ts +14 -0
  26. package/dist/components/icon/icon.d.ts +4 -0
  27. package/dist/components/icon/icon.stories.d.ts +33 -0
  28. package/dist/components/skeleton/skeleton.stories.d.ts +5 -5
  29. package/dist/components/step-progress/base-step-progress.d.ts +7 -0
  30. package/dist/components/step-progress/step-progress-props.d.ts +10 -0
  31. package/dist/components/step-progress/step-progress-type.d.ts +17 -0
  32. package/dist/components/step-progress/step-progress.d.ts +4 -0
  33. package/dist/components/step-progress/step-progress.stories.d.ts +29 -0
  34. package/dist/components/toast/toast.stories.d.ts +5 -5
  35. package/dist/components.css +314 -0
  36. package/dist/icon.js +222 -0
  37. package/dist/index.d.ts +8 -0
  38. package/dist/index.js +864 -54
  39. package/dist/step-progress.js +310 -0
  40. package/dist/styles.css +332 -12
  41. package/dist/toast.js +2 -1
  42. package/dist/tokens/generated/semantic-admin.d.ts +24 -24
  43. package/dist/tokens/generated/semantic-app.d.ts +24 -24
  44. package/dist/tokens.css +64 -12
  45. package/dist/tokens.js +48 -48
  46. package/package.json +21 -3
package/dist/styles.css CHANGED
@@ -207,6 +207,18 @@
207
207
  --modal-width-m: 450px;
208
208
  --modal-width-l: 500px;
209
209
 
210
+ /* 하단 탭 바: 화면 아래에 떠 있는 유리 캡슐. 화면은 아래를 --bottom-nav-space(+ 안전 영역)만큼 비운다 */
211
+ --bottom-nav-height: 62px;
212
+ --bottom-nav-padding: 5px;
213
+ --bottom-nav-offset: 14px;
214
+ --bottom-nav-space: calc(var(--bottom-nav-height) + var(--bottom-nav-offset) + 16px);
215
+ --bottom-nav-badge-dot: 8px;
216
+ --bottom-nav-badge-count: 18px;
217
+ --glass-blur: 18px;
218
+
219
+ /* 진행 단계 바 */
220
+ --step-bar-height: 4px;
221
+
210
222
  /* 그 밖의 치수 */
211
223
  --icon-size-s: 18px;
212
224
  --icon-size-m: 20px;
@@ -228,6 +240,7 @@
228
240
 
229
241
  /* 그림자 */
230
242
  --shadow-popover: 0px 4px 6px -2px rgba(0, 0, 0, 0.06), 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
243
+ --shadow-floating: 0px 10px 30px rgba(24, 24, 27, 0.14), 0px 1px 3px rgba(24, 24, 27, 0.08);
231
244
 
232
245
  /* 레이어. 값이 같아도 역할이 다르면 이름을 따로 둔다 */
233
246
  --z-base: 0;
@@ -244,6 +257,9 @@
244
257
  --motion-fast: 160ms;
245
258
  --motion-base: 300ms;
246
259
  --motion-ease: ease;
260
+ --motion-slow: 420ms;
261
+ /* 끝에서 살짝 넘쳤다 돌아온다. 탭 바 선택 캡슐 */
262
+ --motion-spring: cubic-bezier(0.34, 1.45, 0.5, 1);
247
263
  --spinner-duration: 1.2s;
248
264
  --skeleton-duration: 1.5s;
249
265
  --spinner-ease: cubic-bezier(0.5, 0, 0.5, 1);
@@ -268,12 +284,30 @@
268
284
  --button-variant-outlined-background: var(--color-white);
269
285
  --button-variant-outlined-border: var(--color-accent-red-700);
270
286
  --button-variant-outlined-text: var(--color-accent-red-700);
271
- --button-size-xl: [object Object];
272
- --button-size-lg: [object Object];
273
- --button-size-md: [object Object];
274
- --button-size-rg: [object Object];
275
- --button-size-sm: [object Object];
276
- --button-size-xs: [object Object];
287
+ --button-size-xl-font-family: var(--font-family-primary);
288
+ --button-size-xl-font-weight: var(--font-weight-bold);
289
+ --button-size-xl-font-size: var(--font-size-lg);
290
+ --button-size-xl-line-height: var(--line-height-lg);
291
+ --button-size-lg-font-family: var(--font-family-primary);
292
+ --button-size-lg-font-weight: var(--font-weight-bold);
293
+ --button-size-lg-font-size: var(--font-size-base);
294
+ --button-size-lg-line-height: var(--line-height-base);
295
+ --button-size-md-font-family: var(--font-family-primary);
296
+ --button-size-md-font-weight: var(--font-weight-semibold);
297
+ --button-size-md-font-size: var(--font-size-sm);
298
+ --button-size-md-line-height: var(--line-height-sm);
299
+ --button-size-rg-font-family: var(--font-family-primary);
300
+ --button-size-rg-font-weight: var(--font-weight-semibold);
301
+ --button-size-rg-font-size: var(--font-size-sm);
302
+ --button-size-rg-line-height: var(--line-height-sm);
303
+ --button-size-sm-font-family: var(--font-family-primary);
304
+ --button-size-sm-font-weight: var(--font-weight-semibold);
305
+ --button-size-sm-font-size: var(--font-size-xsm);
306
+ --button-size-sm-line-height: var(--line-height-sm);
307
+ --button-size-xs-font-family: var(--font-family-primary);
308
+ --button-size-xs-font-weight: var(--font-weight-semibold);
309
+ --button-size-xs-font-size: var(--font-size-xsm);
310
+ --button-size-xs-line-height: var(--line-height-sm);
277
311
  }
278
312
  /* semantic: admin */
279
313
  :root[data-ds-theme='admin'] {
@@ -312,12 +346,30 @@
312
346
  --button-variant-confirm-hover-background: var(--color-accent-red-700);
313
347
  --button-variant-confirm-hover-border: var(--color-accent-red-700);
314
348
  --button-variant-confirm-hover-text: var(--color-white);
315
- --button-xl: [object Object];
316
- --button-l: [object Object];
317
- --button-sb: [object Object];
318
- --button-r: [object Object];
319
- --button-s: [object Object];
320
- --button-xs: [object Object];
349
+ --button-xl-font-family: var(--font-family-primary);
350
+ --button-xl-font-weight: var(--font-weight-bold);
351
+ --button-xl-font-size: var(--font-size-lg);
352
+ --button-xl-line-height: var(--line-height-lg);
353
+ --button-l-font-family: var(--font-family-primary);
354
+ --button-l-font-weight: var(--font-weight-bold);
355
+ --button-l-font-size: var(--font-size-base);
356
+ --button-l-line-height: var(--line-height-base);
357
+ --button-sb-font-family: var(--font-family-primary);
358
+ --button-sb-font-weight: var(--font-weight-semibold);
359
+ --button-sb-font-size: var(--font-size-sm);
360
+ --button-sb-line-height: var(--line-height-sm);
361
+ --button-r-font-family: var(--font-family-primary);
362
+ --button-r-font-weight: var(--font-weight-semibold);
363
+ --button-r-font-size: var(--font-size-sm);
364
+ --button-r-line-height: var(--line-height-sm);
365
+ --button-s-font-family: var(--font-family-primary);
366
+ --button-s-font-weight: var(--font-weight-semibold);
367
+ --button-s-font-size: var(--font-size-xsm);
368
+ --button-s-line-height: var(--line-height-sm);
369
+ --button-xs-font-family: var(--font-family-primary);
370
+ --button-xs-font-weight: var(--font-weight-semibold);
371
+ --button-xs-font-size: var(--font-size-xsm);
372
+ --button-xs-line-height: var(--line-height-sm);
321
373
  --button-size-xs: 30;
322
374
  --button-size-s: 40;
323
375
  --button-size-r: 48;
@@ -735,6 +787,133 @@ p {
735
787
  background-color: var(--color-white);
736
788
  border: var(--hairline) solid var(--color-grey-scale-300);
737
789
  }
790
+ .base-bottom-nav:where(.root) {
791
+ position: fixed;
792
+ left: var(--spacing-16);
793
+ right: var(--spacing-16);
794
+ /* 기기 홈 막대만큼 더 띄운다. env() 의 대체값 0 은 단위가 있어야 calc 가 성립한다 */
795
+ bottom: calc(var(--bottom-nav-offset) + env(safe-area-inset-bottom, 0px)); /* raw-px */
796
+ z-index: var(--z-sticky);
797
+ display: grid;
798
+ grid-template-columns: repeat(var(--bottom-nav-count), minmax(0, 1fr));
799
+ height: var(--bottom-nav-height);
800
+ padding: var(--bottom-nav-padding);
801
+ box-sizing: border-box;
802
+ border-radius: var(--radius-full);
803
+ isolation: isolate;
804
+ }
805
+ .base-bottom-nav:where(.indicator) {
806
+ position: absolute;
807
+ z-index: var(--z-base);
808
+ top: var(--bottom-nav-padding);
809
+ bottom: var(--bottom-nav-padding);
810
+ left: var(--bottom-nav-padding);
811
+ width: calc((100% - 2 * var(--bottom-nav-padding)) / var(--bottom-nav-count));
812
+ border-radius: inherit;
813
+ transform: translateX(calc(var(--bottom-nav-active) * 100%));
814
+ }
815
+ .base-bottom-nav:where(.item) {
816
+ position: relative;
817
+ z-index: var(--z-raised);
818
+ display: flex;
819
+ flex-direction: column-reverse;
820
+ align-items: center;
821
+ justify-content: center;
822
+ gap: var(--spacing-2);
823
+ border-radius: inherit;
824
+ text-decoration: none;
825
+ }
826
+ /***************************************************************************************************
827
+ * *
828
+ * bottom-nav — 유리 캡슐 *
829
+ * *
830
+ ***************************************************************************************************/
831
+ .bottom-nav {
832
+ /* 뒤를 흐리고 채도를 올린 반투명 바탕 + 위쪽 반사광 + 흰 안쪽 테두리 + 그림자 */
833
+ background:
834
+ linear-gradient(
835
+ 180deg,
836
+ color-mix(in srgb, var(--color-grey-scale-50) 55%, transparent),
837
+ transparent 55%
838
+ ),
839
+ color-mix(in srgb, var(--color-grey-scale-50) 62%, transparent);
840
+ backdrop-filter: blur(var(--glass-blur)) saturate(180%);
841
+ box-shadow:
842
+ inset 0 var(--hairline) 0 color-mix(in srgb, var(--color-grey-scale-50) 75%, transparent),
843
+ inset 0 0 0 var(--hairline) color-mix(in srgb, var(--color-grey-scale-50) 35%, transparent),
844
+ var(--shadow-floating);
845
+
846
+ /* 흐림을 못 하는 브라우저, 투명도 줄이기 설정에서는 거의 불투명하게 */
847
+ }
848
+ @supports not ((backdrop-filter: none) or (-webkit-backdrop-filter: none)) {
849
+ .bottom-nav {
850
+ background: color-mix(in srgb, var(--color-grey-scale-50) 96%, transparent);
851
+ }
852
+ }
853
+ @media (prefers-reduced-transparency: reduce) {
854
+ .bottom-nav {
855
+ background: color-mix(in srgb, var(--color-grey-scale-50) 98%, transparent);
856
+ }
857
+ }
858
+ .bottom-nav-indicator {
859
+ background: color-mix(in srgb, var(--color-purple-900) 10%, transparent);
860
+ box-shadow: inset 0 var(--hairline) 0
861
+ color-mix(in srgb, var(--color-grey-scale-50) 50%, transparent);
862
+ transition: transform var(--motion-slow) var(--motion-spring);
863
+ }
864
+ @media (prefers-reduced-motion: reduce) {
865
+ .bottom-nav-indicator {
866
+ transition: none;
867
+ }
868
+ }
869
+ .bottom-nav-item {
870
+ color: var(--color-grey-scale-600);
871
+ font-size: var(--font-size-xsm);
872
+ font-weight: var(--font-weight-medium);
873
+ -webkit-tap-highlight-color: transparent;
874
+ transition: color var(--motion-fast) var(--motion-ease);
875
+ }
876
+ .bottom-nav-item[aria-current='page'] {
877
+ color: var(--color-purple-900);
878
+ font-weight: var(--font-weight-bold);
879
+ }
880
+ .bottom-nav-item:focus-visible {
881
+ outline: var(--hairline) solid var(--color-purple-600);
882
+ outline-offset: calc(-1 * var(--spacing-2));
883
+ }
884
+ .bottom-nav-item:active .bottom-nav-icon {
885
+ transform: scale(0.88);
886
+ }
887
+ .bottom-nav-icon {
888
+ position: relative;
889
+ display: flex;
890
+ transition: transform var(--motion-fast) var(--motion-spring);
891
+ }
892
+ .bottom-nav-badge {
893
+ position: absolute;
894
+ top: 0;
895
+ left: calc(100% - var(--spacing-6));
896
+ min-width: var(--bottom-nav-badge-dot);
897
+ height: var(--bottom-nav-badge-dot);
898
+ box-sizing: border-box;
899
+ border-radius: var(--radius-full);
900
+ background: var(--color-accent-red-500);
901
+ box-shadow: 0 0 0 var(--spacing-2) var(--color-grey-scale-50);
902
+ }
903
+ .bottom-nav-badge[data-count] {
904
+ top: calc(-1 * var(--spacing-4));
905
+ left: calc(100% - var(--spacing-8));
906
+ min-width: var(--bottom-nav-badge-count);
907
+ height: var(--bottom-nav-badge-count);
908
+ padding: 0 var(--spacing-4);
909
+ display: flex;
910
+ align-items: center;
911
+ justify-content: center;
912
+ color: var(--color-grey-scale-50);
913
+ font-size: var(--font-size-xsm);
914
+ font-weight: var(--font-weight-bold);
915
+ font-variant-numeric: tabular-nums;
916
+ }
738
917
  .base-breadcrumb:where(.list) {
739
918
  display: flex;
740
919
  flex-wrap: wrap;
@@ -1005,6 +1184,73 @@ p {
1005
1184
  border-radius: var(--radius-4);
1006
1185
  background-color: var(--color-grey-scale-300);
1007
1186
  }
1187
+ .base-chip-group:where(.root) {
1188
+ display: flex;
1189
+ gap: var(--spacing-8);
1190
+ overflow-x: auto;
1191
+ /* 칩의 터치 여백이 잘리지 않게 위아래를 비운다 */
1192
+ padding-block: var(--spacing-4);
1193
+ scrollbar-width: none;
1194
+ }
1195
+ .base-chip-group:where(.root)::-webkit-scrollbar {
1196
+ display: none;
1197
+ }
1198
+ .base-chip-group:where(.chip) {
1199
+ position: relative;
1200
+ flex-shrink: 0;
1201
+ display: inline-flex;
1202
+ align-items: center;
1203
+ gap: var(--spacing-6);
1204
+ cursor: pointer;
1205
+
1206
+ /* 36 높이를 터치 44 로 넓힌다 */
1207
+ }
1208
+ .base-chip-group:where(.chip)::after {
1209
+ content: '';
1210
+ position: absolute;
1211
+ inset: calc(-1 * var(--spacing-4)) 0;
1212
+ }
1213
+ .base-chip-group[data-disabled]:where(.chip) {
1214
+ cursor: not-allowed;
1215
+ }
1216
+ /***************************************************************************************************
1217
+ * *
1218
+ * chip-group *
1219
+ * *
1220
+ ***************************************************************************************************/
1221
+ .chip-group-chip {
1222
+ height: var(--control-height-s);
1223
+ padding: 0 var(--spacing-14);
1224
+ border: var(--hairline) solid var(--color-grey-scale-300);
1225
+ border-radius: var(--radius-full);
1226
+ background: var(--color-grey-scale-50);
1227
+ color: var(--color-grey-scale-600);
1228
+ font-size: var(--font-size-sm);
1229
+ font-weight: var(--font-weight-medium);
1230
+ transition:
1231
+ background-color var(--motion-fast) var(--motion-ease),
1232
+ color var(--motion-fast) var(--motion-ease),
1233
+ border-color var(--motion-fast) var(--motion-ease);
1234
+ }
1235
+ .chip-group-chip[data-state='on'] {
1236
+ border-color: var(--color-purple-900);
1237
+ background: var(--color-purple-900);
1238
+ color: var(--color-grey-scale-50);
1239
+ font-weight: var(--font-weight-semibold);
1240
+ }
1241
+ .chip-group-chip[data-disabled] {
1242
+ border-color: var(--color-grey-scale-200);
1243
+ color: var(--color-grey-scale-300);
1244
+ }
1245
+ .chip-group-chip:focus-visible {
1246
+ outline: var(--hairline) solid var(--color-purple-600);
1247
+ outline-offset: var(--spacing-2);
1248
+ }
1249
+ .chip-group-count {
1250
+ font-size: var(--font-size-xsm);
1251
+ font-variant-numeric: tabular-nums;
1252
+ opacity: 0.75;
1253
+ }
1008
1254
  .base-collapsible-menu.trigger {
1009
1255
  display: flex;
1010
1256
  align-items: center;
@@ -1773,6 +2019,22 @@ p {
1773
2019
  .base-text.color-accent-orange-900[class*='color-'] {
1774
2020
  color: var(--color-accent-orange-900);
1775
2021
  }
2022
+ .base-icon {
2023
+ flex-shrink: 0;
2024
+ vertical-align: middle;
2025
+ }
2026
+ .icon.size-s {
2027
+ width: var(--icon-size-s);
2028
+ height: var(--icon-size-s);
2029
+ }
2030
+ .icon.size-m {
2031
+ width: var(--icon-size-m);
2032
+ height: var(--icon-size-m);
2033
+ }
2034
+ .icon.size-l {
2035
+ width: var(--icon-size-l);
2036
+ height: var(--icon-size-l);
2037
+ }
1776
2038
  .base-inline-loading {
1777
2039
  display: flex;
1778
2040
  width: 100%;
@@ -2213,6 +2475,64 @@ p {
2213
2475
  transform: translateX(100%);
2214
2476
  }
2215
2477
  }
2478
+ .base-step-progress:where(.root) {
2479
+ display: grid;
2480
+ grid-template-columns: repeat(var(--step-count), minmax(0, 1fr));
2481
+ gap: var(--spacing-4);
2482
+ margin: 0;
2483
+ padding: 0;
2484
+ list-style: none;
2485
+ }
2486
+ .base-step-progress:where(.step) {
2487
+ display: flex;
2488
+ flex-direction: column;
2489
+ gap: var(--spacing-6);
2490
+ min-width: 0;
2491
+ }
2492
+ /***************************************************************************************************
2493
+ * *
2494
+ * step-progress *
2495
+ * *
2496
+ ***************************************************************************************************/
2497
+ .step-progress-bar {
2498
+ display: block;
2499
+ height: var(--step-bar-height);
2500
+ border-radius: var(--radius-full);
2501
+ background: var(--color-grey-scale-200);
2502
+ transition: background-color var(--motion-base) var(--motion-ease);
2503
+ }
2504
+ .step-progress-name {
2505
+ overflow: hidden;
2506
+ color: var(--color-grey-scale-500);
2507
+ font-size: var(--font-size-xsm);
2508
+ white-space: nowrap;
2509
+ text-overflow: ellipsis;
2510
+ }
2511
+ .step-progress-step[data-state='done'] .step-progress-bar {
2512
+ background: var(--color-purple-900);
2513
+ }
2514
+ .step-progress-step[data-state='done'] .step-progress-name {
2515
+ color: var(--color-grey-scale-600);
2516
+ }
2517
+ .step-progress-step[data-state='current'] .step-progress-bar {
2518
+ background: var(--color-purple-600);
2519
+ }
2520
+ .step-progress-step[data-state='current'] .step-progress-name {
2521
+ color: var(--color-purple-900);
2522
+ font-weight: var(--font-weight-semibold);
2523
+ }
2524
+ /* 지금 단계 이름만 보인다. 다른 이름은 낭독기에는 남긴다 */
2525
+ .step-progress.label-visibility-current .step-progress-step:not([data-state='current']) .step-progress-name {
2526
+ position: absolute;
2527
+ width: 1px; /* raw-px */
2528
+ height: 1px; /* raw-px */
2529
+ overflow: hidden;
2530
+ clip-path: inset(50%);
2531
+ white-space: nowrap;
2532
+ }
2533
+ .step-progress.label-visibility-current .step-progress-step[data-state='current'] .step-progress-name {
2534
+ overflow: visible;
2535
+ }
2216
2536
  .base-switch:where(.thumb) {
2217
2537
  display: block;
2218
2538
  }
package/dist/toast.js CHANGED
@@ -189,7 +189,8 @@ var SvgExclamation = function SvgExclamation(props) {
189
189
  xmlns: "http://www.w3.org/2000/svg",
190
190
  width: 16,
191
191
  height: 16,
192
- fill: "none"
192
+ fill: "none",
193
+ viewBox: "0 0 16 16"
193
194
  }, props), _path || (_path = /*#__PURE__*/external_root_React_commonjs2_react_commonjs_react_amd_react_module_react_.createElement("path", {
194
195
  stroke: "#fff",
195
196
  strokeLinecap: "round",
@@ -62,40 +62,40 @@ export declare const semanticAdmin: {
62
62
  };
63
63
  };
64
64
  readonly xl: {
65
- readonly fontFamily: "{primary}";
66
- readonly fontWeight: "{font-weight.b}";
67
- readonly fontSize: "{font-size.lg}";
68
- readonly lineHeight: "{line-height.24}";
65
+ readonly fontFamily: "Pretendard";
66
+ readonly fontWeight: 700;
67
+ readonly fontSize: 18;
68
+ readonly lineHeight: 24;
69
69
  };
70
70
  readonly l: {
71
- readonly fontFamily: "{primary}";
72
- readonly fontWeight: "{font-weight.b}";
73
- readonly fontSize: "{font-size.base}";
74
- readonly lineHeight: "{line-height.22}";
71
+ readonly fontFamily: "Pretendard";
72
+ readonly fontWeight: 700;
73
+ readonly fontSize: 16;
74
+ readonly lineHeight: 22;
75
75
  };
76
76
  readonly sb: {
77
- readonly fontFamily: "{primary}";
78
- readonly fontWeight: "{font-weight.sb}";
79
- readonly fontSize: "{font-size.sm}";
80
- readonly lineHeight: "{line-height.18}";
77
+ readonly fontFamily: "Pretendard";
78
+ readonly fontWeight: 600;
79
+ readonly fontSize: 14;
80
+ readonly lineHeight: 18;
81
81
  };
82
82
  readonly r: {
83
- readonly fontFamily: "{primary}";
84
- readonly fontWeight: "{font-weight.sb}";
85
- readonly fontSize: "{font-size.sm}";
86
- readonly lineHeight: "{line-height.18}";
83
+ readonly fontFamily: "Pretendard";
84
+ readonly fontWeight: 600;
85
+ readonly fontSize: 14;
86
+ readonly lineHeight: 18;
87
87
  };
88
88
  readonly s: {
89
- readonly fontFamily: "{primary}";
90
- readonly fontWeight: "{font-weight.sb}";
91
- readonly fontSize: "{font-size.xsm}";
92
- readonly lineHeight: "{line-height.18}";
89
+ readonly fontFamily: "Pretendard";
90
+ readonly fontWeight: 600;
91
+ readonly fontSize: 12;
92
+ readonly lineHeight: 18;
93
93
  };
94
94
  readonly xs: {
95
- readonly fontFamily: "{primary}";
96
- readonly fontWeight: "{font-weight.sb}";
97
- readonly fontSize: "{font-size.xsm}";
98
- readonly lineHeight: "{line-height.18}";
95
+ readonly fontFamily: "Pretendard";
96
+ readonly fontWeight: 600;
97
+ readonly fontSize: 12;
98
+ readonly lineHeight: 18;
99
99
  };
100
100
  readonly size: {
101
101
  readonly xs: 30;
@@ -34,40 +34,40 @@ export declare const semanticApp: {
34
34
  };
35
35
  readonly size: {
36
36
  readonly xl: {
37
- readonly fontFamily: "{primary}";
38
- readonly fontWeight: "{font-weight.b}";
39
- readonly fontSize: "{font-size.lg}";
40
- readonly lineHeight: "{line-height.24}";
37
+ readonly fontFamily: "Pretendard";
38
+ readonly fontWeight: 700;
39
+ readonly fontSize: 18;
40
+ readonly lineHeight: 24;
41
41
  };
42
42
  readonly lg: {
43
- readonly fontFamily: "{primary}";
44
- readonly fontWeight: "{font-weight.b}";
45
- readonly fontSize: "{font-size.base}";
46
- readonly lineHeight: "{line-height.22}";
43
+ readonly fontFamily: "Pretendard";
44
+ readonly fontWeight: 700;
45
+ readonly fontSize: 16;
46
+ readonly lineHeight: 22;
47
47
  };
48
48
  readonly md: {
49
- readonly fontFamily: "{primary}";
50
- readonly fontWeight: "{font-weight.sb}";
51
- readonly fontSize: "{font-size.sm}";
52
- readonly lineHeight: "{line-height.18}";
49
+ readonly fontFamily: "Pretendard";
50
+ readonly fontWeight: 600;
51
+ readonly fontSize: 14;
52
+ readonly lineHeight: 18;
53
53
  };
54
54
  readonly rg: {
55
- readonly fontFamily: "{primary}";
56
- readonly fontWeight: "{font-weight.sb}";
57
- readonly fontSize: "{font-size.sm}";
58
- readonly lineHeight: "{line-height.18}";
55
+ readonly fontFamily: "Pretendard";
56
+ readonly fontWeight: 600;
57
+ readonly fontSize: 14;
58
+ readonly lineHeight: 18;
59
59
  };
60
60
  readonly sm: {
61
- readonly fontFamily: "{primary}";
62
- readonly fontWeight: "{font-weight.sb}";
63
- readonly fontSize: "{font-size.xsm}";
64
- readonly lineHeight: "{line-height.18}";
61
+ readonly fontFamily: "Pretendard";
62
+ readonly fontWeight: 600;
63
+ readonly fontSize: 12;
64
+ readonly lineHeight: 18;
65
65
  };
66
66
  readonly xs: {
67
- readonly fontFamily: "{primary}";
68
- readonly fontWeight: "{font-weight.sb}";
69
- readonly fontSize: "{font-size.xsm}";
70
- readonly lineHeight: "{line-height.18}";
67
+ readonly fontFamily: "Pretendard";
68
+ readonly fontWeight: 600;
69
+ readonly fontSize: 12;
70
+ readonly lineHeight: 18;
71
71
  };
72
72
  };
73
73
  };
package/dist/tokens.css CHANGED
@@ -205,6 +205,18 @@
205
205
  --modal-width-m: 450px;
206
206
  --modal-width-l: 500px;
207
207
 
208
+ /* 하단 탭 바: 화면 아래에 떠 있는 유리 캡슐. 화면은 아래를 --bottom-nav-space(+ 안전 영역)만큼 비운다 */
209
+ --bottom-nav-height: 62px;
210
+ --bottom-nav-padding: 5px;
211
+ --bottom-nav-offset: 14px;
212
+ --bottom-nav-space: calc(var(--bottom-nav-height) + var(--bottom-nav-offset) + 16px);
213
+ --bottom-nav-badge-dot: 8px;
214
+ --bottom-nav-badge-count: 18px;
215
+ --glass-blur: 18px;
216
+
217
+ /* 진행 단계 바 */
218
+ --step-bar-height: 4px;
219
+
208
220
  /* 그 밖의 치수 */
209
221
  --icon-size-s: 18px;
210
222
  --icon-size-m: 20px;
@@ -226,6 +238,7 @@
226
238
 
227
239
  /* 그림자 */
228
240
  --shadow-popover: 0px 4px 6px -2px rgba(0, 0, 0, 0.06), 0px 10px 15px -3px rgba(0, 0, 0, 0.1);
241
+ --shadow-floating: 0px 10px 30px rgba(24, 24, 27, 0.14), 0px 1px 3px rgba(24, 24, 27, 0.08);
229
242
 
230
243
  /* 레이어. 값이 같아도 역할이 다르면 이름을 따로 둔다 */
231
244
  --z-base: 0;
@@ -242,6 +255,9 @@
242
255
  --motion-fast: 160ms;
243
256
  --motion-base: 300ms;
244
257
  --motion-ease: ease;
258
+ --motion-slow: 420ms;
259
+ /* 끝에서 살짝 넘쳤다 돌아온다. 탭 바 선택 캡슐 */
260
+ --motion-spring: cubic-bezier(0.34, 1.45, 0.5, 1);
245
261
  --spinner-duration: 1.2s;
246
262
  --skeleton-duration: 1.5s;
247
263
  --spinner-ease: cubic-bezier(0.5, 0, 0.5, 1);
@@ -266,12 +282,30 @@
266
282
  --button-variant-outlined-background: var(--color-white);
267
283
  --button-variant-outlined-border: var(--color-accent-red-700);
268
284
  --button-variant-outlined-text: var(--color-accent-red-700);
269
- --button-size-xl: [object Object];
270
- --button-size-lg: [object Object];
271
- --button-size-md: [object Object];
272
- --button-size-rg: [object Object];
273
- --button-size-sm: [object Object];
274
- --button-size-xs: [object Object];
285
+ --button-size-xl-font-family: var(--font-family-primary);
286
+ --button-size-xl-font-weight: var(--font-weight-bold);
287
+ --button-size-xl-font-size: var(--font-size-lg);
288
+ --button-size-xl-line-height: var(--line-height-lg);
289
+ --button-size-lg-font-family: var(--font-family-primary);
290
+ --button-size-lg-font-weight: var(--font-weight-bold);
291
+ --button-size-lg-font-size: var(--font-size-base);
292
+ --button-size-lg-line-height: var(--line-height-base);
293
+ --button-size-md-font-family: var(--font-family-primary);
294
+ --button-size-md-font-weight: var(--font-weight-semibold);
295
+ --button-size-md-font-size: var(--font-size-sm);
296
+ --button-size-md-line-height: var(--line-height-sm);
297
+ --button-size-rg-font-family: var(--font-family-primary);
298
+ --button-size-rg-font-weight: var(--font-weight-semibold);
299
+ --button-size-rg-font-size: var(--font-size-sm);
300
+ --button-size-rg-line-height: var(--line-height-sm);
301
+ --button-size-sm-font-family: var(--font-family-primary);
302
+ --button-size-sm-font-weight: var(--font-weight-semibold);
303
+ --button-size-sm-font-size: var(--font-size-xsm);
304
+ --button-size-sm-line-height: var(--line-height-sm);
305
+ --button-size-xs-font-family: var(--font-family-primary);
306
+ --button-size-xs-font-weight: var(--font-weight-semibold);
307
+ --button-size-xs-font-size: var(--font-size-xsm);
308
+ --button-size-xs-line-height: var(--line-height-sm);
275
309
  }
276
310
  /* semantic: admin */
277
311
  :root[data-ds-theme='admin'] {
@@ -310,12 +344,30 @@
310
344
  --button-variant-confirm-hover-background: var(--color-accent-red-700);
311
345
  --button-variant-confirm-hover-border: var(--color-accent-red-700);
312
346
  --button-variant-confirm-hover-text: var(--color-white);
313
- --button-xl: [object Object];
314
- --button-l: [object Object];
315
- --button-sb: [object Object];
316
- --button-r: [object Object];
317
- --button-s: [object Object];
318
- --button-xs: [object Object];
347
+ --button-xl-font-family: var(--font-family-primary);
348
+ --button-xl-font-weight: var(--font-weight-bold);
349
+ --button-xl-font-size: var(--font-size-lg);
350
+ --button-xl-line-height: var(--line-height-lg);
351
+ --button-l-font-family: var(--font-family-primary);
352
+ --button-l-font-weight: var(--font-weight-bold);
353
+ --button-l-font-size: var(--font-size-base);
354
+ --button-l-line-height: var(--line-height-base);
355
+ --button-sb-font-family: var(--font-family-primary);
356
+ --button-sb-font-weight: var(--font-weight-semibold);
357
+ --button-sb-font-size: var(--font-size-sm);
358
+ --button-sb-line-height: var(--line-height-sm);
359
+ --button-r-font-family: var(--font-family-primary);
360
+ --button-r-font-weight: var(--font-weight-semibold);
361
+ --button-r-font-size: var(--font-size-sm);
362
+ --button-r-line-height: var(--line-height-sm);
363
+ --button-s-font-family: var(--font-family-primary);
364
+ --button-s-font-weight: var(--font-weight-semibold);
365
+ --button-s-font-size: var(--font-size-xsm);
366
+ --button-s-line-height: var(--line-height-sm);
367
+ --button-xs-font-family: var(--font-family-primary);
368
+ --button-xs-font-weight: var(--font-weight-semibold);
369
+ --button-xs-font-size: var(--font-size-xsm);
370
+ --button-xs-line-height: var(--line-height-sm);
319
371
  --button-size-xs: 30;
320
372
  --button-size-s: 40;
321
373
  --button-size-r: 48;