@murumets-ee/ui 0.1.4 → 0.3.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.
@@ -0,0 +1,278 @@
1
+
2
+ import { ClassValue } from "clsx";
3
+ import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
+ import * as _$_radix_ui_react_slot0 from "@radix-ui/react-slot";
5
+ import * as _$react from "react";
6
+ import { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes } from "react";
7
+ import * as RechartsPrimitive from "recharts";
8
+ import { TooltipValueType } from "recharts";
9
+ import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
10
+ import { Column, ColumnDef, Table as Table$1 } from "@tanstack/react-table";
11
+ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
12
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
13
+ import * as _$react_hook_form0 from "react-hook-form";
14
+ import { ControllerProps, FieldPath, FieldValues } from "react-hook-form";
15
+ import * as LabelPrimitive from "@radix-ui/react-label";
16
+ import * as SeparatorPrimitive from "@radix-ui/react-separator";
17
+ import { toast } from "sonner";
18
+
19
+ //#region src/badge.d.ts
20
+ interface BadgeProps extends HTMLAttributes<HTMLDivElement> {
21
+ variant?: 'default' | 'secondary' | 'destructive' | 'outline';
22
+ }
23
+ declare function Badge({
24
+ className,
25
+ variant,
26
+ ...props
27
+ }: BadgeProps): _$react_jsx_runtime0.JSX.Element;
28
+ //#endregion
29
+ //#region src/button.d.ts
30
+ interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
31
+ variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
32
+ size?: 'default' | 'sm' | 'lg' | 'icon';
33
+ loading?: boolean;
34
+ asChild?: boolean;
35
+ }
36
+ declare const Button: _$react.ForwardRefExoticComponent<ButtonProps & _$react.RefAttributes<HTMLButtonElement>>;
37
+ //#endregion
38
+ //#region src/card.d.ts
39
+ declare const Card: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
40
+ declare const CardHeader: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
41
+ declare const CardTitle: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
42
+ declare const CardDescription: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
43
+ declare const CardContent: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
44
+ declare const CardFooter: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
45
+ //#endregion
46
+ //#region src/chart.d.ts
47
+ declare const THEMES: {
48
+ readonly light: "";
49
+ readonly dark: ".dark";
50
+ };
51
+ type TooltipNameType = number | string;
52
+ type ChartConfig = Record<string, {
53
+ label?: _$react.ReactNode;
54
+ icon?: _$react.ComponentType;
55
+ } & ({
56
+ color?: string;
57
+ theme?: never;
58
+ } | {
59
+ color?: never;
60
+ theme: Record<keyof typeof THEMES, string>;
61
+ })>;
62
+ declare function ChartContainer({
63
+ id,
64
+ className,
65
+ children,
66
+ config,
67
+ initialDimension,
68
+ ...props
69
+ }: _$react.ComponentProps<"div"> & {
70
+ config: ChartConfig;
71
+ children: _$react.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
72
+ initialDimension?: {
73
+ width: number;
74
+ height: number;
75
+ };
76
+ }): _$react_jsx_runtime0.JSX.Element;
77
+ declare const ChartStyle: ({
78
+ id,
79
+ config
80
+ }: {
81
+ id: string;
82
+ config: ChartConfig;
83
+ }) => _$react_jsx_runtime0.JSX.Element | null;
84
+ declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
85
+ declare function ChartTooltipContent({
86
+ active,
87
+ payload,
88
+ className,
89
+ indicator,
90
+ hideLabel,
91
+ hideIndicator,
92
+ label,
93
+ labelFormatter,
94
+ labelClassName,
95
+ formatter,
96
+ color,
97
+ nameKey,
98
+ labelKey
99
+ }: _$react.ComponentProps<typeof RechartsPrimitive.Tooltip> & _$react.ComponentProps<"div"> & {
100
+ hideLabel?: boolean;
101
+ hideIndicator?: boolean;
102
+ indicator?: "line" | "dot" | "dashed";
103
+ nameKey?: string;
104
+ labelKey?: string;
105
+ } & Omit<RechartsPrimitive.DefaultTooltipContentProps<TooltipValueType, TooltipNameType>, "accessibilityLayer">): _$react_jsx_runtime0.JSX.Element | null;
106
+ declare const ChartLegend: _$react.MemoExoticComponent<(outsideProps: RechartsPrimitive.LegendProps) => _$react.ReactPortal | null>;
107
+ declare function ChartLegendContent({
108
+ className,
109
+ hideIcon,
110
+ payload,
111
+ verticalAlign,
112
+ nameKey
113
+ }: _$react.ComponentProps<"div"> & {
114
+ hideIcon?: boolean;
115
+ nameKey?: string;
116
+ } & RechartsPrimitive.DefaultLegendContentProps): _$react_jsx_runtime0.JSX.Element | null;
117
+ //#endregion
118
+ //#region src/checkbox.d.ts
119
+ declare const Checkbox: _$react.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & _$react.RefAttributes<HTMLButtonElement>, "ref"> & _$react.RefAttributes<HTMLButtonElement>>;
120
+ //#endregion
121
+ //#region src/data-table/data-table.d.ts
122
+ interface DataTableClassNames {
123
+ root?: string;
124
+ toolbar?: string;
125
+ table?: string;
126
+ pagination?: string;
127
+ }
128
+ interface DataTableProps<TData, TValue> {
129
+ columns: ColumnDef<TData, TValue>[];
130
+ data: TData[];
131
+ searchKey?: string;
132
+ searchPlaceholder?: string;
133
+ pageSize?: number;
134
+ emptyMessage?: string;
135
+ classNames?: DataTableClassNames;
136
+ }
137
+ declare function DataTable<TData, TValue>({
138
+ columns,
139
+ data,
140
+ searchKey,
141
+ searchPlaceholder,
142
+ pageSize,
143
+ emptyMessage,
144
+ classNames
145
+ }: DataTableProps<TData, TValue>): _$react_jsx_runtime0.JSX.Element;
146
+ //#endregion
147
+ //#region src/data-table/data-table-column-header.d.ts
148
+ interface DataTableColumnHeaderProps<TData, TValue> {
149
+ column: Column<TData, TValue>;
150
+ title: string;
151
+ className?: string;
152
+ }
153
+ declare function DataTableColumnHeader<TData, TValue>({
154
+ column,
155
+ title,
156
+ className
157
+ }: DataTableColumnHeaderProps<TData, TValue>): _$react_jsx_runtime0.JSX.Element;
158
+ //#endregion
159
+ //#region src/data-table/data-table-pagination.d.ts
160
+ interface DataTablePaginationProps<TData> {
161
+ table: Table$1<TData>;
162
+ className?: string;
163
+ }
164
+ declare function DataTablePagination<TData>({
165
+ table,
166
+ className
167
+ }: DataTablePaginationProps<TData>): _$react_jsx_runtime0.JSX.Element;
168
+ //#endregion
169
+ //#region src/data-table/data-table-view-options.d.ts
170
+ interface DataTableViewOptionsProps<TData> {
171
+ table: Table$1<TData>;
172
+ }
173
+ declare function DataTableViewOptions<TData>({
174
+ table
175
+ }: DataTableViewOptionsProps<TData>): _$react_jsx_runtime0.JSX.Element;
176
+ //#endregion
177
+ //#region src/dialog.d.ts
178
+ declare const Dialog: _$react.FC<DialogPrimitive.DialogProps>;
179
+ declare const DialogTrigger: _$react.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & _$react.RefAttributes<HTMLButtonElement>>;
180
+ declare const DialogClose: _$react.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & _$react.RefAttributes<HTMLButtonElement>>;
181
+ declare const DialogPortal: _$react.FC<DialogPrimitive.DialogPortalProps>;
182
+ declare const DialogOverlay: _$react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
183
+ declare const DialogContent: _$react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
184
+ declare function DialogHeader({
185
+ className,
186
+ ...props
187
+ }: HTMLAttributes<HTMLDivElement>): _$react_jsx_runtime0.JSX.Element;
188
+ declare function DialogFooter({
189
+ className,
190
+ ...props
191
+ }: HTMLAttributes<HTMLDivElement>): _$react_jsx_runtime0.JSX.Element;
192
+ declare const DialogTitle: _$react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & _$react.RefAttributes<HTMLHeadingElement>, "ref"> & _$react.RefAttributes<HTMLHeadingElement>>;
193
+ declare const DialogDescription: _$react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & _$react.RefAttributes<HTMLParagraphElement>, "ref"> & _$react.RefAttributes<HTMLParagraphElement>>;
194
+ //#endregion
195
+ //#region src/dropdown-menu.d.ts
196
+ declare const DropdownMenu: _$react.FC<DropdownMenuPrimitive.DropdownMenuProps>;
197
+ declare const DropdownMenuTrigger: _$react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & _$react.RefAttributes<HTMLButtonElement>>;
198
+ declare const DropdownMenuGroup: _$react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & _$react.RefAttributes<HTMLDivElement>>;
199
+ declare const DropdownMenuPortal: _$react.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
200
+ declare const DropdownMenuSub: _$react.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
201
+ declare const DropdownMenuContent: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
202
+ declare const DropdownMenuItem: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & {
203
+ inset?: boolean;
204
+ } & _$react.RefAttributes<HTMLDivElement>>;
205
+ declare const DropdownMenuCheckboxItem: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
206
+ declare const DropdownMenuLabel: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & {
207
+ inset?: boolean;
208
+ } & _$react.RefAttributes<HTMLDivElement>>;
209
+ declare const DropdownMenuSeparator: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
210
+ declare const DropdownMenuSubTrigger: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & {
211
+ inset?: boolean;
212
+ } & _$react.RefAttributes<HTMLDivElement>>;
213
+ declare const DropdownMenuSubContent: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
214
+ declare function DropdownMenuShortcut({
215
+ className,
216
+ ...props
217
+ }: HTMLAttributes<HTMLSpanElement>): _$react_jsx_runtime0.JSX.Element;
218
+ //#endregion
219
+ //#region src/form.d.ts
220
+ declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: _$react_hook_form0.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
221
+ declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ControllerProps<TFieldValues, TName>): _$react_jsx_runtime0.JSX.Element;
222
+ declare function useFormField(): {
223
+ invalid: boolean;
224
+ isDirty: boolean;
225
+ isTouched: boolean;
226
+ isValidating: boolean;
227
+ error?: _$react_hook_form0.FieldError;
228
+ id: string;
229
+ name: string;
230
+ formItemId: string;
231
+ formDescriptionId: string;
232
+ formMessageId: string;
233
+ };
234
+ declare const FormItem: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
235
+ declare const FormLabel: _$react.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & _$react.RefAttributes<HTMLLabelElement>, "ref"> & _$react.RefAttributes<HTMLLabelElement>>;
236
+ declare const FormControl: _$react.ForwardRefExoticComponent<Omit<_$_radix_ui_react_slot0.SlotProps & _$react.RefAttributes<HTMLElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
237
+ declare const FormDescription: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & _$react.RefAttributes<HTMLParagraphElement>>;
238
+ declare const FormMessage: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & _$react.RefAttributes<HTMLParagraphElement>>;
239
+ //#endregion
240
+ //#region src/input.d.ts
241
+ declare const Input: _$react.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & _$react.RefAttributes<HTMLInputElement>>;
242
+ //#endregion
243
+ //#region src/label.d.ts
244
+ declare const Label: _$react.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & _$react.RefAttributes<HTMLLabelElement>, "ref"> & _$react.RefAttributes<HTMLLabelElement>>;
245
+ //#endregion
246
+ //#region src/lib/cn.d.ts
247
+ declare function cn(...inputs: ClassValue[]): string;
248
+ //#endregion
249
+ //#region src/select.d.ts
250
+ declare const Select: _$react.ForwardRefExoticComponent<SelectHTMLAttributes<HTMLSelectElement> & _$react.RefAttributes<HTMLSelectElement>>;
251
+ //#endregion
252
+ //#region src/separator.d.ts
253
+ declare const Separator: _$react.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
254
+ //#endregion
255
+ //#region src/skeleton.d.ts
256
+ declare function Skeleton({
257
+ className,
258
+ ...props
259
+ }: HTMLAttributes<HTMLDivElement>): _$react_jsx_runtime0.JSX.Element;
260
+ //#endregion
261
+ //#region src/sonner.d.ts
262
+ declare function Toaster(): _$react_jsx_runtime0.JSX.Element;
263
+ //#endregion
264
+ //#region src/table.d.ts
265
+ declare const Table: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableElement> & _$react.RefAttributes<HTMLTableElement>>;
266
+ declare const TableHeader: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
267
+ declare const TableBody: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
268
+ declare const TableFooter: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
269
+ declare const TableRow: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableRowElement> & _$react.RefAttributes<HTMLTableRowElement>>;
270
+ declare const TableHead: _$react.ForwardRefExoticComponent<ThHTMLAttributes<HTMLTableCellElement> & _$react.RefAttributes<HTMLTableCellElement>>;
271
+ declare const TableCell: _$react.ForwardRefExoticComponent<TdHTMLAttributes<HTMLTableCellElement> & _$react.RefAttributes<HTMLTableCellElement>>;
272
+ declare const TableCaption: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableCaptionElement> & _$react.RefAttributes<HTMLTableCaptionElement>>;
273
+ //#endregion
274
+ //#region src/textarea.d.ts
275
+ declare const Textarea: _$react.ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & _$react.RefAttributes<HTMLTextAreaElement>>;
276
+ //#endregion
277
+ export { Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartConfig, ChartContainer, ChartLegend, ChartLegendContent, ChartStyle, ChartTooltip, ChartTooltipContent, Checkbox, DataTable, type DataTableClassNames, DataTableColumnHeader, DataTablePagination, type DataTableProps, DataTableViewOptions, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, Label, Select, Separator, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toaster, cn, toast, useFormField };
278
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/badge.tsx","../src/button.tsx","../src/card.tsx","../src/chart.tsx","../src/checkbox.tsx","../src/data-table/data-table.tsx","../src/data-table/data-table-column-header.tsx","../src/data-table/data-table-pagination.tsx","../src/data-table/data-table-view-options.tsx","../src/dialog.tsx","../src/dropdown-menu.tsx","../src/form.tsx","../src/input.tsx","../src/label.tsx","../src/lib/cn.ts","../src/select.tsx","../src/separator.tsx","../src/skeleton.tsx","../src/sonner.tsx","../src/table.tsx","../src/textarea.tsx"],"mappings":"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"}
package/dist/index.mjs ADDED
@@ -0,0 +1,9 @@
1
+ "use client";
2
+ import{clsx as e}from"clsx";import{twMerge as t}from"tailwind-merge";import{Fragment as n,jsx as r,jsxs as i}from"react/jsx-runtime";import{Slot as a}from"@radix-ui/react-slot";import{ArrowDown as o,ArrowUp as s,Check as c,ChevronLeft as l,ChevronRight as u,ChevronsLeft as d,ChevronsRight as f,ChevronsUpDown as p,EyeOff as m,Loader2 as h,Settings2 as g,X as _}from"lucide-react";import*as v from"react";import{createContext as y,forwardRef as b,useContext as ee,useId as te,useState as x}from"react";import*as S from"recharts";import*as ne from"@radix-ui/react-checkbox";import{flexRender as re,getCoreRowModel as ie,getFilteredRowModel as ae,getPaginationRowModel as oe,getSortedRowModel as se,useReactTable as ce}from"@tanstack/react-table";import*as C from"@radix-ui/react-dropdown-menu";import*as w from"@radix-ui/react-dialog";import{Controller as le,FormProvider as ue,useFormContext as de}from"react-hook-form";import*as fe from"@radix-ui/react-label";import*as pe from"@radix-ui/react-separator";import{Toaster as me,toast as he}from"sonner";function T(...n){return t(e(n))}const ge={default:`border-transparent bg-primary text-primary-foreground shadow-xs`,secondary:`border-transparent bg-secondary text-secondary-foreground`,destructive:`border-transparent bg-destructive text-destructive-foreground shadow-xs`,outline:`text-foreground`};function _e({className:e,variant:t=`default`,...n}){return r(`div`,{className:T(`inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold`,`transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,ge[t],e),...n})}const ve={default:`bg-primary text-primary-foreground shadow-xs hover:bg-primary/90`,destructive:`bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90`,outline:`border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground`,secondary:`bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80`,ghost:`hover:bg-accent hover:text-accent-foreground`,link:`text-primary underline-offset-4 hover:underline`},ye={default:`h-9 px-4 py-2`,sm:`h-8 rounded-md px-3 text-xs`,lg:`h-10 rounded-md px-8`,icon:`h-9 w-9`},E=b(({className:e,variant:t=`default`,size:n=`default`,loading:o=!1,asChild:s=!1,disabled:c,children:l,type:u=`button`,...d},f)=>{let p=T(`inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium`,`transition-colors cursor-pointer`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:pointer-events-none disabled:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0`,ve[t],ye[n],e);return s?r(a,{ref:f,className:p,...d,children:l}):i(`button`,{ref:f,disabled:c||o,className:p,type:u,...d,children:[o&&r(h,{className:`h-4 w-4 animate-spin`}),l]})});E.displayName=`Button`;const D=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));D.displayName=`Card`;const O=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`flex flex-col space-y-1.5 p-6`,e),...t}));O.displayName=`CardHeader`;const k=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`font-semibold leading-none tracking-tight`,e),...t}));k.displayName=`CardTitle`;const A=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`text-sm text-muted-foreground`,e),...t}));A.displayName=`CardDescription`;const j=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`p-6 pt-0`,e),...t}));j.displayName=`CardContent`;const M=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`flex items-center p-6 pt-0`,e),...t}));M.displayName=`CardFooter`;const be={light:``,dark:`.dark`},xe={width:320,height:200},N=v.createContext(null);function P(){let e=v.useContext(N);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function Se({id:e,className:t,children:n,config:a,initialDimension:o=xe,...s}){let c=v.useId(),l=`chart-${e??c.replace(/:/g,``)}`;return r(N.Provider,{value:{config:a},children:i(`div`,{"data-slot":`chart`,"data-chart":l,className:T(`flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden`,t),...s,children:[r(F,{id:l,config:a}),r(S.ResponsiveContainer,{initialDimension:o,children:n})]})})}const F=({id:e,config:t})=>{let n=Object.entries(t).filter(([,e])=>e.theme??e.color);return n.length?r(`style`,{dangerouslySetInnerHTML:{__html:Object.entries(be).map(([t,r])=>`
3
+ ${r} [data-chart=${e}] {
4
+ ${n.map(([e,n])=>{let r=n.theme?.[t]??n.color;return r?` --color-${e}: ${r};`:null}).join(`
5
+ `)}
6
+ }
7
+ `).join(`
8
+ `)}}):null},Ce=S.Tooltip;function we({active:e,payload:t,className:a,indicator:o=`dot`,hideLabel:s=!1,hideIndicator:c=!1,label:l,labelFormatter:u,labelClassName:d,formatter:f,color:p,nameKey:m,labelKey:h}){let{config:g}=P(),_=v.useMemo(()=>{if(s||!t?.length)return null;let[e]=t,n=I(g,e,`${h??e?.dataKey??e?.name??`value`}`),i=!h&&typeof l==`string`?g[l]?.label??l:n?.label;return u?r(`div`,{className:T(`font-medium`,d),children:u(i,t)}):i?r(`div`,{className:T(`font-medium`,d),children:i}):null},[l,u,t,s,d,g,h]);if(!e||!t?.length)return null;let y=t.length===1&&o!==`dot`;return i(`div`,{className:T(`grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl`,a),children:[y?null:_,r(`div`,{className:`grid gap-1.5`,children:t.filter(e=>e.type!==`none`).map((e,t)=>{let a=I(g,e,`${m??e.name??e.dataKey??`value`}`),s=p??e.payload?.fill??e.color;return r(`div`,{className:T(`flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground`,o===`dot`&&`items-center`),children:f&&e?.value!==void 0&&e.name?f(e.value,e.name,e,t,e.payload):i(n,{children:[a?.icon?r(a.icon,{}):!c&&r(`div`,{className:T(`shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)`,{"h-2.5 w-2.5":o===`dot`,"w-1":o===`line`,"w-0 border-[1.5px] border-dashed bg-transparent":o===`dashed`,"my-0.5":y&&o===`dashed`}),style:{"--color-bg":s,"--color-border":s}}),i(`div`,{className:T(`flex flex-1 justify-between leading-none`,y?`items-end`:`items-center`),children:[i(`div`,{className:`grid gap-1.5`,children:[y?_:null,r(`span`,{className:`text-muted-foreground`,children:a?.label??e.name})]}),e.value!=null&&r(`span`,{className:`font-mono font-medium text-foreground tabular-nums`,children:typeof e.value==`number`?e.value.toLocaleString():String(e.value)})]})]})},t)})})]})}const Te=S.Legend;function Ee({className:e,hideIcon:t=!1,payload:n,verticalAlign:a=`bottom`,nameKey:o}){let{config:s}=P();return n?.length?r(`div`,{className:T(`flex items-center justify-center gap-4`,a===`top`?`pb-3`:`pt-3`,e),children:n.filter(e=>e.type!==`none`).map((e,n)=>{let a=I(s,e,`${o??e.dataKey??`value`}`);return i(`div`,{className:T(`flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground`),children:[a?.icon&&!t?r(a.icon,{}):r(`div`,{className:`h-2 w-2 shrink-0 rounded-[2px]`,style:{backgroundColor:e.color}}),a?.label]},n)})}):null}function I(e,t,n){if(typeof t!=`object`||!t)return;let r=`payload`in t&&typeof t.payload==`object`&&t.payload!==null?t.payload:void 0,i=n;return n in t&&typeof t[n]==`string`?i=t[n]:r&&n in r&&typeof r[n]==`string`&&(i=r[n]),i in e?e[i]:e[n]}const De=b(({className:e,...t},n)=>r(ne.Root,{ref:n,className:T(`peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-xs`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,`data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground`,e),...t,children:r(ne.Indicator,{className:`flex items-center justify-center text-current`,children:r(c,{className:`h-3.5 w-3.5`})})}));De.displayName=`Checkbox`;const L=b(({className:e,type:t,...n},i)=>r(`input`,{type:t,ref:i,className:T(`flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs`,`transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground`,`placeholder:text-muted-foreground`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,e),...n}));L.displayName=`Input`;const R=b(({className:e,...t},n)=>r(`div`,{className:`relative w-full overflow-auto`,children:r(`table`,{ref:n,className:T(`w-full caption-bottom text-sm`,e),...t})}));R.displayName=`Table`;const z=b(({className:e,...t},n)=>r(`thead`,{ref:n,className:T(`[&_tr]:border-b`,e),...t}));z.displayName=`TableHeader`;const B=b(({className:e,...t},n)=>r(`tbody`,{ref:n,className:T(`[&_tr:last-child]:border-0`,e),...t}));B.displayName=`TableBody`;const Oe=b(({className:e,...t},n)=>r(`tfoot`,{ref:n,className:T(`border-t bg-muted/50 font-medium [&>tr]:last:border-b-0`,e),...t}));Oe.displayName=`TableFooter`;const V=b(({className:e,...t},n)=>r(`tr`,{ref:n,className:T(`border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted`,e),...t}));V.displayName=`TableRow`;const H=b(({className:e,...t},n)=>r(`th`,{ref:n,className:T(`h-10 px-2 text-left align-middle font-medium text-muted-foreground`,`[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t}));H.displayName=`TableHead`;const U=b(({className:e,...t},n)=>r(`td`,{ref:n,className:T(`p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]`,e),...t}));U.displayName=`TableCell`;const ke=b(({className:e,...t},n)=>r(`caption`,{ref:n,className:T(`mt-4 text-sm text-muted-foreground`,e),...t}));ke.displayName=`TableCaption`;function Ae({table:e,className:t}){let n=e.getFilteredSelectedRowModel().rows.length,a=e.getFilteredRowModel().rows.length;return i(`div`,{className:T(`flex items-center justify-between px-2`,t),children:[r(`div`,{className:`flex-1 text-sm text-muted-foreground`,children:n>0&&i(`span`,{children:[n,` of `,a,` row(s) selected`]})}),i(`div`,{className:`flex items-center space-x-6 lg:space-x-8`,children:[r(`div`,{className:`flex items-center space-x-2`,children:i(`p`,{className:`text-sm font-medium`,children:[`Page `,e.getState().pagination.pageIndex+1,` of `,e.getPageCount()]})}),i(`div`,{className:`flex items-center space-x-2`,children:[i(E,{variant:`outline`,size:`icon`,className:`hidden h-8 w-8 lg:flex`,onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[r(`span`,{className:`sr-only`,children:`Go to first page`}),r(d,{className:`h-4 w-4`})]}),i(E,{variant:`outline`,size:`icon`,className:`h-8 w-8`,onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[r(`span`,{className:`sr-only`,children:`Go to previous page`}),r(l,{className:`h-4 w-4`})]}),i(E,{variant:`outline`,size:`icon`,className:`h-8 w-8`,onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[r(`span`,{className:`sr-only`,children:`Go to next page`}),r(u,{className:`h-4 w-4`})]}),i(E,{variant:`outline`,size:`icon`,className:`hidden h-8 w-8 lg:flex`,onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[r(`span`,{className:`sr-only`,children:`Go to last page`}),r(f,{className:`h-4 w-4`})]})]})]})]})}const W=C.Root,G=C.Trigger,je=C.Group,Me=C.Portal,Ne=C.Sub,K=b(({className:e,sideOffset:t=4,...n},i)=>r(C.Portal,{children:r(C.Content,{ref:i,sideOffset:t,className:T(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...n})}));K.displayName=`DropdownMenuContent`;const q=b(({className:e,inset:t,...n},i)=>r(C.Item,{ref:i,className:T(`relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none`,`transition-colors focus:bg-accent focus:text-accent-foreground`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,`[&_svg]:pointer-events-none [&_svg]:shrink-0`,t&&`pl-8`,e),...n}));q.displayName=`DropdownMenuItem`;const J=b(({className:e,children:t,checked:n,...a},o)=>i(C.CheckboxItem,{ref:o,className:T(`relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none`,`transition-colors focus:bg-accent focus:text-accent-foreground`,`data-[disabled]:pointer-events-none data-[disabled]:opacity-50`,e),checked:n,...a,children:[r(`span`,{className:`absolute left-2 flex h-3.5 w-3.5 items-center justify-center`,children:r(C.ItemIndicator,{children:r(c,{className:`h-4 w-4`})})}),t]}));J.displayName=`DropdownMenuCheckboxItem`;const Y=b(({className:e,inset:t,...n},i)=>r(C.Label,{ref:i,className:T(`px-2 py-1.5 text-sm font-semibold`,t&&`pl-8`,e),...n}));Y.displayName=`DropdownMenuLabel`;const X=b(({className:e,...t},n)=>r(C.Separator,{ref:n,className:T(`-mx-1 my-1 h-px bg-muted`,e),...t}));X.displayName=`DropdownMenuSeparator`;const Pe=b(({className:e,inset:t,children:n,...a},o)=>i(C.SubTrigger,{ref:o,className:T(`flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none`,`focus:bg-accent data-[state=open]:bg-accent`,`[&_svg]:pointer-events-none [&_svg]:shrink-0`,t&&`pl-8`,e),...a,children:[n,r(u,{className:`ml-auto h-4 w-4`})]}));Pe.displayName=`DropdownMenuSubTrigger`;const Fe=b(({className:e,...t},n)=>r(C.SubContent,{ref:n,className:T(`z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,`data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2`,`data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2`,e),...t}));Fe.displayName=`DropdownMenuSubContent`;function Ie({className:e,...t}){return r(`span`,{className:T(`ml-auto text-xs tracking-widest opacity-60`,e),...t})}function Le({table:e}){return i(W,{children:[r(G,{asChild:!0,children:i(E,{variant:`outline`,size:`sm`,className:`ml-auto hidden h-8 lg:flex`,children:[r(g,{className:`mr-2 h-4 w-4`}),`View`]})}),i(K,{align:`end`,className:`w-[150px]`,children:[r(Y,{children:`Toggle columns`}),r(X,{}),e.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>r(J,{className:`capitalize`,checked:e.getIsVisible(),onCheckedChange:t=>e.toggleVisibility(!!t),children:e.id},e.id))]})]})}function Re({columns:e,data:t,searchKey:n,searchPlaceholder:a=`Filter...`,pageSize:o=10,emptyMessage:s=`No results.`,classNames:c}){let[l,u]=x([]),[d,f]=x([]),[p,m]=x({}),[h,g]=x({}),_=ce({data:t,columns:e,state:{sorting:l,columnFilters:d,columnVisibility:p,rowSelection:h},onSortingChange:u,onColumnFiltersChange:f,onColumnVisibilityChange:m,onRowSelectionChange:g,getCoreRowModel:ie(),getSortedRowModel:se(),getFilteredRowModel:ae(),getPaginationRowModel:oe(),initialState:{pagination:{pageSize:o}}});return i(`div`,{className:T(`space-y-4`,c?.root),children:[i(`div`,{className:T(`flex items-center justify-between`,c?.toolbar),children:[r(`div`,{className:`flex flex-1 items-center space-x-2`,children:n&&r(L,{placeholder:a,value:_.getColumn(n)?.getFilterValue()??``,onChange:e=>_.getColumn(n)?.setFilterValue(e.target.value),className:`h-8 w-[150px] lg:w-[250px]`})}),r(Le,{table:_})]}),r(`div`,{className:T(`rounded-md border`,c?.table),children:i(R,{children:[r(z,{children:_.getHeaderGroups().map(e=>r(V,{children:e.headers.map(e=>r(H,{colSpan:e.colSpan,children:e.isPlaceholder?null:re(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),r(B,{children:_.getRowModel().rows.length>0?_.getRowModel().rows.map(e=>r(V,{"data-state":e.getIsSelected()&&`selected`,children:e.getVisibleCells().map(e=>r(U,{children:re(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):r(V,{children:r(U,{colSpan:e.length,className:`h-24 text-center`,children:s})})})]})}),r(Ae,{table:_,className:c?.pagination})]})}function ze({column:e,title:t,className:a}){return e.getCanSort()?r(`div`,{className:T(`flex items-center space-x-2`,a),children:i(W,{children:[r(G,{asChild:!0,children:i(E,{variant:`ghost`,size:`sm`,className:`-ml-3 h-8 data-[state=open]:bg-accent`,children:[r(`span`,{children:t}),e.getIsSorted()===`desc`?r(o,{className:`ml-2 h-4 w-4`}):e.getIsSorted()===`asc`?r(s,{className:`ml-2 h-4 w-4`}):r(p,{className:`ml-2 h-4 w-4`})]})}),i(K,{align:`start`,children:[i(q,{onClick:()=>e.toggleSorting(!1),children:[r(s,{className:`mr-2 h-3.5 w-3.5 text-muted-foreground/70`}),`Asc`]}),i(q,{onClick:()=>e.toggleSorting(!0),children:[r(o,{className:`mr-2 h-3.5 w-3.5 text-muted-foreground/70`}),`Desc`]}),e.getCanHide()&&i(n,{children:[r(X,{}),i(q,{onClick:()=>e.toggleVisibility(!1),children:[r(m,{className:`mr-2 h-3.5 w-3.5 text-muted-foreground/70`}),`Hide`]})]})]})]})}):r(`div`,{className:T(a),children:t})}const Be=w.Root,Ve=w.Trigger,He=w.Close,Ue=w.Portal,Z=b(({className:e,...t},n)=>r(w.Overlay,{ref:n,className:T(`fixed inset-0 z-50 bg-black/80`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,e),...t}));Z.displayName=`DialogOverlay`;const We=b(({className:e,children:t,...n},a)=>i(Ue,{children:[r(Z,{}),i(w.Content,{ref:a,className:T(`fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%]`,`gap-4 border bg-background p-6 shadow-lg sm:rounded-lg`,`data-[state=open]:animate-in data-[state=closed]:animate-out`,`data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0`,`data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95`,`data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]`,`data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]`,e),...n,children:[t,i(w.Close,{className:T(`absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity`,`hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2`,`disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground`,`cursor-pointer`),children:[r(_,{className:`h-4 w-4`}),r(`span`,{className:`sr-only`,children:`Close`})]})]})]}));We.displayName=`DialogContent`;function Ge({className:e,...t}){return r(`div`,{className:T(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t})}function Ke({className:e,...t}){return r(`div`,{className:T(`flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2`,e),...t})}const qe=b(({className:e,...t},n)=>r(w.Title,{ref:n,className:T(`text-lg font-semibold leading-none tracking-tight`,e),...t}));qe.displayName=`DialogTitle`;const Je=b(({className:e,...t},n)=>r(w.Description,{ref:n,className:T(`text-sm text-muted-foreground`,e),...t}));Je.displayName=`DialogDescription`;const Q=b(({className:e,...t},n)=>r(fe.Root,{ref:n,className:T(`text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70`,e),...t}));Q.displayName=`Label`;const Ye=ue,Xe=y({});function Ze(e){return r(Xe.Provider,{value:{name:e.name},children:r(le,{...e})})}const Qe=y({});function $(){let e=ee(Xe),t=ee(Qe),{getFieldState:n,formState:r}=de(),i=n(e.name,r),{id:a}=t;return{id:a,name:e.name,formItemId:`${a}-form-item`,formDescriptionId:`${a}-form-item-description`,formMessageId:`${a}-form-item-message`,...i}}const $e=b(({className:e,...t},n)=>{let i=te();return r(Qe.Provider,{value:{id:i},children:r(`div`,{ref:n,className:T(`space-y-2`,e),...t})})});$e.displayName=`FormItem`;const et=b(({className:e,...t},n)=>{let{error:i,formItemId:a}=$();return r(Q,{ref:n,className:T(i&&`text-destructive`,e),htmlFor:a,...t})});et.displayName=`FormLabel`;const tt=b(({...e},t)=>{let{error:n,formItemId:i,formDescriptionId:o,formMessageId:s}=$();return r(a,{ref:t,id:i,"aria-describedby":n?`${o} ${s}`:o,"aria-invalid":!!n,...e})});tt.displayName=`FormControl`;const nt=b(({className:e,...t},n)=>{let{formDescriptionId:i}=$();return r(`p`,{ref:n,id:i,className:T(`text-[0.8rem] text-muted-foreground`,e),...t})});nt.displayName=`FormDescription`;const rt=b(({className:e,children:t,...n},i)=>{let{error:a,formMessageId:o}=$(),s=a?String(a.message):t;return s?r(`p`,{ref:i,id:o,className:T(`text-[0.8rem] font-medium text-destructive`,e),...n,children:s}):null});rt.displayName=`FormMessage`;const it=b(({className:e,children:t,...n},i)=>r(`select`,{ref:i,className:T(`flex h-9 w-full rounded-md border border-input bg-background text-foreground px-3 py-1 text-sm shadow-xs`,`transition-colors`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,e),...n,children:t}));it.displayName=`Select`;const at=b(({className:e,orientation:t=`horizontal`,decorative:n=!0,...i},a)=>r(pe.Root,{ref:a,decorative:n,orientation:t,className:T(`shrink-0 bg-border`,t===`horizontal`?`h-[1px] w-full`:`h-full w-[1px]`,e),...i}));at.displayName=`Separator`;function ot({className:e,...t}){return r(`div`,{className:T(`animate-pulse rounded-md bg-muted`,e),...t})}function st(){return r(me,{position:`bottom-right`,toastOptions:{style:{background:`var(--color-background)`,color:`var(--color-foreground)`,border:`1px solid var(--color-border)`},classNames:{error:`sonner-error`,success:`sonner-success`}}})}const ct=b(({className:e,...t},n)=>r(`textarea`,{ref:n,className:T(`flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs`,`placeholder:text-muted-foreground`,`focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring`,`disabled:cursor-not-allowed disabled:opacity-50`,e),...t}));ct.displayName=`Textarea`;export{_e as Badge,E as Button,D as Card,j as CardContent,A as CardDescription,M as CardFooter,O as CardHeader,k as CardTitle,Se as ChartContainer,Te as ChartLegend,Ee as ChartLegendContent,F as ChartStyle,Ce as ChartTooltip,we as ChartTooltipContent,De as Checkbox,Re as DataTable,ze as DataTableColumnHeader,Ae as DataTablePagination,Le as DataTableViewOptions,Be as Dialog,He as DialogClose,We as DialogContent,Je as DialogDescription,Ke as DialogFooter,Ge as DialogHeader,Z as DialogOverlay,Ue as DialogPortal,qe as DialogTitle,Ve as DialogTrigger,W as DropdownMenu,J as DropdownMenuCheckboxItem,K as DropdownMenuContent,je as DropdownMenuGroup,q as DropdownMenuItem,Y as DropdownMenuLabel,Me as DropdownMenuPortal,X as DropdownMenuSeparator,Ie as DropdownMenuShortcut,Ne as DropdownMenuSub,Fe as DropdownMenuSubContent,Pe as DropdownMenuSubTrigger,G as DropdownMenuTrigger,Ye as Form,tt as FormControl,nt as FormDescription,Ze as FormField,$e as FormItem,et as FormLabel,rt as FormMessage,L as Input,Q as Label,it as Select,at as Separator,ot as Skeleton,R as Table,B as TableBody,ke as TableCaption,U as TableCell,Oe as TableFooter,H as TableHead,z as TableHeader,V as TableRow,ct as Textarea,st as Toaster,T as cn,he as toast,$ as useFormField};
9
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["variantClasses","SonnerToaster"],"sources":["../src/lib/cn.ts","../src/badge.tsx","../src/button.tsx","../src/card.tsx","../src/chart.tsx","../src/checkbox.tsx","../src/input.tsx","../src/table.tsx","../src/data-table/data-table-pagination.tsx","../src/dropdown-menu.tsx","../src/data-table/data-table-view-options.tsx","../src/data-table/data-table.tsx","../src/data-table/data-table-column-header.tsx","../src/dialog.tsx","../src/label.tsx","../src/form.tsx","../src/select.tsx","../src/separator.tsx","../src/skeleton.tsx","../src/sonner.tsx","../src/textarea.tsx"],"sourcesContent":["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 type { HTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport interface BadgeProps extends HTMLAttributes<HTMLDivElement> {\n variant?: 'default' | 'secondary' | 'destructive' | 'outline'\n}\n\nconst variantClasses: Record<NonNullable<BadgeProps['variant']>, string> = {\n default: 'border-transparent bg-primary text-primary-foreground shadow-xs',\n secondary: 'border-transparent bg-secondary text-secondary-foreground',\n destructive: 'border-transparent bg-destructive text-destructive-foreground shadow-xs',\n outline: 'text-foreground',\n}\n\nexport function Badge({ className, variant = 'default', ...props }: BadgeProps) {\n return (\n <div\n className={cn(\n 'inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold',\n 'transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n variantClasses[variant],\n className,\n )}\n {...props}\n />\n )\n}\n","import { Slot } from '@radix-ui/react-slot'\nimport { Loader2 } from 'lucide-react'\nimport { type ButtonHTMLAttributes, forwardRef } from 'react'\nimport { cn } from './lib/cn'\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link'\n size?: 'default' | 'sm' | 'lg' | 'icon'\n loading?: boolean\n asChild?: boolean\n}\n\nconst variantClasses: Record<NonNullable<ButtonProps['variant']>, string> = {\n default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',\n destructive: 'bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90',\n outline:\n 'border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground',\n link: 'text-primary underline-offset-4 hover:underline',\n}\n\nconst sizeClasses: Record<NonNullable<ButtonProps['size']>, string> = {\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\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = 'default',\n size = 'default',\n loading = false,\n asChild = false,\n disabled,\n children,\n type = 'button',\n ...props\n },\n ref,\n ) => {\n const classes = cn(\n 'inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium',\n 'transition-colors cursor-pointer',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:pointer-events-none disabled:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n variantClasses[variant],\n sizeClasses[size],\n className,\n )\n\n if (asChild) {\n return (\n <Slot ref={ref} className={classes} {...props}>\n {children}\n </Slot>\n )\n }\n\n return (\n <button ref={ref} disabled={disabled || loading} className={classes} type={type} {...props}>\n {loading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n {children}\n </button>\n )\n },\n)\n\nButton.displayName = 'Button'\n","import { forwardRef, type HTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Card = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('rounded-xl border bg-card text-card-foreground shadow-sm', className)}\n {...props}\n />\n ),\n)\nCard.displayName = 'Card'\n\nexport const CardHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex flex-col space-y-1.5 p-6', className)} {...props} />\n ),\n)\nCardHeader.displayName = 'CardHeader'\n\nexport const CardTitle = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n ),\n)\nCardTitle.displayName = 'CardTitle'\n\nexport const CardDescription = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('text-sm text-muted-foreground', className)} {...props} />\n ),\n)\nCardDescription.displayName = 'CardDescription'\n\nexport const CardContent = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('p-6 pt-0', className)} {...props} />\n ),\n)\nCardContent.displayName = 'CardContent'\n\nexport const CardFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('flex items-center p-6 pt-0', className)} {...props} />\n ),\n)\nCardFooter.displayName = 'CardFooter'\n","\"use client\"\n\n/**\n * Chart primitives for dashboard widgets.\n *\n * Based on shadcn/ui chart component (Recharts under the hood).\n * Provides ChartContainer (responsive wrapper), ChartTooltip,\n * ChartTooltipContent, ChartLegend, ChartLegendContent.\n *\n * Usage: import Recharts components directly (Bar, BarChart, XAxis, etc.)\n * and wrap them in ChartContainer with a ChartConfig for theming.\n */\n\nimport * as React from \"react\"\nimport * as RechartsPrimitive from \"recharts\"\nimport type { TooltipValueType } from \"recharts\"\n\nimport { cn } from \"./lib/cn\"\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const\ntype TooltipNameType = number | string\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode\n icon?: React.ComponentType\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>\n\ntype ChartContextProps = {\n config: ChartConfig\n}\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null)\n\nfunction useChart() {\n const context = React.useContext(ChartContext)\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\")\n }\n\n return context\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n ...props\n}: React.ComponentProps<\"div\"> & {\n config: ChartConfig\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"]\n initialDimension?: {\n width: number\n height: number\n }\n}) {\n const uniqueId = React.useId()\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, \"\")}`\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-slot=\"chart\"\n data-chart={chartId}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color\n )\n\n if (!colorConfig.length) {\n return null\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color\n return color ? ` --color-${key}: ${color};` : null\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n )\n}\n\nconst ChartTooltip = RechartsPrimitive.Tooltip\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean\n hideIndicator?: boolean\n indicator?: \"line\" | \"dot\" | \"dashed\"\n nameKey?: string\n labelKey?: string\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n \"accessibilityLayer\"\n >) {\n const { config } = useChart()\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null\n }\n\n const [item] = payload\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const value =\n !labelKey && typeof label === \"string\"\n ? (config[label]?.label ?? label)\n : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ])\n\n if (!active || !payload?.length) {\n return null\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\"\n\n return (\n <div\n className={cn(\n \"grid min-w-[8rem] items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n const indicatorColor = color ?? item.payload?.fill ?? item.color\n\n return (\n <div\n key={index}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ?? item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value === \"number\"\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\nconst ChartLegend = RechartsPrimitive.Legend\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = \"bottom\",\n nameKey,\n}: React.ComponentProps<\"div\"> & {\n hideIcon?: boolean\n nameKey?: string\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart()\n\n if (!payload?.length) {\n return null\n }\n\n return (\n <div\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload\n .filter((item) => item.type !== \"none\")\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? \"value\"}`\n const itemConfig = getPayloadConfigFromPayload(config, item, key)\n\n return (\n <div\n key={index}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n )\n })}\n </div>\n )\n}\n\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key]\n}\n\nexport {\n ChartContainer,\n ChartTooltip,\n ChartTooltipContent,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n}\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox'\nimport { Check } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, forwardRef } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Checkbox = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n 'peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-xs',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',\n className,\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator className=\"flex items-center justify-center text-current\">\n <Check className=\"h-3.5 w-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\n\nCheckbox.displayName = 'Checkbox'\n","import { forwardRef, type InputHTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n ref={ref}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs',\n 'transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground',\n 'placeholder:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n )\n },\n)\n\nInput.displayName = 'Input'\n","import {\n forwardRef,\n type HTMLAttributes,\n type TdHTMLAttributes,\n type ThHTMLAttributes,\n} from 'react'\nimport { cn } from './lib/cn'\n\nexport const Table = forwardRef<HTMLTableElement, HTMLAttributes<HTMLTableElement>>(\n ({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table ref={ref} className={cn('w-full caption-bottom text-sm', className)} {...props} />\n </div>\n ),\n)\nTable.displayName = 'Table'\n\nexport const TableHeader = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />\n))\nTableHeader.displayName = 'TableHeader'\n\nexport const TableBody = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody ref={ref} className={cn('[&_tr:last-child]:border-0', className)} {...props} />\n))\nTableBody.displayName = 'TableBody'\n\nexport const TableFooter = forwardRef<\n HTMLTableSectionElement,\n HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn('border-t bg-muted/50 font-medium [&>tr]:last:border-b-0', className)}\n {...props}\n />\n))\nTableFooter.displayName = 'TableFooter'\n\nexport const TableRow = forwardRef<HTMLTableRowElement, HTMLAttributes<HTMLTableRowElement>>(\n ({ className, ...props }, ref) => (\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 ),\n)\nTableRow.displayName = 'TableRow'\n\nexport const TableHead = forwardRef<HTMLTableCellElement, ThHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n 'h-10 px-2 text-left align-middle font-medium text-muted-foreground',\n '[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n ),\n)\nTableHead.displayName = 'TableHead'\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TdHTMLAttributes<HTMLTableCellElement>>(\n ({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n 'p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]',\n className,\n )}\n {...props}\n />\n ),\n)\nTableCell.displayName = 'TableCell'\n\nexport const TableCaption = forwardRef<\n HTMLTableCaptionElement,\n HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption ref={ref} className={cn('mt-4 text-sm text-muted-foreground', className)} {...props} />\n))\nTableCaption.displayName = 'TableCaption'\n","import type { Table } from '@tanstack/react-table'\nimport { ChevronLeft, ChevronRight, ChevronsLeft, ChevronsRight } from 'lucide-react'\nimport { Button } from '../button'\nimport { cn } from '../lib/cn'\n\ninterface DataTablePaginationProps<TData> {\n table: Table<TData>\n className?: string\n}\n\nexport function DataTablePagination<TData>({ table, className }: DataTablePaginationProps<TData>) {\n const selectedCount = table.getFilteredSelectedRowModel().rows.length\n const totalCount = table.getFilteredRowModel().rows.length\n\n return (\n <div className={cn('flex items-center justify-between px-2', className)}>\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {selectedCount > 0 && (\n <span>\n {selectedCount} of {totalCount} row(s) selected\n </span>\n )}\n </div>\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </p>\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"hidden h-8 w-8 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to first page</span>\n <ChevronsLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"h-8 w-8\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"hidden h-8 w-8 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <ChevronsRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n )\n}\n","import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, forwardRef, type HTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const DropdownMenu = DropdownMenuPrimitive.Root\nexport const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\nexport const DropdownMenuGroup = DropdownMenuPrimitive.Group\nexport const DropdownMenuPortal = DropdownMenuPrimitive.Portal\nexport const DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nexport const DropdownMenuContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = 'DropdownMenuContent'\n\nexport const DropdownMenuItem = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none',\n 'transition-colors focus:bg-accent focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n inset && 'pl-8',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = 'DropdownMenuItem'\n\nexport const DropdownMenuCheckboxItem = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none',\n 'transition-colors focus:bg-accent focus:text-accent-foreground',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className,\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName = 'DropdownMenuCheckboxItem'\n\nexport const DropdownMenuLabel = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & { inset?: boolean }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', className)}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = 'DropdownMenuLabel'\n\nexport const DropdownMenuSeparator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('-mx-1 my-1 h-px bg-muted', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = 'DropdownMenuSeparator'\n\nexport const DropdownMenuSubTrigger = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & { inset?: boolean }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none',\n 'focus:bg-accent data-[state=open]:bg-accent',\n '[&_svg]:pointer-events-none [&_svg]:shrink-0',\n inset && 'pl-8',\n className,\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName = 'DropdownMenuSubTrigger'\n\nexport const DropdownMenuSubContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2',\n 'data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className,\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName = 'DropdownMenuSubContent'\n\nexport function DropdownMenuShortcut({ className, ...props }: HTMLAttributes<HTMLSpanElement>) {\n return <span className={cn('ml-auto text-xs tracking-widest opacity-60', className)} {...props} />\n}\n","import type { Table } from '@tanstack/react-table'\nimport { Settings2 } from 'lucide-react'\nimport { Button } from '../button'\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../dropdown-menu'\n\ninterface DataTableViewOptionsProps<TData> {\n table: Table<TData>\n}\n\nexport function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>) {\n return (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"ml-auto hidden h-8 lg:flex\">\n <Settings2 className=\"mr-2 h-4 w-4\" />\n View\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-[150px]\">\n <DropdownMenuLabel>Toggle columns</DropdownMenuLabel>\n <DropdownMenuSeparator />\n {table\n .getAllColumns()\n .filter((column) => typeof column.accessorFn !== 'undefined' && column.getCanHide())\n .map((column) => (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) => column.toggleVisibility(!!value)}\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\n","import {\n type ColumnDef,\n type ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type RowSelectionState,\n type SortingState,\n useReactTable,\n type VisibilityState,\n} from '@tanstack/react-table'\nimport { useState } from 'react'\nimport { Input } from '../input'\nimport { cn } from '../lib/cn'\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../table'\nimport { DataTablePagination } from './data-table-pagination'\nimport { DataTableViewOptions } from './data-table-view-options'\n\nexport interface DataTableClassNames {\n root?: string\n toolbar?: string\n table?: string\n pagination?: string\n}\n\nexport interface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[]\n data: TData[]\n searchKey?: string\n searchPlaceholder?: string\n pageSize?: number\n emptyMessage?: string\n classNames?: DataTableClassNames\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder = 'Filter...',\n pageSize = 10,\n emptyMessage = 'No results.',\n classNames,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = useState<SortingState>([])\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([])\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({})\n const [rowSelection, setRowSelection] = useState<RowSelectionState>({})\n\n const table = useReactTable({\n data,\n columns,\n state: { sorting, columnFilters, columnVisibility, rowSelection },\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n initialState: { pagination: { pageSize } },\n })\n\n return (\n <div className={cn('space-y-4', classNames?.root)}>\n {/* Toolbar */}\n <div className={cn('flex items-center justify-between', classNames?.toolbar)}>\n <div className=\"flex flex-1 items-center space-x-2\">\n {searchKey && (\n <Input\n placeholder={searchPlaceholder}\n value={(table.getColumn(searchKey)?.getFilterValue() as string) ?? ''}\n onChange={(event) => table.getColumn(searchKey)?.setFilterValue(event.target.value)}\n className=\"h-8 w-[150px] lg:w-[250px]\"\n />\n )}\n </div>\n <DataTableViewOptions table={table} />\n </div>\n\n {/* Table */}\n <div className={cn('rounded-md border', classNames?.table)}>\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead key={header.id} colSpan={header.colSpan}>\n {header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <TableRow key={row.id} data-state={row.getIsSelected() && 'selected'}>\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"h-24 text-center\">\n {emptyMessage}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination */}\n <DataTablePagination table={table} className={classNames?.pagination} />\n </div>\n )\n}\n","import type { Column } from '@tanstack/react-table'\nimport { ArrowDown, ArrowUp, ChevronsUpDown, EyeOff } from 'lucide-react'\nimport { Button } from '../button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../dropdown-menu'\nimport { cn } from '../lib/cn'\n\ninterface DataTableColumnHeaderProps<TData, TValue> {\n column: Column<TData, TValue>\n title: string\n className?: string\n}\n\nexport function DataTableColumnHeader<TData, TValue>({\n column,\n title,\n className,\n}: DataTableColumnHeaderProps<TData, TValue>) {\n if (!column.getCanSort()) {\n return <div className={cn(className)}>{title}</div>\n }\n\n return (\n <div className={cn('flex items-center space-x-2', className)}>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"sm\" className=\"-ml-3 h-8 data-[state=open]:bg-accent\">\n <span>{title}</span>\n {column.getIsSorted() === 'desc' ? (\n <ArrowDown className=\"ml-2 h-4 w-4\" />\n ) : column.getIsSorted() === 'asc' ? (\n <ArrowUp className=\"ml-2 h-4 w-4\" />\n ) : (\n <ChevronsUpDown className=\"ml-2 h-4 w-4\" />\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\">\n <DropdownMenuItem onClick={() => column.toggleSorting(false)}>\n <ArrowUp className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Asc\n </DropdownMenuItem>\n <DropdownMenuItem onClick={() => column.toggleSorting(true)}>\n <ArrowDown className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Desc\n </DropdownMenuItem>\n {column.getCanHide() && (\n <>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={() => column.toggleVisibility(false)}>\n <EyeOff className=\"mr-2 h-3.5 w-3.5 text-muted-foreground/70\" />\n Hide\n </DropdownMenuItem>\n </>\n )}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n )\n}\n","import * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\nimport { type ComponentPropsWithoutRef, forwardRef, type HTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Dialog = DialogPrimitive.Root\nexport const DialogTrigger = DialogPrimitive.Trigger\nexport const DialogClose = DialogPrimitive.Close\nexport const DialogPortal = DialogPrimitive.Portal\n\nexport const DialogOverlay = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'fixed inset-0 z-50 bg-black/80',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n className,\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = 'DialogOverlay'\n\nexport const DialogContent = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%]',\n 'gap-4 border bg-background p-6 shadow-lg sm:rounded-lg',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n 'data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]',\n 'data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n className={cn(\n 'absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity',\n 'hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2',\n 'disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground',\n 'cursor-pointer',\n )}\n >\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = 'DialogContent'\n\nexport function DialogHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn('flex flex-col space-y-1.5 text-center sm:text-left', className)}\n {...props}\n />\n )\n}\n\nexport function DialogFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n className={cn('flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2', className)}\n {...props}\n />\n )\n}\n\nexport const DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-lg font-semibold leading-none tracking-tight', className)}\n {...props}\n />\n))\nDialogTitle.displayName = 'DialogTitle'\n\nexport const DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n />\n))\nDialogDescription.displayName = 'DialogDescription'\n","import * as LabelPrimitive from '@radix-ui/react-label'\nimport { type ComponentPropsWithoutRef, forwardRef } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Label = forwardRef<\n HTMLLabelElement,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(\n 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n className,\n )}\n {...props}\n />\n))\n\nLabel.displayName = 'Label'\n","import type * as LabelPrimitive from '@radix-ui/react-label'\nimport { Slot } from '@radix-ui/react-slot'\nimport {\n type ComponentPropsWithoutRef,\n createContext,\n forwardRef,\n type HTMLAttributes,\n useContext,\n useId,\n} from 'react'\nimport {\n Controller,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n FormProvider,\n useFormContext,\n} from 'react-hook-form'\nimport { Label } from './label'\nimport { cn } from './lib/cn'\n\n/* ---------- Form (re-export of FormProvider) ---------- */\n\nexport const Form = FormProvider\n\n/* ---------- FormField context ---------- */\n\ninterface FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> {\n name: TName\n}\n\nconst FormFieldContext = createContext<FormFieldContextValue>({} as FormFieldContextValue)\n\nexport function FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: ControllerProps<TFieldValues, TName>) {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\n/* ---------- FormItem context ---------- */\n\ninterface FormItemContextValue {\n id: string\n}\n\nconst FormItemContext = createContext<FormItemContextValue>({} as FormItemContextValue)\n\n/* ---------- useFormField hook ---------- */\n\nexport function useFormField() {\n const fieldContext = useContext(FormFieldContext)\n const itemContext = useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\n/* ---------- FormItem ---------- */\n\nexport const FormItem = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const id = useId()\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn('space-y-2', className)} {...props} />\n </FormItemContext.Provider>\n )\n },\n)\nFormItem.displayName = 'FormItem'\n\n/* ---------- FormLabel ---------- */\n\nexport const FormLabel = forwardRef<\n HTMLLabelElement,\n ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = 'FormLabel'\n\n/* ---------- FormControl ---------- */\n\nexport const FormControl = forwardRef<HTMLDivElement, ComponentPropsWithoutRef<typeof Slot>>(\n ({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={!error ? formDescriptionId : `${formDescriptionId} ${formMessageId}`}\n aria-invalid={!!error}\n {...props}\n />\n )\n },\n)\nFormControl.displayName = 'FormControl'\n\n/* ---------- FormDescription ---------- */\n\nexport const FormDescription = forwardRef<\n HTMLParagraphElement,\n HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = 'FormDescription'\n\n/* ---------- FormMessage ---------- */\n\nexport const FormMessage = forwardRef<HTMLParagraphElement, HTMLAttributes<HTMLParagraphElement>>(\n ({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error.message) : children\n\n if (!body) return null\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn('text-[0.8rem] font-medium text-destructive', className)}\n {...props}\n >\n {body}\n </p>\n )\n },\n)\nFormMessage.displayName = 'FormMessage'\n","import { forwardRef, type SelectHTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Select = forwardRef<HTMLSelectElement, SelectHTMLAttributes<HTMLSelectElement>>(\n ({ className, children, ...props }, ref) => {\n return (\n <select\n ref={ref}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-background text-foreground px-3 py-1 text-sm shadow-xs',\n 'transition-colors',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n {children}\n </select>\n )\n },\n)\n\nSelect.displayName = 'Select'\n","import * as SeparatorPrimitive from '@radix-ui/react-separator'\nimport { type ComponentPropsWithoutRef, forwardRef } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Separator = forwardRef<\n HTMLDivElement,\n ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(({ className, orientation = 'horizontal', decorative = true, ...props }, ref) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n 'shrink-0 bg-border',\n orientation === 'horizontal' ? 'h-[1px] w-full' : 'h-full w-[1px]',\n className,\n )}\n {...props}\n />\n))\n\nSeparator.displayName = 'Separator'\n","import type { HTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport function Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />\n}\n","/**\n * Toast notifications — wraps sonner with toolkit token styling.\n *\n * Usage:\n * import { Toaster, toast } from '@murumets-ee/ui'\n *\n * // In layout (once):\n * <Toaster />\n *\n * // Anywhere:\n * toast.success('Saved')\n * toast.error('Cannot delete: referenced by article')\n */\n\nimport { Toaster as SonnerToaster, toast } from 'sonner'\n\nfunction Toaster() {\n return (\n <SonnerToaster\n position=\"bottom-right\"\n toastOptions={{\n style: {\n background: 'var(--color-background)',\n color: 'var(--color-foreground)',\n border: '1px solid var(--color-border)',\n },\n classNames: {\n error: 'sonner-error',\n success: 'sonner-success',\n },\n }}\n />\n )\n}\n\nexport { Toaster, toast }\n","import { forwardRef, type TextareaHTMLAttributes } from 'react'\nimport { cn } from './lib/cn'\n\nexport const Textarea = forwardRef<\n HTMLTextAreaElement,\n TextareaHTMLAttributes<HTMLTextAreaElement>\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n className={cn(\n 'flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs',\n 'placeholder:text-muted-foreground',\n 'focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n />\n )\n})\n\nTextarea.displayName = 'Textarea'\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,22 @@
1
1
  {
2
2
  "name": "@murumets-ee/ui",
3
- "version": "0.1.4",
3
+ "version": "0.3.0",
4
4
  "license": "Elastic-2.0",
5
5
  "type": "module",
6
6
  "exports": {
7
7
  ".": {
8
- "types": "./dist/index.d.ts",
9
- "import": "./dist/index.js"
8
+ "types": "./dist/index.d.mts",
9
+ "import": "./dist/index.mjs"
10
10
  }
11
11
  },
12
12
  "files": [
13
13
  "dist"
14
14
  ],
15
+ "scripts": {
16
+ "build": "tsdown",
17
+ "dev": "tsdown --watch",
18
+ "test": "vitest"
19
+ },
15
20
  "dependencies": {
16
21
  "@radix-ui/react-checkbox": "^1.1.0",
17
22
  "@radix-ui/react-dialog": "^1.1.0",
@@ -21,6 +26,7 @@
21
26
  "@radix-ui/react-slot": "^1.1.0",
22
27
  "@radix-ui/react-visually-hidden": "^1.1.0",
23
28
  "clsx": "^2.1.0",
29
+ "recharts": "^3.8.0",
24
30
  "sonner": "^2.0.7",
25
31
  "tailwind-merge": "^2.6.0"
26
32
  },
@@ -56,14 +62,9 @@
56
62
  "react": "^19.0.0",
57
63
  "react-dom": "^19.0.0",
58
64
  "react-hook-form": "^7.71.1",
59
- "tsup": "^8.3.5",
65
+ "tsdown": "^0.21.7",
60
66
  "typescript": "^5.7.3",
61
67
  "vitest": "^2.1.8",
62
68
  "zod": "^3.24.0"
63
- },
64
- "scripts": {
65
- "build": "tsup",
66
- "dev": "tsup --watch",
67
- "test": "vitest"
68
69
  }
69
- }
70
+ }
package/LICENSE DELETED
@@ -1,94 +0,0 @@
1
- Elastic License 2.0 (ELv2)
2
-
3
- URL: https://www.elastic.co/licensing/elastic-license
4
-
5
- ## Acceptance
6
-
7
- By using the software, you agree to all of the terms and conditions below.
8
-
9
- ## Copyright License
10
-
11
- The licensor grants you a non-exclusive, royalty-free, worldwide,
12
- non-sublicensable, non-transferable license to use, copy, distribute, make
13
- available, and prepare derivative works of the software, in each case subject
14
- to the limitations and conditions below.
15
-
16
- ## Limitations
17
-
18
- You may not provide the software to third parties as a hosted or managed
19
- service, where the service provides users with access to any substantial set
20
- of the features or functionality of the software.
21
-
22
- You may not move, change, disable, or circumvent the license key functionality
23
- in the software, and you may not remove or obscure any functionality in the
24
- software that is protected by the license key.
25
-
26
- You may not alter, remove, or obscure any licensing, copyright, or other
27
- notices of the licensor in the software. Any use of the licensor's trademarks
28
- is subject to applicable law.
29
-
30
- ## Patents
31
-
32
- The licensor grants you a license, under any patent claims the licensor can
33
- license, or becomes able to license, to make, have made, use, sell, offer for
34
- sale, import and have imported the software, in each case subject to the
35
- limitations and conditions in this license. This license does not cover any
36
- patent claims that you cause to be infringed by modifications or additions to
37
- the software. If you or your company make any written claim that the software
38
- infringes or contributes to infringement of any patent, your patent license
39
- for the software granted under these terms ends immediately. If your company
40
- makes such a claim, your patent license ends immediately for work on behalf
41
- of your company.
42
-
43
- ## Notices
44
-
45
- You must ensure that anyone who gets a copy of any part of the software from
46
- you also gets a copy of these terms.
47
-
48
- If you modify the software, you must include in any modified copies of the
49
- software prominent notices stating that you have modified the software.
50
-
51
- ## No Other Rights
52
-
53
- These terms do not imply any licenses other than those expressly granted in
54
- these terms.
55
-
56
- ## Termination
57
-
58
- If you use the software in violation of these terms, such use is not licensed,
59
- and your licenses will automatically terminate. If the licensor provides you
60
- with a notice of your violation, and you cease all violation of this license
61
- no later than 30 days after you receive that notice, your licenses will be
62
- reinstated retroactively. However, if you violate these terms after such
63
- reinstatement, any additional violation of these terms will cause your
64
- licenses to terminate automatically and permanently.
65
-
66
- ## No Liability
67
-
68
- As far as the law allows, the software comes as is, without any warranty or
69
- condition, and the licensor will not be liable to you for any damages arising
70
- out of these terms or the use or nature of the software, under any kind of
71
- legal claim.
72
-
73
- ## Definitions
74
-
75
- The **licensor** is the entity offering these terms, and the **software** is
76
- the software the licensor makes available under these terms, including any
77
- portion of it.
78
-
79
- **you** refers to the individual or entity agreeing to these terms.
80
-
81
- **your company** is any legal entity, sole proprietorship, or other kind of
82
- organization that you work for, plus all organizations that have control over,
83
- are under the control of, or are under common control with that organization.
84
- **control** means ownership of substantially all the assets of an entity, or
85
- the power to direct the management and policies of an entity (for example, by
86
- voting right, contract, or otherwise). Control can be direct or indirect.
87
-
88
- **your licenses** are all the licenses granted to you for the software under
89
- these terms.
90
-
91
- **use** means anything you do with the software requiring one of your
92
- licenses.
93
-
94
- **trademark** means trademarks, service marks, and similar rights.
package/dist/index.d.ts DELETED
@@ -1,149 +0,0 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import * as react from 'react';
3
- import { HTMLAttributes, ButtonHTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TdHTMLAttributes, ThHTMLAttributes, TextareaHTMLAttributes } from 'react';
4
- import * as CheckboxPrimitive from '@radix-ui/react-checkbox';
5
- import { ColumnDef, Column, Table as Table$1 } from '@tanstack/react-table';
6
- import * as DialogPrimitive from '@radix-ui/react-dialog';
7
- import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
8
- import * as _radix_ui_react_slot from '@radix-ui/react-slot';
9
- import * as react_hook_form from 'react-hook-form';
10
- import { FieldValues, FieldPath, ControllerProps } from 'react-hook-form';
11
- import * as LabelPrimitive from '@radix-ui/react-label';
12
- import { ClassValue } from 'clsx';
13
- import * as SeparatorPrimitive from '@radix-ui/react-separator';
14
- export { toast } from 'sonner';
15
-
16
- interface BadgeProps extends HTMLAttributes<HTMLDivElement> {
17
- variant?: 'default' | 'secondary' | 'destructive' | 'outline';
18
- }
19
- declare function Badge({ className, variant, ...props }: BadgeProps): react_jsx_runtime.JSX.Element;
20
-
21
- interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
22
- variant?: 'default' | 'destructive' | 'outline' | 'secondary' | 'ghost' | 'link';
23
- size?: 'default' | 'sm' | 'lg' | 'icon';
24
- loading?: boolean;
25
- asChild?: boolean;
26
- }
27
- declare const Button: react.ForwardRefExoticComponent<ButtonProps & react.RefAttributes<HTMLButtonElement>>;
28
-
29
- declare const Card: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
30
- declare const CardHeader: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
31
- declare const CardTitle: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
32
- declare const CardDescription: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
33
- declare const CardContent: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
34
- declare const CardFooter: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
35
-
36
- declare const Checkbox: react.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & react.RefAttributes<HTMLButtonElement>, "ref"> & react.RefAttributes<HTMLButtonElement>>;
37
-
38
- interface DataTableClassNames {
39
- root?: string;
40
- toolbar?: string;
41
- table?: string;
42
- pagination?: string;
43
- }
44
- interface DataTableProps<TData, TValue> {
45
- columns: ColumnDef<TData, TValue>[];
46
- data: TData[];
47
- searchKey?: string;
48
- searchPlaceholder?: string;
49
- pageSize?: number;
50
- emptyMessage?: string;
51
- classNames?: DataTableClassNames;
52
- }
53
- declare function DataTable<TData, TValue>({ columns, data, searchKey, searchPlaceholder, pageSize, emptyMessage, classNames, }: DataTableProps<TData, TValue>): react_jsx_runtime.JSX.Element;
54
-
55
- interface DataTableColumnHeaderProps<TData, TValue> {
56
- column: Column<TData, TValue>;
57
- title: string;
58
- className?: string;
59
- }
60
- declare function DataTableColumnHeader<TData, TValue>({ column, title, className, }: DataTableColumnHeaderProps<TData, TValue>): react_jsx_runtime.JSX.Element;
61
-
62
- interface DataTablePaginationProps<TData> {
63
- table: Table$1<TData>;
64
- className?: string;
65
- }
66
- declare function DataTablePagination<TData>({ table, className }: DataTablePaginationProps<TData>): react_jsx_runtime.JSX.Element;
67
-
68
- interface DataTableViewOptionsProps<TData> {
69
- table: Table$1<TData>;
70
- }
71
- declare function DataTableViewOptions<TData>({ table }: DataTableViewOptionsProps<TData>): react_jsx_runtime.JSX.Element;
72
-
73
- declare const Dialog: react.FC<DialogPrimitive.DialogProps>;
74
- declare const DialogTrigger: react.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & react.RefAttributes<HTMLButtonElement>>;
75
- declare const DialogClose: react.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & react.RefAttributes<HTMLButtonElement>>;
76
- declare const DialogPortal: react.FC<DialogPrimitive.DialogPortalProps>;
77
- declare const DialogOverlay: react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
78
- declare const DialogContent: react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
79
- declare function DialogHeader({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
80
- declare function DialogFooter({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
81
- declare const DialogTitle: react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & react.RefAttributes<HTMLHeadingElement>, "ref"> & react.RefAttributes<HTMLHeadingElement>>;
82
- declare const DialogDescription: react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & react.RefAttributes<HTMLParagraphElement>, "ref"> & react.RefAttributes<HTMLParagraphElement>>;
83
-
84
- declare const DropdownMenu: react.FC<DropdownMenuPrimitive.DropdownMenuProps>;
85
- declare const DropdownMenuTrigger: react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & react.RefAttributes<HTMLButtonElement>>;
86
- declare const DropdownMenuGroup: react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & react.RefAttributes<HTMLDivElement>>;
87
- declare const DropdownMenuPortal: react.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
88
- declare const DropdownMenuSub: react.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
89
- declare const DropdownMenuContent: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
90
- declare const DropdownMenuItem: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & react.RefAttributes<HTMLDivElement>, "ref"> & {
91
- inset?: boolean;
92
- } & react.RefAttributes<HTMLDivElement>>;
93
- declare const DropdownMenuCheckboxItem: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
94
- declare const DropdownMenuLabel: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & react.RefAttributes<HTMLDivElement>, "ref"> & {
95
- inset?: boolean;
96
- } & react.RefAttributes<HTMLDivElement>>;
97
- declare const DropdownMenuSeparator: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSeparatorProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
98
- declare const DropdownMenuSubTrigger: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubTriggerProps & react.RefAttributes<HTMLDivElement>, "ref"> & {
99
- inset?: boolean;
100
- } & react.RefAttributes<HTMLDivElement>>;
101
- declare const DropdownMenuSubContent: react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuSubContentProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
102
- declare function DropdownMenuShortcut({ className, ...props }: HTMLAttributes<HTMLSpanElement>): react_jsx_runtime.JSX.Element;
103
-
104
- declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: react_hook_form.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
105
- declare function FormField<TFieldValues extends FieldValues = FieldValues, TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>>(props: ControllerProps<TFieldValues, TName>): react_jsx_runtime.JSX.Element;
106
- declare function useFormField(): {
107
- invalid: boolean;
108
- isDirty: boolean;
109
- isTouched: boolean;
110
- isValidating: boolean;
111
- error?: react_hook_form.FieldError;
112
- id: string;
113
- name: string;
114
- formItemId: string;
115
- formDescriptionId: string;
116
- formMessageId: string;
117
- };
118
- declare const FormItem: react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & react.RefAttributes<HTMLDivElement>>;
119
- declare const FormLabel: react.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & react.RefAttributes<HTMLLabelElement>, "ref"> & react.RefAttributes<HTMLLabelElement>>;
120
- declare const FormControl: react.ForwardRefExoticComponent<Omit<_radix_ui_react_slot.SlotProps & react.RefAttributes<HTMLElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
121
- declare const FormDescription: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
122
- declare const FormMessage: react.ForwardRefExoticComponent<HTMLAttributes<HTMLParagraphElement> & react.RefAttributes<HTMLParagraphElement>>;
123
-
124
- declare const Input: react.ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & react.RefAttributes<HTMLInputElement>>;
125
-
126
- declare const Label: react.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & react.RefAttributes<HTMLLabelElement>, "ref"> & react.RefAttributes<HTMLLabelElement>>;
127
-
128
- declare function cn(...inputs: ClassValue[]): string;
129
-
130
- declare const Select: react.ForwardRefExoticComponent<SelectHTMLAttributes<HTMLSelectElement> & react.RefAttributes<HTMLSelectElement>>;
131
-
132
- declare const Separator: react.ForwardRefExoticComponent<Omit<SeparatorPrimitive.SeparatorProps & react.RefAttributes<HTMLDivElement>, "ref"> & react.RefAttributes<HTMLDivElement>>;
133
-
134
- declare function Skeleton({ className, ...props }: HTMLAttributes<HTMLDivElement>): react_jsx_runtime.JSX.Element;
135
-
136
- declare function Toaster(): react_jsx_runtime.JSX.Element;
137
-
138
- declare const Table: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableElement> & react.RefAttributes<HTMLTableElement>>;
139
- declare const TableHeader: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & react.RefAttributes<HTMLTableSectionElement>>;
140
- declare const TableBody: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & react.RefAttributes<HTMLTableSectionElement>>;
141
- declare const TableFooter: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & react.RefAttributes<HTMLTableSectionElement>>;
142
- declare const TableRow: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableRowElement> & react.RefAttributes<HTMLTableRowElement>>;
143
- declare const TableHead: react.ForwardRefExoticComponent<ThHTMLAttributes<HTMLTableCellElement> & react.RefAttributes<HTMLTableCellElement>>;
144
- declare const TableCell: react.ForwardRefExoticComponent<TdHTMLAttributes<HTMLTableCellElement> & react.RefAttributes<HTMLTableCellElement>>;
145
- declare const TableCaption: react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableCaptionElement> & react.RefAttributes<HTMLTableCaptionElement>>;
146
-
147
- declare const Textarea: react.ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & react.RefAttributes<HTMLTextAreaElement>>;
148
-
149
- export { Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, Checkbox, DataTable, type DataTableClassNames, DataTableColumnHeader, DataTablePagination, type DataTableProps, DataTableViewOptions, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, Label, Select, Separator, Skeleton, Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow, Textarea, Toaster, cn, useFormField };
package/dist/index.js DELETED
@@ -1,2 +0,0 @@
1
- "use client";
2
- import{clsx as Ue}from"clsx";import{twMerge as Xe}from"tailwind-merge";function r(...e){return Xe(Ue(e))}import{jsx as Qe}from"react/jsx-runtime";var qe={default:"border-transparent bg-primary text-primary-foreground shadow-xs",secondary:"border-transparent bg-secondary text-secondary-foreground",destructive:"border-transparent bg-destructive text-destructive-foreground shadow-xs",outline:"text-foreground"};function Je({className:e,variant:t="default",...o}){return Qe("div",{className:r("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold","transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2",qe[t],e),...o})}import{Slot as Ye}from"@radix-ui/react-slot";import{Loader2 as Ze}from"lucide-react";import{forwardRef as Ke}from"react";import{jsx as ne,jsxs as tt}from"react/jsx-runtime";var je={default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-xs hover:bg-destructive/90",outline:"border border-input bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},et={default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"},m=Ke(({className:e,variant:t="default",size:o="default",loading:a=!1,asChild:i=!1,disabled:d,children:c,type:j="button",...A},B)=>{let z=r("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium","transition-colors cursor-pointer","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","disabled:pointer-events-none disabled:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0",je[t],et[o],e);return i?ne(Ye,{ref:B,className:z,...A,children:c}):tt("button",{ref:B,disabled:d||a,className:z,type:j,...A,children:[a&&ne(Ze,{className:"h-4 w-4 animate-spin"}),c]})});m.displayName="Button";import{forwardRef as h}from"react";import{jsx as P}from"react/jsx-runtime";var ie=h(({className:e,...t},o)=>P("div",{ref:o,className:r("rounded-xl border bg-card text-card-foreground shadow-sm",e),...t}));ie.displayName="Card";var se=h(({className:e,...t},o)=>P("div",{ref:o,className:r("flex flex-col space-y-1.5 p-6",e),...t}));se.displayName="CardHeader";var le=h(({className:e,...t},o)=>P("div",{ref:o,className:r("font-semibold leading-none tracking-tight",e),...t}));le.displayName="CardTitle";var de=h(({className:e,...t},o)=>P("div",{ref:o,className:r("text-sm text-muted-foreground",e),...t}));de.displayName="CardDescription";var me=h(({className:e,...t},o)=>P("div",{ref:o,className:r("p-6 pt-0",e),...t}));me.displayName="CardContent";var pe=h(({className:e,...t},o)=>P("div",{ref:o,className:r("flex items-center p-6 pt-0",e),...t}));pe.displayName="CardFooter";import*as W from"@radix-ui/react-checkbox";import{Check as ot}from"lucide-react";import{forwardRef as rt}from"react";import{jsx as ee}from"react/jsx-runtime";var ue=rt(({className:e,...t},o)=>ee(W.Root,{ref:o,className:r("peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow-xs","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","disabled:cursor-not-allowed disabled:opacity-50","data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground",e),...t,children:ee(W.Indicator,{className:"flex items-center justify-center text-current",children:ee(ot,{className:"h-3.5 w-3.5"})})}));ue.displayName="Checkbox";import{flexRender as xe,getCoreRowModel as Tt,getFilteredRowModel as xt,getPaginationRowModel as vt,getSortedRowModel as Dt,useReactTable as Mt}from"@tanstack/react-table";import{useState as Y}from"react";import{forwardRef as at}from"react";import{jsx as nt}from"react/jsx-runtime";var O=at(({className:e,type:t,...o},a)=>nt("input",{type:t,ref:a,className:r("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-xs","transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground","placeholder:text-muted-foreground","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","disabled:cursor-not-allowed disabled:opacity-50",e),...o}));O.displayName="Input";import{forwardRef as v}from"react";import{jsx as b}from"react/jsx-runtime";var _=v(({className:e,...t},o)=>b("div",{className:"relative w-full overflow-auto",children:b("table",{ref:o,className:r("w-full caption-bottom text-sm",e),...t})}));_.displayName="Table";var G=v(({className:e,...t},o)=>b("thead",{ref:o,className:r("[&_tr]:border-b",e),...t}));G.displayName="TableHeader";var $=v(({className:e,...t},o)=>b("tbody",{ref:o,className:r("[&_tr:last-child]:border-0",e),...t}));$.displayName="TableBody";var ce=v(({className:e,...t},o)=>b("tfoot",{ref:o,className:r("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0",e),...t}));ce.displayName="TableFooter";var N=v(({className:e,...t},o)=>b("tr",{ref:o,className:r("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted",e),...t}));N.displayName="TableRow";var U=v(({className:e,...t},o)=>b("th",{ref:o,className:r("h-10 px-2 text-left align-middle font-medium text-muted-foreground","[&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));U.displayName="TableHead";var F=v(({className:e,...t},o)=>b("td",{ref:o,className:r("p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t}));F.displayName="TableCell";var fe=v(({className:e,...t},o)=>b("caption",{ref:o,className:r("mt-4 text-sm text-muted-foreground",e),...t}));fe.displayName="TableCaption";import{ChevronLeft as it,ChevronRight as st,ChevronsLeft as lt,ChevronsRight as dt}from"lucide-react";import{jsx as f,jsxs as T}from"react/jsx-runtime";function X({table:e,className:t}){let o=e.getFilteredSelectedRowModel().rows.length,a=e.getFilteredRowModel().rows.length;return T("div",{className:r("flex items-center justify-between px-2",t),children:[f("div",{className:"flex-1 text-sm text-muted-foreground",children:o>0&&T("span",{children:[o," of ",a," row(s) selected"]})}),T("div",{className:"flex items-center space-x-6 lg:space-x-8",children:[f("div",{className:"flex items-center space-x-2",children:T("p",{className:"text-sm font-medium",children:["Page ",e.getState().pagination.pageIndex+1," of ",e.getPageCount()]})}),T("div",{className:"flex items-center space-x-2",children:[T(m,{variant:"outline",size:"icon",className:"hidden h-8 w-8 lg:flex",onClick:()=>e.setPageIndex(0),disabled:!e.getCanPreviousPage(),children:[f("span",{className:"sr-only",children:"Go to first page"}),f(lt,{className:"h-4 w-4"})]}),T(m,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>e.previousPage(),disabled:!e.getCanPreviousPage(),children:[f("span",{className:"sr-only",children:"Go to previous page"}),f(it,{className:"h-4 w-4"})]}),T(m,{variant:"outline",size:"icon",className:"h-8 w-8",onClick:()=>e.nextPage(),disabled:!e.getCanNextPage(),children:[f("span",{className:"sr-only",children:"Go to next page"}),f(st,{className:"h-4 w-4"})]}),T(m,{variant:"outline",size:"icon",className:"hidden h-8 w-8 lg:flex",onClick:()=>e.setPageIndex(e.getPageCount()-1),disabled:!e.getCanNextPage(),children:[f("span",{className:"sr-only",children:"Go to last page"}),f(dt,{className:"h-4 w-4"})]})]})]})]})}import{Settings2 as bt}from"lucide-react";import*as n from"@radix-ui/react-dropdown-menu";import{Check as mt,ChevronRight as pt}from"lucide-react";import{forwardRef as C}from"react";import{jsx as p,jsxs as Te}from"react/jsx-runtime";var R=n.Root,E=n.Trigger,ut=n.Group,ct=n.Portal,ft=n.Sub,H=C(({className:e,sideOffset:t=4,...o},a)=>p(n.Portal,{children:p(n.Content,{ref:a,sideOffset:t,className:r("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...o})}));H.displayName="DropdownMenuContent";var L=C(({className:e,inset:t,...o},a)=>p(n.Item,{ref:a,className:r("relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none","transition-colors focus:bg-accent focus:text-accent-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50","[&_svg]:pointer-events-none [&_svg]:shrink-0",t&&"pl-8",e),...o}));L.displayName="DropdownMenuItem";var q=C(({className:e,children:t,checked:o,...a},i)=>Te(n.CheckboxItem,{ref:i,className:r("relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none","transition-colors focus:bg-accent focus:text-accent-foreground","data-[disabled]:pointer-events-none data-[disabled]:opacity-50",e),checked:o,...a,children:[p("span",{className:"absolute left-2 flex h-3.5 w-3.5 items-center justify-center",children:p(n.ItemIndicator,{children:p(mt,{className:"h-4 w-4"})})}),t]}));q.displayName="DropdownMenuCheckboxItem";var J=C(({className:e,inset:t,...o},a)=>p(n.Label,{ref:a,className:r("px-2 py-1.5 text-sm font-semibold",t&&"pl-8",e),...o}));J.displayName="DropdownMenuLabel";var S=C(({className:e,...t},o)=>p(n.Separator,{ref:o,className:r("-mx-1 my-1 h-px bg-muted",e),...t}));S.displayName="DropdownMenuSeparator";var ge=C(({className:e,inset:t,children:o,...a},i)=>Te(n.SubTrigger,{ref:i,className:r("flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none","focus:bg-accent data-[state=open]:bg-accent","[&_svg]:pointer-events-none [&_svg]:shrink-0",t&&"pl-8",e),...a,children:[o,p(pt,{className:"ml-auto h-4 w-4"})]}));ge.displayName="DropdownMenuSubTrigger";var be=C(({className:e,...t},o)=>p(n.SubContent,{ref:o,className:r("z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2","data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",e),...t}));be.displayName="DropdownMenuSubContent";function gt({className:e,...t}){return p("span",{className:r("ml-auto text-xs tracking-widest opacity-60",e),...t})}import{jsx as k,jsxs as te}from"react/jsx-runtime";function Q({table:e}){return te(R,{children:[k(E,{asChild:!0,children:te(m,{variant:"outline",size:"sm",className:"ml-auto hidden h-8 lg:flex",children:[k(bt,{className:"mr-2 h-4 w-4"}),"View"]})}),te(H,{align:"end",className:"w-[150px]",children:[k(J,{children:"Toggle columns"}),k(S,{}),e.getAllColumns().filter(t=>typeof t.accessorFn<"u"&&t.getCanHide()).map(t=>k(q,{className:"capitalize",checked:t.getIsVisible(),onCheckedChange:o=>t.toggleVisibility(!!o),children:t.id},t.id))]})]})}import{jsx as l,jsxs as oe}from"react/jsx-runtime";function ve({columns:e,data:t,searchKey:o,searchPlaceholder:a="Filter...",pageSize:i=10,emptyMessage:d="No results.",classNames:c}){let[j,A]=Y([]),[B,z]=Y([]),[Oe,_e]=Y({}),[Ge,$e]=Y({}),w=Mt({data:t,columns:e,state:{sorting:j,columnFilters:B,columnVisibility:Oe,rowSelection:Ge},onSortingChange:A,onColumnFiltersChange:z,onColumnVisibilityChange:_e,onRowSelectionChange:$e,getCoreRowModel:Tt(),getSortedRowModel:Dt(),getFilteredRowModel:xt(),getPaginationRowModel:vt(),initialState:{pagination:{pageSize:i}}});return oe("div",{className:r("space-y-4",c?.root),children:[oe("div",{className:r("flex items-center justify-between",c?.toolbar),children:[l("div",{className:"flex flex-1 items-center space-x-2",children:o&&l(O,{placeholder:a,value:w.getColumn(o)?.getFilterValue()??"",onChange:x=>w.getColumn(o)?.setFilterValue(x.target.value),className:"h-8 w-[150px] lg:w-[250px]"})}),l(Q,{table:w})]}),l("div",{className:r("rounded-md border",c?.table),children:oe(_,{children:[l(G,{children:w.getHeaderGroups().map(x=>l(N,{children:x.headers.map(g=>l(U,{colSpan:g.colSpan,children:g.isPlaceholder?null:xe(g.column.columnDef.header,g.getContext())},g.id))},x.id))}),l($,{children:w.getRowModel().rows.length>0?w.getRowModel().rows.map(x=>l(N,{"data-state":x.getIsSelected()&&"selected",children:x.getVisibleCells().map(g=>l(F,{children:xe(g.column.columnDef.cell,g.getContext())},g.id))},x.id)):l(N,{children:l(F,{colSpan:e.length,className:"h-24 text-center",children:d})})})]})}),l(X,{table:w,className:c?.pagination})]})}import{ArrowDown as De,ArrowUp as Me,ChevronsUpDown as wt,EyeOff as Ct}from"lucide-react";import{Fragment as yt,jsx as u,jsxs as y}from"react/jsx-runtime";function we({column:e,title:t,className:o}){return e.getCanSort()?u("div",{className:r("flex items-center space-x-2",o),children:y(R,{children:[u(E,{asChild:!0,children:y(m,{variant:"ghost",size:"sm",className:"-ml-3 h-8 data-[state=open]:bg-accent",children:[u("span",{children:t}),e.getIsSorted()==="desc"?u(De,{className:"ml-2 h-4 w-4"}):e.getIsSorted()==="asc"?u(Me,{className:"ml-2 h-4 w-4"}):u(wt,{className:"ml-2 h-4 w-4"})]})}),y(H,{align:"start",children:[y(L,{onClick:()=>e.toggleSorting(!1),children:[u(Me,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Asc"]}),y(L,{onClick:()=>e.toggleSorting(!0),children:[u(De,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Desc"]}),e.getCanHide()&&y(yt,{children:[u(S,{}),y(L,{onClick:()=>e.toggleVisibility(!1),children:[u(Ct,{className:"mr-2 h-3.5 w-3.5 text-muted-foreground/70"}),"Hide"]})]})]})]})}):u("div",{className:r(o),children:t})}import*as s from"@radix-ui/react-dialog";import{X as ht}from"lucide-react";import{forwardRef as Z}from"react";import{jsx as D,jsxs as re}from"react/jsx-runtime";var Pt=s.Root,Nt=s.Trigger,Ht=s.Close,Ce=s.Portal,ae=Z(({className:e,...t},o)=>D(s.Overlay,{ref:o,className:r("fixed inset-0 z-50 bg-black/80","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",e),...t}));ae.displayName="DialogOverlay";var ye=Z(({className:e,children:t,...o},a)=>re(Ce,{children:[D(ae,{}),re(s.Content,{ref:a,className:r("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%]","gap-4 border bg-background p-6 shadow-lg sm:rounded-lg","data-[state=open]:animate-in data-[state=closed]:animate-out","data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0","data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95","data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%]","data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",e),...o,children:[t,re(s.Close,{className:r("absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity","hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2","disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground","cursor-pointer"),children:[D(ht,{className:"h-4 w-4"}),D("span",{className:"sr-only",children:"Close"})]})]})]}));ye.displayName="DialogContent";function Lt({className:e,...t}){return D("div",{className:r("flex flex-col space-y-1.5 text-center sm:text-left",e),...t})}function St({className:e,...t}){return D("div",{className:r("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...t})}var he=Z(({className:e,...t},o)=>D(s.Title,{ref:o,className:r("text-lg font-semibold leading-none tracking-tight",e),...t}));he.displayName="DialogTitle";var Pe=Z(({className:e,...t},o)=>D(s.Description,{ref:o,className:r("text-sm text-muted-foreground",e),...t}));Pe.displayName="DialogDescription";import{Slot as Et}from"@radix-ui/react-slot";import{createContext as Le,forwardRef as I,useContext as He,useId as kt}from"react";import{Controller as It,FormProvider as Vt,useFormContext as At}from"react-hook-form";import*as Ne from"@radix-ui/react-label";import{forwardRef as Ft}from"react";import{jsx as Rt}from"react/jsx-runtime";var K=Ft(({className:e,...t},o)=>Rt(Ne.Root,{ref:o,className:r("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",e),...t}));K.displayName="Label";import{jsx as M}from"react/jsx-runtime";var Bt=Vt,Se=Le({});function zt(e){return M(Se.Provider,{value:{name:e.name},children:M(It,{...e})})}var Fe=Le({});function V(){let e=He(Se),t=He(Fe),{getFieldState:o,formState:a}=At(),i=o(e.name,a),{id:d}=t;return{id:d,name:e.name,formItemId:`${d}-form-item`,formDescriptionId:`${d}-form-item-description`,formMessageId:`${d}-form-item-message`,...i}}var Re=I(({className:e,...t},o)=>{let a=kt();return M(Fe.Provider,{value:{id:a},children:M("div",{ref:o,className:r("space-y-2",e),...t})})});Re.displayName="FormItem";var Ee=I(({className:e,...t},o)=>{let{error:a,formItemId:i}=V();return M(K,{ref:o,className:r(a&&"text-destructive",e),htmlFor:i,...t})});Ee.displayName="FormLabel";var ke=I(({...e},t)=>{let{error:o,formItemId:a,formDescriptionId:i,formMessageId:d}=V();return M(Et,{ref:t,id:a,"aria-describedby":o?`${i} ${d}`:i,"aria-invalid":!!o,...e})});ke.displayName="FormControl";var Ie=I(({className:e,...t},o)=>{let{formDescriptionId:a}=V();return M("p",{ref:o,id:a,className:r("text-[0.8rem] text-muted-foreground",e),...t})});Ie.displayName="FormDescription";var Ve=I(({className:e,children:t,...o},a)=>{let{error:i,formMessageId:d}=V(),c=i?String(i.message):t;return c?M("p",{ref:a,id:d,className:r("text-[0.8rem] font-medium text-destructive",e),...o,children:c}):null});Ve.displayName="FormMessage";import{forwardRef as Wt}from"react";import{jsx as Ot}from"react/jsx-runtime";var Ae=Wt(({className:e,children:t,...o},a)=>Ot("select",{ref:a,className:r("flex h-9 w-full rounded-md border border-input bg-background text-foreground px-3 py-1 text-sm shadow-xs","transition-colors","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","disabled:cursor-not-allowed disabled:opacity-50",e),...o,children:t}));Ae.displayName="Select";import*as Be from"@radix-ui/react-separator";import{forwardRef as _t}from"react";import{jsx as Gt}from"react/jsx-runtime";var ze=_t(({className:e,orientation:t="horizontal",decorative:o=!0,...a},i)=>Gt(Be.Root,{ref:i,decorative:o,orientation:t,className:r("shrink-0 bg-border",t==="horizontal"?"h-[1px] w-full":"h-full w-[1px]",e),...a}));ze.displayName="Separator";import{jsx as Ut}from"react/jsx-runtime";function $t({className:e,...t}){return Ut("div",{className:r("animate-pulse rounded-md bg-muted",e),...t})}import{Toaster as Xt,toast as qt}from"sonner";import{jsx as Qt}from"react/jsx-runtime";function Jt(){return Qt(Xt,{position:"bottom-right",toastOptions:{style:{background:"var(--color-background)",color:"var(--color-foreground)",border:"1px solid var(--color-border)"},classNames:{error:"sonner-error",success:"sonner-success"}}})}import{forwardRef as Yt}from"react";import{jsx as Zt}from"react/jsx-runtime";var We=Yt(({className:e,...t},o)=>Zt("textarea",{ref:o,className:r("flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs","placeholder:text-muted-foreground","focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring","disabled:cursor-not-allowed disabled:opacity-50",e),...t}));We.displayName="Textarea";export{Je as Badge,m as Button,ie as Card,me as CardContent,de as CardDescription,pe as CardFooter,se as CardHeader,le as CardTitle,ue as Checkbox,ve as DataTable,we as DataTableColumnHeader,X as DataTablePagination,Q as DataTableViewOptions,Pt as Dialog,Ht as DialogClose,ye as DialogContent,Pe as DialogDescription,St as DialogFooter,Lt as DialogHeader,ae as DialogOverlay,Ce as DialogPortal,he as DialogTitle,Nt as DialogTrigger,R as DropdownMenu,q as DropdownMenuCheckboxItem,H as DropdownMenuContent,ut as DropdownMenuGroup,L as DropdownMenuItem,J as DropdownMenuLabel,ct as DropdownMenuPortal,S as DropdownMenuSeparator,gt as DropdownMenuShortcut,ft as DropdownMenuSub,be as DropdownMenuSubContent,ge as DropdownMenuSubTrigger,E as DropdownMenuTrigger,Bt as Form,ke as FormControl,Ie as FormDescription,zt as FormField,Re as FormItem,Ee as FormLabel,Ve as FormMessage,O as Input,K as Label,Ae as Select,ze as Separator,$t as Skeleton,_ as Table,$ as TableBody,fe as TableCaption,F as TableCell,ce as TableFooter,U as TableHead,G as TableHeader,N as TableRow,We as Textarea,Jt as Toaster,r as cn,qt as toast,V as useFormField};