@opencosmos/ui 1.3.1
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/.claude/CLAUDE.md +239 -0
- package/README.md +161 -0
- package/dist/cli.mjs +151 -0
- package/dist/dates.d.mts +20 -0
- package/dist/dates.d.ts +20 -0
- package/dist/dates.js +240 -0
- package/dist/dates.js.map +1 -0
- package/dist/dates.mjs +203 -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/fontThemes-Dh8mtXES.d.mts +868 -0
- package/dist/fontThemes-Dh8mtXES.d.ts +868 -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-1b8WaQf1.d.mts +225 -0
- package/dist/hooks-CKW8vE9H.d.ts +225 -0
- package/dist/hooks.d.mts +3 -0
- package/dist/hooks.d.ts +3 -0
- package/dist/hooks.js +971 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hooks.mjs +943 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index-DscTIrZ2.d.mts +29 -0
- package/dist/index-DscTIrZ2.d.ts +29 -0
- package/dist/index.d.mts +3382 -0
- package/dist/index.d.ts +3382 -0
- package/dist/index.js +15146 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +14802 -0
- package/dist/index.mjs.map +1 -0
- package/dist/providers-CXPDMsl7.d.mts +30 -0
- package/dist/providers-Dn_Msjvz.d.ts +30 -0
- package/dist/providers.d.mts +3 -0
- package/dist/providers.d.ts +3 -0
- package/dist/providers.js +1885 -0
- package/dist/providers.js.map +1 -0
- package/dist/providers.mjs +1859 -0
- package/dist/providers.mjs.map +1 -0
- 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/tokens.d.mts +1065 -0
- package/dist/tokens.d.ts +1065 -0
- package/dist/tokens.js +2637 -0
- package/dist/tokens.js.map +1 -0
- package/dist/tokens.mjs +2555 -0
- package/dist/tokens.mjs.map +1 -0
- package/dist/utils-CIIM7dAC.d.ts +986 -0
- package/dist/utils-Cs04sxth.d.mts +986 -0
- package/dist/utils.d.mts +4 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +874 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +806 -0
- package/dist/utils.mjs.map +1 -0
- package/dist/validation-Bj1ye-v_.d.mts +114 -0
- package/dist/validation-Bj1ye-v_.d.ts +114 -0
- 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 +267 -0
- package/src/cli.ts +206 -0
- package/src/component-registry.ts +183 -0
- package/src/components/actions/Button.test.tsx +61 -0
- package/src/components/actions/Button.tsx +70 -0
- package/src/components/actions/Link.tsx +78 -0
- package/src/components/actions/Magnetic.tsx +68 -0
- package/src/components/actions/Toggle.test.tsx +40 -0
- package/src/components/actions/Toggle.tsx +47 -0
- package/src/components/actions/ToggleGroup.tsx +70 -0
- package/src/components/actions/index.ts +5 -0
- package/src/components/backgrounds/FaultyTerminal.tsx +426 -0
- package/src/components/backgrounds/OrbBackground.tsx +424 -0
- package/src/components/backgrounds/WarpBackground.tsx +358 -0
- package/src/components/backgrounds/index.ts +3 -0
- package/src/components/blocks/Hero.tsx +142 -0
- package/src/components/blocks/social/OpenGraphCard.tsx +243 -0
- package/src/components/cursor/SplashCursor.tsx +1315 -0
- package/src/components/cursor/TargetCursor.tsx +187 -0
- package/src/components/cursor/index.ts +2 -0
- package/src/components/data-display/AspectImage.tsx +73 -0
- package/src/components/data-display/Avatar.test.tsx +35 -0
- package/src/components/data-display/Avatar.tsx +55 -0
- package/src/components/data-display/Badge.test.tsx +43 -0
- package/src/components/data-display/Badge.tsx +84 -0
- package/src/components/data-display/Brand.tsx +123 -0
- package/src/components/data-display/Calendar.tsx +70 -0
- package/src/components/data-display/Card.test.tsx +92 -0
- package/src/components/data-display/Card.tsx +115 -0
- package/src/components/data-display/Code.tsx +210 -0
- package/src/components/data-display/CollapsibleCodeBlock.tsx +238 -0
- package/src/components/data-display/DataTable.tsx +119 -0
- package/src/components/data-display/DescriptionList.tsx +41 -0
- package/src/components/data-display/GitHubIcon.tsx +44 -0
- package/src/components/data-display/Heading.test.tsx +36 -0
- package/src/components/data-display/Heading.tsx +83 -0
- package/src/components/data-display/StatCard.tsx +195 -0
- package/src/components/data-display/Table.tsx +133 -0
- package/src/components/data-display/Text.test.tsx +48 -0
- package/src/components/data-display/Text.tsx +144 -0
- package/src/components/data-display/Timeline.tsx +194 -0
- package/src/components/data-display/TreeView.tsx +226 -0
- package/src/components/data-display/Typewriter.tsx +119 -0
- package/src/components/data-display/VariableWeightText.tsx +130 -0
- package/src/components/data-display/index.ts +19 -0
- package/src/components/feedback/Alert.test.tsx +44 -0
- package/src/components/feedback/Alert.tsx +65 -0
- package/src/components/feedback/EmptyState.tsx +113 -0
- package/src/components/feedback/Progress.test.tsx +60 -0
- package/src/components/feedback/Progress.tsx +30 -0
- package/src/components/feedback/ProgressBar.tsx +158 -0
- package/src/components/feedback/Skeleton.test.tsx +39 -0
- package/src/components/feedback/Skeleton.tsx +45 -0
- package/src/components/feedback/Sonner.tsx +28 -0
- package/src/components/feedback/Spinner.test.tsx +33 -0
- package/src/components/feedback/Spinner.tsx +99 -0
- package/src/components/feedback/Stepper.tsx +307 -0
- package/src/components/feedback/Toast/Toast.tsx +243 -0
- package/src/components/feedback/Toast/index.ts +2 -0
- package/src/components/feedback/index.ts +9 -0
- package/src/components/forms/Checkbox.test.tsx +40 -0
- package/src/components/forms/Checkbox.tsx +31 -0
- package/src/components/forms/ColorPicker.tsx +118 -0
- package/src/components/forms/Combobox.tsx +96 -0
- package/src/components/forms/DragDrop.tsx +440 -0
- package/src/components/forms/FileUpload.tsx +252 -0
- package/src/components/forms/FilterButton.tsx +65 -0
- package/src/components/forms/Form.tsx +197 -0
- package/src/components/forms/Input.test.tsx +46 -0
- package/src/components/forms/Input.tsx +43 -0
- package/src/components/forms/InputOTP.tsx +81 -0
- package/src/components/forms/Label.test.tsx +20 -0
- package/src/components/forms/Label.tsx +25 -0
- package/src/components/forms/RadioGroup.tsx +51 -0
- package/src/components/forms/SearchBar.tsx +215 -0
- package/src/components/forms/Select.test.tsx +118 -0
- package/src/components/forms/Select.tsx +274 -0
- package/src/components/forms/Slider.tsx +29 -0
- package/src/components/forms/Switch.test.tsx +76 -0
- package/src/components/forms/Switch.tsx +30 -0
- package/src/components/forms/TextField.tsx +152 -0
- package/src/components/forms/Textarea.test.tsx +41 -0
- package/src/components/forms/Textarea.tsx +29 -0
- package/src/components/forms/ThemeSwitcher.tsx +290 -0
- package/src/components/forms/ThemeToggle.tsx +151 -0
- package/src/components/forms/index.ts +19 -0
- package/src/components/layout/Accordion.test.tsx +66 -0
- package/src/components/layout/Accordion.tsx +64 -0
- package/src/components/layout/AspectRatio.tsx +7 -0
- package/src/components/layout/Carousel.tsx +277 -0
- package/src/components/layout/Collapsible.test.tsx +40 -0
- package/src/components/layout/Collapsible.tsx +31 -0
- package/src/components/layout/Container.test.tsx +45 -0
- package/src/components/layout/Container.tsx +99 -0
- package/src/components/layout/CustomizerPanel.tsx +400 -0
- package/src/components/layout/DatePicker.tsx +57 -0
- package/src/components/layout/Footer/Footer.tsx +175 -0
- package/src/components/layout/Footer/index.ts +2 -0
- package/src/components/layout/GlassSurface.tsx +82 -0
- package/src/components/layout/Grid.test.tsx +31 -0
- package/src/components/layout/Grid.tsx +130 -0
- package/src/components/layout/Header/Header.tsx +450 -0
- package/src/components/layout/Header/index.ts +2 -0
- package/src/components/layout/PageLayout.tsx +180 -0
- package/src/components/layout/PageTemplate.tsx +158 -0
- package/src/components/layout/Resizable.tsx +48 -0
- package/src/components/layout/ScrollArea.tsx +53 -0
- package/src/components/layout/Separator.test.tsx +28 -0
- package/src/components/layout/Separator.tsx +29 -0
- package/src/components/layout/Sidebar.tsx +171 -0
- package/src/components/layout/Stack.test.tsx +41 -0
- package/src/components/layout/Stack.tsx +89 -0
- package/src/components/layout/glass-surface.css +60 -0
- package/src/components/layout/index.ts +18 -0
- package/src/components/motion/AnimatedBeam.tsx +159 -0
- package/src/components/navigation/Breadcrumb.test.tsx +57 -0
- package/src/components/navigation/Breadcrumb.tsx +119 -0
- package/src/components/navigation/Breadcrumbs.tsx +221 -0
- package/src/components/navigation/Command.tsx +159 -0
- package/src/components/navigation/Menubar.tsx +115 -0
- package/src/components/navigation/NavLink.tsx +55 -0
- package/src/components/navigation/NavigationMenu.tsx +125 -0
- package/src/components/navigation/Pagination.tsx +121 -0
- package/src/components/navigation/SecondaryNav.tsx +100 -0
- package/src/components/navigation/Tabs.test.tsx +47 -0
- package/src/components/navigation/Tabs.tsx +60 -0
- package/src/components/navigation/TertiaryNav.tsx +90 -0
- package/src/components/navigation/index.ts +10 -0
- package/src/components/overlays/AlertDialog.test.tsx +69 -0
- package/src/components/overlays/AlertDialog.tsx +166 -0
- package/src/components/overlays/ContextMenu.tsx +243 -0
- package/src/components/overlays/Dialog.test.tsx +79 -0
- package/src/components/overlays/Dialog.tsx +158 -0
- package/src/components/overlays/Drawer.tsx +128 -0
- package/src/components/overlays/Dropdown.tsx +253 -0
- package/src/components/overlays/DropdownMenu.tsx +242 -0
- package/src/components/overlays/HoverCard.tsx +32 -0
- package/src/components/overlays/Modal.tsx +250 -0
- package/src/components/overlays/NotificationCenter.tsx +364 -0
- package/src/components/overlays/Popover.test.tsx +40 -0
- package/src/components/overlays/Popover.tsx +46 -0
- package/src/components/overlays/Sheet.tsx +163 -0
- package/src/components/overlays/Tooltip.test.tsx +33 -0
- package/src/components/overlays/Tooltip.tsx +32 -0
- package/src/components/overlays/index.ts +12 -0
- package/src/dates.ts +2 -0
- package/src/dnd.ts +1 -0
- package/src/forms.ts +1 -0
- package/src/globals.css +187 -0
- package/src/hooks/index.ts +6 -0
- package/src/hooks/useForm.ts +247 -0
- package/src/hooks/useMotionPreference.test.ts +102 -0
- package/src/hooks/useMotionPreference.ts +78 -0
- package/src/hooks/useTheme.ts +58 -0
- package/src/hooks.ts +9 -0
- package/src/index.ts +168 -0
- package/src/lib/animations.ts +356 -0
- package/src/lib/breadcrumbs.ts +94 -0
- package/src/lib/colors.ts +493 -0
- package/src/lib/store/customizer.ts +482 -0
- package/src/lib/store/index.ts +3 -0
- package/src/lib/store/theme.ts +55 -0
- package/src/lib/syntax-parser/index.ts +50 -0
- package/src/lib/syntax-parser/patterns.ts +64 -0
- package/src/lib/syntax-parser/tokenizer.ts +117 -0
- package/src/lib/syntax-parser/types.ts +27 -0
- package/src/lib/utils.ts +6 -0
- package/src/lib/validation.ts +204 -0
- package/src/lib/webgl/Color.ts +11 -0
- package/src/lib/webgl/Mesh.ts +41 -0
- package/src/lib/webgl/Program.ts +118 -0
- package/src/lib/webgl/Renderer.ts +51 -0
- package/src/lib/webgl/Triangle.ts +27 -0
- package/src/lib/webgl/Vec3.ts +18 -0
- package/src/lib/webgl/index.ts +13 -0
- package/src/nativewind-env.d.ts +1 -0
- package/src/providers/ThemeProvider.tsx +461 -0
- package/src/providers/index.ts +1 -0
- package/src/providers.ts +7 -0
- package/src/tables.ts +1 -0
- package/src/test/setup.ts +39 -0
- package/src/theme.css +158 -0
- package/src/tokens.ts +7 -0
- package/src/utils.ts +12 -0
- package/src/webgl.ts +1 -0
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-sm",
|
|
104
|
+
primary: "bg-primary text-primary-foreground shadow-sm",
|
|
105
|
+
// Alias for default
|
|
106
|
+
destructive: "bg-destructive text-destructive-foreground shadow-xs",
|
|
107
|
+
outline: "border border-input bg-transparent shadow-xs 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-xs 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-sm',\n primary: 'bg-primary text-primary-foreground shadow-sm', // Alias for default\n destructive: 'bg-destructive text-destructive-foreground shadow-xs',\n outline: 'border border-input bg-transparent shadow-xs 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-xs 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"]}
|