@x-plat/design-system 0.6.1 → 0.7.1

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 (81) hide show
  1. package/dist/components/Accordion/index.css +10 -3
  2. package/dist/components/Alert/index.css +7 -0
  3. package/dist/components/AutoResizeTextArea/index.css +3 -0
  4. package/dist/components/Avatar/index.css +13 -1
  5. package/dist/components/Badge/index.cjs +10 -7
  6. package/dist/components/Badge/index.css +26 -15
  7. package/dist/components/Badge/index.d.cts +3 -19
  8. package/dist/components/Badge/index.d.ts +3 -19
  9. package/dist/components/Badge/index.js +8 -6
  10. package/dist/components/Box/index.css +8 -5
  11. package/dist/components/Breadcrumb/index.css +5 -1
  12. package/dist/components/Button/index.css +10 -1
  13. package/dist/components/Calendar/index.css +10 -6
  14. package/dist/components/CardTab/index.css +14 -2
  15. package/dist/components/Chart/index.css +32 -11
  16. package/dist/components/ChatInput/index.css +6 -0
  17. package/dist/components/CheckBox/index.css +10 -1
  18. package/dist/components/Chip/index.css +12 -0
  19. package/dist/components/DatePicker/index.css +51 -12
  20. package/dist/components/Drawer/index.css +14 -7
  21. package/dist/components/Dropdown/index.css +5 -1
  22. package/dist/components/Editor/index.css +49 -10
  23. package/dist/components/EmptyState/index.css +9 -2
  24. package/dist/components/FileUpload/index.css +9 -2
  25. package/dist/components/HtmlTypeWriter/index.cjs +2 -0
  26. package/dist/components/HtmlTypeWriter/index.css +13 -1
  27. package/dist/components/HtmlTypeWriter/index.d.cts +3 -3
  28. package/dist/components/HtmlTypeWriter/index.d.ts +3 -3
  29. package/dist/components/HtmlTypeWriter/index.js +1 -0
  30. package/dist/components/ImageSelector/index.css +8 -0
  31. package/dist/components/Input/index.css +12 -0
  32. package/dist/components/Modal/index.css +1 -1
  33. package/dist/components/NotificationBadge/index.cjs +68 -0
  34. package/dist/components/NotificationBadge/index.css +75 -0
  35. package/dist/components/NotificationBadge/index.d.cts +47 -0
  36. package/dist/components/NotificationBadge/index.d.ts +47 -0
  37. package/dist/components/NotificationBadge/index.js +40 -0
  38. package/dist/components/Pagination/index.css +25 -1
  39. package/dist/components/PopOver/index.css +1 -1
  40. package/dist/components/Progress/index.css +5 -2
  41. package/dist/components/Radio/index.css +9 -0
  42. package/dist/components/Select/index.css +20 -3
  43. package/dist/components/Steps/index.css +14 -4
  44. package/dist/components/Switch/index.css +1 -1
  45. package/dist/components/Tab/index.css +16 -1
  46. package/dist/components/Table/index.cjs +6 -1
  47. package/dist/components/Table/index.css +12 -0
  48. package/dist/components/Table/index.d.cts +4 -0
  49. package/dist/components/Table/index.d.ts +4 -0
  50. package/dist/components/Table/index.js +6 -1
  51. package/dist/components/Tag/index.css +12 -0
  52. package/dist/components/TextArea/index.css +9 -0
  53. package/dist/components/Toast/index.css +8 -1
  54. package/dist/components/Tooltip/index.css +8 -4
  55. package/dist/components/Video/index.css +30 -19
  56. package/dist/components/index.cjs +274 -265
  57. package/dist/components/index.css +547 -162
  58. package/dist/components/index.d.cts +2 -2
  59. package/dist/components/index.d.ts +2 -2
  60. package/dist/components/index.js +272 -265
  61. package/dist/index.cjs +274 -265
  62. package/dist/index.css +547 -162
  63. package/dist/index.d.cts +2 -2
  64. package/dist/index.d.ts +2 -2
  65. package/dist/index.js +272 -265
  66. package/dist/layout/index.css +40 -0
  67. package/guidelines/AGENT_PROMPT.md +1 -1
  68. package/guidelines/Guidelines.md +1 -1
  69. package/guidelines/components/accordion.md +1 -1
  70. package/guidelines/components/avatar.md +1 -1
  71. package/guidelines/components/card.md +1 -1
  72. package/guidelines/components/chart.md +1 -1
  73. package/guidelines/components/data-display.md +4 -4
  74. package/guidelines/components/dropdown.md +1 -1
  75. package/guidelines/components/feedback.md +39 -11
  76. package/guidelines/components/file-media.md +3 -3
  77. package/guidelines/components/html-typewriter.md +1 -1
  78. package/guidelines/components/navigation.md +144 -20
  79. package/guidelines/components/swiper.md +2 -2
  80. package/guidelines/components/table.md +68 -5
  81. package/package.json +1 -1
@@ -27,18 +27,27 @@
27
27
  }
28
28
  .lib-xplat-input-wrap .lib-xplat-input.sm {
29
29
  height: var(--spacing-control-height-sm);
30
+ font-family: var(--semantic-typo-caption-1-r-font);
30
31
  font-size: var(--semantic-typo-caption-1-r-size);
31
32
  line-height: var(--semantic-typo-caption-1-r-lh);
33
+ font-weight: var(--semantic-typo-caption-1-r-weight);
34
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
32
35
  }
33
36
  .lib-xplat-input-wrap .lib-xplat-input.md {
34
37
  height: var(--spacing-control-height-md);
38
+ font-family: var(--semantic-typo-label-2-m-font);
35
39
  font-size: var(--semantic-typo-label-2-m-size);
36
40
  line-height: var(--semantic-typo-label-2-m-lh);
41
+ font-weight: var(--semantic-typo-label-2-m-weight);
42
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
37
43
  }
38
44
  .lib-xplat-input-wrap .lib-xplat-input.lg {
39
45
  height: var(--spacing-control-height-lg);
46
+ font-family: var(--semantic-typo-label-1-m-font);
40
47
  font-size: var(--semantic-typo-label-1-m-size);
41
48
  line-height: var(--semantic-typo-label-1-m-lh);
49
+ font-weight: var(--semantic-typo-label-1-m-weight);
50
+ letter-spacing: var(--semantic-typo-label-1-m-ls);
42
51
  }
43
52
  .lib-xplat-input-wrap .lib-xplat-input.disabled {
44
53
  background-color: var(--semantic-surface-neutral-disabled);
@@ -80,8 +89,11 @@
80
89
  .lib-xplat-input-wrap .lib-xplat-input-validation-wrap > .lib-xplat-input-validation {
81
90
  display: flex;
82
91
  gap: var(--spacing-space-1);
92
+ font-family: var(--semantic-typo-caption-2-r-font);
83
93
  font-size: var(--semantic-typo-caption-2-r-size);
84
94
  line-height: var(--semantic-typo-caption-2-r-lh);
95
+ font-weight: var(--semantic-typo-caption-2-r-weight);
96
+ letter-spacing: var(--semantic-typo-caption-2-r-ls);
85
97
  align-items: center;
86
98
  user-select: none;
87
99
  }
@@ -29,7 +29,7 @@
29
29
  align-items: center;
30
30
  justify-content: center;
31
31
  opacity: 0;
32
- background-color: rgba(0, 0, 0, 0.3);
32
+ background-color: var(--semantic-interaction-overlay-50);
33
33
  transition: opacity 0.2s ease;
34
34
  }
35
35
  .lib-xplat-modal.dim.enter {
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/components/NotificationBadge/index.ts
21
+ var NotificationBadge_exports = {};
22
+ __export(NotificationBadge_exports, {
23
+ Badge: () => NotificationBadge_default,
24
+ NotificationBadge: () => NotificationBadge_default
25
+ });
26
+ module.exports = __toCommonJS(NotificationBadge_exports);
27
+
28
+ // ../../node_modules/clsx/dist/clsx.mjs
29
+ function r(e) {
30
+ var t, f, n = "";
31
+ if ("string" == typeof e || "number" == typeof e) n += e;
32
+ else if ("object" == typeof e) if (Array.isArray(e)) {
33
+ var o = e.length;
34
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
35
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
36
+ return n;
37
+ }
38
+ function clsx() {
39
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
40
+ return n;
41
+ }
42
+ var clsx_default = clsx;
43
+
44
+ // src/components/NotificationBadge/NotificationBadge.tsx
45
+ var import_jsx_runtime = require("react/jsx-runtime");
46
+ var NotificationBadge = (props) => {
47
+ const {
48
+ children,
49
+ type = "error",
50
+ count,
51
+ maxCount = 99,
52
+ dot = false,
53
+ size = "md"
54
+ } = props;
55
+ const showBadge = dot || count !== void 0 && count > 0;
56
+ const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
57
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: clsx_default("lib-xplat-notification-badge", size), children: [
58
+ children,
59
+ showBadge && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
60
+ ] });
61
+ };
62
+ NotificationBadge.displayName = "NotificationBadge";
63
+ var NotificationBadge_default = NotificationBadge;
64
+ // Annotate the CommonJS export names for ESM import in node:
65
+ 0 && (module.exports = {
66
+ Badge,
67
+ NotificationBadge
68
+ });
@@ -0,0 +1,75 @@
1
+ /* src/components/NotificationBadge/notificationBadge.scss */
2
+ .lib-xplat-notification-badge {
3
+ position: relative;
4
+ display: inline-flex;
5
+ }
6
+ .lib-xplat-notification-badge.sm .badge-indicator {
7
+ min-width: var(--spacing-space-4);
8
+ height: var(--spacing-space-4);
9
+ font-family: var(--semantic-typo-caption-2-r-font);
10
+ font-size: var(--semantic-typo-caption-2-r-size);
11
+ line-height: var(--semantic-typo-caption-2-r-lh);
12
+ font-weight: var(--semantic-typo-caption-2-r-weight);
13
+ letter-spacing: var(--semantic-typo-caption-2-r-ls);
14
+ padding: 0 var(--spacing-space-1);
15
+ }
16
+ .lib-xplat-notification-badge.sm .badge-indicator.dot {
17
+ min-width: var(--spacing-space-2);
18
+ height: var(--spacing-space-2);
19
+ }
20
+ .lib-xplat-notification-badge.lg .badge-indicator {
21
+ min-width: var(--spacing-space-6);
22
+ height: var(--spacing-space-6);
23
+ font-family: var(--semantic-typo-caption-1-r-font);
24
+ font-size: var(--semantic-typo-caption-1-r-size);
25
+ line-height: var(--semantic-typo-caption-1-r-lh);
26
+ font-weight: var(--semantic-typo-caption-1-r-weight);
27
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
28
+ padding: 0 var(--spacing-space-2);
29
+ }
30
+ .lib-xplat-notification-badge.lg .badge-indicator.dot {
31
+ min-width: var(--spacing-space-2);
32
+ height: var(--spacing-space-2);
33
+ }
34
+ .lib-xplat-notification-badge .badge-indicator {
35
+ position: absolute;
36
+ top: 0;
37
+ right: 0;
38
+ transform: translate(50%, -50%);
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ border-radius: var(--spacing-radius-full);
43
+ color: var(--semantic-text-inverse);
44
+ font-family: var(--semantic-typo-caption-2-sb-font);
45
+ font-size: var(--semantic-typo-caption-2-sb-size);
46
+ line-height: var(--semantic-typo-caption-2-sb-lh);
47
+ font-weight: var(--semantic-typo-caption-2-sb-weight);
48
+ letter-spacing: var(--semantic-typo-caption-2-sb-ls);
49
+ line-height: 1;
50
+ min-width: var(--spacing-space-4);
51
+ height: var(--spacing-space-4);
52
+ padding: 0 var(--spacing-space-1);
53
+ box-sizing: border-box;
54
+ }
55
+ .lib-xplat-notification-badge .badge-indicator.dot {
56
+ min-width: var(--spacing-space-2);
57
+ height: var(--spacing-space-2);
58
+ padding: 0;
59
+ }
60
+ .lib-xplat-notification-badge .badge-indicator.error {
61
+ background-color: var(--semantic-surface-error-default);
62
+ }
63
+ .lib-xplat-notification-badge .badge-indicator.success {
64
+ background-color: var(--semantic-surface-success-default);
65
+ }
66
+ .lib-xplat-notification-badge .badge-indicator.warning {
67
+ background-color: var(--semantic-surface-warning-default);
68
+ color: var(--semantic-text-primary);
69
+ }
70
+ .lib-xplat-notification-badge .badge-indicator.info {
71
+ background-color: var(--semantic-surface-info-default);
72
+ }
73
+ .lib-xplat-notification-badge .badge-indicator.brand {
74
+ background-color: var(--semantic-surface-brand-default);
75
+ }
@@ -0,0 +1,47 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type NotificationBadgeType = "error" | "success" | "warning" | "info" | "brand";
5
+ type NotificationBadgeSize = "sm" | "md" | "lg";
6
+ /**
7
+ * 알림 뱃지 — 다른 요소의 **우상단 모서리에 얹히는** 작은 원.
8
+ *
9
+ * 아이콘이나 버튼 위에 읽지 않은 개수나 상태 점을 표시한다.
10
+ * 뱃지 자체는 `.badge-indicator` 하나이고, `children` 은 그 뱃지가 올라탈 대상이다.
11
+ *
12
+ * ```tsx
13
+ * <NotificationBadge count={3}><BellIcon /></NotificationBadge>
14
+ * <NotificationBadge dot type="error"><UserIcon /></NotificationBadge>
15
+ * ```
16
+ *
17
+ * 알약 모양 상태 라벨이 필요하면 이 컴포넌트가 아니라 `Chip`(정보 표시) 또는
18
+ * `Tag`(제거 가능)를 쓴다. `<NotificationBadge>진행중</NotificationBadge>` 처럼
19
+ * 쓰면 `count`/`dot` 이 없어 뱃지가 렌더되지 않고 글자만 그대로 통과한다.
20
+ */
21
+ interface NotificationBadgeProps {
22
+ /**
23
+ * 뱃지가 올라탈 **대상**. 뱃지에 표시할 내용이 아니다.
24
+ * 보통 아이콘이나 버튼을 넣는다.
25
+ */
26
+ children: React.ReactNode;
27
+ /**
28
+ * 표시할 개수. `count` 나 `dot` 중 하나가 없으면 **뱃지가 렌더되지 않는다**
29
+ * (`type` 을 줘도 아무 일도 일어나지 않는다).
30
+ * `count={0}` 도 표시하지 않는다 — 읽지 않은 항목이 없으면 숨기는 동작이다.
31
+ */
32
+ count?: number;
33
+ /** 개수 대신 점만 표시한다. `count` 없이 "새 항목 있음" 만 알릴 때 쓴다 */
34
+ dot?: boolean;
35
+ /** 뱃지 색. 뱃지가 렌더될 때만 의미가 있다 */
36
+ type?: NotificationBadgeType;
37
+ /** `count` 가 이 값을 넘으면 `99+` 처럼 표시한다 */
38
+ maxCount?: number;
39
+ /** 뱃지 크기. 대상의 크기가 아니다 */
40
+ size?: NotificationBadgeSize;
41
+ }
42
+ declare const NotificationBadge: {
43
+ (props: NotificationBadgeProps): react_jsx_runtime.JSX.Element;
44
+ displayName: string;
45
+ };
46
+
47
+ export { NotificationBadge as Badge, NotificationBadge };
@@ -0,0 +1,47 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import React from 'react';
3
+
4
+ type NotificationBadgeType = "error" | "success" | "warning" | "info" | "brand";
5
+ type NotificationBadgeSize = "sm" | "md" | "lg";
6
+ /**
7
+ * 알림 뱃지 — 다른 요소의 **우상단 모서리에 얹히는** 작은 원.
8
+ *
9
+ * 아이콘이나 버튼 위에 읽지 않은 개수나 상태 점을 표시한다.
10
+ * 뱃지 자체는 `.badge-indicator` 하나이고, `children` 은 그 뱃지가 올라탈 대상이다.
11
+ *
12
+ * ```tsx
13
+ * <NotificationBadge count={3}><BellIcon /></NotificationBadge>
14
+ * <NotificationBadge dot type="error"><UserIcon /></NotificationBadge>
15
+ * ```
16
+ *
17
+ * 알약 모양 상태 라벨이 필요하면 이 컴포넌트가 아니라 `Chip`(정보 표시) 또는
18
+ * `Tag`(제거 가능)를 쓴다. `<NotificationBadge>진행중</NotificationBadge>` 처럼
19
+ * 쓰면 `count`/`dot` 이 없어 뱃지가 렌더되지 않고 글자만 그대로 통과한다.
20
+ */
21
+ interface NotificationBadgeProps {
22
+ /**
23
+ * 뱃지가 올라탈 **대상**. 뱃지에 표시할 내용이 아니다.
24
+ * 보통 아이콘이나 버튼을 넣는다.
25
+ */
26
+ children: React.ReactNode;
27
+ /**
28
+ * 표시할 개수. `count` 나 `dot` 중 하나가 없으면 **뱃지가 렌더되지 않는다**
29
+ * (`type` 을 줘도 아무 일도 일어나지 않는다).
30
+ * `count={0}` 도 표시하지 않는다 — 읽지 않은 항목이 없으면 숨기는 동작이다.
31
+ */
32
+ count?: number;
33
+ /** 개수 대신 점만 표시한다. `count` 없이 "새 항목 있음" 만 알릴 때 쓴다 */
34
+ dot?: boolean;
35
+ /** 뱃지 색. 뱃지가 렌더될 때만 의미가 있다 */
36
+ type?: NotificationBadgeType;
37
+ /** `count` 가 이 값을 넘으면 `99+` 처럼 표시한다 */
38
+ maxCount?: number;
39
+ /** 뱃지 크기. 대상의 크기가 아니다 */
40
+ size?: NotificationBadgeSize;
41
+ }
42
+ declare const NotificationBadge: {
43
+ (props: NotificationBadgeProps): react_jsx_runtime.JSX.Element;
44
+ displayName: string;
45
+ };
46
+
47
+ export { NotificationBadge as Badge, NotificationBadge };
@@ -0,0 +1,40 @@
1
+ // ../../node_modules/clsx/dist/clsx.mjs
2
+ function r(e) {
3
+ var t, f, n = "";
4
+ if ("string" == typeof e || "number" == typeof e) n += e;
5
+ else if ("object" == typeof e) if (Array.isArray(e)) {
6
+ var o = e.length;
7
+ for (t = 0; t < o; t++) e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
8
+ } else for (f in e) e[f] && (n && (n += " "), n += f);
9
+ return n;
10
+ }
11
+ function clsx() {
12
+ for (var e, t, f = 0, n = "", o = arguments.length; f < o; f++) (e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
13
+ return n;
14
+ }
15
+ var clsx_default = clsx;
16
+
17
+ // src/components/NotificationBadge/NotificationBadge.tsx
18
+ import { jsx, jsxs } from "react/jsx-runtime";
19
+ var NotificationBadge = (props) => {
20
+ const {
21
+ children,
22
+ type = "error",
23
+ count,
24
+ maxCount = 99,
25
+ dot = false,
26
+ size = "md"
27
+ } = props;
28
+ const showBadge = dot || count !== void 0 && count > 0;
29
+ const displayCount = count !== void 0 && count > maxCount ? `${maxCount}+` : count;
30
+ return /* @__PURE__ */ jsxs("div", { className: clsx_default("lib-xplat-notification-badge", size), children: [
31
+ children,
32
+ showBadge && /* @__PURE__ */ jsx("span", { className: clsx_default("badge-indicator", type, { dot }), children: !dot && displayCount })
33
+ ] });
34
+ };
35
+ NotificationBadge.displayName = "NotificationBadge";
36
+ var NotificationBadge_default = NotificationBadge;
37
+ export {
38
+ NotificationBadge_default as Badge,
39
+ NotificationBadge_default as NotificationBadge
40
+ };
@@ -7,12 +7,20 @@
7
7
  .lib-xplat-pagination.sm .dots {
8
8
  width: var(--spacing-control-height-xs);
9
9
  height: var(--spacing-control-height-xs);
10
+ font-family: var(--semantic-typo-caption-2-r-font);
10
11
  font-size: var(--semantic-typo-caption-2-r-size);
12
+ line-height: var(--semantic-typo-caption-2-r-lh);
13
+ font-weight: var(--semantic-typo-caption-2-r-weight);
14
+ letter-spacing: var(--semantic-typo-caption-2-r-ls);
11
15
  }
12
16
  .lib-xplat-pagination.sm .page-btn {
13
17
  min-width: var(--spacing-control-height-xs);
14
18
  height: var(--spacing-control-height-xs);
19
+ font-family: var(--semantic-typo-caption-2-r-font);
15
20
  font-size: var(--semantic-typo-caption-2-r-size);
21
+ line-height: var(--semantic-typo-caption-2-r-lh);
22
+ font-weight: var(--semantic-typo-caption-2-r-weight);
23
+ letter-spacing: var(--semantic-typo-caption-2-r-ls);
16
24
  }
17
25
  .lib-xplat-pagination.sm .page-btn svg {
18
26
  font-size: var(--semantic-typo-caption-1-r-size);
@@ -20,12 +28,20 @@
20
28
  .lib-xplat-pagination.lg .dots {
21
29
  width: var(--spacing-control-height-md);
22
30
  height: var(--spacing-control-height-md);
31
+ font-family: var(--semantic-typo-label-2-m-font);
23
32
  font-size: var(--semantic-typo-label-2-m-size);
33
+ line-height: var(--semantic-typo-label-2-m-lh);
34
+ font-weight: var(--semantic-typo-label-2-m-weight);
35
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
24
36
  }
25
37
  .lib-xplat-pagination.lg .page-btn {
26
38
  min-width: var(--spacing-control-height-md);
27
39
  height: var(--spacing-control-height-md);
40
+ font-family: var(--semantic-typo-label-2-m-font);
28
41
  font-size: var(--semantic-typo-label-2-m-size);
42
+ line-height: var(--semantic-typo-label-2-m-lh);
43
+ font-weight: var(--semantic-typo-label-2-m-weight);
44
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
29
45
  }
30
46
  .lib-xplat-pagination.lg .page-btn svg {
31
47
  font-size: var(--semantic-typo-heading-1-m-size);
@@ -36,7 +52,11 @@
36
52
  justify-content: center;
37
53
  width: var(--spacing-control-height-sm);
38
54
  height: var(--spacing-control-height-sm);
55
+ font-family: var(--semantic-typo-caption-1-r-font);
39
56
  font-size: var(--semantic-typo-caption-1-r-size);
57
+ line-height: var(--semantic-typo-caption-1-r-lh);
58
+ font-weight: var(--semantic-typo-caption-1-r-weight);
59
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
40
60
  color: var(--semantic-text-tertiary);
41
61
  user-select: none;
42
62
  }
@@ -50,7 +70,11 @@
50
70
  border: none;
51
71
  border-radius: var(--spacing-radius-md);
52
72
  background: none;
73
+ font-family: var(--semantic-typo-caption-1-r-font);
53
74
  font-size: var(--semantic-typo-caption-1-r-size);
75
+ line-height: var(--semantic-typo-caption-1-r-lh);
76
+ font-weight: var(--semantic-typo-caption-1-r-weight);
77
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
54
78
  cursor: pointer;
55
79
  color: var(--semantic-text-secondary);
56
80
  transition: background-color 0.2s, color 0.2s;
@@ -64,7 +88,7 @@
64
88
  }
65
89
  .lib-xplat-pagination .page-btn.active {
66
90
  color: var(--semantic-text-inverse);
67
- font-weight: 600;
91
+ font-weight: var(--semantic-typo-caption-1-sb-weight);
68
92
  }
69
93
  .lib-xplat-pagination .page-btn svg {
70
94
  font-size: var(--semantic-typo-label-2-m-size);
@@ -13,7 +13,7 @@
13
13
  transition: transform 0.2s ease, opacity 0.2s ease;
14
14
  background: var(--semantic-surface-neutral-primary);
15
15
  border-radius: var(--spacing-radius-md);
16
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
16
+ box-shadow: var(--semantic-shadow-md);
17
17
  opacity: 0;
18
18
  transform: scale(0.8);
19
19
  }
@@ -41,8 +41,11 @@
41
41
  background-color: var(--semantic-surface-info-default);
42
42
  }
43
43
  .lib-xplat-progress .label {
44
- font-size: var(--semantic-typo-caption-2-r-size);
45
- font-weight: 500;
44
+ font-family: var(--semantic-typo-caption-2-m-font);
45
+ font-size: var(--semantic-typo-caption-2-m-size);
46
+ line-height: var(--semantic-typo-caption-2-m-lh);
47
+ font-weight: var(--semantic-typo-caption-2-m-weight);
48
+ letter-spacing: var(--semantic-typo-caption-2-m-ls);
46
49
  color: var(--semantic-text-secondary);
47
50
  min-width: 36px;
48
51
  text-align: right;
@@ -20,8 +20,11 @@
20
20
  height: var(--spacing-space-2);
21
21
  }
22
22
  .lib-xplat-radio.sm > span {
23
+ font-family: var(--semantic-typo-caption-1-r-font);
23
24
  font-size: var(--semantic-typo-caption-1-r-size);
24
25
  line-height: var(--semantic-typo-caption-1-r-lh);
26
+ font-weight: var(--semantic-typo-caption-1-r-weight);
27
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
25
28
  }
26
29
  .lib-xplat-radio.md > .circle {
27
30
  width: var(--spacing-space-5);
@@ -29,8 +32,11 @@
29
32
  margin-top: calc((var(--semantic-typo-label-2-m-lh) - var(--spacing-space-5)) / 2);
30
33
  }
31
34
  .lib-xplat-radio.md > span {
35
+ font-family: var(--semantic-typo-label-2-m-font);
32
36
  font-size: var(--semantic-typo-label-2-m-size);
33
37
  line-height: var(--semantic-typo-label-2-m-lh);
38
+ font-weight: var(--semantic-typo-label-2-m-weight);
39
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
34
40
  }
35
41
  .lib-xplat-radio.lg > .circle {
36
42
  width: var(--spacing-space-6);
@@ -41,8 +47,11 @@
41
47
  height: var(--spacing-space-4);
42
48
  }
43
49
  .lib-xplat-radio.lg > span {
50
+ font-family: var(--semantic-typo-label-1-m-font);
44
51
  font-size: var(--semantic-typo-label-1-m-size);
45
52
  line-height: var(--semantic-typo-label-1-m-lh);
53
+ font-weight: var(--semantic-typo-label-1-m-weight);
54
+ letter-spacing: var(--semantic-typo-label-1-m-ls);
46
55
  }
47
56
  .lib-xplat-radio > .circle {
48
57
  border: 2px solid var(--semantic-border-tertiary);
@@ -11,20 +11,29 @@
11
11
  .lib-xplat-select.sm .select-trigger {
12
12
  height: var(--spacing-control-height-sm);
13
13
  padding: 0 var(--spacing-space-2);
14
+ font-family: var(--semantic-typo-caption-1-r-font);
14
15
  font-size: var(--semantic-typo-caption-1-r-size);
15
16
  line-height: var(--semantic-typo-caption-1-r-lh);
17
+ font-weight: var(--semantic-typo-caption-1-r-weight);
18
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
16
19
  }
17
20
  .lib-xplat-select.md .select-trigger {
18
21
  height: var(--spacing-control-height-md);
19
22
  padding: 0 var(--spacing-space-3);
23
+ font-family: var(--semantic-typo-label-2-m-font);
20
24
  font-size: var(--semantic-typo-label-2-m-size);
21
25
  line-height: var(--semantic-typo-label-2-m-lh);
26
+ font-weight: var(--semantic-typo-label-2-m-weight);
27
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
22
28
  }
23
29
  .lib-xplat-select.lg .select-trigger {
24
30
  height: var(--spacing-control-height-lg);
25
31
  padding: 0 var(--spacing-space-4);
32
+ font-family: var(--semantic-typo-label-1-m-font);
26
33
  font-size: var(--semantic-typo-label-1-m-size);
27
34
  line-height: var(--semantic-typo-label-1-m-lh);
35
+ font-weight: var(--semantic-typo-label-1-m-weight);
36
+ letter-spacing: var(--semantic-typo-label-1-m-ls);
28
37
  }
29
38
  .lib-xplat-select .select-trigger {
30
39
  cursor: pointer;
@@ -101,7 +110,7 @@
101
110
  padding: var(--spacing-space-1) 0;
102
111
  border-radius: var(--spacing-radius-md);
103
112
  background-color: var(--semantic-surface-neutral-primary);
104
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
113
+ box-shadow: var(--semantic-shadow-md);
105
114
  cursor: default;
106
115
  max-height: 220px;
107
116
  overflow-y: auto;
@@ -132,25 +141,33 @@
132
141
  }
133
142
  .lib-xplat-select-content.sm .select-item {
134
143
  padding: var(--spacing-space-2) var(--spacing-space-2);
144
+ font-family: var(--semantic-typo-caption-1-r-font);
135
145
  font-size: var(--semantic-typo-caption-1-r-size);
136
146
  line-height: var(--semantic-typo-caption-1-r-lh);
147
+ font-weight: var(--semantic-typo-caption-1-r-weight);
148
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
137
149
  }
138
150
  .lib-xplat-select-content.lg .select-item {
139
151
  padding: var(--spacing-space-2) var(--spacing-space-4);
152
+ font-family: var(--semantic-typo-label-1-m-font);
140
153
  font-size: var(--semantic-typo-label-1-m-size);
141
154
  line-height: var(--semantic-typo-label-1-m-lh);
155
+ font-weight: var(--semantic-typo-label-1-m-weight);
156
+ letter-spacing: var(--semantic-typo-label-1-m-ls);
142
157
  }
143
158
  .lib-xplat-select-content .select-item {
144
159
  padding: var(--spacing-space-2) var(--spacing-space-3);
160
+ font-family: var(--semantic-typo-label-2-m-font);
145
161
  font-size: var(--semantic-typo-label-2-m-size);
146
162
  line-height: var(--semantic-typo-label-2-m-lh);
147
- font-weight: var(--semantic-typo-label-1-m-weight);
163
+ font-weight: var(--semantic-typo-label-2-m-weight);
164
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
148
165
  cursor: pointer;
149
166
  transition: background-color 0.15s ease;
150
167
  outline: none;
151
168
  }
152
169
  .lib-xplat-select-content .select-item.is-selected {
153
- font-weight: var(--semantic-typo-label-1-sb-weight);
170
+ font-weight: var(--semantic-typo-label-2-sb-weight);
154
171
  }
155
172
  .lib-xplat-select-content .select-item:hover:not(.disabled) {
156
173
  background-color: var(--semantic-surface-neutral-secondary);
@@ -27,8 +27,11 @@
27
27
  display: flex;
28
28
  align-items: center;
29
29
  justify-content: center;
30
- font-size: var(--semantic-typo-caption-1-r-size);
31
- font-weight: 600;
30
+ font-family: var(--semantic-typo-caption-1-sb-font);
31
+ font-size: var(--semantic-typo-caption-1-sb-size);
32
+ line-height: var(--semantic-typo-caption-1-sb-lh);
33
+ font-weight: var(--semantic-typo-caption-1-sb-weight);
34
+ letter-spacing: var(--semantic-typo-caption-1-sb-ls);
32
35
  flex-shrink: 0;
33
36
  z-index: 1;
34
37
  transition: background-color 0.2s, color 0.2s;
@@ -44,12 +47,19 @@
44
47
  text-align: center;
45
48
  }
46
49
  .lib-xplat-steps .step-title {
47
- font-size: var(--semantic-typo-caption-1-r-size);
48
- font-weight: 500;
50
+ font-family: var(--semantic-typo-caption-1-m-font);
51
+ font-size: var(--semantic-typo-caption-1-m-size);
52
+ line-height: var(--semantic-typo-caption-1-m-lh);
53
+ font-weight: var(--semantic-typo-caption-1-m-weight);
54
+ letter-spacing: var(--semantic-typo-caption-1-m-ls);
49
55
  color: var(--semantic-text-primary);
50
56
  }
51
57
  .lib-xplat-steps .step-description {
58
+ font-family: var(--semantic-typo-caption-2-r-font);
52
59
  font-size: var(--semantic-typo-caption-2-r-size);
60
+ line-height: var(--semantic-typo-caption-2-r-lh);
61
+ font-weight: var(--semantic-typo-caption-2-r-weight);
62
+ letter-spacing: var(--semantic-typo-caption-2-r-ls);
53
63
  color: var(--semantic-text-tertiary);
54
64
  margin-top: 2px;
55
65
  }
@@ -98,6 +98,6 @@
98
98
  transform: translateY(-50%);
99
99
  background-color: var(--semantic-surface-neutral-primary);
100
100
  border-radius: var(--spacing-radius-full);
101
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
101
+ box-shadow: var(--semantic-shadow-sm);
102
102
  transition: left 0.25s;
103
103
  }
@@ -14,15 +14,27 @@
14
14
  }
15
15
  .lib-xplat-tab.sm {
16
16
  height: var(--spacing-control-height-sm);
17
+ font-family: var(--semantic-typo-caption-1-r-font);
17
18
  font-size: var(--semantic-typo-caption-1-r-size);
19
+ line-height: var(--semantic-typo-caption-1-r-lh);
20
+ font-weight: var(--semantic-typo-caption-1-r-weight);
21
+ letter-spacing: var(--semantic-typo-caption-1-r-ls);
18
22
  }
19
23
  .lib-xplat-tab.md {
20
24
  height: var(--spacing-control-height-md);
25
+ font-family: var(--semantic-typo-label-2-m-font);
21
26
  font-size: var(--semantic-typo-label-2-m-size);
27
+ line-height: var(--semantic-typo-label-2-m-lh);
28
+ font-weight: var(--semantic-typo-label-2-m-weight);
29
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
22
30
  }
23
31
  .lib-xplat-tab.lg {
24
32
  height: var(--spacing-control-height-lg);
33
+ font-family: var(--semantic-typo-label-1-m-font);
25
34
  font-size: var(--semantic-typo-label-1-m-size);
35
+ line-height: var(--semantic-typo-label-1-m-lh);
36
+ font-weight: var(--semantic-typo-label-1-m-weight);
37
+ letter-spacing: var(--semantic-typo-label-1-m-ls);
26
38
  }
27
39
  .lib-xplat-tab.type-default {
28
40
  width: 100%;
@@ -60,8 +72,11 @@
60
72
  justify-content: center;
61
73
  white-space: nowrap;
62
74
  padding: 0 var(--spacing-space-3);
75
+ font-family: var(--semantic-typo-label-2-m-font);
63
76
  font-size: var(--semantic-typo-label-2-m-size);
64
- font-weight: 500;
77
+ line-height: var(--semantic-typo-label-2-m-lh);
78
+ font-weight: var(--semantic-typo-label-2-m-weight);
79
+ letter-spacing: var(--semantic-typo-label-2-m-ls);
65
80
  height: 100%;
66
81
  background: none;
67
82
  border: none;
@@ -133,6 +133,8 @@ var TableCell = import_react4.default.memo((props) => {
133
133
  isSticky = false,
134
134
  width,
135
135
  nowrap = false,
136
+ scope = "col",
137
+ colSpan,
136
138
  onClick
137
139
  } = props;
138
140
  const { registerStickyCell, stickyCells } = useTableRowContext();
@@ -164,7 +166,8 @@ var TableCell = import_react4.default.memo((props) => {
164
166
  }
165
167
  return () => observer.disconnect();
166
168
  }, [isSticky, registerStickyCell, calculateLeft]);
167
- const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
169
+ const isHeaderCell = headContext !== null;
170
+ const CellTag = isHeaderCell ? "th" : "td";
168
171
  const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
169
172
  const enableHover = headContext && headContext.cellHover;
170
173
  return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
@@ -179,6 +182,8 @@ var TableCell = import_react4.default.memo((props) => {
179
182
  enableHover && "cell-hover",
180
183
  nowrap && "nowrap"
181
184
  ),
185
+ scope: isHeaderCell ? scope : void 0,
186
+ colSpan,
182
187
  style: {
183
188
  ...isSticky ? { left } : null,
184
189
  ...width != null ? { width: typeof width === "number" ? `${width}px` : width } : null