@saptanshuwanjari/react-component-library 0.1.10 → 0.1.11
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 +27 -167
- package/dist/index.d.ts +27 -167
- package/dist/index.js +361 -1287
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +356 -1284
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/form/context.ts","../src/components/form/root.tsx","../src/components/form/use-form-ctx.ts","../src/lib/utils.ts","../src/components/ui/label.tsx","../src/components/form/field.tsx","../src/components/ui/input.tsx","../src/components/form/input-field.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/@radix-ui/react-slot/src/slot.tsx","../src/components/ui/button.tsx","../src/components/form/password-field.tsx","../src/components/ui/textarea.tsx","../src/components/form/textarea-field.tsx","../src/components/ui/select.tsx","../src/components/form/select-field.tsx","../src/components/ui/checkbox.tsx","../src/components/form/checkbox-field.tsx","../src/components/ui/popover.tsx","../src/components/ui/calendar.tsx","../src/components/form/date-field.tsx","../src/components/form/file-field.tsx","../src/components/ui/avatar.tsx","../src/components/form/profile-picture-field.tsx","../src/components/form/submit.tsx","../src/components/form/edit-button.tsx","../src/components/form/cancel-button.tsx","../src/components/form/link-field.tsx","../src/components/form/field-group.tsx","../src/components/form/index.ts","../src/components/data-table/context.tsx","../src/components/data-table/root.tsx","../src/components/data-table/view-options.tsx","../src/components/data-table/toolbar.tsx","../src/components/ui/table.tsx","../src/components/data-table/table-view.tsx","../src/components/data-table/grid-view.tsx","../src/components/data-table/content.tsx","../src/components/data-table/pagination.tsx","../src/components/data-table/index.tsx"],"names":["jsx","jsxs","InputField","Slot","props","memo","PasswordField","useState","TextareaField","SelectField","CheckIcon","CheckboxField","Controller","className","ChevronDownIcon","React3","DateField","FileField","ProfilePictureField","Upload","Button","useContext","Fragment","createContext","Root","root_default","TableIcon","Eye","Content"],"mappings":"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","file":"index.mjs","sourcesContent":["import { createContext } from \"react\";\nimport type { FieldValues } from \"react-hook-form\";\nimport type { useForm } from \"react-hook-form\";\nimport type * as z from \"zod\";\n\nexport type ZodSchema = z.ZodTypeAny;\n\nexport type FormContextValue<T extends FieldValues> = ReturnType<\n typeof useForm<T>\n> & {\n schema?: ZodSchema | undefined;\n isPending?: boolean;\n isEditing?: boolean;\n setIsEditing?: (editing: boolean) => void;\n};\n\nexport const FormContext = createContext<FormContextValue<any> | null>(null);\n\nexport const DEFAULT_FORM_KEY = \"__default_form__\";\nexport const formRegistry = new Map<string, (editing: boolean) => void>();\n","'use client';\n\nimport { useEffect, useState, useTransition, type ReactNode } from 'react';\nimport { zodResolver } from '@hookform/resolvers/zod';\nimport { useForm } from 'react-hook-form';\nimport type { FieldValues } from 'react-hook-form';\nimport { FormContext, DEFAULT_FORM_KEY, formRegistry, type ZodSchema, type FormContextValue } from './context';\n\ntype RootProps<T extends FieldValues> = {\n schema?: ZodSchema;\n defaultValues?: Partial<T>;\n onSubmit: (values: T) => void | Promise<void>;\n children: React.ReactNode;\n enableOptimistic?: boolean;\n title?: string;\n description?: string;\n enableEditMode?: boolean;\n formId?: string;\n};\n\nfunction Root<T extends FieldValues = FieldValues>({\n schema,\n defaultValues,\n onSubmit,\n children,\n enableOptimistic = false,\n title,\n description,\n enableEditMode = false,\n formId,\n}: RootProps<T>) {\n const resolver = schema ? zodResolver(schema) : undefined;\n const [isPending, startTransition] = useTransition();\n const [isEditing, setIsEditing] = useState(!enableEditMode);\n\n const methods = useForm<T>({\n resolver,\n defaultValues: defaultValues as any,\n });\n\n const handleFormSubmit = methods.handleSubmit((data) => {\n if (enableOptimistic) {\n startTransition(() => {\n void onSubmit(data);\n });\n return;\n }\n return onSubmit(data);\n });\n\n useEffect(() => {\n const key = formId ?? DEFAULT_FORM_KEY;\n formRegistry.set(key, setIsEditing);\n return () => {\n formRegistry.delete(key);\n };\n }, [formId, setIsEditing]);\n\n return (\n <FormContext.Provider value={{ ...methods, schema, isPending, isEditing, setIsEditing } as unknown as FormContextValue<T>}>\n <form\n onSubmit={handleFormSubmit}\n className=\"bg-card text-card-foreground rounded-xl border shadow-sm p-6 space-y-6\"\n >\n {(title || description) && (\n <div className=\"space-y-2\">\n {title && (\n <h2 className=\"text-2xl font-semibold tracking-tight\">{title}</h2>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n )}\n {children}\n </form>\n </FormContext.Provider>\n );\n}\n\nexport default Root;\n","import { useContext } from \"react\";\nimport type { FieldValues } from \"react-hook-form\";\nimport { FormContext, type FormContextValue } from \"./context\";\n\nexport function useFormCtx<T extends FieldValues>() {\n const ctx = useContext<FormContextValue<T> | null>(FormContext);\n if (!ctx) throw new Error(\"Form components must be used inside Form.Root\");\n return ctx;\n}\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Label({\n className,\n ...props\n}: React.ComponentProps<typeof LabelPrimitive.Root>) {\n return (\n <LabelPrimitive.Root\n data-slot=\"label\"\n className={cn(\n \"flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Label }\n","'use client';\n\nimport { Controller } from 'react-hook-form';\nimport type { FieldValues, Path, ControllerRenderProps } from 'react-hook-form';\nimport { useFormCtx } from './use-form-ctx';\nimport { Label } from '../ui/label';\n\ntype FieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n children: (\n field: ControllerRenderProps<TFieldValues, Path<TFieldValues>>\n ) => React.ReactNode;\n};\n\nfunction Field<TFieldValues extends FieldValues>({\n name,\n label,\n children,\n}: FieldProps<TFieldValues>) {\n const form = useFormCtx<TFieldValues>();\n const error = form.formState.errors[name];\n\n return (\n <div className=\"space-y-2\">\n {label ? <Label htmlFor={String(name)}>{label}</Label> : null}\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => <>{children(field)}</>}\n />\n {error?.message && (\n <p className=\"text-sm font-medium text-destructive\">\n {error.message as string}\n </p>\n )}\n </div>\n );\n}\n\nexport default Field;\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { useFormCtx } from './use-form-ctx';\nimport { Input } from '../ui/input';\n\ntype InputFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n placeholder?: string;\n type?: React.HTMLInputTypeAttribute;\n icon?: React.ReactNode;\n iconAlign?: 'inline-start' | 'inline-end' | 'block-start' | 'block-end';\n startAddon?: React.ReactNode;\n endAddon?: React.ReactNode;\n useGroup?: boolean;\n};\n\nconst InputField = memo(function InputField<TFieldValues extends FieldValues>({\n name,\n label,\n placeholder,\n type = 'text',\n icon,\n iconAlign = 'inline-start',\n startAddon,\n endAddon,\n useGroup,\n}: InputFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n\n return (\n <Field name={name} label={label}>\n {(field) => (\n <Input\n id={String(name)}\n type={type}\n {...field}\n value={field.value ?? ''}\n placeholder={placeholder}\n disabled={!isEditing}\n />\n )}\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: InputFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default InputField;\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot(ownerName: string) {\n const SlotClone = createSlotClone(ownerName);\n const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n </SlotClone>\n );\n }\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {children}\n </SlotClone>\n );\n });\n\n Slot.displayName = `${ownerName}.Slot`;\n return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ function createSlotClone(ownerName: string) {\n const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props = mergeProps(slotProps, children.props as AnyProps);\n // do not pass ref to React.Fragment for React 19 compatibility\n if (children.type !== React.Fragment) {\n props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props);\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol('radix.slottable');\n\ninterface SlottableProps {\n children: React.ReactNode;\n}\n\ninterface SlottableComponent extends React.FC<SlottableProps> {\n __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n const Slottable: SlottableComponent = ({ children }) => {\n return <>{children}</>;\n };\n Slottable.displayName = `${ownerName}.Slottable`;\n Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement<SlottableProps, typeof Slottable> {\n return (\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n '__radixId' in child.type &&\n child.type.__radixId === SLOTTABLE_IDENTIFIER\n );\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\nexport {\n Slot,\n Slottable,\n //\n Slot as Root,\n};\nexport type { SlotProps };\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","'use client';\n\nimport { memo, useState, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { Eye, EyeOff, Lock } from 'lucide-react';\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\n\ntype PasswordFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n placeholder?: string;\n};\n\nconst PasswordField = memo(function PasswordField<TFieldValues extends FieldValues>({\n name,\n label,\n placeholder,\n}: PasswordFieldProps<TFieldValues>) {\n const [show, setShow] = useState(false);\n\n return (\n <Field name={name} label={label}>\n {(field) => (\n <div className=\"relative\">\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 pointer-events-none z-10\">\n <Lock className=\"h-4 w-4 text-muted-foreground\" />\n </div>\n <Input\n id={String(name)}\n type={show ? 'text' : 'password'}\n {...field}\n value={field.value ?? ''}\n placeholder={placeholder}\n className=\"pl-10 pr-10\"\n />\n <Button\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n onClick={() => setShow(!show)}\n className=\"absolute right-1 top-1/2 -translate-y-1/2 h-8 w-8 p-0 text-muted-foreground hover:text-foreground\"\n >\n {show ? <EyeOff className=\"h-4 w-4\" /> : <Eye className=\"h-4 w-4\" />}\n </Button>\n </div>\n )}\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: PasswordFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default PasswordField;\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Textarea({ className, ...props }: React.ComponentProps<\"textarea\">) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n \"border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Textarea }\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { useFormCtx } from './use-form-ctx';\nimport { Textarea } from '../ui/textarea';\n\ntype TextareaFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n placeholder?: string;\n rows?: number;\n};\n\nconst TextareaField = memo(function TextareaField<TFieldValues extends FieldValues>({\n name,\n label,\n placeholder,\n rows = 4,\n}: TextareaFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n\n return (\n <Field name={name} label={label}>\n {(field) => (\n <Textarea\n id={String(name)}\n {...field}\n value={field.value ?? ''}\n placeholder={placeholder}\n rows={rows}\n disabled={!isEditing}\n className={!isEditing ? 'bg-background/50 opacity-80' : ''}\n />\n )}\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: TextareaFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default TextareaField;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { useFormCtx } from './use-form-ctx';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select';\nimport { Input } from '../ui/input';\n\ntype SelectFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n placeholder?: string;\n options: Array<{ label: string; value: string }>;\n};\n\nconst SelectField = memo(function SelectField<TFieldValues extends FieldValues>({\n name,\n label,\n placeholder = 'Select an option',\n options,\n}: SelectFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n\n return (\n <Field name={name} label={label}>\n {(field) =>\n !isEditing ? (\n <Input\n id={String(name)}\n value={options.find((opt) => opt.value === field.value)?.label ?? ''}\n placeholder={placeholder}\n readOnly\n disabled\n className=\"bg-background/50 opacity-80\"\n />\n ) : (\n <Select onValueChange={field.onChange} value={field.value ?? ''}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )\n }\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: SelectFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default SelectField;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Checkbox({\n className,\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root>) {\n return (\n <CheckboxPrimitive.Root\n data-slot=\"checkbox\"\n className={cn(\n \"peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"grid place-content-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n )\n}\n\nexport { Checkbox }\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport { Controller } from 'react-hook-form';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport { useFormCtx } from './use-form-ctx';\nimport { Checkbox } from '../ui/checkbox';\nimport { Label } from '../ui/label';\n\ntype CheckboxFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n description?: string;\n};\n\nconst CheckboxField = memo(function CheckboxField<TFieldValues extends FieldValues>({\n name,\n label,\n description,\n}: CheckboxFieldProps<TFieldValues>) {\n const form = useFormCtx<TFieldValues>();\n\n return (\n <div className=\"space-y-2\">\n <Controller\n control={form.control}\n name={name}\n render={({ field }) => (\n <div className=\"flex items-start gap-2\">\n <Checkbox\n id={String(name)}\n checked={!!field.value}\n onCheckedChange={form.isEditing ? field.onChange : undefined}\n disabled={!form.isEditing}\n />\n <div className=\"grid gap-1.5 leading-none\">\n {label && (\n <Label\n htmlFor={String(name)}\n className=\"cursor-pointer\"\n >\n {label}\n </Label>\n )}\n {description && (\n <p className=\"text-sm text-muted-foreground\">{description}</p>\n )}\n </div>\n </div>\n )}\n />\n {form.formState.errors[name]?.message && (\n <p className=\"text-sm font-medium text-destructive\">\n {form.formState.errors[name]?.message as string}\n </p>\n )}\n </div>\n );\n}) as <TFieldValues extends FieldValues>(\n props: CheckboxFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default CheckboxField;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Popover({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent({\n className,\n align = \"center\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"bg-popover text-popover-foreground 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 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n}: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","\"use client\"\n\nimport * as React from \"react\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport {\n DayPicker,\n getDefaultClassNames,\n type DayButton,\n} from \"react-day-picker\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/ui/button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n ...props\n}: React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"]\n}) {\n const defaultClassNames = getDefaultClassNames()\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[0.8rem] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n ...props\n}: React.ComponentProps<typeof DayButton>) {\n const defaultClassNames = getDefaultClassNames()\n\n const ref = React.useRef<HTMLButtonElement>(null)\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus()\n }, [modifiers.focused])\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { CalendarIcon } from 'lucide-react';\nimport { useFormCtx } from './use-form-ctx';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { Button } from '../ui/button';\nimport { Calendar } from '../ui/calendar';\nimport { cn } from '@/lib/utils';\nimport { format } from 'date-fns';\n\ntype DateFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n placeholder?: string;\n};\n\nconst DateField = memo(function DateField<TFieldValues extends FieldValues>({\n name,\n label,\n placeholder = 'Pick a date',\n}: DateFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n\n return (\n <Field name={name} label={label}>\n {(field) =>\n !isEditing ? (\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal bg-background/50\",\n !field.value && \"text-muted-foreground\"\n )}\n disabled\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {field.value ? format(new Date(field.value), \"PPP\") : <span>{placeholder}</span>}\n </Button>\n ) : (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant={\"outline\"}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !field.value && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {field.value ? format(new Date(field.value), \"PPP\") : <span>{placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={field.value ? new Date(field.value) : undefined}\n onSelect={field.onChange}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n )\n }\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: DateFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default DateField;\n","'use client';\n\nimport { memo, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { Upload } from 'lucide-react';\nimport { useFormCtx } from './use-form-ctx';\nimport { Input } from '../ui/input';\n\ntype FileFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n accept?: string;\n multiple?: boolean;\n};\n\nconst FileField = memo(function FileField<TFieldValues extends FieldValues>({\n name,\n label,\n accept,\n multiple,\n}: FileFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n\n return (\n <Field name={name} label={label}>\n {(field) => {\n const files = field.value as FileList | null | undefined;\n const filename = files && files.length ? (multiple ? `${files.length} files` : files[0].name) : '';\n\n if (!isEditing) {\n return (\n <div className=\"relative flex items-center\">\n <Upload className=\"absolute left-3 text-muted-foreground h-4 w-4 z-10\" />\n <Input\n id={`${String(name)}_display`}\n type=\"text\"\n value={filename}\n placeholder={accept ? `Accepts ${accept}` : 'No file selected'}\n readOnly\n disabled\n className=\"bg-background/50 opacity-80 pl-10\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"relative flex items-center\">\n <Upload className=\"absolute left-3 text-muted-foreground h-4 w-4 z-10 pointer-events-none\" />\n <Input\n id={String(name)}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={(e) => field.onChange(e.target.files)}\n onBlur={field.onBlur}\n name={field.name}\n ref={field.ref}\n className=\"pl-10\"\n />\n </div>\n );\n }}\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: FileFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default FileField;\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Avatar({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Root>) {\n return (\n <AvatarPrimitive.Root\n data-slot=\"avatar\"\n className={cn(\n \"relative flex size-8 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction AvatarImage({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Image>) {\n return (\n <AvatarPrimitive.Image\n data-slot=\"avatar-image\"\n className={cn(\"aspect-square size-full\", className)}\n {...props}\n />\n )\n}\n\nfunction AvatarFallback({\n className,\n ...props\n}: React.ComponentProps<typeof AvatarPrimitive.Fallback>) {\n return (\n <AvatarPrimitive.Fallback\n data-slot=\"avatar-fallback\"\n className={cn(\n \"bg-muted flex size-full items-center justify-center rounded-full\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","'use client';\n\nimport { memo, useState, type ReactNode } from 'react';\nimport type { FieldValues, Path } from 'react-hook-form';\nimport Field from './field';\nimport { Upload } from 'lucide-react';\nimport { useFormCtx } from './use-form-ctx';\nimport { cn } from '@/lib/utils';\nimport { Avatar, AvatarFallback, AvatarImage } from '../ui/avatar';\nimport { Button } from '../ui/button';\nimport { Label } from '../ui/label';\nimport { Input } from '../ui/input';\n\ntype ProfilePictureFieldProps<TFieldValues extends FieldValues> = {\n name: Path<TFieldValues>;\n label?: string;\n className?: string;\n avatarClassName?: string;\n fallback?: string;\n};\n\nconst ProfilePictureField = memo(function ProfilePictureField<TFieldValues extends FieldValues>({\n name,\n label,\n className,\n avatarClassName,\n fallback = 'User',\n}: ProfilePictureFieldProps<TFieldValues>) {\n const { isEditing } = useFormCtx<TFieldValues>();\n const [preview, setPreview] = useState<string | null>(null);\n\n return (\n <Field name={name} label={label}>\n {(field) => {\n const currentValue = field.value;\n const displayUrl = preview || (typeof currentValue === 'string' ? currentValue : null);\n\n return (\n <div className={cn('flex flex-col items-center gap-4', className)}>\n <Avatar className={cn('h-24 w-24', avatarClassName)}>\n <AvatarImage src={displayUrl || ''} alt=\"Profile picture\" />\n <AvatarFallback>{fallback}</AvatarFallback>\n </Avatar>\n {isEditing && (\n <div className=\"flex flex-col items-center gap-2\">\n <Label\n htmlFor={String(name)}\n className=\"cursor-pointer inline-flex items-center gap-2 rounded-md border border-input bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground\"\n >\n <Upload className=\"h-4 w-4\" />\n Upload Picture\n </Label>\n <Input\n id={String(name)}\n type=\"file\"\n accept=\"image/*\"\n className=\"hidden\"\n onChange={(e) => {\n const file = e.target.files?.[0];\n if (file) {\n field.onChange(file);\n const reader = new FileReader();\n reader.onloadend = () => {\n setPreview(reader.result as string);\n };\n reader.readAsDataURL(file);\n }\n }}\n onBlur={field.onBlur}\n name={field.name}\n ref={field.ref}\n />\n {displayUrl && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n type=\"button\"\n onClick={() => {\n field.onChange(null);\n setPreview(null);\n }}\n >\n Remove\n </Button>\n )}\n </div>\n )}\n </div>\n );\n }}\n </Field>\n );\n}) as <TFieldValues extends FieldValues>(\n props: ProfilePictureFieldProps<TFieldValues>\n) => ReactNode;\n\nexport default ProfilePictureField;\n","'use client';\n\nimport { useFormCtx } from './use-form-ctx';\n\n// Placeholder Button component\nconst Button = ({ children, ...props }: React.ComponentProps<'button'>) => (\n <button\n className=\"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 bg-primary text-primary-foreground hover:bg-primary/90 h-10 px-4 py-2\"\n {...props}\n >\n {children}\n </button>\n);\n\nfunction Submit({ children, ...props }: React.ComponentProps<typeof Button>) {\n const form = useFormCtx();\n const isPending = form.isPending || form.formState.isSubmitting;\n const { isEditing } = form;\n\n if (!isEditing) return null;\n\n return (\n <Button type=\"submit\" disabled={isPending || props.disabled} {...props}>\n {isPending ? 'Submitting...' : children}\n </Button>\n );\n}\n\nexport default Submit;\n","'use client';\n\nimport { useContext } from 'react';\nimport { Pencil } from 'lucide-react';\nimport { FormContext, DEFAULT_FORM_KEY, formRegistry, type FormContextValue } from './context';\nimport { Button } from '../ui/button';\n\ntype EditButtonProps = React.ComponentProps<typeof Button> & { formId?: string };\n\nfunction EditButton({ children, formId, ...props }: EditButtonProps) {\n const ctx = useContext(FormContext) as FormContextValue<any> | null;\n\n // If inside a Form, prefer using the form context\n if (ctx) {\n const { isEditing, setIsEditing } = ctx;\n if (isEditing) return null;\n return (\n <Button type=\"button\" onClick={() => setIsEditing?.(true)} {...props}>\n {children || (\n <>\n <Pencil className=\"h-4 w-4 mr-2\" />\n Edit Profile\n </>\n )}\n </Button>\n );\n }\n\n // Not inside a Form: render a button even if the form hasn't registered yet.\n const handleClick = () => {\n const key = formId ?? DEFAULT_FORM_KEY;\n\n // Try immediate call first\n const immediate = formRegistry.get(key);\n if (immediate) return immediate(true);\n\n // Otherwise, poll for a short time\n let attempts = 0;\n const maxAttempts = 20; // ~2s at 100ms intervals\n const interval = setInterval(() => {\n attempts += 1;\n const setter = formRegistry.get(key);\n if (setter) {\n setter(true);\n clearInterval(interval);\n } else if (attempts >= maxAttempts) {\n clearInterval(interval);\n }\n }, 100);\n };\n\n return (\n <Button type=\"button\" onClick={handleClick} {...props}>\n {children || (\n <>\n <Pencil className=\"h-4 w-4 mr-2\" />\n Edit Profile\n </>\n )}\n </Button>\n );\n}\n\nexport default EditButton;\n","'use client';\n\nimport { X } from 'lucide-react';\nimport { useFormCtx } from './use-form-ctx';\nimport { Button } from '../ui/button';\n\nfunction CancelButton({ children, ...props }: React.ComponentProps<typeof Button>) {\n const { isEditing, setIsEditing, reset } = useFormCtx();\n\n if (!isEditing) return null;\n\n return (\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => {\n reset();\n setIsEditing?.(false);\n }}\n {...props}\n >\n {children || (\n <>\n <X className=\"h-4 w-4 mr-2\" />\n Cancel\n </>\n )}\n </Button>\n );\n}\n\nexport default CancelButton;\n","import type { ReactNode, ComponentType } from 'react';\nimport { cn } from '@/lib/utils';\n\ntype LinkFieldProps = {\n label?: string;\n link: string;\n LinkComponent?: ComponentType<{ href: string; className?: string; children: ReactNode }>;\n className?: string;\n};\n\nfunction LinkField({ label, link, LinkComponent, className }: LinkFieldProps) {\n // Use provided Link component or fallback to anchor tag\n const LinkTag = LinkComponent || 'a';\n const linkProps = { href: link };\n\n return (\n <LinkTag \n {...linkProps} \n className={cn(\"text-sm text-primary hover:underline\", className)}\n >\n {label}\n </LinkTag>\n );\n}\n\nexport default LinkField;\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\ntype FieldGroupProps = {\n children: ReactNode;\n className?: string;\n title?: string;\n};\n\nfunction FieldGroup({ children, className, title }: FieldGroupProps) {\n return (\n <div className={cn(\"space-y-4\", className)}>\n {title && <h3 className=\"text-lg font-medium\">{title}</h3>}\n {children}\n </div>\n );\n}\n\nexport default FieldGroup;\n","import Root from \"./root\";\nimport Field from \"./field\";\nimport InputField from \"./input-field\";\nimport PasswordField from \"./password-field\";\nimport TextareaField from \"./textarea-field\";\nimport SelectField from \"./select-field\";\nimport CheckboxField from \"./checkbox-field\";\nimport DateField from \"./date-field\";\nimport FileField from \"./file-field\";\nimport ProfilePictureField from \"./profile-picture-field\";\nimport Submit from \"./submit\";\nimport EditButton from \"./edit-button\";\nimport CancelButton from \"./cancel-button\";\nimport LinkField from \"./link-field\";\nimport FieldGroup from \"./field-group\";\n\nconst Form = Object.assign(Root, {\n Root,\n Field,\n InputField,\n PasswordField,\n TextareaField,\n SelectField,\n CheckboxField,\n DateField,\n FileField,\n ProfilePictureField,\n Submit,\n EditButton,\n CancelButton,\n Group: FieldGroup,\n LinkField,\n});\n\nexport default Form;\n\n// Export individual components for tree-shaking\nexport {\n Root,\n Field,\n InputField,\n PasswordField,\n TextareaField,\n SelectField,\n CheckboxField,\n DateField,\n FileField,\n ProfilePictureField,\n Submit,\n EditButton,\n CancelButton,\n FieldGroup,\n LinkField,\n};\n","'use client';\n\nimport { createContext, useContext } from 'react';\nimport type { Table as ReactTable } from '@tanstack/react-table';\n\nexport type ViewMode = 'table' | 'grid';\n\nexport interface FilterOption {\n id: string;\n label: string;\n options: { value: string; label: string }[];\n placeholder?: string;\n multiSelect?: boolean;\n}\n\nexport interface DataTableContextValue<TData = any> {\n table: ReactTable<TData>;\n viewMode: ViewMode;\n setViewMode: (mode: ViewMode) => void;\n filters: FilterOption[];\n activeFilters: Record<string, string | string[]>;\n setActiveFilters: React.Dispatch<React.SetStateAction<Record<string, string | string[]>>>;\n}\n\nexport const DataTableContext = createContext<DataTableContextValue | null>(null);\n\nexport function useDataTable<TData = any>() {\n const context = useContext(DataTableContext);\n if (!context) {\n throw new Error('DataTable components must be used within DataTable.Root');\n }\n return context as DataTableContextValue<TData>;\n}\n","'use client';\n\nimport { useState, useMemo } from 'react';\nimport {\n useReactTable,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type ColumnDef,\n type SortingState,\n type ColumnFiltersState,\n type VisibilityState,\n} from '@tanstack/react-table';\nimport { DataTableContext, type ViewMode, type FilterOption } from './context';\n\ninterface RootProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filters?: FilterOption[];\n defaultViewMode?: ViewMode;\n viewMode?: ViewMode;\n onViewModeChange?: (mode: ViewMode) => void;\n defaultPageSize?: number;\n children: React.ReactNode;\n}\n\nexport function useViewMode(defaultMode: ViewMode = 'table') {\n const [viewMode, setViewMode] = useState<ViewMode>(defaultMode);\n return { viewMode, setViewMode };\n}\n\nfunction Root<TData, TValue>({\n columns,\n data,\n filters = [],\n defaultViewMode = 'table',\n viewMode: controlledViewMode,\n onViewModeChange: controlledOnViewModeChange,\n defaultPageSize = 10,\n children,\n}: RootProps<TData, TValue>) {\n const [internalViewMode, setInternalViewMode] = useState<ViewMode>(defaultViewMode);\n const [sorting, setSorting] = useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n const [columnVisibility, setColumnVisibility] = useState<VisibilityState>({});\n const [globalFilter, setGlobalFilter] = useState('');\n const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: defaultPageSize });\n const [activeFilters, setActiveFilters] = useState<Record<string, string | string[]>>({});\n\n const isControlled = controlledViewMode !== undefined && controlledOnViewModeChange !== undefined;\n const viewMode = isControlled ? controlledViewMode : internalViewMode;\n const setViewMode = isControlled ? controlledOnViewModeChange : setInternalViewMode;\n\n // Apply custom filters to data\n const filteredData = useMemo(() => {\n if (Object.keys(activeFilters).length === 0) return data;\n\n return data.filter((row: TData) => {\n return Object.entries(activeFilters).every(([filterId, filterValue]) => {\n if (!filterValue || (Array.isArray(filterValue) && filterValue.length === 0)) {\n return true;\n }\n\n const rowValue = (row as Record<string, unknown>)[filterId];\n if (Array.isArray(filterValue)) {\n return filterValue.includes(String(rowValue));\n }\n return String(rowValue) === String(filterValue);\n });\n });\n }, [data, activeFilters]);\n\n const table = useReactTable({\n data: filteredData,\n columns,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n globalFilter,\n pagination,\n },\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n onColumnVisibilityChange: setColumnVisibility,\n onGlobalFilterChange: setGlobalFilter,\n onPaginationChange: setPagination,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n });\n\n return (\n <DataTableContext.Provider\n value={{\n table,\n viewMode,\n setViewMode,\n filters,\n activeFilters,\n setActiveFilters,\n }}\n >\n <div className=\"space-y-4\">{children}</div>\n </DataTableContext.Provider>\n );\n}\n\nexport default Root;\n","import { LayoutGrid, Table as TableIcon } from 'lucide-react';\nimport { Button } from '../ui/button';\nimport { useDataTable, ViewMode } from './context';\n\nexport interface ViewOptionsProps {\n viewMode?: ViewMode;\n onViewModeChange?: (mode: ViewMode) => void;\n}\n\nexport function ViewOptions({ viewMode: propViewMode, onViewModeChange: propOnViewModeChange }: ViewOptionsProps) {\n // Try to get context, but don't error if it's missing (in case this is used outside Root with props)\n let contextStr;\n try {\n contextStr = useDataTable();\n } catch (e) {\n // Ignore error if context is missing\n }\n\n const mode = propViewMode ?? contextStr?.viewMode ?? 'table';\n const setMode = propOnViewModeChange ?? contextStr?.setViewMode ?? (() => { });\n\n return (\n <div className=\"flex items-center border rounded-md bg-background\">\n <Button\n variant={mode === 'table' ? 'secondary' : 'ghost'}\n size=\"sm\"\n onClick={() => setMode('table')}\n className=\"rounded-r-none h-8 px-2 lg:px-3\"\n aria-label=\"Switch to table view\"\n >\n <TableIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={mode === 'grid' ? 'secondary' : 'ghost'}\n size=\"sm\"\n onClick={() => setMode('grid')}\n className=\"rounded-l-none h-8 px-2 lg:px-3\"\n aria-label=\"Switch to grid view\"\n >\n <LayoutGrid className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}\n\nexport default ViewOptions;\n","'use client';\n\nimport { Input } from '../ui/input';\nimport { Button } from '../ui/button';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select';\nimport { Popover, PopoverContent, PopoverTrigger } from '../ui/popover';\nimport { LayoutGrid, Table as TableIcon, SlidersHorizontal, Eye } from 'lucide-react';\nimport { useDataTable } from './context';\nimport { Checkbox } from '../ui/checkbox';\nimport { ViewOptions } from './view-options';\n\ninterface ToolbarProps {\n viewOptions?: React.ReactNode;\n}\n\nexport function Toolbar({ viewOptions }: ToolbarProps = {}) {\n const { table, filters, activeFilters, setActiveFilters } = useDataTable();\n\n const handleFilterChange = (filterId: string, value: string) => {\n setActiveFilters((prev) => ({\n ...prev,\n [filterId]: value === 'all' ? '' : value,\n }));\n };\n\n const handleMultiFilterToggle = (filterId: string, value: string) => {\n setActiveFilters((prev) => {\n const current = prev[filterId] as string[] | undefined;\n if (!current || !Array.isArray(current)) {\n return { ...prev, [filterId]: [value] };\n }\n const newValues = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value];\n return { ...prev, [filterId]: newValues };\n });\n };\n\n return (\n <div className=\"space-y-4 py-4\">\n {/* Row 1: Search */}\n <div className=\"w-full\">\n <Input\n placeholder=\"Search...\"\n value={table.getState().globalFilter ?? ''}\n onChange={(e) => table.setGlobalFilter(e.target.value)}\n className=\"w-full max-w-sm\"\n />\n </div>\n\n {/* Row 2: Filters & Controls */}\n <div className=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-4\">\n {/* Left side: Filters */}\n <div className=\"flex items-center gap-2 flex-wrap flex-1\">\n {filters.map((filter) => (\n <div key={filter.id}>\n {filter.multiSelect ? (\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\n <SlidersHorizontal className=\"h-4 w-4 mr-2\" />\n {filter.label}\n {activeFilters[filter.id] && (Array.isArray(activeFilters[filter.id]) ? (activeFilters[filter.id].length > 0) : true) && (\n <span className=\"ml-1 rounded-sm bg-primary px-1 text-xs text-primary-foreground\">\n {Array.isArray(activeFilters[filter.id]) ? activeFilters[filter.id].length : 1}\n </span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n <div className=\"p-1\">\n {filter.options.map((option) => (\n <div\n key={option.value}\n className=\"flex items-center space-x-2 rounded-sm px-2 py-1.5 hover:bg-accent cursor-pointer\"\n onClick={() => handleMultiFilterToggle(filter.id, option.value)}\n >\n <Checkbox\n id={`${filter.id}-${option.value}`}\n checked={\n Array.isArray(activeFilters[filter.id]) &&\n (activeFilters[filter.id] as string[]).includes(option.value)\n }\n />\n <label\n htmlFor={`${filter.id}-${option.value}`}\n className=\"text-sm cursor-pointer flex-1\"\n >\n {option.label}\n </label>\n </div>\n ))}\n {activeFilters[filter.id] && (Array.isArray(activeFilters[filter.id]) ? activeFilters[filter.id].length > 0 : false) && (\n <>\n <div className=\"h-px bg-border my-1\" />\n <div\n className=\"px-2 py-1.5 text-center text-sm cursor-pointer hover:bg-accent rounded-sm\"\n onClick={() => setActiveFilters(prev => ({ ...prev, [filter.id]: [] }))}\n >\n Clear filters\n </div>\n </>\n )}\n </div>\n </PopoverContent>\n </Popover>\n ) : (\n <Select\n value={(activeFilters[filter.id] as string) || 'all'}\n onValueChange={(value: string) => handleFilterChange(filter.id, value)}\n >\n <SelectTrigger className=\"h-8 w-[150px] border-dashed\">\n <SelectValue placeholder={filter.placeholder || filter.label} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All {filter.label}</SelectItem>\n {filter.options.map((option) => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n )}\n </div>\n ))}\n\n {/* Column Visibility */}\n <Popover>\n <PopoverTrigger asChild>\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 ml-auto sm:ml-0\">\n <Eye className=\"h-4 w-4 mr-2\" />\n Columns\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-56\" align=\"end\">\n <div className=\"space-y-2\">\n <h4 className=\"font-medium text-sm\">Toggle Columns</h4>\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => (\n <div key={column.id} className=\"flex items-center space-x-2\">\n <Checkbox\n id={column.id}\n checked={column.getIsVisible()}\n onCheckedChange={(value: boolean) => column.toggleVisibility(!!value)}\n />\n <label htmlFor={column.id} className=\"text-sm cursor-pointer\">\n {column.id}\n </label>\n </div>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </div>\n\n {/* Right side: View Toggle and Rows per page */}\n <div className=\"flex items-center gap-2\">\n {viewOptions ? viewOptions : <ViewOptions />}\n\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground whitespace-nowrap hidden sm:inline-block\">Rows</label>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(value: string) => table.setPageSize(Number(value))}\n >\n <SelectTrigger className=\"w-16 h-8\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[10, 20, 30, 40, 50].map((size) => (\n <SelectItem key={size} value={String(size)}>\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default Toolbar;\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","'use client';\n\nimport { flexRender } from '@tanstack/react-table';\nimport { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '../ui/table';\nimport { ArrowUpDown, ArrowUp, ArrowDown } from 'lucide-react';\nimport { useDataTable } from './context';\n\nexport function TableView() {\n const { table } = useDataTable();\n\n return (\n <div className=\"overflow-hidden rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const canSort = header.column.getCanSort();\n const sortState = header.column.getIsSorted();\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <button\n className=\"flex items-center gap-2\"\n onClick={() => canSort && header.column.toggleSorting()}\n >\n {flexRender(header.column.columnDef.header, header.getContext())}\n {canSort && (\n <span className=\"ml-2\">\n {sortState === 'asc' ? (\n <ArrowUp className=\"h-3 w-3\" />\n ) : sortState === 'desc' ? (\n <ArrowDown className=\"h-3 w-3\" />\n ) : (\n <ArrowUpDown className=\"h-3 w-3 opacity-50\" />\n )}\n </span>\n )}\n </button>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow 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={table.getAllColumns().length} className=\"h-24 text-center\">\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n );\n}\n\nexport default TableView;\n","'use client';\n\nimport { useDataTable } from './context';\n\ninterface GridViewProps<TData> {\n renderCard?: (item: TData, index: number) => React.ReactNode;\n columns?: number;\n gap?: number;\n}\n\nexport function GridView<TData>({ renderCard, columns = 3, gap = 16 }: GridViewProps<TData>) {\n const { table } = useDataTable<TData>();\n const rows = table.getRowModel().rows;\n\n if (!rows.length) {\n return (\n <div className=\"flex items-center justify-center h-64 text-muted-foreground\">\n No results.\n </div>\n );\n }\n\n return (\n <div\n className=\"grid\"\n style={{\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n gap: `${gap}px`,\n }}\n >\n {rows.map((row, index) => {\n const item = row.original;\n return (\n <div key={row.id} className=\"rounded-lg border bg-card p-4 shadow-sm\">\n {renderCard ? renderCard(item, index) : <DefaultCard item={item} />}\n </div>\n );\n })}\n </div>\n );\n}\n\nfunction DefaultCard({ item }: { item: unknown }) {\n if (typeof item !== 'object' || item === null) return null;\n \n return (\n <div className=\"space-y-2\">\n {Object.entries(item as Record<string, unknown>).map(([key, value]) => (\n <div key={key}>\n <span className=\"text-sm font-medium\">{key}: </span>\n <span className=\"text-sm text-muted-foreground\">{String(value)}</span>\n </div>\n ))}\n </div>\n );\n}\n\nexport default GridView;\n","'use client';\n\nimport { useDataTable } from './context';\nimport TableView from './table-view';\nimport GridView from './grid-view';\n\ninterface ContentProps<TData> {\n renderCard?: (item: TData, index: number) => React.ReactNode;\n gridColumns?: number;\n gridGap?: number;\n}\n\nexport function Content<TData>({ renderCard, gridColumns, gridGap }: ContentProps<TData>) {\n const { viewMode } = useDataTable<TData>();\n\n if (viewMode === 'grid') {\n return <GridView renderCard={renderCard} columns={gridColumns} gap={gridGap} />;\n }\n\n return <TableView />;\n}\n\nexport default Content;\n","'use client';\n\nimport { Button } from '../ui/button';\nimport { useDataTable } from './context';\n\nexport function Pagination() {\n const { table } = useDataTable();\n\n return (\n <div className=\"flex items-center justify-between py-4\">\n <div className=\"text-sm text-muted-foreground\">\n Showing{' '}\n {table.getState().pagination.pageIndex * table.getState().pagination.pageSize + 1} -{' '}\n {Math.min(\n (table.getState().pagination.pageIndex + 1) * table.getState().pagination.pageSize,\n table.getFilteredRowModel().rows.length\n )}{' '}\n of {table.getFilteredRowModel().rows.length}\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Prev\n </Button>\n <div className=\"px-3 text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of {table.getPageCount()}\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n );\n}\n\nexport default Pagination;\n","import Root from './root';\nimport Toolbar from './toolbar';\nimport Content from './content';\nimport TableView from './table-view';\nimport GridView from './grid-view';\nimport Pagination from './pagination';\nimport ViewOptions from './view-options';\n\n// Export compound component\nconst DataTable = Object.assign(Root, {\n Root,\n Toolbar,\n Content,\n TableView,\n GridView,\n Pagination,\n ViewOptions,\n});\n\nexport default DataTable;\n\n// Export individual components for tree-shaking\nexport { Root, Toolbar, Content, TableView, GridView, Pagination, ViewOptions };\nexport { useViewMode } from './root';\n\n// Export types\nexport type { ViewMode, FilterOption } from './context';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/lib/utils.ts","../src/components/data-table/context.tsx","../src/components/data-table/view-mode-hook.tsx","../src/components/data-table/root.tsx","../src/components/ui/input.tsx","../src/components/ui/select.tsx","../src/components/data-table/toolbar.tsx","../src/components/ui/table.tsx","../src/components/data-table/content.tsx","../node_modules/@radix-ui/react-compose-refs/src/compose-refs.tsx","../node_modules/@radix-ui/react-slot/src/slot.tsx","../src/components/ui/button.tsx","../src/components/data-table/pagination.tsx","../src/components/data-table/view-options.tsx"],"names":["useState","jsx","jsxs","Content","Slot","props"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Table } from \"@tanstack/react-table\";\nimport { createContext, useContext } from \"react\";\n\n// Filter option type for configurable filters\nexport interface FilterOption {\n id: string; // Column accessor key to filter on\n label: string; // Display label for the filter\n options: { value: string; label: string }[]; // Available filter options\n placeholder?: string; // Placeholder text\n}\n\n// View mode type\nexport type ViewMode = \"table\" | \"grid\";\n\ninterface DataTableContextValue<TData> {\n table: Table<TData>;\n viewMode: ViewMode;\n setViewMode: (mode: ViewMode) => void;\n filters: FilterOption[];\n showFilters: boolean;\n globalFilter: string;\n setGlobalFilter: (value: string) => void;\n}\n\n// Create context with generic type\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst DataTableContext = createContext<DataTableContextValue<any> | null>(null);\n\nexport function useDataTableContext<TData>() {\n const context = useContext(DataTableContext);\n if (!context) {\n throw new Error(\"useDataTableContext must be used within a DataTableRoot\");\n }\n return context as DataTableContextValue<TData>;\n}\n\nexport { DataTableContext };\n","\"use client\";\n\nimport { useState } from \"react\";\nimport { ViewMode } from \"./context\";\n\n// Hook to manage view mode state - can be used in parent component or inside Root\nexport function useViewMode(defaultMode: ViewMode = \"table\") {\n const [viewMode, setViewMode] = useState<ViewMode>(defaultMode);\n return { viewMode, setViewMode };\n}\n","\"use client\";\n\nimport {\n ColumnDef,\n ColumnFiltersState,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n SortingState,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { useState } from \"react\";\nimport { DataTableContext, FilterOption, ViewMode } from \"./context\";\n\ninterface RootProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filters?: FilterOption[];\n defaultViewMode?: ViewMode;\n showFilters?: boolean;\n children: React.ReactNode;\n}\n\nexport function Root<TData, TValue>({\n columns,\n data,\n filters = [],\n defaultViewMode = \"table\",\n showFilters = true,\n children,\n}: RootProps<TData, TValue>) {\n const [globalFilter, setGlobalFilter] = useState(\"\");\n const [pagination, setPagination] = useState({ pageIndex: 0, pageSize: 10 });\n const [sorting, setSorting] = useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n const [viewMode, setViewMode] = useState<ViewMode>(defaultViewMode);\n\n const table = useReactTable({\n data,\n columns,\n state: {\n globalFilter,\n pagination,\n sorting,\n columnFilters,\n },\n onGlobalFilterChange: setGlobalFilter,\n onPaginationChange: setPagination,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n });\n\n return (\n <DataTableContext.Provider\n value={{\n table,\n viewMode,\n setViewMode,\n filters,\n showFilters,\n globalFilter,\n setGlobalFilter,\n }}\n >\n <div className=\"space-y-4\">{children}</div>\n </DataTableContext.Provider>\n );\n}\n\n// Export hook for usage in consumer components if needed\nexport { useViewMode } from \"./view-mode-hook\";\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport { Input }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Select({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Root>) {\n return <SelectPrimitive.Root data-slot=\"select\" {...props} />\n}\n\nfunction SelectGroup({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Group>) {\n return <SelectPrimitive.Group data-slot=\"select-group\" {...props} />\n}\n\nfunction SelectValue({\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Value>) {\n return <SelectPrimitive.Value data-slot=\"select-value\" {...props} />\n}\n\nfunction SelectTrigger({\n className,\n size = \"default\",\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Trigger> & {\n size?: \"sm\" | \"default\"\n}) {\n return (\n <SelectPrimitive.Trigger\n data-slot=\"select-trigger\"\n data-size={size}\n className={cn(\n \"border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n )\n}\n\nfunction SelectContent({\n className,\n children,\n position = \"item-aligned\",\n align = \"center\",\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Content>) {\n return (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n data-slot=\"select-content\"\n className={cn(\n \"bg-popover text-popover-foreground 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 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n align={align}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n )\n}\n\nfunction SelectLabel({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Label>) {\n return (\n <SelectPrimitive.Label\n data-slot=\"select-label\"\n className={cn(\"text-muted-foreground px-2 py-1.5 text-xs\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Item>) {\n return (\n <SelectPrimitive.Item\n data-slot=\"select-item\"\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2\",\n className\n )}\n {...props}\n >\n <span\n data-slot=\"select-item-indicator\"\n className=\"absolute right-2 flex size-3.5 items-center justify-center\"\n >\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n )\n}\n\nfunction SelectSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.Separator>) {\n return (\n <SelectPrimitive.Separator\n data-slot=\"select-separator\"\n className={cn(\"bg-border pointer-events-none -mx-1 my-1 h-px\", className)}\n {...props}\n />\n )\n}\n\nfunction SelectScrollUpButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollUpButton>) {\n return (\n <SelectPrimitive.ScrollUpButton\n data-slot=\"select-scroll-up-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon className=\"size-4\" />\n </SelectPrimitive.ScrollUpButton>\n )\n}\n\nfunction SelectScrollDownButton({\n className,\n ...props\n}: React.ComponentProps<typeof SelectPrimitive.ScrollDownButton>) {\n return (\n <SelectPrimitive.ScrollDownButton\n data-slot=\"select-scroll-down-button\"\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon className=\"size-4\" />\n </SelectPrimitive.ScrollDownButton>\n )\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n}\n","\"use client\";\n\nimport { useDataTableContext } from \"./context\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { Filter } from \"lucide-react\";\nimport { useState } from \"react\";\n\nexport function Toolbar() {\n const { filters, showFilters, globalFilter, setGlobalFilter, table } =\n useDataTableContext();\n\n // Track active filter values to update the table column filters\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const [activeFilters, setActiveFilters] = useState<Record<string, string>>({});\n\n const handleFilterChange = (filterId: string, value: string) => {\n setActiveFilters((prev) => ({ ...prev, [filterId]: value }));\n\n if (value === \"all\" || value === \"\") {\n table.getColumn(filterId)?.setFilterValue(undefined);\n } else {\n table.getColumn(filterId)?.setFilterValue(value);\n }\n };\n\n const hasFilters = filters && filters.length > 0;\n\n return (\n <div className=\"mb-4 flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2\">\n <div className=\"flex items-center gap-2 flex-1 flex-wrap\">\n <div className=\"max-w-sm w-full sm:w-auto\">\n <Input\n placeholder=\"Search...\"\n value={globalFilter ?? \"\"}\n onChange={(e) => setGlobalFilter(e.target.value)}\n className=\"w-full\"\n />\n </div>\n {hasFilters &&\n showFilters &&\n filters.map((filter) => (\n <Select\n key={filter.id}\n onValueChange={(val) => handleFilterChange(filter.id, val)}\n >\n <SelectTrigger className=\"h-9 cursor-pointer w-[140px] rounded-md border border-input bg-background px-2 text-sm\">\n <Filter className=\"h-4 w-4 mr-2 text-muted-foreground\" />\n <SelectValue placeholder={filter.label} />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"all\">All {filter.label}</SelectItem>\n {filter.options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n ))}\n </div>\n <div className=\"flex items-center gap-2\">\n <label className=\"text-sm text-muted-foreground hidden sm:block\">Rows</label>\n <Select\n value={String(table.getState().pagination.pageSize)}\n onValueChange={(val) => {\n table.setPageSize(Number(val));\n }}\n >\n <SelectTrigger className=\"h-8 cursor-pointer rounded-md border border-input bg-background px-2 text-sm w-[70px]\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {[10, 20, 30, 40, 50].map((s) => (\n <SelectItem key={s} value={String(s)}>\n {s}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n </div>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <div\n data-slot=\"table-container\"\n className=\"relative w-full overflow-x-auto\"\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\n \"hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\";\n\nimport { useDataTableContext } from \"./context\";\nimport { flexRender } from \"@tanstack/react-table\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../ui/table\";\nimport { ArrowDown, ArrowUp, ArrowUpDown } from \"lucide-react\";\n\ninterface ContentProps<TData> {\n renderCard?: (item: TData, index: number) => React.ReactNode;\n}\n\nexport function Content<TData>({ renderCard }: ContentProps<TData>) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const { table, viewMode } = useDataTableContext<any>();\n const columns = table.getAllColumns(); // Or getVisibleLeafColumns()\n\n if (viewMode === \"grid\") {\n // Grid View\n return (\n <div className=\"grid gap-4 grid-cols-1 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n {table.getRowModel().rows.map((row, index) => (\n <div key={row.id}>\n {renderCard ? renderCard(row.original, index) : JSON.stringify(row.original)}\n </div>\n ))}\n {table.getRowModel().rows.length === 0 && (\n <div className=\"col-span-full text-center py-8 text-muted-foreground\">\n No results.\n </div>\n )}\n </div>\n );\n }\n\n // Table View\n return (\n <div className=\"overflow-hidden rounded-md border\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n const canSort = header.column.getCanSort();\n const sortState = header.column.getIsSorted();\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder ? null : (\n <button\n className=\"flex items-center gap-2\"\n onClick={header.column.getToggleSortingHandler()}\n disabled={!canSort}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {canSort && (\n <span className=\"ml-2\">\n {sortState === \"asc\" ? (\n <ArrowUp className=\"h-3 w-3\" />\n ) : sortState === \"desc\" ? (\n <ArrowDown className=\"h-3 w-3\" />\n ) : (\n <ArrowUpDown className=\"h-3 w-3 opacity-50\" />\n )}\n </span>\n )}\n </button>\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n );\n}\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n return ref(value);\n } else if (ref !== null && ref !== undefined) {\n ref.current = value;\n }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == 'function') {\n hasCleanup = true;\n }\n return cleanup;\n });\n\n // React <19 will log an error to the console if a callback ref returns a\n // value. We don't use ref cleanups internally so this will only happen if a\n // user's ref callback returns a value, which we only expect if they are\n // using the cleanup functionality added in React 19.\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == 'function') {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]): React.RefCallback<T> {\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n children?: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlot(ownerName: string) {\n const SlotClone = createSlotClone(ownerName);\n const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n\n if (slottable) {\n // the new element to render is the one passed as a child of `Slottable`\n const newElement = slottable.props.children;\n\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n // because the new element will be the one rendered, we are only interested\n // in grabbing its children (`newElement.props.children`)\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement)\n ? (newElement.props as { children: React.ReactNode }).children\n : null;\n } else {\n return child;\n }\n });\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {React.isValidElement(newElement)\n ? React.cloneElement(newElement, undefined, newChildren)\n : null}\n </SlotClone>\n );\n }\n\n return (\n <SlotClone {...slotProps} ref={forwardedRef}>\n {children}\n </SlotClone>\n );\n });\n\n Slot.displayName = `${ownerName}.Slot`;\n return Slot;\n}\n\nconst Slot = createSlot('Slot');\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n children: React.ReactNode;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ function createSlotClone(ownerName: string) {\n const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props = mergeProps(slotProps, children.props as AnyProps);\n // do not pass ref to React.Fragment for React 19 compatibility\n if (children.type !== React.Fragment) {\n props.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props);\n }\n\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst SLOTTABLE_IDENTIFIER = Symbol('radix.slottable');\n\ninterface SlottableProps {\n children: React.ReactNode;\n}\n\ninterface SlottableComponent extends React.FC<SlottableProps> {\n __radixId: symbol;\n}\n\n/* @__NO_SIDE_EFFECTS__ */ export function createSlottable(ownerName: string) {\n const Slottable: SlottableComponent = ({ children }) => {\n return <>{children}</>;\n };\n Slottable.displayName = `${ownerName}.Slottable`;\n Slottable.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable;\n}\n\nconst Slottable = createSlottable('Slottable');\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(\n child: React.ReactNode\n): child is React.ReactElement<SlottableProps, typeof Slottable> {\n return (\n React.isValidElement(child) &&\n typeof child.type === 'function' &&\n '__radixId' in child.type &&\n child.type.__radixId === SLOTTABLE_IDENTIFIER\n );\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n // all child props should override\n const overrideProps = { ...childProps };\n\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n // if the handler exists on both, we compose them\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args: unknown[]) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n }\n // but if it exists only on the slot, we use only this one\n else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n }\n // if it's `style`, we merge them\n else if (propName === 'style') {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === 'className') {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n }\n }\n\n return { ...slotProps, ...overrideProps };\n}\n\n// Before React 19 accessing `element.props.ref` will throw a warning and suggest using `element.ref`\n// After React 19 accessing `element.ref` does the opposite.\n// https://github.com/facebook/react/pull/28348\n//\n// Access the ref using the method that doesn't yield a warning.\nfunction getElementRef(element: React.ReactElement) {\n // React <=18 in DEV\n let getter = Object.getOwnPropertyDescriptor(element.props, 'ref')?.get;\n let mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element as any).ref;\n }\n\n // React 19 in DEV\n getter = Object.getOwnPropertyDescriptor(element, 'ref')?.get;\n mayWarn = getter && 'isReactWarning' in getter && getter.isReactWarning;\n if (mayWarn) {\n return (element.props as { ref?: React.Ref<unknown> }).ref;\n }\n\n // Not DEV\n return (element.props as { ref?: React.Ref<unknown> }).ref || (element as any).ref;\n}\n\nexport {\n Slot,\n Slottable,\n //\n Slot as Root,\n};\nexport type { SlotProps };\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost:\n \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-sm\": \"size-8\",\n \"icon-lg\": \"size-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction Button({\n className,\n variant = \"default\",\n size = \"default\",\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean\n }) {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n data-slot=\"button\"\n data-variant={variant}\n data-size={size}\n className={cn(buttonVariants({ variant, size, className }))}\n {...props}\n />\n )\n}\n\nexport { Button, buttonVariants }\n","\"use client\";\n\nimport { useDataTableContext } from \"./context\";\nimport { Button } from \"../ui/button\";\n\nexport function Pagination() {\n const { table } = useDataTableContext();\n\n return (\n <div className=\"flex items-center justify-between py-4\">\n <div className=\"text-sm text-muted-foreground\">\n Showing{\" \"}\n {table.getState().pagination.pageIndex *\n table.getState().pagination.pageSize +\n 1}{\" \"}\n -{\" \"}\n {Math.min(\n (table.getState().pagination.pageIndex + 1) *\n table.getState().pagination.pageSize,\n table.getFilteredRowModel().rows.length\n )}{\" \"}\n of {table.getFilteredRowModel().rows.length}\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n Prev\n </Button>\n <div className=\"px-3 text-sm\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <Button\n variant=\"outline\"\n size=\"sm\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n Next\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport { useDataTableContext, ViewMode } from \"./context\";\nimport { Button } from \"../ui/button\";\nimport { LayoutGrid, TableIcon } from \"lucide-react\";\n\ninterface ViewOptionsProps {\n viewMode?: ViewMode;\n onViewModeChange?: (mode: ViewMode) => void;\n}\n\nexport function ViewOptions({\n viewMode: propViewMode,\n onViewModeChange: propOnViewModeChange,\n}: ViewOptionsProps) {\n // Can be controlled or use context\n const context = useDataTableContext();\n\n // Use props if provided (legacy/compat), otherwise use context\n const mode = propViewMode ?? context?.viewMode ?? \"table\";\n const onChange = propOnViewModeChange ?? context?.setViewMode;\n\n if (!onChange) return null;\n\n return (\n <div className=\"flex items-center border rounded-md\">\n <Button\n variant={mode === \"table\" ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"rounded-r-none px-3\"\n onClick={() => onChange(\"table\")}\n >\n <TableIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant={mode === \"grid\" ? \"secondary\" : \"ghost\"}\n size=\"sm\"\n className=\"rounded-l-none px-3\"\n onClick={() => onChange(\"grid\")}\n >\n <LayoutGrid className=\"h-4 w-4\" />\n </Button>\n </div>\n );\n}\n"]}
|
package/package.json
CHANGED