@x-plat/design-system 0.5.2 → 0.5.3

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 (48) hide show
  1. package/dist/components/Accordion/index.cjs +38 -31
  2. package/dist/components/Accordion/index.css +1 -0
  3. package/dist/components/Accordion/index.js +38 -31
  4. package/dist/components/Alert/index.css +1 -0
  5. package/dist/components/Breadcrumb/index.css +3 -0
  6. package/dist/components/Button/index.css +1 -0
  7. package/dist/components/Calendar/index.cjs +103 -62
  8. package/dist/components/Calendar/index.css +1 -0
  9. package/dist/components/Calendar/index.js +103 -62
  10. package/dist/components/Card/index.css +2 -0
  11. package/dist/components/CardTab/index.css +1 -0
  12. package/dist/components/Chart/index.cjs +106 -83
  13. package/dist/components/Chart/index.css +1 -0
  14. package/dist/components/Chart/index.js +106 -83
  15. package/dist/components/DatePicker/index.cjs +36 -15
  16. package/dist/components/DatePicker/index.css +2 -0
  17. package/dist/components/DatePicker/index.js +36 -15
  18. package/dist/components/EmptyState/index.css +1 -0
  19. package/dist/components/FileUpload/index.css +2 -0
  20. package/dist/components/HtmlTypeWriter/index.css +1 -0
  21. package/dist/components/Pagination/index.css +8 -8
  22. package/dist/components/Spinner/index.css +7 -2
  23. package/dist/components/Steps/index.cjs +1 -4
  24. package/dist/components/Steps/index.css +15 -36
  25. package/dist/components/Steps/index.js +1 -4
  26. package/dist/components/Swiper/index.cjs +16 -12
  27. package/dist/components/Swiper/index.css +1 -0
  28. package/dist/components/Swiper/index.js +16 -12
  29. package/dist/components/Switch/index.css +20 -19
  30. package/dist/components/Tab/index.css +16 -2
  31. package/dist/components/Table/index.cjs +4 -4
  32. package/dist/components/Table/index.css +1 -0
  33. package/dist/components/Table/index.d.cts +2 -5
  34. package/dist/components/Table/index.d.ts +2 -5
  35. package/dist/components/Table/index.js +4 -4
  36. package/dist/components/Video/index.cjs +32 -43
  37. package/dist/components/Video/index.css +4 -4
  38. package/dist/components/Video/index.d.cts +1 -5
  39. package/dist/components/Video/index.d.ts +1 -5
  40. package/dist/components/Video/index.js +32 -43
  41. package/dist/components/index.cjs +339 -257
  42. package/dist/components/index.css +88 -71
  43. package/dist/components/index.js +339 -257
  44. package/dist/index.cjs +339 -257
  45. package/dist/index.css +88 -71
  46. package/dist/index.js +339 -257
  47. package/guidelines/Guidelines.md +11 -4
  48. package/package.json +1 -2
@@ -1701,6 +1701,35 @@ var Modal_default = Modal;
1701
1701
  // src/components/DatePicker/RangePicker/index.tsx
1702
1702
  import React8 from "react";
1703
1703
  import { jsx as jsx302, jsxs as jsxs193 } from "react/jsx-runtime";
1704
+ var RangeDayCell = React8.memo(
1705
+ ({
1706
+ day,
1707
+ disabled,
1708
+ isStart,
1709
+ isEnd,
1710
+ inRange,
1711
+ onClick
1712
+ }) => /* @__PURE__ */ jsx302(
1713
+ "button",
1714
+ {
1715
+ type: "button",
1716
+ className: clsx_default(
1717
+ "datepicker-day",
1718
+ !day.isCurrentMonth && "outside",
1719
+ disabled && "disabled",
1720
+ (isStart || isEnd) && "selected",
1721
+ inRange && !isStart && !isEnd && "in-range",
1722
+ day.isToday && "today",
1723
+ day.isSunday && "sunday",
1724
+ day.isSaturday && "saturday"
1725
+ ),
1726
+ disabled: disabled || !day.isCurrentMonth,
1727
+ onClick,
1728
+ children: day.day
1729
+ }
1730
+ )
1731
+ );
1732
+ RangeDayCell.displayName = "RangeDayCell";
1704
1733
  var RangePicker = (props) => {
1705
1734
  const {
1706
1735
  startDate,
@@ -1777,20 +1806,13 @@ var RangePicker = (props) => {
1777
1806
  const isEnd = isSameDay(day.date, endDate);
1778
1807
  const inRange = isInRange(day.date, startDate, endDate);
1779
1808
  return /* @__PURE__ */ jsx302(
1780
- "button",
1809
+ RangeDayCell,
1781
1810
  {
1782
- type: "button",
1783
- className: clsx_default(
1784
- "datepicker-day",
1785
- !day.isCurrentMonth && "outside",
1786
- disabled && "disabled",
1787
- (isStart || isEnd) && "selected",
1788
- inRange && !isStart && !isEnd && "in-range",
1789
- day.isToday && "today",
1790
- day.isSunday && "sunday",
1791
- day.isSaturday && "saturday"
1792
- ),
1793
- disabled: disabled || !day.isCurrentMonth,
1811
+ day,
1812
+ disabled,
1813
+ isStart,
1814
+ isEnd,
1815
+ inRange,
1794
1816
  onClick: () => {
1795
1817
  if (!disabled && day.isCurrentMonth) {
1796
1818
  if (type === "start") {
@@ -1801,8 +1823,7 @@ var RangePicker = (props) => {
1801
1823
  onChange?.({ startDate, endDate: newEnd });
1802
1824
  }
1803
1825
  }
1804
- },
1805
- children: day.day
1826
+ }
1806
1827
  },
1807
1828
  idx
1808
1829
  );
@@ -1,5 +1,6 @@
1
1
  /* src/components/EmptyState/emptystate.scss */
2
2
  .lib-xplat-empty-state {
3
+ width: 100%;
3
4
  display: flex;
4
5
  flex-direction: column;
5
6
  align-items: center;
@@ -1,5 +1,7 @@
1
1
  /* src/components/FileUpload/fileupload.scss */
2
2
  .lib-xplat-file-upload {
3
+ contain: content;
4
+ width: 100%;
3
5
  display: flex;
4
6
  flex-direction: column;
5
7
  align-items: center;
@@ -1,5 +1,6 @@
1
1
  /* src/components/HtmlTypeWriter/htmlTypeWriter.scss */
2
2
  .lib-xplat-htmlTypewriter {
3
+ width: 100%;
3
4
  font-size: 16px;
4
5
  }
5
6
  .lib-xplat-htmlTypewriter h1,
@@ -66,21 +66,21 @@
66
66
  color: var(--semantic-text-inverse);
67
67
  font-weight: 600;
68
68
  }
69
- .lib-xplat-pagination.brand .lib-xplat-pagination .page-btn.active {
69
+ .lib-xplat-pagination .page-btn svg {
70
+ font-size: 16px;
71
+ }
72
+ .lib-xplat-pagination.brand .page-btn.active {
70
73
  background-color: var(--semantic-surface-brand-default);
71
74
  }
72
- .lib-xplat-pagination.success .lib-xplat-pagination .page-btn.active {
75
+ .lib-xplat-pagination.success .page-btn.active {
73
76
  background-color: var(--semantic-surface-success-default);
74
77
  }
75
- .lib-xplat-pagination.error .lib-xplat-pagination .page-btn.active {
78
+ .lib-xplat-pagination.error .page-btn.active {
76
79
  background-color: var(--semantic-surface-error-default);
77
80
  }
78
- .lib-xplat-pagination.warning .lib-xplat-pagination .page-btn.active {
81
+ .lib-xplat-pagination.warning .page-btn.active {
79
82
  background-color: var(--semantic-surface-warning-default);
80
83
  }
81
- .lib-xplat-pagination.info .lib-xplat-pagination .page-btn.active {
84
+ .lib-xplat-pagination.info .page-btn.active {
82
85
  background-color: var(--semantic-surface-info-default);
83
86
  }
84
- .lib-xplat-pagination .page-btn svg {
85
- font-size: 16px;
86
- }
@@ -16,10 +16,15 @@
16
16
  width: var(--spacing-space-9);
17
17
  height: var(--spacing-space-9);
18
18
  }
19
+ .lib-xplat-spinner {
20
+ contain: strict;
21
+ }
19
22
  .lib-xplat-spinner svg {
20
23
  width: 100%;
21
24
  height: 100%;
22
25
  animation: lib-xplat-spin 0.8s linear infinite;
26
+ will-change: transform;
27
+ backface-visibility: hidden;
23
28
  }
24
29
  .lib-xplat-spinner .track {
25
30
  stroke: var(--semantic-border-default);
@@ -45,9 +50,9 @@
45
50
  }
46
51
  @keyframes lib-xplat-spin {
47
52
  from {
48
- transform: rotate(0deg);
53
+ transform: rotate3d(0, 0, 1, 0deg);
49
54
  }
50
55
  to {
51
- transform: rotate(360deg);
56
+ transform: rotate3d(0, 0, 1, 360deg);
52
57
  }
53
58
  }
@@ -951,10 +951,7 @@ var Steps = (props) => {
951
951
  return /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
952
952
  const status = index < current ? "completed" : index === current ? "active" : "pending";
953
953
  return /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)("div", { className: clsx_default("step-item", status), children: [
954
- /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)("div", { className: "step-indicator", children: [
955
- /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { children: index + 1 }) }),
956
- index < items.length - 1 && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "step-line" })
957
- ] }),
954
+ /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime295.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { children: index + 1 }) }),
958
955
  /* @__PURE__ */ (0, import_jsx_runtime295.jsxs)("div", { className: "step-content", children: [
959
956
  /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { className: "step-title", children: item.title }),
960
957
  item.description && /* @__PURE__ */ (0, import_jsx_runtime295.jsx)("span", { className: "step-description", children: item.description })
@@ -8,16 +8,18 @@
8
8
  display: flex;
9
9
  flex-direction: column;
10
10
  align-items: center;
11
- }
12
- .lib-xplat-steps .step-item:last-child .step-line {
13
- display: none;
14
- }
15
- .lib-xplat-steps .step-indicator {
16
- display: flex;
17
- align-items: center;
18
- width: 100%;
19
11
  position: relative;
20
12
  }
13
+ .lib-xplat-steps .step-item:not(:last-child)::after {
14
+ content: "";
15
+ position: absolute;
16
+ top: 16px;
17
+ left: calc(50% + 20px);
18
+ right: calc(-50% + 20px);
19
+ height: 2px;
20
+ background-color: var(--semantic-surface-neutral-disabled);
21
+ transition: background-color 0.2s;
22
+ }
21
23
  .lib-xplat-steps .step-circle {
22
24
  width: var(--spacing-control-height-sm);
23
25
  height: var(--spacing-control-height-sm);
@@ -34,11 +36,6 @@
34
36
  .lib-xplat-steps .step-circle svg {
35
37
  font-size: 16px;
36
38
  }
37
- .lib-xplat-steps .step-line {
38
- flex: 1;
39
- height: 2px;
40
- transition: background-color 0.2s;
41
- }
42
39
  .lib-xplat-steps .step-content {
43
40
  display: flex;
44
41
  flex-direction: column;
@@ -60,79 +57,61 @@
60
57
  color: var(--semantic-text-inverse);
61
58
  background-color: var(--semantic-surface-brand-default);
62
59
  }
63
- .lib-xplat-steps.brand .step-item.completed .step-line {
60
+ .lib-xplat-steps.brand .step-item.completed::after {
64
61
  background-color: var(--semantic-surface-brand-default);
65
62
  }
66
63
  .lib-xplat-steps.brand .step-item.active .step-circle {
67
64
  color: var(--semantic-text-inverse);
68
65
  background-color: var(--semantic-surface-brand-default);
69
66
  }
70
- .lib-xplat-steps.brand .step-item.active .step-line {
71
- background-color: var(--semantic-surface-neutral-disabled);
72
- }
73
67
  .lib-xplat-steps.success .step-item.completed .step-circle {
74
68
  color: var(--semantic-text-inverse);
75
69
  background-color: var(--semantic-surface-success-default);
76
70
  }
77
- .lib-xplat-steps.success .step-item.completed .step-line {
71
+ .lib-xplat-steps.success .step-item.completed::after {
78
72
  background-color: var(--semantic-surface-success-default);
79
73
  }
80
74
  .lib-xplat-steps.success .step-item.active .step-circle {
81
75
  color: var(--semantic-text-inverse);
82
76
  background-color: var(--semantic-surface-success-default);
83
77
  }
84
- .lib-xplat-steps.success .step-item.active .step-line {
85
- background-color: var(--semantic-surface-neutral-disabled);
86
- }
87
78
  .lib-xplat-steps.error .step-item.completed .step-circle {
88
79
  color: var(--semantic-text-inverse);
89
80
  background-color: var(--semantic-surface-error-default);
90
81
  }
91
- .lib-xplat-steps.error .step-item.completed .step-line {
82
+ .lib-xplat-steps.error .step-item.completed::after {
92
83
  background-color: var(--semantic-surface-error-default);
93
84
  }
94
85
  .lib-xplat-steps.error .step-item.active .step-circle {
95
86
  color: var(--semantic-text-inverse);
96
87
  background-color: var(--semantic-surface-error-default);
97
88
  }
98
- .lib-xplat-steps.error .step-item.active .step-line {
99
- background-color: var(--semantic-surface-neutral-disabled);
100
- }
101
89
  .lib-xplat-steps.warning .step-item.completed .step-circle {
102
90
  color: var(--semantic-text-inverse);
103
91
  background-color: var(--semantic-surface-warning-default);
104
92
  }
105
- .lib-xplat-steps.warning .step-item.completed .step-line {
93
+ .lib-xplat-steps.warning .step-item.completed::after {
106
94
  background-color: var(--semantic-surface-warning-default);
107
95
  }
108
96
  .lib-xplat-steps.warning .step-item.active .step-circle {
109
97
  color: var(--semantic-text-inverse);
110
98
  background-color: var(--semantic-surface-warning-default);
111
99
  }
112
- .lib-xplat-steps.warning .step-item.active .step-line {
113
- background-color: var(--semantic-surface-neutral-disabled);
114
- }
115
100
  .lib-xplat-steps.info .step-item.completed .step-circle {
116
101
  color: var(--semantic-text-inverse);
117
102
  background-color: var(--semantic-surface-info-default);
118
103
  }
119
- .lib-xplat-steps.info .step-item.completed .step-line {
104
+ .lib-xplat-steps.info .step-item.completed::after {
120
105
  background-color: var(--semantic-surface-info-default);
121
106
  }
122
107
  .lib-xplat-steps.info .step-item.active .step-circle {
123
108
  color: var(--semantic-text-inverse);
124
109
  background-color: var(--semantic-surface-info-default);
125
110
  }
126
- .lib-xplat-steps.info .step-item.active .step-line {
127
- background-color: var(--semantic-surface-neutral-disabled);
128
- }
129
111
  .lib-xplat-steps .step-item.pending .step-circle {
130
112
  background-color: var(--semantic-surface-neutral-disabled);
131
113
  color: var(--semantic-text-muted);
132
114
  }
133
- .lib-xplat-steps .step-item.pending .step-line {
134
- background-color: var(--semantic-surface-neutral-disabled);
135
- }
136
115
  .lib-xplat-steps .step-item.pending .step-title {
137
116
  color: var(--semantic-text-disabled);
138
117
  }
@@ -925,10 +925,7 @@ var Steps = (props) => {
925
925
  return /* @__PURE__ */ jsx295("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
926
926
  const status = index < current ? "completed" : index === current ? "active" : "pending";
927
927
  return /* @__PURE__ */ jsxs189("div", { className: clsx_default("step-item", status), children: [
928
- /* @__PURE__ */ jsxs189("div", { className: "step-indicator", children: [
929
- /* @__PURE__ */ jsx295("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx295(CheckIcon_default, {}) : /* @__PURE__ */ jsx295("span", { children: index + 1 }) }),
930
- index < items.length - 1 && /* @__PURE__ */ jsx295("div", { className: "step-line" })
931
- ] }),
928
+ /* @__PURE__ */ jsx295("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ jsx295(CheckIcon_default, {}) : /* @__PURE__ */ jsx295("span", { children: index + 1 }) }),
932
929
  /* @__PURE__ */ jsxs189("div", { className: "step-content", children: [
933
930
  /* @__PURE__ */ jsx295("span", { className: "step-title", children: item.title }),
934
931
  item.description && /* @__PURE__ */ jsx295("span", { className: "step-description", children: item.description })
@@ -252,6 +252,21 @@ var Swiper = (props) => {
252
252
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
253
253
  const slideWidthPercent = 100 / viewItemCount;
254
254
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
255
+ const slideElements = import_react.default.useMemo(
256
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
257
+ "div",
258
+ {
259
+ className: "lib-xplat-swiper__slide",
260
+ style: {
261
+ minWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`,
262
+ maxWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`
263
+ },
264
+ children: item
265
+ },
266
+ idx
267
+ )),
268
+ [extendedItems, slideWidthPercent, gapAdjust]
269
+ );
255
270
  const totalSteps = Math.ceil((maxIndex + 1) / slideBy);
256
271
  const currentStep = Math.min(
257
272
  Math.floor(realIndex / slideBy),
@@ -277,18 +292,7 @@ var Swiper = (props) => {
277
292
  gap: `${spaceBetween}px`
278
293
  },
279
294
  onTransitionEnd: handleTransitionEnd,
280
- children: extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
281
- "div",
282
- {
283
- className: "lib-xplat-swiper__slide",
284
- style: {
285
- minWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`,
286
- maxWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`
287
- },
288
- children: item
289
- },
290
- idx
291
- ))
295
+ children: slideElements
292
296
  }
293
297
  )
294
298
  }
@@ -1,5 +1,6 @@
1
1
  /* src/components/Swiper/swiper.scss */
2
2
  .lib-xplat-swiper {
3
+ contain: content;
3
4
  width: 100%;
4
5
  position: relative;
5
6
  }
@@ -216,6 +216,21 @@ var Swiper = (props) => {
216
216
  }, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
217
217
  const slideWidthPercent = 100 / viewItemCount;
218
218
  const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
219
+ const slideElements = React.useMemo(
220
+ () => extendedItems.map((item, idx) => /* @__PURE__ */ jsx(
221
+ "div",
222
+ {
223
+ className: "lib-xplat-swiper__slide",
224
+ style: {
225
+ minWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`,
226
+ maxWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`
227
+ },
228
+ children: item
229
+ },
230
+ idx
231
+ )),
232
+ [extendedItems, slideWidthPercent, gapAdjust]
233
+ );
219
234
  const totalSteps = Math.ceil((maxIndex + 1) / slideBy);
220
235
  const currentStep = Math.min(
221
236
  Math.floor(realIndex / slideBy),
@@ -241,18 +256,7 @@ var Swiper = (props) => {
241
256
  gap: `${spaceBetween}px`
242
257
  },
243
258
  onTransitionEnd: handleTransitionEnd,
244
- children: extendedItems.map((item, idx) => /* @__PURE__ */ jsx(
245
- "div",
246
- {
247
- className: "lib-xplat-swiper__slide",
248
- style: {
249
- minWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`,
250
- maxWidth: `calc(${slideWidthPercent}% - ${gapAdjust}px)`
251
- },
252
- children: item
253
- },
254
- idx
255
- ))
259
+ children: slideElements
256
260
  }
257
261
  )
258
262
  }
@@ -3,43 +3,44 @@
3
3
  position: relative;
4
4
  border-radius: var(--spacing-radius-full);
5
5
  cursor: pointer;
6
+ box-sizing: border-box;
6
7
  transition: background-color 0.2s, border-color 0.2s;
7
8
  border: 1px solid transparent;
8
9
  background-color: var(--semantic-border-default);
9
10
  border-color: var(--semantic-border-default);
10
11
  }
11
12
  .lib-xplat-switch.sm {
12
- width: var(--spacing-space-8);
13
- height: var(--spacing-space-4);
13
+ width: 34px;
14
+ height: 20px;
14
15
  }
15
16
  .lib-xplat-switch.sm > .knob {
16
- width: var(--spacing-space-4);
17
- height: var(--spacing-space-4);
17
+ width: 16px;
18
+ height: 16px;
18
19
  }
19
20
  .lib-xplat-switch.sm > .knob.checked {
20
- transform: translateY(-50%) translateX(14px);
21
+ left: calc(100% - 16px - 2px);
21
22
  }
22
23
  .lib-xplat-switch.md {
23
- width: var(--spacing-space-11);
24
- height: var(--spacing-space-6);
24
+ width: 42px;
25
+ height: 24px;
25
26
  }
26
27
  .lib-xplat-switch.md > .knob {
27
- width: var(--spacing-space-6);
28
- height: var(--spacing-space-6);
28
+ width: 20px;
29
+ height: 20px;
29
30
  }
30
31
  .lib-xplat-switch.md > .knob.checked {
31
- transform: translateY(-50%) translateX(22px);
32
+ left: calc(100% - 20px - 2px);
32
33
  }
33
34
  .lib-xplat-switch.lg {
34
- width: var(--spacing-space-11);
35
- height: var(--spacing-space-8);
35
+ width: 50px;
36
+ height: 28px;
36
37
  }
37
38
  .lib-xplat-switch.lg > .knob {
38
- width: var(--spacing-space-6);
39
- height: var(--spacing-space-6);
39
+ width: 24px;
40
+ height: 24px;
40
41
  }
41
42
  .lib-xplat-switch.lg > .knob.checked {
42
- transform: translateY(-50%) translateX(26px);
43
+ left: calc(100% - 24px - 2px);
43
44
  }
44
45
  .lib-xplat-switch.disabled {
45
46
  opacity: 0.5;
@@ -93,10 +94,10 @@
93
94
  .lib-xplat-switch > .knob {
94
95
  position: absolute;
95
96
  top: 50%;
96
- left: 0;
97
+ left: 2px;
98
+ transform: translateY(-50%);
97
99
  background-color: var(--semantic-surface-neutral-default);
98
100
  border-radius: var(--spacing-radius-full);
99
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
100
- transform: translateY(-50%);
101
- transition: transform 0.25s;
101
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
102
+ transition: left 0.25s;
102
103
  }
@@ -2,9 +2,15 @@
2
2
  .lib-xplat-tab {
3
3
  position: relative;
4
4
  display: flex;
5
- width: fit-content;
6
- overflow: hidden;
5
+ width: 100%;
6
+ min-width: 0;
7
7
  align-items: center;
8
+ overflow-x: auto;
9
+ -ms-overflow-style: none;
10
+ scrollbar-width: none;
11
+ }
12
+ .lib-xplat-tab::-webkit-scrollbar {
13
+ display: none;
8
14
  }
9
15
  .lib-xplat-tab.sm {
10
16
  height: var(--spacing-control-height-sm);
@@ -19,15 +25,19 @@
19
25
  font-size: 18px;
20
26
  }
21
27
  .lib-xplat-tab.type-default {
28
+ width: 100%;
22
29
  background-color: var(--semantic-surface-neutral-strong);
23
30
  border-radius: var(--spacing-radius-md);
24
31
  }
25
32
  .lib-xplat-tab.type-default > .tab-item {
33
+ flex: 1;
26
34
  padding: var(--spacing-space-1) var(--spacing-space-6);
27
35
  height: 100%;
28
36
  display: flex;
29
37
  align-items: center;
38
+ justify-content: center;
30
39
  cursor: pointer;
40
+ white-space: nowrap;
31
41
  border-right: 1px solid var(--semantic-border-strong);
32
42
  color: var(--semantic-text-inverse);
33
43
  }
@@ -38,13 +48,17 @@
38
48
  background-color: var(--semantic-surface-brand-default);
39
49
  }
40
50
  .lib-xplat-tab.type-toggle {
51
+ width: 100%;
41
52
  border-bottom: 1px solid var(--semantic-border-default);
42
53
  gap: var(--spacing-space-6);
43
54
  }
44
55
  .lib-xplat-tab.type-toggle > .tab-item {
45
56
  position: relative;
57
+ flex: 1;
46
58
  display: flex;
47
59
  align-items: center;
60
+ justify-content: center;
61
+ white-space: nowrap;
48
62
  padding: 0 var(--spacing-space-3);
49
63
  font-size: 16px;
50
64
  font-weight: 500;
@@ -125,7 +125,7 @@ var TableRowContext_default = TableRowContext;
125
125
 
126
126
  // src/components/Table/TableCell.tsx
127
127
  var import_jsx_runtime3 = require("react/jsx-runtime");
128
- var TableCell = (props) => {
128
+ var TableCell = import_react4.default.memo((props) => {
129
129
  const {
130
130
  children,
131
131
  align = "center",
@@ -180,7 +180,7 @@ var TableCell = (props) => {
180
180
  children
181
181
  }
182
182
  );
183
- };
183
+ });
184
184
  TableCell.displayName = "TableCell";
185
185
  var TableCell_default = TableCell;
186
186
 
@@ -199,7 +199,7 @@ var TableHead_default = TableHead;
199
199
  // src/components/Table/TableRow.tsx
200
200
  var import_react5 = __toESM(require("react"), 1);
201
201
  var import_jsx_runtime5 = require("react/jsx-runtime");
202
- var TableRow = (props) => {
202
+ var TableRow = import_react5.default.memo((props) => {
203
203
  const {
204
204
  children,
205
205
  type = "secondary",
@@ -227,7 +227,7 @@ var TableRow = (props) => {
227
227
  children
228
228
  }
229
229
  ) });
230
- };
230
+ });
231
231
  TableRow.displayName = "TableRow";
232
232
  var TableRow_default = TableRow;
233
233
  // Annotate the CommonJS export names for ESM import in node:
@@ -1,5 +1,6 @@
1
1
  /* src/components/Table/table.scss */
2
2
  .lib-xplat-table-wrapper {
3
+ contain: content;
3
4
  width: 100%;
4
5
  position: relative;
5
6
  }
@@ -27,7 +27,7 @@ interface TableCellProps {
27
27
  isSticky?: boolean;
28
28
  onClick?: (e: React.MouseEvent<HTMLTableCellElement>) => void;
29
29
  }
30
- declare const TableCell: React.FC<TableCellProps>;
30
+ declare const TableCell: React.NamedExoticComponent<TableCellProps>;
31
31
 
32
32
  interface TableHeaderProps {
33
33
  children: React.ReactNode;
@@ -44,9 +44,6 @@ interface TableRowProps {
44
44
  isHover?: boolean;
45
45
  onClick?: (e: React.MouseEvent<HTMLTableRowElement>) => void;
46
46
  }
47
- declare const TableRow: {
48
- (props: TableRowProps): react_jsx_runtime.JSX.Element;
49
- displayName: string;
50
- };
47
+ declare const TableRow: React.MemoExoticComponent<(props: TableRowProps) => react_jsx_runtime.JSX.Element>;
51
48
 
52
49
  export { Table, TableBody, TableCell, TableHead, TableRow };
@@ -27,7 +27,7 @@ interface TableCellProps {
27
27
  isSticky?: boolean;
28
28
  onClick?: (e: React.MouseEvent<HTMLTableCellElement>) => void;
29
29
  }
30
- declare const TableCell: React.FC<TableCellProps>;
30
+ declare const TableCell: React.NamedExoticComponent<TableCellProps>;
31
31
 
32
32
  interface TableHeaderProps {
33
33
  children: React.ReactNode;
@@ -44,9 +44,6 @@ interface TableRowProps {
44
44
  isHover?: boolean;
45
45
  onClick?: (e: React.MouseEvent<HTMLTableRowElement>) => void;
46
46
  }
47
- declare const TableRow: {
48
- (props: TableRowProps): react_jsx_runtime.JSX.Element;
49
- displayName: string;
50
- };
47
+ declare const TableRow: React.MemoExoticComponent<(props: TableRowProps) => react_jsx_runtime.JSX.Element>;
51
48
 
52
49
  export { Table, TableBody, TableCell, TableHead, TableRow };
@@ -85,7 +85,7 @@ var TableRowContext_default = TableRowContext;
85
85
 
86
86
  // src/components/Table/TableCell.tsx
87
87
  import { jsx as jsx3 } from "react/jsx-runtime";
88
- var TableCell = (props) => {
88
+ var TableCell = React4.memo((props) => {
89
89
  const {
90
90
  children,
91
91
  align = "center",
@@ -140,7 +140,7 @@ var TableCell = (props) => {
140
140
  children
141
141
  }
142
142
  );
143
- };
143
+ });
144
144
  TableCell.displayName = "TableCell";
145
145
  var TableCell_default = TableCell;
146
146
 
@@ -159,7 +159,7 @@ var TableHead_default = TableHead;
159
159
  // src/components/Table/TableRow.tsx
160
160
  import React5 from "react";
161
161
  import { jsx as jsx5 } from "react/jsx-runtime";
162
- var TableRow = (props) => {
162
+ var TableRow = React5.memo((props) => {
163
163
  const {
164
164
  children,
165
165
  type = "secondary",
@@ -187,7 +187,7 @@ var TableRow = (props) => {
187
187
  children
188
188
  }
189
189
  ) });
190
- };
190
+ });
191
191
  TableRow.displayName = "TableRow";
192
192
  var TableRow_default = TableRow;
193
193
  export {