@tipp/ui 1.3.1 → 1.4.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 (83) hide show
  1. package/dist/atoms/index.cjs +0 -2
  2. package/dist/atoms/index.cjs.map +1 -1
  3. package/dist/atoms/index.js +1 -1
  4. package/dist/atoms/pagination.cjs +0 -2
  5. package/dist/atoms/pagination.cjs.map +1 -1
  6. package/dist/atoms/pagination.d.cts +2 -1
  7. package/dist/atoms/pagination.d.ts +2 -1
  8. package/dist/atoms/pagination.js +1 -1
  9. package/dist/chunk-62IB66PR.js +184 -0
  10. package/dist/chunk-62IB66PR.js.map +1 -0
  11. package/dist/chunk-7AFF4LYR.js +193 -0
  12. package/dist/chunk-7AFF4LYR.js.map +1 -0
  13. package/dist/chunk-7RLG3G7T.js +186 -0
  14. package/dist/chunk-7RLG3G7T.js.map +1 -0
  15. package/dist/chunk-AAMXDT5H.js +164 -0
  16. package/dist/chunk-AAMXDT5H.js.map +1 -0
  17. package/dist/chunk-CFZMZBKT.js +186 -0
  18. package/dist/chunk-CFZMZBKT.js.map +1 -0
  19. package/dist/chunk-FRIZG47J.js +186 -0
  20. package/dist/chunk-FRIZG47J.js.map +1 -0
  21. package/dist/chunk-FSGGYY2H.js +191 -0
  22. package/dist/chunk-FSGGYY2H.js.map +1 -0
  23. package/dist/chunk-G2WTBLEA.js +164 -0
  24. package/dist/chunk-G2WTBLEA.js.map +1 -0
  25. package/dist/chunk-GQ2UAYG2.js +193 -0
  26. package/dist/chunk-GQ2UAYG2.js.map +1 -0
  27. package/dist/chunk-GTRSAGDQ.js +164 -0
  28. package/dist/chunk-GTRSAGDQ.js.map +1 -0
  29. package/dist/chunk-MNIMT6IW.js +186 -0
  30. package/dist/chunk-MNIMT6IW.js.map +1 -0
  31. package/dist/chunk-N2FQDKJE.js +169 -0
  32. package/dist/chunk-N2FQDKJE.js.map +1 -0
  33. package/dist/chunk-N62PCPTB.js +164 -0
  34. package/dist/chunk-N62PCPTB.js.map +1 -0
  35. package/dist/chunk-N6LVZDYO.js +188 -0
  36. package/dist/chunk-N6LVZDYO.js.map +1 -0
  37. package/dist/chunk-NLTCJLYN.js +183 -0
  38. package/dist/chunk-NLTCJLYN.js.map +1 -0
  39. package/dist/chunk-PEPRIOFR.js +191 -0
  40. package/dist/chunk-PEPRIOFR.js.map +1 -0
  41. package/dist/chunk-SHKCVWJI.js +191 -0
  42. package/dist/chunk-SHKCVWJI.js.map +1 -0
  43. package/dist/chunk-TNPXDOME.js +340 -0
  44. package/dist/chunk-TNPXDOME.js.map +1 -0
  45. package/dist/chunk-UU4VN75U.js +185 -0
  46. package/dist/chunk-UU4VN75U.js.map +1 -0
  47. package/dist/chunk-VZ2XRNJY.js +191 -0
  48. package/dist/chunk-VZ2XRNJY.js.map +1 -0
  49. package/dist/chunk-WVYT25TW.js +185 -0
  50. package/dist/chunk-WVYT25TW.js.map +1 -0
  51. package/dist/chunk-XGPMAJED.js +164 -0
  52. package/dist/chunk-XGPMAJED.js.map +1 -0
  53. package/dist/chunk-YQJGVOUT.js +188 -0
  54. package/dist/chunk-YQJGVOUT.js.map +1 -0
  55. package/dist/chunk-ZWNOY7LD.js +192 -0
  56. package/dist/chunk-ZWNOY7LD.js.map +1 -0
  57. package/dist/chunk-ZXLMP5PK.js +185 -0
  58. package/dist/chunk-ZXLMP5PK.js.map +1 -0
  59. package/dist/index.cjs +78 -22
  60. package/dist/index.cjs.map +1 -1
  61. package/dist/index.css +2 -0
  62. package/dist/index.css.map +1 -1
  63. package/dist/index.js +21 -21
  64. package/dist/molecules/expand-table/index.cjs +226 -53
  65. package/dist/molecules/expand-table/index.cjs.map +1 -1
  66. package/dist/molecules/expand-table/index.d.cts +9 -0
  67. package/dist/molecules/expand-table/index.d.ts +9 -0
  68. package/dist/molecules/expand-table/index.js +2 -2
  69. package/dist/molecules/expand-table/row.js +1 -1
  70. package/dist/molecules/index.cjs +348 -181
  71. package/dist/molecules/index.cjs.map +1 -1
  72. package/dist/molecules/index.js +9 -9
  73. package/dist/molecules/learning-post.cjs.map +1 -1
  74. package/dist/molecules/learning-post.d.cts +1 -1
  75. package/dist/molecules/learning-post.d.ts +1 -1
  76. package/dist/molecules/learning-post.js +1 -1
  77. package/dist/molecules/navigation.js +1 -1
  78. package/dist/molecules/tag-selector.js +1 -1
  79. package/dist/utils/index.js +3 -3
  80. package/package.json +3 -3
  81. package/src/atoms/pagination.tsx +2 -3
  82. package/src/molecules/expand-table/index.tsx +106 -31
  83. package/src/molecules/learning-post.tsx +1 -1
package/dist/index.js CHANGED
@@ -1,23 +1,16 @@
1
- import "./chunk-DRBRT57F.js";
2
- import {
3
- scrollTo
4
- } from "./chunk-ZXQZRIRS.js";
5
- import "./chunk-PSINRHYW.js";
6
- import {
7
- EchartDefaultProps
8
- } from "./chunk-2QFSCWES.js";
9
- import {
10
- HorizontalBarChart
11
- } from "./chunk-SGMO4KBC.js";
12
1
  import {
13
2
  useThemeContext
14
3
  } from "./chunk-MMGP4GEQ.js";
15
4
  import {
16
5
  uiProps
17
6
  } from "./chunk-NVKNDAIN.js";
7
+ import "./chunk-DRBRT57F.js";
18
8
  import {
19
9
  getCellAlign
20
10
  } from "./chunk-A7CXRZIO.js";
11
+ import {
12
+ scrollTo
13
+ } from "./chunk-ZXQZRIRS.js";
21
14
  import "./chunk-6ZAP2Q6K.js";
22
15
  import {
23
16
  DatePicker
@@ -25,8 +18,14 @@ import {
25
18
  import {
26
19
  ExpandTable,
27
20
  createColumnHelper
28
- } from "./chunk-WB5DTU6Y.js";
21
+ } from "./chunk-YQJGVOUT.js";
29
22
  import "./chunk-X5FVSTHW.js";
23
+ import {
24
+ DotNavigation
25
+ } from "./chunk-EDTEVEJW.js";
26
+ import {
27
+ LearningPost
28
+ } from "./chunk-XGPMAJED.js";
30
29
  import {
31
30
  Navigation
32
31
  } from "./chunk-VSGK4POC.js";
@@ -36,17 +35,18 @@ import {
36
35
  import {
37
36
  TagSelector
38
37
  } from "./chunk-P7633BEQ.js";
39
- import "./chunk-BSTJBBEX.js";
40
- import "./chunk-NDUKDKGB.js";
41
- import {
42
- DotNavigation
43
- } from "./chunk-EDTEVEJW.js";
44
- import {
45
- LearningPost
46
- } from "./chunk-XNP73UIK.js";
47
38
  import {
48
39
  ThemeProvider
49
40
  } from "./chunk-BVNXAZ4W.js";
41
+ import "./chunk-PSINRHYW.js";
42
+ import {
43
+ EchartDefaultProps
44
+ } from "./chunk-2QFSCWES.js";
45
+ import {
46
+ HorizontalBarChart
47
+ } from "./chunk-SGMO4KBC.js";
48
+ import "./chunk-BSTJBBEX.js";
49
+ import "./chunk-NDUKDKGB.js";
50
50
  import "./chunk-76JGDATZ.js";
51
51
  import {
52
52
  Spinner
@@ -108,7 +108,7 @@ import {
108
108
  } from "./chunk-SIM6HKVI.js";
109
109
  import {
110
110
  Pagination
111
- } from "./chunk-QVQCTPDU.js";
111
+ } from "./chunk-5X3BCQPR.js";
112
112
  import {
113
113
  Popover
114
114
  } from "./chunk-5AVBYDPB.js";
@@ -64,13 +64,16 @@ __export(expand_table_exports, {
64
64
  });
65
65
  module.exports = __toCommonJS(expand_table_exports);
66
66
  var import_react_table2 = require("@tanstack/react-table");
67
- var import_react4 = require("react");
67
+ var import_react5 = require("react");
68
68
 
69
69
  // src/atoms/flex.tsx
70
70
  var import_themes = require("@radix-ui/themes");
71
71
 
72
- // src/atoms/typo.tsx
72
+ // src/atoms/icon-button.tsx
73
73
  var import_themes2 = require("@radix-ui/themes");
74
+
75
+ // src/atoms/typo.tsx
76
+ var import_themes3 = require("@radix-ui/themes");
74
77
  var import_react = require("react");
75
78
  var import_jsx_runtime = require("react/jsx-runtime");
76
79
  var Typo = (0, import_react.forwardRef)(
@@ -89,7 +92,7 @@ var Typo = (0, import_react.forwardRef)(
89
92
  return "2";
90
93
  }
91
94
  }, [size, variant]);
92
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes2.Text, __spreadProps(__spreadValues({}, rest), { ref, size: radixSize, children }));
95
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_themes3.Text, __spreadProps(__spreadValues({}, rest), { ref, size: radixSize, children }));
93
96
  }
94
97
  );
95
98
  Typo.displayName = "Typo";
@@ -116,13 +119,125 @@ function Collapse(props) {
116
119
  return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("div", { className: "tipp-collapse", ref, children });
117
120
  }
118
121
 
119
- // src/icons/down.tsx
120
- var React3 = __toESM(require("react"), 1);
122
+ // src/atoms/spinner.tsx
123
+ var import_themes4 = require("@radix-ui/themes");
124
+
125
+ // src/atoms/pagination.tsx
126
+ var import_react3 = require("react");
127
+
128
+ // src/icon.ts
129
+ var import_react_icons = require("@radix-ui/react-icons");
130
+
131
+ // src/atoms/pagination.tsx
121
132
  var import_jsx_runtime3 = require("react/jsx-runtime");
122
- var TriangleArrowDownIcon = React3.forwardRef(
133
+ function Pagination(props) {
134
+ const { onChange, count = 0, siblingCount = 2 } = props;
135
+ const [page, setPage] = (0, import_react3.useState)(() => props.page || props.defaultPage || 1);
136
+ const visibleItems = (0, import_react3.useMemo)(() => {
137
+ let start = Math.max(1, page - siblingCount);
138
+ let end = Math.min(count, page + siblingCount);
139
+ if (page - siblingCount <= 0 && end < count) {
140
+ end = Math.min(count, end + Math.abs(page - siblingCount) + 1);
141
+ } else if (page + siblingCount > count && start > 1) {
142
+ start = Math.max(1, start - (page + siblingCount - count));
143
+ }
144
+ return Array.from({ length: end - start + 1 }, (_, i) => i + start);
145
+ }, [count, page, siblingCount]);
146
+ (0, import_react3.useEffect)(() => {
147
+ onChange == null ? void 0 : onChange(page);
148
+ }, [onChange, page]);
149
+ (0, import_react3.useEffect)(() => {
150
+ if (props.page) {
151
+ setPage(props.page);
152
+ }
153
+ }, [props.page]);
154
+ const prev = (0, import_react3.useMemo)(() => {
155
+ const p = page - 1;
156
+ return p < 1 ? void 0 : p;
157
+ }, [page]);
158
+ const next = (0, import_react3.useMemo)(() => {
159
+ const n = page + 1;
160
+ return n > count ? void 0 : n;
161
+ }, [count, page]);
162
+ const onClickPrev = (0, import_react3.useCallback)(() => {
163
+ prev && setPage(prev);
164
+ }, [prev]);
165
+ const onClickNext = (0, import_react3.useCallback)(() => {
166
+ next && setPage(next);
167
+ }, [next]);
168
+ const doublePrev = (0, import_react3.useMemo)(() => {
169
+ if (!visibleItems.length)
170
+ return;
171
+ return Math.max(0, visibleItems[0] - 1);
172
+ }, [visibleItems]);
173
+ const onClickDoublePrev = (0, import_react3.useCallback)(() => {
174
+ doublePrev && setPage(doublePrev);
175
+ }, [doublePrev]);
176
+ const doubleNext = (0, import_react3.useMemo)(() => {
177
+ if (!visibleItems.length)
178
+ return;
179
+ const n = visibleItems[visibleItems.length - 1] + 1;
180
+ if (n > count)
181
+ return;
182
+ return Math.min(count, n);
183
+ }, [count, visibleItems]);
184
+ const onClickDoubleNext = (0, import_react3.useCallback)(() => {
185
+ doubleNext && setPage(doubleNext);
186
+ }, [doubleNext]);
187
+ const iconSize = {
188
+ height: 24,
189
+ width: 24
190
+ };
191
+ const moveButtonProps = {
192
+ variant: "ghost",
193
+ size: "3",
194
+ style: { borderRadius: "50%" }
195
+ };
196
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_themes.Flex, { align: "center", className: "tipp-pagination", gap: "4", children: [
197
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
198
+ import_themes2.IconButton,
199
+ __spreadProps(__spreadValues({
200
+ disabled: !doublePrev,
201
+ onClick: onClickDoublePrev
202
+ }, moveButtonProps), {
203
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_icons.DoubleArrowLeftIcon, __spreadValues({}, iconSize))
204
+ })
205
+ ),
206
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.IconButton, __spreadProps(__spreadValues({ disabled: !prev, onClick: onClickPrev }, moveButtonProps), { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_icons.ChevronLeftIcon, __spreadValues({}, iconSize)) })),
207
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes.Flex, { gap: "1", children: visibleItems.map((item) => {
208
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
209
+ "button",
210
+ {
211
+ className: `page-button ${item === page ? "active" : ""}`,
212
+ onClick: () => {
213
+ setPage(item);
214
+ },
215
+ type: "button",
216
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(Typo, { variant: "body", children: item })
217
+ },
218
+ item
219
+ );
220
+ }) }),
221
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_themes2.IconButton, __spreadProps(__spreadValues({ disabled: !next, onClick: onClickNext }, moveButtonProps), { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_icons.ChevronRightIcon, __spreadValues({}, iconSize)) })),
222
+ /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
223
+ import_themes2.IconButton,
224
+ __spreadProps(__spreadValues({
225
+ disabled: !doubleNext,
226
+ onClick: onClickDoubleNext
227
+ }, moveButtonProps), {
228
+ children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_react_icons.DoubleArrowRightIcon, __spreadValues({}, iconSize))
229
+ })
230
+ )
231
+ ] });
232
+ }
233
+
234
+ // src/icons/down.tsx
235
+ var React4 = __toESM(require("react"), 1);
236
+ var import_jsx_runtime4 = require("react/jsx-runtime");
237
+ var TriangleArrowDownIcon = React4.forwardRef(
123
238
  (_a, forwardedRef) => {
124
239
  var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
125
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
240
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
126
241
  "svg",
127
242
  __spreadProps(__spreadValues({
128
243
  fill: "none",
@@ -132,7 +247,7 @@ var TriangleArrowDownIcon = React3.forwardRef(
132
247
  xmlns: "http://www.w3.org/2000/svg"
133
248
  }, props), {
134
249
  ref: forwardedRef,
135
- children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
250
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
136
251
  "path",
137
252
  {
138
253
  d: "M7.10844 0.8125H0.891554C0.197392 0.8125 -0.177096 1.62672 0.274659 2.15377L3.3831 5.78029C3.70737 6.1586 4.29263 6.1586 4.6169 5.78029L7.72534 2.15377C8.1771 1.62672 7.80261 0.8125 7.10844 0.8125Z",
@@ -146,12 +261,12 @@ var TriangleArrowDownIcon = React3.forwardRef(
146
261
  TriangleArrowDownIcon.displayName = "ArrowDownIcon";
147
262
 
148
263
  // src/icons/up.tsx
149
- var React4 = __toESM(require("react"), 1);
150
- var import_jsx_runtime4 = require("react/jsx-runtime");
151
- var TriangleArrowUpIcon = React4.forwardRef(
264
+ var React5 = __toESM(require("react"), 1);
265
+ var import_jsx_runtime5 = require("react/jsx-runtime");
266
+ var TriangleArrowUpIcon = React5.forwardRef(
152
267
  (_a, forwardedRef) => {
153
268
  var _b = _a, { color = "currentColor" } = _b, props = __objRest(_b, ["color"]);
154
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
269
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
155
270
  "svg",
156
271
  __spreadProps(__spreadValues({
157
272
  fill: "none",
@@ -161,7 +276,7 @@ var TriangleArrowUpIcon = React4.forwardRef(
161
276
  xmlns: "http://www.w3.org/2000/svg"
162
277
  }, props), {
163
278
  ref: forwardedRef,
164
- children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
279
+ children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
165
280
  "path",
166
281
  {
167
282
  d: "M0.891555 6.1875L7.10845 6.1875C7.80261 6.1875 8.1771 5.37328 7.72534 4.84623L4.6169 1.21971C4.29263 0.841403 3.70737 0.841403 3.3831 1.21971L0.274659 4.84623C-0.177095 5.37328 0.197393 6.1875 0.891555 6.1875Z",
@@ -176,17 +291,17 @@ TriangleArrowUpIcon.displayName = "ArrowUpIcon";
176
291
 
177
292
  // src/molecules/expand-table/row.tsx
178
293
  var import_react_table = require("@tanstack/react-table");
179
- var import_react3 = require("react");
180
- var import_jsx_runtime5 = require("react/jsx-runtime");
294
+ var import_react4 = require("react");
295
+ var import_jsx_runtime6 = require("react/jsx-runtime");
181
296
  function Row(props) {
182
297
  const { row, ExpandComp, gridColTemp } = props;
183
- const [open, setOpen] = (0, import_react3.useState)(false);
184
- const onClickRow = (0, import_react3.useCallback)(() => {
298
+ const [open, setOpen] = (0, import_react4.useState)(false);
299
+ const onClickRow = (0, import_react4.useCallback)(() => {
185
300
  var _a;
186
301
  (_a = props.onRowClick) == null ? void 0 : _a.call(props, row.original);
187
302
  setOpen((prev) => !prev);
188
303
  }, [props, row.original]);
189
- const rowClassName = (0, import_react3.useMemo)(() => {
304
+ const rowClassName = (0, import_react4.useMemo)(() => {
190
305
  const baseCls = ["tr-wrapper"];
191
306
  if (ExpandComp) {
192
307
  baseCls.push("expandable");
@@ -196,8 +311,8 @@ function Row(props) {
196
311
  }
197
312
  return baseCls.join(" ");
198
313
  }, [ExpandComp, props.onRowClick]);
199
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: rowClassName, children: [
200
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
314
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: rowClassName, children: [
315
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
201
316
  "button",
202
317
  {
203
318
  className: "tr",
@@ -208,7 +323,7 @@ function Row(props) {
208
323
  var _a, _b, _c;
209
324
  const autoSize = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.autoSize;
210
325
  const justifyContent = ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.align) || props.defaultAlign;
211
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
326
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
212
327
  "div",
213
328
  {
214
329
  className: "td",
@@ -219,7 +334,7 @@ function Row(props) {
219
334
  },
220
335
  children: [
221
336
  (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()),
222
- ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
337
+ ((_c = cell.column.columnDef.meta) == null ? void 0 : _c.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
223
338
  cell.column.columnDef.meta.OpenBtn,
224
339
  {
225
340
  data: row.original,
@@ -235,27 +350,46 @@ function Row(props) {
235
350
  },
236
351
  `tr_${row.id}`
237
352
  ),
238
- ExpandComp ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(Collapse, { open, children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "expand-comp-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(ExpandComp, { row }) }) }) : null
353
+ ExpandComp ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Collapse, { open, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "expand-comp-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ExpandComp, { row }) }) }) : null
239
354
  ] }, `tr-wrapper_${row.id}`);
240
355
  }
241
356
 
242
357
  // src/molecules/expand-table/index.tsx
243
- var import_jsx_runtime6 = require("react/jsx-runtime");
358
+ var import_jsx_runtime7 = require("react/jsx-runtime");
244
359
  function ExpandTable(props) {
245
- const { data, columns, ExpandComp, placeholder, onRowClick, tableStyle } = props;
360
+ const {
361
+ data,
362
+ columns,
363
+ ExpandComp,
364
+ placeholder,
365
+ onRowClick,
366
+ tableStyle,
367
+ showPagination,
368
+ isLoading,
369
+ pageIndex = 0,
370
+ pageSize = 10,
371
+ siblingCount = 2
372
+ } = props;
246
373
  const defaultAlign = "left";
247
- const [sorting, setSorting] = (0, import_react4.useState)([]);
248
- const { getRowModel, getHeaderGroups } = (0, import_react_table2.useReactTable)({
374
+ const [pagination, setPagination] = (0, import_react5.useState)({
375
+ pageIndex: pageIndex || 0,
376
+ pageSize: pageSize || 9999
377
+ });
378
+ const [sorting, setSorting] = (0, import_react5.useState)([]);
379
+ const { getRowModel, getHeaderGroups, setPageIndex } = (0, import_react_table2.useReactTable)({
249
380
  data: data || [],
250
381
  columns,
251
382
  getCoreRowModel: (0, import_react_table2.getCoreRowModel)(),
252
383
  getSortedRowModel: (0, import_react_table2.getSortedRowModel)(),
253
384
  state: {
254
- sorting
385
+ sorting,
386
+ pagination
255
387
  },
256
- onSortingChange: setSorting
388
+ onSortingChange: setSorting,
389
+ getPaginationRowModel: (0, import_react_table2.getPaginationRowModel)(),
390
+ onPaginationChange: setPagination
257
391
  });
258
- const gridColTemp = (0, import_react4.useMemo)(() => {
392
+ const gridColTemp = (0, import_react5.useMemo)(() => {
259
393
  return columns.map((col) => {
260
394
  var _a;
261
395
  if ((_a = col.meta) == null ? void 0 : _a.autoSize)
@@ -264,8 +398,41 @@ function ExpandTable(props) {
264
398
  }).join(" ");
265
399
  }, [columns]);
266
400
  const rowModels = getRowModel();
267
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "expand-table", style: tableStyle, children: [
268
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
401
+ const onChangePagination = (0, import_react5.useCallback)(
402
+ (page) => {
403
+ setPageIndex(page - 1);
404
+ },
405
+ [setPageIndex]
406
+ );
407
+ const helpCompRender = (0, import_react5.useCallback)(
408
+ (rowLength) => {
409
+ if (isLoading) {
410
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
411
+ import_themes.Flex,
412
+ {
413
+ align: "center",
414
+ height: "100%",
415
+ justify: "center",
416
+ p: "5",
417
+ width: "100%",
418
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes4.Spinner, {})
419
+ }
420
+ );
421
+ }
422
+ if (rowLength === 0) {
423
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder");
424
+ }
425
+ return null;
426
+ },
427
+ [isLoading, placeholder]
428
+ );
429
+ const pageCount = (0, import_react5.useMemo)(() => {
430
+ if (!data)
431
+ return 0;
432
+ return Math.ceil(data.length / pageSize);
433
+ }, [data, pageSize]);
434
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "expand-table", style: tableStyle, children: [
435
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
269
436
  "div",
270
437
  {
271
438
  className: "tr",
@@ -275,30 +442,30 @@ function ExpandTable(props) {
275
442
  const sortable = header.column.getCanSort();
276
443
  const sortedState = header.column.getIsSorted();
277
444
  const justifyContent = ((_a = header.column.columnDef.meta) == null ? void 0 : _a.align) || defaultAlign;
278
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
445
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: `${justifyContent} th`, children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
279
446
  "button",
280
447
  {
281
448
  onClick: header.column.getToggleSortingHandler(),
282
449
  style: sortable ? { cursor: "pointer" } : void 0,
283
450
  type: "button",
284
451
  children: [
285
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Typo, { variant: "body", children: (0, import_react_table2.flexRender)(
452
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Typo, { variant: "body", children: (0, import_react_table2.flexRender)(
286
453
  header.column.columnDef.header,
287
454
  header.getContext()
288
455
  ) }),
289
- sortable ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
456
+ sortable ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
290
457
  import_themes.Flex,
291
458
  {
292
459
  direction: "column",
293
460
  style: { marginLeft: "var(--space-2)" },
294
461
  children: [
295
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
462
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
296
463
  TriangleArrowUpIcon,
297
464
  {
298
465
  color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
299
466
  }
300
467
  ),
301
- /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
468
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
302
469
  TriangleArrowDownIcon,
303
470
  {
304
471
  color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
@@ -314,22 +481,28 @@ function ExpandTable(props) {
314
481
  },
315
482
  headerGroup.id
316
483
  )) }),
317
- /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "tbody", children: [
318
- rowModels.rows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_themes.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
319
- rowModels.rows.map((row) => {
320
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
321
- Row,
322
- {
323
- ExpandComp,
324
- defaultAlign,
325
- gridColTemp,
326
- onRowClick,
327
- row
328
- },
329
- `row_${row.id}`
330
- );
331
- })
332
- ] })
484
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "tbody", children: helpCompRender(rowModels.rows.length) || rowModels.rows.map((row) => {
485
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
486
+ Row,
487
+ {
488
+ ExpandComp,
489
+ defaultAlign,
490
+ gridColTemp,
491
+ onRowClick,
492
+ row
493
+ },
494
+ `row_${row.id}`
495
+ );
496
+ }) }),
497
+ showPagination ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_themes.Flex, { justify: "end", pt: "3", width: "100%", children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
498
+ Pagination,
499
+ {
500
+ count: pageCount,
501
+ onChange: onChangePagination,
502
+ page: pagination.pageIndex + 1,
503
+ siblingCount
504
+ }
505
+ ) }) : null
333
506
  ] });
334
507
  }
335
508
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/molecules/expand-table/index.tsx","../../../src/atoms/flex.tsx","../../../src/atoms/typo.tsx","../../../src/atoms/collapse.tsx","../../../src/icons/down.tsx","../../../src/icons/up.tsx","../../../src/molecules/expand-table/row.tsx"],"sourcesContent":["import type {\n ColumnDef,\n SortingState,\n RowData,\n Row as RowType,\n} from '@tanstack/react-table';\nimport type { CSSProperties } from 'react';\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getSortedRowModel,\n createColumnHelper,\n} from '@tanstack/react-table';\nimport React, { useMemo, useState } from 'react';\nimport { Flex, Typo } from '../../atoms';\nimport { TriangleArrowDownIcon } from '../../icons/down';\nimport { TriangleArrowUpIcon } from '../../icons/up';\nimport { Row, type ExpandComp, type OnRowClick } from './row';\n\nexport type { ExpandComp, OnRowClick, ColumnDef, RowType as Row };\nexport { createColumnHelper };\n\nexport interface ExpandTableProps<Datum extends RowData> {\n /** 렌더할 데이터 배열 */\n data?: Datum[];\n /** 테이블 컬럼의 메타 데이터 */\n columns: ColumnDef<Datum>[];\n /** Row의 open이 true인 경우 하단의 collapse에 렌더할 컴포넌트 */\n ExpandComp?: ExpandComp<Datum>;\n /** 데이테가 없을 시 화면에 표시할 컴포넌트 */\n placeholder?: React.ReactNode;\n /** 행 클릭 시 실행할 콜백 */\n onRowClick?: OnRowClick<Datum>;\n rowStyle?: CSSProperties;\n tableStyle?: CSSProperties;\n}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const { data, columns, ExpandComp, placeholder, onRowClick, tableStyle } =\n props;\n const defaultAlign = 'left';\n const [sorting, setSorting] = useState<SortingState>([]);\n const { getRowModel, getHeaderGroups } = useReactTable({\n data: data || [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n },\n onSortingChange: setSorting,\n });\n\n const gridColTemp = useMemo<string>(() => {\n return columns\n .map((col) => {\n if (col.meta?.autoSize) return '1fr';\n return `${col.size || 150}px`;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n return (\n <div className=\"expand-table\" style={tableStyle}>\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div\n className=\"tr\"\n key={headerGroup.id}\n style={{ gridTemplateColumns: gridColTemp }}\n >\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const justifyContent =\n header.column.columnDef.meta?.align || defaultAlign;\n\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <button\n onClick={header.column.getToggleSortingHandler()}\n style={sortable ? { cursor: 'pointer' } : undefined}\n type=\"button\"\n >\n <Typo variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n {sortable ? (\n <Flex\n direction=\"column\"\n style={{ marginLeft: 'var(--space-2)' }}\n >\n <TriangleArrowUpIcon\n color={\n sortedState === 'asc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n <TriangleArrowDownIcon\n color={\n sortedState === 'desc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n </Flex>\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"tbody\">\n {/* 데이터가 없을 시 표시되는 노드 */}\n {rowModels.rows.length === 0 && (\n <div className=\"tr\" key=\"expand_placeholder\">\n <Flex align=\"center\" justify=\"center\">\n {placeholder || (\n <Typo color=\"gray\" mb=\"6\" mt=\"6\" variant=\"body\">\n 데이터가 없습니다\n </Typo>\n )}\n </Flex>\n </div>\n )}\n\n {/* 행을 렌더하는 로직 */}\n {rowModels.rows.map((row) => {\n return (\n <Row\n ExpandComp={ExpandComp}\n defaultAlign={defaultAlign}\n gridColTemp={gridColTemp}\n key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n );\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport React, { useMemo, forwardRef } from 'react';\n\nexport type TypoProps = RadixTextProps & {\n variant?: 'body' | 'caption' | 'subtitle';\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactElement => {\n const { size, variant, children, ...rest } = props;\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n switch (variant) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n }, [size, variant]);\n\n return (\n <RadixText {...rest} ref={ref} size={radixSize}>\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import React, { useEffect, useRef, useState } from 'react';\n\nexport interface CollapseProps {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n /** 닫힘 상태일 때 높이 값이 필요할 시 사용 */\n closedHeight?: string;\n}\n\nexport function Collapse(props: CollapseProps): React.ReactNode {\n const { children, closedHeight = '0' } = props;\n const [open, setOpen] = useState(() => {\n return props.open || props.defaultOpen || false;\n });\n\n useEffect(() => {\n if (props.open === undefined) return;\n setOpen(props.open);\n }, [props.open]);\n\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!ref.current) return;\n ref.current.style.maxHeight = open\n ? `${ref.current.scrollHeight}px`\n : closedHeight;\n }, [closedHeight, open]);\n\n return (\n <div className=\"tipp-collapse\" ref={ref}>\n {children}\n </div>\n );\n}\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowDownIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M7.10844 0.8125H0.891554C0.197392 0.8125 -0.177096 1.62672 0.274659 2.15377L3.3831 5.78029C3.70737 6.1586 4.29263 6.1586 4.6169 5.78029L7.72534 2.15377C8.1771 1.62672 7.80261 0.8125 7.10844 0.8125Z\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowDownIcon.displayName = 'ArrowDownIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowUpIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M0.891555 6.1875L7.10845 6.1875C7.80261 6.1875 8.1771 5.37328 7.72534 4.84623L4.6169 1.21971C4.29263 0.841403 3.70737 0.841403 3.3831 1.21971L0.274659 4.84623C-0.177095 5.37328 0.197393 6.1875 0.891555 6.1875Z\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowUpIcon.displayName = 'ArrowUpIcon';\n","import {\n type Row as TanstackRow,\n type RowData,\n flexRender,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Collapse } from '../../atoms';\nimport type { CellAlign } from '../../utils/get-cell-align';\n\nexport type ExpandComp<Datum> = React.FC<{ row: TanstackRow<Datum> }>;\nexport type OnRowClick<Datum> = (data: Datum) => void;\n\ninterface RowProps<Datum extends RowData> {\n row: TanstackRow<Datum>;\n ExpandComp?: ExpandComp<Datum>;\n onRowClick?: OnRowClick<Datum>;\n gridColTemp: string;\n defaultAlign: CellAlign;\n}\n\nexport function Row<Datum extends RowData>(\n props: RowProps<Datum>\n): React.ReactNode {\n const { row, ExpandComp, gridColTemp } = props;\n const [open, setOpen] = useState(false);\n\n const onClickRow = useCallback(() => {\n props.onRowClick?.(row.original);\n setOpen((prev) => !prev);\n }, [props, row.original]);\n\n const rowClassName = useMemo(() => {\n const baseCls = ['tr-wrapper'];\n if (ExpandComp) {\n baseCls.push('expandable');\n }\n if (props.onRowClick) {\n baseCls.push('clickable');\n }\n return baseCls.join(' ');\n }, [ExpandComp, props.onRowClick]);\n\n return (\n <div className={rowClassName} key={`tr-wrapper_${row.id}`}>\n <button\n className=\"tr\"\n key={`tr_${row.id}`}\n onClick={onClickRow}\n style={{ gridTemplateColumns: gridColTemp }}\n type=\"button\"\n >\n {row.getVisibleCells().map((cell) => {\n const autoSize = cell.column.columnDef.meta?.autoSize;\n const justifyContent =\n cell.column.columnDef.meta?.align || props.defaultAlign;\n\n return (\n <div\n className=\"td\"\n key={cell.id}\n style={{\n // width: autoSize ? undefined : cell.column.getSize(),\n flexGrow: autoSize ? 1 : undefined,\n justifyContent,\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n {cell.column.columnDef.meta?.OpenBtn ? (\n <cell.column.columnDef.meta.OpenBtn\n data={row.original}\n open={open}\n setIsOpen={setOpen}\n />\n ) : null}\n </div>\n );\n })}\n </button>\n {ExpandComp ? (\n <Collapse open={open}>\n <div className=\"expand-comp-wrapper\">\n <ExpandComp row={row} />\n </div>\n </Collapse>\n ) : null}\n </div>\n );\n}\n"],"mappings":"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","names":["import_react_table","import_react","import_themes","RadixText","import_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../../src/molecules/expand-table/index.tsx","../../../src/atoms/flex.tsx","../../../src/atoms/icon-button.tsx","../../../src/atoms/typo.tsx","../../../src/atoms/collapse.tsx","../../../src/atoms/spinner.tsx","../../../src/atoms/pagination.tsx","../../../src/icon.ts","../../../src/icons/down.tsx","../../../src/icons/up.tsx","../../../src/molecules/expand-table/row.tsx"],"sourcesContent":["import type {\n ColumnDef,\n SortingState,\n RowData,\n Row as RowType,\n PaginationState,\n} from '@tanstack/react-table';\nimport type { CSSProperties } from 'react';\nimport {\n flexRender,\n getCoreRowModel,\n useReactTable,\n getSortedRowModel,\n createColumnHelper,\n getPaginationRowModel,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Flex, Pagination, Spinner, Typo } from '../../atoms';\nimport { TriangleArrowDownIcon } from '../../icons/down';\nimport { TriangleArrowUpIcon } from '../../icons/up';\nimport { Row, type ExpandComp, type OnRowClick } from './row';\n\nexport type { ExpandComp, OnRowClick, ColumnDef, RowType as Row };\nexport { createColumnHelper };\n\nexport interface ExpandTableProps<Datum extends RowData> {\n /** 렌더할 데이터 배열 */\n data?: Datum[];\n /** 테이블 컬럼의 메타 데이터 */\n columns: ColumnDef<Datum>[];\n /** Row의 open이 true인 경우 하단의 collapse에 렌더할 컴포넌트 */\n ExpandComp?: ExpandComp<Datum>;\n /** 데이테가 없을 시 화면에 표시할 컴포넌트 */\n placeholder?: React.ReactNode;\n /** 행 클릭 시 실행할 콜백 */\n onRowClick?: OnRowClick<Datum>;\n rowStyle?: CSSProperties;\n tableStyle?: CSSProperties;\n isLoading?: boolean;\n\n /** pagination - 표시 유무 */\n showPagination?: boolean;\n /** pagination - 현재 선택된 페이지, 0부터 시작 */\n pageIndex?: number;\n /** pagination - 한 페이지에 표시될 컬럼 개수 */\n pageSize?: number;\n /** pagination - */\n siblingCount?: number;\n}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const {\n data,\n columns,\n ExpandComp,\n placeholder,\n onRowClick,\n tableStyle,\n showPagination,\n isLoading,\n pageIndex = 0,\n pageSize = 10,\n siblingCount = 2,\n } = props;\n const defaultAlign = 'left';\n const [pagination, setPagination] = useState<PaginationState>({\n pageIndex: pageIndex || 0,\n pageSize: pageSize || 9999,\n });\n\n const [sorting, setSorting] = useState<SortingState>([]);\n const { getRowModel, getHeaderGroups, setPageIndex } = useReactTable({\n data: data || [],\n columns,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n pagination,\n },\n onSortingChange: setSorting,\n getPaginationRowModel: getPaginationRowModel(),\n onPaginationChange: setPagination,\n });\n\n const gridColTemp = useMemo<string>(() => {\n return columns\n .map((col) => {\n if (col.meta?.autoSize) return '1fr';\n return `${col.size || 150}px`;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n const onChangePagination = useCallback(\n (page: number) => {\n setPageIndex(page - 1);\n },\n [setPageIndex]\n );\n\n const helpCompRender = useCallback(\n (rowLength: number) => {\n if (isLoading) {\n return (\n <Flex\n align=\"center\"\n height=\"100%\"\n justify=\"center\"\n p=\"5\"\n width=\"100%\"\n >\n <Spinner />\n </Flex>\n );\n }\n if (rowLength === 0) {\n return (\n <div className=\"tr\" key=\"expand_placeholder\">\n <Flex align=\"center\" justify=\"center\">\n {placeholder || (\n <Typo color=\"gray\" mb=\"6\" mt=\"6\" variant=\"body\">\n 데이터가 없습니다\n </Typo>\n )}\n </Flex>\n </div>\n );\n }\n return null;\n },\n [isLoading, placeholder]\n );\n\n const pageCount = useMemo(() => {\n if (!data) return 0;\n return Math.ceil(data.length / pageSize);\n }, [data, pageSize]);\n\n return (\n <div className=\"expand-table\" style={tableStyle}>\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div\n className=\"tr\"\n key={headerGroup.id}\n style={{ gridTemplateColumns: gridColTemp }}\n >\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const justifyContent =\n header.column.columnDef.meta?.align || defaultAlign;\n\n return (\n <div className={`${justifyContent} th`} key={header.id}>\n <button\n onClick={header.column.getToggleSortingHandler()}\n style={sortable ? { cursor: 'pointer' } : undefined}\n type=\"button\"\n >\n <Typo variant=\"body\">\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </Typo>\n {sortable ? (\n <Flex\n direction=\"column\"\n style={{ marginLeft: 'var(--space-2)' }}\n >\n <TriangleArrowUpIcon\n color={\n sortedState === 'asc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n <TriangleArrowDownIcon\n color={\n sortedState === 'desc'\n ? 'var(--iris-10)'\n : 'var(--iris-6)'\n }\n />\n </Flex>\n ) : null}\n </button>\n </div>\n );\n })}\n </div>\n ))}\n </div>\n <div className=\"tbody\">\n {/* 조건에 따라 placeholder 또는 loading 렌더*/}\n {helpCompRender(rowModels.rows.length) ||\n rowModels.rows.map((row) => {\n return (\n <Row\n ExpandComp={ExpandComp}\n defaultAlign={defaultAlign}\n gridColTemp={gridColTemp}\n key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n\n {showPagination ? (\n <Flex justify=\"end\" pt=\"3\" width=\"100%\">\n <Pagination\n count={pageCount}\n onChange={onChangePagination}\n page={pagination.pageIndex + 1}\n siblingCount={siblingCount}\n />\n </Flex>\n ) : null}\n </div>\n );\n}\n","export { Flex, type FlexProps } from '@radix-ui/themes';\n","export { IconButton, type IconButtonProps } from '@radix-ui/themes';\n","import type { TextProps as RadixTextProps } from '@radix-ui/themes';\nimport { Text as RadixText } from '@radix-ui/themes';\nimport React, { useMemo, forwardRef } from 'react';\n\nexport type TypoProps = RadixTextProps & {\n variant?: 'body' | 'caption' | 'subtitle';\n};\n\nexport const Typo = forwardRef<HTMLSpanElement, TypoProps>(\n (props: TypoProps, ref): React.ReactElement => {\n const { size, variant, children, ...rest } = props;\n\n const radixSize = useMemo<RadixTextProps['size']>(() => {\n if (size !== undefined) return size;\n switch (variant) {\n case 'caption':\n return '1';\n case 'subtitle':\n return '3';\n case 'body':\n default:\n return '2';\n }\n }, [size, variant]);\n\n return (\n <RadixText {...rest} ref={ref} size={radixSize}>\n {children}\n </RadixText>\n );\n }\n);\n\nTypo.displayName = 'Typo';\n","import React, { useEffect, useRef, useState } from 'react';\n\nexport interface CollapseProps {\n children: React.ReactNode;\n open?: boolean;\n defaultOpen?: boolean;\n /** 닫힘 상태일 때 높이 값이 필요할 시 사용 */\n closedHeight?: string;\n}\n\nexport function Collapse(props: CollapseProps): React.ReactNode {\n const { children, closedHeight = '0' } = props;\n const [open, setOpen] = useState(() => {\n return props.open || props.defaultOpen || false;\n });\n\n useEffect(() => {\n if (props.open === undefined) return;\n setOpen(props.open);\n }, [props.open]);\n\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!ref.current) return;\n ref.current.style.maxHeight = open\n ? `${ref.current.scrollHeight}px`\n : closedHeight;\n }, [closedHeight, open]);\n\n return (\n <div className=\"tipp-collapse\" ref={ref}>\n {children}\n </div>\n );\n}\n","export { Spinner, type SpinnerProps } from '@radix-ui/themes';\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport {\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from '../icon';\nimport type { IconButtonProps } from './icon-button';\nimport { IconButton } from './icon-button';\nimport { Flex } from './flex';\nimport { Typo } from './typo';\n\nexport interface PaginationProps {\n /** 현재 선택된 페이지, 1부터 시작 */\n page?: number;\n /** 기본 선택 페이지, page보다 낮은 우선 순위를 갖는다 */\n defaultPage?: number;\n /** 선택한 페이지 변경 이벤트 cb */\n onChange?: (page: number) => void;\n /** 전체 페이지의 수 */\n count?: number;\n /** 표시할 페이지 버튼의 개수 */\n siblingCount?: number;\n}\n\nexport function Pagination(props: PaginationProps): React.ReactNode {\n const { onChange, count = 0, siblingCount = 2 } = props;\n\n const [page, setPage] = useState(() => props.page || props.defaultPage || 1);\n\n const visibleItems = useMemo(() => {\n let start = Math.max(1, page - siblingCount);\n let end = Math.min(count, page + siblingCount);\n if (page - siblingCount <= 0 && end < count) {\n end = Math.min(count, end + Math.abs(page - siblingCount) + 1);\n } else if (page + siblingCount > count && start > 1) {\n start = Math.max(1, start - (page + siblingCount - count));\n }\n\n return Array.from({ length: end - start + 1 }, (_, i) => i + start);\n }, [count, page, siblingCount]);\n\n useEffect(() => {\n onChange?.(page);\n }, [onChange, page]);\n\n useEffect(() => {\n if (props.page) {\n setPage(props.page);\n }\n }, [props.page]);\n\n const prev = useMemo<number | undefined>(() => {\n const p = page - 1;\n return p < 1 ? undefined : p;\n }, [page]);\n\n const next = useMemo<number | undefined>(() => {\n const n = page + 1;\n return n > count ? undefined : n;\n }, [count, page]);\n\n const onClickPrev = useCallback(() => {\n prev && setPage(prev);\n }, [prev]);\n\n const onClickNext = useCallback(() => {\n next && setPage(next);\n }, [next]);\n\n const doublePrev = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n return Math.max(0, visibleItems[0] - 1);\n }, [visibleItems]);\n\n const onClickDoublePrev = useCallback(() => {\n doublePrev && setPage(doublePrev);\n }, [doublePrev]);\n\n const doubleNext = useMemo<number | undefined>(() => {\n if (!visibleItems.length) return;\n const n = visibleItems[visibleItems.length - 1] + 1;\n if (n > count) return;\n return Math.min(count, n);\n }, [count, visibleItems]);\n\n const onClickDoubleNext = useCallback(() => {\n doubleNext && setPage(doubleNext);\n }, [doubleNext]);\n\n const iconSize = {\n height: 24,\n width: 24,\n };\n\n const moveButtonProps: IconButtonProps = {\n variant: 'ghost',\n size: '3',\n style: { borderRadius: '50%' },\n };\n\n return (\n <Flex align=\"center\" className=\"tipp-pagination\" gap=\"4\">\n <IconButton\n disabled={!doublePrev}\n onClick={onClickDoublePrev}\n {...moveButtonProps}\n >\n <DoubleArrowLeftIcon {...iconSize} />\n </IconButton>\n <IconButton disabled={!prev} onClick={onClickPrev} {...moveButtonProps}>\n <ChevronLeftIcon {...iconSize} />\n </IconButton>\n <Flex gap=\"1\">\n {visibleItems.map((item) => {\n return (\n <button\n className={`page-button ${item === page ? 'active' : ''}`}\n key={item}\n onClick={() => {\n setPage(item);\n }}\n type=\"button\"\n >\n <Typo variant=\"body\">{item}</Typo>\n </button>\n );\n })}\n </Flex>\n <IconButton disabled={!next} onClick={onClickNext} {...moveButtonProps}>\n <ChevronRightIcon {...iconSize} />\n </IconButton>\n <IconButton\n disabled={!doubleNext}\n onClick={onClickDoubleNext}\n {...moveButtonProps}\n >\n <DoubleArrowRightIcon {...iconSize} />\n </IconButton>\n </Flex>\n );\n}\n","export {\n BookmarkIcon,\n ExitIcon,\n InfoCircledIcon,\n ExclamationTriangleIcon,\n MagnifyingGlassIcon,\n DotsHorizontalIcon,\n ChatBubbleIcon,\n PlusIcon,\n BookmarkFilledIcon,\n MixerHorizontalIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ClipboardIcon,\n BarChartIcon,\n PersonIcon,\n GearIcon,\n DotsVerticalIcon,\n Pencil1Icon,\n Cross1Icon,\n Link2Icon,\n ChevronUpIcon,\n ChevronDownIcon,\n FileIcon,\n TrashIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n GlobeIcon,\n BackpackIcon,\n CalendarIcon,\n CheckIcon,\n ArchiveIcon,\n RowsIcon,\n Share1Icon,\n ClipboardCopyIcon,\n} from '@radix-ui/react-icons';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowDownIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M7.10844 0.8125H0.891554C0.197392 0.8125 -0.177096 1.62672 0.274659 2.15377L3.3831 5.78029C3.70737 6.1586 4.29263 6.1586 4.6169 5.78029L7.72534 2.15377C8.1771 1.62672 7.80261 0.8125 7.10844 0.8125Z\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowDownIcon.displayName = 'ArrowDownIcon';\n","import * as React from 'react';\nimport type { IconProps } from './types';\n\nexport const TriangleArrowUpIcon = React.forwardRef<SVGSVGElement, IconProps>(\n ({ color = 'currentColor', ...props }, forwardedRef) => {\n return (\n <svg\n fill=\"none\"\n height=\"7\"\n viewBox=\"0 0 8 7\"\n width=\"8\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n ref={forwardedRef}\n >\n <path\n d=\"M0.891555 6.1875L7.10845 6.1875C7.80261 6.1875 8.1771 5.37328 7.72534 4.84623L4.6169 1.21971C4.29263 0.841403 3.70737 0.841403 3.3831 1.21971L0.274659 4.84623C-0.177095 5.37328 0.197393 6.1875 0.891555 6.1875Z\"\n fill={color}\n />\n </svg>\n );\n }\n);\n\nTriangleArrowUpIcon.displayName = 'ArrowUpIcon';\n","import {\n type Row as TanstackRow,\n type RowData,\n flexRender,\n} from '@tanstack/react-table';\nimport React, { useCallback, useMemo, useState } from 'react';\nimport { Collapse } from '../../atoms';\nimport type { CellAlign } from '../../utils/get-cell-align';\n\nexport type ExpandComp<Datum> = React.FC<{ row: TanstackRow<Datum> }>;\nexport type OnRowClick<Datum> = (data: Datum) => void;\n\ninterface RowProps<Datum extends RowData> {\n row: TanstackRow<Datum>;\n ExpandComp?: ExpandComp<Datum>;\n onRowClick?: OnRowClick<Datum>;\n gridColTemp: string;\n defaultAlign: CellAlign;\n}\n\nexport function Row<Datum extends RowData>(\n props: RowProps<Datum>\n): React.ReactNode {\n const { row, ExpandComp, gridColTemp } = props;\n const [open, setOpen] = useState(false);\n\n const onClickRow = useCallback(() => {\n props.onRowClick?.(row.original);\n setOpen((prev) => !prev);\n }, [props, row.original]);\n\n const rowClassName = useMemo(() => {\n const baseCls = ['tr-wrapper'];\n if (ExpandComp) {\n baseCls.push('expandable');\n }\n if (props.onRowClick) {\n baseCls.push('clickable');\n }\n return baseCls.join(' ');\n }, [ExpandComp, props.onRowClick]);\n\n return (\n <div className={rowClassName} key={`tr-wrapper_${row.id}`}>\n <button\n className=\"tr\"\n key={`tr_${row.id}`}\n onClick={onClickRow}\n style={{ gridTemplateColumns: gridColTemp }}\n type=\"button\"\n >\n {row.getVisibleCells().map((cell) => {\n const autoSize = cell.column.columnDef.meta?.autoSize;\n const justifyContent =\n cell.column.columnDef.meta?.align || props.defaultAlign;\n\n return (\n <div\n className=\"td\"\n key={cell.id}\n style={{\n // width: autoSize ? undefined : cell.column.getSize(),\n flexGrow: autoSize ? 1 : undefined,\n justifyContent,\n }}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n {cell.column.columnDef.meta?.OpenBtn ? (\n <cell.column.columnDef.meta.OpenBtn\n data={row.original}\n open={open}\n setIsOpen={setOpen}\n />\n ) : null}\n </div>\n );\n })}\n </button>\n {ExpandComp ? (\n <Collapse open={open}>\n <div className=\"expand-comp-wrapper\">\n <ExpandComp row={row} />\n </div>\n </Collapse>\n ) : null}\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA,IAAAA,sBAOO;AACP,IAAAC,gBAAsD;;;AChBtD,oBAAqC;;;ACArC,IAAAC,iBAAiD;;;ACCjD,IAAAC,iBAAkC;AAClC,mBAA2C;AAwBrC;AAlBC,IAAM,WAAO;AAAA,EAClB,CAAC,OAAkB,QAA4B;AAC7C,UAA6C,YAArC,QAAM,SAAS,SAV3B,IAUiD,IAAT,iBAAS,IAAT,CAA5B,QAAM,WAAS;AAEvB,UAAM,gBAAY,sBAAgC,MAAM;AACtD,UAAI,SAAS;AAAW,eAAO;AAC/B,cAAQ,SAAS;AAAA,QACf,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL;AACE,iBAAO;AAAA,MACX;AAAA,IACF,GAAG,CAAC,MAAM,OAAO,CAAC;AAElB,WACE,4CAAC,eAAAC,MAAA,iCAAc,OAAd,EAAoB,KAAU,MAAM,WAClC,WACH;AAAA,EAEJ;AACF;AAEA,KAAK,cAAc;;;ACjCnB,IAAAC,gBAAmD;AA+B/C,IAAAC,sBAAA;AArBG,SAAS,SAAS,OAAuC;AAC9D,QAAM,EAAE,UAAU,eAAe,IAAI,IAAI;AACzC,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,MAAM;AACrC,WAAO,MAAM,QAAQ,MAAM,eAAe;AAAA,EAC5C,CAAC;AAED,+BAAU,MAAM;AACd,QAAI,MAAM,SAAS;AAAW;AAC9B,YAAQ,MAAM,IAAI;AAAA,EACpB,GAAG,CAAC,MAAM,IAAI,CAAC;AAEf,QAAM,UAAM,sBAAuB,IAAI;AAEvC,+BAAU,MAAM;AACd,QAAI,CAAC,IAAI;AAAS;AAClB,QAAI,QAAQ,MAAM,YAAY,OAC1B,GAAG,IAAI,QAAQ,YAAY,OAC3B;AAAA,EACN,GAAG,CAAC,cAAc,IAAI,CAAC;AAEvB,SACE,6CAAC,SAAI,WAAU,iBAAgB,KAC5B,UACH;AAEJ;;;ACnCA,IAAAC,iBAA2C;;;ACA3C,IAAAC,gBAAiE;;;ACAjE,yBAmCO;;;ADmEH,IAAAC,sBAAA;AA7EG,SAAS,WAAW,OAAyC;AAClE,QAAM,EAAE,UAAU,QAAQ,GAAG,eAAe,EAAE,IAAI;AAElD,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,MAAM,MAAM,QAAQ,MAAM,eAAe,CAAC;AAE3E,QAAM,mBAAe,uBAAQ,MAAM;AACjC,QAAI,QAAQ,KAAK,IAAI,GAAG,OAAO,YAAY;AAC3C,QAAI,MAAM,KAAK,IAAI,OAAO,OAAO,YAAY;AAC7C,QAAI,OAAO,gBAAgB,KAAK,MAAM,OAAO;AAC3C,YAAM,KAAK,IAAI,OAAO,MAAM,KAAK,IAAI,OAAO,YAAY,IAAI,CAAC;AAAA,IAC/D,WAAW,OAAO,eAAe,SAAS,QAAQ,GAAG;AACnD,cAAQ,KAAK,IAAI,GAAG,SAAS,OAAO,eAAe,MAAM;AAAA,IAC3D;AAEA,WAAO,MAAM,KAAK,EAAE,QAAQ,MAAM,QAAQ,EAAE,GAAG,CAAC,GAAG,MAAM,IAAI,KAAK;AAAA,EACpE,GAAG,CAAC,OAAO,MAAM,YAAY,CAAC;AAE9B,+BAAU,MAAM;AACd,yCAAW;AAAA,EACb,GAAG,CAAC,UAAU,IAAI,CAAC;AAEnB,+BAAU,MAAM;AACd,QAAI,MAAM,MAAM;AACd,cAAQ,MAAM,IAAI;AAAA,IACpB;AAAA,EACF,GAAG,CAAC,MAAM,IAAI,CAAC;AAEf,QAAM,WAAO,uBAA4B,MAAM;AAC7C,UAAM,IAAI,OAAO;AACjB,WAAO,IAAI,IAAI,SAAY;AAAA,EAC7B,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,WAAO,uBAA4B,MAAM;AAC7C,UAAM,IAAI,OAAO;AACjB,WAAO,IAAI,QAAQ,SAAY;AAAA,EACjC,GAAG,CAAC,OAAO,IAAI,CAAC;AAEhB,QAAM,kBAAc,2BAAY,MAAM;AACpC,YAAQ,QAAQ,IAAI;AAAA,EACtB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,kBAAc,2BAAY,MAAM;AACpC,YAAQ,QAAQ,IAAI;AAAA,EACtB,GAAG,CAAC,IAAI,CAAC;AAET,QAAM,iBAAa,uBAA4B,MAAM;AACnD,QAAI,CAAC,aAAa;AAAQ;AAC1B,WAAO,KAAK,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;AAAA,EACxC,GAAG,CAAC,YAAY,CAAC;AAEjB,QAAM,wBAAoB,2BAAY,MAAM;AAC1C,kBAAc,QAAQ,UAAU;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,iBAAa,uBAA4B,MAAM;AACnD,QAAI,CAAC,aAAa;AAAQ;AAC1B,UAAM,IAAI,aAAa,aAAa,SAAS,CAAC,IAAI;AAClD,QAAI,IAAI;AAAO;AACf,WAAO,KAAK,IAAI,OAAO,CAAC;AAAA,EAC1B,GAAG,CAAC,OAAO,YAAY,CAAC;AAExB,QAAM,wBAAoB,2BAAY,MAAM;AAC1C,kBAAc,QAAQ,UAAU;AAAA,EAClC,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,WAAW;AAAA,IACf,QAAQ;AAAA,IACR,OAAO;AAAA,EACT;AAEA,QAAM,kBAAmC;AAAA,IACvC,SAAS;AAAA,IACT,MAAM;AAAA,IACN,OAAO,EAAE,cAAc,MAAM;AAAA,EAC/B;AAEA,SACE,8CAAC,sBAAK,OAAM,UAAS,WAAU,mBAAkB,KAAI,KACnD;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC;AAAA,QACX,SAAS;AAAA,SACL,kBAHL;AAAA,QAKC,uDAAC,2DAAwB,SAAU;AAAA;AAAA,IACrC;AAAA,IACA,6CAAC,0DAAW,UAAU,CAAC,MAAM,SAAS,eAAiB,kBAAtD,EACC,uDAAC,uDAAoB,SAAU,IACjC;AAAA,IACA,6CAAC,sBAAK,KAAI,KACP,uBAAa,IAAI,CAAC,SAAS;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAW,eAAe,SAAS,OAAO,WAAW,EAAE;AAAA,UAEvD,SAAS,MAAM;AACb,oBAAQ,IAAI;AAAA,UACd;AAAA,UACA,MAAK;AAAA,UAEL,uDAAC,QAAK,SAAQ,QAAQ,gBAAK;AAAA;AAAA,QANtB;AAAA,MAOP;AAAA,IAEJ,CAAC,GACH;AAAA,IACA,6CAAC,0DAAW,UAAU,CAAC,MAAM,SAAS,eAAiB,kBAAtD,EACC,uDAAC,wDAAqB,SAAU,IAClC;AAAA,IACA;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,CAAC;AAAA,QACX,SAAS;AAAA,SACL,kBAHL;AAAA,QAKC,uDAAC,4DAAyB,SAAU;AAAA;AAAA,IACtC;AAAA,KACF;AAEJ;;;AE7IA,IAAAC,SAAuB;AAef,IAAAC,sBAAA;AAZD,IAAM,wBAA8B;AAAA,EACzC,CAAC,IAAsC,iBAAiB;AAAvD,iBAAE,UAAQ,eAJb,IAIG,IAA6B,kBAA7B,IAA6B,CAA3B;AACD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,OAAM;AAAA,SACF,QANL;AAAA,QAOC,KAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAM;AAAA;AAAA,QACR;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,sBAAsB,cAAc;;;ACxBpC,IAAAC,SAAuB;AAef,IAAAC,sBAAA;AAZD,IAAM,sBAA4B;AAAA,EACvC,CAAC,IAAsC,iBAAiB;AAAvD,iBAAE,UAAQ,eAJb,IAIG,IAA6B,kBAA7B,IAA6B,CAA3B;AACD,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,QAAO;AAAA,QACP,SAAQ;AAAA,QACR,OAAM;AAAA,QACN,OAAM;AAAA,SACF,QANL;AAAA,QAOC,KAAK;AAAA,QAEL;AAAA,UAAC;AAAA;AAAA,YACC,GAAE;AAAA,YACF,MAAM;AAAA;AAAA,QACR;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,oBAAoB,cAAc;;;ACxBlC,yBAIO;AACP,IAAAC,gBAAsD;AAoD1C,IAAAC,sBAAA;AArCL,SAAS,IACd,OACiB;AACjB,QAAM,EAAE,KAAK,YAAY,YAAY,IAAI;AACzC,QAAM,CAAC,MAAM,OAAO,QAAI,wBAAS,KAAK;AAEtC,QAAM,iBAAa,2BAAY,MAAM;AA1BvC;AA2BI,gBAAM,eAAN,+BAAmB,IAAI;AACvB,YAAQ,CAAC,SAAS,CAAC,IAAI;AAAA,EACzB,GAAG,CAAC,OAAO,IAAI,QAAQ,CAAC;AAExB,QAAM,mBAAe,uBAAQ,MAAM;AACjC,UAAM,UAAU,CAAC,YAAY;AAC7B,QAAI,YAAY;AACd,cAAQ,KAAK,YAAY;AAAA,IAC3B;AACA,QAAI,MAAM,YAAY;AACpB,cAAQ,KAAK,WAAW;AAAA,IAC1B;AACA,WAAO,QAAQ,KAAK,GAAG;AAAA,EACzB,GAAG,CAAC,YAAY,MAAM,UAAU,CAAC;AAEjC,SACE,8CAAC,SAAI,WAAW,cACd;AAAA;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QAEV,SAAS;AAAA,QACT,OAAO,EAAE,qBAAqB,YAAY;AAAA,QAC1C,MAAK;AAAA,QAEJ,cAAI,gBAAgB,EAAE,IAAI,CAAC,SAAS;AAnD7C;AAoDU,gBAAM,YAAW,UAAK,OAAO,UAAU,SAAtB,mBAA4B;AAC7C,gBAAM,mBACJ,UAAK,OAAO,UAAU,SAAtB,mBAA4B,UAAS,MAAM;AAE7C,iBACE;AAAA,YAAC;AAAA;AAAA,cACC,WAAU;AAAA,cAEV,OAAO;AAAA;AAAA,gBAEL,UAAU,WAAW,IAAI;AAAA,gBACzB;AAAA,cACF;AAAA,cAEC;AAAA,mDAAW,KAAK,OAAO,UAAU,MAAM,KAAK,WAAW,CAAC;AAAA,kBACxD,UAAK,OAAO,UAAU,SAAtB,mBAA4B,WAC3B;AAAA,kBAAC,KAAK,OAAO,UAAU,KAAK;AAAA,kBAA3B;AAAA,oBACC,MAAM,IAAI;AAAA,oBACV;AAAA,oBACA,WAAW;AAAA;AAAA,gBACb,IACE;AAAA;AAAA;AAAA,YAdC,KAAK;AAAA,UAeZ;AAAA,QAEJ,CAAC;AAAA;AAAA,MA9BI,MAAM,IAAI,EAAE;AAAA,IA+BnB;AAAA,IACC,aACC,6CAAC,YAAS,MACR,uDAAC,SAAI,WAAU,uBACb,uDAAC,cAAW,KAAU,GACxB,GACF,IACE;AAAA,OAzC6B,cAAc,IAAI,EAAE,EA0CvD;AAEJ;;;AV6BY,IAAAC,sBAAA;AAlEL,SAAS,YACd,OACiB;AACjB,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,eAAe;AAAA,EACjB,IAAI;AACJ,QAAM,eAAe;AACrB,QAAM,CAAC,YAAY,aAAa,QAAI,wBAA0B;AAAA,IAC5D,WAAW,aAAa;AAAA,IACxB,UAAU,YAAY;AAAA,EACxB,CAAC;AAED,QAAM,CAAC,SAAS,UAAU,QAAI,wBAAuB,CAAC,CAAC;AACvD,QAAM,EAAE,aAAa,iBAAiB,aAAa,QAAI,mCAAc;AAAA,IACnE,MAAM,QAAQ,CAAC;AAAA,IACf;AAAA,IACA,qBAAiB,qCAAgB;AAAA,IACjC,uBAAmB,uCAAkB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,IACjB,2BAAuB,2CAAsB;AAAA,IAC7C,oBAAoB;AAAA,EACtB,CAAC;AAED,QAAM,kBAAc,uBAAgB,MAAM;AACxC,WAAO,QACJ,IAAI,CAAC,QAAQ;AAzFpB;AA0FQ,WAAI,SAAI,SAAJ,mBAAU;AAAU,eAAO;AAC/B,aAAO,GAAG,IAAI,QAAQ,GAAG;AAAA,IAC3B,CAAC,EACA,KAAK,GAAG;AAAA,EACb,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,YAAY;AAE9B,QAAM,yBAAqB;AAAA,IACzB,CAAC,SAAiB;AAChB,mBAAa,OAAO,CAAC;AAAA,IACvB;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,qBAAiB;AAAA,IACrB,CAAC,cAAsB;AACrB,UAAI,WAAW;AACb,eACE;AAAA,UAAC;AAAA;AAAA,YACC,OAAM;AAAA,YACN,QAAO;AAAA,YACP,SAAQ;AAAA,YACR,GAAE;AAAA,YACF,OAAM;AAAA,YAEN,uDAAC,0BAAQ;AAAA;AAAA,QACX;AAAA,MAEJ;AACA,UAAI,cAAc,GAAG;AACnB,eACE,6CAAC,SAAI,WAAU,MACb,uDAAC,sBAAK,OAAM,UAAS,SAAQ,UAC1B,yBACC,6CAAC,QAAK,OAAM,QAAO,IAAG,KAAI,IAAG,KAAI,SAAQ,QAAO,+DAEhD,GAEJ,KAPsB,oBAQxB;AAAA,MAEJ;AACA,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,WAAW;AAAA,EACzB;AAEA,QAAM,gBAAY,uBAAQ,MAAM;AAC9B,QAAI,CAAC;AAAM,aAAO;AAClB,WAAO,KAAK,KAAK,KAAK,SAAS,QAAQ;AAAA,EACzC,GAAG,CAAC,MAAM,QAAQ,CAAC;AAEnB,SACE,8CAAC,SAAI,WAAU,gBAAe,OAAO,YACnC;AAAA,iDAAC,SAAI,WAAU,SACZ,0BAAgB,EAAE,IAAI,CAAC,gBACtB;AAAA,MAAC;AAAA;AAAA,QACC,WAAU;AAAA,QAEV,OAAO,EAAE,qBAAqB,YAAY;AAAA,QAEzC,sBAAY,QAAQ,IAAI,CAAC,WAAW;AAxJjD;AAyJc,gBAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,gBAAM,cAAc,OAAO,OAAO,YAAY;AAC9C,gBAAM,mBACJ,YAAO,OAAO,UAAU,SAAxB,mBAA8B,UAAS;AAEzC,iBACE,6CAAC,SAAI,WAAW,GAAG,cAAc,OAC/B;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,OAAO,OAAO,wBAAwB;AAAA,cAC/C,OAAO,WAAW,EAAE,QAAQ,UAAU,IAAI;AAAA,cAC1C,MAAK;AAAA,cAEL;AAAA,6DAAC,QAAK,SAAQ,QACX;AAAA,kBACC,OAAO,OAAO,UAAU;AAAA,kBACxB,OAAO,WAAW;AAAA,gBACpB,GACF;AAAA,gBACC,WACC;AAAA,kBAAC;AAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO,EAAE,YAAY,iBAAiB;AAAA,oBAEtC;AAAA;AAAA,wBAAC;AAAA;AAAA,0BACC,OACE,gBAAgB,QACZ,mBACA;AAAA;AAAA,sBAER;AAAA,sBACA;AAAA,wBAAC;AAAA;AAAA,0BACC,OACE,gBAAgB,SACZ,mBACA;AAAA;AAAA,sBAER;AAAA;AAAA;AAAA,gBACF,IACE;AAAA;AAAA;AAAA,UACN,KAjC2C,OAAO,EAkCpD;AAAA,QAEJ,CAAC;AAAA;AAAA,MA9CI,YAAY;AAAA,IA+CnB,CACD,GACH;AAAA,IACA,6CAAC,SAAI,WAAU,SAEZ,yBAAe,UAAU,KAAK,MAAM,KACnC,UAAU,KAAK,IAAI,CAAC,QAAQ;AAC1B,aACE;AAAA,QAAC;AAAA;AAAA,UACC;AAAA,UACA;AAAA,UACA;AAAA,UAEA;AAAA,UACA;AAAA;AAAA,QAFK,OAAO,IAAI,EAAE;AAAA,MAGpB;AAAA,IAEJ,CAAC,GACL;AAAA,IAEC,iBACC,6CAAC,sBAAK,SAAQ,OAAM,IAAG,KAAI,OAAM,QAC/B;AAAA,MAAC;AAAA;AAAA,QACC,OAAO;AAAA,QACP,UAAU;AAAA,QACV,MAAM,WAAW,YAAY;AAAA,QAC7B;AAAA;AAAA,IACF,GACF,IACE;AAAA,KACN;AAEJ;","names":["import_react_table","import_react","import_themes","import_themes","RadixText","import_react","import_jsx_runtime","import_themes","import_react","import_jsx_runtime","React","import_jsx_runtime","React","import_jsx_runtime","import_react","import_jsx_runtime","import_jsx_runtime"]}
@@ -17,6 +17,15 @@ interface ExpandTableProps<Datum extends RowData> {
17
17
  onRowClick?: OnRowClick<Datum>;
18
18
  rowStyle?: CSSProperties;
19
19
  tableStyle?: CSSProperties;
20
+ isLoading?: boolean;
21
+ /** pagination - 표시 유무 */
22
+ showPagination?: boolean;
23
+ /** pagination - 현재 선택된 페이지, 0부터 시작 */
24
+ pageIndex?: number;
25
+ /** pagination - 한 페이지에 표시될 컬럼 개수 */
26
+ pageSize?: number;
27
+ /** pagination - */
28
+ siblingCount?: number;
20
29
  }
21
30
  declare function ExpandTable<Datum extends RowData>(props: ExpandTableProps<Datum>): react__default.ReactNode;
22
31
 
@@ -17,6 +17,15 @@ interface ExpandTableProps<Datum extends RowData> {
17
17
  onRowClick?: OnRowClick<Datum>;
18
18
  rowStyle?: CSSProperties;
19
19
  tableStyle?: CSSProperties;
20
+ isLoading?: boolean;
21
+ /** pagination - 표시 유무 */
22
+ showPagination?: boolean;
23
+ /** pagination - 현재 선택된 페이지, 0부터 시작 */
24
+ pageIndex?: number;
25
+ /** pagination - 한 페이지에 표시될 컬럼 개수 */
26
+ pageSize?: number;
27
+ /** pagination - */
28
+ siblingCount?: number;
20
29
  }
21
30
  declare function ExpandTable<Datum extends RowData>(props: ExpandTableProps<Datum>): react__default.ReactNode;
22
31