@murumets-ee/ui 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -3,7 +3,7 @@ import { ClassValue } from "clsx";
3
3
  import * as _$react_jsx_runtime0 from "react/jsx-runtime";
4
4
  import * as _$_radix_ui_react_slot0 from "@radix-ui/react-slot";
5
5
  import * as _$react from "react";
6
- import { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes } from "react";
6
+ import { ButtonHTMLAttributes, ComponentProps, HTMLAttributes, InputHTMLAttributes, SelectHTMLAttributes, TdHTMLAttributes, TextareaHTMLAttributes, ThHTMLAttributes } from "react";
7
7
  import * as RechartsPrimitive from "recharts";
8
8
  import { TooltipValueType } from "recharts";
9
9
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
@@ -14,7 +14,7 @@ import * as _$react_hook_form0 from "react-hook-form";
14
14
  import { ControllerProps, FieldPath, FieldValues } from "react-hook-form";
15
15
  import * as LabelPrimitive from "@radix-ui/react-label";
16
16
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
17
- import { toast } from "sonner";
17
+ import { Toaster as Toaster$1, toast } from "sonner";
18
18
 
19
19
  //#region src/badge.d.ts
20
20
  interface BadgeProps extends HTMLAttributes<HTMLDivElement> {
@@ -65,22 +65,17 @@ declare function ChartContainer({
65
65
  children,
66
66
  config,
67
67
  initialDimension,
68
+ nonce,
68
69
  ...props
69
- }: _$react.ComponentProps<"div"> & {
70
+ }: _$react.ComponentProps<'div'> & {
70
71
  config: ChartConfig;
71
- children: _$react.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>["children"];
72
+ children: _$react.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children'];
72
73
  initialDimension?: {
73
74
  width: number;
74
75
  height: number;
75
- };
76
+ }; /** CSP nonce forwarded to the inline `<style>` element. */
77
+ nonce?: string;
76
78
  }): _$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
79
  declare const ChartTooltip: typeof RechartsPrimitive.Tooltip;
85
80
  declare function ChartTooltipContent({
86
81
  active,
@@ -96,24 +91,13 @@ declare function ChartTooltipContent({
96
91
  color,
97
92
  nameKey,
98
93
  labelKey
99
- }: _$react.ComponentProps<typeof RechartsPrimitive.Tooltip> & _$react.ComponentProps<"div"> & {
94
+ }: _$react.ComponentProps<typeof RechartsPrimitive.Tooltip> & _$react.ComponentProps<'div'> & {
100
95
  hideLabel?: boolean;
101
96
  hideIndicator?: boolean;
102
- indicator?: "line" | "dot" | "dashed";
97
+ indicator?: 'line' | 'dot' | 'dashed';
103
98
  nameKey?: string;
104
99
  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;
100
+ } & Omit<RechartsPrimitive.DefaultTooltipContentProps<TooltipValueType, TooltipNameType>, 'accessibilityLayer'>): _$react_jsx_runtime0.JSX.Element | null;
117
101
  //#endregion
118
102
  //#region src/checkbox.d.ts
119
103
  declare const Checkbox: _$react.ForwardRefExoticComponent<Omit<CheckboxPrimitive.CheckboxProps & _$react.RefAttributes<HTMLButtonElement>, "ref"> & _$react.RefAttributes<HTMLButtonElement>>;
@@ -156,16 +140,6 @@ declare function DataTableColumnHeader<TData, TValue>({
156
140
  className
157
141
  }: DataTableColumnHeaderProps<TData, TValue>): _$react_jsx_runtime0.JSX.Element;
158
142
  //#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
143
  //#region src/data-table/data-table-view-options.d.ts
170
144
  interface DataTableViewOptionsProps<TData> {
171
145
  table: Table$1<TData>;
@@ -178,8 +152,6 @@ declare function DataTableViewOptions<TData>({
178
152
  declare const Dialog: _$react.FC<DialogPrimitive.DialogProps>;
179
153
  declare const DialogTrigger: _$react.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & _$react.RefAttributes<HTMLButtonElement>>;
180
154
  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
155
  declare const DialogContent: _$react.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogContentProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
184
156
  declare function DialogHeader({
185
157
  className,
@@ -195,42 +167,19 @@ declare const DialogDescription: _$react.ForwardRefExoticComponent<Omit<DialogPr
195
167
  //#region src/dropdown-menu.d.ts
196
168
  declare const DropdownMenu: _$react.FC<DropdownMenuPrimitive.DropdownMenuProps>;
197
169
  declare const DropdownMenuTrigger: _$react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuTriggerProps & _$react.RefAttributes<HTMLButtonElement>>;
198
- declare const DropdownMenuGroup: _$react.ForwardRefExoticComponent<DropdownMenuPrimitive.DropdownMenuGroupProps & _$react.RefAttributes<HTMLDivElement>>;
199
170
  declare const DropdownMenuPortal: _$react.FC<DropdownMenuPrimitive.DropdownMenuPortalProps>;
200
- declare const DropdownMenuSub: _$react.FC<DropdownMenuPrimitive.DropdownMenuSubProps>;
201
171
  declare const DropdownMenuContent: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuContentProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
202
172
  declare const DropdownMenuItem: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuItemProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & {
203
173
  inset?: boolean;
204
174
  } & _$react.RefAttributes<HTMLDivElement>>;
205
- declare const DropdownMenuCheckboxItem: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuCheckboxItemProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
206
175
  declare const DropdownMenuLabel: _$react.ForwardRefExoticComponent<Omit<DropdownMenuPrimitive.DropdownMenuLabelProps & _$react.RefAttributes<HTMLDivElement>, "ref"> & {
207
176
  inset?: boolean;
208
177
  } & _$react.RefAttributes<HTMLDivElement>>;
209
178
  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
179
  //#endregion
219
180
  //#region src/form.d.ts
220
181
  declare const Form: <TFieldValues extends FieldValues, TContext = any, TTransformedValues = TFieldValues>(props: _$react_hook_form0.FormProviderProps<TFieldValues, TContext, TTransformedValues>) => React.JSX.Element;
221
182
  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
183
  declare const FormItem: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & _$react.RefAttributes<HTMLDivElement>>;
235
184
  declare const FormLabel: _$react.ForwardRefExoticComponent<Omit<LabelPrimitive.LabelProps & _$react.RefAttributes<HTMLLabelElement>, "ref"> & _$react.RefAttributes<HTMLLabelElement>>;
236
185
  declare const FormControl: _$react.ForwardRefExoticComponent<Omit<_$_radix_ui_react_slot0.SlotProps & _$react.RefAttributes<HTMLElement>, "ref"> & _$react.RefAttributes<HTMLDivElement>>;
@@ -259,20 +208,21 @@ declare function Skeleton({
259
208
  }: HTMLAttributes<HTMLDivElement>): _$react_jsx_runtime0.JSX.Element;
260
209
  //#endregion
261
210
  //#region src/sonner.d.ts
262
- declare function Toaster(): _$react_jsx_runtime0.JSX.Element;
211
+ declare function Toaster({
212
+ toastOptions,
213
+ ...props
214
+ }: ComponentProps<typeof Toaster$1>): _$react_jsx_runtime0.JSX.Element;
263
215
  //#endregion
264
216
  //#region src/table.d.ts
265
217
  declare const Table: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableElement> & _$react.RefAttributes<HTMLTableElement>>;
266
218
  declare const TableHeader: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
267
219
  declare const TableBody: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
268
- declare const TableFooter: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableSectionElement> & _$react.RefAttributes<HTMLTableSectionElement>>;
269
220
  declare const TableRow: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableRowElement> & _$react.RefAttributes<HTMLTableRowElement>>;
270
221
  declare const TableHead: _$react.ForwardRefExoticComponent<ThHTMLAttributes<HTMLTableCellElement> & _$react.RefAttributes<HTMLTableCellElement>>;
271
222
  declare const TableCell: _$react.ForwardRefExoticComponent<TdHTMLAttributes<HTMLTableCellElement> & _$react.RefAttributes<HTMLTableCellElement>>;
272
- declare const TableCaption: _$react.ForwardRefExoticComponent<HTMLAttributes<HTMLTableCaptionElement> & _$react.RefAttributes<HTMLTableCaptionElement>>;
273
223
  //#endregion
274
224
  //#region src/textarea.d.ts
275
225
  declare const Textarea: _$react.ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & _$react.RefAttributes<HTMLTextAreaElement>>;
276
226
  //#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 };
227
+ export { Badge, type BadgeProps, Button, type ButtonProps, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, Checkbox, DataTable, DataTableColumnHeader, DataTableViewOptions, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuTrigger, Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, Input, Label, Select, Separator, Skeleton, Table, TableBody, TableCell, TableHead, TableHeader, TableRow, Textarea, Toaster, cn, toast };
278
228
  //# sourceMappingURL=index.d.mts.map
@@ -1 +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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"}
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-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 CHANGED
@@ -1,9 +1,5 @@
1
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};
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 x,useId as ee,useState as S}from"react";import*as te 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 be=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`rounded-xl border bg-card text-card-foreground shadow-sm`,e),...t}));be.displayName=`Card`;const D=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`flex flex-col space-y-1.5 p-6`,e),...t}));D.displayName=`CardHeader`;const O=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`font-semibold leading-none tracking-tight`,e),...t}));O.displayName=`CardTitle`;const k=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`text-sm text-muted-foreground`,e),...t}));k.displayName=`CardDescription`;const A=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`p-6 pt-0`,e),...t}));A.displayName=`CardContent`;const j=b(({className:e,...t},n)=>r(`div`,{ref:n,className:T(`flex items-center p-6 pt-0`,e),...t}));j.displayName=`CardFooter`;const xe={light:``,dark:`.dark`},Se={width:320,height:200},M=/^[a-zA-Z0-9_-]+$/,Ce=/^[#a-zA-Z0-9 ,.()/%-]+$/,we=/\burl\s*\(/i,N=v.createContext(null);function Te(){let e=v.useContext(N);if(!e)throw Error(`useChart must be used within a <ChartContainer />`);return e}function Ee(e,t){if(!M.test(e))return null;let n=Object.entries(t).filter(([,e])=>e.theme??e.color);if(!n.length)return null;let r=Object.entries(xe).map(([t,r])=>{let i=n.map(([e,n])=>{if(!M.test(e))return null;let r=n.theme?.[t]??n.color;return!r||!Ce.test(r)||we.test(r)?null:` --color-${e}: ${r};`}).filter(e=>e!==null);return i.length?`${r} [data-chart=${e}] {\n${i.join(`
3
+ `)}\n}`:null}).filter(e=>e!==null);return r.length?r.join(`
4
+ `):null}function De(e){if(e&&typeof e==`object`&&`fill`in e&&typeof e.fill==`string`)return e.fill}function Oe({id:e,className:t,children:n,config:a,initialDimension:o=Se,nonce:s,...c}){let l=v.useId(),u=`chart-${(e&&M.test(e)?e:null)??l.replace(/:/g,``)}`;return r(N.Provider,{value:{config:a},children:i(`div`,{"data-slot":`chart`,"data-chart":u,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),...c,children:[r(ke,{id:u,config:a,nonce:s}),r(te.ResponsiveContainer,{initialDimension:o,children:n})]})})}const ke=({id:e,config:t,nonce:n})=>{let i=Ee(e,t);return i?r(`style`,{nonce:n,dangerouslySetInnerHTML:{__html:i}}):null},Ae=te.Tooltip;function je({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}=Te(),_=v.useMemo(()=>{if(s||!t?.length)return null;let[e]=t,n=P(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=`${m??e.name??e.dataKey??`value`}`,s=P(g,e,a),l=p??De(e.payload)??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:[s?.icon?r(s.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":l,"--color-border":l}}),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:s?.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)})]})]})},a)})})]})}function P(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 F=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`})})}));F.displayName=`Checkbox`;const I=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}));I.displayName=`Input`;const L=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})}));L.displayName=`Table`;const R=b(({className:e,...t},n)=>r(`thead`,{ref:n,className:T(`[&_tr]:border-b`,e),...t}));R.displayName=`TableHeader`;const z=b(({className:e,...t},n)=>r(`tbody`,{ref:n,className:T(`[&_tr:last-child]:border-0`,e),...t}));z.displayName=`TableBody`;const Me=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}));Me.displayName=`TableFooter`;const B=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}));B.displayName=`TableRow`;const V=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}));V.displayName=`TableHead`;const H=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}));H.displayName=`TableCell`;const Ne=b(({className:e,...t},n)=>r(`caption`,{ref:n,className:T(`mt-4 text-sm text-muted-foreground`,e),...t}));Ne.displayName=`TableCaption`;function Pe({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 U=C.Root,W=C.Trigger,Fe=C.Portal,G=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})}));G.displayName=`DropdownMenuContent`;const K=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}));K.displayName=`DropdownMenuItem`;const q=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),...n!==void 0&&{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]}));q.displayName=`DropdownMenuCheckboxItem`;const J=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}));J.displayName=`DropdownMenuLabel`;const Y=b(({className:e,...t},n)=>r(C.Separator,{ref:n,className:T(`-mx-1 my-1 h-px bg-muted`,e),...t}));Y.displayName=`DropdownMenuSeparator`;const Ie=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`})]}));Ie.displayName=`DropdownMenuSubTrigger`;const Le=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}));Le.displayName=`DropdownMenuSubContent`;function X({table:e}){return i(U,{children:[r(W,{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(G,{align:`end`,className:`w-[150px]`,children:[r(J,{children:`Toggle columns`}),r(Y,{}),e.getAllColumns().filter(e=>e.accessorFn!==void 0&&e.getCanHide()).map(e=>r(q,{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]=S([]),[d,f]=S([]),[p,m]=S({}),[h,g]=S({}),_=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(I,{placeholder:a,value:_.getColumn(n)?.getFilterValue()??``,onChange:e=>_.getColumn(n)?.setFilterValue(e.target.value),className:`h-8 w-[150px] lg:w-[250px]`})}),r(X,{table:_})]}),r(`div`,{className:T(`rounded-md border`,c?.table),children:i(L,{children:[r(R,{children:_.getHeaderGroups().map(e=>r(B,{children:e.headers.map(e=>r(V,{colSpan:e.colSpan,children:e.isPlaceholder?null:re(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),r(z,{children:_.getRowModel().rows.length>0?_.getRowModel().rows.map(e=>r(B,{"data-state":e.getIsSelected()&&`selected`,children:e.getVisibleCells().map(e=>r(H,{children:re(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):r(B,{children:r(H,{colSpan:e.length,className:`h-24 text-center`,children:s})})})]})}),r(Pe,{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(U,{children:[r(W,{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(G,{align:`start`,children:[i(K,{onClick:()=>e.toggleSorting(!1),children:[r(s,{className:`mr-2 h-3.5 w-3.5 text-muted-foreground/70`}),`Asc`]}),i(K,{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(Y,{}),i(K,{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,We=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}));We.displayName=`DialogOverlay`;const Ge=b(({className:e,children:t,...n},a)=>i(Ue,{children:[r(We,{}),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`})]})]})]}));Ge.displayName=`DialogContent`;function Ke({className:e,...t}){return r(`div`,{className:T(`flex flex-col space-y-1.5 text-center sm:text-left`,e),...t})}function qe({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 Je=b(({className:e,...t},n)=>r(w.Title,{ref:n,className:T(`text-lg font-semibold leading-none tracking-tight`,e),...t}));Je.displayName=`DialogTitle`;const Ye=b(({className:e,...t},n)=>r(w.Description,{ref:n,className:T(`text-sm text-muted-foreground`,e),...t}));Ye.displayName=`DialogDescription`;const Z=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}));Z.displayName=`Label`;const Xe=ue,Q=y({});function Ze(e){return r(Q.Provider,{value:{name:e.name},children:r(le,{...e})})}const Qe=y({});function $(){let e=x(Q),t=x(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=ee();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(Z,{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})}const st={background:`var(--color-background)`,color:`var(--color-foreground)`,border:`1px solid var(--color-border)`},ct={error:`sonner-error`,success:`sonner-success`};function lt({toastOptions:e,...t}){return r(me,{position:`bottom-right`,...t,toastOptions:{...e,style:{...st,...e?.style},classNames:{...ct,...e?.classNames}}})}const ut=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}));ut.displayName=`Textarea`;export{_e as Badge,E as Button,be as Card,A as CardContent,k as CardDescription,j as CardFooter,D as CardHeader,O as CardTitle,Oe as ChartContainer,Ae as ChartTooltip,je as ChartTooltipContent,F as Checkbox,Re as DataTable,ze as DataTableColumnHeader,X as DataTableViewOptions,Be as Dialog,He as DialogClose,Ge as DialogContent,Ye as DialogDescription,qe as DialogFooter,Ke as DialogHeader,Je as DialogTitle,Ve as DialogTrigger,U as DropdownMenu,G as DropdownMenuContent,K as DropdownMenuItem,J as DropdownMenuLabel,Fe as DropdownMenuPortal,Y as DropdownMenuSeparator,W as DropdownMenuTrigger,Xe as Form,tt as FormControl,nt as FormDescription,Ze as FormField,$e as FormItem,et as FormLabel,rt as FormMessage,I as Input,Z as Label,it as Select,at as Separator,ot as Skeleton,L as Table,z as TableBody,H as TableCell,V as TableHead,R as TableHeader,B as TableRow,ut as Textarea,lt as Toaster,T as cn,he as toast};
9
5
  //# sourceMappingURL=index.mjs.map
@@ -1 +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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"}
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 * Vendored from shadcn/ui chart component (Recharts under the hood).\n * Provides ChartContainer (responsive wrapper), ChartTooltip, ChartTooltipContent.\n *\n * Usage: import Recharts components directly (Bar, BarChart, XAxis, etc.)\n * and wrap them in ChartContainer with a ChartConfig for theming.\n *\n * Security: ChartContainer's `id` prop and ChartConfig keys/colors are\n * inlined into a `<style dangerouslySetInnerHTML>` block to publish per-chart\n * CSS variables. Inputs that don't match the strict allowlists below are\n * silently dropped — DO NOT pass user-controllable strings as `id`, config\n * keys, or color values without validating upstream first.\n */\n\nimport * as React from 'react'\nimport type { TooltipValueType } from 'recharts'\nimport * as RechartsPrimitive 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\n/**\n * Allowlist for chart id prop and ChartConfig keys.\n * Inlined into both the [data-chart=...] attribute selector and the\n * --color-{key} CSS custom property name; deny anything that could break\n * out of the selector or property declaration.\n */\nconst SAFE_CHART_ID_OR_KEY = /^[a-zA-Z0-9_-]+$/\n\n/**\n * Allowlist for ChartConfig color values.\n * Permits hex/rgb/hsl/oklch/var()/keyword colors; denies `;`, `{`, `}`, `<`, `>`, `\"`, `\\`\n * and other characters that would let a value escape the rule body.\n */\nconst SAFE_CSS_COLOR_VALUE = /^[#a-zA-Z0-9 ,.()/%-]+$/\n\n/**\n * Bare `url(...)` values are also rejected — even though the per-chart custom\n * property is inert at the declaration site, it leaks into the cascade and is\n * fetched by any downstream rule that uses `var(--color-key)` in\n * `background-image` / `mask-image` / `cursor` / `border-image` / etc. That's\n * the fetch-on-attribute-selector exfil class the audit calls out, just laundered\n * through a custom property. `var()` is the consumer-intended escape hatch — it\n * doesn't trigger a network fetch on its own.\n */\nconst FORBIDDEN_COLOR_FUNCTION = /\\burl\\s*\\(/i\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\n/**\n * Build the per-chart CSS rules emitted by `<ChartStyle>`.\n *\n * Returns `null` if there is nothing to emit. Drops individual config\n * entries whose key fails {@link SAFE_CHART_ID_OR_KEY} or whose color\n * value fails {@link SAFE_CSS_COLOR_VALUE} — silently, since those values\n * being present means a consumer is forwarding untrusted input.\n *\n * Exported for unit tests; not part of the package public API.\n */\nexport function buildChartCss(id: string, config: ChartConfig): string | null {\n if (!SAFE_CHART_ID_OR_KEY.test(id)) {\n return null\n }\n\n const colorConfig = Object.entries(config).filter(([, value]) => value.theme ?? value.color)\n if (!colorConfig.length) {\n return null\n }\n\n const blocks = Object.entries(THEMES)\n .map(([theme, prefix]) => {\n const lines = colorConfig\n .map(([key, itemConfig]) => {\n if (!SAFE_CHART_ID_OR_KEY.test(key)) {\n return null\n }\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ?? itemConfig.color\n if (!color || !SAFE_CSS_COLOR_VALUE.test(color) || FORBIDDEN_COLOR_FUNCTION.test(color)) {\n return null\n }\n return ` --color-${key}: ${color};`\n })\n .filter((line): line is string => line !== null)\n\n if (!lines.length) {\n return null\n }\n return `${prefix} [data-chart=${id}] {\\n${lines.join('\\n')}\\n}`\n })\n .filter((block): block is string => block !== null)\n\n return blocks.length ? blocks.join('\\n') : null\n}\n\n/**\n * Recharts' `Payload.payload` is typed `any`, which cascades through\n * the indicator color resolution. Narrow once here so callers stay typed.\n */\nfunction getPayloadFill(payload: unknown): string | undefined {\n if (\n payload &&\n typeof payload === 'object' &&\n 'fill' in payload &&\n typeof (payload as { fill: unknown }).fill === 'string'\n ) {\n return (payload as { fill: string }).fill\n }\n return undefined\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n nonce,\n ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig\n children: React.ComponentProps<typeof RechartsPrimitive.ResponsiveContainer>['children']\n initialDimension?: {\n width: number\n height: number\n }\n /** CSP nonce forwarded to the inline `<style>` element. */\n nonce?: string\n}) {\n const uniqueId = React.useId()\n const safeProvidedId = id && SAFE_CHART_ID_OR_KEY.test(id) ? id : null\n const chartId = `chart-${safeProvidedId ?? 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} nonce={nonce} />\n <RechartsPrimitive.ResponsiveContainer initialDimension={initialDimension}>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n )\n}\n\nconst ChartStyle = ({\n id,\n config,\n nonce,\n}: {\n id: string\n config: ChartConfig\n nonce?: string | undefined\n}) => {\n const css = buildChartCss(id, config)\n if (!css) {\n return null\n }\n\n return (\n // biome-ignore lint/security/noDangerouslySetInnerHtml: id/keys/colors validated by buildChartCss against SAFE_CHART_ID_OR_KEY + SAFE_CSS_COLOR_VALUE allowlists.\n <style nonce={nonce} dangerouslySetInnerHTML={{ __html: css }} />\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<TooltipValueType, TooltipNameType>,\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' ? (config[label]?.label ?? label) : itemConfig?.label\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>{labelFormatter(value, payload)}</div>\n )\n }\n\n if (!value) {\n return null\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>\n }, [label, labelFormatter, payload, hideLabel, labelClassName, config, labelKey])\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 lookupKey = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`\n const itemConfig = getPayloadConfigFromPayload(config, item, lookupKey)\n const indicatorColor = color ?? getPayloadFill(item.payload) ?? item.color\n\n return (\n <div\n key={lookupKey}\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\nfunction getPayloadConfigFromPayload(config: ChartConfig, payload: unknown, key: string) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined\n }\n\n const payloadPayload =\n 'payload' in payload && typeof payload.payload === 'object' && payload.payload !== null\n ? payload.payload\n : undefined\n\n let configLabelKey: string = key\n\n if (key in payload && typeof payload[key as keyof typeof payload] === 'string') {\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[key as keyof typeof payloadPayload] as string\n }\n\n return configLabelKey in config ? config[configLabelKey] : config[key]\n}\n\nexport { ChartContainer, ChartTooltip, ChartTooltipContent }\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 | undefined\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 !== undefined && { 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 * Consumer-provided `toastOptions.style` and `toastOptions.classNames` are\n * deep-merged with the toolkit defaults — overriding `error` doesn't drop\n * the `success` className, and overriding `background` doesn't drop the\n * border / color.\n */\n\nimport type { ComponentProps } from 'react'\nimport { Toaster as SonnerToaster, toast } from 'sonner'\n\nconst DEFAULT_STYLE = {\n background: 'var(--color-background)',\n color: 'var(--color-foreground)',\n border: '1px solid var(--color-border)',\n}\n\nconst DEFAULT_CLASS_NAMES = {\n error: 'sonner-error',\n success: 'sonner-success',\n}\n\nfunction Toaster({ toastOptions, ...props }: ComponentProps<typeof SonnerToaster>) {\n return (\n <SonnerToaster\n position=\"bottom-right\"\n {...props}\n toastOptions={{\n ...toastOptions,\n style: { ...DEFAULT_STYLE, ...toastOptions?.style },\n classNames: { ...DEFAULT_CLASS_NAMES, ...toastOptions?.classNames },\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,6 +1,6 @@
1
1
  {
2
2
  "name": "@murumets-ee/ui",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "license": "Elastic-2.0",
5
5
  "type": "module",
6
6
  "exports": {
@@ -53,17 +53,17 @@
53
53
  "@tanstack/react-table": "^8.21.3",
54
54
  "@types/react": "^19",
55
55
  "@types/react-dom": "^19",
56
- "lucide-react": "^0.563.0",
56
+ "lucide-react": "^0.577.0",
57
57
  "react": "19.2.5",
58
58
  "react-dom": "19.2.5",
59
- "react-hook-form": "^7.73.1",
60
- "tsdown": "^0.21.7",
59
+ "react-hook-form": "^7.75.0",
60
+ "tsdown": "^0.21.10",
61
61
  "typescript": "^5.7.3",
62
62
  "vitest": "^2.1.8",
63
63
  "zod": "^3.24.1"
64
64
  },
65
65
  "typeCoverage": {
66
- "atLeast": 99.71
66
+ "atLeast": 99.91
67
67
  },
68
68
  "scripts": {
69
69
  "build": "tsdown",