@cryptlex/web-components 3.5.0 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,33 @@
1
1
  "use client";
2
- import { jsx as n, jsxs as c, Fragment as D } from "react/jsx-runtime";
3
- import { useState as O, useEffect as z, useMemo as M } from "react";
2
+ import { jsx as a, jsxs as c, Fragment as z } from "react/jsx-runtime";
3
+ import { useState as U, useEffect as H, useMemo as N } from "react";
4
+ import { cn as K } from "../../utils/index.es.js";
4
5
  import "../../utils/form-context.es.js";
5
6
  import "../../utils/form-hook.es.js";
6
- import { useQuery as U, keepPreviousData as H } from "@tanstack/react-query";
7
- import { createColumnHelper as K, useReactTable as j, getCoreRowModel as k } from "@tanstack/react-table";
8
- import { Info as q } from "lucide-react";
9
- import { ColumnPicker as B } from "./column-picker.es.js";
10
- import { PageSize as G } from "./page-size.es.js";
11
- import { Paginator as Q } from "./paginator.es.js";
12
- import W from "./table-actions.es.js";
13
- import { TableContent as X } from "./table-content.es.js";
14
- import { TABLE_CHECK_BOX_COLUMN as J, TABLE_ID_COLUMN as Y, TABLE_DEFAULT_DATE_COLUMNS as Z } from "./table-commons.es.js";
15
- import { TooltipProvider as $, Tooltip as ee, TooltipTrigger as te, TooltipContent as oe } from "../ui/tooltip.es.js";
16
- const N = "Actions";
17
- function he({
7
+ import { useQuery as j, keepPreviousData as k } from "@tanstack/react-query";
8
+ import { createColumnHelper as q, useReactTable as B, getCoreRowModel as G } from "@tanstack/react-table";
9
+ import { Info as Q } from "lucide-react";
10
+ import { ColumnPicker as W } from "./column-picker.es.js";
11
+ import { PageSize as X } from "./page-size.es.js";
12
+ import { Paginator as J } from "./paginator.es.js";
13
+ import Y from "./table-actions.es.js";
14
+ import { TableContent as Z } from "./table-content.es.js";
15
+ import { TABLE_CHECK_BOX_COLUMN as $, TABLE_ID_COLUMN as ee, TABLE_DEFAULT_DATE_COLUMNS as te } from "./table-commons.es.js";
16
+ import { TooltipProvider as oe, Tooltip as ae, TooltipTrigger as ne, TooltipContent as ie } from "../ui/tooltip.es.js";
17
+ const _ = "Actions";
18
+ function Pe({
18
19
  columns: u,
19
- fetchFn: _,
20
- tableName: V,
21
- tableActions: d,
22
- columnsToHideByDefault: p
20
+ fetchFn: f,
21
+ // tableName,
22
+ tableActions: V,
23
+ columnsToHideByDefault: p,
24
+ allowSelection: C,
25
+ className: F,
26
+ ...E
23
27
  // filterableFields,
24
28
  }) {
25
- var P, b, y, x, v;
26
- const [F, E] = O({
29
+ var P, w, x, A, T;
30
+ const [I, L] = U({
27
31
  sorting: [],
28
32
  // Sorting state
29
33
  columnFilters: [],
@@ -36,18 +40,18 @@ function he({
36
40
  // Row selection state
37
41
  pagination: { pageIndex: 0, pageSize: 20 }
38
42
  // Pagination state
39
- }), i = (e) => {
40
- E((t) => ({ ...t, ...e }));
43
+ }), l = (e) => {
44
+ L((t) => ({ ...t, ...e }));
41
45
  }, {
42
46
  sorting: g,
43
- columnFilters: C,
44
- searching: h,
45
- columnVisibility: S,
46
- rowSelection: w,
47
+ columnFilters: h,
48
+ searching: S,
49
+ columnVisibility: b,
50
+ rowSelection: y,
47
51
  pagination: m
48
- } = F;
49
- z(() => {
50
- i({
52
+ } = I;
53
+ H(() => {
54
+ l({
51
55
  columnVisibility: {
52
56
  id: !1,
53
57
  updatedAt: !1,
@@ -55,137 +59,137 @@ function he({
55
59
  }
56
60
  });
57
61
  }, [p]);
58
- const a = U({
59
- queryKey: [V, m, g, h.trim()],
60
- queryFn: () => _(m, g, h.trim()),
61
- placeholderData: H,
62
+ const n = j({
63
+ queryKey: [f.toString(), m, g, S.trim()],
64
+ queryFn: () => f(m, g, S.trim()),
65
+ placeholderData: k,
62
66
  // Keep previous data while loading new data
63
67
  retry: 0,
64
68
  refetchOnWindowFocus: !1
65
- }), I = K(), f = M(() => {
66
- var T;
67
- const e = (T = a.data) == null ? void 0 : T.data;
69
+ }), R = q(), d = N(() => {
70
+ var v;
71
+ const e = (v = n.data) == null ? void 0 : v.data;
68
72
  if (!(e != null && e.length)) return [];
69
73
  const t = /* @__PURE__ */ new Set();
70
- return e.forEach((r) => {
71
- r.metadata && r.metadata.forEach((s) => {
74
+ return e.forEach((i) => {
75
+ "metadata" in i && i.metadata && Array.isArray(i.metadata) && i.metadata.forEach((s) => {
72
76
  t.add(s.key);
73
77
  });
74
78
  }), Array.from(t).map(
75
- (r) => I.accessor(
79
+ (i) => R.accessor(
76
80
  (s) => {
77
- var A;
78
- const l = (A = s.metadata) == null ? void 0 : A.find(
79
- (R) => R.key === r
81
+ var M;
82
+ const r = (M = s.metadata) == null ? void 0 : M.find(
83
+ (O) => O.key === i
80
84
  );
81
- return l == null ? void 0 : l.value;
85
+ return r == null ? void 0 : r.value;
82
86
  },
83
87
  {
84
- header: () => /* @__PURE__ */ n($, { delayDuration: 0, children: /* @__PURE__ */ c(ee, { children: [
85
- /* @__PURE__ */ n(te, { asChild: !0, children: /* @__PURE__ */ c("span", { className: "flex gap-1 items-center align-middle", children: [
86
- r,
88
+ header: () => /* @__PURE__ */ a(oe, { delayDuration: 0, children: /* @__PURE__ */ c(ae, { children: [
89
+ /* @__PURE__ */ a(ne, { asChild: !0, children: /* @__PURE__ */ c("span", { className: "flex gap-1 items-center align-middle", children: [
90
+ i,
87
91
  " ",
88
- /* @__PURE__ */ n(q, { size: 18, strokeWidth: "1px" })
92
+ /* @__PURE__ */ a(Q, { size: 18, strokeWidth: "1px" })
89
93
  ] }) }),
90
- /* @__PURE__ */ n(oe, { children: "Metadata Key" })
94
+ /* @__PURE__ */ a(ie, { children: "Metadata Key" })
91
95
  ] }) }),
92
96
  // Use the metadata key as the column header
93
- id: r,
97
+ id: i,
94
98
  enableSorting: !1,
95
99
  cell: (s) => {
96
- const l = s.getValue();
97
- return l == null ? "" : String(l);
100
+ const r = s.getValue();
101
+ return r == null ? "" : String(r);
98
102
  }
99
103
  }
100
104
  )
101
105
  );
102
- }, [(P = a.data) == null ? void 0 : P.data]), L = M(() => [
103
- ...d.selection ? J : [],
104
- ...Y,
105
- ...u.filter((t) => t.id !== N),
106
- ...f.length ? f : [],
107
- ...Z,
108
- ...u.filter((t) => t.id === N)
109
- ], [u, f, (b = a.data) == null ? void 0 : b.data, d.selection]), o = j({
110
- data: ((y = a.data) == null ? void 0 : y.data) ?? [],
111
- columns: L,
112
- getCoreRowModel: k(),
113
- rowCount: (x = a.data) == null ? void 0 : x.total,
106
+ }, [(P = n.data) == null ? void 0 : P.data]), D = N(() => [
107
+ ...C ? $ : [],
108
+ ...ee,
109
+ ...u.filter((t) => t.id !== _),
110
+ ...d.length ? d : [],
111
+ ...te,
112
+ ...u.filter((t) => t.id === _)
113
+ ], [u, d, (w = n.data) == null ? void 0 : w.data, C]), o = B({
114
+ data: ((x = n.data) == null ? void 0 : x.data) ?? [],
115
+ columns: D,
116
+ getCoreRowModel: G(),
117
+ rowCount: (A = n.data) == null ? void 0 : A.total,
114
118
  manualPagination: !0,
115
119
  // Handle pagination manually since pagination is done server side for data tables
116
120
  onPaginationChange: (e) => {
117
121
  const t = typeof e == "function" ? e(m) : e;
118
- i({ pagination: t });
122
+ l({ pagination: t });
119
123
  },
120
124
  manualSorting: !0,
121
125
  // Handle sorting manually since sorting is done server side for data tables
122
126
  onSortingChange: (e) => {
123
127
  const t = typeof e == "function" ? e(g) : e;
124
- i({ sorting: t, rowSelection: {} });
128
+ l({ sorting: t, rowSelection: {} });
125
129
  },
126
130
  manualFiltering: !0,
127
131
  // Handle filtering manually since filtering is done server side for data tables
128
132
  onGlobalFilterChange: (e) => {
129
- const t = typeof e == "function" ? e(C) : e;
130
- i({ columnFilters: t });
133
+ const t = typeof e == "function" ? e(h) : e;
134
+ l({ columnFilters: t });
131
135
  },
132
136
  onColumnVisibilityChange: (e) => {
133
- const t = typeof e == "function" ? e(S) : e;
134
- i({ columnVisibility: t });
137
+ const t = typeof e == "function" ? e(b) : e;
138
+ l({ columnVisibility: t });
135
139
  },
136
140
  onRowSelectionChange: (e) => {
137
- const t = typeof e == "function" ? e(w) : e;
138
- i({ rowSelection: t });
141
+ const t = typeof e == "function" ? e(y) : e;
142
+ l({ rowSelection: t });
139
143
  },
140
144
  state: {
141
145
  sorting: g,
142
- columnFilters: C,
143
- columnVisibility: S,
146
+ columnFilters: h,
147
+ columnVisibility: b,
144
148
  pagination: m,
145
- rowSelection: w
149
+ rowSelection: y
146
150
  },
147
151
  meta: {
148
- refetch: a.refetch
152
+ refetch: n.refetch
149
153
  }
150
154
  });
151
- return /* @__PURE__ */ n(D, { children: /* @__PURE__ */ c("div", { className: "bg-card", children: [
152
- /* @__PURE__ */ n(
153
- W,
155
+ return /* @__PURE__ */ a(z, { children: /* @__PURE__ */ c("section", { ...E, className: K("flex flex-col bg-card", F), children: [
156
+ /* @__PURE__ */ a(
157
+ Y,
154
158
  {
155
- dataQuery: a,
159
+ dataQuery: n,
156
160
  getSelectedRowModel: o.getSelectedRowModel,
157
- tableActions: d,
158
- handleSearching: (e) => i({ searching: e })
161
+ tableActions: V,
162
+ handleSearching: (e) => l({ searching: e })
159
163
  }
160
164
  ),
161
- /* @__PURE__ */ n("div", { className: "w-full overflow-auto border-x", tabIndex: 0, children: /* @__PURE__ */ n(
162
- X,
165
+ /* @__PURE__ */ a("div", { className: "w-full overflow-auto border-x grow", tabIndex: 0, children: /* @__PURE__ */ a(
166
+ Z,
163
167
  {
164
168
  getRowModel: o.getRowModel,
165
169
  getHeaderGroups: o.getHeaderGroups,
166
- query: a
170
+ query: n
167
171
  }
168
172
  ) }),
169
173
  /* @__PURE__ */ c("div", { className: "flex w-full justify-between border gap-4 p-4 overflow-x-auto", children: [
170
174
  /* @__PURE__ */ c("div", { className: "flex gap-4", children: [
171
- /* @__PURE__ */ n(
172
- B,
175
+ /* @__PURE__ */ a(
176
+ W,
173
177
  {
174
178
  getAllColumns: o.getAllColumns,
175
179
  getIsAllColumnsVisible: o.getIsAllColumnsVisible,
176
180
  toggleAllColumnsVisible: o.toggleAllColumnsVisible
177
181
  }
178
182
  ),
179
- /* @__PURE__ */ n(
180
- G,
183
+ /* @__PURE__ */ a(
184
+ X,
181
185
  {
182
186
  size: o.getState().pagination.pageSize,
183
187
  onSelect: o.setPageSize
184
188
  }
185
189
  )
186
190
  ] }),
187
- /* @__PURE__ */ n(
188
- Q,
191
+ /* @__PURE__ */ a(
192
+ J,
189
193
  {
190
194
  firstPage: o.firstPage,
191
195
  previousPage: o.previousPage,
@@ -194,14 +198,14 @@ function he({
194
198
  lastPage: o.lastPage,
195
199
  nextPage: o.nextPage,
196
200
  getState: o.getState,
197
- rowCount: ((v = a.data) == null ? void 0 : v.total) ?? 0
201
+ rowCount: ((T = n.data) == null ? void 0 : T.total) ?? 0
198
202
  }
199
203
  )
200
204
  ] })
201
205
  ] }) });
202
206
  }
203
207
  export {
204
- N as ACTIONS_COLUMN_ID,
205
- he as DataTable
208
+ _ as ACTIONS_COLUMN_ID,
209
+ Pe as DataTable
206
210
  };
207
211
  //# sourceMappingURL=data-table.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["\"use client\";\n// import { TableFilter, type FilterFormType } from '@/components/data-table/table-filter';\nimport {\n\tTABLE_CHECK_BOX_COLUMN,\n\tTABLE_DEFAULT_DATE_COLUMNS,\n\tTABLE_ID_COLUMN,\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/index\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport {\n\ttype ColumnDef,\n\ttype ColumnFiltersState,\n\tcreateColumnHelper,\n\tgetCoreRowModel,\n\ttype PaginationState,\n\ttype SortingState,\n\tuseReactTable,\n\ttype VisibilityState,\n} from \"@tanstack/react-table\";\nimport { Info } from \"lucide-react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { ColumnPicker } from \"./column-picker\";\nimport { PageSize } from \"./page-size\";\nimport { Paginator } from \"./paginator\";\nimport Actions from \"./table-actions\";\nimport { TableContent } from \"./table-content\";\nimport type { MetadataDto, TableActions, TableFetchFn } from \"./table-utils\";\n\n/** Reserved name for actions column */\nexport const ACTIONS_COLUMN_ID = \"Actions\";\n\n// Props type for the DataTable component\nexport interface DataTableProps<TData, TValue = any> {\n\tcolumns: ColumnDef<TData, TValue>[]; // Columns for the table\n\ttableName: string; // Table name used as query key\n\tfetchFn: TableFetchFn<TData>; // Function for fetching data from the server\n\ttableActions: TableActions;\n\t// filterableFields: FilterableProperties<TData>; // Fields that can be filtered\n\tcolumnsToHideByDefault: VisibilityState; // Columns that are hidden by default\n}\nexport function DataTable<TData extends Record<string, any>, TValue = any>({\n\tcolumns,\n\tfetchFn,\n\ttableName,\n\ttableActions,\n\tcolumnsToHideByDefault,\n\t// filterableFields,\n}: DataTableProps<TData, TValue>) {\n\t// State for managing table data and filters\n\n\t//TODO: This is later to be stored in url as params\n\tconst [tableState, setTableState] = useState({\n\t\tsorting: [] as SortingState, // Sorting state\n\t\tcolumnFilters: [] as ColumnFiltersState, // Filters for columns\n\t\tsearching: \"\", // Search query state\n\t\tcolumnVisibility: {} as VisibilityState, // Visibility of columns\n\t\trowSelection: {}, // Row selection state\n\t\tpagination: { pageIndex: 0, pageSize: 20 } as PaginationState, // Pagination state\n\t});\n\n\t// Update table state with new values\n\tconst updateTableState = (updates: Partial<typeof tableState>) => {\n\t\tsetTableState((prev) => ({ ...prev, ...updates }));\n\t};\n\n\t// Destructuring the table state for easier access\n\tconst {\n\t\tsorting,\n\t\tcolumnFilters,\n\t\tsearching,\n\t\tcolumnVisibility,\n\t\trowSelection,\n\t\tpagination,\n\t} = tableState;\n\n\t// Debounce the search query to avoid making a request on every keystroke\n\t// const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n\t// Update column visibility when columnsToHideByDefault changes\n\tuseEffect(() => {\n\t\tupdateTableState({\n\t\t\tcolumnVisibility: {\n\t\t\t\tid: false,\n\t\t\t\tupdatedAt: false,\n\t\t\t\t...columnsToHideByDefault,\n\t\t\t},\n\t\t});\n\t}, [columnsToHideByDefault]);\n\t// const [filters, setFilters] = useState<FilterFormType[]>([]);\n\n\t// const formatedFilters = useMemo(() => {\n\t// return filters.reduce((acc, filter) => {\n\t// const { property, value, operator } = filter;\n\t// if (!acc[property]) {\n\t// acc[property] = {};\n\t// }\n\t// acc[property][operator] = value;\n\t// return acc;\n\t// }, {} as Record<string, Record<string, any>>);\n\t// }, [filters]);\n\n\t// Fetch table data using the fetchFn and react-query's useQuery hook\n\tconst query = useQuery({\n\t\tqueryKey: [tableName, pagination, sorting, searching.trim()],\n\t\tqueryFn: () => fetchFn(pagination, sorting, searching.trim()),\n\t\tplaceholderData: keepPreviousData, // Keep previous data while loading new data\n\t\tretry: 0,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\t// Create column helpers for dynamic column generation\n\tconst columnHelper = createColumnHelper<TData>();\n\tconst metadataColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n\t\tconst data = query.data?.data;\n\t\tif (!data?.length) return [];\n\t\t// set of all the keys present in a given view\n\t\tconst allMetadataKeys = new Set<string>();\n\n\t\t// Collect all unique metadata keys\n\t\tdata.forEach((row: TData) => {\n\t\t\tif (row.metadata) {\n\t\t\t\trow.metadata.forEach((meta: MetadataDto) => {\n\t\t\t\t\tallMetadataKeys.add(meta.key);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Generate columns for all unique metadata keys\n\t\treturn Array.from(allMetadataKeys).map((key) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(row: TData) => {\n\t\t\t\t\t// Find the metadata object with the matching key\n\t\t\t\t\tconst metadataEntry = row.metadata?.find(\n\t\t\t\t\t\t(meta: MetadataDto) => meta.key === key,\n\t\t\t\t\t);\n\t\t\t\t\treturn metadataEntry?.value; // Return the value for the specific key\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: () => (\n\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t<span className=\"flex gap-1 items-center align-middle\">\n\t\t\t\t\t\t\t\t\t\t{key} <Info size={18} strokeWidth={\"1px\"} />\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>Metadata Key</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t), // Use the metadata key as the column header\n\t\t\t\t\tid: key,\n\t\t\t\t\tenableSorting: false,\n\t\t\t\t\tcell: (info) => {\n\t\t\t\t\t\tconst value = info.getValue();\n\t\t\t\t\t\t// Handle null/undefined values\n\t\t\t\t\t\tif (value === null || value === undefined) return \"\";\n\t\t\t\t\t\t// For primitive types, return the string representation\n\t\t\t\t\t\treturn String(value);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}, [query.data?.data]);\n\n\t/**\n\t * ID,createdAt and updatedAt will be added by default for all tables\n\t * If selection is allowed, checkbox will be added\n\t * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n\t * If there are actions for the table, they will be placed fixed at the right side of table.\n\t */\n\tconst extendedColumns = useMemo<ColumnDef<any, any>[]>(() => {\n\t\tconst _columns = [\n\t\t\t...(tableActions.selection ? TABLE_CHECK_BOX_COLUMN : []),\n\t\t\t...TABLE_ID_COLUMN,\n\t\t\t...columns.filter((col) => col.id !== ACTIONS_COLUMN_ID),\n\t\t\t...(metadataColumns.length ? metadataColumns : []),\n\t\t\t...TABLE_DEFAULT_DATE_COLUMNS,\n\t\t\t...columns.filter((col) => col.id === ACTIONS_COLUMN_ID),\n\t\t];\n\n\t\treturn _columns;\n\t}, [columns, metadataColumns, query.data?.data, tableActions.selection]);\n\n\t// Use react-table's hook to create the table instance\n\tconst table = useReactTable({\n\t\tdata: query.data?.data ?? [],\n\t\tcolumns: extendedColumns,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\trowCount: query.data?.total,\n\t\tmanualPagination: true, // Handle pagination manually since pagination is done server side for data tables\n\t\tonPaginationChange: (updater) => {\n\t\t\tconst newPagination =\n\t\t\t\ttypeof updater === \"function\" ? updater(pagination) : updater;\n\t\t\tupdateTableState({ pagination: newPagination });\n\t\t},\n\t\tmanualSorting: true, // Handle sorting manually since sorting is done server side for data tables\n\t\tonSortingChange: (updater) => {\n\t\t\tconst newSorting =\n\t\t\t\ttypeof updater === \"function\" ? updater(sorting) : updater;\n\t\t\t// Reset selection when sorting.\n\t\t\tupdateTableState({ sorting: newSorting, rowSelection: {} });\n\t\t},\n\t\tmanualFiltering: true, // Handle filtering manually since filtering is done server side for data tables\n\t\tonGlobalFilterChange: (updater) => {\n\t\t\tconst newFilters =\n\t\t\t\ttypeof updater === \"function\" ? updater(columnFilters) : updater;\n\t\t\tupdateTableState({ columnFilters: newFilters });\n\t\t},\n\t\tonColumnVisibilityChange: (updater) => {\n\t\t\tconst newVisibility =\n\t\t\t\ttypeof updater === \"function\" ? updater(columnVisibility) : updater;\n\t\t\tupdateTableState({ columnVisibility: newVisibility });\n\t\t},\n\t\tonRowSelectionChange: (updater) => {\n\t\t\tconst newSelection =\n\t\t\t\ttypeof updater === \"function\" ? updater(rowSelection) : updater;\n\t\t\tupdateTableState({ rowSelection: newSelection });\n\t\t},\n\t\tstate: {\n\t\t\tsorting,\n\t\t\tcolumnFilters,\n\t\t\tcolumnVisibility,\n\t\t\tpagination,\n\t\t\trowSelection,\n\t\t},\n\t\tmeta: {\n\t\t\trefetch: query.refetch,\n\t\t},\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{/* <TableFilter\n filterableProperties={{ ...filterableFields, ...DEFAULT_FILTERABLE_FIELDS }}\n filters={filters}\n onFiltersChange={setFilters}\n /> */}\n\n\t\t\t{/* Table Actions Section */}\n\t\t\t<div className=\"bg-card\">\n\t\t\t\t<Actions\n\t\t\t\t\tdataQuery={query}\n\t\t\t\t\tgetSelectedRowModel={table.getSelectedRowModel}\n\t\t\t\t\ttableActions={tableActions}\n\t\t\t\t\thandleSearching={(value) => updateTableState({ searching: value })}\n\t\t\t\t/>\n\n\t\t\t\t{/* The div here is necessary because TableContent is internally a <table> tag and does not respect width, height CSS */}\n\t\t\t\t<div className=\"w-full overflow-auto border-x\" tabIndex={0}>\n\t\t\t\t\t<TableContent\n\t\t\t\t\t\tgetRowModel={table.getRowModel}\n\t\t\t\t\t\tgetHeaderGroups={table.getHeaderGroups}\n\t\t\t\t\t\tquery={query}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Table Footer Section with Pagination and Column Picker */}\n\t\t\t\t<div className=\"flex w-full justify-between border gap-4 p-4 overflow-x-auto\">\n\t\t\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t\t\t<ColumnPicker\n\t\t\t\t\t\t\tgetAllColumns={table.getAllColumns}\n\t\t\t\t\t\t\tgetIsAllColumnsVisible={table.getIsAllColumnsVisible}\n\t\t\t\t\t\t\ttoggleAllColumnsVisible={table.toggleAllColumnsVisible}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PageSize\n\t\t\t\t\t\t\tsize={table.getState().pagination.pageSize}\n\t\t\t\t\t\t\tonSelect={table.setPageSize}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Paginator\n\t\t\t\t\t\tfirstPage={table.firstPage}\n\t\t\t\t\t\tpreviousPage={table.previousPage}\n\t\t\t\t\t\tgetCanNextPage={table.getCanNextPage}\n\t\t\t\t\t\tgetCanPreviousPage={table.getCanPreviousPage}\n\t\t\t\t\t\tlastPage={table.lastPage}\n\t\t\t\t\t\tnextPage={table.nextPage}\n\t\t\t\t\t\tgetState={table.getState}\n\t\t\t\t\t\trowCount={query.data?.total ?? 0}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n}\n"],"names":["ACTIONS_COLUMN_ID","DataTable","columns","fetchFn","tableName","tableActions","columnsToHideByDefault","tableState","setTableState","useState","updateTableState","updates","prev","sorting","columnFilters","searching","columnVisibility","rowSelection","pagination","useEffect","query","useQuery","keepPreviousData","columnHelper","createColumnHelper","metadataColumns","useMemo","data","_a","allMetadataKeys","row","meta","key","metadataEntry","jsx","TooltipProvider","Tooltip","TooltipTrigger","jsxs","Info","TooltipContent","info","value","extendedColumns","TABLE_CHECK_BOX_COLUMN","TABLE_ID_COLUMN","col","TABLE_DEFAULT_DATE_COLUMNS","_b","table","useReactTable","_c","getCoreRowModel","_d","updater","newPagination","newSorting","newFilters","newVisibility","newSelection","Fragment","Actions","TableContent","ColumnPicker","PageSize","Paginator","_e"],"mappings":"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"}
1
+ {"version":3,"file":"data-table.es.js","sources":["../../../lib/components/data-table/data-table.tsx"],"sourcesContent":["\"use client\";\n// import { TableFilter, type FilterFormType } from '@/components/data-table/table-filter';\nimport {\n\tcn,\n\tTABLE_CHECK_BOX_COLUMN,\n\tTABLE_DEFAULT_DATE_COLUMNS,\n\tTABLE_ID_COLUMN,\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/index\";\nimport { keepPreviousData, useQuery } from \"@tanstack/react-query\";\nimport {\n\ttype ColumnDef,\n\ttype ColumnFiltersState,\n\tcreateColumnHelper,\n\tgetCoreRowModel,\n\ttype PaginationState,\n\ttype SortingState,\n\ttype TableOptions,\n\tuseReactTable,\n\ttype VisibilityState,\n} from \"@tanstack/react-table\";\nimport { Info } from \"lucide-react\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { ColumnPicker } from \"./column-picker\";\nimport { PageSize } from \"./page-size\";\nimport { Paginator } from \"./paginator\";\nimport Actions from \"./table-actions\";\nimport { TableContent } from \"./table-content\";\nimport type { MetadataDto, TableActions, TableFetchFn } from \"./table-utils\";\n\n/** Reserved name for actions column */\nexport const ACTIONS_COLUMN_ID = \"Actions\";\n\n// Props type for the DataTable component\nexport interface DataTableProps<TData> extends Pick<TableOptions<TData>, 'columns'>, React.ComponentProps<'section'> {\n\t// \n\t// columns: ColumnDef<TData>[]; // Columns for the table\n\t// tableName: string; // Table name used as query key\n\tfetchFn: TableFetchFn<TData>; // Function for fetching data from the server\n\ttableActions: TableActions;\n\tallowSelection: boolean;\n\t// filterableFields: FilterableProperties<TData>; // Fields that can be filtered\n\tcolumnsToHideByDefault: VisibilityState; // Columns that are hidden by default\n}\nexport function DataTable<TData extends object>({\n\tcolumns,\n\tfetchFn,\n\t// tableName,\n\ttableActions,\n\tcolumnsToHideByDefault,\n\tallowSelection,\n\tclassName,\n\t...props\n\t// filterableFields,\n}: DataTableProps<TData>) {\n\t// State for managing table data and filters\n\n\t//TODO: This is later to be stored in url as params\n\tconst [tableState, setTableState] = useState({\n\t\tsorting: [] as SortingState, // Sorting state\n\t\tcolumnFilters: [] as ColumnFiltersState, // Filters for columns\n\t\tsearching: \"\", // Search query state\n\t\tcolumnVisibility: {} as VisibilityState, // Visibility of columns\n\t\trowSelection: {}, // Row selection state\n\t\tpagination: { pageIndex: 0, pageSize: 20 } as PaginationState, // Pagination state\n\t});\n\n\t// Update table state with new values\n\tconst updateTableState = (updates: Partial<typeof tableState>) => {\n\t\tsetTableState((prev) => ({ ...prev, ...updates }));\n\t};\n\n\t// Destructuring the table state for easier access\n\tconst {\n\t\tsorting,\n\t\tcolumnFilters,\n\t\tsearching,\n\t\tcolumnVisibility,\n\t\trowSelection,\n\t\tpagination,\n\t} = tableState;\n\n\t// Debounce the search query to avoid making a request on every keystroke\n\t// const [debouncedQuery] = useDebounce(searching.trim(), 300);\n\n\t// Update column visibility when columnsToHideByDefault changes\n\tuseEffect(() => {\n\t\tupdateTableState({\n\t\t\tcolumnVisibility: {\n\t\t\t\tid: false,\n\t\t\t\tupdatedAt: false,\n\t\t\t\t...columnsToHideByDefault,\n\t\t\t},\n\t\t});\n\t}, [columnsToHideByDefault]);\n\t// const [filters, setFilters] = useState<FilterFormType[]>([]);\n\n\t// const formatedFilters = useMemo(() => {\n\t// return filters.reduce((acc, filter) => {\n\t// const { property, value, operator } = filter;\n\t// if (!acc[property]) {\n\t// acc[property] = {};\n\t// }\n\t// acc[property][operator] = value;\n\t// return acc;\n\t// }, {} as Record<string, Record<string, any>>);\n\t// }, [filters]);\n\n\t// Fetch table data using the fetchFn and react-query's useQuery hook\n\tconst query = useQuery({\n\t\tqueryKey: [fetchFn.toString(), pagination, sorting, searching.trim()],\n\t\tqueryFn: () => fetchFn(pagination, sorting, searching.trim()),\n\t\tplaceholderData: keepPreviousData, // Keep previous data while loading new data\n\t\tretry: 0,\n\t\trefetchOnWindowFocus: false,\n\t});\n\n\n\t// TODO Memoizing here seems wasteful\n\t// TODO is createColumnHelper an expensive operation?\n\tconst columnHelper = createColumnHelper<TData>();\n\tconst metadataColumns = useMemo<ColumnDef<TData>[]>(() => {\n\t\tconst data = query.data?.data;\n\t\tif (!data?.length) return [];\n\t\t// set of all the keys present in a given view\n\t\tconst allMetadataKeys = new Set<string>();\n\n\t\t// Collect all unique metadata keys\n\t\tdata.forEach((row: TData) => {\n\t\t\tif ('metadata' in row && row.metadata && Array.isArray(row.metadata)) {\n\t\t\t\trow.metadata.forEach((meta: MetadataDto) => {\n\t\t\t\t\tallMetadataKeys.add(meta.key);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\t// Generate columns for all unique metadata keys\n\t\treturn Array.from(allMetadataKeys).map((key) =>\n\t\t\tcolumnHelper.accessor(\n\t\t\t\t(row: TData) => {\n\t\t\t\t\t// Find the metadata object with the matching key\n\t\t\t\t\tconst metadataEntry = row.metadata?.find(\n\t\t\t\t\t\t(meta: MetadataDto) => meta.key === key,\n\t\t\t\t\t);\n\t\t\t\t\treturn metadataEntry?.value; // Return the value for the specific key\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: () => (\n\t\t\t\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t\t\t\t<Tooltip>\n\t\t\t\t\t\t\t\t<TooltipTrigger asChild>\n\t\t\t\t\t\t\t\t\t<span className=\"flex gap-1 items-center align-middle\">\n\t\t\t\t\t\t\t\t\t\t{key} <Info size={18} strokeWidth={\"1px\"} />\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</TooltipTrigger>\n\t\t\t\t\t\t\t\t<TooltipContent>Metadata Key</TooltipContent>\n\t\t\t\t\t\t\t</Tooltip>\n\t\t\t\t\t\t</TooltipProvider>\n\t\t\t\t\t), // Use the metadata key as the column header\n\t\t\t\t\tid: key,\n\t\t\t\t\tenableSorting: false,\n\t\t\t\t\tcell: (info) => {\n\t\t\t\t\t\tconst value = info.getValue();\n\t\t\t\t\t\t// Handle null/undefined values\n\t\t\t\t\t\tif (value === null || value === undefined) return \"\";\n\t\t\t\t\t\t// For primitive types, return the string representation\n\t\t\t\t\t\treturn String(value);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t),\n\t\t);\n\t}, [query.data?.data]);\n\n\t/**\n\t * ID,createdAt and updatedAt will be added by default for all tables\n\t * If selection is allowed, checkbox will be added\n\t * If the dto has metadata, dynamics columns for all the metadata key-value will be added(particular for a view)\n\t * If there are actions for the table, they will be placed fixed at the right side of table.\n\t */\n\tconst extendedColumns = useMemo<ColumnDef<any, any>[]>(() => {\n\t\tconst _columns = [\n\t\t\t...(allowSelection ? TABLE_CHECK_BOX_COLUMN : []),\n\t\t\t...TABLE_ID_COLUMN,\n\t\t\t...columns.filter((col) => col.id !== ACTIONS_COLUMN_ID),\n\t\t\t...(metadataColumns.length ? metadataColumns : []),\n\t\t\t...TABLE_DEFAULT_DATE_COLUMNS,\n\t\t\t...columns.filter((col) => col.id === ACTIONS_COLUMN_ID),\n\t\t];\n\n\t\treturn _columns;\n\t}, [columns, metadataColumns, query.data?.data, allowSelection]);\n\n\t// Use react-table's hook to create the table instance\n\tconst table = useReactTable({\n\t\tdata: query.data?.data ?? [],\n\t\tcolumns: extendedColumns,\n\t\tgetCoreRowModel: getCoreRowModel(),\n\t\trowCount: query.data?.total,\n\t\tmanualPagination: true, // Handle pagination manually since pagination is done server side for data tables\n\t\tonPaginationChange: (updater) => {\n\t\t\tconst newPagination =\n\t\t\t\ttypeof updater === \"function\" ? updater(pagination) : updater;\n\t\t\tupdateTableState({ pagination: newPagination });\n\t\t},\n\t\tmanualSorting: true, // Handle sorting manually since sorting is done server side for data tables\n\t\tonSortingChange: (updater) => {\n\t\t\tconst newSorting =\n\t\t\t\ttypeof updater === \"function\" ? updater(sorting) : updater;\n\t\t\t// Reset selection when sorting.\n\t\t\tupdateTableState({ sorting: newSorting, rowSelection: {} });\n\t\t},\n\t\tmanualFiltering: true, // Handle filtering manually since filtering is done server side for data tables\n\t\tonGlobalFilterChange: (updater) => {\n\t\t\tconst newFilters =\n\t\t\t\ttypeof updater === \"function\" ? updater(columnFilters) : updater;\n\t\t\tupdateTableState({ columnFilters: newFilters });\n\t\t},\n\t\tonColumnVisibilityChange: (updater) => {\n\t\t\tconst newVisibility =\n\t\t\t\ttypeof updater === \"function\" ? updater(columnVisibility) : updater;\n\t\t\tupdateTableState({ columnVisibility: newVisibility });\n\t\t},\n\t\tonRowSelectionChange: (updater) => {\n\t\t\tconst newSelection =\n\t\t\t\ttypeof updater === \"function\" ? updater(rowSelection) : updater;\n\t\t\tupdateTableState({ rowSelection: newSelection });\n\t\t},\n\t\tstate: {\n\t\t\tsorting,\n\t\t\tcolumnFilters,\n\t\t\tcolumnVisibility,\n\t\t\tpagination,\n\t\t\trowSelection,\n\t\t},\n\t\tmeta: {\n\t\t\trefetch: query.refetch,\n\t\t},\n\t});\n\n\treturn (\n\t\t<>\n\t\t\t{/* TODO, explore filtering component being outside the data-table, fine-grained theming would be nice here */}\n\t\t\t{/* Also, the data-table is a huuuuuge component, it would be nice to have it broken into pieces a little */}\n\t\t\t{/* ContextAPI???? */}\n\n\t\t\t{/* <TableFilter\n filterableProperties={{ ...filterableFields, ...DEFAULT_FILTERABLE_FIELDS }}\n filters={filters}\n onFiltersChange={setFilters}\n /> */}\n\n\t\t\t{/* Table Actions Section */}\n\t\t\t<section {...props} className={cn(\"flex flex-col bg-card\", className)}>\n\t\t\t\t<Actions\n\t\t\t\t\tdataQuery={query}\n\t\t\t\t\tgetSelectedRowModel={table.getSelectedRowModel}\n\t\t\t\t\ttableActions={tableActions}\n\t\t\t\t\thandleSearching={(value) => updateTableState({ searching: value })}\n\t\t\t\t/>\n\n\t\t\t\t{/* The div here is necessary because TableContent is internally a <table> tag and does not respect width, height CSS */}\n\t\t\t\t<div className=\"w-full overflow-auto border-x grow\" tabIndex={0}>\n\t\t\t\t\t<TableContent\n\t\t\t\t\t\tgetRowModel={table.getRowModel}\n\t\t\t\t\t\tgetHeaderGroups={table.getHeaderGroups}\n\t\t\t\t\t\tquery={query}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\n\t\t\t\t{/* Table Footer Section with Pagination and Column Picker */}\n\t\t\t\t<div className=\"flex w-full justify-between border gap-4 p-4 overflow-x-auto\">\n\t\t\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t\t\t<ColumnPicker\n\t\t\t\t\t\t\tgetAllColumns={table.getAllColumns}\n\t\t\t\t\t\t\tgetIsAllColumnsVisible={table.getIsAllColumnsVisible}\n\t\t\t\t\t\t\ttoggleAllColumnsVisible={table.toggleAllColumnsVisible}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<PageSize\n\t\t\t\t\t\t\tsize={table.getState().pagination.pageSize}\n\t\t\t\t\t\t\tonSelect={table.setPageSize}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t\t<Paginator\n\t\t\t\t\t\tfirstPage={table.firstPage}\n\t\t\t\t\t\tpreviousPage={table.previousPage}\n\t\t\t\t\t\tgetCanNextPage={table.getCanNextPage}\n\t\t\t\t\t\tgetCanPreviousPage={table.getCanPreviousPage}\n\t\t\t\t\t\tlastPage={table.lastPage}\n\t\t\t\t\t\tnextPage={table.nextPage}\n\t\t\t\t\t\tgetState={table.getState}\n\t\t\t\t\t\trowCount={query.data?.total ?? 0}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</section>\n\t\t</>\n\t);\n}\n"],"names":["ACTIONS_COLUMN_ID","DataTable","columns","fetchFn","tableActions","columnsToHideByDefault","allowSelection","className","props","tableState","setTableState","useState","updateTableState","updates","prev","sorting","columnFilters","searching","columnVisibility","rowSelection","pagination","useEffect","query","useQuery","keepPreviousData","columnHelper","createColumnHelper","metadataColumns","useMemo","data","_a","allMetadataKeys","row","meta","key","metadataEntry","jsx","TooltipProvider","Tooltip","TooltipTrigger","jsxs","Info","TooltipContent","info","value","extendedColumns","TABLE_CHECK_BOX_COLUMN","TABLE_ID_COLUMN","col","TABLE_DEFAULT_DATE_COLUMNS","_b","table","useReactTable","_c","getCoreRowModel","_d","updater","newPagination","newSorting","newFilters","newVisibility","newSelection","Fragment","cn","Actions","TableContent","ColumnPicker","PageSize","Paginator","_e"],"mappings":"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"}
@@ -1,46 +1,26 @@
1
- import { jsxs as n, jsx as e, Fragment as o } from "react/jsx-runtime";
2
- import { RotateCw as u } from "lucide-react";
3
- import { Button as s } from "../ui/button.es.js";
4
- import { useState as g } from "react";
5
- import { SearchInput as t } from "../inputs/search-input.es.js";
6
- function j({
7
- tableActions: r,
8
- getSelectedRowModel: m,
9
- handleSearching: a,
10
- dataQuery: f
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { RotateCw as o } from "lucide-react";
3
+ import { Button as i } from "../ui/button.es.js";
4
+ import { useState as r } from "react";
5
+ function p({
6
+ tableActions: n,
7
+ getSelectedRowModel: a,
8
+ handleSearching: c,
9
+ dataQuery: t
11
10
  }) {
12
- const [p, i] = g("");
13
- return /* @__PURE__ */ n("div", { className: "flex bg-card justify-between my-0 p-4 border gap-4 overflow-auto", children: [
14
- /* @__PURE__ */ n("div", { className: "flex gap-4", children: [
15
- /* @__PURE__ */ e(
16
- s,
17
- {
18
- loading: f.isFetching,
19
- icon: () => u,
20
- onClick: () => f.refetch(),
21
- variant: "outline",
22
- size: "icon"
23
- }
24
- ),
25
- r.create && m().rows.length === 0 && // biome-ignore lint/complexity/noUselessFragments: <explanation>
26
- /* @__PURE__ */ e(o, {}),
27
- m().rows.length > 0 && r.update && // biome-ignore lint/complexity/noUselessFragments: <explanation>
28
- /* @__PURE__ */ e(o, {}),
29
- m().rows.length > 0 && (r == null ? void 0 : r.delete) && // biome-ignore lint/complexity/noUselessFragments: <explanation>
30
- /* @__PURE__ */ e(o, {})
31
- ] }),
32
- (r == null ? void 0 : r.search) && /* @__PURE__ */ e(
33
- t,
34
- {
35
- value: p,
36
- onChange: (h) => {
37
- i(h), a(h);
38
- }
39
- }
40
- )
41
- ] });
11
+ const [l, s] = r("");
12
+ return /* @__PURE__ */ e("div", { className: "flex bg-card justify-between my-0 p-4 border gap-4 overflow-auto", children: /* @__PURE__ */ e("div", { className: "flex gap-4", children: /* @__PURE__ */ e(
13
+ i,
14
+ {
15
+ loading: t.isFetching,
16
+ icon: () => o,
17
+ onClick: () => t.refetch(),
18
+ variant: "outline",
19
+ size: "icon"
20
+ }
21
+ ) }) });
42
22
  }
43
23
  export {
44
- j as default
24
+ p as default
45
25
  };
46
26
  //# sourceMappingURL=table-actions.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-actions.es.js","sources":["../../../lib/components/data-table/table-actions.tsx"],"sourcesContent":["import { RotateCw } from \"lucide-react\";\n\nimport type { TableActions } from \"@/components/data-table/table-utils/index\";\nimport { SearchInput } from \"@/components/inputs\";\nimport { Button } from \"@/components/ui/button\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\nimport type { RowModel } from \"@tanstack/react-table\";\nimport { useState } from \"react\";\n\nexport default function Actions({\n\ttableActions,\n\tgetSelectedRowModel,\n\thandleSearching,\n\tdataQuery,\n}: {\n\ttableActions: TableActions;\n\tgetSelectedRowModel: () => RowModel<any>;\n\thandleSearching: (value: string) => void;\n\tdataQuery: UseQueryResult<any, unknown>;\n}) {\n\t// const { location: { href } = {} } = useRouterState();\n\tconst [search, setSearch] = useState<string>(\"\");\n\treturn (\n\t\t<div className=\"flex bg-card justify-between my-0 p-4 border gap-4 overflow-auto\">\n\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t<Button\n\t\t\t\t\tloading={dataQuery.isFetching}\n\t\t\t\t\ticon={() => RotateCw}\n\t\t\t\t\tonClick={() => dataQuery.refetch()}\n\t\t\t\t\tvariant={\"outline\"}\n\t\t\t\t\tsize={\"icon\"}\n\t\t\t\t/>\n\t\t\t\t{/* //TODO: we can show the create, delete button based on permsission */}\n\t\t\t\t{/* All the creating routes will be with url /create in host app */}\n\t\t\t\t{tableActions.create && getSelectedRowModel().rows.length === 0 && (\n\t\t\t\t\t// biome-ignore lint/complexity/noUselessFragments: <explanation>\n\t\t\t\t\t<></>\n\t\t\t\t\t// <Link to={`${href}/create`}>\n\t\t\t\t\t// <Button disabled={dataQuery.isFetching} icon={() => Plus}>\n\t\t\t\t\t// Create\n\t\t\t\t\t// </Button>{' '}\n\t\t\t\t\t// </Link>\n\t\t\t\t)}\n\t\t\t\t{/* All the updating routes will be with url /edit in host app */}\n\t\t\t\t{getSelectedRowModel().rows.length > 0 && tableActions.update && (\n\t\t\t\t\t// biome-ignore lint/complexity/noUselessFragments: <explanation>\n\t\t\t\t\t<></>\n\t\t\t\t\t// <Link to={`${href}/edit`} state={stateToPass}>\n\t\t\t\t\t// <Button disabled={dataQuery.isFetching} icon={() => Pencil}>\n\t\t\t\t\t// Update\n\t\t\t\t\t// </Button>\n\t\t\t\t\t// </Link>\n\t\t\t\t)}\n\t\t\t\t{getSelectedRowModel().rows.length > 0 && tableActions?.delete && (\n\t\t\t\t\t// biome-ignore lint/complexity/noUselessFragments: <explanation>\n\t\t\t\t\t<></>\n\t\t\t\t\t// <Link to={`${href}/delete`} state={stateToPass}>\n\t\t\t\t\t// <Button disabled={dataQuery.isFetching} icon={() => Trash} variant={'destructive'}>\n\t\t\t\t\t// Delete\n\t\t\t\t\t// </Button>\n\t\t\t\t\t// </Link>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t\t{tableActions?.search && (\n\t\t\t\t<SearchInput\n\t\t\t\t\tvalue={search}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetSearch(e);\n\t\t\t\t\t\thandleSearching(e);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["Actions","tableActions","getSelectedRowModel","handleSearching","dataQuery","search","setSearch","useState","jsxs","jsx","Button","RotateCw","Fragment","SearchInput","e"],"mappings":";;;;;AASA,SAAwBA,EAAQ;AAAA,EAC/B,cAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AACD,GAKG;AAEF,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAiB,EAAE;AAC/C,SACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,oEACd,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,cACd,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAACC;AAAA,QAAA;AAAA,UACA,SAASN,EAAU;AAAA,UACnB,MAAM,MAAMO;AAAA,UACZ,SAAS,MAAMP,EAAU,QAAA;AAAA,UACzB,SAAS;AAAA,UACT,MAAM;AAAA,QAAA;AAAA,MAAA;AAAA,MAINH,EAAa,UAAUC,EAAA,EAAsB,KAAK,WAAW;AAAA,MAE7D,gBAAAO,EAAAG,GAAA,EAAE;AAAA,MAQFV,EAAA,EAAsB,KAAK,SAAS,KAAKD,EAAa;AAAA,MAEtD,gBAAAQ,EAAAG,GAAA,EAAE;AAAA,MAOFV,EAAA,EAAsB,KAAK,SAAS,MAAKD,KAAA,gBAAAA,EAAc;AAAA,MAEvD,gBAAAQ,EAAAG,GAAA,CAAA,CAAE;AAAA,IAAA,GAOJ;AAAA,KACCX,KAAA,gBAAAA,EAAc,WACd,gBAAAQ;AAAA,MAACI;AAAA,MAAA;AAAA,QACA,OAAOR;AAAA,QACP,UAAU,CAACS,MAAM;AAChB,UAAAR,EAAUQ,CAAC,GACXX,EAAgBW,CAAC;AAAA,QAAA;AAAA,MAClB;AAAA,IAAA;AAAA,EACD,GAEF;AAEF;"}
1
+ {"version":3,"file":"table-actions.es.js","sources":["../../../lib/components/data-table/table-actions.tsx"],"sourcesContent":["import { RotateCw } from \"lucide-react\";\n\nimport type { TableActions } from \"@/components/data-table/table-utils/index\";\nimport { Button } from \"@/components/ui/button\";\nimport type { UseQueryResult } from \"@tanstack/react-query\";\nimport type { RowModel } from \"@tanstack/react-table\";\nimport { useState } from \"react\";\n\nexport default function Actions({\n\ttableActions,\n\tgetSelectedRowModel,\n\thandleSearching,\n\tdataQuery,\n}: {\n\ttableActions: TableActions;\n\tgetSelectedRowModel: () => RowModel<any>;\n\thandleSearching: (value: string) => void;\n\tdataQuery: UseQueryResult<any, unknown>;\n}) {\n\t// const { location: { href } = {} } = useRouterState();\n\tconst [search, setSearch] = useState<string>(\"\");\n\treturn (\n\t\t<div className=\"flex bg-card justify-between my-0 p-4 border gap-4 overflow-auto\">\n\t\t\t<div className=\"flex gap-4\">\n\t\t\t\t<Button\n\t\t\t\t\tloading={dataQuery.isFetching}\n\t\t\t\t\ticon={() => RotateCw}\n\t\t\t\t\tonClick={() => dataQuery.refetch()}\n\t\t\t\t\tvariant={\"outline\"}\n\t\t\t\t\tsize={\"icon\"}\n\t\t\t\t/>\n\t\t\t\t{/* //TODO: we can show the create, delete button based on permsission\n\t\t\t\t{/* All the creating routes will be with url /create in host app */}\n\t\t\t\t{/* */}\n\t\t\t</div>\n\t\t\t{/* {tableActions?.search && (\n\t\t\t\t<SearchInput\n\t\t\t\t\tvalue={search}\n\t\t\t\t\tonChange={(e) => {\n\t\t\t\t\t\tsetSearch(e);\n\t\t\t\t\t\thandleSearching(e);\n\t\t\t\t\t}}\n\t\t\t\t/>\n\t\t\t)} */}\n\t\t</div>\n\t);\n}\n"],"names":["Actions","tableActions","getSelectedRowModel","handleSearching","dataQuery","search","setSearch","useState","jsx","Button","RotateCw"],"mappings":";;;;AAQA,SAAwBA,EAAQ;AAAA,EAC/B,cAAAC;AAAA,EACA,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AACD,GAKG;AAEF,QAAM,CAACC,GAAQC,CAAS,IAAIC,EAAiB,EAAE;AAC/C,2BACE,OAAA,EAAI,WAAU,oEACd,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,cACd,UAAA,gBAAAA;AAAA,IAACC;AAAA,IAAA;AAAA,MACA,SAASL,EAAU;AAAA,MACnB,MAAM,MAAMM;AAAA,MACZ,SAAS,MAAMN,EAAU,QAAA;AAAA,MACzB,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EAAA,GAKR,EAAA,CAUD;AAEF;"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.es.js","sources":["../../../../lib/components/data-table/table-utils/types.ts"],"sourcesContent":["import type { components } from \"@cryptlex/web-api-types\";\nimport type { PaginationState, SortingState } from \"@tanstack/react-table\";\n// export type RoutePath = RoutePaths<typeof routeTree>;\nexport type fieldsToDisplay = {\n\tdisplay: string;\n\taccessor: string;\n};\n[];\nexport enum DYNAMIC_INPUT_TARGET {\n\tUSER = 0,\n\tORGANIZATION = 1,\n\tRESELLER = 2,\n}\nexport type VisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\nexport type TableActions = {\n\t/** True if reading this resource is allowed. */\n\tread: boolean;\n\n\t/** True if creation of resource from dashboard is allowed. */\n\tcreate: boolean;\n\n\t/** True if the resource can be updated */\n\tupdate: boolean;\n\n\t/** True if the resource can be deleted */\n\tdelete: boolean;\n\n\t/** True if the resource can be exported */\n\texport: boolean;\n\n\t/** True if the resource can be linked to tags. */\n\ttag: boolean;\n\n\t/** True if searching is supported. Search is defined by the `query` QueryParameter in the Web API */\n\tsearch: boolean;\n\n\t/** True if selection using checkboxes is allowed */\n\tselection: boolean;\n\n\t/** True if the resource has support for segments */\n\tsegments: boolean;\n};\n\nexport type MetadataDto = components[\"schemas\"][\"MetadataDto\"];\n\nexport type TableFetchFn<TData> = (\n\tp: PaginationState,\n\ts: SortingState,\n\tq: string,\n\t// f: any,\n) => Promise<{\n\ttotal: number;\n\tdata: TData[] | undefined;\n}>;\n/*** Type for hide some of the columns based on the dto of the particular page\n ** `id`, `updatedAt` are by default hidden\n */\nexport type DefaultVisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\n"],"names":["DYNAMIC_INPUT_TARGET"],"mappings":"AAQO,IAAKA,sBAAAA,OACXA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBACAA,EAAAA,EAAA,WAAW,CAAA,IAAX,YAHWA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"types.es.js","sources":["../../../../lib/components/data-table/table-utils/types.ts"],"sourcesContent":["import type { Button } from \"@/components/ui\";\nimport type { components } from \"@cryptlex/web-api-types\";\nimport type { PaginationState, SortingState } from \"@tanstack/react-table\";\n// export type RoutePath = RoutePaths<typeof routeTree>;\nexport type fieldsToDisplay = {\n\tdisplay: string;\n\taccessor: string;\n};\n[];\nexport enum DYNAMIC_INPUT_TARGET {\n\tUSER = 0,\n\tORGANIZATION = 1,\n\tRESELLER = 2,\n}\nexport type VisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\n\nexport type TableActions = Required<Pick<React.ComponentProps<typeof Button>, 'onClick' | 'children' | 'variant' | 'id' | 'icon'>>[]\n\nexport type MetadataDto = components[\"schemas\"][\"MetadataDto\"];\n\nexport type TableFetchFn<TData> = (\n\tp: PaginationState,\n\ts: SortingState,\n\tq: string,\n\t// f: any,\n) => Promise<{\n\ttotal: number;\n\tdata: TData[] | undefined;\n}>;\n/*** Type for hide some of the columns based on the dto of the particular page\n ** `id`, `updatedAt` are by default hidden\n */\nexport type DefaultVisibilityState<T> = {\n\t[K in keyof T]?: boolean;\n};\n"],"names":["DYNAMIC_INPUT_TARGET"],"mappings":"AASO,IAAKA,sBAAAA,OACXA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBACAA,EAAAA,EAAA,WAAW,CAAA,IAAX,YAHWA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs as d, jsx as t } from "react/jsx-runtime";
2
- import { cva as f } from "class-variance-authority";
3
- import { cn as p } from "../../utils/index.es.js";
2
+ import { cva as p } from "class-variance-authority";
3
+ import { cn as f } from "../../utils/index.es.js";
4
4
  import { Loader as x } from "./loader.es.js";
5
- const b = f(
5
+ const b = p(
6
6
  "btn inline-flex items-center justify-center font-medium transition-colors",
7
7
  {
8
8
  variants: {
@@ -32,23 +32,23 @@ function N({
32
32
  className: r,
33
33
  variant: c,
34
34
  size: u,
35
- loading: e,
35
+ loading: n,
36
36
  disabled: l,
37
- icon: n,
37
+ icon: e,
38
38
  trailingIcon: i,
39
39
  children: s,
40
40
  ...m
41
41
  }) {
42
- const o = n ? n() : void 0, a = i ? i() : void 0;
42
+ const o = e ? e() : void 0, a = i ? i() : void 0;
43
43
  return /* @__PURE__ */ d(
44
44
  "button",
45
45
  {
46
- className: p(b({ variant: c, size: u, className: r }), "gap-2"),
47
- disabled: e || l,
46
+ className: f(b({ variant: c, size: u, className: r }), "gap-2"),
47
+ disabled: n || l,
48
48
  ...m,
49
49
  children: [
50
- e ? /* @__PURE__ */ t(x, {}) : o ? /* @__PURE__ */ t(o, { className: "size-icon opacity-60" }) : null,
51
- s && /* @__PURE__ */ t("div", { className: "truncate", children: s }),
50
+ n ? /* @__PURE__ */ t(x, {}) : o ? /* @__PURE__ */ t(o, { className: "size-icon opacity-60" }) : null,
51
+ s && /* @__PURE__ */ t("span", { className: "truncate", children: s }),
52
52
  a ? /* @__PURE__ */ t(a, { className: "size-icon opacity-60" }) : null
53
53
  ]
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"button.es.js","sources":["../../../lib/components/ui/button.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { Loader } from \"./loader\";\n\nexport const buttonVariants = cva(\n\t`btn inline-flex items-center justify-center font-medium transition-colors`,\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"btn-primary\",\n\t\t\t\tdestructive: \"btn-destructive\",\n\t\t\t\toutline: \"btn-outline\",\n\t\t\t\tghost: \"btn-ghost\",\n\t\t\t\tsecondary: \"btn-secondary\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\txs: \"h-5 px-1 text-xs\",\n\t\t\t\tsm: \"h-7 px-2 text-sm\",\n\t\t\t\tdefault: \"input-dim\",\n\t\t\t\ticon: \"size-input\",\n\t\t\t\tlg: \"h-9 px-6 body\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport interface ButtonProps\n\textends React.ComponentProps<\"button\">,\n\t\tVariantProps<typeof buttonVariants> {\n\tloading?: boolean;\n\ticon?: () => LucideIcon;\n\ttrailingIcon?: () => LucideIcon;\n}\n\nexport function Button({\n\tclassName,\n\tvariant,\n\tsize,\n\tloading,\n\tdisabled,\n\ticon,\n\ttrailingIcon,\n\tchildren,\n\t...props\n}: ButtonProps) {\n\tconst Icon = icon ? icon() : undefined;\n\tconst TrailingIcon = trailingIcon ? trailingIcon() : undefined;\n\n\treturn (\n\t\t<button\n\t\t\tclassName={cn(buttonVariants({ variant, size, className }), \"gap-2\")}\n\t\t\tdisabled={loading || disabled}\n\t\t\t{...props}\n\t\t>\n\t\t\t{/* Show loader when loading, otherwise show icon if present */}\n\t\t\t{loading ? (\n\t\t\t\t<Loader />\n\t\t\t) : Icon ? (\n\t\t\t\t<Icon className=\"size-icon opacity-60\" />\n\t\t\t) : null}\n\t\t\t{children && <div className=\"truncate\">{children}</div>}\n\t\t\t{TrailingIcon ? <TrailingIcon className=\"size-icon opacity-60\" /> : null}\n\t\t</button>\n\t);\n}\n"],"names":["buttonVariants","cva","Button","className","variant","size","loading","disabled","icon","trailingIcon","children","props","Icon","TrailingIcon","jsxs","cn","jsx","Loader"],"mappings":";;;;AAOO,MAAMA,IAAiBC;AAAA,EAC7B;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,MAAM;AAAA,MAAA;AAAA,MAEP,MAAM;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,MAAM;AAAA,QACN,IAAI;AAAA,MAAA;AAAA,IACL;AAAA,IAED,iBAAiB;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACP;AAEF;AAUO,SAASC,EAAO;AAAA,EACtB,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACJ,GAAgB;AACf,QAAMC,IAAOJ,IAAOA,EAAA,IAAS,QACvBK,IAAeJ,IAAeA,EAAA,IAAiB;AAErD,SACC,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWC,EAAGf,EAAe,EAAE,SAAAI,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,GAAG,OAAO;AAAA,MACnE,UAAUG,KAAWC;AAAA,MACpB,GAAGI;AAAA,MAGH,UAAA;AAAA,QAAAL,IACA,gBAAAU,EAACC,KAAO,IACLL,sBACFA,GAAA,EAAK,WAAU,wBAAuB,IACpC;AAAA,QACHF,KAAY,gBAAAM,EAAC,OAAA,EAAI,WAAU,YAAY,UAAAN,GAAS;AAAA,QAChDG,IAAe,gBAAAG,EAACH,GAAA,EAAa,WAAU,wBAAuB,IAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvE;"}
1
+ {"version":3,"file":"button.es.js","sources":["../../../lib/components/ui/button.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { Loader } from \"./loader\";\n\nexport const buttonVariants = cva(\n\t`btn inline-flex items-center justify-center font-medium transition-colors`,\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"btn-primary\",\n\t\t\t\tdestructive: \"btn-destructive\",\n\t\t\t\toutline: \"btn-outline\",\n\t\t\t\tghost: \"btn-ghost\",\n\t\t\t\tsecondary: \"btn-secondary\",\n\t\t\t\tlink: \"text-primary underline-offset-4 hover:underline\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\txs: \"h-5 px-1 text-xs\",\n\t\t\t\tsm: \"h-7 px-2 text-sm\",\n\t\t\t\tdefault: \"input-dim\",\n\t\t\t\ticon: \"size-input\",\n\t\t\t\tlg: \"h-9 px-6 body\",\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: \"default\",\n\t\t\tsize: \"default\",\n\t\t},\n\t},\n);\n\nexport interface ButtonProps\n\textends React.ComponentProps<\"button\">,\n\tVariantProps<typeof buttonVariants> {\n\tloading?: boolean;\n\ticon?: () => LucideIcon;\n\ttrailingIcon?: () => LucideIcon;\n}\n\nexport function Button({\n\tclassName,\n\tvariant,\n\tsize,\n\tloading,\n\tdisabled,\n\ticon,\n\ttrailingIcon,\n\tchildren,\n\t...props\n}: ButtonProps) {\n\tconst Icon = icon ? icon() : undefined;\n\tconst TrailingIcon = trailingIcon ? trailingIcon() : undefined;\n\n\treturn (\n\t\t<button\n\t\t\tclassName={cn(buttonVariants({ variant, size, className }), \"gap-2\")}\n\t\t\tdisabled={loading || disabled}\n\t\t\t{...props}\n\t\t>\n\t\t\t{/* Show loader when loading, otherwise show icon if present */}\n\t\t\t{loading ? (\n\t\t\t\t<Loader />\n\t\t\t) : Icon ? (\n\t\t\t\t<Icon className=\"size-icon opacity-60\" />\n\t\t\t) : null}\n\t\t\t{children && <span className=\"truncate\">{children}</span>}\n\t\t\t{TrailingIcon ? <TrailingIcon className=\"size-icon opacity-60\" /> : null}\n\t\t</button>\n\t);\n}\n"],"names":["buttonVariants","cva","Button","className","variant","size","loading","disabled","icon","trailingIcon","children","props","Icon","TrailingIcon","jsxs","cn","jsx","Loader"],"mappings":";;;;AAOO,MAAMA,IAAiBC;AAAA,EAC7B;AAAA,EACA;AAAA,IACC,UAAU;AAAA,MACT,SAAS;AAAA,QACR,SAAS;AAAA,QACT,aAAa;AAAA,QACb,SAAS;AAAA,QACT,OAAO;AAAA,QACP,WAAW;AAAA,QACX,MAAM;AAAA,MAAA;AAAA,MAEP,MAAM;AAAA,QACL,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,SAAS;AAAA,QACT,MAAM;AAAA,QACN,IAAI;AAAA,MAAA;AAAA,IACL;AAAA,IAED,iBAAiB;AAAA,MAChB,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACP;AAEF;AAUO,SAASC,EAAO;AAAA,EACtB,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,SAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,UAAAC;AAAA,EACA,GAAGC;AACJ,GAAgB;AACf,QAAMC,IAAOJ,IAAOA,EAAA,IAAS,QACvBK,IAAeJ,IAAeA,EAAA,IAAiB;AAErD,SACC,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACA,WAAWC,EAAGf,EAAe,EAAE,SAAAI,GAAS,MAAAC,GAAM,WAAAF,EAAA,CAAW,GAAG,OAAO;AAAA,MACnE,UAAUG,KAAWC;AAAA,MACpB,GAAGI;AAAA,MAGH,UAAA;AAAA,QAAAL,IACA,gBAAAU,EAACC,KAAO,IACLL,sBACFA,GAAA,EAAK,WAAU,wBAAuB,IACpC;AAAA,QACHF,KAAY,gBAAAM,EAAC,QAAA,EAAK,WAAU,YAAY,UAAAN,GAAS;AAAA,QACjDG,IAAe,gBAAAG,EAACH,GAAA,EAAa,WAAU,wBAAuB,IAAK;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGvE;"}
@@ -139,7 +139,7 @@ function ae({
139
139
  "div",
140
140
  {
141
141
  "data-sidebar": "sidebar",
142
- className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
142
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
143
143
  children: o
144
144
  }
145
145
  )
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.es.js","sources":["../../../lib/components/ui/sidebar.tsx"],"sourcesContent":["\"use client\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { PanelLeft } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/utils\"\n\n// TODO use tailwind variables\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\"\n\topen: boolean\n\tsetOpen: (open: boolean) => void\n\topenMobile: boolean\n\tsetOpenMobile: (open: boolean) => void\n\tisMobile: boolean\n\ttoggleSidebar: () => void\n}\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext)\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\")\n\t}\n\n\treturn context\n}\n\nexport function SidebarProvider(\n\t{\n\t\tdefaultOpen = true,\n\t\topen: openProp,\n\t\tonOpenChange: setOpenProp,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<'div'> & {\n\t\tdefaultOpen?: boolean\n\t\topen?: boolean\n\t\tonOpenChange?: (open: boolean) => void\n\t}) {\n\tconst isMobile = useIsMobile()\n\tconst [openMobile, setOpenMobile] = React.useState(false)\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen)\n\tconst open = openProp ?? _open\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState)\n\t\t\t} else {\n\t\t\t\t_setOpen(openState)\n\t\t\t}\n\n\t\t\t// TODO, use different model for persistence\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\t// document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n\t\t},\n\t\t[setOpenProp, open]\n\t)\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile\n\t\t\t? setOpenMobile((open) => !open)\n\t\t\t: setOpen((open) => !open)\n\t}, [isMobile, setOpen, setOpenMobile])\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (\n\t\t\t\tevent.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n\t\t\t\t(event.metaKey || event.ctrlKey)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\ttoggleSidebar()\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown)\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown)\n\t}, [toggleSidebar])\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\"\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n\t)\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group/sidebar-wrapper flex w-full has-[[data-variant=inset]]:bg-sidebar\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</TooltipProvider>\n\t\t</SidebarContext.Provider>\n\t)\n}\n\n\nexport function Sidebar(\n\t{\n\t\tside = \"left\",\n\t\tvariant = \"sidebar\",\n\t\tcollapsible = \"offcanvas\",\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\"\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\"\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\"\n\t}\n) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer hidden text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t>\n\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative w-(--sidebar-width) bg-sidebar transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n\n\nexport function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<Button\n\t\t\tdata-sidebar=\"trigger\"\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"icon\"\n\t\t\tonClick={(event) => {\n\t\t\t\tonClick?.(event)\n\t\t\t\ttoggleSidebar()\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<PanelLeft />\n\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t</Button>\n\t)\n}\n\n// TODO, evaluate if we need this??\nexport const SidebarRail = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<button\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"rail\"\n\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\ttabIndex={-1}\n\t\t\tonClick={toggleSidebar}\n\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n\t\t\t\t\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n\t\t\t\t\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n\t\t\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n\t\t\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n\t\t\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nexport function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full flex-1 flex-col bg-background\",\n\t\t\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\n\t\t\tdata-sidebar=\"header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"footer\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group\"\n\t\t\tclassName={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"div\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nexport function SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group-content\"\n\t\t\tclassName={cn(\"w-full text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu\"\n\t\t\tclassName={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-sidebar=\"menu-item\"\n\t\t\tclassName={cn(\"group/menu-item relative list-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\n\n\n/// TODO fix positioning\nexport function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }: React.ComponentProps<\"button\"> & {\n\tasChild?: boolean\n\tshowOnHover?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tshowOnHover &&\n\t\t\t\t\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-badge\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n\t\t\t\t\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<\"div\"> & {\n\tshowIcon?: boolean\n}) {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-4 rounded-md\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-4 max-w-[--skeleton-width] flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width,\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu-sub\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mx-2 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) { return <li className={cn(\"list-none ms-0\", className)} {...props} /> }\n\n// Common interaction logic for SidebarMenuButton and SidebarMenuSubButton\nconst Cs_SidebarButton = \"flex w-full items-center gap-2 truncate p-2 text-sm btn btn-ghost h-input text-sidebar-accent data-[active=true]:bg-sidebar-primary/20 data-[active=true]:font-medium data-[active=true]:text-sidebar-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\";\nexport function SidebarMenuButton\n\t(\n\t\t{\n\t\t\tasChild = false,\n\t\t\tisActive = false,\n\t\t\ttooltip,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: React.ComponentProps<\"button\"> & {\n\t\t\tasChild?: boolean\n\t\t\tisActive?: boolean\n\t\t\ttooltip?: React.ComponentProps<typeof TooltipContent>\n\t\t}\n\t) {\n\tconst Comp = asChild ? Slot : \"button\"\n\tconst { isMobile, state } = useSidebar()\n\n\tconst button = (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"peer/menu-button group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-icon group-data-[collapsible=icon]:!p-2 \",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName)}\n\t\t\t{...props}\n\t\t/>\n\t)\n\n\tif (!tooltip) {\n\t\treturn button\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"right\"\n\t\t\t\talign=\"center\"\n\t\t\t\thidden={state !== \"collapsed\" || isMobile}\n\t\t\t\t{...tooltip}\n\t\t\t/>\n\t\t</Tooltip>\n\t)\n}\n\nexport function SidebarMenuSubButton({ asChild = false, isActive, className, ...props }: React.ComponentProps<'a'> & {\n\tasChild?: boolean\n\tisActive?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"a\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"-translate-x-px [&>svg]:text-sidebar-accent-foreground\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n// TODO, standardize heights here"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","ref","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","Cs_SidebarButton","SidebarMenuButton","isActive","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuSubButton"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.es.js","sources":["../../../lib/components/ui/sidebar.tsx"],"sourcesContent":["\"use client\"\n\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { PanelLeft } from \"lucide-react\"\nimport * as React from \"react\"\n\nimport { Button } from \"@/components/ui/button\"\nimport {\n\tSheet,\n\tSheetContent,\n\tSheetDescription,\n\tSheetHeader,\n\tSheetTitle,\n} from \"@/components/ui/sheet\"\nimport { Skeleton } from \"@/components/ui/skeleton\"\nimport {\n\tTooltip,\n\tTooltipContent,\n\tTooltipProvider,\n\tTooltipTrigger,\n} from \"@/components/ui/tooltip\"\nimport { useIsMobile } from \"@/hooks/use-mobile\"\nimport { cn } from \"@/utils\"\n\n// TODO use tailwind variables\nconst SIDEBAR_WIDTH = \"16rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\"\nconst SIDEBAR_WIDTH_ICON = \"3rem\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\"\n\topen: boolean\n\tsetOpen: (open: boolean) => void\n\topenMobile: boolean\n\tsetOpenMobile: (open: boolean) => void\n\tisMobile: boolean\n\ttoggleSidebar: () => void\n}\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext)\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\")\n\t}\n\n\treturn context\n}\n\nexport function SidebarProvider(\n\t{\n\t\tdefaultOpen = true,\n\t\topen: openProp,\n\t\tonOpenChange: setOpenProp,\n\t\tclassName,\n\t\tstyle,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<'div'> & {\n\t\tdefaultOpen?: boolean\n\t\topen?: boolean\n\t\tonOpenChange?: (open: boolean) => void\n\t}) {\n\tconst isMobile = useIsMobile()\n\tconst [openMobile, setOpenMobile] = React.useState(false)\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen)\n\tconst open = openProp ?? _open\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState)\n\t\t\t} else {\n\t\t\t\t_setOpen(openState)\n\t\t\t}\n\n\t\t\t// TODO, use different model for persistence\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\t// document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n\t\t},\n\t\t[setOpenProp, open]\n\t)\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile\n\t\t\t? setOpenMobile((open) => !open)\n\t\t\t: setOpen((open) => !open)\n\t}, [isMobile, setOpen, setOpenMobile])\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (\n\t\t\t\tevent.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n\t\t\t\t(event.metaKey || event.ctrlKey)\n\t\t\t) {\n\t\t\t\tevent.preventDefault()\n\t\t\t\ttoggleSidebar()\n\t\t\t}\n\t\t}\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown)\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown)\n\t}, [toggleSidebar])\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\"\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n\t)\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<TooltipProvider delayDuration={0}>\n\t\t\t\t<div\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t\t...style,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"group/sidebar-wrapper flex w-full has-[[data-variant=inset]]:bg-sidebar\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</TooltipProvider>\n\t\t</SidebarContext.Provider>\n\t)\n}\n\n\nexport function Sidebar(\n\t{\n\t\tside = \"left\",\n\t\tvariant = \"sidebar\",\n\t\tcollapsible = \"offcanvas\",\n\t\tclassName,\n\t\tchildren,\n\t\t...props\n\t}: React.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\"\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\"\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\"\n\t}\n) {\n\tconst { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t)\n\t}\n\n\tif (isMobile) {\n\t\treturn (\n\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t<SheetContent\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\tside={side}\n\t\t\t\t>\n\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t</SheetContent>\n\t\t\t</Sheet>\n\t\t)\n\t}\n\n\treturn (\n\t\t<div\n\t\t\tclassName=\"group peer hidden text-sidebar-foreground md:block\"\n\t\t\tdata-state={state}\n\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\tdata-variant={variant}\n\t\t\tdata-side={side}\n\t\t>\n\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"relative w-(--sidebar-width) bg-sidebar transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t)}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"absolute z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n\t\t\t\t>\n\t\t\t\t\t{children}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t)\n}\n\n\n\nexport function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>) {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<Button\n\t\t\tdata-sidebar=\"trigger\"\n\t\t\tvariant=\"ghost\"\n\t\t\tsize=\"icon\"\n\t\t\tonClick={(event) => {\n\t\t\t\tonClick?.(event)\n\t\t\t\ttoggleSidebar()\n\t\t\t}}\n\t\t\t{...props}\n\t\t>\n\t\t\t<PanelLeft />\n\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t</Button>\n\t)\n}\n\n// TODO, evaluate if we need this??\nexport const SidebarRail = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n\tconst { toggleSidebar } = useSidebar()\n\n\treturn (\n\t\t<button\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"rail\"\n\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\ttabIndex={-1}\n\t\t\tonClick={toggleSidebar}\n\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n\t\t\t\t\"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\n\t\t\t\t\"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n\t\t\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n\t\t\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n\t\t\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nexport function SidebarInset({ className, ...props }: React.ComponentProps<'main'>) {\n\treturn (\n\t\t<main\n\t\t\tclassName={cn(\n\t\t\t\t\"relative flex w-full flex-1 flex-col bg-background\",\n\t\t\t\t\"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\n\t\t\tdata-sidebar=\"header\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"footer\"\n\t\t\tclassName={cn(\"flex flex-col gap-2 p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"content\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group\"\n\t\t\tclassName={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\nexport function SidebarGroupLabel({ className, asChild = false, ...props }: React.ComponentProps<\"div\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"div\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-label\"\n\t\t\tclassName={cn(\n\t\t\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\nexport function SidebarGroupAction({ className, asChild = false, ...props }: React.ComponentProps<\"button\"> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"group-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"group-content\"\n\t\t\tclassName={cn(\"w-full text-sm\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu\"\n\t\t\tclassName={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>) {\n\treturn (\n\t\t<li\n\t\t\tdata-sidebar=\"menu-item\"\n\t\t\tclassName={cn(\"group/menu-item relative list-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\n\n\n\n/// TODO fix positioning\nexport function SidebarMenuAction({ className, asChild = false, showOnHover = false, ...props }: React.ComponentProps<\"button\"> & {\n\tasChild?: boolean\n\tshowOnHover?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"button\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={cn(\n\t\t\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\t\t// Increases the hit area of the button on mobile.\n\t\t\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tshowOnHover &&\n\t\t\t\t\"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>) {\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-badge\"\n\t\t\tclassName={cn(\n\t\t\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n\t\t\t\t\"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n\t\t\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSkeleton({ className, showIcon = false, ...props }: React.ComponentProps<\"div\"> & {\n\tshowIcon?: boolean\n}) {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`\n\t}, [])\n\n\treturn (\n\t\t<div\n\t\t\tdata-sidebar=\"menu-skeleton\"\n\t\t\tclassName={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n\t\t\t{...props}\n\t\t>\n\t\t\t{showIcon && (\n\t\t\t\t<Skeleton\n\t\t\t\t\tclassName=\"size-4 rounded-md\"\n\t\t\t\t\tdata-sidebar=\"menu-skeleton-icon\"\n\t\t\t\t/>\n\t\t\t)}\n\t\t\t<Skeleton\n\t\t\t\tclassName=\"h-4 max-w-[--skeleton-width] flex-1\"\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width,\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t)\n}\n\nexport function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>) {\n\treturn (\n\t\t<ul\n\t\t\tdata-sidebar=\"menu-sub\"\n\t\t\tclassName={cn(\n\t\t\t\t\"mx-2 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n\nexport function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>) { return <li className={cn(\"list-none ms-0\", className)} {...props} /> }\n\n// Common interaction logic for SidebarMenuButton and SidebarMenuSubButton\nconst Cs_SidebarButton = \"flex w-full items-center gap-2 truncate p-2 text-sm btn btn-ghost h-input text-sidebar-accent data-[active=true]:bg-sidebar-primary/20 data-[active=true]:font-medium data-[active=true]:text-sidebar-primary [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\";\nexport function SidebarMenuButton\n\t(\n\t\t{\n\t\t\tasChild = false,\n\t\t\tisActive = false,\n\t\t\ttooltip,\n\t\t\tclassName,\n\t\t\t...props\n\t\t}: React.ComponentProps<\"button\"> & {\n\t\t\tasChild?: boolean\n\t\t\tisActive?: boolean\n\t\t\ttooltip?: React.ComponentProps<typeof TooltipContent>\n\t\t}\n\t) {\n\tconst Comp = asChild ? Slot : \"button\"\n\tconst { isMobile, state } = useSidebar()\n\n\tconst button = (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"peer/menu-button group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 group-data-[collapsible=icon]:!size-icon group-data-[collapsible=icon]:!p-2 \",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName)}\n\t\t\t{...props}\n\t\t/>\n\t)\n\n\tif (!tooltip) {\n\t\treturn button\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent\n\t\t\t\tside=\"right\"\n\t\t\t\talign=\"center\"\n\t\t\t\thidden={state !== \"collapsed\" || isMobile}\n\t\t\t\t{...tooltip}\n\t\t\t/>\n\t\t</Tooltip>\n\t)\n}\n\nexport function SidebarMenuSubButton({ asChild = false, isActive, className, ...props }: React.ComponentProps<'a'> & {\n\tasChild?: boolean\n\tisActive?: boolean\n}) {\n\tconst Comp = asChild ? Slot : \"a\"\n\n\treturn (\n\t\t<Comp\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(\n\t\t\t\t\"-translate-x-px [&>svg]:text-sidebar-accent-foreground\",\n\t\t\t\t\"group-data-[collapsible=icon]:hidden\",\n\t\t\t\tCs_SidebarButton,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t)\n}\n// TODO, standardize heights here"],"names":["SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","jsxs","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","ref","SidebarInset","SidebarHeader","SidebarFooter","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Skeleton","SidebarMenuSub","SidebarMenuSubItem","Cs_SidebarButton","SidebarMenuButton","isActive","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuSubButton"],"mappings":"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"}
@@ -5,7 +5,6 @@ import { AnyFormApi } from '@tanstack/react-form';
5
5
  import { ClassProp } from 'class-variance-authority/types';
6
6
  import { ClassValue } from 'clsx';
7
7
  import * as CollapsiblePrimitive from '@radix-ui/react-collapsible';
8
- import { ColumnDef } from '@tanstack/react-table';
9
8
  import { components } from '@cryptlex/web-api-types';
10
9
  import { ComponentType } from 'react';
11
10
  import { Context } from 'react';
@@ -39,6 +38,7 @@ import { ReactFormApi } from '@tanstack/react-form';
39
38
  import { RefAttributes } from 'react';
40
39
  import * as SeparatorPrimitive from '@radix-ui/react-separator';
41
40
  import { SortingState } from '@tanstack/react-table';
41
+ import { TableOptions } from '@tanstack/react-table';
42
42
  import * as TabsPrimitive from '@radix-ui/react-tabs';
43
43
  import { Toaster as Toaster_2 } from 'sonner';
44
44
  import * as TooltipPrimitive from '@radix-ui/react-tooltip';
@@ -175,13 +175,12 @@ export declare type CtxPortals = "customer-portal" | "system-portal" | "reseller
175
175
  /** Application Names */
176
176
  export declare type CtxProjectName = "admin-portal" | "customer-portal" | "internal-portal" | "reseller-portal";
177
177
 
178
- export declare function DataTable<TData extends Record<string, any>, TValue = any>({ columns, fetchFn, tableName, tableActions, columnsToHideByDefault, }: DataTableProps<TData, TValue>): JSX.Element;
178
+ export declare function DataTable<TData extends object>({ columns, fetchFn, tableActions, columnsToHideByDefault, allowSelection, className, ...props }: DataTableProps<TData>): JSX.Element;
179
179
 
180
- export declare interface DataTableProps<TData, TValue = any> {
181
- columns: ColumnDef<TData, TValue>[];
182
- tableName: string;
180
+ export declare interface DataTableProps<TData> extends Pick<TableOptions<TData>, 'columns'>, React.ComponentProps<'section'> {
183
181
  fetchFn: TableFetchFn<TData>;
184
182
  tableActions: TableActions;
183
+ allowSelection: boolean;
185
184
  columnsToHideByDefault: VisibilityState_2;
186
185
  }
187
186
 
@@ -608,26 +607,7 @@ export declare const TABLE_DEFAULT_DATE_COLUMNS: AccessorKeyColumnDef<any, any>[
608
607
 
609
608
  export declare const TABLE_ID_COLUMN: AccessorKeyColumnDef<any, any>[];
610
609
 
611
- export declare type TableActions = {
612
- /** True if reading this resource is allowed. */
613
- read: boolean;
614
- /** True if creation of resource from dashboard is allowed. */
615
- create: boolean;
616
- /** True if the resource can be updated */
617
- update: boolean;
618
- /** True if the resource can be deleted */
619
- delete: boolean;
620
- /** True if the resource can be exported */
621
- export: boolean;
622
- /** True if the resource can be linked to tags. */
623
- tag: boolean;
624
- /** True if searching is supported. Search is defined by the `query` QueryParameter in the Web API */
625
- search: boolean;
626
- /** True if selection using checkboxes is allowed */
627
- selection: boolean;
628
- /** True if the resource has support for segments */
629
- segments: boolean;
630
- };
610
+ export declare type TableActions = Required<Pick<React.ComponentProps<typeof Button>, 'onClick' | 'children' | 'variant' | 'id' | 'icon'>>[];
631
611
 
632
612
  export declare function TableBody({ className, ...props }: React_2.ComponentProps<"tbody">): JSX.Element;
633
613
 
@@ -646,11 +626,6 @@ export declare function TableHead({ className, ...props }: React_2.ComponentProp
646
626
 
647
627
  export declare function TableHeader({ className, ...props }: React_2.ComponentProps<"thead">): JSX.Element;
648
628
 
649
- export declare function TablePageLayout({ resourceName, children, }: {
650
- resourceName: string;
651
- children?: React.ReactNode;
652
- }): JSX.Element;
653
-
654
629
  export declare function TableRow({ className, ...props }: React_2.ComponentProps<"tr">): JSX.Element;
655
630
 
656
631
  export declare const Tabs: React_2.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React_2.RefAttributes<HTMLDivElement>>;
package/dist/index.es.js CHANGED
@@ -4,7 +4,7 @@ import { fieldContext as T, formContext as m, useFieldContext as d } from "./uti
4
4
  import { useAppForm as S } from "./utils/form-hook.es.js";
5
5
  import { ACTIONS_COLUMN_ID as x, DataTable as f } from "./components/data-table/data-table.es.js";
6
6
  import { TABLE_CHECK_BOX_COLUMN as D, TABLE_DEFAULT_DATE_COLUMNS as g, TABLE_ID_COLUMN as s } from "./components/data-table/table-commons.es.js";
7
- import { ALL_OS as I, COMPARISON_OPERATOR_LABELS as P, DEFAULT_FILTERABLE_FIELDS as M, FILTERABLE_PROPERTY_TYPES as E, FILTER_COMPARISON_OPERATORS as O, OPERATORS_FOR_FILTER_TYPE as L, RESOURCE_DEFINITIONS as A, RESOURCE_NAMES as _, getLicenseStatus as R, getResourceDisplayName as w, getValidityDisplay as F, getValueFromData as B, secondsToDuration as h } from "./components/data-table/table-utils/constants.es.js";
7
+ import { ALL_OS as I, COMPARISON_OPERATOR_LABELS as P, DEFAULT_FILTERABLE_FIELDS as M, FILTERABLE_PROPERTY_TYPES as E, FILTER_COMPARISON_OPERATORS as O, OPERATORS_FOR_FILTER_TYPE as A, RESOURCE_DEFINITIONS as L, RESOURCE_NAMES as _, getLicenseStatus as R, getResourceDisplayName as w, getValidityDisplay as F, getValueFromData as B, secondsToDuration as h } from "./components/data-table/table-utils/constants.es.js";
8
8
  import { createTableFetchFn as v } from "./components/data-table/table-utils/createTableFetchFn.es.js";
9
9
  import { FormatDate as U } from "./components/data-table/table-utils/date.es.js";
10
10
  import { convertCamelCaseToTitleCase as H, convertToTitleCase as k, pluralizeTimes as V } from "./components/data-table/table-utils/string.es.js";
@@ -22,7 +22,7 @@ import { RadioGroup as Ce, RadioGroupItem as De } from "./components/inputs/radi
22
22
  import { SearchInput as se } from "./components/inputs/search-input.es.js";
23
23
  import { SingleSelect as Ie, TfSingleSelect as Pe } from "./components/inputs/select.es.js";
24
24
  import { Textarea as Ee, TfTextarea as Oe } from "./components/inputs/textarea.es.js";
25
- import { KeyValueCard as Ae } from "./components/key-value-card/key-value-card.es.js";
25
+ import { KeyValueCard as Le } from "./components/key-value-card/key-value-card.es.js";
26
26
  import { Accordion as Re, AccordionContent as we, AccordionItem as Fe, AccordionTrigger as Be } from "./components/ui/accordion.es.js";
27
27
  import { Alert as Ne, alertVariants as ve } from "./components/ui/alert.es.js";
28
28
  import { Avatar as Ue } from "./components/ui/avatar.es.js";
@@ -33,7 +33,7 @@ import { Card as $e, CardContent as er, CardDescription as rr, CardFooter as or,
33
33
  import { Collapsible as ir, CollapsibleContent as pr, CollapsibleTrigger as lr } from "./components/ui/collapsible.es.js";
34
34
  import { COPY_BUTTON_STATE_TIMEOUT as mr, CopyButton as dr } from "./components/ui/copy-button.es.js";
35
35
  import { Dialog as Sr, DialogClose as br, DialogContent as xr, DialogDescription as fr, DialogFooter as Cr, DialogHeader as Dr, DialogOverlay as gr, DialogPortal as sr, DialogTitle as cr, DialogTrigger as Ir } from "./components/ui/dialog.es.js";
36
- import { Drawer as Mr, DrawerClose as Er, DrawerContent as Or, DrawerDescription as Lr, DrawerFooter as Ar, DrawerHeader as _r, DrawerOverlay as Rr, DrawerPortal as wr, DrawerTitle as Fr, DrawerTrigger as Br } from "./components/ui/drawer.es.js";
36
+ import { Drawer as Mr, DrawerClose as Er, DrawerContent as Or, DrawerDescription as Ar, DrawerFooter as Lr, DrawerHeader as _r, DrawerOverlay as Rr, DrawerPortal as wr, DrawerTitle as Fr, DrawerTrigger as Br } from "./components/ui/drawer.es.js";
37
37
  import { DropdownMenu as Nr, DropdownMenuCheckboxItem as vr, DropdownMenuContent as yr, DropdownMenuGroup as Ur, DropdownMenuItem as Gr, DropdownMenuLabel as Hr, DropdownMenuPortal as kr, DropdownMenuRadioGroup as Vr, DropdownMenuRadioItem as Yr, DropdownMenuSub as Kr, DropdownMenuSubContent as zr, DropdownMenuSubTrigger as Xr, DropdownMenuTrigger as jr } from "./components/ui/dropdown-menu.es.js";
38
38
  import { Label as Jr } from "./components/ui/label.es.js";
39
39
  import { Loader as Wr } from "./components/ui/loader.es.js";
@@ -41,15 +41,14 @@ import { Pagination as $r, PaginationContent as eo, PaginationEllipsis as ro, Pa
41
41
  import { Popover as po, PopoverAnchor as lo, PopoverContent as To, PopoverTrigger as mo } from "./components/ui/popover.es.js";
42
42
  import { Separator as So } from "./components/ui/separator.es.js";
43
43
  import { Sheet as xo, SheetClose as fo, SheetContent as Co, SheetDescription as Do, SheetFooter as go, SheetHeader as so, SheetOverlay as co, SheetPortal as Io, SheetTitle as Po, SheetTrigger as Mo } from "./components/ui/sheet.es.js";
44
- import { Sidebar as Oo, SidebarContent as Lo, SidebarContext as Ao, SidebarFooter as _o, SidebarGroup as Ro, SidebarGroupAction as wo, SidebarGroupContent as Fo, SidebarGroupLabel as Bo, SidebarHeader as ho, SidebarInset as No, SidebarMenu as vo, SidebarMenuAction as yo, SidebarMenuBadge as Uo, SidebarMenuButton as Go, SidebarMenuItem as Ho, SidebarMenuSkeleton as ko, SidebarMenuSub as Vo, SidebarMenuSubButton as Yo, SidebarMenuSubItem as Ko, SidebarProvider as zo, SidebarRail as Xo, SidebarTrigger as jo, useSidebar as qo } from "./components/ui/sidebar.es.js";
44
+ import { Sidebar as Oo, SidebarContent as Ao, SidebarContext as Lo, SidebarFooter as _o, SidebarGroup as Ro, SidebarGroupAction as wo, SidebarGroupContent as Fo, SidebarGroupLabel as Bo, SidebarHeader as ho, SidebarInset as No, SidebarMenu as vo, SidebarMenuAction as yo, SidebarMenuBadge as Uo, SidebarMenuButton as Go, SidebarMenuItem as Ho, SidebarMenuSkeleton as ko, SidebarMenuSub as Vo, SidebarMenuSubButton as Yo, SidebarMenuSubItem as Ko, SidebarProvider as zo, SidebarRail as Xo, SidebarTrigger as jo, useSidebar as qo } from "./components/ui/sidebar.es.js";
45
45
  import { Skeleton as Qo } from "./components/ui/skeleton.es.js";
46
46
  import { Toaster as Zo } from "./components/ui/sonner.es.js";
47
47
  import { StaticDataTable as et } from "./components/ui/static-data-table.es.js";
48
48
  import { Table as ot, TableBody as tt, TableCaption as at, TableCell as nt, TableFooter as it, TableHead as pt, TableHeader as lt, TableRow as Tt } from "./components/ui/table.es.js";
49
- import { TablePageLayout as dt } from "./components/ui/table-page-layout.es.js";
50
- import { Tabs as St, TabsContent as bt, TabsList as xt, TabsTrigger as ft } from "./components/ui/tabs.es.js";
51
- import { Timeline as Dt, TimelineContent as gt, TimelineDate as st, TimelineIcon as ct, TimelineItem as It, timelineIconVariants as Pt } from "./components/ui/timeline.es.js";
52
- import { Tooltip as Et, TooltipContent as Ot, TooltipProvider as Lt, TooltipTrigger as At } from "./components/ui/tooltip.es.js";
49
+ import { Tabs as dt, TabsContent as ut, TabsList as St, TabsTrigger as bt } from "./components/ui/tabs.es.js";
50
+ import { Timeline as ft, TimelineContent as Ct, TimelineDate as Dt, TimelineIcon as gt, TimelineItem as st, timelineIconVariants as ct } from "./components/ui/timeline.es.js";
51
+ import { Tooltip as Pt, TooltipContent as Mt, TooltipProvider as Et, TooltipTrigger as Ot } from "./components/ui/tooltip.es.js";
53
52
  export {
54
53
  x as ACTIONS_COLUMN_ID,
55
54
  I as ALL_OS,
@@ -99,8 +98,8 @@ export {
99
98
  Mr as Drawer,
100
99
  Er as DrawerClose,
101
100
  Or as DrawerContent,
102
- Lr as DrawerDescription,
103
- Ar as DrawerFooter,
101
+ Ar as DrawerDescription,
102
+ Lr as DrawerFooter,
104
103
  _r as DrawerHeader,
105
104
  Rr as DrawerOverlay,
106
105
  wr as DrawerPortal,
@@ -128,11 +127,11 @@ export {
128
127
  ie as InputOTPGroup,
129
128
  pe as InputOTPSeparator,
130
129
  le as InputOTPSlot,
131
- Ae as KeyValueCard,
130
+ Le as KeyValueCard,
132
131
  Jr as Label,
133
132
  Wr as Loader,
134
133
  ue as MultiSelect,
135
- L as OPERATORS_FOR_FILTER_TYPE,
134
+ A as OPERATORS_FOR_FILTER_TYPE,
136
135
  $r as Pagination,
137
136
  eo as PaginationContent,
138
137
  ro as PaginationEllipsis,
@@ -145,7 +144,7 @@ export {
145
144
  lo as PopoverAnchor,
146
145
  To as PopoverContent,
147
146
  mo as PopoverTrigger,
148
- A as RESOURCE_DEFINITIONS,
147
+ L as RESOURCE_DEFINITIONS,
149
148
  _ as RESOURCE_NAMES,
150
149
  Ce as RadioGroup,
151
150
  De as RadioGroupItem,
@@ -162,8 +161,8 @@ export {
162
161
  Po as SheetTitle,
163
162
  Mo as SheetTrigger,
164
163
  Oo as Sidebar,
165
- Lo as SidebarContent,
166
- Ao as SidebarContext,
164
+ Ao as SidebarContent,
165
+ Lo as SidebarContext,
167
166
  _o as SidebarFooter,
168
167
  Ro as SidebarGroup,
169
168
  wo as SidebarGroupAction,
@@ -196,12 +195,11 @@ export {
196
195
  it as TableFooter,
197
196
  pt as TableHead,
198
197
  lt as TableHeader,
199
- dt as TablePageLayout,
200
198
  Tt as TableRow,
201
- St as Tabs,
202
- bt as TabsContent,
203
- xt as TabsList,
204
- ft as TabsTrigger,
199
+ dt as Tabs,
200
+ ut as TabsContent,
201
+ St as TabsList,
202
+ bt as TabsTrigger,
205
203
  Ee as Textarea,
206
204
  J as TfCheckbox,
207
205
  Z as TfCountrySelect,
@@ -210,16 +208,16 @@ export {
210
208
  Se as TfMultiSelect,
211
209
  Pe as TfSingleSelect,
212
210
  Oe as TfTextarea,
213
- Dt as Timeline,
214
- gt as TimelineContent,
215
- st as TimelineDate,
216
- ct as TimelineIcon,
217
- It as TimelineItem,
211
+ ft as Timeline,
212
+ Ct as TimelineContent,
213
+ Dt as TimelineDate,
214
+ gt as TimelineIcon,
215
+ st as TimelineItem,
218
216
  Zo as Toaster,
219
- Et as Tooltip,
220
- Ot as TooltipContent,
221
- Lt as TooltipProvider,
222
- At as TooltipTrigger,
217
+ Pt as Tooltip,
218
+ Mt as TooltipContent,
219
+ Et as TooltipProvider,
220
+ Ot as TooltipTrigger,
223
221
  ve as alertVariants,
224
222
  We as buttonVariants,
225
223
  a as cn,
@@ -237,7 +235,7 @@ export {
237
235
  V as pluralizeTimes,
238
236
  h as secondsToDuration,
239
237
  p as setThemeHue,
240
- Pt as timelineIconVariants,
238
+ ct as timelineIconVariants,
241
239
  S as useAppForm,
242
240
  d as useFieldContext,
243
241
  o as useIsMobile,
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.es.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cryptlex/web-components",
3
- "version": "3.5.0",
3
+ "version": "3.6.0",
4
4
  "description": "React component library for Cryptlex web applications",
5
5
  "author": "Cryptlex",
6
6
  "type": "module",
@@ -1,14 +0,0 @@
1
- import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- function s({
3
- resourceName: t,
4
- children: i
5
- }) {
6
- return /* @__PURE__ */ n("section", { className: "flex-1 justify-between gap-10", children: [
7
- /* @__PURE__ */ e("h1", { children: t }),
8
- /* @__PURE__ */ e("div", { children: i })
9
- ] });
10
- }
11
- export {
12
- s as TablePageLayout
13
- };
14
- //# sourceMappingURL=table-page-layout.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"table-page-layout.es.js","sources":["../../../lib/components/ui/table-page-layout.tsx"],"sourcesContent":["export function TablePageLayout({\n\tresourceName,\n\tchildren,\n}: {\n\tresourceName: string;\n\tchildren?: React.ReactNode;\n}) {\n\treturn (\n\t\t<section className=\"flex-1 justify-between gap-10\">\n\t\t\t<h1>{resourceName}</h1>\n\t\t\t<div>{children}</div>\n\t\t</section>\n\t);\n}\n"],"names":["TablePageLayout","resourceName","children","jsxs","jsx"],"mappings":";AAAO,SAASA,EAAgB;AAAA,EAC/B,cAAAC;AAAA,EACA,UAAAC;AACD,GAGG;AACF,SACC,gBAAAC,EAAC,WAAA,EAAQ,WAAU,iCAClB,UAAA;AAAA,IAAA,gBAAAC,EAAC,QAAI,UAAAH,EAAA,CAAa;AAAA,IAClB,gBAAAG,EAAC,SAAK,UAAAF,EAAA,CAAS;AAAA,EAAA,GAChB;AAEF;"}