@potenlab/ui 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkO4BML5KD_cjs = require('./chunk-O4BML5KD.cjs');
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(chunkO4BML5KD_cjs.Label, { htmlFor: id, children: label }),
34
- /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.Select, { value, onValueChange: onChange, children: [
35
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectTrigger, { id, className: "h-[52px] pr-4", children: /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectValue, { placeholder: label }) }),
36
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectContent, { children: options?.map((option) => /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectItem, { value: option, children: option }, option)) })
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(chunkO4BML5KD_cjs.Label, { htmlFor: id, children: label }),
41
+ /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Label, { htmlFor: id, children: label }),
42
42
  /* @__PURE__ */ jsxRuntime.jsx(
43
- chunkO4BML5KD_cjs.Input,
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(chunkO4BML5KD_cjs.Switch, { id, checked, onCheckedChange })
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
- chunkO4BML5KD_cjs.Badge,
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(chunkO4BML5KD_cjs.Button, { variant: "primary", onClick: onAction, children: [
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(chunkO4BML5KD_cjs.Separator, { className: "my-6" })
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
- chunkO4BML5KD_cjs.Input,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Input,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Select,
257
+ chunkECTM5YZQ_cjs.Select,
258
258
  {
259
259
  value: String(itemsPerPage),
260
260
  onValueChange: handleItemsPerPageChange,
261
261
  children: [
262
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectTrigger, { className: "w-[96px] h-12", "aria-label": itemsPerPageLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectValue, {}) }),
263
- /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.SelectContent, { children: [
264
- /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.SelectItem, { value: "10", children: [
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(chunkO4BML5KD_cjs.SelectItem, { value: "20", children: [
268
+ /* @__PURE__ */ jsxRuntime.jsxs(chunkECTM5YZQ_cjs.SelectItem, { value: "20", children: [
269
269
  "20",
270
270
  itemSuffix
271
271
  ] }),
272
- /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.SelectItem, { value: "50", children: [
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
- chunkO4BML5KD_cjs.Tabs,
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(chunkO4BML5KD_cjs.TabsList, { children: tabs.map((tab) => /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.TabsTrigger, { value: tab.value, disabled: tab.disabled, children: tab.label }, tab.value)) })
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Button,
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
- chunkO4BML5KD_cjs.Input,
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(chunkO4BML5KD_cjs.Button, { variant: "secondary", size: "secondary", onClick: handlePageJump, children: pageJumpButton }),
391
+ /* @__PURE__ */ jsxRuntime.jsx(chunkECTM5YZQ_cjs.Button, { variant: "secondary", size: "secondary", onClick: handlePageJump, children: pageJumpButton }),
392
392
  /* @__PURE__ */ jsxRuntime.jsxs(
393
- chunkO4BML5KD_cjs.Select,
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(chunkO4BML5KD_cjs.SelectTrigger, { className: "w-[96px] h-12", "aria-label": itemsPerPageLabel, children: /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectValue, {}) }),
399
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.SelectContent, { children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.SelectItem, { value: String(size), children: [
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(chunkO4BML5KD_cjs.Table, { children: [
466
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsxRuntime.jsx(
467
- chunkO4BML5KD_cjs.TableRow,
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
- chunkO4BML5KD_cjs.TableHead,
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(chunkO4BML5KD_cjs.TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsxRuntime.jsx(
487
- chunkO4BML5KD_cjs.TableRow,
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
- chunkO4BML5KD_cjs.TableCell,
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(chunkO4BML5KD_cjs.TableRow, { children: /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.TableCell, { colSpan: columns.length, className: "h-24 text-center", children: emptyMessage }) }) })
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
- chunkO4BML5KD_cjs.Input,
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(chunkO4BML5KD_cjs.DropdownMenu, { children: [
556
- /* @__PURE__ */ jsxRuntime.jsx(chunkO4BML5KD_cjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntime.jsxs(chunkO4BML5KD_cjs.Button, { variant: "ghost", size: "icon", className: "size-8 p-0", children: [
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(chunkO4BML5KD_cjs.DropdownMenuContent, { align: "end", children: actions.map((action) => /* @__PURE__ */ jsxRuntime.jsx(
561
- chunkO4BML5KD_cjs.DropdownMenuItem,
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-7XPQQR3Z.cjs.map
586
- //# sourceMappingURL=chunk-7XPQQR3Z.cjs.map
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 data-[state=unchecked]:bg-toggle-off data-[state=checked]:bg-toggle-on data-[state=unchecked]:hover:bg-[#B0BEC5] data-[state=checked]:hover:bg-[#2563EB]",
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 data-[state=unchecked]:translate-x-[2px] data-[state=checked]:translate-x-[22px]"
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-2W3RBVMM.js.map
698
- //# sourceMappingURL=chunk-2W3RBVMM.js.map
717
+ //# sourceMappingURL=chunk-7AJBGZPR.js.map
718
+ //# sourceMappingURL=chunk-7AJBGZPR.js.map