@potenlab/ui 0.2.1 → 0.2.2
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.
- package/dist/{chunk-7XPQQR3Z.cjs → chunk-6QN6OSP3.cjs} +50 -50
- package/dist/{chunk-7XPQQR3Z.cjs.map → chunk-6QN6OSP3.cjs.map} +1 -1
- package/dist/{chunk-2W3RBVMM.js → chunk-7AJBGZPR.js} +24 -4
- package/dist/chunk-7AJBGZPR.js.map +1 -0
- package/dist/{chunk-IIMC6ODV.js → chunk-DEZVWPNH.js} +3 -3
- package/dist/{chunk-IIMC6ODV.js.map → chunk-DEZVWPNH.js.map} +1 -1
- package/dist/{chunk-O4BML5KD.cjs → chunk-ECTM5YZQ.cjs} +44 -4
- package/dist/chunk-ECTM5YZQ.cjs.map +1 -0
- package/dist/{chunk-CN4BR5A5.cjs → chunk-X2QE3MBA.cjs} +9 -9
- package/dist/{chunk-CN4BR5A5.cjs.map → chunk-X2QE3MBA.cjs.map} +1 -1
- package/dist/{chunk-VMWIQIIN.js → chunk-X3P3VCSD.js} +3 -3
- package/dist/{chunk-VMWIQIIN.js.map → chunk-X3P3VCSD.js.map} +1 -1
- package/dist/components/common/index.cjs +13 -13
- package/dist/components/common/index.js +2 -2
- package/dist/components/ui/index.cjs +125 -125
- package/dist/components/ui/index.d.cts +1 -1
- package/dist/components/ui/index.d.ts +1 -1
- package/dist/components/ui/index.js +2 -2
- package/dist/index.cjs +137 -137
- package/dist/index.js +3 -3
- package/package.json +1 -1
- package/dist/chunk-2W3RBVMM.js.map +0 -1
- package/dist/chunk-O4BML5KD.cjs.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkECTM5YZQ_cjs = require('./chunk-ECTM5YZQ.cjs');
|
|
4
4
|
var chunkYSNZIYC2_cjs = require('./chunk-YSNZIYC2.cjs');
|
|
5
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
6
6
|
var React3 = require('react');
|
|
@@ -30,17 +30,17 @@ var React3__namespace = /*#__PURE__*/_interopNamespace(React3);
|
|
|
30
30
|
function FormField({ id, label, type, value, options, onChange }) {
|
|
31
31
|
if (type === "select") {
|
|
32
32
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
33
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
34
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
35
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
36
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
33
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Label, { htmlFor: id, children: label }),
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.Select, { value, onValueChange: onChange, children: [
|
|
35
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectTrigger, { id, className: "h-[52px] pr-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectValue, { placeholder: label }) }),
|
|
36
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectContent, { children: options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectItem, { value: option, children: option }, option)) })
|
|
37
37
|
] })
|
|
38
38
|
] });
|
|
39
39
|
}
|
|
40
40
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col", children: [
|
|
41
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
41
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Label, { htmlFor: id, children: label }),
|
|
42
42
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
43
|
-
|
|
43
|
+
chunkECTM5YZQ_cjs.Input,
|
|
44
44
|
{
|
|
45
45
|
id,
|
|
46
46
|
className: "h-[52px]",
|
|
@@ -60,7 +60,7 @@ function LabeledSwitch({ id, label, checked, onCheckedChange }) {
|
|
|
60
60
|
children: label
|
|
61
61
|
}
|
|
62
62
|
),
|
|
63
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Switch, { id, checked, onCheckedChange })
|
|
64
64
|
] });
|
|
65
65
|
}
|
|
66
66
|
function PageHeader({
|
|
@@ -78,7 +78,7 @@ function PageHeader({
|
|
|
78
78
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3", children: [
|
|
79
79
|
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: "font-pretendard text-[32px] font-semibold text-black", children: title }),
|
|
80
80
|
badgeCount !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(
|
|
81
|
-
|
|
81
|
+
chunkECTM5YZQ_cjs.Badge,
|
|
82
82
|
{
|
|
83
83
|
variant: "green",
|
|
84
84
|
"aria-label": `Total: ${chunkYSNZIYC2_cjs.formatNumber(badgeCount)}${badgeSuffix}`,
|
|
@@ -91,12 +91,12 @@ function PageHeader({
|
|
|
91
91
|
] }),
|
|
92
92
|
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "font-pretendard text-[18px] font-medium text-subtitle mt-1", children: subtitle })
|
|
93
93
|
] }),
|
|
94
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.Button, { variant: "primary", onClick: onAction, children: [
|
|
95
95
|
ActionIcon && /* @__PURE__ */ jsxRuntime.jsx(ActionIcon, { className: "size-5" }),
|
|
96
96
|
actionLabel
|
|
97
97
|
] })
|
|
98
98
|
] }),
|
|
99
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
99
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Separator, { className: "my-6" })
|
|
100
100
|
] });
|
|
101
101
|
}
|
|
102
102
|
function SearchBar({
|
|
@@ -107,7 +107,7 @@ function SearchBar({
|
|
|
107
107
|
className
|
|
108
108
|
}) {
|
|
109
109
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
110
|
-
|
|
110
|
+
chunkECTM5YZQ_cjs.Input,
|
|
111
111
|
{
|
|
112
112
|
className: chunkYSNZIYC2_cjs.cn("h-12 rounded-md", className),
|
|
113
113
|
placeholder,
|
|
@@ -174,7 +174,7 @@ function PaginationControls({
|
|
|
174
174
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkYSNZIYC2_cjs.cn("flex items-center justify-between", className), children: [
|
|
175
175
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
176
176
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
177
|
-
|
|
177
|
+
chunkECTM5YZQ_cjs.Button,
|
|
178
178
|
{
|
|
179
179
|
variant: "pagination",
|
|
180
180
|
size: "pagination",
|
|
@@ -185,7 +185,7 @@ function PaginationControls({
|
|
|
185
185
|
}
|
|
186
186
|
),
|
|
187
187
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
188
|
-
|
|
188
|
+
chunkECTM5YZQ_cjs.Button,
|
|
189
189
|
{
|
|
190
190
|
variant: "pagination",
|
|
191
191
|
size: "pagination",
|
|
@@ -196,7 +196,7 @@ function PaginationControls({
|
|
|
196
196
|
}
|
|
197
197
|
),
|
|
198
198
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
199
|
-
|
|
199
|
+
chunkECTM5YZQ_cjs.Button,
|
|
200
200
|
{
|
|
201
201
|
variant: "pagination",
|
|
202
202
|
size: "pagination",
|
|
@@ -207,7 +207,7 @@ function PaginationControls({
|
|
|
207
207
|
}
|
|
208
208
|
),
|
|
209
209
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
210
|
-
|
|
210
|
+
chunkECTM5YZQ_cjs.Button,
|
|
211
211
|
{
|
|
212
212
|
variant: "pagination",
|
|
213
213
|
size: "pagination",
|
|
@@ -234,7 +234,7 @@ function PaginationControls({
|
|
|
234
234
|
] }),
|
|
235
235
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
236
236
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
237
|
-
|
|
237
|
+
chunkECTM5YZQ_cjs.Input,
|
|
238
238
|
{
|
|
239
239
|
className: "w-[100px] h-12",
|
|
240
240
|
placeholder: pageJumpPlaceholder,
|
|
@@ -245,7 +245,7 @@ function PaginationControls({
|
|
|
245
245
|
}
|
|
246
246
|
),
|
|
247
247
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
248
|
-
|
|
248
|
+
chunkECTM5YZQ_cjs.Button,
|
|
249
249
|
{
|
|
250
250
|
variant: "secondary",
|
|
251
251
|
size: "secondary",
|
|
@@ -254,22 +254,22 @@ function PaginationControls({
|
|
|
254
254
|
}
|
|
255
255
|
),
|
|
256
256
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
257
|
-
|
|
257
|
+
chunkECTM5YZQ_cjs.Select,
|
|
258
258
|
{
|
|
259
259
|
value: String(itemsPerPage),
|
|
260
260
|
onValueChange: handleItemsPerPageChange,
|
|
261
261
|
children: [
|
|
262
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
263
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
264
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
262
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectTrigger, { className: "w-[96px] h-12", "aria-label": itemsPerPageLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectValue, {}) }),
|
|
263
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectContent, { children: [
|
|
264
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectItem, { value: "10", children: [
|
|
265
265
|
"10",
|
|
266
266
|
itemSuffix
|
|
267
267
|
] }),
|
|
268
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
268
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectItem, { value: "20", children: [
|
|
269
269
|
"20",
|
|
270
270
|
itemSuffix
|
|
271
271
|
] }),
|
|
272
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
272
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectItem, { value: "50", children: [
|
|
273
273
|
"50",
|
|
274
274
|
itemSuffix
|
|
275
275
|
] })
|
|
@@ -288,13 +288,13 @@ function TabNavigation({
|
|
|
288
288
|
className
|
|
289
289
|
}) {
|
|
290
290
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
291
|
-
|
|
291
|
+
chunkECTM5YZQ_cjs.Tabs,
|
|
292
292
|
{
|
|
293
293
|
defaultValue,
|
|
294
294
|
value,
|
|
295
295
|
onValueChange: onTabChange,
|
|
296
296
|
className: chunkYSNZIYC2_cjs.cn(className),
|
|
297
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
297
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TabsList, { children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TabsTrigger, { value: tab.value, disabled: tab.disabled, children: tab.label }, tab.value)) })
|
|
298
298
|
}
|
|
299
299
|
);
|
|
300
300
|
}
|
|
@@ -325,7 +325,7 @@ function DataTablePagination({
|
|
|
325
325
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
326
326
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
327
327
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
328
|
-
|
|
328
|
+
chunkECTM5YZQ_cjs.Button,
|
|
329
329
|
{
|
|
330
330
|
variant: "pagination",
|
|
331
331
|
size: "pagination",
|
|
@@ -336,7 +336,7 @@ function DataTablePagination({
|
|
|
336
336
|
}
|
|
337
337
|
),
|
|
338
338
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
339
|
-
|
|
339
|
+
chunkECTM5YZQ_cjs.Button,
|
|
340
340
|
{
|
|
341
341
|
variant: "pagination",
|
|
342
342
|
size: "pagination",
|
|
@@ -347,7 +347,7 @@ function DataTablePagination({
|
|
|
347
347
|
}
|
|
348
348
|
),
|
|
349
349
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
350
|
-
|
|
350
|
+
chunkECTM5YZQ_cjs.Button,
|
|
351
351
|
{
|
|
352
352
|
variant: "pagination",
|
|
353
353
|
size: "pagination",
|
|
@@ -358,7 +358,7 @@ function DataTablePagination({
|
|
|
358
358
|
}
|
|
359
359
|
),
|
|
360
360
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
361
|
-
|
|
361
|
+
chunkECTM5YZQ_cjs.Button,
|
|
362
362
|
{
|
|
363
363
|
variant: "pagination",
|
|
364
364
|
size: "pagination",
|
|
@@ -378,7 +378,7 @@ function DataTablePagination({
|
|
|
378
378
|
] }),
|
|
379
379
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
380
380
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
381
|
-
|
|
381
|
+
chunkECTM5YZQ_cjs.Input,
|
|
382
382
|
{
|
|
383
383
|
className: "w-[100px] h-12",
|
|
384
384
|
placeholder: pageJumpPlaceholder,
|
|
@@ -388,15 +388,15 @@ function DataTablePagination({
|
|
|
388
388
|
"aria-label": pageJumpPlaceholder
|
|
389
389
|
}
|
|
390
390
|
),
|
|
391
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
391
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Button, { variant: "secondary", size: "secondary", onClick: handlePageJump, children: pageJumpButton }),
|
|
392
392
|
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
393
|
-
|
|
393
|
+
chunkECTM5YZQ_cjs.Select,
|
|
394
394
|
{
|
|
395
395
|
value: String(table.getState().pagination.pageSize),
|
|
396
396
|
onValueChange: (value) => table.setPageSize(Number(value)),
|
|
397
397
|
children: [
|
|
398
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
399
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
398
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectTrigger, { className: "w-[96px] h-12", "aria-label": itemsPerPageLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectValue, {}) }),
|
|
399
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.SelectContent, { children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectItem, { value: String(size), children: [
|
|
400
400
|
size,
|
|
401
401
|
itemSuffix
|
|
402
402
|
] }, size)) })
|
|
@@ -462,13 +462,13 @@ function DataTable({
|
|
|
462
462
|
manualPagination
|
|
463
463
|
});
|
|
464
464
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-4", children: [
|
|
465
|
-
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
466
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
467
|
-
|
|
465
|
+
/* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.Table, { children: [
|
|
466
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
467
|
+
chunkECTM5YZQ_cjs.TableRow,
|
|
468
468
|
{
|
|
469
469
|
className: "hover:bg-table-header cursor-default",
|
|
470
470
|
children: headerGroup.headers.map((header) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
471
|
-
|
|
471
|
+
chunkECTM5YZQ_cjs.TableHead,
|
|
472
472
|
{
|
|
473
473
|
className: chunkYSNZIYC2_cjs.cn(
|
|
474
474
|
header.column.columnDef.meta?.headerClassName ?? header.column.columnDef.meta?.className
|
|
@@ -483,8 +483,8 @@ function DataTable({
|
|
|
483
483
|
},
|
|
484
484
|
headerGroup.id
|
|
485
485
|
)) }),
|
|
486
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
487
|
-
|
|
486
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
487
|
+
chunkECTM5YZQ_cjs.TableRow,
|
|
488
488
|
{
|
|
489
489
|
"data-state": row.getIsSelected() && "selected",
|
|
490
490
|
onClick: onRowClick ? () => onRowClick(row.original) : void 0,
|
|
@@ -494,7 +494,7 @@ function DataTable({
|
|
|
494
494
|
tabIndex: onRowClick ? 0 : void 0,
|
|
495
495
|
role: onRowClick ? "link" : void 0,
|
|
496
496
|
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
497
|
-
|
|
497
|
+
chunkECTM5YZQ_cjs.TableCell,
|
|
498
498
|
{
|
|
499
499
|
className: chunkYSNZIYC2_cjs.cn(cell.column.columnDef.meta?.className),
|
|
500
500
|
children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())
|
|
@@ -503,7 +503,7 @@ function DataTable({
|
|
|
503
503
|
))
|
|
504
504
|
},
|
|
505
505
|
row.id
|
|
506
|
-
)) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
506
|
+
)) : /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TableRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.TableCell, { colSpan: columns.length, className: "h-24 text-center", children: emptyMessage }) }) })
|
|
507
507
|
] }),
|
|
508
508
|
enablePagination && /* @__PURE__ */ jsxRuntime.jsx(DataTablePagination, { table, pageSizeOptions })
|
|
509
509
|
] });
|
|
@@ -539,7 +539,7 @@ function DataTableToolbar({
|
|
|
539
539
|
const filterValue = searchColumnId ? table.getColumn(searchColumnId)?.getFilterValue() ?? "" : "";
|
|
540
540
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: chunkYSNZIYC2_cjs.cn("flex items-center gap-2", className), children: [
|
|
541
541
|
searchColumnId && /* @__PURE__ */ jsxRuntime.jsx(
|
|
542
|
-
|
|
542
|
+
chunkECTM5YZQ_cjs.Input,
|
|
543
543
|
{
|
|
544
544
|
className: "h-12 rounded-md flex-1",
|
|
545
545
|
placeholder: searchPlaceholder,
|
|
@@ -552,13 +552,13 @@ function DataTableToolbar({
|
|
|
552
552
|
] });
|
|
553
553
|
}
|
|
554
554
|
function DataTableRowActions({ actions }) {
|
|
555
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
556
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
555
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.DropdownMenu, { children: [
|
|
556
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.Button, { variant: "ghost", size: "icon", className: "size-8 p-0", children: [
|
|
557
557
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.MoreHorizontal, { className: "size-4" }),
|
|
558
558
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "sr-only", children: "Open menu" })
|
|
559
559
|
] }) }),
|
|
560
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
561
|
-
|
|
560
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.DropdownMenuContent, { align: "end", children: actions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
561
|
+
chunkECTM5YZQ_cjs.DropdownMenuItem,
|
|
562
562
|
{
|
|
563
563
|
onClick: action.onClick,
|
|
564
564
|
className: chunkYSNZIYC2_cjs.cn(
|
|
@@ -582,5 +582,5 @@ exports.PageHeader = PageHeader;
|
|
|
582
582
|
exports.PaginationControls = PaginationControls;
|
|
583
583
|
exports.SearchBar = SearchBar;
|
|
584
584
|
exports.TabNavigation = TabNavigation;
|
|
585
|
-
//# sourceMappingURL=chunk-
|
|
586
|
-
//# sourceMappingURL=chunk-
|
|
585
|
+
//# sourceMappingURL=chunk-6QN6OSP3.cjs.map
|
|
586
|
+
//# sourceMappingURL=chunk-6QN6OSP3.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/common/form-field/form-field.tsx","../src/components/common/labeled-switch/labeled-switch.tsx","../src/components/common/page-header/page-header.tsx","../src/components/common/search-bar/search-bar.tsx","../src/components/common/pagination-controls/pagination-controls.tsx","../src/components/common/tab-navigation/tab-navigation.tsx","../src/components/common/data-table/data-table-pagination.tsx","../src/components/common/data-table/data-table.tsx","../src/components/common/data-table/data-table-column-header.tsx","../src/components/common/data-table/data-table-toolbar.tsx","../src/components/common/data-table/data-table-row-actions.tsx"],"names":["jsxs","jsx","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Input","Switch","Badge","formatNumber","Button","Separator","cn","React","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","Tabs","TabsList","TabsTrigger","React2","React3","useReactTable","getCoreRowModel","getSortedRowModel","getFilteredRowModel","getPaginationRowModel","Table","TableHeader","TableRow","TableHead","flexRender","TableBody","TableCell","ArrowUpDown","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","DropdownMenuItem"],"mappings":"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","file":"chunk-7XPQQR3Z.cjs","sourcesContent":["\"use client\";\n\nimport { Label } from \"../../ui/label\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface FormFieldProps {\n id: string;\n label: string;\n type: \"input\" | \"select\";\n value: string;\n options?: string[];\n onChange: (value: string) => void;\n}\n\nexport function FormField({ id, label, type, value, options, onChange }: FormFieldProps) {\n if (type === \"select\") {\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger id={id} className=\"h-[52px] pr-4\">\n <SelectValue placeholder={label} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Input\n id={id}\n className=\"h-[52px]\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { Switch } from \"../../ui/switch\";\n\nexport interface LabeledSwitchProps {\n id: string;\n label: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n}\n\nexport function LabeledSwitch({ id, label, checked, onCheckedChange }: LabeledSwitchProps) {\n return (\n <div className=\"flex items-center gap-3\">\n <label\n htmlFor={id}\n className=\"font-pretendard text-[16px] font-medium text-black select-none cursor-pointer\"\n >\n {label}\n </label>\n <Switch id={id} checked={checked} onCheckedChange={onCheckedChange} />\n </div>\n );\n}\n","\"use client\";\n\nimport type { LucideIcon } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport { Badge } from \"../../ui/badge\";\nimport { Separator } from \"../../ui/separator\";\nimport { formatNumber } from \"../../../lib/utils\";\n\nexport interface PageHeaderProps {\n title: string;\n subtitle: string;\n badgeCount?: number;\n badgeSuffix?: string;\n actionLabel: string;\n actionIcon?: LucideIcon;\n onAction?: () => void;\n}\n\nexport function PageHeader({\n title,\n subtitle,\n badgeCount,\n badgeSuffix = \"\",\n actionLabel,\n actionIcon: ActionIcon,\n onAction,\n}: PageHeaderProps) {\n return (\n <div>\n <div className=\"flex flex-row justify-between items-start\">\n {/* Left side */}\n <div>\n {/* Title row with badge */}\n <div className=\"flex items-center gap-3\">\n <h1 className=\"font-pretendard text-[32px] font-semibold text-black\">\n {title}\n </h1>\n {badgeCount !== undefined && (\n <Badge\n variant=\"green\"\n aria-label={`Total: ${formatNumber(badgeCount)}${badgeSuffix}`}\n >\n {formatNumber(badgeCount)}{badgeSuffix}\n </Badge>\n )}\n </div>\n {/* Subtitle */}\n <p className=\"font-pretendard text-[18px] font-medium text-subtitle mt-1\">\n {subtitle}\n </p>\n </div>\n\n {/* Right side */}\n <Button variant=\"primary\" onClick={onAction}>\n {ActionIcon && <ActionIcon className=\"size-5\" />}\n {actionLabel}\n </Button>\n </div>\n\n {/* Separator below header */}\n <Separator className=\"my-6\" />\n </div>\n );\n}\n","\"use client\";\n\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface SearchBarProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search...\",\n ariaLabel = \"Search\",\n className,\n}: SearchBarProps) {\n return (\n <Input\n className={cn(\"h-12 rounded-md\", className)}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n aria-label={ariaLabel}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface PaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\nexport interface PaginationControlsProps {\n currentPage: number;\n totalPages: number;\n itemsPerPage: number;\n onPageChange: (page: number) => void;\n onItemsPerPageChange: (count: number) => void;\n labels?: PaginationLabels;\n className?: string;\n}\n\nexport function PaginationControls({\n currentPage,\n totalPages,\n itemsPerPage,\n onPageChange,\n onItemsPerPageChange,\n labels,\n className,\n}: PaginationControlsProps) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const isFirstPage = currentPage <= 1;\n const isLastPage = currentPage >= totalPages;\n\n function handleGoToFirst() {\n if (!isFirstPage) {\n onPageChange(1);\n }\n }\n\n function handleGoToPrevious() {\n if (!isFirstPage) {\n onPageChange(currentPage - 1);\n }\n }\n\n function handleGoToNext() {\n if (!isLastPage) {\n onPageChange(currentPage + 1);\n }\n }\n\n function handleGoToLast() {\n if (!isLastPage) {\n onPageChange(totalPages);\n }\n }\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n onPageChange(page);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n function handleItemsPerPageChange(value: string) {\n const count = parseInt(value, 10);\n if (!isNaN(count)) {\n onItemsPerPageChange(count);\n }\n }\n\n return (\n <div className={cn(\"flex items-center justify-between\", className)}>\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={isFirstPage}\n onClick={handleGoToFirst}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={isFirstPage}\n onClick={handleGoToPrevious}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={isLastPage}\n onClick={handleGoToNext}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={isLastPage}\n onClick={handleGoToLast}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span\n className=\"flex items-center gap-1 px-2\"\n aria-live=\"polite\"\n >\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button\n variant=\"secondary\"\n size=\"secondary\"\n onClick={handlePageJump}\n >\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(itemsPerPage)}\n onValueChange={handleItemsPerPageChange}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"10\">10{itemSuffix}</SelectItem>\n <SelectItem value=\"20\">20{itemSuffix}</SelectItem>\n <SelectItem value=\"50\">50{itemSuffix}</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { Tabs, TabsList, TabsTrigger } from \"../../ui/tabs\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface TabItem {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TabNavigationProps {\n tabs: TabItem[];\n defaultValue?: string;\n value?: string;\n onTabChange?: (value: string) => void;\n className?: string;\n}\n\nexport function TabNavigation({\n tabs,\n defaultValue,\n value,\n onTabChange,\n className,\n}: TabNavigationProps) {\n return (\n <Tabs\n defaultValue={defaultValue}\n value={value}\n onValueChange={onTabChange}\n className={cn(className)}\n >\n <TabsList>\n {tabs.map((tab) => (\n <TabsTrigger key={tab.value} value={tab.value} disabled={tab.disabled}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\nimport type { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface DataTablePaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n labels?: DataTablePaginationLabels;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 50],\n labels,\n}: DataTablePaginationProps<TData>) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const currentPage = table.getState().pagination.pageIndex + 1;\n const totalPages = table.getPageCount();\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n table.setPageIndex(page - 1);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n return (\n <div className=\"flex items-center justify-between\">\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.setPageIndex(0)}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.previousPage()}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.nextPage()}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span className=\"flex items-center gap-1 px-2\" aria-live=\"polite\">\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button variant=\"secondary\" size=\"secondary\" onClick={handlePageJump}>\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}{itemSuffix}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type ColumnFiltersState,\n type OnChangeFn,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport * as React from \"react\";\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../../ui/table\";\nimport { cn } from \"../../../lib/utils\";\nimport { DataTablePagination } from \"./data-table-pagination\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n enableSorting?: boolean;\n enableFiltering?: boolean;\n enableRowSelection?: boolean;\n enablePagination?: boolean;\n manualPagination?: boolean;\n rowCount?: number;\n pageSizeOptions?: number[];\n onRowClick?: (row: TData) => void;\n emptyMessage?: string;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;\n pagination?: PaginationState;\n onPaginationChange?: OnChangeFn<PaginationState>;\n rowSelection?: RowSelectionState;\n onRowSelectionChange?: OnChangeFn<RowSelectionState>;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n enableSorting = false,\n enableFiltering = false,\n enableRowSelection = false,\n enablePagination = false,\n manualPagination = false,\n rowCount,\n pageSizeOptions,\n onRowClick,\n emptyMessage = \"No data available.\",\n sorting: sortingProp,\n onSortingChange,\n columnFilters: columnFiltersProp,\n onColumnFiltersChange,\n pagination: paginationProp,\n onPaginationChange,\n rowSelection: rowSelectionProp,\n onRowSelectionChange,\n columnVisibility: columnVisibilityProp,\n onColumnVisibilityChange,\n}: DataTableProps<TData, TValue>) {\n const [internalSorting, setInternalSorting] = React.useState<SortingState>(\n []\n );\n const [internalColumnFilters, setInternalColumnFilters] =\n React.useState<ColumnFiltersState>([]);\n const [internalRowSelection, setInternalRowSelection] =\n React.useState<RowSelectionState>({});\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({});\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({ pageIndex: 0, pageSize: 10 });\n\n const table = useReactTable({\n data,\n columns,\n rowCount: manualPagination ? rowCount : undefined,\n state: {\n sorting: sortingProp ?? internalSorting,\n columnFilters: columnFiltersProp ?? internalColumnFilters,\n rowSelection: rowSelectionProp ?? internalRowSelection,\n columnVisibility: columnVisibilityProp ?? internalColumnVisibility,\n pagination: paginationProp ?? internalPagination,\n },\n onSortingChange: onSortingChange ?? setInternalSorting,\n onColumnFiltersChange: onColumnFiltersChange ?? setInternalColumnFilters,\n onRowSelectionChange: onRowSelectionChange ?? setInternalRowSelection,\n onColumnVisibilityChange:\n onColumnVisibilityChange ?? setInternalColumnVisibility,\n onPaginationChange: onPaginationChange ?? setInternalPagination,\n getCoreRowModel: getCoreRowModel(),\n ...(enableSorting && { getSortedRowModel: getSortedRowModel() }),\n ...(enableFiltering && { getFilteredRowModel: getFilteredRowModel() }),\n ...(enablePagination &&\n !manualPagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n enableRowSelection,\n manualPagination,\n });\n\n return (\n <div className=\"space-y-4\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-table-header cursor-default\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n header.column.columnDef.meta?.headerClassName ??\n header.column.columnDef.meta?.className\n )}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n onKeyDown={\n onRowClick\n ? (e) => {\n if (e.key === \"Enter\") onRowClick(row.original);\n }\n : undefined\n }\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? \"link\" : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={cn(cell.column.columnDef.meta?.className)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {enablePagination && (\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { ArrowUpDown } from \"lucide-react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n title: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <button\n type=\"button\"\n className={cn(\"flex items-center gap-1\", className)}\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {title}\n <ArrowUpDown className=\"size-4 text-table-cell\" />\n </button>\n );\n}\n","\"use client\";\n\nimport type { Table } from \"@tanstack/react-table\";\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableToolbarProps<TData> {\n table: Table<TData>;\n searchPlaceholder?: string;\n searchColumnId?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n searchPlaceholder = \"Search...\",\n searchColumnId,\n className,\n children,\n}: DataTableToolbarProps<TData>) {\n const filterValue = searchColumnId\n ? (table.getColumn(searchColumnId)?.getFilterValue() as string) ?? \"\"\n : \"\";\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {searchColumnId && (\n <Input\n className=\"h-12 rounded-md flex-1\"\n placeholder={searchPlaceholder}\n value={filterValue}\n onChange={(e) =>\n table.getColumn(searchColumnId)?.setFilterValue(e.target.value)\n }\n aria-label={searchPlaceholder}\n />\n )}\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { MoreHorizontal } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface DataTableRowAction {\n label: string;\n onClick: () => void;\n variant?: \"default\" | \"destructive\";\n}\n\ninterface DataTableRowActionsProps {\n actions: DataTableRowAction[];\n}\n\nexport function DataTableRowActions({ actions }: DataTableRowActionsProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8 p-0\">\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive\"\n )}\n >\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/common/form-field/form-field.tsx","../src/components/common/labeled-switch/labeled-switch.tsx","../src/components/common/page-header/page-header.tsx","../src/components/common/search-bar/search-bar.tsx","../src/components/common/pagination-controls/pagination-controls.tsx","../src/components/common/tab-navigation/tab-navigation.tsx","../src/components/common/data-table/data-table-pagination.tsx","../src/components/common/data-table/data-table.tsx","../src/components/common/data-table/data-table-column-header.tsx","../src/components/common/data-table/data-table-toolbar.tsx","../src/components/common/data-table/data-table-row-actions.tsx"],"names":["jsxs","jsx","Label","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Input","Switch","Badge","formatNumber","Button","Separator","cn","React","ChevronsLeft","ChevronLeft","ChevronRight","ChevronsRight","Tabs","TabsList","TabsTrigger","React2","React3","useReactTable","getCoreRowModel","getSortedRowModel","getFilteredRowModel","getPaginationRowModel","Table","TableHeader","TableRow","TableHead","flexRender","TableBody","TableCell","ArrowUpDown","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","DropdownMenuItem"],"mappings":"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","file":"chunk-6QN6OSP3.cjs","sourcesContent":["\"use client\";\n\nimport { Label } from \"../../ui/label\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface FormFieldProps {\n id: string;\n label: string;\n type: \"input\" | \"select\";\n value: string;\n options?: string[];\n onChange: (value: string) => void;\n}\n\nexport function FormField({ id, label, type, value, options, onChange }: FormFieldProps) {\n if (type === \"select\") {\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Select value={value} onValueChange={onChange}>\n <SelectTrigger id={id} className=\"h-[52px] pr-4\">\n <SelectValue placeholder={label} />\n </SelectTrigger>\n <SelectContent>\n {options?.map((option) => (\n <SelectItem key={option} value={option}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n }\n\n return (\n <div className=\"flex flex-col\">\n <Label htmlFor={id}>{label}</Label>\n <Input\n id={id}\n className=\"h-[52px]\"\n value={value}\n onChange={(e) => onChange(e.target.value)}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { Switch } from \"../../ui/switch\";\n\nexport interface LabeledSwitchProps {\n id: string;\n label: string;\n checked: boolean;\n onCheckedChange: (checked: boolean) => void;\n}\n\nexport function LabeledSwitch({ id, label, checked, onCheckedChange }: LabeledSwitchProps) {\n return (\n <div className=\"flex items-center gap-3\">\n <label\n htmlFor={id}\n className=\"font-pretendard text-[16px] font-medium text-black select-none cursor-pointer\"\n >\n {label}\n </label>\n <Switch id={id} checked={checked} onCheckedChange={onCheckedChange} />\n </div>\n );\n}\n","\"use client\";\n\nimport type { LucideIcon } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport { Badge } from \"../../ui/badge\";\nimport { Separator } from \"../../ui/separator\";\nimport { formatNumber } from \"../../../lib/utils\";\n\nexport interface PageHeaderProps {\n title: string;\n subtitle: string;\n badgeCount?: number;\n badgeSuffix?: string;\n actionLabel: string;\n actionIcon?: LucideIcon;\n onAction?: () => void;\n}\n\nexport function PageHeader({\n title,\n subtitle,\n badgeCount,\n badgeSuffix = \"\",\n actionLabel,\n actionIcon: ActionIcon,\n onAction,\n}: PageHeaderProps) {\n return (\n <div>\n <div className=\"flex flex-row justify-between items-start\">\n {/* Left side */}\n <div>\n {/* Title row with badge */}\n <div className=\"flex items-center gap-3\">\n <h1 className=\"font-pretendard text-[32px] font-semibold text-black\">\n {title}\n </h1>\n {badgeCount !== undefined && (\n <Badge\n variant=\"green\"\n aria-label={`Total: ${formatNumber(badgeCount)}${badgeSuffix}`}\n >\n {formatNumber(badgeCount)}{badgeSuffix}\n </Badge>\n )}\n </div>\n {/* Subtitle */}\n <p className=\"font-pretendard text-[18px] font-medium text-subtitle mt-1\">\n {subtitle}\n </p>\n </div>\n\n {/* Right side */}\n <Button variant=\"primary\" onClick={onAction}>\n {ActionIcon && <ActionIcon className=\"size-5\" />}\n {actionLabel}\n </Button>\n </div>\n\n {/* Separator below header */}\n <Separator className=\"my-6\" />\n </div>\n );\n}\n","\"use client\";\n\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface SearchBarProps {\n value: string;\n onChange: (value: string) => void;\n placeholder?: string;\n ariaLabel?: string;\n className?: string;\n}\n\nexport function SearchBar({\n value,\n onChange,\n placeholder = \"Search...\",\n ariaLabel = \"Search\",\n className,\n}: SearchBarProps) {\n return (\n <Input\n className={cn(\"h-12 rounded-md\", className)}\n placeholder={placeholder}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n aria-label={ariaLabel}\n />\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface PaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\nexport interface PaginationControlsProps {\n currentPage: number;\n totalPages: number;\n itemsPerPage: number;\n onPageChange: (page: number) => void;\n onItemsPerPageChange: (count: number) => void;\n labels?: PaginationLabels;\n className?: string;\n}\n\nexport function PaginationControls({\n currentPage,\n totalPages,\n itemsPerPage,\n onPageChange,\n onItemsPerPageChange,\n labels,\n className,\n}: PaginationControlsProps) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const isFirstPage = currentPage <= 1;\n const isLastPage = currentPage >= totalPages;\n\n function handleGoToFirst() {\n if (!isFirstPage) {\n onPageChange(1);\n }\n }\n\n function handleGoToPrevious() {\n if (!isFirstPage) {\n onPageChange(currentPage - 1);\n }\n }\n\n function handleGoToNext() {\n if (!isLastPage) {\n onPageChange(currentPage + 1);\n }\n }\n\n function handleGoToLast() {\n if (!isLastPage) {\n onPageChange(totalPages);\n }\n }\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n onPageChange(page);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n function handleItemsPerPageChange(value: string) {\n const count = parseInt(value, 10);\n if (!isNaN(count)) {\n onItemsPerPageChange(count);\n }\n }\n\n return (\n <div className={cn(\"flex items-center justify-between\", className)}>\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={isFirstPage}\n onClick={handleGoToFirst}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={isFirstPage}\n onClick={handleGoToPrevious}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={isLastPage}\n onClick={handleGoToNext}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={isLastPage}\n onClick={handleGoToLast}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span\n className=\"flex items-center gap-1 px-2\"\n aria-live=\"polite\"\n >\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button\n variant=\"secondary\"\n size=\"secondary\"\n onClick={handlePageJump}\n >\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(itemsPerPage)}\n onValueChange={handleItemsPerPageChange}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"10\">10{itemSuffix}</SelectItem>\n <SelectItem value=\"20\">20{itemSuffix}</SelectItem>\n <SelectItem value=\"50\">50{itemSuffix}</SelectItem>\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { Tabs, TabsList, TabsTrigger } from \"../../ui/tabs\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface TabItem {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface TabNavigationProps {\n tabs: TabItem[];\n defaultValue?: string;\n value?: string;\n onTabChange?: (value: string) => void;\n className?: string;\n}\n\nexport function TabNavigation({\n tabs,\n defaultValue,\n value,\n onTabChange,\n className,\n}: TabNavigationProps) {\n return (\n <Tabs\n defaultValue={defaultValue}\n value={value}\n onValueChange={onTabChange}\n className={cn(className)}\n >\n <TabsList>\n {tabs.map((tab) => (\n <TabsTrigger key={tab.value} value={tab.value} disabled={tab.disabled}>\n {tab.label}\n </TabsTrigger>\n ))}\n </TabsList>\n </Tabs>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronsLeft,\n ChevronLeft,\n ChevronRight,\n ChevronsRight,\n} from \"lucide-react\";\nimport type { Table } from \"@tanstack/react-table\";\n\nimport { Button } from \"../../ui/button\";\nimport { Input } from \"../../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../../ui/select\";\n\nexport interface DataTablePaginationLabels {\n pageJumpPlaceholder?: string;\n pageJumpButton?: string;\n itemsPerPageLabel?: string;\n itemSuffix?: string;\n}\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>;\n pageSizeOptions?: number[];\n labels?: DataTablePaginationLabels;\n}\n\nexport function DataTablePagination<TData>({\n table,\n pageSizeOptions = [10, 20, 50],\n labels,\n}: DataTablePaginationProps<TData>) {\n const [pageJumpInput, setPageJumpInput] = React.useState(\"\");\n\n const pageJumpPlaceholder = labels?.pageJumpPlaceholder ?? \"Page\";\n const pageJumpButton = labels?.pageJumpButton ?? \"Go\";\n const itemsPerPageLabel = labels?.itemsPerPageLabel ?? \"Items per page\";\n const itemSuffix = labels?.itemSuffix ?? \"\";\n\n const currentPage = table.getState().pagination.pageIndex + 1;\n const totalPages = table.getPageCount();\n\n function handlePageJump() {\n const page = parseInt(pageJumpInput, 10);\n if (!isNaN(page) && page >= 1 && page <= totalPages) {\n table.setPageIndex(page - 1);\n setPageJumpInput(\"\");\n }\n }\n\n function handlePageJumpKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n if (e.key === \"Enter\") {\n handlePageJump();\n }\n }\n\n return (\n <div className=\"flex items-center justify-between\">\n {/* Left group: pagination buttons + page indicator */}\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to first page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.setPageIndex(0)}\n >\n <ChevronsLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Previous page\"\n disabled={!table.getCanPreviousPage()}\n onClick={() => table.previousPage()}\n >\n <ChevronLeft className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Next page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.nextPage()}\n >\n <ChevronRight className=\"size-5\" />\n </Button>\n\n <Button\n variant=\"pagination\"\n size=\"pagination\"\n aria-label=\"Go to last page\"\n disabled={!table.getCanNextPage()}\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n >\n <ChevronsRight className=\"size-5\" />\n </Button>\n\n {/* Page indicator */}\n <span className=\"flex items-center gap-1 px-2\" aria-live=\"polite\">\n <span className=\"text-[20px] font-bold\">{currentPage}</span>\n <span className=\"text-[16px] font-normal text-muted-fg\">\n / {totalPages}\n </span>\n </span>\n </div>\n\n {/* Right group: page jump + items per page */}\n <div className=\"flex items-center gap-2\">\n <Input\n className=\"w-[100px] h-12\"\n placeholder={pageJumpPlaceholder}\n value={pageJumpInput}\n onChange={(e) => setPageJumpInput(e.target.value)}\n onKeyDown={handlePageJumpKeyDown}\n aria-label={pageJumpPlaceholder}\n />\n\n <Button variant=\"secondary\" size=\"secondary\" onClick={handlePageJump}>\n {pageJumpButton}\n </Button>\n\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"w-[96px] h-12\" aria-label={itemsPerPageLabel}>\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {pageSizeOptions.map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}{itemSuffix}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport {\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n type ColumnDef,\n type ColumnFiltersState,\n type OnChangeFn,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport * as React from \"react\";\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../../ui/table\";\nimport { cn } from \"../../../lib/utils\";\nimport { DataTablePagination } from \"./data-table-pagination\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n enableSorting?: boolean;\n enableFiltering?: boolean;\n enableRowSelection?: boolean;\n enablePagination?: boolean;\n manualPagination?: boolean;\n rowCount?: number;\n pageSizeOptions?: number[];\n onRowClick?: (row: TData) => void;\n emptyMessage?: string;\n sorting?: SortingState;\n onSortingChange?: OnChangeFn<SortingState>;\n columnFilters?: ColumnFiltersState;\n onColumnFiltersChange?: OnChangeFn<ColumnFiltersState>;\n pagination?: PaginationState;\n onPaginationChange?: OnChangeFn<PaginationState>;\n rowSelection?: RowSelectionState;\n onRowSelectionChange?: OnChangeFn<RowSelectionState>;\n columnVisibility?: VisibilityState;\n onColumnVisibilityChange?: OnChangeFn<VisibilityState>;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n enableSorting = false,\n enableFiltering = false,\n enableRowSelection = false,\n enablePagination = false,\n manualPagination = false,\n rowCount,\n pageSizeOptions,\n onRowClick,\n emptyMessage = \"No data available.\",\n sorting: sortingProp,\n onSortingChange,\n columnFilters: columnFiltersProp,\n onColumnFiltersChange,\n pagination: paginationProp,\n onPaginationChange,\n rowSelection: rowSelectionProp,\n onRowSelectionChange,\n columnVisibility: columnVisibilityProp,\n onColumnVisibilityChange,\n}: DataTableProps<TData, TValue>) {\n const [internalSorting, setInternalSorting] = React.useState<SortingState>(\n []\n );\n const [internalColumnFilters, setInternalColumnFilters] =\n React.useState<ColumnFiltersState>([]);\n const [internalRowSelection, setInternalRowSelection] =\n React.useState<RowSelectionState>({});\n const [internalColumnVisibility, setInternalColumnVisibility] =\n React.useState<VisibilityState>({});\n const [internalPagination, setInternalPagination] =\n React.useState<PaginationState>({ pageIndex: 0, pageSize: 10 });\n\n const table = useReactTable({\n data,\n columns,\n rowCount: manualPagination ? rowCount : undefined,\n state: {\n sorting: sortingProp ?? internalSorting,\n columnFilters: columnFiltersProp ?? internalColumnFilters,\n rowSelection: rowSelectionProp ?? internalRowSelection,\n columnVisibility: columnVisibilityProp ?? internalColumnVisibility,\n pagination: paginationProp ?? internalPagination,\n },\n onSortingChange: onSortingChange ?? setInternalSorting,\n onColumnFiltersChange: onColumnFiltersChange ?? setInternalColumnFilters,\n onRowSelectionChange: onRowSelectionChange ?? setInternalRowSelection,\n onColumnVisibilityChange:\n onColumnVisibilityChange ?? setInternalColumnVisibility,\n onPaginationChange: onPaginationChange ?? setInternalPagination,\n getCoreRowModel: getCoreRowModel(),\n ...(enableSorting && { getSortedRowModel: getSortedRowModel() }),\n ...(enableFiltering && { getFilteredRowModel: getFilteredRowModel() }),\n ...(enablePagination &&\n !manualPagination && {\n getPaginationRowModel: getPaginationRowModel(),\n }),\n enableRowSelection,\n manualPagination,\n });\n\n return (\n <div className=\"space-y-4\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-table-header cursor-default\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className={cn(\n header.column.columnDef.meta?.headerClassName ??\n header.column.columnDef.meta?.className\n )}\n >\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n onClick={onRowClick ? () => onRowClick(row.original) : undefined}\n onKeyDown={\n onRowClick\n ? (e) => {\n if (e.key === \"Enter\") onRowClick(row.original);\n }\n : undefined\n }\n tabIndex={onRowClick ? 0 : undefined}\n role={onRowClick ? \"link\" : undefined}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className={cn(cell.column.columnDef.meta?.className)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {enablePagination && (\n <DataTablePagination table={table} pageSizeOptions={pageSizeOptions} />\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { ArrowUpDown } from \"lucide-react\";\nimport type { Column } from \"@tanstack/react-table\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>;\n title: string;\n className?: string;\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>;\n }\n\n return (\n <button\n type=\"button\"\n className={cn(\"flex items-center gap-1\", className)}\n onClick={() => column.toggleSorting(column.getIsSorted() === \"asc\")}\n >\n {title}\n <ArrowUpDown className=\"size-4 text-table-cell\" />\n </button>\n );\n}\n","\"use client\";\n\nimport type { Table } from \"@tanstack/react-table\";\nimport { Input } from \"../../ui/input\";\nimport { cn } from \"../../../lib/utils\";\n\ninterface DataTableToolbarProps<TData> {\n table: Table<TData>;\n searchPlaceholder?: string;\n searchColumnId?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\nexport function DataTableToolbar<TData>({\n table,\n searchPlaceholder = \"Search...\",\n searchColumnId,\n className,\n children,\n}: DataTableToolbarProps<TData>) {\n const filterValue = searchColumnId\n ? (table.getColumn(searchColumnId)?.getFilterValue() as string) ?? \"\"\n : \"\";\n\n return (\n <div className={cn(\"flex items-center gap-2\", className)}>\n {searchColumnId && (\n <Input\n className=\"h-12 rounded-md flex-1\"\n placeholder={searchPlaceholder}\n value={filterValue}\n onChange={(e) =>\n table.getColumn(searchColumnId)?.setFilterValue(e.target.value)\n }\n aria-label={searchPlaceholder}\n />\n )}\n {children}\n </div>\n );\n}\n","\"use client\";\n\nimport { MoreHorizontal } from \"lucide-react\";\nimport { Button } from \"../../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"../../ui/dropdown-menu\";\nimport { cn } from \"../../../lib/utils\";\n\nexport interface DataTableRowAction {\n label: string;\n onClick: () => void;\n variant?: \"default\" | \"destructive\";\n}\n\ninterface DataTableRowActionsProps {\n actions: DataTableRowAction[];\n}\n\nexport function DataTableRowActions({ actions }: DataTableRowActionsProps) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"size-8 p-0\">\n <MoreHorizontal className=\"size-4\" />\n <span className=\"sr-only\">Open menu</span>\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={action.onClick}\n className={cn(\n action.variant === \"destructive\" && \"text-destructive\"\n )}\n >\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n}\n"]}
|
|
@@ -3,6 +3,7 @@ import { cva } from 'class-variance-authority';
|
|
|
3
3
|
import { Slot, DropdownMenu as DropdownMenu$1, Label as Label$1, Select as Select$1, Separator as Separator$1, Switch as Switch$1, Tabs as Tabs$1 } from 'radix-ui';
|
|
4
4
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
5
5
|
import { CheckIcon, CircleIcon, ChevronRightIcon, ChevronDownIcon, ChevronUpIcon } from 'lucide-react';
|
|
6
|
+
import * as React from 'react';
|
|
6
7
|
|
|
7
8
|
var buttonVariants = cva(
|
|
8
9
|
"inline-flex cursor-pointer items-center justify-center gap-2 whitespace-nowrap font-medium transition-[background-color,color,transform] duration-150 ease-out focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
@@ -500,14 +501,32 @@ function Separator({
|
|
|
500
501
|
}
|
|
501
502
|
function Switch({
|
|
502
503
|
className,
|
|
504
|
+
checked,
|
|
505
|
+
defaultChecked,
|
|
506
|
+
onCheckedChange,
|
|
503
507
|
...props
|
|
504
508
|
}) {
|
|
509
|
+
const [internalChecked, setInternalChecked] = React.useState(defaultChecked ?? false);
|
|
510
|
+
const isChecked = checked ?? internalChecked;
|
|
511
|
+
const handleCheckedChange = React.useCallback(
|
|
512
|
+
(value) => {
|
|
513
|
+
if (checked === void 0) {
|
|
514
|
+
setInternalChecked(value);
|
|
515
|
+
}
|
|
516
|
+
onCheckedChange?.(value);
|
|
517
|
+
},
|
|
518
|
+
[checked, onCheckedChange]
|
|
519
|
+
);
|
|
505
520
|
return /* @__PURE__ */ jsx(
|
|
506
521
|
Switch$1.Root,
|
|
507
522
|
{
|
|
508
523
|
"data-slot": "switch",
|
|
524
|
+
checked,
|
|
525
|
+
defaultChecked,
|
|
526
|
+
onCheckedChange: handleCheckedChange,
|
|
509
527
|
className: cn(
|
|
510
|
-
"peer inline-flex shrink-0 items-center rounded-full w-[44px] h-[24px] cursor-pointer transition-colors duration-200 ease-in-out outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50
|
|
528
|
+
"peer inline-flex shrink-0 items-center rounded-full w-[44px] h-[24px] cursor-pointer transition-colors duration-200 ease-in-out outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
|
|
529
|
+
isChecked ? "bg-toggle-on hover:bg-[#2563EB]" : "bg-toggle-off hover:bg-[#B0BEC5]",
|
|
511
530
|
className
|
|
512
531
|
),
|
|
513
532
|
...props,
|
|
@@ -516,7 +535,8 @@ function Switch({
|
|
|
516
535
|
{
|
|
517
536
|
"data-slot": "switch-thumb",
|
|
518
537
|
className: cn(
|
|
519
|
-
"pointer-events-none block size-5 rounded-full bg-white ring-0 transition-transform duration-200 ease-in-out
|
|
538
|
+
"pointer-events-none block size-5 rounded-full bg-white ring-0 transition-transform duration-200 ease-in-out",
|
|
539
|
+
isChecked ? "translate-x-[22px]" : "translate-x-[2px]"
|
|
520
540
|
)
|
|
521
541
|
}
|
|
522
542
|
)
|
|
@@ -694,5 +714,5 @@ function TabsContent({
|
|
|
694
714
|
}
|
|
695
715
|
|
|
696
716
|
export { Badge, Button, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Input, Label, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectScrollDownButton, SelectScrollUpButton, SelectSeparator, SelectTrigger, SelectValue, Separator, Switch, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Tabs, TabsContent, TabsList, TabsTrigger, badgeVariants, buttonVariants };
|
|
697
|
-
//# sourceMappingURL=chunk-
|
|
698
|
-
//# sourceMappingURL=chunk-
|
|
717
|
+
//# sourceMappingURL=chunk-7AJBGZPR.js.map
|
|
718
|
+
//# sourceMappingURL=chunk-7AJBGZPR.js.map
|