@tipp/ui 0.1.11 → 0.1.13

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 (99) hide show
  1. package/dist/atoms/index.cjs +5 -0
  2. package/dist/atoms/index.cjs.map +1 -1
  3. package/dist/atoms/index.d.cts +1 -1
  4. package/dist/atoms/index.d.ts +1 -1
  5. package/dist/atoms/index.js +8 -4
  6. package/dist/atoms/spinner.cjs +31 -0
  7. package/dist/atoms/spinner.cjs.map +1 -0
  8. package/dist/atoms/spinner.d.cts +1 -0
  9. package/dist/atoms/spinner.d.ts +1 -0
  10. package/dist/atoms/spinner.js +8 -0
  11. package/dist/atoms/spinner.js.map +1 -0
  12. package/dist/chunk-2IRFKGI5.js +112 -0
  13. package/dist/chunk-2IRFKGI5.js.map +1 -0
  14. package/dist/chunk-6HBMWKLG.js +119 -0
  15. package/dist/chunk-6HBMWKLG.js.map +1 -0
  16. package/dist/chunk-7QY4LL2A.js +115 -0
  17. package/dist/chunk-7QY4LL2A.js.map +1 -0
  18. package/dist/chunk-ARZQWJYD.js +115 -0
  19. package/dist/chunk-ARZQWJYD.js.map +1 -0
  20. package/dist/chunk-B4IHDZPL.js +119 -0
  21. package/dist/chunk-B4IHDZPL.js.map +1 -0
  22. package/dist/chunk-DW2KGGKI.js +115 -0
  23. package/dist/chunk-DW2KGGKI.js.map +1 -0
  24. package/dist/chunk-EJQDTTTL.js +118 -0
  25. package/dist/chunk-EJQDTTTL.js.map +1 -0
  26. package/dist/chunk-F4Z7HULU.js +65 -0
  27. package/dist/chunk-F4Z7HULU.js.map +1 -0
  28. package/dist/chunk-FR2GDOU2.js +7 -0
  29. package/dist/chunk-FR2GDOU2.js.map +1 -0
  30. package/dist/chunk-FV53FTQU.js +70 -0
  31. package/dist/chunk-FV53FTQU.js.map +1 -0
  32. package/dist/chunk-HCDMKBMQ.js +115 -0
  33. package/dist/chunk-HCDMKBMQ.js.map +1 -0
  34. package/dist/chunk-HFEDE5MU.js +69 -0
  35. package/dist/chunk-HFEDE5MU.js.map +1 -0
  36. package/dist/chunk-HMRCGFVX.js +119 -0
  37. package/dist/chunk-HMRCGFVX.js.map +1 -0
  38. package/dist/chunk-JSIWFIDL.js +118 -0
  39. package/dist/chunk-JSIWFIDL.js.map +1 -0
  40. package/dist/chunk-KPWFKY3Q.js +69 -0
  41. package/dist/chunk-KPWFKY3Q.js.map +1 -0
  42. package/dist/chunk-L44RLKHJ.js +112 -0
  43. package/dist/chunk-L44RLKHJ.js.map +1 -0
  44. package/dist/chunk-MY5BVOG5.js +114 -0
  45. package/dist/chunk-MY5BVOG5.js.map +1 -0
  46. package/dist/chunk-N4ALMAOS.js +119 -0
  47. package/dist/chunk-N4ALMAOS.js.map +1 -0
  48. package/dist/chunk-ODS6FSYD.js +114 -0
  49. package/dist/chunk-ODS6FSYD.js.map +1 -0
  50. package/dist/chunk-PBPRWY2V.js +70 -0
  51. package/dist/chunk-PBPRWY2V.js.map +1 -0
  52. package/dist/chunk-PKN74SJ3.js +113 -0
  53. package/dist/chunk-PKN74SJ3.js.map +1 -0
  54. package/dist/chunk-SMZ6TVM2.js +115 -0
  55. package/dist/chunk-SMZ6TVM2.js.map +1 -0
  56. package/dist/chunk-SWAXMDXB.js +115 -0
  57. package/dist/chunk-SWAXMDXB.js.map +1 -0
  58. package/dist/chunk-TP3WCM5J.js +119 -0
  59. package/dist/chunk-TP3WCM5J.js.map +1 -0
  60. package/dist/chunk-U44WNKPE.js +119 -0
  61. package/dist/chunk-U44WNKPE.js.map +1 -0
  62. package/dist/chunk-UI3Z3O2G.js +118 -0
  63. package/dist/chunk-UI3Z3O2G.js.map +1 -0
  64. package/dist/chunk-VX3LCOU2.js +112 -0
  65. package/dist/chunk-VX3LCOU2.js.map +1 -0
  66. package/dist/chunk-XDLE7F7F.js +119 -0
  67. package/dist/chunk-XDLE7F7F.js.map +1 -0
  68. package/dist/chunk-XGZLODAO.js +113 -0
  69. package/dist/chunk-XGZLODAO.js.map +1 -0
  70. package/dist/chunk-XHADHIQI.js +65 -0
  71. package/dist/chunk-XHADHIQI.js.map +1 -0
  72. package/dist/chunk-YBV77323.js +123 -0
  73. package/dist/chunk-YBV77323.js.map +1 -0
  74. package/dist/chunk-YWE56T5C.js +118 -0
  75. package/dist/chunk-YWE56T5C.js.map +1 -0
  76. package/dist/chunk-ZRQNTEVV.js +123 -0
  77. package/dist/chunk-ZRQNTEVV.js.map +1 -0
  78. package/dist/index.cjs +42 -25
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.css +12 -3
  81. package/dist/index.d.cts +1 -1
  82. package/dist/index.d.ts +1 -1
  83. package/dist/index.js +13 -9
  84. package/dist/molecules/expand-table/index.cjs +36 -21
  85. package/dist/molecules/expand-table/index.cjs.map +1 -1
  86. package/dist/molecules/expand-table/index.js +5 -4
  87. package/dist/molecules/expand-table/row.cjs +12 -4
  88. package/dist/molecules/expand-table/row.cjs.map +1 -1
  89. package/dist/molecules/expand-table/row.d.cts +1 -0
  90. package/dist/molecules/expand-table/row.d.ts +1 -0
  91. package/dist/molecules/expand-table/row.js +4 -3
  92. package/dist/molecules/index.cjs +36 -21
  93. package/dist/molecules/index.cjs.map +1 -1
  94. package/dist/molecules/index.js +5 -4
  95. package/package.json +3 -3
  96. package/src/atoms/index.ts +1 -0
  97. package/src/atoms/spinner.tsx +1 -0
  98. package/src/molecules/expand-table/index.tsx +19 -10
  99. package/src/molecules/expand-table/row.tsx +10 -2
@@ -0,0 +1,123 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-KPWFKY3Q.js";
4
+ import {
5
+ Typo
6
+ } from "./chunk-5U2NU566.js";
7
+ import {
8
+ Flex
9
+ } from "./chunk-25HMMI7R.js";
10
+ import {
11
+ TriangleArrowDownIcon
12
+ } from "./chunk-BSTJBBEX.js";
13
+ import {
14
+ TriangleArrowUpIcon
15
+ } from "./chunk-NDUKDKGB.js";
16
+
17
+ // src/molecules/expand-table/index.tsx
18
+ import {
19
+ flexRender,
20
+ getCoreRowModel,
21
+ useReactTable,
22
+ getSortedRowModel,
23
+ createColumnHelper
24
+ } from "@tanstack/react-table";
25
+ import { useMemo, useState } from "react";
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+ function ExpandTable(props) {
28
+ const { data, columns, ExpandComp, placeholder, onRowClick } = props;
29
+ const [sorting, setSorting] = useState([]);
30
+ const { getRowModel, getHeaderGroups } = useReactTable({
31
+ data: data || [],
32
+ columns,
33
+ getCoreRowModel: getCoreRowModel(),
34
+ getSortedRowModel: getSortedRowModel(),
35
+ state: {
36
+ sorting
37
+ },
38
+ onSortingChange: setSorting
39
+ });
40
+ const gridColTemp = useMemo(() => {
41
+ return columns.map((col) => {
42
+ var _a;
43
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize)
44
+ return "auto";
45
+ return col.size;
46
+ }).join(" ");
47
+ }, [columns]);
48
+ const rowModels = getRowModel();
49
+ return /* @__PURE__ */ jsxs("div", { className: "expand-table", children: [
50
+ /* @__PURE__ */ jsx("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx("div", { className: "tr", children: headerGroup.headers.map((header) => {
51
+ var _a;
52
+ const sortable = header.column.getCanSort();
53
+ const sortedState = header.column.getIsSorted();
54
+ const autoSize = (_a = header.column.columnDef.meta) == null ? void 0 : _a.autoSize;
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ className: "th",
59
+ style: {
60
+ width: autoSize ? void 0 : header.getSize(),
61
+ flexGrow: autoSize ? 1 : void 0
62
+ },
63
+ children: /* @__PURE__ */ jsxs(
64
+ "button",
65
+ {
66
+ onClick: header.column.getToggleSortingHandler(),
67
+ style: sortable ? { cursor: "pointer" } : void 0,
68
+ type: "button",
69
+ children: [
70
+ /* @__PURE__ */ jsx(Typo, { variant: "body", children: flexRender(
71
+ header.column.columnDef.header,
72
+ header.getContext()
73
+ ) }),
74
+ sortable ? /* @__PURE__ */ jsxs(
75
+ Flex,
76
+ {
77
+ direction: "column",
78
+ style: { marginLeft: "var(--space-2)" },
79
+ children: [
80
+ /* @__PURE__ */ jsx(
81
+ TriangleArrowUpIcon,
82
+ {
83
+ color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ TriangleArrowDownIcon,
88
+ {
89
+ color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
90
+ }
91
+ )
92
+ ]
93
+ }
94
+ ) : null
95
+ ]
96
+ }
97
+ )
98
+ },
99
+ header.id
100
+ );
101
+ }) }, headerGroup.id)) }),
102
+ /* @__PURE__ */ jsxs("div", { className: "tbody", children: [
103
+ rowModels.rows.length === 0 && /* @__PURE__ */ jsx("div", { className: "tr", children: /* @__PURE__ */ jsx(Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ jsx(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
104
+ rowModels.rows.map((row) => {
105
+ return /* @__PURE__ */ jsx(
106
+ Row,
107
+ {
108
+ ExpandComp,
109
+ onRowClick,
110
+ row
111
+ },
112
+ `row_${row.id}`
113
+ );
114
+ })
115
+ ] })
116
+ ] });
117
+ }
118
+
119
+ export {
120
+ createColumnHelper,
121
+ ExpandTable
122
+ };
123
+ //# sourceMappingURL=chunk-YBV77323.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/index.tsx"],"sourcesContent":["import type { ColumnDef, SortingState, RowData } 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 };\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}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const { data, columns, ExpandComp, placeholder, onRowClick } = props;\n\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 'auto';\n return col.size;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n return (\n <div className=\"expand-table\">\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div className=\"tr\" key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const autoSize = header.column.columnDef.meta?.autoSize;\n\n return (\n <div\n className=\"th\"\n key={header.id}\n style={{\n width: autoSize ? undefined : header.getSize(),\n flexGrow: autoSize ? 1 : undefined,\n }}\n >\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 key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAgB,SAAS,gBAAgB;AA2ErB,cAOE,YAPF;AApDb,SAAS,YACd,OACiB;AACjB,QAAM,EAAE,MAAM,SAAS,YAAY,aAAa,WAAW,IAAI;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,CAAC,CAAC;AACvD,QAAM,EAAE,aAAa,gBAAgB,IAAI,cAAc;AAAA,IACrD,MAAM,QAAQ,CAAC;AAAA,IACf;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,kBAAkB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,EACnB,CAAC;AAED,QAAM,cAAc,QAAgB,MAAM;AACxC,WAAO,QACJ,IAAI,CAAC,QAAQ;AAnDpB;AAoDQ,WAAI,SAAI,SAAJ,mBAAU;AAAU,eAAO;AAC/B,aAAO,IAAI;AAAA,IACb,CAAC,EACA,KAAK,GAAG;AAAA,EACb,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,YAAY;AAE9B,SACE,qBAAC,SAAI,WAAU,gBACb;AAAA,wBAAC,SAAI,WAAU,SACZ,0BAAgB,EAAE,IAAI,CAAC,gBACtB,oBAAC,SAAI,WAAU,MACZ,sBAAY,QAAQ,IAAI,CAAC,WAAW;AAjEjD;AAkEc,YAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,YAAM,cAAc,OAAO,OAAO,YAAY;AAC9C,YAAM,YAAW,YAAO,OAAO,UAAU,SAAxB,mBAA8B;AAE/C,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UAEV,OAAO;AAAA,YACL,OAAO,WAAW,SAAY,OAAO,QAAQ;AAAA,YAC7C,UAAU,WAAW,IAAI;AAAA,UAC3B;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,OAAO,OAAO,wBAAwB;AAAA,cAC/C,OAAO,WAAW,EAAE,QAAQ,UAAU,IAAI;AAAA,cAC1C,MAAK;AAAA,cAEL;AAAA,oCAAC,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;AAAA;AAAA,QAtCK,OAAO;AAAA,MAuCd;AAAA,IAEJ,CAAC,KAlDsB,YAAY,EAmDrC,CACD,GACH;AAAA,IACA,qBAAC,SAAI,WAAU,SAEZ;AAAA,gBAAU,KAAK,WAAW,KACzB,oBAAC,SAAI,WAAU,MACb,8BAAC,QAAK,OAAM,UAAS,SAAQ,UAC1B,yBACC,oBAAC,QAAK,OAAM,QAAO,IAAG,KAAI,IAAG,KAAI,SAAQ,QAAO,+DAEhD,GAEJ,KAPsB,oBAQxB;AAAA,MAID,UAAU,KAAK,IAAI,CAAC,QAAQ;AAC3B,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YAEA;AAAA,YACA;AAAA;AAAA,UAFK,OAAO,IAAI,EAAE;AAAA,QAGpB;AAAA,MAEJ,CAAC;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,118 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-PBPRWY2V.js";
4
+ import {
5
+ Typo
6
+ } from "./chunk-5U2NU566.js";
7
+ import {
8
+ Flex
9
+ } from "./chunk-25HMMI7R.js";
10
+ import {
11
+ TriangleArrowDownIcon
12
+ } from "./chunk-BSTJBBEX.js";
13
+ import {
14
+ TriangleArrowUpIcon
15
+ } from "./chunk-NDUKDKGB.js";
16
+
17
+ // src/molecules/expand-table/index.tsx
18
+ import {
19
+ flexRender,
20
+ getCoreRowModel,
21
+ useReactTable,
22
+ getSortedRowModel,
23
+ createColumnHelper
24
+ } from "@tanstack/react-table";
25
+ import { useMemo, useState } from "react";
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+ function ExpandTable(props) {
28
+ const { data, columns, ExpandComp, placeholder, onRowClick } = props;
29
+ const [sorting, setSorting] = useState([]);
30
+ const { getRowModel, getHeaderGroups } = useReactTable({
31
+ data: data || [],
32
+ columns,
33
+ getCoreRowModel: getCoreRowModel(),
34
+ getSortedRowModel: getSortedRowModel(),
35
+ state: {
36
+ sorting
37
+ },
38
+ onSortingChange: setSorting
39
+ });
40
+ const gridColTemp = useMemo(() => {
41
+ return columns.map((col) => {
42
+ var _a;
43
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize)
44
+ return "auto";
45
+ return `${col.size || 150}px`;
46
+ }).join(" ");
47
+ }, [columns]);
48
+ const rowModels = getRowModel();
49
+ return /* @__PURE__ */ jsxs("div", { className: "expand-table", children: [
50
+ /* @__PURE__ */ jsx("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx(
51
+ "div",
52
+ {
53
+ className: "tr",
54
+ style: { gridTemplateColumns: gridColTemp },
55
+ children: headerGroup.headers.map((header) => {
56
+ const sortable = header.column.getCanSort();
57
+ const sortedState = header.column.getIsSorted();
58
+ return /* @__PURE__ */ jsx("div", { className: "th", children: /* @__PURE__ */ jsxs(
59
+ "button",
60
+ {
61
+ onClick: header.column.getToggleSortingHandler(),
62
+ style: sortable ? { cursor: "pointer" } : void 0,
63
+ type: "button",
64
+ children: [
65
+ /* @__PURE__ */ jsx(Typo, { variant: "body", children: flexRender(
66
+ header.column.columnDef.header,
67
+ header.getContext()
68
+ ) }),
69
+ sortable ? /* @__PURE__ */ jsxs(
70
+ Flex,
71
+ {
72
+ direction: "column",
73
+ style: { marginLeft: "var(--space-2)" },
74
+ children: [
75
+ /* @__PURE__ */ jsx(
76
+ TriangleArrowUpIcon,
77
+ {
78
+ color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx(
82
+ TriangleArrowDownIcon,
83
+ {
84
+ color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
85
+ }
86
+ )
87
+ ]
88
+ }
89
+ ) : null
90
+ ]
91
+ }
92
+ ) }, header.id);
93
+ })
94
+ },
95
+ headerGroup.id
96
+ )) }),
97
+ /* @__PURE__ */ jsxs("div", { className: "tbody", children: [
98
+ rowModels.rows.length === 0 && /* @__PURE__ */ jsx("div", { className: "tr", children: /* @__PURE__ */ jsx(Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ jsx(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
99
+ rowModels.rows.map((row) => {
100
+ return /* @__PURE__ */ jsx(
101
+ Row,
102
+ {
103
+ ExpandComp,
104
+ onRowClick,
105
+ row
106
+ },
107
+ `row_${row.id}`
108
+ );
109
+ })
110
+ ] })
111
+ ] });
112
+ }
113
+
114
+ export {
115
+ createColumnHelper,
116
+ ExpandTable
117
+ };
118
+ //# sourceMappingURL=chunk-YWE56T5C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/index.tsx"],"sourcesContent":["import type { ColumnDef, SortingState, RowData } 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 };\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}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const { data, columns, ExpandComp, placeholder, onRowClick } = props;\n\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 'auto';\n return `${col.size || 150}px`;\n })\n .join(' ');\n }, [columns]);\n\n const rowModels = getRowModel();\n\n return (\n <div className=\"expand-table\">\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\n return (\n <div className=\"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 key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAgB,SAAS,gBAAgB;AAuErB,cAOE,YAPF;AAhDb,SAAS,YACd,OACiB;AACjB,QAAM,EAAE,MAAM,SAAS,YAAY,aAAa,WAAW,IAAI;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,CAAC,CAAC;AACvD,QAAM,EAAE,aAAa,gBAAgB,IAAI,cAAc;AAAA,IACrD,MAAM,QAAQ,CAAC;AAAA,IACf;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,kBAAkB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,EACnB,CAAC;AAED,QAAM,cAAc,QAAgB,MAAM;AACxC,WAAO,QACJ,IAAI,CAAC,QAAQ;AAnDpB;AAoDQ,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,SACE,qBAAC,SAAI,WAAU,gBACb;AAAA,wBAAC,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;AACnC,gBAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,gBAAM,cAAc,OAAO,OAAO,YAAY;AAE9C,iBACE,oBAAC,SAAI,WAAU,MACb;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,OAAO,OAAO,wBAAwB;AAAA,cAC/C,OAAO,WAAW,EAAE,QAAQ,UAAU,IAAI;AAAA,cAC1C,MAAK;AAAA,cAEL;AAAA,oCAAC,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,KAjCuB,OAAO,EAkChC;AAAA,QAEJ,CAAC;AAAA;AAAA,MA5CI,YAAY;AAAA,IA6CnB,CACD,GACH;AAAA,IACA,qBAAC,SAAI,WAAU,SAEZ;AAAA,gBAAU,KAAK,WAAW,KACzB,oBAAC,SAAI,WAAU,MACb,8BAAC,QAAK,OAAM,UAAS,SAAQ,UAC1B,yBACC,oBAAC,QAAK,OAAM,QAAO,IAAG,KAAI,IAAG,KAAI,SAAQ,QAAO,+DAEhD,GAEJ,KAPsB,oBAQxB;AAAA,MAID,UAAU,KAAK,IAAI,CAAC,QAAQ;AAC3B,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YAEA;AAAA,YACA;AAAA;AAAA,UAFK,OAAO,IAAI,EAAE;AAAA,QAGpB;AAAA,MAEJ,CAAC;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
@@ -0,0 +1,123 @@
1
+ import {
2
+ Row
3
+ } from "./chunk-KPWFKY3Q.js";
4
+ import {
5
+ Typo
6
+ } from "./chunk-5U2NU566.js";
7
+ import {
8
+ Flex
9
+ } from "./chunk-25HMMI7R.js";
10
+ import {
11
+ TriangleArrowDownIcon
12
+ } from "./chunk-BSTJBBEX.js";
13
+ import {
14
+ TriangleArrowUpIcon
15
+ } from "./chunk-NDUKDKGB.js";
16
+
17
+ // src/molecules/expand-table/index.tsx
18
+ import {
19
+ flexRender,
20
+ getCoreRowModel,
21
+ useReactTable,
22
+ getSortedRowModel,
23
+ createColumnHelper
24
+ } from "@tanstack/react-table";
25
+ import { useMemo, useState } from "react";
26
+ import { jsx, jsxs } from "react/jsx-runtime";
27
+ function ExpandTable(props) {
28
+ const { data, columns, ExpandComp, placeholder, onRowClick } = props;
29
+ const [sorting, setSorting] = useState([]);
30
+ const { getRowModel, getHeaderGroups } = useReactTable({
31
+ data: data || [],
32
+ columns,
33
+ getCoreRowModel: getCoreRowModel(),
34
+ getSortedRowModel: getSortedRowModel(),
35
+ state: {
36
+ sorting
37
+ },
38
+ onSortingChange: setSorting
39
+ });
40
+ const gridTtemp = useMemo(() => {
41
+ columns.map((col) => {
42
+ var _a;
43
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize)
44
+ return "auto";
45
+ return col.size;
46
+ }).join();
47
+ }, [columns]);
48
+ const rowModels = getRowModel();
49
+ return /* @__PURE__ */ jsxs("div", { className: "expand-table", children: [
50
+ /* @__PURE__ */ jsx("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx("div", { className: "tr", children: headerGroup.headers.map((header) => {
51
+ var _a;
52
+ const sortable = header.column.getCanSort();
53
+ const sortedState = header.column.getIsSorted();
54
+ const autoSize = (_a = header.column.columnDef.meta) == null ? void 0 : _a.autoSize;
55
+ return /* @__PURE__ */ jsx(
56
+ "div",
57
+ {
58
+ className: "th",
59
+ style: {
60
+ width: autoSize ? void 0 : header.getSize(),
61
+ flexGrow: autoSize ? 1 : void 0
62
+ },
63
+ children: /* @__PURE__ */ jsxs(
64
+ "button",
65
+ {
66
+ onClick: header.column.getToggleSortingHandler(),
67
+ style: sortable ? { cursor: "pointer" } : void 0,
68
+ type: "button",
69
+ children: [
70
+ /* @__PURE__ */ jsx(Typo, { variant: "body", children: flexRender(
71
+ header.column.columnDef.header,
72
+ header.getContext()
73
+ ) }),
74
+ sortable ? /* @__PURE__ */ jsxs(
75
+ Flex,
76
+ {
77
+ direction: "column",
78
+ style: { marginLeft: "var(--space-2)" },
79
+ children: [
80
+ /* @__PURE__ */ jsx(
81
+ TriangleArrowUpIcon,
82
+ {
83
+ color: sortedState === "asc" ? "var(--iris-10)" : "var(--iris-6)"
84
+ }
85
+ ),
86
+ /* @__PURE__ */ jsx(
87
+ TriangleArrowDownIcon,
88
+ {
89
+ color: sortedState === "desc" ? "var(--iris-10)" : "var(--iris-6)"
90
+ }
91
+ )
92
+ ]
93
+ }
94
+ ) : null
95
+ ]
96
+ }
97
+ )
98
+ },
99
+ header.id
100
+ );
101
+ }) }, headerGroup.id)) }),
102
+ /* @__PURE__ */ jsxs("div", { className: "tbody", children: [
103
+ rowModels.rows.length === 0 && /* @__PURE__ */ jsx("div", { className: "tr", children: /* @__PURE__ */ jsx(Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ jsx(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
104
+ rowModels.rows.map((row) => {
105
+ return /* @__PURE__ */ jsx(
106
+ Row,
107
+ {
108
+ ExpandComp,
109
+ onRowClick,
110
+ row
111
+ },
112
+ `row_${row.id}`
113
+ );
114
+ })
115
+ ] })
116
+ ] });
117
+ }
118
+
119
+ export {
120
+ createColumnHelper,
121
+ ExpandTable
122
+ };
123
+ //# sourceMappingURL=chunk-ZRQNTEVV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/molecules/expand-table/index.tsx"],"sourcesContent":["import type { ColumnDef, SortingState, RowData } 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 };\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}\n\nexport function ExpandTable<Datum extends RowData>(\n props: ExpandTableProps<Datum>\n): React.ReactNode {\n const { data, columns, ExpandComp, placeholder, onRowClick } = props;\n\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 gridTtemp = useMemo<string>(() => {\n columns\n .map((col) => {\n if (col.meta?.autoSize) return 'auto';\n return col.size;\n })\n .join();\n }, [columns]);\n\n const rowModels = getRowModel();\n\n return (\n <div className=\"expand-table\">\n <div className=\"thead\">\n {getHeaderGroups().map((headerGroup) => (\n <div className=\"tr\" key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const sortable = header.column.getCanSort();\n const sortedState = header.column.getIsSorted();\n const autoSize = header.column.columnDef.meta?.autoSize;\n\n return (\n <div\n className=\"th\"\n key={header.id}\n style={{\n width: autoSize ? undefined : header.getSize(),\n flexGrow: autoSize ? 1 : undefined,\n }}\n >\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 key={`row_${row.id}`}\n onRowClick={onRowClick}\n row={row}\n />\n );\n })}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAgB,SAAS,gBAAgB;AA2ErB,cAOE,YAPF;AApDb,SAAS,YACd,OACiB;AACjB,QAAM,EAAE,MAAM,SAAS,YAAY,aAAa,WAAW,IAAI;AAE/D,QAAM,CAAC,SAAS,UAAU,IAAI,SAAuB,CAAC,CAAC;AACvD,QAAM,EAAE,aAAa,gBAAgB,IAAI,cAAc;AAAA,IACrD,MAAM,QAAQ,CAAC;AAAA,IACf;AAAA,IACA,iBAAiB,gBAAgB;AAAA,IACjC,mBAAmB,kBAAkB;AAAA,IACrC,OAAO;AAAA,MACL;AAAA,IACF;AAAA,IACA,iBAAiB;AAAA,EACnB,CAAC;AAED,QAAM,YAAY,QAAgB,MAAM;AACtC,YACG,IAAI,CAAC,QAAQ;AAnDpB;AAoDQ,WAAI,SAAI,SAAJ,mBAAU;AAAU,eAAO;AAC/B,aAAO,IAAI;AAAA,IACb,CAAC,EACA,KAAK;AAAA,EACV,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,YAAY,YAAY;AAE9B,SACE,qBAAC,SAAI,WAAU,gBACb;AAAA,wBAAC,SAAI,WAAU,SACZ,0BAAgB,EAAE,IAAI,CAAC,gBACtB,oBAAC,SAAI,WAAU,MACZ,sBAAY,QAAQ,IAAI,CAAC,WAAW;AAjEjD;AAkEc,YAAM,WAAW,OAAO,OAAO,WAAW;AAC1C,YAAM,cAAc,OAAO,OAAO,YAAY;AAC9C,YAAM,YAAW,YAAO,OAAO,UAAU,SAAxB,mBAA8B;AAE/C,aACE;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UAEV,OAAO;AAAA,YACL,OAAO,WAAW,SAAY,OAAO,QAAQ;AAAA,YAC7C,UAAU,WAAW,IAAI;AAAA,UAC3B;AAAA,UAEA;AAAA,YAAC;AAAA;AAAA,cACC,SAAS,OAAO,OAAO,wBAAwB;AAAA,cAC/C,OAAO,WAAW,EAAE,QAAQ,UAAU,IAAI;AAAA,cAC1C,MAAK;AAAA,cAEL;AAAA,oCAAC,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;AAAA;AAAA,QAtCK,OAAO;AAAA,MAuCd;AAAA,IAEJ,CAAC,KAlDsB,YAAY,EAmDrC,CACD,GACH;AAAA,IACA,qBAAC,SAAI,WAAU,SAEZ;AAAA,gBAAU,KAAK,WAAW,KACzB,oBAAC,SAAI,WAAU,MACb,8BAAC,QAAK,OAAM,UAAS,SAAQ,UAC1B,yBACC,oBAAC,QAAK,OAAM,QAAO,IAAG,KAAI,IAAG,KAAI,SAAQ,QAAO,+DAEhD,GAEJ,KAPsB,oBAQxB;AAAA,MAID,UAAU,KAAK,IAAI,CAAC,QAAQ;AAC3B,eACE;AAAA,UAAC;AAAA;AAAA,YACC;AAAA,YAEA;AAAA,YACA;AAAA;AAAA,UAFK,OAAO,IAAI,EAAE;AAAA,QAGpB;AAAA,MAEJ,CAAC;AAAA,OACH;AAAA,KACF;AAEJ;","names":[]}
package/dist/index.cjs CHANGED
@@ -110,6 +110,7 @@ __export(src_exports, {
110
110
  Select: () => import_themes38.Select,
111
111
  Separator: () => import_themes39.Separator,
112
112
  Skeleton: () => import_themes40.Skeleton,
113
+ Spinner: () => import_themes49.Spinner,
113
114
  Strong: () => import_themes41.Strong,
114
115
  Switch: () => import_themes42.Switch,
115
116
  TabNav: () => import_themes43.TabNav,
@@ -121,7 +122,7 @@ __export(src_exports, {
121
122
  Typo: () => Typo,
122
123
  createColumnHelper: () => import_react_table2.createColumnHelper,
123
124
  uiProps: () => uiProps,
124
- useThemeContext: () => import_themes50.useThemeContext
125
+ useThemeContext: () => import_themes51.useThemeContext
125
126
  });
126
127
  module.exports = __toCommonJS(src_exports);
127
128
 
@@ -478,6 +479,9 @@ function Collapse(props) {
478
479
  return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "collapse", ref, children });
479
480
  }
480
481
 
482
+ // src/atoms/spinner.tsx
483
+ var import_themes49 = require("@radix-ui/themes");
484
+
481
485
  // src/molecules/expand-table/index.tsx
482
486
  var import_react_table2 = require("@tanstack/react-table");
483
487
  var import_react12 = require("react");
@@ -545,7 +549,7 @@ var import_react_table = require("@tanstack/react-table");
545
549
  var import_react11 = require("react");
546
550
  var import_jsx_runtime13 = require("react/jsx-runtime");
547
551
  function Row(props) {
548
- const { row, ExpandComp } = props;
552
+ const { row, ExpandComp, gridColTemp } = props;
549
553
  const [open, setOpen] = (0, import_react11.useState)(false);
550
554
  const onClickRow = (0, import_react11.useCallback)(() => {
551
555
  var _a;
@@ -562,17 +566,22 @@ function Row(props) {
562
566
  {
563
567
  className: "tr",
564
568
  onClick: onClickRow,
569
+ style: { gridTemplateColumns: gridColTemp },
565
570
  type: "button",
566
571
  children: row.getVisibleCells().map((cell) => {
567
- var _a;
572
+ var _a, _b;
573
+ const autoSize = (_a = cell.column.columnDef.meta) == null ? void 0 : _a.autoSize;
568
574
  return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
569
575
  "div",
570
576
  {
571
577
  className: "td",
572
- style: { width: cell.column.getSize() },
578
+ style: {
579
+ minWidth: autoSize ? void 0 : cell.column.getSize(),
580
+ flexGrow: autoSize ? 1 : void 0
581
+ },
573
582
  children: [
574
583
  (0, import_react_table.flexRender)(cell.column.columnDef.cell, cell.getContext()),
575
- ((_a = cell.column.columnDef.meta) == null ? void 0 : _a.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
584
+ ((_b = cell.column.columnDef.meta) == null ? void 0 : _b.OpenBtn) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
576
585
  cell.column.columnDef.meta.OpenBtn,
577
586
  {
578
587
  data: row.original,
@@ -610,19 +619,25 @@ function ExpandTable(props) {
610
619
  },
611
620
  onSortingChange: setSorting
612
621
  });
622
+ const gridColTemp = (0, import_react12.useMemo)(() => {
623
+ return columns.map((col) => {
624
+ var _a;
625
+ if ((_a = col.meta) == null ? void 0 : _a.autoSize)
626
+ return "1fr";
627
+ return `${col.size || 150}px`;
628
+ }).join(" ");
629
+ }, [columns]);
613
630
  const rowModels = getRowModel();
614
631
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "expand-table", children: [
615
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "tr", children: headerGroup.headers.map((header) => {
616
- const sortable = header.column.getCanSort();
617
- const sortedState = header.column.getIsSorted();
618
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
619
- "div",
620
- {
621
- className: "th",
622
- style: {
623
- width: header.getSize()
624
- },
625
- children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
632
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "thead", children: getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
633
+ "div",
634
+ {
635
+ className: "tr",
636
+ style: { gridTemplateColumns: gridColTemp },
637
+ children: headerGroup.headers.map((header) => {
638
+ const sortable = header.column.getCanSort();
639
+ const sortedState = header.column.getIsSorted();
640
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "th", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
626
641
  "button",
627
642
  {
628
643
  onClick: header.column.getToggleSortingHandler(),
@@ -656,18 +671,19 @@ function ExpandTable(props) {
656
671
  ) : null
657
672
  ]
658
673
  }
659
- )
660
- },
661
- header.id
662
- );
663
- }) }, headerGroup.id)) }),
674
+ ) }, header.id);
675
+ })
676
+ },
677
+ headerGroup.id
678
+ )) }),
664
679
  /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "tbody", children: [
665
- rowModels.rows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_themes19.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Typo, { color: "gray", mb: "6", mt: "6", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
680
+ rowModels.rows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "tr", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_themes19.Flex, { align: "center", justify: "center", children: placeholder || /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Typo, { color: "gray", mb: "6", mt: "6", variant: "body", children: "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4" }) }) }, "expand_placeholder"),
666
681
  rowModels.rows.map((row) => {
667
682
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
668
683
  Row,
669
684
  {
670
685
  ExpandComp,
686
+ gridColTemp,
671
687
  onRowClick,
672
688
  row
673
689
  },
@@ -679,14 +695,14 @@ function ExpandTable(props) {
679
695
  }
680
696
 
681
697
  // src/theme/theme-provider.tsx
682
- var import_themes49 = require("@radix-ui/themes");
698
+ var import_themes50 = require("@radix-ui/themes");
683
699
  var import_jsx_runtime15 = require("react/jsx-runtime");
684
700
  function ThemeProvider(props) {
685
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_themes49.Theme, __spreadValues({ accentColor: "iris", radius: "large" }, props));
701
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_themes50.Theme, __spreadValues({ accentColor: "iris", radius: "large" }, props));
686
702
  }
687
703
 
688
704
  // src/theme/use-theme.tsx
689
- var import_themes50 = require("@radix-ui/themes");
705
+ var import_themes51 = require("@radix-ui/themes");
690
706
 
691
707
  // src/ui-props/index.ts
692
708
  var uiProps = __toESM(require("@radix-ui/themes/dist/cjs/props/index.js"), 1);
@@ -746,6 +762,7 @@ var import_react_icons = require("@radix-ui/react-icons");
746
762
  Select,
747
763
  Separator,
748
764
  Skeleton,
765
+ Spinner,
749
766
  Strong,
750
767
  Switch,
751
768
  TabNav,