@thesage/ui 0.1.0 → 1.0.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.
- package/README.md +96 -61
- package/dist/dates.d.mts +20 -0
- package/dist/dates.d.ts +20 -0
- package/dist/dates.js +230 -0
- package/dist/dates.js.map +1 -0
- package/dist/dates.mjs +193 -0
- package/dist/dates.mjs.map +1 -0
- package/dist/dnd.d.mts +126 -0
- package/dist/dnd.d.ts +126 -0
- package/dist/dnd.js +274 -0
- package/dist/dnd.js.map +1 -0
- package/dist/dnd.mjs +250 -0
- package/dist/dnd.mjs.map +1 -0
- package/dist/forms.d.mts +38 -0
- package/dist/forms.d.ts +38 -0
- package/dist/forms.js +198 -0
- package/dist/forms.js.map +1 -0
- package/dist/forms.mjs +159 -0
- package/dist/forms.mjs.map +1 -0
- package/dist/hooks.js +6 -5
- package/dist/hooks.js.map +1 -1
- package/dist/hooks.mjs +6 -5
- package/dist/hooks.mjs.map +1 -1
- package/dist/index.d.mts +484 -352
- package/dist/index.d.ts +484 -352
- package/dist/index.js +2674 -2092
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2548 -1966
- package/dist/index.mjs.map +1 -1
- package/dist/providers.js +6 -5
- package/dist/providers.js.map +1 -1
- package/dist/providers.mjs +6 -5
- package/dist/providers.mjs.map +1 -1
- package/dist/tables.d.mts +10 -0
- package/dist/tables.d.ts +10 -0
- package/dist/tables.js +248 -0
- package/dist/tables.js.map +1 -0
- package/dist/tables.mjs +218 -0
- package/dist/tables.mjs.map +1 -0
- package/dist/utils.js +2 -1
- package/dist/utils.js.map +1 -1
- package/dist/utils.mjs +2 -1
- package/dist/utils.mjs.map +1 -1
- package/dist/webgl.d.mts +104 -0
- package/dist/webgl.d.ts +104 -0
- package/dist/webgl.js +226 -0
- package/dist/webgl.js.map +1 -0
- package/dist/webgl.mjs +195 -0
- package/dist/webgl.mjs.map +1 -0
- package/package.json +145 -16
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ColumnDef } from '@tanstack/react-table';
|
|
3
|
+
|
|
4
|
+
interface DataTableProps<TData, TValue> {
|
|
5
|
+
columns: ColumnDef<TData, TValue>[];
|
|
6
|
+
data: TData[];
|
|
7
|
+
}
|
|
8
|
+
declare function DataTable<TData, TValue>({ columns, data, }: DataTableProps<TData, TValue>): react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { DataTable };
|
package/dist/tables.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import { ColumnDef } from '@tanstack/react-table';
|
|
3
|
+
|
|
4
|
+
interface DataTableProps<TData, TValue> {
|
|
5
|
+
columns: ColumnDef<TData, TValue>[];
|
|
6
|
+
data: TData[];
|
|
7
|
+
}
|
|
8
|
+
declare function DataTable<TData, TValue>({ columns, data, }: DataTableProps<TData, TValue>): react_jsx_runtime.JSX.Element;
|
|
9
|
+
|
|
10
|
+
export { DataTable };
|
package/dist/tables.js
ADDED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/tables.ts
|
|
32
|
+
var tables_exports = {};
|
|
33
|
+
__export(tables_exports, {
|
|
34
|
+
DataTable: () => DataTable
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(tables_exports);
|
|
37
|
+
|
|
38
|
+
// src/components/data-display/DataTable.tsx
|
|
39
|
+
var React = __toESM(require("react"));
|
|
40
|
+
var import_react_table = require("@tanstack/react-table");
|
|
41
|
+
|
|
42
|
+
// src/lib/utils.ts
|
|
43
|
+
var import_clsx = require("clsx");
|
|
44
|
+
var import_tailwind_merge = require("tailwind-merge");
|
|
45
|
+
function cn(...inputs) {
|
|
46
|
+
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// src/components/data-display/Table.tsx
|
|
50
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
51
|
+
var Table = ({
|
|
52
|
+
ref,
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
56
|
+
"table",
|
|
57
|
+
{
|
|
58
|
+
ref,
|
|
59
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
60
|
+
...props
|
|
61
|
+
}
|
|
62
|
+
) });
|
|
63
|
+
var TableHeader = ({
|
|
64
|
+
ref,
|
|
65
|
+
className,
|
|
66
|
+
...props
|
|
67
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("thead", { ref, className: cn("[&_tr]:border-b", className), ...props });
|
|
68
|
+
var TableBody = ({
|
|
69
|
+
ref,
|
|
70
|
+
className,
|
|
71
|
+
...props
|
|
72
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
73
|
+
"tbody",
|
|
74
|
+
{
|
|
75
|
+
ref,
|
|
76
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
77
|
+
...props
|
|
78
|
+
}
|
|
79
|
+
);
|
|
80
|
+
var TableRow = ({
|
|
81
|
+
ref,
|
|
82
|
+
className,
|
|
83
|
+
...props
|
|
84
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
85
|
+
"tr",
|
|
86
|
+
{
|
|
87
|
+
ref,
|
|
88
|
+
className: cn(
|
|
89
|
+
"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
|
|
90
|
+
className
|
|
91
|
+
),
|
|
92
|
+
...props
|
|
93
|
+
}
|
|
94
|
+
);
|
|
95
|
+
var TableHead = ({
|
|
96
|
+
ref,
|
|
97
|
+
className,
|
|
98
|
+
...props
|
|
99
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
100
|
+
"th",
|
|
101
|
+
{
|
|
102
|
+
ref,
|
|
103
|
+
className: cn(
|
|
104
|
+
"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
|
105
|
+
className
|
|
106
|
+
),
|
|
107
|
+
...props
|
|
108
|
+
}
|
|
109
|
+
);
|
|
110
|
+
var TableCell = ({
|
|
111
|
+
ref,
|
|
112
|
+
className,
|
|
113
|
+
...props
|
|
114
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
115
|
+
"td",
|
|
116
|
+
{
|
|
117
|
+
ref,
|
|
118
|
+
className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
|
|
119
|
+
...props
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
// src/components/actions/Button.tsx
|
|
124
|
+
var import_class_variance_authority = require("class-variance-authority");
|
|
125
|
+
var import_react_slot = require("@radix-ui/react-slot");
|
|
126
|
+
var import_jsx_runtime2 = require("react/jsx-runtime");
|
|
127
|
+
var buttonVariants = (0, import_class_variance_authority.cva)(
|
|
128
|
+
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 sage-interactive [&_svg]:transition-transform [&_svg]:duration-300 hover:[&_svg]:translate-x-1",
|
|
129
|
+
{
|
|
130
|
+
variants: {
|
|
131
|
+
variant: {
|
|
132
|
+
default: "bg-primary text-primary-foreground shadow",
|
|
133
|
+
primary: "bg-primary text-primary-foreground shadow",
|
|
134
|
+
// Alias for default
|
|
135
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm",
|
|
136
|
+
outline: "border border-input bg-transparent shadow-sm hover:bg-primary hover:text-primary-foreground hover:border-primary",
|
|
137
|
+
secondary: "bg-black/5 dark:bg-white/10 backdrop-blur-md border border-black/5 dark:border-white/10 text-secondary-foreground shadow-sm hover:bg-primary hover:text-primary-foreground dark:hover:bg-primary dark:hover:text-primary-foreground",
|
|
138
|
+
ghost: "hover:text-accent-foreground",
|
|
139
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
140
|
+
},
|
|
141
|
+
size: {
|
|
142
|
+
default: "h-9 px-4 py-2",
|
|
143
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
144
|
+
lg: "h-10 rounded-md px-8",
|
|
145
|
+
icon: "h-9 w-9"
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
defaultVariants: {
|
|
149
|
+
variant: "default",
|
|
150
|
+
size: "default"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
);
|
|
154
|
+
var Button = ({
|
|
155
|
+
ref,
|
|
156
|
+
className,
|
|
157
|
+
variant,
|
|
158
|
+
size,
|
|
159
|
+
asChild = false,
|
|
160
|
+
children,
|
|
161
|
+
...props
|
|
162
|
+
}) => {
|
|
163
|
+
const Comp = asChild ? import_react_slot.Slot : "button";
|
|
164
|
+
return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
|
|
165
|
+
Comp,
|
|
166
|
+
{
|
|
167
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
168
|
+
ref,
|
|
169
|
+
...props,
|
|
170
|
+
children: asChild ? children : /* @__PURE__ */ (0, import_jsx_runtime2.jsx)("span", { className: "relative z-20 flex items-center justify-center gap-2", children })
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
// src/components/data-display/DataTable.tsx
|
|
176
|
+
var import_jsx_runtime3 = require("react/jsx-runtime");
|
|
177
|
+
function DataTable({
|
|
178
|
+
columns,
|
|
179
|
+
data
|
|
180
|
+
}) {
|
|
181
|
+
const [sorting, setSorting] = React.useState([]);
|
|
182
|
+
const table = (0, import_react_table.useReactTable)({
|
|
183
|
+
data,
|
|
184
|
+
columns,
|
|
185
|
+
getCoreRowModel: (0, import_react_table.getCoreRowModel)(),
|
|
186
|
+
getPaginationRowModel: (0, import_react_table.getPaginationRowModel)(),
|
|
187
|
+
onSortingChange: setSorting,
|
|
188
|
+
getSortedRowModel: (0, import_react_table.getSortedRowModel)(),
|
|
189
|
+
state: {
|
|
190
|
+
sorting
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "space-y-4", children: [
|
|
194
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "rounded-md border", children: /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(Table, { children: [
|
|
195
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableRow, { children: headerGroup.headers.map((header) => {
|
|
196
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableHead, { children: header.isPlaceholder ? null : (0, import_react_table.flexRender)(
|
|
197
|
+
header.column.columnDef.header,
|
|
198
|
+
header.getContext()
|
|
199
|
+
) }, header.id);
|
|
200
|
+
}) }, headerGroup.id)) }),
|
|
201
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
202
|
+
TableRow,
|
|
203
|
+
{
|
|
204
|
+
"data-state": row.getIsSelected() && "selected",
|
|
205
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableCell, { children: (0, import_react_table.flexRender)(
|
|
206
|
+
cell.column.columnDef.cell,
|
|
207
|
+
cell.getContext()
|
|
208
|
+
) }, cell.id))
|
|
209
|
+
},
|
|
210
|
+
row.id
|
|
211
|
+
)) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
212
|
+
TableCell,
|
|
213
|
+
{
|
|
214
|
+
colSpan: columns.length,
|
|
215
|
+
className: "h-24 text-center",
|
|
216
|
+
children: "No results."
|
|
217
|
+
}
|
|
218
|
+
) }) })
|
|
219
|
+
] }) }),
|
|
220
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "flex items-center justify-end space-x-2", children: [
|
|
221
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
222
|
+
Button,
|
|
223
|
+
{
|
|
224
|
+
variant: "outline",
|
|
225
|
+
size: "sm",
|
|
226
|
+
onClick: () => table.previousPage(),
|
|
227
|
+
disabled: !table.getCanPreviousPage(),
|
|
228
|
+
children: "Previous"
|
|
229
|
+
}
|
|
230
|
+
),
|
|
231
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
232
|
+
Button,
|
|
233
|
+
{
|
|
234
|
+
variant: "outline",
|
|
235
|
+
size: "sm",
|
|
236
|
+
onClick: () => table.nextPage(),
|
|
237
|
+
disabled: !table.getCanNextPage(),
|
|
238
|
+
children: "Next"
|
|
239
|
+
}
|
|
240
|
+
)
|
|
241
|
+
] })
|
|
242
|
+
] });
|
|
243
|
+
}
|
|
244
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
245
|
+
0 && (module.exports = {
|
|
246
|
+
DataTable
|
|
247
|
+
});
|
|
248
|
+
//# sourceMappingURL=tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tables.ts","../src/components/data-display/DataTable.tsx","../src/lib/utils.ts","../src/components/data-display/Table.tsx","../src/components/actions/Button.tsx"],"sourcesContent":["export * from './components/data-display/DataTable';\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n useReactTable,\n} from \"@tanstack/react-table\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./Table\"\nimport { Button } from \"../actions/Button\"\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n },\n })\n\n return (\n <div className=\"space-y-4\">\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex items-center justify-end space-x-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n )\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Table = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableElement> & {\n ref?: React.Ref<HTMLTableElement>;\n }\n) => (<div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n</div>)\n\nconst TableHeader = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />)\n\nconst TableBody = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n/>)\n\nconst TableFooter = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n/>)\n\nconst TableRow = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableRowElement> & {\n ref?: React.Ref<HTMLTableRowElement>;\n }\n) => (<tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n/>)\n\nconst TableHead = (\n {\n ref,\n className,\n ...props\n }: React.ThHTMLAttributes<HTMLTableCellElement> & {\n ref?: React.Ref<HTMLTableCellElement>;\n }\n) => (<th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n/>)\n\nconst TableCell = (\n {\n ref,\n className,\n ...props\n }: React.TdHTMLAttributes<HTMLTableCellElement> & {\n ref?: React.Ref<HTMLTableCellElement>;\n }\n) => (<td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n/>)\n\nconst TableCaption = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableCaptionElement> & {\n ref?: React.Ref<HTMLTableCaptionElement>;\n }\n) => (<caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n/>)\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 sage-interactive [&_svg]:transition-transform [&_svg]:duration-300 hover:[&_svg]:translate-x-1',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow',\n primary: 'bg-primary text-primary-foreground shadow', // Alias for default\n destructive: 'bg-destructive text-destructive-foreground shadow-sm',\n outline: 'border border-input bg-transparent shadow-sm hover:bg-primary hover:text-primary-foreground hover:border-primary',\n secondary: 'bg-black/5 dark:bg-white/10 backdrop-blur-md border border-black/5 dark:border-white/10 text-secondary-foreground shadow-sm hover:bg-primary hover:text-primary-foreground dark:hover:bg-primary dark:hover:text-primary-foreground',\n ghost: 'hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = (\n {\n ref,\n className,\n variant,\n size,\n asChild = false,\n children,\n ...props\n }: ButtonProps & {\n ref?: React.Ref<HTMLButtonElement>;\n }\n) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <span className=\"relative z-20 flex items-center justify-center gap-2\">\n {children}\n </span>\n )}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants };\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime"]}
|
package/dist/tables.mjs
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/components/data-display/DataTable.tsx
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import {
|
|
6
|
+
flexRender,
|
|
7
|
+
getCoreRowModel,
|
|
8
|
+
getPaginationRowModel,
|
|
9
|
+
getSortedRowModel,
|
|
10
|
+
useReactTable
|
|
11
|
+
} from "@tanstack/react-table";
|
|
12
|
+
|
|
13
|
+
// src/lib/utils.ts
|
|
14
|
+
import { clsx } from "clsx";
|
|
15
|
+
import { twMerge } from "tailwind-merge";
|
|
16
|
+
function cn(...inputs) {
|
|
17
|
+
return twMerge(clsx(inputs));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// src/components/data-display/Table.tsx
|
|
21
|
+
import { jsx } from "react/jsx-runtime";
|
|
22
|
+
var Table = ({
|
|
23
|
+
ref,
|
|
24
|
+
className,
|
|
25
|
+
...props
|
|
26
|
+
}) => /* @__PURE__ */ jsx("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx(
|
|
27
|
+
"table",
|
|
28
|
+
{
|
|
29
|
+
ref,
|
|
30
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
31
|
+
...props
|
|
32
|
+
}
|
|
33
|
+
) });
|
|
34
|
+
var TableHeader = ({
|
|
35
|
+
ref,
|
|
36
|
+
className,
|
|
37
|
+
...props
|
|
38
|
+
}) => /* @__PURE__ */ jsx("thead", { ref, className: cn("[&_tr]:border-b", className), ...props });
|
|
39
|
+
var TableBody = ({
|
|
40
|
+
ref,
|
|
41
|
+
className,
|
|
42
|
+
...props
|
|
43
|
+
}) => /* @__PURE__ */ jsx(
|
|
44
|
+
"tbody",
|
|
45
|
+
{
|
|
46
|
+
ref,
|
|
47
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
48
|
+
...props
|
|
49
|
+
}
|
|
50
|
+
);
|
|
51
|
+
var TableRow = ({
|
|
52
|
+
ref,
|
|
53
|
+
className,
|
|
54
|
+
...props
|
|
55
|
+
}) => /* @__PURE__ */ jsx(
|
|
56
|
+
"tr",
|
|
57
|
+
{
|
|
58
|
+
ref,
|
|
59
|
+
className: cn(
|
|
60
|
+
"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",
|
|
61
|
+
className
|
|
62
|
+
),
|
|
63
|
+
...props
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
var TableHead = ({
|
|
67
|
+
ref,
|
|
68
|
+
className,
|
|
69
|
+
...props
|
|
70
|
+
}) => /* @__PURE__ */ jsx(
|
|
71
|
+
"th",
|
|
72
|
+
{
|
|
73
|
+
ref,
|
|
74
|
+
className: cn(
|
|
75
|
+
"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0",
|
|
76
|
+
className
|
|
77
|
+
),
|
|
78
|
+
...props
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
var TableCell = ({
|
|
82
|
+
ref,
|
|
83
|
+
className,
|
|
84
|
+
...props
|
|
85
|
+
}) => /* @__PURE__ */ jsx(
|
|
86
|
+
"td",
|
|
87
|
+
{
|
|
88
|
+
ref,
|
|
89
|
+
className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
|
|
90
|
+
...props
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
|
|
94
|
+
// src/components/actions/Button.tsx
|
|
95
|
+
import { cva } from "class-variance-authority";
|
|
96
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
97
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
98
|
+
var buttonVariants = cva(
|
|
99
|
+
"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 sage-interactive [&_svg]:transition-transform [&_svg]:duration-300 hover:[&_svg]:translate-x-1",
|
|
100
|
+
{
|
|
101
|
+
variants: {
|
|
102
|
+
variant: {
|
|
103
|
+
default: "bg-primary text-primary-foreground shadow",
|
|
104
|
+
primary: "bg-primary text-primary-foreground shadow",
|
|
105
|
+
// Alias for default
|
|
106
|
+
destructive: "bg-destructive text-destructive-foreground shadow-sm",
|
|
107
|
+
outline: "border border-input bg-transparent shadow-sm hover:bg-primary hover:text-primary-foreground hover:border-primary",
|
|
108
|
+
secondary: "bg-black/5 dark:bg-white/10 backdrop-blur-md border border-black/5 dark:border-white/10 text-secondary-foreground shadow-sm hover:bg-primary hover:text-primary-foreground dark:hover:bg-primary dark:hover:text-primary-foreground",
|
|
109
|
+
ghost: "hover:text-accent-foreground",
|
|
110
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
111
|
+
},
|
|
112
|
+
size: {
|
|
113
|
+
default: "h-9 px-4 py-2",
|
|
114
|
+
sm: "h-8 rounded-md px-3 text-xs",
|
|
115
|
+
lg: "h-10 rounded-md px-8",
|
|
116
|
+
icon: "h-9 w-9"
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
defaultVariants: {
|
|
120
|
+
variant: "default",
|
|
121
|
+
size: "default"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
);
|
|
125
|
+
var Button = ({
|
|
126
|
+
ref,
|
|
127
|
+
className,
|
|
128
|
+
variant,
|
|
129
|
+
size,
|
|
130
|
+
asChild = false,
|
|
131
|
+
children,
|
|
132
|
+
...props
|
|
133
|
+
}) => {
|
|
134
|
+
const Comp = asChild ? Slot : "button";
|
|
135
|
+
return /* @__PURE__ */ jsx2(
|
|
136
|
+
Comp,
|
|
137
|
+
{
|
|
138
|
+
className: cn(buttonVariants({ variant, size, className })),
|
|
139
|
+
ref,
|
|
140
|
+
...props,
|
|
141
|
+
children: asChild ? children : /* @__PURE__ */ jsx2("span", { className: "relative z-20 flex items-center justify-center gap-2", children })
|
|
142
|
+
}
|
|
143
|
+
);
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
// src/components/data-display/DataTable.tsx
|
|
147
|
+
import { jsx as jsx3, jsxs } from "react/jsx-runtime";
|
|
148
|
+
function DataTable({
|
|
149
|
+
columns,
|
|
150
|
+
data
|
|
151
|
+
}) {
|
|
152
|
+
const [sorting, setSorting] = React.useState([]);
|
|
153
|
+
const table = useReactTable({
|
|
154
|
+
data,
|
|
155
|
+
columns,
|
|
156
|
+
getCoreRowModel: getCoreRowModel(),
|
|
157
|
+
getPaginationRowModel: getPaginationRowModel(),
|
|
158
|
+
onSortingChange: setSorting,
|
|
159
|
+
getSortedRowModel: getSortedRowModel(),
|
|
160
|
+
state: {
|
|
161
|
+
sorting
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-4", children: [
|
|
165
|
+
/* @__PURE__ */ jsx3("div", { className: "rounded-md border", children: /* @__PURE__ */ jsxs(Table, { children: [
|
|
166
|
+
/* @__PURE__ */ jsx3(TableHeader, { children: table.getHeaderGroups().map((headerGroup) => /* @__PURE__ */ jsx3(TableRow, { children: headerGroup.headers.map((header) => {
|
|
167
|
+
return /* @__PURE__ */ jsx3(TableHead, { children: header.isPlaceholder ? null : flexRender(
|
|
168
|
+
header.column.columnDef.header,
|
|
169
|
+
header.getContext()
|
|
170
|
+
) }, header.id);
|
|
171
|
+
}) }, headerGroup.id)) }),
|
|
172
|
+
/* @__PURE__ */ jsx3(TableBody, { children: table.getRowModel().rows?.length ? table.getRowModel().rows.map((row) => /* @__PURE__ */ jsx3(
|
|
173
|
+
TableRow,
|
|
174
|
+
{
|
|
175
|
+
"data-state": row.getIsSelected() && "selected",
|
|
176
|
+
children: row.getVisibleCells().map((cell) => /* @__PURE__ */ jsx3(TableCell, { children: flexRender(
|
|
177
|
+
cell.column.columnDef.cell,
|
|
178
|
+
cell.getContext()
|
|
179
|
+
) }, cell.id))
|
|
180
|
+
},
|
|
181
|
+
row.id
|
|
182
|
+
)) : /* @__PURE__ */ jsx3(TableRow, { children: /* @__PURE__ */ jsx3(
|
|
183
|
+
TableCell,
|
|
184
|
+
{
|
|
185
|
+
colSpan: columns.length,
|
|
186
|
+
className: "h-24 text-center",
|
|
187
|
+
children: "No results."
|
|
188
|
+
}
|
|
189
|
+
) }) })
|
|
190
|
+
] }) }),
|
|
191
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-end space-x-2", children: [
|
|
192
|
+
/* @__PURE__ */ jsx3(
|
|
193
|
+
Button,
|
|
194
|
+
{
|
|
195
|
+
variant: "outline",
|
|
196
|
+
size: "sm",
|
|
197
|
+
onClick: () => table.previousPage(),
|
|
198
|
+
disabled: !table.getCanPreviousPage(),
|
|
199
|
+
children: "Previous"
|
|
200
|
+
}
|
|
201
|
+
),
|
|
202
|
+
/* @__PURE__ */ jsx3(
|
|
203
|
+
Button,
|
|
204
|
+
{
|
|
205
|
+
variant: "outline",
|
|
206
|
+
size: "sm",
|
|
207
|
+
onClick: () => table.nextPage(),
|
|
208
|
+
disabled: !table.getCanNextPage(),
|
|
209
|
+
children: "Next"
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
] })
|
|
213
|
+
] });
|
|
214
|
+
}
|
|
215
|
+
export {
|
|
216
|
+
DataTable
|
|
217
|
+
};
|
|
218
|
+
//# sourceMappingURL=tables.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/data-display/DataTable.tsx","../src/lib/utils.ts","../src/components/data-display/Table.tsx","../src/components/actions/Button.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport {\n ColumnDef,\n flexRender,\n getCoreRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n useReactTable,\n} from \"@tanstack/react-table\"\n\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"./Table\"\nimport { Button } from \"../actions/Button\"\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([])\n\n const table = useReactTable({\n data,\n columns,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n onSortingChange: setSorting,\n getSortedRowModel: getSortedRowModel(),\n state: {\n sorting,\n },\n })\n\n return (\n <div className=\"space-y-4\">\n <div className=\"rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n )\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex items-center justify-end space-x-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Previous\n </Button>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n )\n}\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Table = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableElement> & {\n ref?: React.Ref<HTMLTableElement>;\n }\n) => (<div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n</div>)\n\nconst TableHeader = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />)\n\nconst TableBody = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n/>)\n\nconst TableFooter = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableSectionElement> & {\n ref?: React.Ref<HTMLTableSectionElement>;\n }\n) => (<tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n/>)\n\nconst TableRow = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableRowElement> & {\n ref?: React.Ref<HTMLTableRowElement>;\n }\n) => (<tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n/>)\n\nconst TableHead = (\n {\n ref,\n className,\n ...props\n }: React.ThHTMLAttributes<HTMLTableCellElement> & {\n ref?: React.Ref<HTMLTableCellElement>;\n }\n) => (<th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n/>)\n\nconst TableCell = (\n {\n ref,\n className,\n ...props\n }: React.TdHTMLAttributes<HTMLTableCellElement> & {\n ref?: React.Ref<HTMLTableCellElement>;\n }\n) => (<td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n/>)\n\nconst TableCaption = (\n {\n ref,\n className,\n ...props\n }: React.HTMLAttributes<HTMLTableCaptionElement> & {\n ref?: React.Ref<HTMLTableCaptionElement>;\n }\n) => (<caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n/>)\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","import * as React from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { cn } from '../../lib/utils';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst buttonVariants = cva(\n 'inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 sage-interactive [&_svg]:transition-transform [&_svg]:duration-300 hover:[&_svg]:translate-x-1',\n {\n variants: {\n variant: {\n default: 'bg-primary text-primary-foreground shadow',\n primary: 'bg-primary text-primary-foreground shadow', // Alias for default\n destructive: 'bg-destructive text-destructive-foreground shadow-sm',\n outline: 'border border-input bg-transparent shadow-sm hover:bg-primary hover:text-primary-foreground hover:border-primary',\n secondary: 'bg-black/5 dark:bg-white/10 backdrop-blur-md border border-black/5 dark:border-white/10 text-secondary-foreground shadow-sm hover:bg-primary hover:text-primary-foreground dark:hover:bg-primary dark:hover:text-primary-foreground',\n ghost: 'hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n },\n size: {\n default: 'h-9 px-4 py-2',\n sm: 'h-8 rounded-md px-3 text-xs',\n lg: 'h-10 rounded-md px-8',\n icon: 'h-9 w-9',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = (\n {\n ref,\n className,\n variant,\n size,\n asChild = false,\n children,\n ...props\n }: ButtonProps & {\n ref?: React.Ref<HTMLButtonElement>;\n }\n) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n >\n {asChild ? (\n children\n ) : (\n <span className=\"relative z-20 flex items-center justify-center gap-2\">\n {children}\n </span>\n )}\n </Comp>\n )\n}\n\nexport { Button, buttonVariants };\n"],"mappings":"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","names":["jsx","jsx"]}
|
package/dist/utils.js
CHANGED
|
@@ -520,7 +520,8 @@ function hexToHSL(hex) {
|
|
|
520
520
|
const b = rgb.b / 255;
|
|
521
521
|
const max = Math.max(r, g, b);
|
|
522
522
|
const min = Math.min(r, g, b);
|
|
523
|
-
let h = 0, s = 0
|
|
523
|
+
let h = 0, s = 0;
|
|
524
|
+
const l = (max + min) / 2;
|
|
524
525
|
if (max !== min) {
|
|
525
526
|
const d = max - min;
|
|
526
527
|
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|