@elqnt/react 1.0.2 → 1.0.3
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/components/form-controls/icon.js +54 -3
- package/dist/components/form-controls/icon.js.map +1 -1
- package/dist/components/form-controls/icon.mjs +28 -3
- package/dist/components/form-controls/icon.mjs.map +1 -1
- package/dist/components/upload/upload-actions.js +147 -8
- package/dist/components/upload/upload-actions.js.map +1 -1
- package/dist/components/upload/upload-actions.mjs +118 -4
- package/dist/components/upload/upload-actions.mjs.map +1 -1
- package/dist/index.js +1414 -1201
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +626 -483
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-FLTEIMWJ.mjs +0 -36
- package/dist/chunk-FLTEIMWJ.mjs.map +0 -1
- package/dist/chunk-UXJQ7CBV.mjs +0 -122
- package/dist/chunk-UXJQ7CBV.mjs.map +0 -1
- package/dist/chunk-W4AIK44N.js +0 -122
- package/dist/chunk-W4AIK44N.js.map +0 -1
- package/dist/chunk-ZCBGKBZS.js +0 -36
- package/dist/chunk-ZCBGKBZS.js.map +0 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../components/ui/button.tsx","../components/ui/dialog.tsx","../components/ui/input.tsx","../components/ui/select.tsx","../components/entities/filter-dialog.tsx","../components/ui/badge.tsx","../components/form-controls/button.tsx","../components/form-controls/action-bar/back-button.tsx","../components/form-controls/action-bar/action-bar-button.tsx","../components/form-controls/action-bar/action-bar.tsx","../components/ui/alert.tsx","../components/form-controls/alert.tsx","../components/ui/avatar.tsx","../components/form-controls/avatar.tsx","../components/form-controls/breadcrumb.tsx","../components/ui/breadcrumb.tsx","../components/ui/card.tsx","../components/form-controls/card.tsx","../components/form-controls/checkbox.tsx","../components/ui/checkbox.tsx","../components/ui/form.tsx","../components/ui/label.tsx","../components/form-controls/combobox.tsx","../components/ui/command.tsx","../components/ui/popover.tsx","../components/form-controls/command.tsx","../components/form-controls/data-table.tsx","../components/ui/dropdown-menu.tsx","../components/ui/table.tsx","../components/form-controls/date-filter.tsx","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/date-fns/format.js","../components/ui/calendar.tsx","../components/form-controls/dialog.tsx","../components/ui/drawer.tsx","../components/ui/scroll-area.tsx","../components/form-controls/drawer.tsx","../components/form-controls/dropdown-menu.tsx","../components/form-controls/duration-input.tsx","../components/form-controls/filter-combobox.tsx","../components/ui/separator.tsx","../components/form-controls/form-combobox.tsx","../components/form-controls/form-layout.tsx","../components/form-controls/form-row.tsx","../components/ui/radio-group.tsx","../components/ui/sheet.tsx","../components/ui/textarea.tsx","../components/ui/tooltip.tsx","../components/ui/chart.tsx","../components/ui/slider.tsx","../components/form-controls/form-with-action-buttons.tsx","../components/form-controls/helpers.tsx","../components/form-controls/icon-button.tsx","../components/form-controls/input.tsx","../components/form-controls/knowledge-graph-word-cloud.tsx","../components/form-controls/layout/org-selector.tsx","../components/form-controls/layout/page-header.tsx","../components/form-controls/layout/left-nav.tsx","../components/form-controls/layout/profile-menu.tsx","../components/form-controls/multi-select.tsx","../components/form-controls/multi-step-process.tsx","../components/form-controls/popover.tsx","../components/form-controls/radio-group.tsx","../components/form-controls/scroll-area.tsx","../components/form-controls/select.tsx","../components/ui/collapsible.tsx","../components/ui/progress.tsx","../components/form-controls/setup-guide.tsx","../components/form-controls/sheet.tsx","../components/form-controls/tags-input.tsx","../components/form-controls/textarea.tsx","../components/form-controls/time-picker.tsx","../components/form-controls/tooltip.tsx","../components/form-controls/upload-widget.tsx","../components/general/markdown-renderer.tsx","../components/general/chat-loading.tsx","../components/layout/action-bar.tsx","../components/schema-fields/dropdown-field.tsx","../components/schema-fields/string-field.tsx","../components/schema-fields/string-multi-line-field.tsx","../components/schema-fields/text-field.tsx","../components/schema-fields/schema-field.tsx","../components/upload/upload-widget-v2.tsx","../hooks/use-file-upload.ts"],"sourcesContent":["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 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\"\nimport {\n CaretSortIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"@radix-ui/react-icons\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <CaretSortIcon className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\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 {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../ui/dialog\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport {\n useEntityDefinitionContext,\n useEntityRecordContext,\n EntityQuery,\n} from \"@elqnt/entity\";\n\nimport { Badge } from \"../ui/badge\";\nimport { cn } from \"../../lib/utils\";\nimport { Filter, Paintbrush, Plus, X, XCircle } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\ninterface FilterDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nexport interface FilterCondition {\n field: string;\n operator: string;\n value: any;\n}\n\nconst OPERATORS = {\n string: [\"eq\", \"ne\", \"contains\", \"startsWith\", \"endsWith\"],\n text: [\"contains\", \"startsWith\", \"endsWith\"],\n int: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n float: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n datetime: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n dropdown: [\"eq\", \"ne\", \"in\", \"nin\"],\n multiselect: [\"in\", \"nin\", \"contains\"],\n boolean: [\"eq\", \"ne\"],\n};\n\nconst OPERATOR_LABELS: Record<string, string> = {\n eq: \"Equals\",\n ne: \"Not equals\",\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n in: \"In\",\n nin: \"Not in\",\n contains: \"Contains\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n between: \"Between\",\n};\n\nconst DEFAULT_CONDITION: FilterCondition = {\n field: \"\",\n operator: \"\",\n value: \"\",\n};\n\nexport function FilterDialog({ open, onOpenChange }: FilterDialogProps) {\n const { selectedDefinition } = useEntityDefinitionContext();\n const { updateParams, params } = useEntityRecordContext();\n const [conditions, setConditions] = useState<FilterCondition[]>([\n DEFAULT_CONDITION,\n ]);\n const [hasActiveFilters, setHasActiveFilters] = useState(false);\n\n // Check if there are active filters in the params\n useEffect(() => {\n const hasFilters = params.filters && Object.keys(params.filters).length > 0;\n setHasActiveFilters(hasFilters);\n }, [params.filters]);\n\n const fields: any[] = [];\n\n const getOperatorsForField = (fieldType: string): string[] => {\n return OPERATORS[fieldType as keyof typeof OPERATORS] || OPERATORS.string;\n };\n\n const handleAddCondition = () => {\n setConditions([...conditions, { ...DEFAULT_CONDITION }]);\n };\n\n const handleRemoveCondition = (index: number) => {\n setConditions(conditions.filter((_, i) => i !== index));\n };\n\n const handleFieldChange = (index: number, fieldName: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n field: fieldName,\n operator: \"\",\n value: \"\",\n };\n setConditions(newConditions);\n };\n\n const handleOperatorChange = (index: number, operator: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n operator,\n };\n setConditions(newConditions);\n };\n\n const handleValueChange = (index: number, value: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n value,\n };\n setConditions(newConditions);\n };\n\n const handleClearFilters = () => {\n setConditions([{ ...DEFAULT_CONDITION }]);\n updateParams({ filters: {} });\n setHasActiveFilters(false);\n };\n\n const handleApplyFilters = () => {\n const validConditions = conditions.filter(\n (c) => c.field && c.operator && c.value\n );\n\n if (validConditions.length === 0) {\n updateParams({ filters: {} });\n setHasActiveFilters(false);\n onOpenChange(false);\n return;\n }\n\n const filters: Record<string, any> = {};\n\n validConditions.forEach(({ field, operator, value }) => {\n const fieldPath = `fields.${field}.valueString`;\n\n switch (operator) {\n case \"contains\":\n filters[fieldPath] = { $regex: value, $options: \"i\" };\n break;\n case \"startsWith\":\n filters[fieldPath] = { $regex: `^${value}`, $options: \"i\" };\n break;\n case \"endsWith\":\n filters[fieldPath] = { $regex: `${value}$`, $options: \"i\" };\n break;\n default:\n filters[fieldPath] = { [`$${operator}`]: value };\n }\n });\n\n const query: Partial<EntityQuery> = {\n filters:\n validConditions.length > 1\n ? { $and: Object.entries(filters).map(([k, v]) => ({ [k]: v })) }\n : filters,\n };\n\n updateParams(query);\n setHasActiveFilters(true);\n onOpenChange(false);\n };\n\n const getFieldByName = (fieldName: string): any | undefined => {\n return fields.find((f) => f.name === fieldName);\n };\n\n const activeFilterCount = conditions.filter(\n (c) => c.field && c.operator && c.value\n ).length;\n\n return (\n <>\n <div className=\"flex items-center\">\n <Button\n onClick={() => onOpenChange(true)}\n variant={hasActiveFilters ? \"secondary\" : \"outline\"}\n className={cn(\"relative group\", hasActiveFilters && \"rounded-r-none\")}\n >\n <Filter className=\"w-4 h-4 mr-2\" />\n Filter\n {activeFilterCount > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 bg-primary text-primary-foreground\"\n >\n {activeFilterCount}\n </Badge>\n )}\n </Button>\n {hasActiveFilters && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n onClick={handleClearFilters}\n className=\"text-muted-foreground -ml-2 rounded-l-none\"\n title=\"Clear filters\"\n >\n <Paintbrush className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl\">\n <DialogHeader>\n <div className=\"flex items-center justify-between\">\n <DialogTitle>\n Filter {selectedDefinition?.displayName}\n </DialogTitle>\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearFilters}\n className=\"text-muted-foreground hover:text-primary\"\n >\n <XCircle className=\"w-4 h-4 mr-2\" />\n Clear Filters\n </Button>\n )}\n </div>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {conditions.map((condition, index) => {\n const selectedField = getFieldByName(condition.field);\n const operators = selectedField\n ? getOperatorsForField(selectedField.type)\n : [];\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <Select\n value={condition.field}\n onValueChange={(value) => handleFieldChange(index, value)}\n >\n <SelectTrigger className=\"w-[200px]\">\n <SelectValue placeholder=\"Select field\" />\n </SelectTrigger>\n <SelectContent>\n {/* @ts-ignore */}\n {fields.map((field) => (\n <SelectItem key={field.name} value={field.name}>\n {field.displayName}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Select\n value={condition.operator}\n onValueChange={(value) =>\n handleOperatorChange(index, value)\n }\n disabled={!condition.field}\n >\n <SelectTrigger className=\"w-[200px]\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Input\n placeholder=\"Value\"\n value={condition.value}\n onChange={(e) => handleValueChange(index, e.target.value)}\n disabled={!condition.operator}\n className=\"flex-1\"\n />\n\n {conditions.length > 1 && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => handleRemoveCondition(index)}\n className=\"text-muted-foreground hover:text-destructive\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n );\n })}\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={handleAddCondition}\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Condition\n </Button>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button onClick={handleApplyFilters}>Apply Filters</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\";\nimport {\n Button as ShadcnButton,\n ButtonProps as ShadcnButtonProps,\n} from \"../ui/button\";\n\nexport type ButtonProps = {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n className?: string;\n onClick?: () => void;\n} & ShadcnButtonProps;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, variant = \"default\", className = \"\", type, ...props }, ref) => {\n const buttonClass = `${variant === \"secondary\" ? \"button-secondary\" : \"\"} ${className}`;\n\n return (\n <ShadcnButton\n className={buttonClass}\n variant={variant}\n type={type}\n ref={ref}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { Button } from \"../button\";\n\nexport function BackButton() {\n return <Button onClick={() => {}}>Back</Button>;\n}\n","import { icons } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { Icon } from \"../icon\";\n\ntype ActionBarButtonProps = {\n label: string;\n icon: keyof typeof icons;\n onClick: () => void;\n};\nexport function ActionBarButton({\n label,\n onClick,\n icon,\n}: ActionBarButtonProps) {\n return (\n <Button onClick={onClick} className=\"flex items-center gap-2\">\n <Icon name={icon} size={20} strokeWidth={1} />\n {label}\n </Button>\n );\n}\n","import { Icon } from \"../icon\";\n\nexport type Actions = {\n label: string;\n icon: any;\n onClick: () => void;\n};\n\nexport type ActionBarProps = {\n actions: Actions[];\n};\n\nexport const ActionBar = ({ actions }: ActionBarProps) => {\n function backHandler() {\n window.history.back();\n }\n\n return (\n <div className=\"flex items-center justify-center gap-4 bg-primary text-primary-foreground shadow rounded-md text-sm font-medium w-fit divide-solid divide-x\">\n <div className=\"cursor-pointer pl-4 py-2\" onClick={backHandler}>\n <Icon name=\"ArrowBigLeft\" />\n </div>\n\n {actions.map((item) => (\n <div\n key={item.label}\n className=\"flex items-center justify-center gap-2 cursor-pointer py-2 px-4\"\n onClick={item.onClick}\n >\n <Icon name={item.icon} />\n <p>{item.label}</p>\n </div>\n ))}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { Alert as ShadcnAlert, AlertDescription, AlertTitle } from \"../ui/alert\";\nimport { RocketIcon } from \"@radix-ui/react-icons\";\n\nexport type AlertProps = {\n title: string;\n description: string;\n};\n\nexport const Alert = ({ title, description }: AlertProps) => {\n return (\n <ShadcnAlert>\n <RocketIcon className=\"h-4 w-4\" />\n <AlertTitle>{title}</AlertTitle>\n <AlertDescription>{description}</AlertDescription>\n </ShadcnAlert>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import {\n Avatar as ShadcnAvatar,\n AvatarFallback as ShadcnAvatarFallback,\n AvatarImage as ShadcnAvatarImage,\n} from \"../ui/avatar\";\n\nexport type AvatarProps = {\n image: string;\n fallback: string;\n};\n\nexport const Avatar = ({ image, fallback }: AvatarProps) => {\n return (\n <ShadcnAvatar className=\"w-fit\">\n <ShadcnAvatarImage src={image} />\n <ShadcnAvatarFallback>{fallback}</ShadcnAvatarFallback>\n </ShadcnAvatar>\n );\n};\n","import { Fragment } from \"react\";\nimport {\n Breadcrumb as ShadcnBreadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"../ui/breadcrumb\";\n\nexport type BreadcrumbItem = {\n label: string;\n href: string;\n};\n\nexport type BreadcrumbProps = { breadcrumb: BreadcrumbItem[] };\n\nexport const Breadcrumb = ({ breadcrumb }: BreadcrumbProps) => {\n return (\n <ShadcnBreadcrumb className=\"p-4\">\n <BreadcrumbList>\n {breadcrumb.map(({ href, label }, index) => (\n <Fragment key={index}>\n <BreadcrumbItem>\n {index !== breadcrumb.length - 1 ? (\n <BreadcrumbLink className=\"cursor-pointer\" href={href}>\n {label.replace(/-/g, \" \")}\n </BreadcrumbLink>\n ) : (\n <BreadcrumbPage>{label.replace(/-/g, \" \")}</BreadcrumbPage>\n )}\n </BreadcrumbItem>\n {index < breadcrumb.length - 1 && <BreadcrumbSeparator />}\n </Fragment>\n ))}\n </BreadcrumbList>\n </ShadcnBreadcrumb>\n );\n};\n","import * as React from \"react\"\nimport { ChevronRightIcon, DotsHorizontalIcon } from \"@radix-ui/react-icons\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <DotsHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import {\n Card as ShadcnCard,\n CardContent as ShadcnCardContent,\n CardDescription as ShadcnCardDescription,\n CardFooter as ShadcnCardFooter,\n CardHeader as ShadcnCardHeader,\n CardTitle as ShadcnCardTitle,\n} from \"../ui/card\";\n\nexport type CardProps = {\n title: string;\n description?: string;\n content: string;\n footer?: string;\n};\n\nexport const Card = ({ title, description, content, footer }: CardProps) => {\n return (\n <ShadcnCard>\n <ShadcnCardHeader>\n <ShadcnCardTitle>{title}</ShadcnCardTitle>\n {description && (\n <ShadcnCardDescription>{description}</ShadcnCardDescription>\n )}\n </ShadcnCardHeader>\n <ShadcnCardContent>\n <p>{content}</p>\n </ShadcnCardContent>\n {footer && (\n <ShadcnCardFooter>\n <p>{footer}</p>\n </ShadcnCardFooter>\n )}\n </ShadcnCard>\n );\n};\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox as ShadcnCheckbox } from \"../ui/checkbox\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n title?: string;\n name?: string;\n control?: any;\n isFormField?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, title, name, control, isFormField, ...props }, ref) =>\n isFormField ? (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n <FormLabel>{title}</FormLabel>\n <FormControl>\n <ShadcnCheckbox\n className={className}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnCheckbox ref={ref} className={className} {...props} />\n )\n);\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Control } from \"react-hook-form\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\n\nexport type ComboboxOption = {\n value: string;\n label: string;\n};\n\nexport type ComboboxProps = {\n label: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n options: ComboboxOption[];\n isFormField?: boolean;\n control?: Control;\n name?: string;\n};\n\nexport function Combobox({\n label,\n options,\n defaultValue,\n onChange,\n isFormField,\n control,\n name,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (!isFormField) {\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between capitalize\"\n >\n {value\n ? options.find((option) => option.value === value)?.label || label\n : label}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandEmpty>No item found.</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue);\n onChange?.(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between capitalize\"\n >\n {field.value\n ? options.find((option) => option.value === field.value)\n ?.label || label\n : label}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandEmpty>No item found.</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n field.onChange(\n currentValue === field.value ? \"\" : currentValue\n );\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n field.value === option.value\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent } from \"./dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import * as React from \"react\";\nimport {\n Command as ShadcnCommand,\n CommandEmpty as ShadcnCommandEmpty,\n CommandGroup as ShadcnCommandGroup,\n CommandInput as ShadcnCommandInput,\n CommandItem as ShadcnCommandItem,\n CommandList as ShadcnCommandList,\n CommandSeparator as ShadcnCommandSeparator,\n} from \"../ui/command\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nexport type CommandGroupProps = {\n header: string;\n items: string[];\n};\n\nexport type CommandProps = {\n commandGroup: CommandGroupProps[];\n placeholder: string;\n className?: string;\n};\n\nexport const Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive> & CommandProps\n>(({ className, placeholder, commandGroup, ...props }, ref) => (\n <ShadcnCommand {...props} ref={ref} className={className}>\n <ShadcnCommandInput placeholder={placeholder} />\n <ShadcnCommandList>\n <ShadcnCommandEmpty>No results found.</ShadcnCommandEmpty>\n \n {commandGroup.map((group, index) => (\n <React.Fragment key={index}>\n <ShadcnCommandGroup key={index} heading={group.header}>\n {group.items.map((item, itemIndex) => (\n <ShadcnCommandItem key={itemIndex}>{item}</ShadcnCommandItem>\n ))}\n </ShadcnCommandGroup>\n\n {commandGroup.length - 1 !== index && <ShadcnCommandSeparator />}\n </React.Fragment>\n ))}\n </ShadcnCommandList>\n </ShadcnCommand>\n));\n\nCommand.displayName = \"Command\";\n","\"use client\";\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { Loader2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Icon } from \"./icon\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../ui/table\";\n\nexport type { ColumnDef } from \"@tanstack/react-table\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filterField?: string;\n refresh?: () => void;\n isLoading?: boolean;\n}\n\nexport function DataTable<TData, TValue>({\n data,\n columns,\n filterField,\n refresh,\n isLoading,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n []\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n\n const table = useReactTable({\n data,\n columns,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n <div className=\"w-full mt-4 relative\">\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin absolute top-2 right-32\" />\n )}\n {filterField && (\n <div className=\"flex items-center justify-between\">\n <Input\n placeholder={`Filter by ${filterField}...`}\n value={\n (table.getColumn(filterField)?.getFilterValue() as string) ?? \"\"\n }\n onChange={(event) =>\n table.getColumn(filterField)?.setFilterValue(event.target.value)\n }\n className=\"max-w-sm\"\n />\n <div className=\"flex items-center space-x-4\">\n {refresh && (\n <Button variant=\"outline\" onClick={refresh}>\n <Icon name=\"RotateCcw\" strokeWidth={2} size={20} />\n </Button>\n )}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">\n Columns <ChevronDownIcon className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) =>\n column.toggleVisibility(!!value)\n }\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n )}\n <div className=\"rounded-md border mt-4\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n {/* No results. */}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex items-center justify-end space-x-2 py-4\">\n {table.getAllColumns().some((col) => col.id === \"select\") && (\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n )}\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out 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\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotFilledIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon } from \"@radix-ui/react-icons\";\nimport { format } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport { Calendar } from \"../ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../ui/popover\";\n\ntype DateFilterProps = {\n className?: string;\n date?: DateRange | undefined;\n setDate: (date: DateRange | undefined) => void;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nexport function DateFilter({ className, date, setDate }: DateFilterProps) {\n return (\n <div className={cn(\"grid gap-2\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id=\"date\"\n variant={\"outline\"}\n className={cn(\n \"w-[300px] justify-start text-left font-normal\",\n !date && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date?.from ? (\n date.to ? (\n <>\n {format(date.from, \"LLL dd, y\")} -{\" \"}\n {format(date.to, \"LLL dd, y\")}\n </>\n ) : (\n format(date.from, \"LLL dd, y\")\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n initialFocus\n mode=\"range\"\n defaultMonth={date?.from}\n selected={date}\n onSelect={setDate}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"\n ),\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-8 w-8 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={\n {\n // IconLeft: ({ ...props }) => <ChevronLeftIcon className=\"h-4 w-4\" />,\n // IconRight: ({ ...props }) => <ChevronRightIcon className=\"h-4 w-4\" />,\n }\n }\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import { cn } from \"../../lib/utils\";\nimport { LucideIcon, icons } from \"lucide-react\";\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from \"../ui/dialog\";\nimport { Button } from \"./button\";\nimport { Icon } from \"./icon\";\n\nexport type DialogProps = {\n title: string;\n children: React.ReactNode;\n description?: string;\n open?: boolean;\n trigger?: string;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n icon?: keyof typeof icons;\n iconClassName?: string;\n actions?: {\n label: string;\n type: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\";\n icon?: keyof typeof icons;\n iconClassName?: string;\n onAction: () => void;\n disabled?: boolean;\n }[];\n};\n\nexport const Dialog = ({\n title,\n description,\n trigger,\n open,\n onOpenChange,\n children,\n className,\n icon,\n iconClassName,\n actions,\n}: DialogProps) => {\n const IconComponent = icon ? (icons[icon] as LucideIcon) : null;\n\n return (\n <ShadcnDialog open={open} onOpenChange={onOpenChange}>\n <ShadcnDialogTrigger>{trigger}</ShadcnDialogTrigger>\n <ShadcnDialogContent className={className}>\n <ShadcnDialogHeader>\n <ShadcnDialogTitle className=\"capitalize flex items-center gap-2 justify-between pr-8\">\n <div className=\"flex items-center gap-2\">\n {IconComponent && (\n <IconComponent\n size={20}\n strokeWidth={1}\n className={cn(iconClassName)}\n />\n )}\n {title}\n </div>\n {actions && (\n <div className=\"flex items-center gap-2\">\n {actions.map((action) => (\n <Button\n key={action.label}\n variant={action.type}\n onClick={action.onAction}\n className=\"flex items-center gap-2\"\n disabled={action.disabled}\n >\n {action.label}\n {action.icon && (\n <Icon\n name={action.icon}\n className={cn(action.iconClassName)}\n size={16}\n strokeWidth={1}\n />\n )}\n </Button>\n ))}\n </div>\n )}\n </ShadcnDialogTitle>\n <ShadcnDialogDescription>{description}</ShadcnDialogDescription>\n </ShadcnDialogHeader>\n {children}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import React from \"react\";\nimport {\n Drawer as ShadcnDrawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"../ui/drawer\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\ntype DrawerPrimitiveRootProps = React.ComponentProps<\n typeof DrawerPrimitive.Root\n>;\n\nexport type DrawerProps = {\n title: string;\n openDrawer?: boolean;\n setOpenDrawer?: (open: boolean) => void;\n description?: string;\n children: React.ReactNode;\n trigger?: React.ReactNode;\n} & DrawerPrimitiveRootProps;\n\nexport const Drawer = ({\n title,\n trigger,\n description,\n children,\n openDrawer,\n setOpenDrawer,\n ...props\n}: DrawerProps) => {\n return (\n <ShadcnDrawer\n direction=\"right\"\n open={openDrawer}\n onOpenChange={setOpenDrawer}\n {...props}\n >\n {trigger && <DrawerTrigger>{trigger}</DrawerTrigger>}\n <DrawerContent className=\"h-screen top-0 right-0 left-auto mt-0 w-[500px] rounded-none\">\n <ScrollArea className=\"h-screen\">\n <div className=\"mx-auto w-full p-5\">\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n {children}\n </div>\n </ScrollArea>\n </DrawerContent>\n </ShadcnDrawer>\n );\n};\n","import React from \"react\";\nimport {\n DropdownMenu as ShadcnDropdownMenu,\n DropdownMenuTrigger as ShadcnDropdownMenuTrigger,\n DropdownMenuContent as ShadcnDropdownMenuContent,\n DropdownMenuItem as ShadcnDropdownMenuItem,\n} from \"../ui/dropdown-menu\";\nimport { SelectOption } from \"./select\";\n\nexport interface DropdownMenuProps {\n trigger: React.ReactNode;\n items: SelectOption[];\n onClick: (value: string, label: string) => void;\n className?: string;\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> = ({\n trigger,\n items,\n className = \"\",\n onClick,\n}) => {\n return (\n <ShadcnDropdownMenu>\n <ShadcnDropdownMenuTrigger asChild>\n <div className={className}>{trigger}</div>\n </ShadcnDropdownMenuTrigger>\n <ShadcnDropdownMenuContent className=\"cursor-pointer\">\n {items.map((item, index) => (\n <ShadcnDropdownMenuItem\n key={index}\n className=\"cursor-pointer!\"\n onClick={() => onClick(item.value, item.label)}\n >\n {item.label}\n </ShadcnDropdownMenuItem>\n ))}\n </ShadcnDropdownMenuContent>\n </ShadcnDropdownMenu>\n );\n};\n","\"use client\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { useEffect, useState } from \"react\";\n\ninterface DurationInputProps {\n // Value can be a number (nanoseconds) or a string like \"12h\"\n value?: number | string;\n onChange: (val: string) => void;\n}\n\nconst unitOptions = [\n { label: \"Seconds\", value: \"s\", ns: 1_000_000_000 },\n { label: \"Minutes\", value: \"m\", ns: 60_000_000_000 },\n { label: \"Hours\", value: \"h\", ns: 3_600_000_000_000 },\n { label: \"Days\", value: \"d\", ns: 86_400_000_000_000 },\n { label: \"Weeks\", value: \"w\", ns: 604_800_000_000_000 },\n];\n\nfunction parseDurationNs(ns: number) {\n // Try to find a unit that divides evenly. \n // If none matches exactly, default to seconds.\n for (const u of [...unitOptions].reverse()) {\n if (ns % u.ns === 0) {\n return { amount: String(ns / u.ns), unit: u.value };\n }\n }\n return { amount: String(ns / 1_000_000_000), unit: \"s\" };\n}\n\n// Convert days/weeks to hours for Go, but do NOT change UI states.\nfunction toGoCompatibleDuration(amount: string, unit: string): string {\n const parsedAmount = parseFloat(amount);\n if (isNaN(parsedAmount) || parsedAmount <= 0) return \"0s\";\n\n switch (unit) {\n case \"d\":\n return `${parsedAmount * 24}h`; // convert days to hours\n case \"w\":\n return `${parsedAmount * 168}h`; // convert weeks to hours\n default:\n return `${amount}${unit}`;\n }\n}\n\nexport function DurationInput({ value, onChange }: DurationInputProps) {\n const [amount, setAmount] = useState<string>(\"\");\n const [unit, setUnit] = useState<string>(\"h\");\n const [userInteracted, setUserInteracted] = useState(false);\n\n useEffect(() => {\n // Only update from value if the user hasn't interacted yet.\n if (userInteracted) return;\n\n if (value === undefined || value === null || value === \"\") {\n setAmount(\"\");\n setUnit(\"h\");\n return;\n }\n\n if (typeof value === \"number\") {\n // value is nanoseconds\n const parsed = parseDurationNs(value);\n setAmount(parsed.amount);\n setUnit(parsed.unit);\n } else if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (trimmed) {\n const lastChar = trimmed[trimmed.length - 1];\n const foundUnit = unitOptions.find((u) => u.value === lastChar);\n if (foundUnit) {\n const amt = trimmed.slice(0, -1);\n setAmount(amt);\n setUnit(lastChar);\n } else {\n setAmount(trimmed);\n setUnit(\"h\");\n }\n } else {\n setAmount(\"\");\n setUnit(\"h\");\n }\n }\n }, [value, userInteracted]);\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newAmount = e.target.value;\n setAmount(newAmount);\n setUserInteracted(true);\n if (newAmount) {\n onChange(toGoCompatibleDuration(newAmount, unit));\n } else {\n onChange(\"\");\n }\n };\n\n const handleUnitChange = (newUnit: string) => {\n setUnit(newUnit);\n setUserInteracted(true);\n if (amount) {\n onChange(toGoCompatibleDuration(amount, newUnit));\n } else {\n onChange(\"\");\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"number\"\n placeholder=\"1\"\n value={amount}\n onChange={handleAmountChange}\n className=\"w-20\"\n />\n <Select value={unit} onValueChange={handleUnitChange}>\n <SelectTrigger className=\"w-24\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {unitOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n}","\"use client\";\nimport { useState } from \"react\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Badge } from \"../ui/badge\";\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Separator } from \"../ui/separator\";\nimport { Icon } from \"./icon\";\nimport { icons } from \"lucide-react\";\n\nexport type FilterOptionProps = {\n label: string;\n value: string;\n icon?: keyof typeof icons;\n};\n\nexport type FilterComboboxProps = {\n title: string;\n clearLabel: string;\n options: FilterOptionProps[];\n};\n\nexport function FilterCombobox({ title, options, clearLabel }: FilterComboboxProps) {\n const [selectedValues, setSelectedValues] = useState<FilterOptionProps[]>([]);\n\n const handleValueSelect = (value: FilterOptionProps) => {\n if (selectedValues.some((v) => v.value === value.value)) {\n setSelectedValues(selectedValues.filter((v) => v.value !== value.value));\n } else {\n setSelectedValues([...selectedValues, value]);\n }\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild className=\"w-fit\">\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\n <Icon name=\"CirclePlus\" className=\"h-4 w-4 mr-2\" />\n {title}\n {selectedValues?.length > 0 && (\n <div className=\"flex items-center gap-2 ml-2\">\n <Separator orientation=\"vertical\" className=\"h-4\" />\n <>\n {selectedValues.length > 2 ? (\n <Badge\n variant=\"secondary\"\n className=\"rounded-sm px-1 font-normal\"\n >\n {selectedValues.length} selected\n </Badge>\n ) : (\n options\n .filter((option) =>\n selectedValues.some((item) => item.value === option.value)\n )\n .map((option) => (\n <Badge\n variant=\"secondary\"\n key={option.value}\n className=\"rounded-sm px-1 font-normal\"\n >\n {option.label}\n </Badge>\n ))\n )}\n </>\n </div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder={title} />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup>\n {options.map((option) => {\n const isSelected = selectedValues.some(\n (item) => item.value === option.value\n );\n return (\n <CommandItem\n key={option.value}\n onSelect={() => handleValueSelect(option)}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"opacity-50 [&_svg]:invisible\"\n )}\n >\n <CheckIcon className={cn(\"h-4 w-4\")} />\n </div>\n {option?.icon && <Icon name={option?.icon} className=\"mr-2 h-4 w-4 text-muted-foreground\" />}\n <span>{option.label}</span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n {selectedValues.length > 0 && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <CommandItem\n onSelect={() => setSelectedValues([])}\n className=\"justify-center text-center\"\n >\n {clearLabel}\n </CommandItem>\n </CommandGroup>\n </>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import { Control, RegisterOptions } from \"react-hook-form\";\nimport { Combobox } from \"./combobox\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\n\nexport interface FormComboboxProps {\n label: string;\n title?: string;\n name?: string;\n control?: Control;\n rules?: RegisterOptions;\n data: {\n value: string;\n label: string;\n }[];\n}\n\nexport function FormCombobox({\n title,\n name,\n control,\n rules,\n data,\n label,\n}: FormComboboxProps) {\n return (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <Combobox\n label={label}\n defaultValue={field.value}\n options={data}\n onChange={(value) => field.onChange(value)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n","\"use client\";\n\nimport { useForm, FormProvider } from \"react-hook-form\";\nimport { Button } from \"./button\";\n\ntype FormLayoutProps = {\n children: React.ReactNode;\n formTitle: string;\n formDescription: string;\n onCanel: () => void;\n onSave: () => void;\n form: any;\n PrimaryActionText: string;\n CancelText: string;\n className?: string;\n};\n\nexport function FormLayout({\n children,\n formTitle,\n formDescription,\n onCanel,\n onSave,\n form,\n className,\n PrimaryActionText,\n CancelText,\n}: FormLayoutProps) {\n return (\n <FormProvider {...form}>\n <form onSubmit={onSave} className={`flex flex-col gap-6 ${className}`}>\n <div className=\"flex items-center justify-between w-full border-b pb-6 border-border\">\n <div className=\"flex flex-col\">\n <p className=\"font-semibold text-lg\">{formTitle}</p>\n <p className=\"text-gray-500\">{formDescription}</p>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <Button type=\"button\" onClick={onCanel} variant=\"secondary\">\n {CancelText}\n </Button>\n <Button type=\"submit\">{PrimaryActionText}</Button>\n </div>\n </div>\n\n {children}\n\n <div className=\"flex items-center gap-2 justify-end\">\n <Button type=\"button\" onClick={onCanel} variant=\"secondary\">\n {CancelText}\n </Button>\n <Button type=\"submit\">{PrimaryActionText}</Button>\n </div>\n </form>\n </FormProvider>\n );\n}\n","\"use client\";\n\ntype RowLayoutProps = {\n children: React.ReactNode;\n title: string;\n description: string;\n};\n\nexport function FormRow({ children, title, description }: RowLayoutProps) {\n return (\n <div className=\"grid grid-cols-3 w-full border-b pb-6 border-border\">\n <div className=\"flex flex-col\">\n <p className=\"font-medium\">{title}</p>\n <p className=\"text-gray-500 text-sm\">{description}</p>\n </div>\n\n <div className=\"col-span-2 w-[80%]\">{children}</div>\n </div>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <CheckIcon className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nChartContainer.displayName = \"Chart\";\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([_, config]) => config.theme || config.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = \"ChartTooltip\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n }\n);\nChartLegendContent.displayName = \"ChartLegend\";\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","import React from \"react\";\nimport { Button, Form as ShadcnForm } from \"../ui\";\n\ntype FormWithActionButtonsProps = {\n children: React.ReactNode;\n form: any;\n onSubmit: (data: any) => void;\n onCancel: () => void;\n primaryButtonText: string;\n secondaryButtonText: string;\n secondaryButtonAction: () => void;\n showSecondaryButton?: boolean;\n};\n\nexport const FormWithActionButtons = ({\n children,\n form,\n onSubmit,\n onCancel,\n primaryButtonText,\n secondaryButtonText,\n secondaryButtonAction,\n showSecondaryButton = false,\n}: FormWithActionButtonsProps) => {\n return (\n <ShadcnForm {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-4\">\n {children}\n <div className=\"flex justify-end gap-2\">\n {showSecondaryButton && (\n <Button\n variant=\"link\"\n onClick={secondaryButtonAction}\n type=\"button\"\n >\n {secondaryButtonText}\n </Button>\n )}\n <Button variant=\"default\" type=\"submit\">\n {primaryButtonText}\n </Button>\n </div>\n </form>\n </ShadcnForm>\n );\n};\n","import { File, FileSpreadsheet, FileText } from \"lucide-react\";\nexport const getFileIcon = (fileName: string) => {\n const extensionMatch = fileName.match(/\\.([^.]+)$/);\n const extension = extensionMatch ? extensionMatch[1].toLowerCase() : null;\n\n if (!extension) return <File className=\"w-8 h-8 text-gray-500\" />;\n\n switch (extension) {\n case \"pdf\":\n return <File className=\"w-8 h-8 text-red-500\" />;\n case \"doc\":\n case \"docx\":\n return <FileText className=\"w-8 h-8 text-blue-500\" />;\n case \"xls\":\n case \"xlsx\":\n return <FileSpreadsheet className=\"w-8 h-8 text-green-500\" />;\n default:\n return <File className=\"w-8 h-8 text-gray-500\" />;\n }\n};\n\nexport const getFileName = (url: string) => {\n const fileName = decodeURIComponent(url.split(\"/\").pop() ?? \"\");\n\n const cleanFileName = fileName\n .replace(/%28(\\d+)%29/g, \"($1)\") // Replace %28 and %29 with parentheses\n .replace(/[^\\w\\s().-]/g, \"\") // Remove any other special characters\n .replace(/\\s+/g, \"_\") // Replace spaces with underscores\n .replace(/-\\d+(?=\\.pdf)/g, \"\"); // Remove the trailing number before .pdf\n\n return cleanFileName;\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\n\nimport { icons } from \"lucide-react\";\nimport { Icon } from \"./icon\";\n\nexport type NavItem = {\n key: string;\n group?: string;\n title: string;\n logo?: string;\n href?: string;\n subNav?: NavItem[];\n icon: keyof typeof icons;\n\n userGroups?: string[];\n};\n\nexport type IconButtonProps = {\n item: NavItem;\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n className?: string;\n onClick?: () => void;\n};\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n item,\n variant,\n onClick,\n ...props\n}) => {\n return (\n <Button\n type=\"button\"\n variant={variant}\n className=\"flex items-center justify-start gap-2 border px-2\"\n onClick={onClick}\n {...props}\n >\n <span className=\"w-4 flex items-center justify-center\">\n <Icon name={item.icon} size={20} strokeWidth={1} />\n </span>\n\n <span className=\"text-sm\">{item.title}</span>\n </Button>\n );\n};\n","import * as React from \"react\";\nimport {\n Input as ShadcnInput,\n InputProps as ShadcnInputProps,\n} from \"../ui/input\";\nimport { Variants } from \"../ui\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { RegisterOptions, Control } from \"react-hook-form\";\n\nexport interface InputProps extends ShadcnInputProps {\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n variant?: Variants;\n rules?: RegisterOptions;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = \"default\",\n className,\n title,\n name,\n control,\n isFormField,\n rules,\n ...props\n },\n ref\n ) => {\n return isFormField ? (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnInput className={className} {...props} {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnInput className={className} ref={ref} {...props} />\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import { useKnowledgeGraphContext } from \"@elqnt/kg\";\nimport { Loader2 } from \"lucide-react\";\n\nexport function KnowledgeGraphWordCloud() {\n const { labels } = useKnowledgeGraphContext();\n\n if (!labels || !(labels instanceof Array)) {\n return null;\n }\n\n const data = labels?.map((item) => {\n return { text: item?.label, value: item?.count };\n });\n\n return (\n <div className=\"rounded-xl border bg-card h-full shadow relative p-5\">\n <p className=\"capitalize mb-10 font-semibold text-xl\">\n Graph Distribution\n </p>\n {!data ? (\n <div className=\"absolute w-full flex justify-end\">\n <Loader2 className=\"animate-spin\" />\n </div>\n ) : (\n <></>\n // <WordCloud\n // data={data}\n // width={400}\n // height={120}\n // font=\"Times\"\n // fontWeight=\"bold\"\n // fontSize={(word) => Math.log2(word.value) * 3}\n // spiral=\"rectangular\"\n // rotate={0}\n // padding={3}\n // random={Math.random}\n // />\n )}\n </div>\n );\n}\n","\"use client\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useEffect, useState } from \"react\";\nimport { Combobox, ComboboxOption } from \"../combobox\";\n\nexport function OrgSelector() {\n const { user, selectedOrgId, setSelectedOrgId } = useUserContext();\n const [orgAccess, setOrgAccess] = useState<ComboboxOption[]>([]);\n\n useEffect(() => {\n if (user?.orgAccess) {\n const formattedOrgAccess = user.orgAccess.map((org) => ({\n value: org.orgId,\n label: org.orgTitle,\n }));\n\n // formattedOrgAccess.push({\n // value: \"shopify_eloquent_dev_myshopify_com\",\n // label: \"Eloquent Dev\",\n // });\n\n setOrgAccess(formattedOrgAccess);\n }\n }, [user]);\n\n const handleOrgIdChange = (value: string) => {\n // Let the context's setSelectedOrgId handle storage (localStorage or cookie)\n setSelectedOrgId?.(value);\n };\n\n if (!user) {\n return null;\n }\n return (\n <Combobox\n defaultValue={selectedOrgId!}\n options={orgAccess}\n onChange={handleOrgIdChange}\n label=\"Select an Organization\"\n />\n );\n}\n","\"use client\";\n\nimport { ChevronLeft } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { cn } from \"../../../lib\";\nimport { Button } from \"../button\";\n\ntype Action = {\n label: string;\n type: \"secondary\" | \"link\" | \"default\" | \"destructive\" | \"outline\" | \"ghost\";\n href?: string;\n onAction?: () => void;\n};\n\nexport type PageHeaderProps = {\n title?: string;\n description?: string;\n actions?: Action[];\n goBackLink?: string;\n showBack?: boolean;\n backUrl?: string;\n rightSideComponent?: React.ReactNode;\n titleComponent?: React.ReactNode;\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n};\n\nexport function PageHeader({\n title,\n description,\n actions,\n goBackLink,\n showBack,\n backUrl,\n rightSideComponent,\n titleComponent,\n justify = \"between\",\n}: PageHeaderProps) {\n const router = useRouter();\n\n const handleBack = () => {\n if (backUrl) {\n router.push(backUrl);\n } else {\n router.back();\n }\n };\n\n function getJustifyClass() {\n switch (justify) {\n case \"start\":\n return \"justify-start\";\n case \"center\":\n return \"justify-center\";\n\n case \"end\":\n return \"justify-end\";\n case \"between\":\n return \"justify-between\";\n case \"around\":\n return \"justify-around\";\n case \"evenly\":\n return \"justify-evenly\";\n default:\n return \"justify-between\";\n }\n }\n\n return (\n <div\n className={cn(\n \"p-4 border-b border-gray-200 flex gap-4 items-center\",\n getJustifyClass()\n )}\n >\n <div>\n <div>\n <div className=\"flex items-center gap-2\">\n {goBackLink && (\n <Link href={goBackLink}>\n <ChevronLeft className=\"h-4 w-4\" />\n </Link>\n )}\n {showBack && !goBackLink && (\n <button\n onClick={handleBack}\n className=\"h-8 w-8 p-0 flex items-center justify-center rounded-md border border-gray-200 hover:bg-gray-50 transition-colors\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n )}\n {titleComponent ??\n (title && (\n <h2 className=\"font-semibold text-lg text-primary p-0 m-0\">\n {title}\n </h2>\n ))}\n </div>\n </div>\n {description && <p className=\"text-sm text-gray-500\">{description}</p>}\n </div>\n <div className=\"flex gap-2 items-center\">\n {rightSideComponent}\n {actions?.map((action, index) =>\n action.href ? (\n <Link href={action.href} key={index}>\n <Button variant={action.type}>{action.label}</Button>\n </Link>\n ) : (\n <Button key={index} variant={action.type} onClick={action.onAction}>\n {action.label}\n </Button>\n )\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport Link from \"next/link\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useEffect, useState } from \"react\";\nimport { Icon } from \"../icon\";\nimport { IconButton, NavItem } from \"../icon-button\";\nimport { Input } from \"../../ui/input\";\nimport { OrgSelector } from \"./org-selector\";\nimport { ProfileMenu } from \"./profile-menu\";\n\nconst articles = [\n { key: \"getting-started\", title: \"Getting Started\", href: \"#\" },\n { key: \"helpdesk\", title: \"Helpdesk\", href: \"#\" },\n];\n\nexport function LeftNav({\n fullMenuItems,\n menuItems,\n pageTitle,\n ExpandedLogo,\n Logo,\n}: {\n fullMenuItems: NavItem[];\n menuItems?: NavItem[] | undefined;\n pageTitle?: String | undefined;\n ExpandedLogo: React.FC;\n Logo: React.FC;\n}) {\n const router = useRouter();\n const pathName = usePathname();\n const { user, selectedOrgId, selectedOrg } = useUserContext();\n\n const [isExpanded, setIsExpanded] = useState(() => {\n const stored = localStorage.getItem(\"isExpanded\");\n return stored === null ? true : stored === \"true\";\n });\n const [apps, setApps] = useState<NavItem[]>([]);\n const [items, setItems] = useState<NavItem[] | undefined>(menuItems);\n // const [isOpenPopover, setIsOpenPopover] = useState(false);\n\n useEffect(() => {\n setItems(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!user || !selectedOrgId || !selectedOrg) return;\n const orgAccess = user.orgAccess?.find(\n (org) => org.orgId === selectedOrgId\n );\n if (!orgAccess) return;\n const apps = fullMenuItems?.filter((item) =>\n selectedOrg.apps?.includes(item.key as any)\n );\n setApps(apps);\n }, [user, selectedOrgId, selectedOrg]);\n\n useEffect(() => {\n localStorage.setItem(\"isExpanded\", isExpanded.toString());\n }, [isExpanded]);\n\n return (\n <div\n style={{ height: \"calc(100vh - 32px)\" }}\n className={`relative pt-4 ${isExpanded ? \"min-w-72\" : \"min-w-16\"} transition-width duration-300 rounded-lg text-gray-500 sticky top-4 bg-white`}\n >\n <TooltipProvider>\n <div className=\"absolute top-0 flex flex-col gap-8 justify-between h-full w-full duration-300 ease-in-out sc-card bg-white! p-3 overflow-y-scroll hide-scrollbar\">\n <div\n className={`flex flex-col gap-1 ${!isExpanded && \"items-center\"}`}\n >\n <div className=\"cursor-pointer flex items-center justify-between mb-4 w-full\">\n <div\n onClick={() =>\n isExpanded ? router.push(\"/\") : setIsExpanded(true)\n }\n >\n {isExpanded ? <ExpandedLogo /> : <Logo />}\n </div>\n\n {isExpanded && (\n <span onClick={() => setIsExpanded(false)}>\n <Icon name=\"ChevronsLeftRight\" />\n </span>\n )}\n </div>\n\n {items ? (\n <>\n <div\n onClick={() => setItems(undefined)}\n className=\"flex items-center px-1 gap-2 cursor-pointer mb-4 text-lg\"\n >\n <Icon name=\"ArrowLeft\" size={19} />\n {isExpanded && <span>{pageTitle}</span>}\n </div>\n {menuItems?.map((item) => (\n <Link\n href={item.href!}\n key={item.title}\n className={`flex items-center gap-2 cursor-pointer w-full text-sm rounded-lg py-3 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0 justify-center\"}\n ${item.href && (item.href?.split(\"/\").length > 2 ? (pathName?.includes(item.href!) ?? \"\") : pathName === item.href) && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n {isExpanded ? (\n <>\n <Icon name={item.icon} size={19} />\n <span>{item.title}</span>\n </>\n ) : (\n <Tooltip delayDuration={0}>\n <TooltipTrigger>\n <Icon name={item.icon} />\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>{item.title}</p>\n </TooltipContent>\n </Tooltip>\n )}\n </Link>\n ))}\n </>\n ) : isExpanded ? (\n <>\n <div id=\"menu-row\">\n <h2 className=\"text-xl font-semibold\">Apps</h2>\n <div className=\"grid grid-cols-2 gap-2 mt-6\">\n {apps\n .filter((item) => item.key !== \"home\")\n .map((item) => (\n <IconButton\n key={item.key}\n item={item}\n variant=\"ghost\"\n onClick={() => {\n router.push(item.href!);\n setItems(menuItems);\n }}\n />\n ))}\n </div>\n </div>\n\n <div id=\"help-row\" className=\"mt-12 ml-2\">\n <h2 className=\"text-xl font-semibold\">Help</h2>\n <div className=\"mt-6\">\n <Input placeholder=\"Search help content\" />\n </div>\n\n <ul className=\"mt-6 ml-4 list-disc\">\n {articles.map((item) => (\n <li key={item.key}>\n <Link\n href={item.href}\n className=\"block mb-2 underline\"\n onClick={() => setIsExpanded(false)}\n >\n {item.title}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : (\n <div className=\"flex flex-col gap-6 mt-2\">\n {apps?.map((item) => (\n <Tooltip key={item.key} delayDuration={0}>\n <TooltipTrigger>\n <div\n onClick={() => {\n router.push(item.href!);\n setItems(menuItems);\n }}\n >\n <Icon name={item.icon} />\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>{item.title}</p>\n </TooltipContent>\n </Tooltip>\n ))}\n </div>\n )}\n </div>\n\n <div>\n {isExpanded && (\n <div className=\"mb-2\">\n <OrgSelector />\n </div>\n )}\n {/* <div\n onMouseEnter={() => setIsOpenPopover(true)}\n onMouseLeave={() => setIsOpenPopover(false)}\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName === \"/notifications\" && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <NotificationBell\n isOpenPopover={isOpenPopover}\n setIsOpenPopover={setIsOpenPopover}\n />\n {isExpanded && <span>Notifications</span>}\n </div> */}\n\n <Link\n href=\"/admin/settings\"\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName?.includes(\"/settings\") && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <Icon name=\"Settings\" />\n {isExpanded && <span>Settings</span>}\n </Link>\n\n <Link\n href=\"/admin/help\"\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName?.includes(\"/help\") && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <Icon name=\"HeartHandshake\" />\n {isExpanded && <span>Help</span>}\n </Link>\n\n <ProfileMenu pathName={pathName ?? \"\"}>\n <div\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}`}\n >\n <Icon name=\"User\" />\n {isExpanded && <span>{user?.firstName}</span>}\n </div>\n </ProfileMenu>\n </div>\n </div>\n </TooltipProvider>\n </div>\n );\n}\n","\"use client\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../ui/popover\";\nimport { icons } from \"lucide-react\";\nimport { signOut } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { Icon } from \"../icon\";\n\ntype ProfileMenuProps = {\n children: React.ReactNode;\n pathName: string;\n};\n\ntype MenuLinks = {\n key: string;\n title: string;\n href: string;\n icon: keyof typeof icons;\n onClick?: () => void;\n};\n\nexport function ProfileMenu({ children, pathName }: ProfileMenuProps) {\n const router = useRouter();\n\n const handleSignOut = async () => {\n await signOut({ redirect: false });\n router.push(\"/\");\n };\n\n const links: MenuLinks[] = [\n {\n key: \"my-account\",\n title: \"My Account\",\n href: \"/admin/my-account\",\n icon: \"User\",\n },\n {\n key: \"sign-out\",\n title: \"Sign out\",\n href: \"#\",\n icon: \"LogOut\",\n onClick: handleSignOut,\n },\n ];\n\n return (\n <Popover>\n <PopoverTrigger asChild>{children}</PopoverTrigger>\n <PopoverContent className=\"p-0! flex flex-col\">\n {links.map((link) => (\n <Link\n key={link?.key}\n href={link?.href}\n onClick={link.onClick}\n className={`cursor-pointer w-full hover:bg-primary/10 hover:text-primary p-4 flex items-center gap-4 text-gray-500 \n ${pathName.includes(link?.href) && \"bg-primary/10 text-primary\"}`}\n >\n <Icon name={link?.icon} size={20} />\n {link?.title}\n </Link>\n ))}\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\";\nimport { Check, X } from \"lucide-react\";\nimport { Badge } from \"../ui/badge\";\nimport { Button } from \"../ui/button\";\nimport { Command, CommandGroup, CommandItem } from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\n\nimport { cn } from \"../../lib/utils\";\nimport { useState } from \"react\";\n\nexport type MultiSelectOption = {\n value: string;\n label: string;\n};\n\nexport type MultiSelectProps = {\n defaultValue?: string[];\n placeholder: string;\n options: MultiSelectOption[];\n onValueChange: (values: string[]) => void;\n className?: string;\n};\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n defaultValue = [],\n placeholder,\n options,\n className = \"\",\n onValueChange,\n}) => {\n const [open, setOpen] = useState(false);\n const [selectedValues, setSelectedValues] = useState<string[]>(defaultValue);\n\n const handleSelect = (value: string) => {\n let updatedValues: string[];\n if (selectedValues.includes(value)) {\n updatedValues = selectedValues.filter((v) => v !== value);\n } else {\n updatedValues = [...selectedValues, value];\n }\n setSelectedValues(updatedValues);\n onValueChange(updatedValues);\n };\n\n const handleClear = (value: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const updatedValues = selectedValues.filter((v) => v !== value);\n setSelectedValues(updatedValues);\n onValueChange(updatedValues);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"min-h-10 h-auto w-full justify-between\", className)}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selectedValues.length === 0 && placeholder}\n {selectedValues.map((value) => (\n <Badge\n key={value}\n variant=\"secondary\"\n className=\"mr-1 mb-1\"\n onClick={(e) => handleClear(value, e)}\n >\n {options.find((opt) => opt.value === value)?.label}\n <X className=\"ml-1 h-3 w-3\" />\n </Badge>\n ))}\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0\">\n <Command>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n onSelect={() => handleSelect(option.value)}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n selectedValues.includes(option.value)\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Card } from \"../ui/card\";\nimport { Check, Loader2 } from \"lucide-react\";\nimport React, { useEffect, useState } from \"react\";\n\nexport interface StepComponentProps {\n step: Step;\n updateStep: (updates: Partial<Step>) => void;\n}\n\nexport interface Step {\n id: number;\n title: string;\n component: React.ComponentType<StepComponentProps>;\n isValid: boolean;\n isLoading?: boolean;\n isComplete?: boolean;\n action?: () => Promise<void>;\n}\n\ninterface MultiStepProcessProps {\n initialSteps: Omit<Step, \"isValid\" | \"isComplete\">[];\n onFinish: () => void;\n finishButtonText?: string;\n}\n\nexport const MultiStepProcess: React.FC<MultiStepProcessProps> = ({\n initialSteps,\n onFinish,\n finishButtonText,\n}) => {\n const [steps, setSteps] = useState<Step[]>(\n initialSteps.map((step) => ({ ...step, isValid: false, isComplete: false }))\n );\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n\n const updateStep = (stepIndex: number, updates: Partial<Step>) => {\n setSteps((prevSteps) =>\n prevSteps.map((step, index) =>\n index === stepIndex ? { ...step, ...updates } : step\n )\n );\n };\n\n const goToNextStep = async () => {\n const currentStepData = steps[currentStepIndex];\n\n if (currentStepData.action) {\n updateStep(currentStepIndex, { isLoading: true });\n try {\n await currentStepData.action();\n } catch (error) {\n console.error(\"Error executing step action:\", error);\n updateStep(currentStepIndex, { isLoading: false });\n return;\n }\n }\n\n if (currentStepIndex < steps.length - 1) {\n setCurrentStepIndex(currentStepIndex + 1);\n } else if (\n currentStepIndex === steps.length - 1 &&\n currentStepData.isValid\n ) {\n onFinish();\n }\n\n updateStep(currentStepIndex, { isLoading: false });\n };\n\n useEffect(() => {\n const currentStep = steps[currentStepIndex];\n if (currentStep.isComplete) {\n goToNextStep();\n }\n }, [steps, currentStepIndex]);\n\n const goToPreviousStep = () => {\n if (currentStepIndex > 0) {\n setCurrentStepIndex(currentStepIndex - 1);\n }\n };\n\n const renderStepComponent = (step: Step, index: number) => {\n const StepComponent = step.component;\n return (\n <StepComponent\n step={step}\n updateStep={(updates) => updateStep(index, updates)}\n />\n );\n };\n\n const isLastStep = currentStepIndex === steps.length - 1;\n const currentStepData = steps[currentStepIndex];\n\n return (\n <Card className=\"p-6\">\n <div className=\"mb-8\">\n <div className=\"flex justify-between items-start\">\n {steps.map((step, i) => (\n <div key={i} className=\"flex flex-col items-center\">\n <div\n className={`\n w-10 h-10 rounded-full flex items-center justify-center mb-2\n ${\n i < currentStepIndex\n ? \"bg-green-500 text-white\"\n : i === currentStepIndex\n ? \"bg-blue-500 text-white\"\n : \"bg-gray-200 text-gray-500\"\n }\n `}\n >\n {i < currentStepIndex ? (\n <Check className=\"w-6 h-6\" />\n ) : (\n <span>{step.id}</span>\n )}\n </div>\n <span className=\"text-sm text-center max-w-[100px]\">\n {step.title}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"mb-3\">\n {renderStepComponent(currentStepData, currentStepIndex)}\n </div>\n\n <div className=\"flex justify-between\">\n <Button\n onClick={goToPreviousStep}\n disabled={currentStepIndex === 0 || currentStepData.isLoading}\n variant=\"outline\"\n >\n Previous\n </Button>\n <Button\n onClick={goToNextStep}\n disabled={!currentStepData.isValid || currentStepData.isLoading}\n >\n {currentStepData.isLoading ? (\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n ) : isLastStep ? (\n (finishButtonText ?? \"Finish\")\n ) : (\n \"Next\"\n )}\n </Button>\n </div>\n </Card>\n );\n};\n","import * as React from \"react\";\nimport {\n Popover as ShadcnPopover,\n PopoverTrigger as ShadcnPopoverTrigger,\n PopoverContent as ShadcnPopoverContent,\n} from \"../ui/popover\";\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n children,\n className = \"\",\n align = \"center\",\n sideOffset = 4,\n}) => {\n return (\n <ShadcnPopover>\n <ShadcnPopoverTrigger asChild>\n <div className={className}>{trigger}</div>\n </ShadcnPopoverTrigger>\n <ShadcnPopoverContent\n align={align}\n sideOffset={sideOffset}\n className=\"custom-popover-content\"\n >\n {children}\n </ShadcnPopoverContent>\n </ShadcnPopover>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport {\n RadioGroupItem,\n RadioGroup as ShadcnRadioGroup,\n} from \"../ui/radio-group\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { Control } from \"react-hook-form\";\n\nexport type RadioOption = {\n value: string;\n label: string;\n};\n\nexport interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n options: RadioOption[];\n defaultValue?: string;\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n}\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, options, defaultValue, title, name, control, isFormField, ...props }, ref) => {\n if (!isFormField) {\n return (\n <ShadcnRadioGroup defaultValue={defaultValue} {...props} ref={ref}>\n {options?.map((option) => (\n <div key={option.value} className=\"flex items-center space-x-2 cursor-pointer\">\n <RadioGroupItem value={option.value} id={option.value} />\n <label htmlFor={option.value}>{option.label}</label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n\n return (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnRadioGroup\n onValueChange={field.onChange}\n defaultValue={field.value}\n {...props}\n >\n {options?.map((option) => (\n <div key={option.value} className=\"flex items-center space-x-2 cursor-pointer\">\n <RadioGroupItem value={option.value} id={option.value} />\n <label htmlFor={option.value}>{option.label}</label>\n </div>\n ))}\n </ShadcnRadioGroup>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n});\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\nimport {\n ScrollArea as ShadcnScrollArea,\n ScrollAreaViewport as ShadcnScrollAreaViewport,\n ScrollAreaScrollbar as ShadcnScrollAreaScrollbar,\n ScrollAreaThumb as ShadcnScrollAreaThumb,\n ScrollAreaCorner as ShadcnScrollAreaCorner,\n} from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ScrollAreaProps\n extends React.ComponentPropsWithoutRef<typeof ShadcnScrollArea> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ScrollArea = React.forwardRef<\n React.ElementRef<typeof ShadcnScrollArea>,\n ScrollAreaProps\n>(({ className, children, ...props }, ref) => (\n <ShadcnScrollArea\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ShadcnScrollAreaViewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ShadcnScrollAreaViewport>\n <ScrollBar />\n <ShadcnScrollAreaCorner />\n </ShadcnScrollArea>\n));\nScrollArea.displayName = ShadcnScrollArea.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ShadcnScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ShadcnScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ShadcnScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className\n )}\n {...props}\n >\n <ShadcnScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ShadcnScrollAreaScrollbar>\n));\nScrollBar.displayName = ShadcnScrollAreaScrollbar.displayName;\n","import {\n Select as ShadcnSelect,\n SelectContent as ShadcnSelectContent,\n SelectItem as ShadcnSelectItem,\n SelectTrigger as ShadcnSelectTrigger,\n SelectValue as ShadcnSelectValue,\n} from \"../ui/select\";\n\nexport type SelectOption = {\n value: string;\n label: string;\n};\n\nexport type SelectProps = {\n defaultValue: string;\n placeholder: string;\n options: SelectOption[];\n onValueChange: (value: string) => void;\n className?: string;\n};\n\nexport const Select: React.FC<SelectProps> = ({\n defaultValue,\n placeholder,\n options,\n className = \"\",\n onValueChange,\n}) => {\n return (\n <ShadcnSelect value={defaultValue} onValueChange={onValueChange}>\n <ShadcnSelectTrigger className={className}>\n <ShadcnSelectValue placeholder={placeholder} />\n </ShadcnSelectTrigger>\n <ShadcnSelectContent>\n {options?.map((option, i) => (\n <ShadcnSelectItem key={i} value={option.value}>\n {option.label}\n </ShadcnSelectItem>\n ))}\n </ShadcnSelectContent>\n </ShadcnSelect>\n );\n};\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Collapsible, CollapsibleContent } from \"../ui/collapsible\";\nimport { Progress } from \"../ui/progress\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { Check } from \"lucide-react\";\nimport React, { useId, useState } from \"react\";\n\ninterface ButtonProps {\n content: string;\n props: React.ButtonHTMLAttributes<HTMLButtonElement>;\n}\n\ninterface SetupItem {\n id: number;\n title: string;\n description: string;\n complete: boolean;\n image?: {\n url: string;\n alt: string;\n };\n primaryButton?: ButtonProps;\n secondaryButton?: ButtonProps;\n}\n\ninterface SetupGuideProps {\n onDismiss: () => void;\n onStepComplete: (id: number) => Promise<void>;\n items: SetupItem[];\n}\n\nexport const SetupGuide: React.FC<SetupGuideProps> = ({\n onDismiss,\n onStepComplete,\n items,\n}) => {\n const [expanded, setExpanded] = useState<string | number | null>(\n items.findIndex((item) => !item.complete)\n );\n const [isGuideOpen, setIsGuideOpen] = useState<boolean>(true);\n const accessId = useId();\n const completedItemsLength = items.filter((item) => item.complete).length;\n\n return (\n <div className=\"p-0\">\n <div className=\"px-4 pb-4\">\n <div className=\"space-y-4\">\n \n <div className=\"mt-2\">\n <div className=\"flex items-center gap-2\">\n {completedItemsLength === items.length ? (\n <div className=\"flex items-center gap-1\">\n <Check className=\"h-4 w-4 text-gray-400\" />\n <span className=\"text-sm text-gray-400\">Done</span>\n </div>\n ) : (\n <span className=\"text-sm\">\n {`${completedItemsLength} / ${items.length} completed`}\n </span>\n )}\n\n {completedItemsLength !== items.length && (\n <div className=\"w-24\">\n <Progress\n value={(completedItemsLength / items.length) * 100}\n className=\"h-1\"\n />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <Collapsible open={isGuideOpen} id={accessId}>\n <CollapsibleContent className=\"p-2\">\n <div className=\"space-y-1\">\n {items.map((item) => (\n <SetupItem\n key={item.id}\n expanded={expanded === item.id}\n setExpanded={() => setExpanded(item.id)}\n onComplete={onStepComplete}\n {...item}\n />\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n {completedItemsLength === items.length && (\n <div className=\"border-t border-gray-200 bg-gray-50 p-3\">\n <div className=\"flex justify-end\">\n <Button onClick={onDismiss}>Dismiss Guide</Button>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ninterface SetupItemProps extends SetupItem {\n expanded: boolean;\n setExpanded: () => void;\n onComplete: (id: number) => Promise<void>;\n}\n\nconst SetupItem: React.FC<SetupItemProps> = ({\n complete,\n onComplete,\n expanded,\n setExpanded,\n title,\n description,\n image,\n primaryButton,\n secondaryButton,\n id,\n}) => {\n const [loading, setLoading] = useState<boolean>(false);\n\n const completeItem = async () => {\n setLoading(true);\n await onComplete(id);\n setLoading(false);\n };\n\n return (\n <div className={`rounded ${expanded ? \"bg-gray-100\" : \"\"}`}>\n <div className={`p-2 ${expanded ? \"\" : \"hover:bg-gray-50\"}`}>\n <div className=\"flex gap-2 items-start\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"mt-0.5\"\n onClick={completeItem}\n >\n {loading ? (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600\" />\n ) : complete ? (\n <div className=\"h-5 w-5 rounded-full bg-gray-900 flex items-center justify-center\">\n <Check className=\"h-3 w-3 text-white\" />\n </div>\n ) : (\n <div className=\"h-5 w-5 rounded-full border-2 border-gray-300\" />\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {complete ? \"Mark as not done\" : \"Mark as done\"}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <div\n className={`grow ${expanded ? \"\" : \"cursor-pointer\"}`}\n onClick={expanded ? undefined : setExpanded}\n >\n <div className=\"space-y-3\" id={id.toString()}>\n <h4 className={expanded ? \"text-sm font-semibold\" : \"text-sm\"}>\n {title}\n </h4>\n <Collapsible open={expanded}>\n <CollapsibleContent className=\"pb-2 pr-2\">\n <div className=\"space-y-4\">\n <p className=\"text-sm text-gray-600\">{description}</p>\n {(primaryButton || secondaryButton) && (\n <div className=\"space-x-3\">\n {primaryButton && (\n <Button {...primaryButton.props}>\n {primaryButton.content}\n </Button>\n )}\n {secondaryButton && (\n <Button variant=\"outline\" {...secondaryButton.props}>\n {secondaryButton.content}\n </Button>\n )}\n </div>\n )}\n </div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n {image && expanded && (\n <img\n src={image.url}\n alt={image.alt}\n className=\"hidden md:block max-h-24\"\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n","import {\n Sheet as ShadcnSheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"../ui/sheet\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\n\nexport type SheetPrimitiveRootProps = React.ComponentProps<\n typeof SheetPrimitive.Root\n>;\n\nexport type SheetProps = {\n title: string;\n children: React.ReactNode;\n description?: string;\n trigger?: React.ReactNode;\n} & SheetPrimitiveRootProps;\n\nexport const Sheet = ({\n title,\n trigger,\n description,\n children,\n ...props\n}: SheetProps) => {\n return (\n <ShadcnSheet {...props}>\n {trigger && <SheetTrigger>{trigger}</SheetTrigger>}\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n {children}\n </SheetHeader>\n </SheetContent>\n </ShadcnSheet>\n );\n};\n","import { X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Variants } from \"../ui\";\n\nexport interface TagsInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\"\n > {\n variant?: Variants;\n value: string[];\n onChange: (tags: string[]) => void;\n}\n\nexport const TagsInput = React.forwardRef<HTMLInputElement, TagsInputProps>(\n ({ variant = \"default\", className, value, onChange, ...props }, ref) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if ((event.key === \"Enter\" || event.key === \",\") && inputValue.trim()) {\n if (event.key === \",\") {\n event.preventDefault();\n }\n event.preventDefault();\n onChange([...value, inputValue.trim()]);\n setInputValue(\"\");\n } else if (event.key === \"Backspace\" && !inputValue && value.length > 0) {\n onChange(value.slice(0, -1));\n }\n };\n\n const removeTag = (index: number) => {\n onChange(value.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap gap-2 p-2 border rounded\">\n {value.map((tag, index) => (\n <span\n key={index}\n className=\"bg-gray-200 px-2 py-1 rounded flex items-center\"\n >\n {tag}\n <X\n className=\"ml-1 w-4 h-4 cursor-pointer\"\n onClick={() => removeTag(index)}\n />\n </span>\n ))}\n <input\n className=\"grow border-none focus:ring-0\"\n ref={ref}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n {...props}\n />\n </div>\n );\n }\n);\n\nTagsInput.displayName = \"TagsInput\";\n","import * as React from \"react\";\nimport {\n Textarea as ShadcnTextarea,\n TextareaProps as ShadcnTextareaProps,\n} from \"../ui/textarea\";\nimport { Variants } from \"../ui\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { RegisterOptions, Control } from \"react-hook-form\";\n\nexport interface TextareaProps extends ShadcnTextareaProps {\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n variant?: Variants;\n rules?: RegisterOptions;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n variant = \"default\",\n className,\n title,\n name,\n control,\n isFormField,\n rules,\n ...props\n },\n ref\n ) => {\n return isFormField ? (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnTextarea\n className={`${className} resize-none`}\n {...field}\n {...props}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnTextarea\n className={`${className} resize-none`}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n","\"use client\";\nimport { Clock } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Select } from \"./select\";\n\nexport type TimePickerProps = {\n value?: string;\n onValueChange: (time: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n value,\n onValueChange,\n placeholder = \"Select time\",\n className = \"\",\n disabled = false,\n}) => {\n const [open, setOpen] = useState(false);\n\n const hours = Array.from({ length: 24 }, (_, i) => ({\n value: i.toString().padStart(2, \"0\"),\n label: i.toString().padStart(2, \"0\"),\n }));\n\n const minutes = Array.from({ length: 60 }, (_, i) => ({\n value: i.toString().padStart(2, \"0\"),\n label: i.toString().padStart(2, \"0\"),\n }));\n\n const [hour, minute] = value?.split(\":\") || [\"00\", \"00\"];\n\n const handleHourChange = (newHour: string) => {\n onValueChange(`${newHour}:${minute}`);\n };\n\n const handleMinuteChange = (newMinute: string) => {\n onValueChange(`${hour}:${newMinute}`);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={`w-full justify-start text-left font-normal ${className}`}\n disabled={disabled}\n >\n <Clock className=\"mr-2 h-4 w-4\" />\n {value || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-4\" align=\"start\">\n <div className=\"flex items-center gap-2\">\n <Select\n defaultValue={hour}\n placeholder=\"Select hour\"\n onValueChange={handleHourChange}\n options={hours}\n className=\"w-[80px]\"\n />\n <span className=\"text-lg\">:</span>\n <Select\n defaultValue={minute}\n placeholder=\"Select minute\"\n onValueChange={handleMinuteChange}\n options={minutes}\n className=\"w-[80px]\"\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n};","import { ReactNode } from \"react\";\nimport {\n Tooltip as ShadcnTooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport type TooltipProps = {\n children: ReactNode;\n tipContent: string;\n};\n\nexport const Tooltip = ({ children, tipContent }: TooltipProps) => {\n return (\n <TooltipProvider>\n <ShadcnTooltip delayDuration={0}>\n <TooltipTrigger>{children}</TooltipTrigger>\n <TooltipContent>\n <p>{tipContent}</p>\n </TooltipContent>\n </ShadcnTooltip>\n </TooltipProvider>\n );\n};\n","import { Loader2, Upload } from \"lucide-react\";\nimport { DropzoneOptions, FileRejection, useDropzone } from \"react-dropzone\";\nimport { toast } from \"sonner\";\nimport { getFileIcon, getFileName } from \"./helpers\";\n\ninterface UploadWidgetProps {\n accept: DropzoneOptions[\"accept\"];\n maxSize: number;\n maxFiles: number;\n fileUrls: string[];\n isUploading?: boolean;\n onFilesSelected: (urls: File[]) => void;\n}\n\nexport function UploadWidget({\n accept,\n maxSize,\n maxFiles,\n fileUrls,\n isUploading,\n onFilesSelected,\n}: UploadWidgetProps) {\n const fileMaxSizeMB = maxSize / 1024 / 1024;\n const acceptedTypes = accept ? Object.values(accept).flat().join(\", \") : \"\";\n\n const onDropFiles = (\n acceptedFiles: File[],\n fileRejections: FileRejection[]\n ) => {\n onFilesSelected(acceptedFiles);\n\n if (fileRejections.length > 0) {\n if (fileRejections[0].errors[0].code === \"file-too-large\") {\n toast.error(\n `File size is too large. Please upload a file smaller than ${fileMaxSizeMB}MB.`\n );\n } else {\n toast.error(\n `File type is not supported. Please upload ${acceptedTypes.replace(/\\./g, \"\")} files.`\n );\n }\n }\n };\n\n const dropzoneOptions: DropzoneOptions = {\n onDrop: onDropFiles,\n accept,\n maxSize,\n maxFiles,\n };\n\n const { getRootProps, getInputProps, isDragActive } =\n useDropzone(dropzoneOptions);\n\n return (\n <div\n {...getRootProps()}\n className=\"relative border-2 border-dashed border-gray-300 rounded-lg p-6 text-center cursor-pointer min-h-[160px]\"\n >\n {isUploading && (\n <div className=\"absolute top-3 right-3\">\n <Loader2 className=\"animate-spin h-6 w-6 text-primary\" />\n </div>\n )}\n <input {...getInputProps()} />\n {isDragActive ? (\n <p>Drop the files here ...</p>\n ) : (\n <div>\n <Upload className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p>Drag n drop some files here, or click to select files</p>\n <p className=\"text-sm text-gray-500\">\n Only {acceptedTypes} files up to {fileMaxSizeMB}MB are accepted\n </p>\n </div>\n )}\n {fileUrls.length > 0 && (\n <div className=\"mt-4 border-t border-gray-300 pt-4\">\n <ul className=\"flex flex-wrap gap-2\">\n {fileUrls.map((url, i) => {\n const fileName = getFileName(url);\n return (\n <li key={i} className=\"flex items-center space-x-2 text-sm\">\n <div>{getFileIcon(fileName)}</div>\n <span>{fileName}</span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","import ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nexport function MarkdownRenderer({ content }: { content: string }) {\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n className=\"text-primary-900\"\n components={{\n a: ({ node, ...props }) => (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:underline\"\n {...props}\n />\n ),\n h1: ({ node, ...props }) => (\n <h1 className=\"text-2xl font-bold mt-6 mb-4\" {...props} />\n ),\n h2: ({ node, ...props }) => (\n <h2 className=\"text-xl font-semibold mt-5 mb-3\" {...props} />\n ),\n h3: ({ node, ...props }) => (\n <h3 className=\"text-lg font-semibold mt-4 mb-2\" {...props} />\n ),\n code: ({ node, ...props }) => (\n <code\n className={\"block bg-stone-100 p-3 rounded font-mono\"}\n {...props}\n />\n ),\n ul: ({ node, ...props }) => (\n <ul className=\"list-disc pl-6 my-4\" {...props} />\n ),\n ol: ({ node, ...props }) => (\n <ol className=\"list-decimal pl-6 my-4\" {...props} />\n ),\n p: ({ node, ...props }) => <p className=\"my-4\" {...props} />,\n blockquote: ({ node, ...props }) => (\n <blockquote\n className=\"border-l-4 border-stone-200 pl-4 my-4 italic\"\n {...props}\n />\n ),\n }}\n >\n {content}\n </ReactMarkdown>\n );\n}\n\n\n","export function ChatLoading() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 60 15\"\n width=\"60\"\n height=\"15\"\n >\n <circle cx=\"7.5\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n <circle cx=\"30\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0.2s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n <circle cx=\"52.5\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0.4s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n </svg>\n );\n}\n","\"use client\";\nimport { Separator } from \"../ui/separator\";\nimport { ArrowLeft, icons, Loader2 } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport React from \"react\";\n\nexport type ActionButtonColor =\n | \"red\"\n | \"blue\"\n | \"green\"\n | \"yellow\"\n | \"purple\"\n | \"gray\";\n\nconst colorStyles: Record<ActionButtonColor, string> = {\n red: \"bg-red-50 hover:bg-red-100 text-red-600\",\n blue: \"bg-blue-50 hover:bg-blue-100 text-blue-600\",\n green: \"bg-green-50 hover:bg-green-100 text-green-600\",\n yellow: \"bg-yellow-50 hover:bg-yellow-100 text-yellow-600\",\n purple: \"bg-purple-50 hover:bg-purple-100 text-purple-600\",\n gray: \"bg-gray-50 hover:bg-gray-100 text-gray-600\",\n};\n\nexport interface ActionButton {\n label: string;\n icon: keyof typeof icons;\n action: () => Promise<void>;\n isLoading?: boolean;\n color: ActionButtonColor;\n}\n\ninterface EloquentActionBarProps {\n showBack?: boolean;\n buttons: ActionButton[];\n title?: string;\n}\n\nexport function EloquentActionBar({\n showBack = true,\n buttons,\n title,\n}: EloquentActionBarProps) {\n const router = useRouter();\n const LucideIcons = icons;\n\n return (\n <div className=\"flex bg-white border-gray-200 border-b border-x rounded-t-lg items-center\">\n {showBack && (\n <>\n <button\n onClick={() => router.back()}\n className=\"flex items-center px-3 py-2 hover:bg-gray-100 transition-colors\"\n >\n <ArrowLeft className=\"w-5 h-5 mr-2 text-gray-600\" />\n <span className=\"text-gray-600 font-medium\">Back</span>\n </button>\n <Separator orientation=\"vertical\" className=\"h-full\" />\n </>\n )}\n\n <div className=\"flex items-center\">\n {buttons.map((button, index) => {\n const Icon = LucideIcons[button.icon];\n return (\n <React.Fragment key={button.label}>\n <button\n onClick={button.action}\n disabled={button.isLoading}\n className={`flex items-center px-4 py-2 transition-colors ${\n colorStyles[button.color]\n } ${button.isLoading ? \"opacity-70 cursor-not-allowed\" : \"\"}`}\n >\n {button.isLoading ? (\n <Loader2 className=\"w-5 h-5 mr-2 animate-spin\" />\n ) : (\n <Icon className=\"w-5 h-5 mr-2\" />\n )}\n <span className=\"font-medium\">{button.label}</span>\n </button>\n {index < buttons.length - 1 && (\n <Separator orientation=\"vertical\" className=\"h-full\" />\n )}\n </React.Fragment>\n );\n })}\n </div>\n {title && <span className=\"text-lg\">{title}</span>}\n </div>\n );\n}\n\n// Example usage:\n/*\nconst buttons: ActionButton[] = [\n {\n label: 'Save',\n icon: 'Save',\n action: async () => { await handleSave() },\n isLoading: false,\n color: 'blue'\n },\n {\n label: 'Run',\n icon: 'Play',\n action: async () => { await handleRun() },\n isLoading: false,\n color: 'green'\n },\n {\n label: 'Delete',\n icon: 'Trash2',\n action: async () => { await handleDelete() },\n isLoading: false,\n color: 'red'\n }\n];\n\n<EloquentActionBar\n showBack={true}\n buttons={buttons}\n/>\n*/\n","import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nfunction ColorDot({ color }: { color?: string }) {\n if (!color) return null;\n return (\n <div\n className=\"w-3 h-3 rounded-full mr-2 inline-block\"\n style={{ backgroundColor: color }}\n />\n );\n}\n\nexport function DropdownField({ schema, value, onChange }: SchemaFieldProps) {\n const options = schema.enum?.map((val, index) => ({\n value: String(val),\n label: schema[\"x-enumLabels\"]?.[index] || String(val),\n color: schema[\"x-enumColors\"]?.[index]\n }));\n\n const renderSelectedValue = () => {\n const selectedOption = options?.find(opt => opt.value === value);\n if (!selectedOption) return null;\n\n return (\n <div className=\"flex items-center\">\n <ColorDot color={selectedOption.color} />\n {selectedOption.label}\n </div>\n );\n };\n\n return (\n <Select\n value={value ?? \"\"}\n onValueChange={onChange}\n >\n <SelectTrigger>\n <SelectValue>{renderSelectedValue()}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {options?.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"flex items-center\"\n >\n <ColorDot color={option.color} />\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}","import { Input } from \"../ui/input\";\nimport { JSONSchema } from \"@elqnt/types\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nexport function StringField({\n name,\n schema,\n value,\n onChange,\n}: SchemaFieldProps) {\n const getInputType = (schema: JSONSchema): string => {\n if (schema.format) {\n switch (schema.format) {\n case \"email\":\n return \"email\";\n case \"uri\":\n return \"url\";\n case \"phone\":\n return \"tel\";\n case \"date\":\n return \"date\";\n case \"date-time\":\n return \"datetime-local\";\n default:\n return \"text\";\n }\n }\n switch (schema.type) {\n case \"integer\":\n case \"number\":\n return \"number\";\n default:\n return \"text\";\n }\n };\n\n return (\n <Input\n value={value || \"\"}\n onChange={(e) => onChange(e.target.value)}\n type={getInputType(schema)}\n inputMode={schema.format === \"phone\" ? \"tel\" : undefined}\n pattern={schema.pattern}\n step={schema.type === \"number\" ? \"0.01\" : undefined}\n min={schema.minimum}\n max={schema.maximum}\n minLength={schema.minLength}\n maxLength={schema.maxLength}\n required={schema.required?.includes(name)}\n />\n );\n}\n","import { Textarea } from \"../ui\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nexport function StringMultiLineField({\n name,\n schema,\n value,\n onChange,\n}: SchemaFieldProps) {\n return (\n <Textarea\n value={value || \"\"}\n onChange={(e) => onChange(e.target.value)}\n required={schema.required?.includes(name)}\n minLength={schema.minLength}\n maxLength={schema.maxLength}\n />\n );\n}\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Input } from \"../ui/input\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../../lib/utils\";\nimport { RiCheckLine } from \"@remixicon/react\";\n// import Link from \"@tiptap/extension-link\";\n// import { BubbleMenu, EditorContent, useEditor } from \"@tiptap/react\";\n// import StarterKit from \"@tiptap/starter-kit\";\nimport { useState } from \"react\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\ninterface ToolbarButtonProps {\n onClick: () => void;\n icon: React.ReactNode;\n label: string;\n isActive?: boolean;\n}\n\nconst ToolbarButton = ({\n onClick,\n icon,\n label,\n isActive,\n}: ToolbarButtonProps) => (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n isActive && \"bg-accent text-accent-foreground\"\n )}\n onClick={onClick}\n >\n <span className=\"sr-only\">{label}</span>\n {icon}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{label}</p>\n </TooltipContent>\n </Tooltip>\n);\n\nconst LinkEditor = ({ editor }: { editor: any }) => {\n const [url, setUrl] = useState(\"\");\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n // Add http:// if no protocol is specified\n let processedUrl = url;\n if (url && !url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n processedUrl = `https://${url}`;\n }\n if (processedUrl) {\n editor.chain().focus().setLink({ href: processedUrl }).run();\n setUrl(\"\"); // Reset input after adding\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"flex gap-2\">\n <Input\n type=\"url\"\n placeholder=\"Enter URL\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n className=\"h-8\"\n />\n <Button type=\"submit\" size=\"sm\" className=\"h-8\">\n <RiCheckLine className=\"h-4 w-4\" />\n </Button>\n </form>\n );\n};\n\nexport function TextField({ schema, value, onChange }: SchemaFieldProps) {\n // const editor = useEditor({\n // extensions: [\n // StarterKit,\n // Link.configure({\n // openOnClick: false,\n // HTMLAttributes: {\n // class:\n // \"text-primary underline underline-offset-4 hover:text-primary/80\",\n // },\n // }),\n // ],\n // content: value || \"\",\n // editorProps: {\n // attributes: {\n // class: cn(\n // \"prose prose-sm max-w-none p-4\",\n // \"focus:outline-none overflow-y-auto\",\n // \"min-h-[250px] max-h-[600px]\",\n // \"scrollbar scrollbar-w-2 scrollbar-track-transparent\",\n // \"scrollbar-thumb-gray-200 hover:scrollbar-thumb-gray-300\",\n // \"dark:scrollbar-thumb-gray-700 dark:hover:scrollbar-thumb-gray-600\"\n // ),\n // },\n // },\n // onUpdate: ({ editor }) => {\n // onChange(editor.getHTML());\n // },\n // });\n\n // if (!editor) {\n // return null;\n // }\n\n // const toolbarGroups = [\n // [\n // {\n // icon: <RiArrowGoBackLine className=\"h-4 w-4\" />,\n // label: \"Undo\",\n // onClick: () => editor.chain().focus().undo().run(),\n // },\n // {\n // icon: <RiArrowGoForwardLine className=\"h-4 w-4\" />,\n // label: \"Redo\",\n // onClick: () => editor.chain().focus().redo().run(),\n // },\n // {\n // icon: <RiFormatClear className=\"h-4 w-4\" />,\n // label: \"Clear Format\",\n // onClick: () =>\n // editor.chain().focus().clearNodes().unsetAllMarks().run(),\n // },\n // ],\n // [\n // {\n // icon: <RiBold className=\"h-4 w-4\" />,\n // label: \"Bold\",\n // onClick: () => editor.chain().focus().toggleBold().run(),\n // isActive: editor.isActive(\"bold\"),\n // },\n // {\n // icon: <RiItalic className=\"h-4 w-4\" />,\n // label: \"Italic\",\n // onClick: () => editor.chain().focus().toggleItalic().run(),\n // isActive: editor.isActive(\"italic\"),\n // },\n // {\n // icon: <RiStrikethrough className=\"h-4 w-4\" />,\n // label: \"Strike\",\n // onClick: () => editor.chain().focus().toggleStrike().run(),\n // isActive: editor.isActive(\"strike\"),\n // },\n // {\n // icon: <RiCodeSSlashLine className=\"h-4 w-4\" />,\n // label: \"Code\",\n // onClick: () => editor.chain().focus().toggleCode().run(),\n // isActive: editor.isActive(\"code\"),\n // },\n // ],\n // [\n // {\n // icon: <RiH1 className=\"h-4 w-4\" />,\n // label: \"Heading 1\",\n // onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n // isActive: editor.isActive(\"heading\", { level: 1 }),\n // },\n // {\n // icon: <RiH2 className=\"h-4 w-4\" />,\n // label: \"Heading 2\",\n // onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n // isActive: editor.isActive(\"heading\", { level: 2 }),\n // },\n // ],\n // [\n // {\n // icon: <RiListUnordered className=\"h-4 w-4\" />,\n // label: \"Bullet List\",\n // onClick: () => editor.chain().focus().toggleBulletList().run(),\n // isActive: editor.isActive(\"bulletList\"),\n // },\n // {\n // icon: <RiListOrdered className=\"h-4 w-4\" />,\n // label: \"Ordered List\",\n // onClick: () => editor.chain().focus().toggleOrderedList().run(),\n // isActive: editor.isActive(\"orderedList\"),\n // },\n // ],\n // [\n // {\n // icon: <RiDoubleQuotesL className=\"h-4 w-4\" />,\n // label: \"Blockquote\",\n // onClick: () => editor.chain().focus().toggleBlockquote().run(),\n // isActive: editor.isActive(\"blockquote\"),\n // },\n // {\n // icon: <RiSeparator className=\"h-4 w-4\" />,\n // label: \"Horizontal Rule\",\n // onClick: () => editor.chain().focus().setHorizontalRule().run(),\n // },\n // ],\n // ];\n\n return (\n <TooltipProvider>\n <div className=\"rounded-lg border bg-background flex flex-col\">\n {/* <div className=\"flex flex-wrap gap-1 border-b p-1\">\n {toolbarGroups.map((group, index) => (\n <div key={index} className=\"flex items-center gap-1\">\n {group.map((item) => (\n <ToolbarButton key={item.label} {...item} />\n ))}\n {index < toolbarGroups.length - 1 && (\n <div className=\"mx-1 h-8 w-px bg-border\" />\n )}\n </div>\n ))}\n <div className=\"mx-1 h-8 w-px bg-border\" />\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n editor.isActive(\"link\") && \"bg-accent text-accent-foreground\"\n )}\n >\n <RiLinkM className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\">\n <LinkEditor editor={editor} />\n </PopoverContent>\n </Popover>\n {editor.isActive(\"link\") && (\n <ToolbarButton\n icon={<RiLinkUnlink className=\"h-4 w-4\" />}\n label=\"Remove Link\"\n onClick={() => editor.chain().focus().unsetLink().run()}\n />\n )}\n </div>\n <EditorContent editor={editor} />\n <BubbleMenu editor={editor} tippyOptions={{ duration: 100 }}>\n <div className=\"flex items-center gap-1 rounded-lg border bg-background p-1 shadow-md\">\n <ToolbarButton\n icon={<RiBold className=\"h-4 w-4\" />}\n label=\"Bold\"\n onClick={() => editor.chain().focus().toggleBold().run()}\n isActive={editor.isActive(\"bold\")}\n />\n <ToolbarButton\n icon={<RiItalic className=\"h-4 w-4\" />}\n label=\"Italic\"\n onClick={() => editor.chain().focus().toggleItalic().run()}\n isActive={editor.isActive(\"italic\")}\n />\n <ToolbarButton\n icon={<RiStrikethrough className=\"h-4 w-4\" />}\n label=\"Strike\"\n onClick={() => editor.chain().focus().toggleStrike().run()}\n isActive={editor.isActive(\"strike\")}\n />\n <div className=\"mx-1 h-6 w-px bg-border\" />\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n editor.isActive(\"link\") &&\n \"bg-accent text-accent-foreground\"\n )}\n >\n <RiLinkM className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\">\n <LinkEditor editor={editor} />\n </PopoverContent>\n </Popover>\n {editor.isActive(\"link\") && (\n <ToolbarButton\n icon={<RiLinkUnlink className=\"h-4 w-4\" />}\n label=\"Remove Link\"\n onClick={() => editor.chain().focus().unsetLink().run()}\n />\n )}\n </div>\n </BubbleMenu> */}\n\n <Input\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </TooltipProvider>\n );\n}\n","import { Label } from \"../ui/label\";\nimport { cn } from \"../../lib/utils\";\nimport { EntityFieldTypeTS } from \"@elqnt/entity\";\nimport { JSONSchema } from \"@elqnt/types\";\nimport { ReactNode } from \"react\";\nimport { DropdownField } from \"./dropdown-field\";\nimport { StringField } from \"./string-field\";\nimport { StringMultiLineField } from \"./string-multi-line-field\";\nimport { TextField } from \"./text-field\";\n\nexport interface SchemaFieldProps {\n name: string;\n schema: JSONSchema;\n value?: any;\n onChange: (value: any) => void;\n label?: ReactNode;\n}\n\nexport function getFieldType(schema: JSONSchema): EntityFieldTypeTS {\n if (schema.enum) return \"dropdown\";\n if (schema.format === \"richtext\") return \"text\";\n if (schema.format === \"multiline\") return \"stringMultiline\";\n if (schema.format === \"email\") return \"email\";\n if (schema.format === \"phone\") return \"phone\";\n if (schema.format === \"uri\") return \"url\";\n return schema.type as EntityFieldTypeTS;\n}\n\nexport function getColspanBySchema(schema: JSONSchema) {\n return getFieldType(schema) === \"text\" ? \"col-span-2\" : \"\";\n}\n\nexport function SchemaField(props: SchemaFieldProps) {\n const { name, schema, value, onChange, label } = props;\n const fieldType = getFieldType(schema);\n\n const renderField = () => {\n switch (fieldType) {\n case \"string\":\n case \"email\":\n case \"phone\":\n case \"url\":\n return <StringField {...props} />;\n\n case \"stringMultiline\":\n return <StringMultiLineField {...props} />;\n\n case \"text\":\n return <TextField {...props} />;\n\n case \"dropdown\":\n return <DropdownField {...props} />;\n\n default:\n return (\n <div className=\"text-red-500\">\n Unsupported field type: {fieldType}\n </div>\n );\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", getColspanBySchema(schema))}>\n <Label>\n {label ?? schema.title ?? name}\n {schema.required && <span className=\"text-red-500\">*</span>}\n </Label>\n {renderField()}\n {schema.description && (\n <p className=\"text-sm text-gray-500\">{schema.description}</p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getFileIcon, getFileName } from \"@elqnt/docs\";\nimport { Loader2, UploadCloud } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { DropzoneOptions, FileRejection, useDropzone } from \"react-dropzone\";\nimport { toast } from \"sonner\";\nimport { uploadFile, uploadToS3 } from \"./upload-actions\";\n\ninterface UploadWidgetV2Props {\n accept: DropzoneOptions[\"accept\"];\n maxSize: number;\n maxFiles?: number;\n onFilesUploaded: (fileUrls: string[]) => void;\n className?: string;\n uploadDestination?: \"azure\" | \"s3\";\n hideUploadedFiles?: boolean;\n}\n\nexport function UploadWidgetV2({\n accept,\n maxSize,\n maxFiles = 1,\n onFilesUploaded,\n className,\n uploadDestination = \"azure\",\n hideUploadedFiles = false,\n}: UploadWidgetV2Props) {\n const [isUploading, setIsUploading] = useState(false);\n const [fileUrls, setFileUrls] = useState<string[]>([]);\n\n const fileMaxSizeMB = maxSize / 1024 / 1024;\n const acceptedTypes = accept ? Object.values(accept).flat().join(\", \") : \"\";\n\n const handleUpload = async (files: File[]) => {\n setIsUploading(true);\n\n try {\n const uploadFunction = uploadDestination === \"s3\" ? uploadToS3 : uploadFile;\n\n const uploadPromises = files.map(async (file) => {\n const formData = new FormData();\n formData.append(\"file\", file);\n return uploadFunction(formData);\n });\n\n const results = await Promise.all(uploadPromises);\n const failedUploads = results.filter((result) => !result.success);\n\n if (failedUploads.length > 0) {\n throw new Error(`${failedUploads.length} file(s) failed to upload`);\n }\n\n const urls = results.map((result) => result.fileUrl!);\n setFileUrls((prev) => [...prev, ...urls]);\n onFilesUploaded(urls);\n } catch (err) {\n toast.error(err instanceof Error ? err.message : \"Upload failed\");\n } finally {\n setIsUploading(false);\n }\n };\n\n const onDropFiles = (\n acceptedFiles: File[],\n fileRejections: FileRejection[]\n ) => {\n if (fileRejections.length > 0) {\n if (fileRejections[0].errors[0].code === \"file-too-large\") {\n toast.error(\n `File size is too large. Please upload a file smaller than ${fileMaxSizeMB}MB.`\n );\n } else {\n toast.error(\n `File type is not supported. Please upload ${acceptedTypes.replace(/\\./g, \"\")} files.`\n );\n }\n return;\n }\n\n handleUpload(acceptedFiles);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: onDropFiles,\n accept,\n maxSize,\n maxFiles,\n });\n\n return (\n <div\n {...getRootProps()}\n className={cn(\n \"relative border-2 border-dashed border-gray-300 rounded-lg p-6 text-center cursor-pointer min-h-[160px]\",\n className\n )}\n >\n {isUploading && (\n <div className=\"absolute top-3 right-3\">\n <Loader2 className=\"animate-spin h-6 w-6 text-primary\" />\n </div>\n )}\n <input {...getInputProps()} />\n {isDragActive ? (\n <p>Drop the files here ...</p>\n ) : (\n <div>\n <UploadCloud className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p>Drag n drop some files here, or click to select files</p>\n <p className=\"text-sm text-gray-500\">\n Only {acceptedTypes} files up to {fileMaxSizeMB}MB are accepted\n </p>\n </div>\n )}\n {!hideUploadedFiles && fileUrls.length > 0 && (\n <div className=\"mt-4 border-t border-gray-300 pt-4\">\n <ul className=\"flex flex-wrap gap-2\">\n {fileUrls.map((url, i) => {\n const fileName = getFileName(url);\n return (\n <li key={i} className=\"flex items-center space-x-2 text-sm\">\n <div>{getFileIcon(fileName)}</div>\n <span>{fileName}</span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useState } from \"react\";\nimport { useWatch } from \"react-hook-form\";\n\nfunction convertDataUrlToUint8Array(dataURL: string) {\n const base64String = dataURL.split(\",\")[1];\n const binaryString = atob(base64String);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nconst JS_OS_FILE_UPLOAD = \"file-upload\";\n\nexport const useFileUpload = (formFieldName: string) => {\n const files = useWatch({ name: formFieldName }) as FileList | undefined;\n\n const [fileUrls, setFileUrls] = useState<string[]>([]);\n const [isUploading, setIsUploading] = useState(false);\n\n const { request, ObjectStore } = useNatsContext();\n\n useEffect(() => {\n if (!files || files.length === 0) return;\n\n const uploadFiles = async () => {\n setIsUploading(true);\n const bucket = JS_OS_FILE_UPLOAD;\n\n const filesArray = Array.from(files); // Convert FileList to an array\n for (const file of filesArray) {\n // console.log(\"will upload file\", file);\n\n // Create a new FileReader instance\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n try {\n await new Promise<void>((resolve, reject) => {\n reader.onloadend = async () => {\n const dataURL = reader.result as string;\n const uint8Array = convertDataUrlToUint8Array(dataURL);\n\n const os = await ObjectStore(bucket);\n\n if (os instanceof Error) {\n console.error(os);\n reject(os);\n return;\n }\n\n const extension = file.name.match(/\\.[^/.]+$/)?.[0];\n const name =\n file.name.replace(/\\.[^/.]+$/, \"\") +\n \"-\" +\n Date.now() +\n extension;\n\n const meta = {\n \"Content-Type\": file.type,\n name,\n };\n\n const result = await os.putBlob(meta, uint8Array);\n\n if (result instanceof Error) {\n console.error(result);\n reject(result);\n return;\n }\n\n const res = await request<object, any>(\"entities.uploadFile\", {\n fileName: name,\n mimeType: file.type,\n });\n\n if (res instanceof Error) {\n console.error(res);\n reject(res);\n return;\n }\n\n const { url } = res;\n\n const deleteRes = await os.delete(name);\n\n if (deleteRes instanceof Error) {\n console.error(deleteRes);\n reject(deleteRes);\n return;\n }\n\n // console.log(\"file deleted successfully\", name);\n console.log(\"file uploaded successfully\", url);\n\n setFileUrls((prevUrls) => [...prevUrls, url]);\n resolve();\n };\n });\n } catch (error) {\n console.error(\"Error uploading file:\", error);\n // Optionally handle the error, e.g., show an error message\n continue; // This will now correctly skip to the next iteration of the loop\n }\n }\n setIsUploading(false);\n };\n\n uploadFiles();\n }, [files]);\n\n return { fileUrls, isUploading };\n};\n"],"mappings":"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","names":["React","jsx","jsx","React","jsx","React","jsx","jsxs","jsxs","jsx","cva","jsx","cva","jsx","jsxs","React","jsx","Button","jsx","Button","jsx","jsxs","Button","jsx","jsxs","React","cva","jsx","cva","jsx","jsxs","Alert","React","jsx","jsx","jsxs","Avatar","Fragment","React","Slot","jsx","jsxs","Slot","jsx","jsxs","Breadcrumb","Fragment","React","jsx","jsx","jsxs","Card","React","React","CheckIcon","jsx","CheckIcon","React","Slot","React","cva","jsx","cva","Label","jsx","Label","Slot","jsx","jsxs","Checkbox","useEffect","useState","React","jsx","jsxs","jsxs","jsx","React","jsx","jsx","jsx","jsxs","useState","useEffect","React","jsx","jsxs","Command","ChevronDownIcon","ChevronRightIcon","React","React","CheckIcon","ChevronRightIcon","jsx","jsxs","jsxs","jsx","ChevronRightIcon","CheckIcon","React","jsx","jsx","jsxs","ChevronDownIcon","ChevronRightIcon","defaultOptions","format","defaultOptions","defaultOptions","localize","formatLong","format","defaultOptions","jsx","Fragment","jsx","jsxs","jsx","jsxs","Dialog","Button","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","Drawer","jsx","jsxs","DropdownMenu","useEffect","useState","jsx","jsxs","useState","CheckIcon","React","jsx","Separator","Fragment","jsx","jsxs","useState","Separator","CheckIcon","jsx","jsxs","FormProvider","jsx","jsxs","FormProvider","Button","jsx","jsxs","React","CheckIcon","jsx","RadioGroup","CheckIcon","React","Cross2Icon","cva","jsx","jsxs","jsx","cva","jsxs","Cross2Icon","React","jsx","React","jsx","React","Fragment","jsx","jsxs","config","jsx","jsxs","Fragment","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","React","jsx","jsxs","Input","Loader2","Fragment","jsx","jsxs","useEffect","useState","jsx","useState","useEffect","jsx","jsxs","Button","useUserContext","Link","useRouter","useEffect","useState","Link","useRouter","jsx","jsxs","useRouter","Link","Fragment","jsx","jsxs","useRouter","useUserContext","useState","useEffect","apps","Link","Check","X","useState","jsx","jsxs","X","Check","Check","Loader2","useEffect","useState","jsx","jsxs","currentStepData","jsx","jsxs","Popover","React","jsx","jsxs","RadioGroup","React","jsx","jsxs","ScrollArea","ScrollBar","jsx","jsxs","Select","CollapsibleContent","React","jsx","Check","useId","useState","jsx","jsxs","CollapsibleContent","jsx","jsxs","Sheet","X","React","jsx","jsxs","React","jsx","jsxs","Textarea","useState","jsx","jsxs","useState","Select","jsx","jsxs","Tooltip","Loader2","jsx","jsxs","Loader2","jsx","jsx","jsxs","icons","Loader2","useRouter","React","Fragment","jsx","jsxs","Separator","Icon","jsx","jsxs","jsx","schema","jsx","useState","jsx","jsxs","jsx","jsx","jsxs","Label","getFileIcon","getFileName","Loader2","useState","useDropzone","toast","jsx","jsxs","useState","toast","useDropzone","Loader2","getFileName","getFileIcon","useEffect","useState"]}
|
|
1
|
+
{"version":3,"sources":["../components/ui/button.tsx","../lib/utils.ts","../components/ui/dialog.tsx","../components/ui/input.tsx","../components/ui/select.tsx","../components/entities/filter-dialog.tsx","../components/ui/badge.tsx","../components/form-controls/button.tsx","../components/form-controls/action-bar/back-button.tsx","../components/form-controls/icon.tsx","../components/form-controls/action-bar/action-bar-button.tsx","../components/form-controls/action-bar/action-bar.tsx","../components/ui/alert.tsx","../components/form-controls/alert.tsx","../components/ui/avatar.tsx","../components/form-controls/avatar.tsx","../components/form-controls/breadcrumb.tsx","../components/ui/breadcrumb.tsx","../components/ui/card.tsx","../components/form-controls/card.tsx","../components/form-controls/checkbox.tsx","../components/ui/checkbox.tsx","../components/ui/form.tsx","../components/ui/label.tsx","../components/form-controls/combobox.tsx","../components/ui/command.tsx","../components/ui/popover.tsx","../components/form-controls/command.tsx","../components/form-controls/data-table.tsx","../components/ui/dropdown-menu.tsx","../components/ui/table.tsx","../components/form-controls/date-filter.tsx","../../../node_modules/date-fns/constants.js","../../../node_modules/date-fns/constructFrom.js","../../../node_modules/date-fns/toDate.js","../../../node_modules/date-fns/_lib/defaultOptions.js","../../../node_modules/date-fns/startOfWeek.js","../../../node_modules/date-fns/startOfISOWeek.js","../../../node_modules/date-fns/getISOWeekYear.js","../../../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../../../node_modules/date-fns/_lib/normalizeDates.js","../../../node_modules/date-fns/startOfDay.js","../../../node_modules/date-fns/differenceInCalendarDays.js","../../../node_modules/date-fns/startOfISOWeekYear.js","../../../node_modules/date-fns/isDate.js","../../../node_modules/date-fns/isValid.js","../../../node_modules/date-fns/startOfYear.js","../../../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../../../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../../../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../../../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../../../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../../../node_modules/date-fns/locale/en-US/_lib/localize.js","../../../node_modules/date-fns/locale/_lib/buildMatchFn.js","../../../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../../../node_modules/date-fns/locale/en-US/_lib/match.js","../../../node_modules/date-fns/locale/en-US.js","../../../node_modules/date-fns/getDayOfYear.js","../../../node_modules/date-fns/getISOWeek.js","../../../node_modules/date-fns/getWeekYear.js","../../../node_modules/date-fns/startOfWeekYear.js","../../../node_modules/date-fns/getWeek.js","../../../node_modules/date-fns/_lib/addLeadingZeros.js","../../../node_modules/date-fns/_lib/format/lightFormatters.js","../../../node_modules/date-fns/_lib/format/formatters.js","../../../node_modules/date-fns/_lib/format/longFormatters.js","../../../node_modules/date-fns/_lib/protectedTokens.js","../../../node_modules/date-fns/format.js","../components/ui/calendar.tsx","../components/form-controls/dialog.tsx","../components/ui/drawer.tsx","../components/ui/scroll-area.tsx","../components/form-controls/drawer.tsx","../components/form-controls/dropdown-menu.tsx","../components/form-controls/duration-input.tsx","../components/form-controls/filter-combobox.tsx","../components/ui/separator.tsx","../components/form-controls/form-combobox.tsx","../components/form-controls/form-layout.tsx","../components/form-controls/form-row.tsx","../components/ui/radio-group.tsx","../components/ui/sheet.tsx","../components/ui/textarea.tsx","../components/ui/tooltip.tsx","../components/ui/chart.tsx","../components/ui/slider.tsx","../components/form-controls/form-with-action-buttons.tsx","../components/form-controls/helpers.tsx","../components/form-controls/icon-button.tsx","../components/form-controls/input.tsx","../components/form-controls/knowledge-graph-word-cloud.tsx","../components/form-controls/layout/org-selector.tsx","../components/form-controls/layout/page-header.tsx","../components/form-controls/layout/left-nav.tsx","../components/form-controls/layout/profile-menu.tsx","../components/form-controls/multi-select.tsx","../components/form-controls/multi-step-process.tsx","../components/form-controls/popover.tsx","../components/form-controls/radio-group.tsx","../components/form-controls/scroll-area.tsx","../components/form-controls/select.tsx","../components/ui/collapsible.tsx","../components/ui/progress.tsx","../components/form-controls/setup-guide.tsx","../components/form-controls/sheet.tsx","../components/form-controls/tags-input.tsx","../components/form-controls/textarea.tsx","../components/form-controls/time-picker.tsx","../components/form-controls/tooltip.tsx","../components/form-controls/upload-widget.tsx","../components/general/markdown-renderer.tsx","../components/general/chat-loading.tsx","../components/layout/action-bar.tsx","../components/schema-fields/dropdown-field.tsx","../components/schema-fields/string-field.tsx","../components/schema-fields/string-multi-line-field.tsx","../components/schema-fields/text-field.tsx","../components/schema-fields/schema-field.tsx","../components/upload/upload-widget-v2.tsx","../components/upload/upload-actions.ts","../hooks/use-file-upload.ts"],"sourcesContent":["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 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function getBadgeVariant(status: string) {\n return status === \"open\" ? \"default\" : \"secondary\";\n}\n\n// export function getColspanByFieldType(fieldType: EntityFieldType) {\n// return fieldType === \"text\" ? \"col-span-2\" : \"\";\n// }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Dialog = DialogPrimitive.Root\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%] sm:rounded-lg\",\n className\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-1.5 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = \"DialogHeader\"\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = \"DialogFooter\"\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","import * as React from \"react\"\nimport {\n CaretSortIcon,\n CheckIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n} from \"@radix-ui/react-icons\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <CaretSortIcon className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUpIcon />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDownIcon />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\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 {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"px-2 py-1.5 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport {\n Dialog,\n DialogContent,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n} from \"../ui/dialog\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport {\n useEntityDefinitionContext,\n useEntityRecordContext,\n EntityQuery,\n} from \"@elqnt/entity\";\n\nimport { Badge } from \"../ui/badge\";\nimport { cn } from \"../../lib/utils\";\nimport { Filter, Paintbrush, Plus, X, XCircle } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\n\ninterface FilterDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nexport interface FilterCondition {\n field: string;\n operator: string;\n value: any;\n}\n\nconst OPERATORS = {\n string: [\"eq\", \"ne\", \"contains\", \"startsWith\", \"endsWith\"],\n text: [\"contains\", \"startsWith\", \"endsWith\"],\n int: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n float: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n date: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n datetime: [\"eq\", \"ne\", \"gt\", \"gte\", \"lt\", \"lte\", \"between\"],\n dropdown: [\"eq\", \"ne\", \"in\", \"nin\"],\n multiselect: [\"in\", \"nin\", \"contains\"],\n boolean: [\"eq\", \"ne\"],\n};\n\nconst OPERATOR_LABELS: Record<string, string> = {\n eq: \"Equals\",\n ne: \"Not equals\",\n gt: \"Greater than\",\n gte: \"Greater than or equal\",\n lt: \"Less than\",\n lte: \"Less than or equal\",\n in: \"In\",\n nin: \"Not in\",\n contains: \"Contains\",\n startsWith: \"Starts with\",\n endsWith: \"Ends with\",\n between: \"Between\",\n};\n\nconst DEFAULT_CONDITION: FilterCondition = {\n field: \"\",\n operator: \"\",\n value: \"\",\n};\n\nexport function FilterDialog({ open, onOpenChange }: FilterDialogProps) {\n const { selectedDefinition } = useEntityDefinitionContext();\n const { updateParams, params } = useEntityRecordContext();\n const [conditions, setConditions] = useState<FilterCondition[]>([\n DEFAULT_CONDITION,\n ]);\n const [hasActiveFilters, setHasActiveFilters] = useState(false);\n\n // Check if there are active filters in the params\n useEffect(() => {\n const hasFilters = params.filters && Object.keys(params.filters).length > 0;\n setHasActiveFilters(hasFilters);\n }, [params.filters]);\n\n const fields: any[] = [];\n\n const getOperatorsForField = (fieldType: string): string[] => {\n return OPERATORS[fieldType as keyof typeof OPERATORS] || OPERATORS.string;\n };\n\n const handleAddCondition = () => {\n setConditions([...conditions, { ...DEFAULT_CONDITION }]);\n };\n\n const handleRemoveCondition = (index: number) => {\n setConditions(conditions.filter((_, i) => i !== index));\n };\n\n const handleFieldChange = (index: number, fieldName: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n field: fieldName,\n operator: \"\",\n value: \"\",\n };\n setConditions(newConditions);\n };\n\n const handleOperatorChange = (index: number, operator: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n operator,\n };\n setConditions(newConditions);\n };\n\n const handleValueChange = (index: number, value: string) => {\n const newConditions = [...conditions];\n newConditions[index] = {\n ...newConditions[index],\n value,\n };\n setConditions(newConditions);\n };\n\n const handleClearFilters = () => {\n setConditions([{ ...DEFAULT_CONDITION }]);\n updateParams({ filters: {} });\n setHasActiveFilters(false);\n };\n\n const handleApplyFilters = () => {\n const validConditions = conditions.filter(\n (c) => c.field && c.operator && c.value\n );\n\n if (validConditions.length === 0) {\n updateParams({ filters: {} });\n setHasActiveFilters(false);\n onOpenChange(false);\n return;\n }\n\n const filters: Record<string, any> = {};\n\n validConditions.forEach(({ field, operator, value }) => {\n const fieldPath = `fields.${field}.valueString`;\n\n switch (operator) {\n case \"contains\":\n filters[fieldPath] = { $regex: value, $options: \"i\" };\n break;\n case \"startsWith\":\n filters[fieldPath] = { $regex: `^${value}`, $options: \"i\" };\n break;\n case \"endsWith\":\n filters[fieldPath] = { $regex: `${value}$`, $options: \"i\" };\n break;\n default:\n filters[fieldPath] = { [`$${operator}`]: value };\n }\n });\n\n const query: Partial<EntityQuery> = {\n filters:\n validConditions.length > 1\n ? { $and: Object.entries(filters).map(([k, v]) => ({ [k]: v })) }\n : filters,\n };\n\n updateParams(query);\n setHasActiveFilters(true);\n onOpenChange(false);\n };\n\n const getFieldByName = (fieldName: string): any | undefined => {\n return fields.find((f) => f.name === fieldName);\n };\n\n const activeFilterCount = conditions.filter(\n (c) => c.field && c.operator && c.value\n ).length;\n\n return (\n <>\n <div className=\"flex items-center\">\n <Button\n onClick={() => onOpenChange(true)}\n variant={hasActiveFilters ? \"secondary\" : \"outline\"}\n className={cn(\"relative group\", hasActiveFilters && \"rounded-r-none\")}\n >\n <Filter className=\"w-4 h-4 mr-2\" />\n Filter\n {activeFilterCount > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 bg-primary text-primary-foreground\"\n >\n {activeFilterCount}\n </Badge>\n )}\n </Button>\n {hasActiveFilters && (\n <Button\n variant=\"secondary\"\n size=\"icon\"\n onClick={handleClearFilters}\n className=\"text-muted-foreground -ml-2 rounded-l-none\"\n title=\"Clear filters\"\n >\n <Paintbrush className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-w-3xl\">\n <DialogHeader>\n <div className=\"flex items-center justify-between\">\n <DialogTitle>\n Filter {selectedDefinition?.displayName}\n </DialogTitle>\n {hasActiveFilters && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearFilters}\n className=\"text-muted-foreground hover:text-primary\"\n >\n <XCircle className=\"w-4 h-4 mr-2\" />\n Clear Filters\n </Button>\n )}\n </div>\n </DialogHeader>\n\n <div className=\"space-y-4\">\n {conditions.map((condition, index) => {\n const selectedField = getFieldByName(condition.field);\n const operators = selectedField\n ? getOperatorsForField(selectedField.type)\n : [];\n\n return (\n <div key={index} className=\"flex items-center gap-2\">\n <Select\n value={condition.field}\n onValueChange={(value) => handleFieldChange(index, value)}\n >\n <SelectTrigger className=\"w-[200px]\">\n <SelectValue placeholder=\"Select field\" />\n </SelectTrigger>\n <SelectContent>\n {/* @ts-ignore */}\n {fields.map((field) => (\n <SelectItem key={field.name} value={field.name}>\n {field.displayName}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Select\n value={condition.operator}\n onValueChange={(value) =>\n handleOperatorChange(index, value)\n }\n disabled={!condition.field}\n >\n <SelectTrigger className=\"w-[200px]\">\n <SelectValue placeholder=\"Select operator\" />\n </SelectTrigger>\n <SelectContent>\n {operators.map((op) => (\n <SelectItem key={op} value={op}>\n {OPERATOR_LABELS[op]}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n\n <Input\n placeholder=\"Value\"\n value={condition.value}\n onChange={(e) => handleValueChange(index, e.target.value)}\n disabled={!condition.operator}\n className=\"flex-1\"\n />\n\n {conditions.length > 1 && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n onClick={() => handleRemoveCondition(index)}\n className=\"text-muted-foreground hover:text-destructive\"\n >\n <X className=\"h-4 w-4\" />\n </Button>\n )}\n </div>\n );\n })}\n\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={handleAddCondition}\n >\n <Plus className=\"h-4 w-4 mr-2\" />\n Add Condition\n </Button>\n </div>\n\n <DialogFooter>\n <Button variant=\"outline\" onClick={() => onOpenChange(false)}>\n Cancel\n </Button>\n <Button onClick={handleApplyFilters}>Apply Filters</Button>\n </DialogFooter>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","import * as React from \"react\";\nimport {\n Button as ShadcnButton,\n ButtonProps as ShadcnButtonProps,\n} from \"../ui/button\";\n\nexport type ButtonProps = {\n children: React.ReactNode;\n type?: \"button\" | \"submit\" | \"reset\";\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n className?: string;\n onClick?: () => void;\n} & ShadcnButtonProps;\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ children, variant = \"default\", className = \"\", type, ...props }, ref) => {\n const buttonClass = `${variant === \"secondary\" ? \"button-secondary\" : \"\"} ${className}`;\n\n return (\n <ShadcnButton\n className={buttonClass}\n variant={variant}\n type={type}\n ref={ref}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n }\n);\n\nButton.displayName = \"Button\";\n","import { Button } from \"../button\";\n\nexport function BackButton() {\n return <Button onClick={() => {}}>Back</Button>;\n}\n","import { cn } from \"../../lib/utils\";\nimport { icons } from \"lucide-react\";\nimport { memo } from \"react\";\n\nexport type IconProps = {\n name: keyof typeof icons;\n size?: number;\n className?: string;\n strokeWidth?: number;\n};\n\nexport const Icon = memo(({ name, className, strokeWidth, size }: IconProps) => {\n const IconComponent = icons[name];\n\n if (!IconComponent) {\n return null;\n }\n\n return (\n <IconComponent\n className={cn(className)}\n strokeWidth={strokeWidth || 2.5}\n size={size}\n />\n );\n});\n\nIcon.displayName = \"Icon\";\n","import { icons } from \"lucide-react\";\nimport { Button } from \"../button\";\nimport { Icon } from \"../icon\";\n\ntype ActionBarButtonProps = {\n label: string;\n icon: keyof typeof icons;\n onClick: () => void;\n};\nexport function ActionBarButton({\n label,\n onClick,\n icon,\n}: ActionBarButtonProps) {\n return (\n <Button onClick={onClick} className=\"flex items-center gap-2\">\n <Icon name={icon} size={20} strokeWidth={1} />\n {label}\n </Button>\n );\n}\n","import { Icon } from \"../icon\";\n\nexport type Actions = {\n label: string;\n icon: any;\n onClick: () => void;\n};\n\nexport type ActionBarProps = {\n actions: Actions[];\n};\n\nexport const ActionBar = ({ actions }: ActionBarProps) => {\n function backHandler() {\n window.history.back();\n }\n\n return (\n <div className=\"flex items-center justify-center gap-4 bg-primary text-primary-foreground shadow rounded-md text-sm font-medium w-fit divide-solid divide-x\">\n <div className=\"cursor-pointer pl-4 py-2\" onClick={backHandler}>\n <Icon name=\"ArrowBigLeft\" />\n </div>\n\n {actions.map((item) => (\n <div\n key={item.label}\n className=\"flex items-center justify-center gap-2 cursor-pointer py-2 px-4\"\n onClick={item.onClick}\n >\n <Icon name={item.icon} />\n <p>{item.label}</p>\n </div>\n ))}\n </div>\n );\n};\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","import { Alert as ShadcnAlert, AlertDescription, AlertTitle } from \"../ui/alert\";\nimport { RocketIcon } from \"@radix-ui/react-icons\";\n\nexport type AlertProps = {\n title: string;\n description: string;\n};\n\nexport const Alert = ({ title, description }: AlertProps) => {\n return (\n <ShadcnAlert>\n <RocketIcon className=\"h-4 w-4\" />\n <AlertTitle>{title}</AlertTitle>\n <AlertDescription>{description}</AlertDescription>\n </ShadcnAlert>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as AvatarPrimitive from \"@radix-ui/react-avatar\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Avatar = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 shrink-0 overflow-hidden rounded-full\",\n className\n )}\n {...props}\n />\n))\nAvatar.displayName = AvatarPrimitive.Root.displayName\n\nconst AvatarImage = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Image>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Image>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Image\n ref={ref}\n className={cn(\"aspect-square h-full w-full\", className)}\n {...props}\n />\n))\nAvatarImage.displayName = AvatarPrimitive.Image.displayName\n\nconst AvatarFallback = React.forwardRef<\n React.ElementRef<typeof AvatarPrimitive.Fallback>,\n React.ComponentPropsWithoutRef<typeof AvatarPrimitive.Fallback>\n>(({ className, ...props }, ref) => (\n <AvatarPrimitive.Fallback\n ref={ref}\n className={cn(\n \"flex h-full w-full items-center justify-center rounded-full bg-muted\",\n className\n )}\n {...props}\n />\n))\nAvatarFallback.displayName = AvatarPrimitive.Fallback.displayName\n\nexport { Avatar, AvatarImage, AvatarFallback }\n","import {\n Avatar as ShadcnAvatar,\n AvatarFallback as ShadcnAvatarFallback,\n AvatarImage as ShadcnAvatarImage,\n} from \"../ui/avatar\";\n\nexport type AvatarProps = {\n image: string;\n fallback: string;\n};\n\nexport const Avatar = ({ image, fallback }: AvatarProps) => {\n return (\n <ShadcnAvatar className=\"w-fit\">\n <ShadcnAvatarImage src={image} />\n <ShadcnAvatarFallback>{fallback}</ShadcnAvatarFallback>\n </ShadcnAvatar>\n );\n};\n","import { Fragment } from \"react\";\nimport {\n Breadcrumb as ShadcnBreadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"../ui/breadcrumb\";\n\nexport type BreadcrumbItem = {\n label: string;\n href: string;\n};\n\nexport type BreadcrumbProps = { breadcrumb: BreadcrumbItem[] };\n\nexport const Breadcrumb = ({ breadcrumb }: BreadcrumbProps) => {\n return (\n <ShadcnBreadcrumb className=\"p-4\">\n <BreadcrumbList>\n {breadcrumb.map(({ href, label }, index) => (\n <Fragment key={index}>\n <BreadcrumbItem>\n {index !== breadcrumb.length - 1 ? (\n <BreadcrumbLink className=\"cursor-pointer\" href={href}>\n {label.replace(/-/g, \" \")}\n </BreadcrumbLink>\n ) : (\n <BreadcrumbPage>{label.replace(/-/g, \" \")}</BreadcrumbPage>\n )}\n </BreadcrumbItem>\n {index < breadcrumb.length - 1 && <BreadcrumbSeparator />}\n </Fragment>\n ))}\n </BreadcrumbList>\n </ShadcnBreadcrumb>\n );\n};\n","import * as React from \"react\"\nimport { ChevronRightIcon, DotsHorizontalIcon } from \"@radix-ui/react-icons\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\"> & {\n separator?: React.ReactNode\n }\n>(({ ...props }, ref) => <nav ref={ref} aria-label=\"breadcrumb\" {...props} />)\nBreadcrumb.displayName = \"Breadcrumb\"\n\nconst BreadcrumbList = React.forwardRef<\n HTMLOListElement,\n React.ComponentPropsWithoutRef<\"ol\">\n>(({ className, ...props }, ref) => (\n <ol\n ref={ref}\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground sm:gap-2.5\",\n className\n )}\n {...props}\n />\n))\nBreadcrumbList.displayName = \"BreadcrumbList\"\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n {...props}\n />\n))\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\n\nconst BreadcrumbLink = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean\n }\n>(({ asChild, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n className={cn(\"transition-colors hover:text-foreground\", className)}\n {...props}\n />\n )\n})\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n))\nBreadcrumbPage.displayName = \"BreadcrumbPage\"\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) => (\n <li\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? <ChevronRightIcon />}\n </li>\n)\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <DotsHorizontalIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">More</span>\n </span>\n)\nBreadcrumbEllipsis.displayName = \"BreadcrumbElipssis\"\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Card = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"rounded-xl border bg-card text-card-foreground shadow\",\n className\n )}\n {...props}\n />\n))\nCard.displayName = \"Card\"\n\nconst CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex flex-col space-y-1.5 p-6\", className)}\n {...props}\n />\n))\nCardHeader.displayName = \"CardHeader\"\n\nconst CardTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\"font-semibold leading-none tracking-tight\", className)}\n {...props}\n />\n))\nCardTitle.displayName = \"CardTitle\"\n\nconst CardDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <p\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nCardDescription.displayName = \"CardDescription\"\n\nconst CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"p-6 pt-0\", className)} {...props} />\n))\nCardContent.displayName = \"CardContent\"\n\nconst CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"flex items-center p-6 pt-0\", className)}\n {...props}\n />\n))\nCardFooter.displayName = \"CardFooter\"\n\nexport { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent }\n","import {\n Card as ShadcnCard,\n CardContent as ShadcnCardContent,\n CardDescription as ShadcnCardDescription,\n CardFooter as ShadcnCardFooter,\n CardHeader as ShadcnCardHeader,\n CardTitle as ShadcnCardTitle,\n} from \"../ui/card\";\n\nexport type CardProps = {\n title: string;\n description?: string;\n content: string;\n footer?: string;\n};\n\nexport const Card = ({ title, description, content, footer }: CardProps) => {\n return (\n <ShadcnCard>\n <ShadcnCardHeader>\n <ShadcnCardTitle>{title}</ShadcnCardTitle>\n {description && (\n <ShadcnCardDescription>{description}</ShadcnCardDescription>\n )}\n </ShadcnCardHeader>\n <ShadcnCardContent>\n <p>{content}</p>\n </ShadcnCardContent>\n {footer && (\n <ShadcnCardFooter>\n <p>{footer}</p>\n </ShadcnCardFooter>\n )}\n </ShadcnCard>\n );\n};\n","import * as React from \"react\";\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\";\nimport { Checkbox as ShadcnCheckbox } from \"../ui/checkbox\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\n\nexport interface CheckboxProps\n extends React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root> {\n title?: string;\n name?: string;\n control?: any;\n isFormField?: boolean;\n}\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n CheckboxProps\n>(({ className, title, name, control, isFormField, ...props }, ref) =>\n isFormField ? (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n <FormLabel>{title}</FormLabel>\n <FormControl>\n <ShadcnCheckbox\n className={className}\n checked={field.value}\n onCheckedChange={field.onChange}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnCheckbox ref={ref} className={className} {...props} />\n )\n);\nCheckbox.displayName = \"Checkbox\";\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"peer h-4 w-4 shrink-0 rounded-sm border border-primary shadow focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"flex items-center justify-center text-current\")}\n >\n <CheckIcon className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport {\n Controller,\n ControllerProps,\n FieldPath,\n FieldValues,\n FormProvider,\n useFormContext,\n} from \"react-hook-form\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Label } from \"./label\"\n\nconst Form = FormProvider\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName\n}\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue\n)\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n )\n}\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext)\n const itemContext = React.useContext(FormItemContext)\n const { getFieldState, formState } = useFormContext()\n\n const fieldState = getFieldState(fieldContext.name, formState)\n\n if (!fieldContext) {\n throw new Error(\"useFormField should be used within <FormField>\")\n }\n\n const { id } = itemContext\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n }\n}\n\ntype FormItemContextValue = {\n id: string\n}\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue\n)\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const id = React.useId()\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div ref={ref} className={cn(\"space-y-2\", className)} {...props} />\n </FormItemContext.Provider>\n )\n})\nFormItem.displayName = \"FormItem\"\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField()\n\n return (\n <Label\n ref={ref}\n className={cn(error && \"text-destructive\", className)}\n htmlFor={formItemId}\n {...props}\n />\n )\n})\nFormLabel.displayName = \"FormLabel\"\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } = useFormField()\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n )\n})\nFormControl.displayName = \"FormControl\"\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField()\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn(\"text-[0.8rem] text-muted-foreground\", className)}\n {...props}\n />\n )\n})\nFormDescription.displayName = \"FormDescription\"\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField()\n const body = error ? String(error?.message) : children\n\n if (!body) {\n return null\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\"text-[0.8rem] font-medium text-destructive\", className)}\n {...props}\n >\n {body}\n </p>\n )\n})\nFormMessage.displayName = \"FormMessage\"\n\nexport {\n useFormField,\n Form,\n FormItem,\n FormLabel,\n FormControl,\n FormDescription,\n FormMessage,\n FormField,\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","\"use client\";\n\nimport { Check, ChevronsUpDown } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { Control } from \"react-hook-form\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"../ui/command\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\n\nexport type ComboboxOption = {\n value: string;\n label: string;\n};\n\nexport type ComboboxProps = {\n label: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n options: ComboboxOption[];\n isFormField?: boolean;\n control?: Control;\n name?: string;\n};\n\nexport function Combobox({\n label,\n options,\n defaultValue,\n onChange,\n isFormField,\n control,\n name,\n}: ComboboxProps) {\n const [open, setOpen] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n if (!isFormField) {\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between capitalize\"\n >\n {value\n ? options.find((option) => option.value === value)?.label || label\n : label}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandEmpty>No item found.</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n setValue(currentValue === value ? \"\" : currentValue);\n onChange?.(currentValue === value ? \"\" : currentValue);\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n value === option.value ? \"opacity-100\" : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n <FormLabel>{label}</FormLabel>\n <FormControl>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className=\"w-full justify-between capitalize\"\n >\n {field.value\n ? options.find((option) => option.value === field.value)\n ?.label || label\n : label}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-full p-0\">\n <Command>\n <CommandInput placeholder=\"Search...\" />\n <CommandEmpty>No item found.</CommandEmpty>\n <CommandList>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={(currentValue) => {\n field.onChange(\n currentValue === field.value ? \"\" : currentValue\n );\n setOpen(false);\n }}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n field.value === option.value\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { type DialogProps } from \"@radix-ui/react-dialog\"\nimport { MagnifyingGlassIcon } from \"@radix-ui/react-icons\"\nimport { Command as CommandPrimitive } from \"cmdk\"\n\nimport { cn } from \"../../lib/utils\"\nimport { Dialog, DialogContent } from \"./dialog\"\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n \"flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground\",\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\ninterface CommandDialogProps extends DialogProps {}\n\nconst CommandDialog = ({ children, ...props }: CommandDialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0\">\n <Command className=\"[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ className, ...props }, ref) => (\n <div className=\"flex items-center border-b px-3\" cmdk-input-wrapper=\"\">\n <MagnifyingGlassIcon className=\"mr-2 h-4 w-4 shrink-0 opacity-50\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n \"flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn(\"max-h-[300px] overflow-y-auto overflow-x-hidden\", className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n \"overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground\",\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 h-px bg-border\", className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none aria-selected:bg-accent aria-selected:text-accent-foreground data-[disabled='true']:pointer-events-none data-[disabled='true']:opacity-50\",\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n \"ml-auto text-xs tracking-widest text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = \"CommandShortcut\"\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n}\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none 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\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor }\n","import * as React from \"react\";\nimport {\n Command as ShadcnCommand,\n CommandEmpty as ShadcnCommandEmpty,\n CommandGroup as ShadcnCommandGroup,\n CommandInput as ShadcnCommandInput,\n CommandItem as ShadcnCommandItem,\n CommandList as ShadcnCommandList,\n CommandSeparator as ShadcnCommandSeparator,\n} from \"../ui/command\";\nimport { Command as CommandPrimitive } from \"cmdk\";\n\nexport type CommandGroupProps = {\n header: string;\n items: string[];\n};\n\nexport type CommandProps = {\n commandGroup: CommandGroupProps[];\n placeholder: string;\n className?: string;\n};\n\nexport const Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive> & CommandProps\n>(({ className, placeholder, commandGroup, ...props }, ref) => (\n <ShadcnCommand {...props} ref={ref} className={className}>\n <ShadcnCommandInput placeholder={placeholder} />\n <ShadcnCommandList>\n <ShadcnCommandEmpty>No results found.</ShadcnCommandEmpty>\n \n {commandGroup.map((group, index) => (\n <React.Fragment key={index}>\n <ShadcnCommandGroup key={index} heading={group.header}>\n {group.items.map((item, itemIndex) => (\n <ShadcnCommandItem key={itemIndex}>{item}</ShadcnCommandItem>\n ))}\n </ShadcnCommandGroup>\n\n {commandGroup.length - 1 !== index && <ShadcnCommandSeparator />}\n </React.Fragment>\n ))}\n </ShadcnCommandList>\n </ShadcnCommand>\n));\n\nCommand.displayName = \"Command\";\n","\"use client\";\n\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n DoubleArrowLeftIcon,\n DoubleArrowRightIcon,\n} from \"@radix-ui/react-icons\";\nimport {\n ColumnDef,\n ColumnFiltersState,\n SortingState,\n VisibilityState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n useReactTable,\n} from \"@tanstack/react-table\";\nimport { Loader2 } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Icon } from \"./icon\";\nimport { Button } from \"../ui/button\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuTrigger,\n} from \"../ui/dropdown-menu\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"../ui/table\";\n\nexport type { ColumnDef } from \"@tanstack/react-table\";\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n filterField?: string;\n refresh?: () => void;\n isLoading?: boolean;\n}\n\nexport function DataTable<TData, TValue>({\n data,\n columns,\n filterField,\n refresh,\n isLoading,\n}: DataTableProps<TData, TValue>) {\n const [sorting, setSorting] = React.useState<SortingState>([]);\n const [columnFilters, setColumnFilters] = React.useState<ColumnFiltersState>(\n []\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>({});\n const [rowSelection, setRowSelection] = React.useState({});\n\n const table = useReactTable({\n data,\n columns,\n onSortingChange: setSorting,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n onColumnVisibilityChange: setColumnVisibility,\n onRowSelectionChange: setRowSelection,\n state: {\n sorting,\n columnFilters,\n columnVisibility,\n rowSelection,\n },\n });\n\n return (\n <div className=\"w-full mt-4 relative\">\n {isLoading && (\n <Loader2 className=\"h-4 w-4 animate-spin absolute top-2 right-32\" />\n )}\n {filterField && (\n <div className=\"flex items-center justify-between\">\n <Input\n placeholder={`Filter by ${filterField}...`}\n value={\n (table.getColumn(filterField)?.getFilterValue() as string) ?? \"\"\n }\n onChange={(event) =>\n table.getColumn(filterField)?.setFilterValue(event.target.value)\n }\n className=\"max-w-sm\"\n />\n <div className=\"flex items-center space-x-4\">\n {refresh && (\n <Button variant=\"outline\" onClick={refresh}>\n <Icon name=\"RotateCcw\" strokeWidth={2} size={20} />\n </Button>\n )}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\">\n Columns <ChevronDownIcon className=\"ml-2 h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n {table\n .getAllColumns()\n .filter((column) => column.getCanHide())\n .map((column) => {\n return (\n <DropdownMenuCheckboxItem\n key={column.id}\n className=\"capitalize\"\n checked={column.getIsVisible()}\n onCheckedChange={(value) =>\n column.toggleVisibility(!!value)\n }\n >\n {column.id}\n </DropdownMenuCheckboxItem>\n );\n })}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n )}\n <div className=\"rounded-md border mt-4\">\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => {\n return (\n <TableHead key={header.id}>\n {header.isPlaceholder\n ? null\n : flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n </TableHead>\n );\n })}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length > 0 ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell key={cell.id}>\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={columns.length}\n className=\"h-24 text-center\"\n >\n {/* No results. */}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n <div className=\"flex items-center justify-end space-x-2 py-4\">\n {table.getAllColumns().some((col) => col.id === \"select\") && (\n <div className=\"flex-1 text-sm text-muted-foreground\">\n {table.getFilteredSelectedRowModel().rows.length} of{\" \"}\n {table.getFilteredRowModel().rows.length} row(s) selected.\n </div>\n )}\n <div className=\"flex items-center space-x-6 lg:space-x-8\">\n <div className=\"flex items-center space-x-2\">\n <p className=\"text-sm font-medium\">Rows per page</p>\n <Select\n value={`${table.getState().pagination.pageSize}`}\n onValueChange={(value) => {\n table.setPageSize(Number(value));\n }}\n >\n <SelectTrigger className=\"h-8 w-[70px]\">\n <SelectValue\n placeholder={table.getState().pagination.pageSize}\n />\n </SelectTrigger>\n <SelectContent side=\"top\">\n {[10, 20, 30, 40, 50].map((pageSize) => (\n <SelectItem key={pageSize} value={`${pageSize}`}>\n {pageSize}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"flex w-[100px] items-center justify-center text-sm font-medium\">\n Page {table.getState().pagination.pageIndex + 1} of{\" \"}\n {table.getPageCount()}\n </div>\n <div className=\"flex items-center space-x-2\">\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(0)}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to first page</span>\n <DoubleArrowLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.previousPage()}\n disabled={!table.getCanPreviousPage()}\n >\n <span className=\"sr-only\">Go to previous page</span>\n <ChevronLeftIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"h-8 w-8 p-0\"\n onClick={() => table.nextPage()}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to next page</span>\n <ChevronRightIcon className=\"h-4 w-4\" />\n </Button>\n <Button\n variant=\"outline\"\n className=\"hidden h-8 w-8 p-0 lg:flex\"\n onClick={() => table.setPageIndex(table.getPageCount() - 1)}\n disabled={!table.getCanNextPage()}\n >\n <span className=\"sr-only\">Go to last page</span>\n <DoubleArrowRightIcon className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import * as React from \"react\"\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\"\nimport {\n CheckIcon,\n ChevronRightIcon,\n DotFilledIcon,\n} from \"@radix-ui/react-icons\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n \"flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto h-4 w-4\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n \"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 min-w-32 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\",\n \"data-[state=open]:animate-in data-[state=closed]:animate-out 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\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n \"relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-disabled:pointer-events-none data-disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <DotFilledIcon className=\"h-4 w-4 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n \"px-2 py-1.5 text-sm font-semibold\",\n inset && \"pl-8\",\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\"ml-auto text-xs tracking-widest opacity-60\", className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = \"DropdownMenuShortcut\"\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-10 px-2 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\n \"p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]\",\n className\n )}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { CalendarIcon } from \"@radix-ui/react-icons\";\nimport { format } from \"date-fns\";\nimport { DateRange } from \"react-day-picker\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Button } from \"../ui/button\";\nimport { Calendar } from \"../ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../ui/popover\";\n\ntype DateFilterProps = {\n className?: string;\n date?: DateRange | undefined;\n setDate: (date: DateRange | undefined) => void;\n} & React.HTMLAttributes<HTMLDivElement>;\n\nexport function DateFilter({ className, date, setDate }: DateFilterProps) {\n return (\n <div className={cn(\"grid gap-2\", className)}>\n <Popover>\n <PopoverTrigger asChild>\n <Button\n id=\"date\"\n variant={\"outline\"}\n className={cn(\n \"w-[300px] justify-start text-left font-normal\",\n !date && \"text-muted-foreground\"\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {date?.from ? (\n date.to ? (\n <>\n {format(date.from, \"LLL dd, y\")} -{\" \"}\n {format(date.to, \"LLL dd, y\")}\n </>\n ) : (\n format(date.from, \"LLL dd, y\")\n )\n ) : (\n <span>Pick a date</span>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n initialFocus\n mode=\"range\"\n defaultMonth={date?.from}\n selected={date}\n onSelect={setDate}\n numberOfMonths={2}\n />\n </PopoverContent>\n </Popover>\n </div>\n );\n}\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","\"use client\";\n\nimport * as React from \"react\";\nimport { DayPicker } from \"react-day-picker\";\n\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/utils\";\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n ...props\n}: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\"p-3\", className)}\n classNames={{\n months: \"flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0\",\n month: \"space-y-4\",\n caption: \"flex justify-center pt-1 relative items-center\",\n caption_label: \"text-sm font-medium\",\n nav: \"space-x-1 flex items-center\",\n nav_button: cn(\n buttonVariants({ variant: \"outline\" }),\n \"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100\"\n ),\n nav_button_previous: \"absolute left-1\",\n nav_button_next: \"absolute right-1\",\n table: \"w-full border-collapse space-y-1\",\n head_row: \"flex\",\n head_cell:\n \"text-muted-foreground rounded-md w-8 font-normal text-[0.8rem]\",\n row: \"flex w-full mt-2\",\n cell: cn(\n \"relative p-0 text-center text-sm focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-accent [&:has([aria-selected].day-outside)]:bg-accent/50 [&:has([aria-selected].day-range-end)]:rounded-r-md\",\n props.mode === \"range\"\n ? \"[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md\"\n : \"[&:has([aria-selected])]:rounded-md\"\n ),\n day: cn(\n buttonVariants({ variant: \"ghost\" }),\n \"h-8 w-8 p-0 font-normal aria-selected:opacity-100\"\n ),\n day_range_start: \"day-range-start\",\n day_range_end: \"day-range-end\",\n day_selected:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground\",\n day_today: \"bg-accent text-accent-foreground\",\n day_outside:\n \"day-outside text-muted-foreground opacity-50 aria-selected:bg-accent/50 aria-selected:text-muted-foreground aria-selected:opacity-30\",\n day_disabled: \"text-muted-foreground opacity-50\",\n day_range_middle:\n \"aria-selected:bg-accent aria-selected:text-accent-foreground\",\n day_hidden: \"invisible\",\n ...classNames,\n }}\n components={\n {\n // IconLeft: ({ ...props }) => <ChevronLeftIcon className=\"h-4 w-4\" />,\n // IconRight: ({ ...props }) => <ChevronRightIcon className=\"h-4 w-4\" />,\n }\n }\n {...props}\n />\n );\n}\nCalendar.displayName = \"Calendar\";\n\nexport { Calendar };\n","import { cn } from \"../../lib/utils\";\nimport { LucideIcon, icons } from \"lucide-react\";\nimport {\n Dialog as ShadcnDialog,\n DialogContent as ShadcnDialogContent,\n DialogDescription as ShadcnDialogDescription,\n DialogHeader as ShadcnDialogHeader,\n DialogTitle as ShadcnDialogTitle,\n DialogTrigger as ShadcnDialogTrigger,\n} from \"../ui/dialog\";\nimport { Button } from \"./button\";\nimport { Icon } from \"./icon\";\n\nexport type DialogProps = {\n title: string;\n children: React.ReactNode;\n description?: string;\n open?: boolean;\n trigger?: string;\n onOpenChange?: (open: boolean) => void;\n className?: string;\n icon?: keyof typeof icons;\n iconClassName?: string;\n actions?: {\n label: string;\n type: \"default\" | \"destructive\" | \"outline\" | \"secondary\" | \"ghost\";\n icon?: keyof typeof icons;\n iconClassName?: string;\n onAction: () => void;\n disabled?: boolean;\n }[];\n};\n\nexport const Dialog = ({\n title,\n description,\n trigger,\n open,\n onOpenChange,\n children,\n className,\n icon,\n iconClassName,\n actions,\n}: DialogProps) => {\n const IconComponent = icon ? (icons[icon] as LucideIcon) : null;\n\n return (\n <ShadcnDialog open={open} onOpenChange={onOpenChange}>\n <ShadcnDialogTrigger>{trigger}</ShadcnDialogTrigger>\n <ShadcnDialogContent className={className}>\n <ShadcnDialogHeader>\n <ShadcnDialogTitle className=\"capitalize flex items-center gap-2 justify-between pr-8\">\n <div className=\"flex items-center gap-2\">\n {IconComponent && (\n <IconComponent\n size={20}\n strokeWidth={1}\n className={cn(iconClassName)}\n />\n )}\n {title}\n </div>\n {actions && (\n <div className=\"flex items-center gap-2\">\n {actions.map((action) => (\n <Button\n key={action.label}\n variant={action.type}\n onClick={action.onAction}\n className=\"flex items-center gap-2\"\n disabled={action.disabled}\n >\n {action.label}\n {action.icon && (\n <Icon\n name={action.icon}\n className={cn(action.iconClassName)}\n size={16}\n strokeWidth={1}\n />\n )}\n </Button>\n ))}\n </div>\n )}\n </ShadcnDialogTitle>\n <ShadcnDialogDescription>{description}</ShadcnDialogDescription>\n </ShadcnDialogHeader>\n {children}\n </ShadcnDialogContent>\n </ShadcnDialog>\n );\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport { Drawer as DrawerPrimitive } from \"vaul\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Drawer = ({\n shouldScaleBackground = true,\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (\n <DrawerPrimitive.Root\n shouldScaleBackground={shouldScaleBackground}\n {...props}\n />\n)\nDrawer.displayName = \"Drawer\"\n\nconst DrawerTrigger = DrawerPrimitive.Trigger\n\nconst DrawerPortal = DrawerPrimitive.Portal\n\nconst DrawerClose = DrawerPrimitive.Close\n\nconst DrawerOverlay = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Overlay\n ref={ref}\n className={cn(\"fixed inset-0 z-50 bg-black/80\", className)}\n {...props}\n />\n))\nDrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName\n\nconst DrawerContent = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <DrawerPortal>\n <DrawerOverlay />\n <DrawerPrimitive.Content\n ref={ref}\n className={cn(\n \"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border bg-background\",\n className\n )}\n {...props}\n >\n <div className=\"mx-auto mt-4 h-2 w-[100px] rounded-full bg-muted\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n))\nDrawerContent.displayName = \"DrawerContent\"\n\nconst DrawerHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"grid gap-1.5 p-4 text-center sm:text-left\", className)}\n {...props}\n />\n)\nDrawerHeader.displayName = \"DrawerHeader\"\n\nconst DrawerFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\"mt-auto flex flex-col gap-2 p-4\", className)}\n {...props}\n />\n)\nDrawerFooter.displayName = \"DrawerFooter\"\n\nconst DrawerTitle = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Title\n ref={ref}\n className={cn(\n \"text-lg font-semibold leading-none tracking-tight\",\n className\n )}\n {...props}\n />\n))\nDrawerTitle.displayName = DrawerPrimitive.Title.displayName\n\nconst DrawerDescription = React.forwardRef<\n React.ElementRef<typeof DrawerPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DrawerPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nDrawerDescription.displayName = DrawerPrimitive.Description.displayName\n\nexport {\n Drawer,\n DrawerPortal,\n DrawerOverlay,\n DrawerTrigger,\n DrawerClose,\n DrawerContent,\n DrawerHeader,\n DrawerFooter,\n DrawerTitle,\n DrawerDescription,\n}\n","import * as React from \"react\"\nimport * as ScrollAreaPrimitive from \"@radix-ui/react-scroll-area\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>\n>(({ className, children, ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n))\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className\n )}\n {...props}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n))\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName\n\nexport { ScrollArea, ScrollBar }\n","import React from \"react\";\nimport {\n Drawer as ShadcnDrawer,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n DrawerTrigger,\n} from \"../ui/drawer\";\nimport { ScrollArea } from \"../ui/scroll-area\";\nimport { Drawer as DrawerPrimitive } from \"vaul\";\n\ntype DrawerPrimitiveRootProps = React.ComponentProps<\n typeof DrawerPrimitive.Root\n>;\n\nexport type DrawerProps = {\n title: string;\n openDrawer?: boolean;\n setOpenDrawer?: (open: boolean) => void;\n description?: string;\n children: React.ReactNode;\n trigger?: React.ReactNode;\n} & DrawerPrimitiveRootProps;\n\nexport const Drawer = ({\n title,\n trigger,\n description,\n children,\n openDrawer,\n setOpenDrawer,\n ...props\n}: DrawerProps) => {\n return (\n <ShadcnDrawer\n direction=\"right\"\n open={openDrawer}\n onOpenChange={setOpenDrawer}\n {...props}\n >\n {trigger && <DrawerTrigger>{trigger}</DrawerTrigger>}\n <DrawerContent className=\"h-screen top-0 right-0 left-auto mt-0 w-[500px] rounded-none\">\n <ScrollArea className=\"h-screen\">\n <div className=\"mx-auto w-full p-5\">\n <DrawerHeader>\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription>{description}</DrawerDescription>\n </DrawerHeader>\n {children}\n </div>\n </ScrollArea>\n </DrawerContent>\n </ShadcnDrawer>\n );\n};\n","import React from \"react\";\nimport {\n DropdownMenu as ShadcnDropdownMenu,\n DropdownMenuTrigger as ShadcnDropdownMenuTrigger,\n DropdownMenuContent as ShadcnDropdownMenuContent,\n DropdownMenuItem as ShadcnDropdownMenuItem,\n} from \"../ui/dropdown-menu\";\nimport { SelectOption } from \"./select\";\n\nexport interface DropdownMenuProps {\n trigger: React.ReactNode;\n items: SelectOption[];\n onClick: (value: string, label: string) => void;\n className?: string;\n}\n\nexport const DropdownMenu: React.FC<DropdownMenuProps> = ({\n trigger,\n items,\n className = \"\",\n onClick,\n}) => {\n return (\n <ShadcnDropdownMenu>\n <ShadcnDropdownMenuTrigger asChild>\n <div className={className}>{trigger}</div>\n </ShadcnDropdownMenuTrigger>\n <ShadcnDropdownMenuContent className=\"cursor-pointer\">\n {items.map((item, index) => (\n <ShadcnDropdownMenuItem\n key={index}\n className=\"cursor-pointer!\"\n onClick={() => onClick(item.value, item.label)}\n >\n {item.label}\n </ShadcnDropdownMenuItem>\n ))}\n </ShadcnDropdownMenuContent>\n </ShadcnDropdownMenu>\n );\n};\n","\"use client\";\nimport { Input } from \"../ui/input\";\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport { useEffect, useState } from \"react\";\n\ninterface DurationInputProps {\n // Value can be a number (nanoseconds) or a string like \"12h\"\n value?: number | string;\n onChange: (val: string) => void;\n}\n\nconst unitOptions = [\n { label: \"Seconds\", value: \"s\", ns: 1_000_000_000 },\n { label: \"Minutes\", value: \"m\", ns: 60_000_000_000 },\n { label: \"Hours\", value: \"h\", ns: 3_600_000_000_000 },\n { label: \"Days\", value: \"d\", ns: 86_400_000_000_000 },\n { label: \"Weeks\", value: \"w\", ns: 604_800_000_000_000 },\n];\n\nfunction parseDurationNs(ns: number) {\n // Try to find a unit that divides evenly. \n // If none matches exactly, default to seconds.\n for (const u of [...unitOptions].reverse()) {\n if (ns % u.ns === 0) {\n return { amount: String(ns / u.ns), unit: u.value };\n }\n }\n return { amount: String(ns / 1_000_000_000), unit: \"s\" };\n}\n\n// Convert days/weeks to hours for Go, but do NOT change UI states.\nfunction toGoCompatibleDuration(amount: string, unit: string): string {\n const parsedAmount = parseFloat(amount);\n if (isNaN(parsedAmount) || parsedAmount <= 0) return \"0s\";\n\n switch (unit) {\n case \"d\":\n return `${parsedAmount * 24}h`; // convert days to hours\n case \"w\":\n return `${parsedAmount * 168}h`; // convert weeks to hours\n default:\n return `${amount}${unit}`;\n }\n}\n\nexport function DurationInput({ value, onChange }: DurationInputProps) {\n const [amount, setAmount] = useState<string>(\"\");\n const [unit, setUnit] = useState<string>(\"h\");\n const [userInteracted, setUserInteracted] = useState(false);\n\n useEffect(() => {\n // Only update from value if the user hasn't interacted yet.\n if (userInteracted) return;\n\n if (value === undefined || value === null || value === \"\") {\n setAmount(\"\");\n setUnit(\"h\");\n return;\n }\n\n if (typeof value === \"number\") {\n // value is nanoseconds\n const parsed = parseDurationNs(value);\n setAmount(parsed.amount);\n setUnit(parsed.unit);\n } else if (typeof value === \"string\") {\n const trimmed = value.trim();\n if (trimmed) {\n const lastChar = trimmed[trimmed.length - 1];\n const foundUnit = unitOptions.find((u) => u.value === lastChar);\n if (foundUnit) {\n const amt = trimmed.slice(0, -1);\n setAmount(amt);\n setUnit(lastChar);\n } else {\n setAmount(trimmed);\n setUnit(\"h\");\n }\n } else {\n setAmount(\"\");\n setUnit(\"h\");\n }\n }\n }, [value, userInteracted]);\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newAmount = e.target.value;\n setAmount(newAmount);\n setUserInteracted(true);\n if (newAmount) {\n onChange(toGoCompatibleDuration(newAmount, unit));\n } else {\n onChange(\"\");\n }\n };\n\n const handleUnitChange = (newUnit: string) => {\n setUnit(newUnit);\n setUserInteracted(true);\n if (amount) {\n onChange(toGoCompatibleDuration(amount, newUnit));\n } else {\n onChange(\"\");\n }\n };\n\n return (\n <div className=\"flex items-center gap-2\">\n <Input\n type=\"number\"\n placeholder=\"1\"\n value={amount}\n onChange={handleAmountChange}\n className=\"w-20\"\n />\n <Select value={unit} onValueChange={handleUnitChange}>\n <SelectTrigger className=\"w-24\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {unitOptions.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\n}","\"use client\";\nimport { useState } from \"react\";\nimport { CheckIcon } from \"@radix-ui/react-icons\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Badge } from \"../ui/badge\";\nimport { Button } from \"../ui/button\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n CommandSeparator,\n} from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Separator } from \"../ui/separator\";\nimport { Icon } from \"./icon\";\nimport { icons } from \"lucide-react\";\n\nexport type FilterOptionProps = {\n label: string;\n value: string;\n icon?: keyof typeof icons;\n};\n\nexport type FilterComboboxProps = {\n title: string;\n clearLabel: string;\n options: FilterOptionProps[];\n};\n\nexport function FilterCombobox({ title, options, clearLabel }: FilterComboboxProps) {\n const [selectedValues, setSelectedValues] = useState<FilterOptionProps[]>([]);\n\n const handleValueSelect = (value: FilterOptionProps) => {\n if (selectedValues.some((v) => v.value === value.value)) {\n setSelectedValues(selectedValues.filter((v) => v.value !== value.value));\n } else {\n setSelectedValues([...selectedValues, value]);\n }\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild className=\"w-fit\">\n <Button variant=\"outline\" size=\"sm\" className=\"h-8 border-dashed\">\n <Icon name=\"CirclePlus\" className=\"h-4 w-4 mr-2\" />\n {title}\n {selectedValues?.length > 0 && (\n <div className=\"flex items-center gap-2 ml-2\">\n <Separator orientation=\"vertical\" className=\"h-4\" />\n <>\n {selectedValues.length > 2 ? (\n <Badge\n variant=\"secondary\"\n className=\"rounded-sm px-1 font-normal\"\n >\n {selectedValues.length} selected\n </Badge>\n ) : (\n options\n .filter((option) =>\n selectedValues.some((item) => item.value === option.value)\n )\n .map((option) => (\n <Badge\n variant=\"secondary\"\n key={option.value}\n className=\"rounded-sm px-1 font-normal\"\n >\n {option.label}\n </Badge>\n ))\n )}\n </>\n </div>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\" align=\"start\">\n <Command>\n <CommandInput placeholder={title} />\n <CommandList>\n <CommandEmpty>No results found.</CommandEmpty>\n <CommandGroup>\n {options.map((option) => {\n const isSelected = selectedValues.some(\n (item) => item.value === option.value\n );\n return (\n <CommandItem\n key={option.value}\n onSelect={() => handleValueSelect(option)}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary\",\n isSelected\n ? \"bg-primary text-primary-foreground\"\n : \"opacity-50 [&_svg]:invisible\"\n )}\n >\n <CheckIcon className={cn(\"h-4 w-4\")} />\n </div>\n {option?.icon && <Icon name={option?.icon} className=\"mr-2 h-4 w-4 text-muted-foreground\" />}\n <span>{option.label}</span>\n </CommandItem>\n );\n })}\n </CommandGroup>\n {selectedValues.length > 0 && (\n <>\n <CommandSeparator />\n <CommandGroup>\n <CommandItem\n onSelect={() => setSelectedValues([])}\n className=\"justify-center text-center\"\n >\n {clearLabel}\n </CommandItem>\n </CommandGroup>\n </>\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","import { Control, RegisterOptions } from \"react-hook-form\";\nimport { Combobox } from \"./combobox\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\n\nexport interface FormComboboxProps {\n label: string;\n title?: string;\n name?: string;\n control?: Control;\n rules?: RegisterOptions;\n data: {\n value: string;\n label: string;\n }[];\n}\n\nexport function FormCombobox({\n title,\n name,\n control,\n rules,\n data,\n label,\n}: FormComboboxProps) {\n return (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <Combobox\n label={label}\n defaultValue={field.value}\n options={data}\n onChange={(value) => field.onChange(value)}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n}\n","\"use client\";\n\nimport { useForm, FormProvider } from \"react-hook-form\";\nimport { Button } from \"./button\";\n\ntype FormLayoutProps = {\n children: React.ReactNode;\n formTitle: string;\n formDescription: string;\n onCanel: () => void;\n onSave: () => void;\n form: any;\n PrimaryActionText: string;\n CancelText: string;\n className?: string;\n};\n\nexport function FormLayout({\n children,\n formTitle,\n formDescription,\n onCanel,\n onSave,\n form,\n className,\n PrimaryActionText,\n CancelText,\n}: FormLayoutProps) {\n return (\n <FormProvider {...form}>\n <form onSubmit={onSave} className={`flex flex-col gap-6 ${className}`}>\n <div className=\"flex items-center justify-between w-full border-b pb-6 border-border\">\n <div className=\"flex flex-col\">\n <p className=\"font-semibold text-lg\">{formTitle}</p>\n <p className=\"text-gray-500\">{formDescription}</p>\n </div>\n\n <div className=\"flex items-center gap-2\">\n <Button type=\"button\" onClick={onCanel} variant=\"secondary\">\n {CancelText}\n </Button>\n <Button type=\"submit\">{PrimaryActionText}</Button>\n </div>\n </div>\n\n {children}\n\n <div className=\"flex items-center gap-2 justify-end\">\n <Button type=\"button\" onClick={onCanel} variant=\"secondary\">\n {CancelText}\n </Button>\n <Button type=\"submit\">{PrimaryActionText}</Button>\n </div>\n </form>\n </FormProvider>\n );\n}\n","\"use client\";\n\ntype RowLayoutProps = {\n children: React.ReactNode;\n title: string;\n description: string;\n};\n\nexport function FormRow({ children, title, description }: RowLayoutProps) {\n return (\n <div className=\"grid grid-cols-3 w-full border-b pb-6 border-border\">\n <div className=\"flex flex-col\">\n <p className=\"font-medium\">{title}</p>\n <p className=\"text-gray-500 text-sm\">{description}</p>\n </div>\n\n <div className=\"col-span-2 w-[80%]\">{children}</div>\n </div>\n );\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { CheckIcon } from \"@radix-ui/react-icons\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary shadow focus:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <CheckIcon className=\"h-3.5 w-3.5 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\"\nimport { Cross2Icon } from \"@radix-ui/react-icons\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Sheet = SheetPrimitive.Root\n\nconst SheetTrigger = SheetPrimitive.Trigger\n\nconst SheetClose = SheetPrimitive.Close\n\nconst SheetPortal = SheetPrimitive.Portal\n\nconst SheetOverlay = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Overlay\n className={cn(\n \"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\",\n className\n )}\n {...props}\n ref={ref}\n />\n))\nSheetOverlay.displayName = SheetPrimitive.Overlay.displayName\n\nconst sheetVariants = cva(\n \"fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500 data-[state=open]:animate-in data-[state=closed]:animate-out\",\n {\n variants: {\n side: {\n top: \"inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top\",\n bottom:\n \"inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom\",\n left: \"inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm\",\n right:\n \"inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm\",\n },\n },\n defaultVariants: {\n side: \"right\",\n },\n }\n)\n\ninterface SheetContentProps\n extends React.ComponentPropsWithoutRef<typeof SheetPrimitive.Content>,\n VariantProps<typeof sheetVariants> {}\n\nconst SheetContent = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Content>,\n SheetContentProps\n>(({ side = \"right\", className, children, ...props }, ref) => (\n <SheetPortal>\n <SheetOverlay />\n <SheetPrimitive.Content\n ref={ref}\n className={cn(sheetVariants({ side }), className)}\n {...props}\n >\n <SheetPrimitive.Close className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary\">\n <Cross2Icon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </SheetPrimitive.Close>\n {children}\n </SheetPrimitive.Content>\n </SheetPortal>\n))\nSheetContent.displayName = SheetPrimitive.Content.displayName\n\nconst SheetHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col space-y-2 text-center sm:text-left\",\n className\n )}\n {...props}\n />\n)\nSheetHeader.displayName = \"SheetHeader\"\n\nconst SheetFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n \"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2\",\n className\n )}\n {...props}\n />\n)\nSheetFooter.displayName = \"SheetFooter\"\n\nconst SheetTitle = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Title\n ref={ref}\n className={cn(\"text-lg font-semibold text-foreground\", className)}\n {...props}\n />\n))\nSheetTitle.displayName = SheetPrimitive.Title.displayName\n\nconst SheetDescription = React.forwardRef<\n React.ElementRef<typeof SheetPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof SheetPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <SheetPrimitive.Description\n ref={ref}\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nSheetDescription.displayName = SheetPrimitive.Description.displayName\n\nexport {\n Sheet,\n SheetPortal,\n SheetOverlay,\n SheetTrigger,\n SheetClose,\n SheetContent,\n SheetHeader,\n SheetFooter,\n SheetTitle,\n SheetDescription,\n}\n","import * as React from \"react\"\n\nimport { cn } from \"../../lib/utils\"\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {}\n\nconst Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[60px] w-full rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","import * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 overflow-hidden rounded-md bg-primary px-3 py-1.5 text-xs text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-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\",\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RechartsPrimitive from \"recharts\";\n\nimport { cn } from \"../../lib/utils\";\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: \"\", dark: \".dark\" } as const;\n\nexport type ChartConfig = {\n [k in string]: {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n );\n};\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error(\"useChart must be used within a <ChartContainer />\");\n }\n\n return context;\n}\n\nconst ChartContainer = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >[\"children\"];\n }\n>(({ id, className, children, config, ...props }, ref) => {\n const uniqueId = React.useId();\n const chartId = `chart-${id || uniqueId.replace(/:/g, \"\")}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n ref={ref}\n className={cn(\n \"flex aspect-video justify-center text-xs [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-none [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-sector]:outline-none [&_.recharts-surface]:outline-none\",\n className\n )}\n {...props}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer>\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n});\nChartContainer.displayName = \"Chart\";\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([_, config]) => config.theme || config.color\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ||\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join(\"\\n\")}\n}\n`\n )\n .join(\"\\n\"),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nconst ChartTooltipContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<\"div\"> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: \"line\" | \"dot\" | \"dashed\";\n nameKey?: string;\n labelKey?: string;\n }\n>(\n (\n {\n active,\n payload,\n className,\n indicator = \"dot\",\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n },\n ref\n ) => {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey || item.dataKey || item.name || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === \"string\"\n ? config[label as keyof typeof config]?.label || label\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn(\"font-medium\", labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn(\"font-medium\", labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== \"dot\";\n\n return (\n <div\n ref={ref}\n className={cn(\n \"grid min-w-32 items-start gap-1.5 rounded-lg border border-border/50 bg-background px-2.5 py-1.5 text-xs shadow-xl\",\n className\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"grid gap-1.5\">\n {payload.map((item, index) => {\n const key = `${nameKey || item.name || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const indicatorColor = color || item.payload.fill || item.color;\n\n return (\n <div\n key={item.dataKey}\n className={cn(\n \"flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 [&>svg]:text-muted-foreground\",\n indicator === \"dot\" && \"items-center\"\n )}\n >\n {formatter && item?.value !== undefined && item.name ? (\n formatter(item.value, item.name, item, index, item.payload)\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n \"shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)\",\n {\n \"h-2.5 w-2.5\": indicator === \"dot\",\n \"w-1\": indicator === \"line\",\n \"w-0 border-[1.5px] border-dashed bg-transparent\":\n indicator === \"dashed\",\n \"my-0.5\": nestLabel && indicator === \"dashed\",\n }\n )}\n style={\n {\n \"--color-bg\": indicatorColor,\n \"--color-border\": indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n \"flex flex-1 justify-between leading-none\",\n nestLabel ? \"items-end\" : \"items-center\"\n )}\n >\n <div className=\"grid gap-1.5\">\n {nestLabel ? tooltipLabel : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label || item.name}\n </span>\n </div>\n {item.value && (\n <span className=\"font-mono font-medium tabular-nums text-foreground\">\n {item.value.toLocaleString()}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n);\nChartTooltipContent.displayName = \"ChartTooltip\";\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nconst ChartLegendContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> &\n Pick<RechartsPrimitive.LegendProps, \"payload\" | \"verticalAlign\"> & {\n hideIcon?: boolean;\n nameKey?: string;\n }\n>(\n (\n { className, hideIcon = false, payload, verticalAlign = \"bottom\", nameKey },\n ref\n ) => {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-center gap-4\",\n verticalAlign === \"top\" ? \"pb-3\" : \"pt-3\",\n className\n )}\n >\n {payload.map((item) => {\n const key = `${nameKey || item.dataKey || \"value\"}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n\n return (\n <div\n key={item.value}\n className={cn(\n \"flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3 [&>svg]:text-muted-foreground\"\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n }\n);\nChartLegendContent.displayName = \"ChartLegend\";\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string\n) {\n if (typeof payload !== \"object\" || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n \"payload\" in payload &&\n typeof payload.payload === \"object\" &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n let configLabelKey: string = key;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === \"string\"\n ) {\n configLabelKey = payload[key as keyof typeof payload] as string;\n } else if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === \"string\"\n ) {\n configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n }\n\n return configLabelKey in config\n ? config[configLabelKey]\n : config[key as keyof typeof config];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-primary/20\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-4 w-4 rounded-full border border-primary/50 bg-background shadow transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","import React from \"react\";\nimport { Button, Form as ShadcnForm } from \"../ui\";\n\ntype FormWithActionButtonsProps = {\n children: React.ReactNode;\n form: any;\n onSubmit: (data: any) => void;\n onCancel: () => void;\n primaryButtonText: string;\n secondaryButtonText: string;\n secondaryButtonAction: () => void;\n showSecondaryButton?: boolean;\n};\n\nexport const FormWithActionButtons = ({\n children,\n form,\n onSubmit,\n onCancel,\n primaryButtonText,\n secondaryButtonText,\n secondaryButtonAction,\n showSecondaryButton = false,\n}: FormWithActionButtonsProps) => {\n return (\n <ShadcnForm {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"space-y-4\">\n {children}\n <div className=\"flex justify-end gap-2\">\n {showSecondaryButton && (\n <Button\n variant=\"link\"\n onClick={secondaryButtonAction}\n type=\"button\"\n >\n {secondaryButtonText}\n </Button>\n )}\n <Button variant=\"default\" type=\"submit\">\n {primaryButtonText}\n </Button>\n </div>\n </form>\n </ShadcnForm>\n );\n};\n","import { File, FileSpreadsheet, FileText } from \"lucide-react\";\nexport const getFileIcon = (fileName: string) => {\n const extensionMatch = fileName.match(/\\.([^.]+)$/);\n const extension = extensionMatch ? extensionMatch[1].toLowerCase() : null;\n\n if (!extension) return <File className=\"w-8 h-8 text-gray-500\" />;\n\n switch (extension) {\n case \"pdf\":\n return <File className=\"w-8 h-8 text-red-500\" />;\n case \"doc\":\n case \"docx\":\n return <FileText className=\"w-8 h-8 text-blue-500\" />;\n case \"xls\":\n case \"xlsx\":\n return <FileSpreadsheet className=\"w-8 h-8 text-green-500\" />;\n default:\n return <File className=\"w-8 h-8 text-gray-500\" />;\n }\n};\n\nexport const getFileName = (url: string) => {\n const fileName = decodeURIComponent(url.split(\"/\").pop() ?? \"\");\n\n const cleanFileName = fileName\n .replace(/%28(\\d+)%29/g, \"($1)\") // Replace %28 and %29 with parentheses\n .replace(/[^\\w\\s().-]/g, \"\") // Remove any other special characters\n .replace(/\\s+/g, \"_\") // Replace spaces with underscores\n .replace(/-\\d+(?=\\.pdf)/g, \"\"); // Remove the trailing number before .pdf\n\n return cleanFileName;\n};\n","import React from \"react\";\nimport { Button } from \"../ui/button\";\n\nimport { icons } from \"lucide-react\";\nimport { Icon } from \"./icon\";\n\nexport type NavItem = {\n key: string;\n group?: string;\n title: string;\n logo?: string;\n href?: string;\n subNav?: NavItem[];\n icon: keyof typeof icons;\n\n userGroups?: string[];\n};\n\nexport type IconButtonProps = {\n item: NavItem;\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\";\n className?: string;\n onClick?: () => void;\n};\n\nexport const IconButton: React.FC<IconButtonProps> = ({\n item,\n variant,\n onClick,\n ...props\n}) => {\n return (\n <Button\n type=\"button\"\n variant={variant}\n className=\"flex items-center justify-start gap-2 border px-2\"\n onClick={onClick}\n {...props}\n >\n <span className=\"w-4 flex items-center justify-center\">\n <Icon name={item.icon} size={20} strokeWidth={1} />\n </span>\n\n <span className=\"text-sm\">{item.title}</span>\n </Button>\n );\n};\n","import * as React from \"react\";\nimport {\n Input as ShadcnInput,\n InputProps as ShadcnInputProps,\n} from \"../ui/input\";\nimport { Variants } from \"../ui\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { RegisterOptions, Control } from \"react-hook-form\";\n\nexport interface InputProps extends ShadcnInputProps {\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n variant?: Variants;\n rules?: RegisterOptions;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = \"default\",\n className,\n title,\n name,\n control,\n isFormField,\n rules,\n ...props\n },\n ref\n ) => {\n return isFormField ? (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnInput className={className} {...props} {...field} />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnInput className={className} ref={ref} {...props} />\n );\n }\n);\n\nInput.displayName = \"Input\";\n","import { useKnowledgeGraphContext } from \"@elqnt/kg\";\nimport { Loader2 } from \"lucide-react\";\n\nexport function KnowledgeGraphWordCloud() {\n const { labels } = useKnowledgeGraphContext();\n\n if (!labels || !(labels instanceof Array)) {\n return null;\n }\n\n const data = labels?.map((item) => {\n return { text: item?.label, value: item?.count };\n });\n\n return (\n <div className=\"rounded-xl border bg-card h-full shadow relative p-5\">\n <p className=\"capitalize mb-10 font-semibold text-xl\">\n Graph Distribution\n </p>\n {!data ? (\n <div className=\"absolute w-full flex justify-end\">\n <Loader2 className=\"animate-spin\" />\n </div>\n ) : (\n <></>\n // <WordCloud\n // data={data}\n // width={400}\n // height={120}\n // font=\"Times\"\n // fontWeight=\"bold\"\n // fontSize={(word) => Math.log2(word.value) * 3}\n // spiral=\"rectangular\"\n // rotate={0}\n // padding={3}\n // random={Math.random}\n // />\n )}\n </div>\n );\n}\n","\"use client\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport { useEffect, useState } from \"react\";\nimport { Combobox, ComboboxOption } from \"../combobox\";\n\nexport function OrgSelector() {\n const { user, selectedOrgId, setSelectedOrgId } = useUserContext();\n const [orgAccess, setOrgAccess] = useState<ComboboxOption[]>([]);\n\n useEffect(() => {\n if (user?.orgAccess) {\n const formattedOrgAccess = user.orgAccess.map((org) => ({\n value: org.orgId,\n label: org.orgTitle,\n }));\n\n // formattedOrgAccess.push({\n // value: \"shopify_eloquent_dev_myshopify_com\",\n // label: \"Eloquent Dev\",\n // });\n\n setOrgAccess(formattedOrgAccess);\n }\n }, [user]);\n\n const handleOrgIdChange = (value: string) => {\n // Let the context's setSelectedOrgId handle storage (localStorage or cookie)\n setSelectedOrgId?.(value);\n };\n\n if (!user) {\n return null;\n }\n return (\n <Combobox\n defaultValue={selectedOrgId!}\n options={orgAccess}\n onChange={handleOrgIdChange}\n label=\"Select an Organization\"\n />\n );\n}\n","\"use client\";\n\nimport { ChevronLeft } from \"lucide-react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { cn } from \"../../../lib\";\nimport { Button } from \"../button\";\n\ntype Action = {\n label: string;\n type: \"secondary\" | \"link\" | \"default\" | \"destructive\" | \"outline\" | \"ghost\";\n href?: string;\n onAction?: () => void;\n};\n\nexport type PageHeaderProps = {\n title?: string;\n description?: string;\n actions?: Action[];\n goBackLink?: string;\n showBack?: boolean;\n backUrl?: string;\n rightSideComponent?: React.ReactNode;\n titleComponent?: React.ReactNode;\n justify?: \"start\" | \"center\" | \"end\" | \"between\" | \"around\" | \"evenly\";\n};\n\nexport function PageHeader({\n title,\n description,\n actions,\n goBackLink,\n showBack,\n backUrl,\n rightSideComponent,\n titleComponent,\n justify = \"between\",\n}: PageHeaderProps) {\n const router = useRouter();\n\n const handleBack = () => {\n if (backUrl) {\n router.push(backUrl);\n } else {\n router.back();\n }\n };\n\n function getJustifyClass() {\n switch (justify) {\n case \"start\":\n return \"justify-start\";\n case \"center\":\n return \"justify-center\";\n\n case \"end\":\n return \"justify-end\";\n case \"between\":\n return \"justify-between\";\n case \"around\":\n return \"justify-around\";\n case \"evenly\":\n return \"justify-evenly\";\n default:\n return \"justify-between\";\n }\n }\n\n return (\n <div\n className={cn(\n \"p-4 border-b border-gray-200 flex gap-4 items-center\",\n getJustifyClass()\n )}\n >\n <div>\n <div>\n <div className=\"flex items-center gap-2\">\n {goBackLink && (\n <Link href={goBackLink}>\n <ChevronLeft className=\"h-4 w-4\" />\n </Link>\n )}\n {showBack && !goBackLink && (\n <button\n onClick={handleBack}\n className=\"h-8 w-8 p-0 flex items-center justify-center rounded-md border border-gray-200 hover:bg-gray-50 transition-colors\"\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n )}\n {titleComponent ??\n (title && (\n <h2 className=\"font-semibold text-lg text-primary p-0 m-0\">\n {title}\n </h2>\n ))}\n </div>\n </div>\n {description && <p className=\"text-sm text-gray-500\">{description}</p>}\n </div>\n <div className=\"flex gap-2 items-center\">\n {rightSideComponent}\n {actions?.map((action, index) =>\n action.href ? (\n <Link href={action.href} key={index}>\n <Button variant={action.type}>{action.label}</Button>\n </Link>\n ) : (\n <Button key={index} variant={action.type} onClick={action.onAction}>\n {action.label}\n </Button>\n )\n )}\n </div>\n </div>\n );\n}\n","\"use client\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../../ui/tooltip\";\nimport { useUserContext } from \"@elqnt/auth\";\nimport Link from \"next/link\";\nimport { usePathname, useRouter } from \"next/navigation\";\nimport { useEffect, useState } from \"react\";\nimport { Icon } from \"../icon\";\nimport { IconButton, NavItem } from \"../icon-button\";\nimport { Input } from \"../../ui/input\";\nimport { OrgSelector } from \"./org-selector\";\nimport { ProfileMenu } from \"./profile-menu\";\n\nconst articles = [\n { key: \"getting-started\", title: \"Getting Started\", href: \"#\" },\n { key: \"helpdesk\", title: \"Helpdesk\", href: \"#\" },\n];\n\nexport function LeftNav({\n fullMenuItems,\n menuItems,\n pageTitle,\n ExpandedLogo,\n Logo,\n}: {\n fullMenuItems: NavItem[];\n menuItems?: NavItem[] | undefined;\n pageTitle?: String | undefined;\n ExpandedLogo: React.FC;\n Logo: React.FC;\n}) {\n const router = useRouter();\n const pathName = usePathname();\n const { user, selectedOrgId, selectedOrg } = useUserContext();\n\n const [isExpanded, setIsExpanded] = useState(() => {\n const stored = localStorage.getItem(\"isExpanded\");\n return stored === null ? true : stored === \"true\";\n });\n const [apps, setApps] = useState<NavItem[]>([]);\n const [items, setItems] = useState<NavItem[] | undefined>(menuItems);\n // const [isOpenPopover, setIsOpenPopover] = useState(false);\n\n useEffect(() => {\n setItems(menuItems);\n }, [menuItems]);\n\n useEffect(() => {\n if (!user || !selectedOrgId || !selectedOrg) return;\n const orgAccess = user.orgAccess?.find(\n (org) => org.orgId === selectedOrgId\n );\n if (!orgAccess) return;\n const apps = fullMenuItems?.filter((item) =>\n selectedOrg.apps?.includes(item.key as any)\n );\n setApps(apps);\n }, [user, selectedOrgId, selectedOrg]);\n\n useEffect(() => {\n localStorage.setItem(\"isExpanded\", isExpanded.toString());\n }, [isExpanded]);\n\n return (\n <div\n style={{ height: \"calc(100vh - 32px)\" }}\n className={`relative pt-4 ${isExpanded ? \"min-w-72\" : \"min-w-16\"} transition-width duration-300 rounded-lg text-gray-500 sticky top-4 bg-white`}\n >\n <TooltipProvider>\n <div className=\"absolute top-0 flex flex-col gap-8 justify-between h-full w-full duration-300 ease-in-out sc-card bg-white! p-3 overflow-y-scroll hide-scrollbar\">\n <div\n className={`flex flex-col gap-1 ${!isExpanded && \"items-center\"}`}\n >\n <div className=\"cursor-pointer flex items-center justify-between mb-4 w-full\">\n <div\n onClick={() =>\n isExpanded ? router.push(\"/\") : setIsExpanded(true)\n }\n >\n {isExpanded ? <ExpandedLogo /> : <Logo />}\n </div>\n\n {isExpanded && (\n <span onClick={() => setIsExpanded(false)}>\n <Icon name=\"ChevronsLeftRight\" />\n </span>\n )}\n </div>\n\n {items ? (\n <>\n <div\n onClick={() => setItems(undefined)}\n className=\"flex items-center px-1 gap-2 cursor-pointer mb-4 text-lg\"\n >\n <Icon name=\"ArrowLeft\" size={19} />\n {isExpanded && <span>{pageTitle}</span>}\n </div>\n {menuItems?.map((item) => (\n <Link\n href={item.href!}\n key={item.title}\n className={`flex items-center gap-2 cursor-pointer w-full text-sm rounded-lg py-3 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0 justify-center\"}\n ${item.href && (item.href?.split(\"/\").length > 2 ? (pathName?.includes(item.href!) ?? \"\") : pathName === item.href) && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n {isExpanded ? (\n <>\n <Icon name={item.icon} size={19} />\n <span>{item.title}</span>\n </>\n ) : (\n <Tooltip delayDuration={0}>\n <TooltipTrigger>\n <Icon name={item.icon} />\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>{item.title}</p>\n </TooltipContent>\n </Tooltip>\n )}\n </Link>\n ))}\n </>\n ) : isExpanded ? (\n <>\n <div id=\"menu-row\">\n <h2 className=\"text-xl font-semibold\">Apps</h2>\n <div className=\"grid grid-cols-2 gap-2 mt-6\">\n {apps\n .filter((item) => item.key !== \"home\")\n .map((item) => (\n <IconButton\n key={item.key}\n item={item}\n variant=\"ghost\"\n onClick={() => {\n router.push(item.href!);\n setItems(menuItems);\n }}\n />\n ))}\n </div>\n </div>\n\n <div id=\"help-row\" className=\"mt-12 ml-2\">\n <h2 className=\"text-xl font-semibold\">Help</h2>\n <div className=\"mt-6\">\n <Input placeholder=\"Search help content\" />\n </div>\n\n <ul className=\"mt-6 ml-4 list-disc\">\n {articles.map((item) => (\n <li key={item.key}>\n <Link\n href={item.href}\n className=\"block mb-2 underline\"\n onClick={() => setIsExpanded(false)}\n >\n {item.title}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </>\n ) : (\n <div className=\"flex flex-col gap-6 mt-2\">\n {apps?.map((item) => (\n <Tooltip key={item.key} delayDuration={0}>\n <TooltipTrigger>\n <div\n onClick={() => {\n router.push(item.href!);\n setItems(menuItems);\n }}\n >\n <Icon name={item.icon} />\n </div>\n </TooltipTrigger>\n <TooltipContent side=\"right\">\n <p>{item.title}</p>\n </TooltipContent>\n </Tooltip>\n ))}\n </div>\n )}\n </div>\n\n <div>\n {isExpanded && (\n <div className=\"mb-2\">\n <OrgSelector />\n </div>\n )}\n {/* <div\n onMouseEnter={() => setIsOpenPopover(true)}\n onMouseLeave={() => setIsOpenPopover(false)}\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName === \"/notifications\" && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <NotificationBell\n isOpenPopover={isOpenPopover}\n setIsOpenPopover={setIsOpenPopover}\n />\n {isExpanded && <span>Notifications</span>}\n </div> */}\n\n <Link\n href=\"/admin/settings\"\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName?.includes(\"/settings\") && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <Icon name=\"Settings\" />\n {isExpanded && <span>Settings</span>}\n </Link>\n\n <Link\n href=\"/admin/help\"\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 mb-1 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}\n ${pathName?.includes(\"/help\") && isExpanded ? \"bg-primary/10 text-primary\" : \"\"}\n `}\n >\n <Icon name=\"HeartHandshake\" />\n {isExpanded && <span>Help</span>}\n </Link>\n\n <ProfileMenu pathName={pathName ?? \"\"}>\n <div\n className={`flex items-center gap-4 cursor-pointer w-full rounded-lg py-2 ${isExpanded ? \"pl-2 hover:bg-primary/10 hover:text-primary\" : \"pl-0\"}`}\n >\n <Icon name=\"User\" />\n {isExpanded && <span>{user?.firstName}</span>}\n </div>\n </ProfileMenu>\n </div>\n </div>\n </TooltipProvider>\n </div>\n );\n}\n","\"use client\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"../../ui/popover\";\nimport { icons } from \"lucide-react\";\nimport { signOut } from \"next-auth/react\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/navigation\";\nimport { Icon } from \"../icon\";\n\ntype ProfileMenuProps = {\n children: React.ReactNode;\n pathName: string;\n};\n\ntype MenuLinks = {\n key: string;\n title: string;\n href: string;\n icon: keyof typeof icons;\n onClick?: () => void;\n};\n\nexport function ProfileMenu({ children, pathName }: ProfileMenuProps) {\n const router = useRouter();\n\n const handleSignOut = async () => {\n await signOut({ redirect: false });\n router.push(\"/\");\n };\n\n const links: MenuLinks[] = [\n {\n key: \"my-account\",\n title: \"My Account\",\n href: \"/admin/my-account\",\n icon: \"User\",\n },\n {\n key: \"sign-out\",\n title: \"Sign out\",\n href: \"#\",\n icon: \"LogOut\",\n onClick: handleSignOut,\n },\n ];\n\n return (\n <Popover>\n <PopoverTrigger asChild>{children}</PopoverTrigger>\n <PopoverContent className=\"p-0! flex flex-col\">\n {links.map((link) => (\n <Link\n key={link?.key}\n href={link?.href}\n onClick={link.onClick}\n className={`cursor-pointer w-full hover:bg-primary/10 hover:text-primary p-4 flex items-center gap-4 text-gray-500 \n ${pathName.includes(link?.href) && \"bg-primary/10 text-primary\"}`}\n >\n <Icon name={link?.icon} size={20} />\n {link?.title}\n </Link>\n ))}\n </PopoverContent>\n </Popover>\n );\n}\n","\"use client\";\nimport { Check, X } from \"lucide-react\";\nimport { Badge } from \"../ui/badge\";\nimport { Button } from \"../ui/button\";\nimport { Command, CommandGroup, CommandItem } from \"../ui/command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\n\nimport { cn } from \"../../lib/utils\";\nimport { useState } from \"react\";\n\nexport type MultiSelectOption = {\n value: string;\n label: string;\n};\n\nexport type MultiSelectProps = {\n defaultValue?: string[];\n placeholder: string;\n options: MultiSelectOption[];\n onValueChange: (values: string[]) => void;\n className?: string;\n};\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n defaultValue = [],\n placeholder,\n options,\n className = \"\",\n onValueChange,\n}) => {\n const [open, setOpen] = useState(false);\n const [selectedValues, setSelectedValues] = useState<string[]>(defaultValue);\n\n const handleSelect = (value: string) => {\n let updatedValues: string[];\n if (selectedValues.includes(value)) {\n updatedValues = selectedValues.filter((v) => v !== value);\n } else {\n updatedValues = [...selectedValues, value];\n }\n setSelectedValues(updatedValues);\n onValueChange(updatedValues);\n };\n\n const handleClear = (value: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const updatedValues = selectedValues.filter((v) => v !== value);\n setSelectedValues(updatedValues);\n onValueChange(updatedValues);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\"min-h-10 h-auto w-full justify-between\", className)}\n >\n <div className=\"flex flex-wrap gap-1\">\n {selectedValues.length === 0 && placeholder}\n {selectedValues.map((value) => (\n <Badge\n key={value}\n variant=\"secondary\"\n className=\"mr-1 mb-1\"\n onClick={(e) => handleClear(value, e)}\n >\n {options.find((opt) => opt.value === value)?.label}\n <X className=\"ml-1 h-3 w-3\" />\n </Badge>\n ))}\n </div>\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"p-0\">\n <Command>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n onSelect={() => handleSelect(option.value)}\n >\n <Check\n className={cn(\n \"mr-2 h-4 w-4\",\n selectedValues.includes(option.value)\n ? \"opacity-100\"\n : \"opacity-0\"\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </Command>\n </PopoverContent>\n </Popover>\n );\n};\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Card } from \"../ui/card\";\nimport { Check, Loader2 } from \"lucide-react\";\nimport React, { useEffect, useState } from \"react\";\n\nexport interface StepComponentProps {\n step: Step;\n updateStep: (updates: Partial<Step>) => void;\n}\n\nexport interface Step {\n id: number;\n title: string;\n component: React.ComponentType<StepComponentProps>;\n isValid: boolean;\n isLoading?: boolean;\n isComplete?: boolean;\n action?: () => Promise<void>;\n}\n\ninterface MultiStepProcessProps {\n initialSteps: Omit<Step, \"isValid\" | \"isComplete\">[];\n onFinish: () => void;\n finishButtonText?: string;\n}\n\nexport const MultiStepProcess: React.FC<MultiStepProcessProps> = ({\n initialSteps,\n onFinish,\n finishButtonText,\n}) => {\n const [steps, setSteps] = useState<Step[]>(\n initialSteps.map((step) => ({ ...step, isValid: false, isComplete: false }))\n );\n const [currentStepIndex, setCurrentStepIndex] = useState(0);\n\n const updateStep = (stepIndex: number, updates: Partial<Step>) => {\n setSteps((prevSteps) =>\n prevSteps.map((step, index) =>\n index === stepIndex ? { ...step, ...updates } : step\n )\n );\n };\n\n const goToNextStep = async () => {\n const currentStepData = steps[currentStepIndex];\n\n if (currentStepData.action) {\n updateStep(currentStepIndex, { isLoading: true });\n try {\n await currentStepData.action();\n } catch (error) {\n console.error(\"Error executing step action:\", error);\n updateStep(currentStepIndex, { isLoading: false });\n return;\n }\n }\n\n if (currentStepIndex < steps.length - 1) {\n setCurrentStepIndex(currentStepIndex + 1);\n } else if (\n currentStepIndex === steps.length - 1 &&\n currentStepData.isValid\n ) {\n onFinish();\n }\n\n updateStep(currentStepIndex, { isLoading: false });\n };\n\n useEffect(() => {\n const currentStep = steps[currentStepIndex];\n if (currentStep.isComplete) {\n goToNextStep();\n }\n }, [steps, currentStepIndex]);\n\n const goToPreviousStep = () => {\n if (currentStepIndex > 0) {\n setCurrentStepIndex(currentStepIndex - 1);\n }\n };\n\n const renderStepComponent = (step: Step, index: number) => {\n const StepComponent = step.component;\n return (\n <StepComponent\n step={step}\n updateStep={(updates) => updateStep(index, updates)}\n />\n );\n };\n\n const isLastStep = currentStepIndex === steps.length - 1;\n const currentStepData = steps[currentStepIndex];\n\n return (\n <Card className=\"p-6\">\n <div className=\"mb-8\">\n <div className=\"flex justify-between items-start\">\n {steps.map((step, i) => (\n <div key={i} className=\"flex flex-col items-center\">\n <div\n className={`\n w-10 h-10 rounded-full flex items-center justify-center mb-2\n ${\n i < currentStepIndex\n ? \"bg-green-500 text-white\"\n : i === currentStepIndex\n ? \"bg-blue-500 text-white\"\n : \"bg-gray-200 text-gray-500\"\n }\n `}\n >\n {i < currentStepIndex ? (\n <Check className=\"w-6 h-6\" />\n ) : (\n <span>{step.id}</span>\n )}\n </div>\n <span className=\"text-sm text-center max-w-[100px]\">\n {step.title}\n </span>\n </div>\n ))}\n </div>\n </div>\n\n <div className=\"mb-3\">\n {renderStepComponent(currentStepData, currentStepIndex)}\n </div>\n\n <div className=\"flex justify-between\">\n <Button\n onClick={goToPreviousStep}\n disabled={currentStepIndex === 0 || currentStepData.isLoading}\n variant=\"outline\"\n >\n Previous\n </Button>\n <Button\n onClick={goToNextStep}\n disabled={!currentStepData.isValid || currentStepData.isLoading}\n >\n {currentStepData.isLoading ? (\n <Loader2 className=\"h-6 w-6 animate-spin\" />\n ) : isLastStep ? (\n (finishButtonText ?? \"Finish\")\n ) : (\n \"Next\"\n )}\n </Button>\n </div>\n </Card>\n );\n};\n","import * as React from \"react\";\nimport {\n Popover as ShadcnPopover,\n PopoverTrigger as ShadcnPopoverTrigger,\n PopoverContent as ShadcnPopoverContent,\n} from \"../ui/popover\";\n\nexport interface PopoverProps {\n trigger: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n align?: \"start\" | \"center\" | \"end\";\n sideOffset?: number;\n}\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n children,\n className = \"\",\n align = \"center\",\n sideOffset = 4,\n}) => {\n return (\n <ShadcnPopover>\n <ShadcnPopoverTrigger asChild>\n <div className={className}>{trigger}</div>\n </ShadcnPopoverTrigger>\n <ShadcnPopoverContent\n align={align}\n sideOffset={sideOffset}\n className=\"custom-popover-content\"\n >\n {children}\n </ShadcnPopoverContent>\n </ShadcnPopover>\n );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\";\nimport {\n RadioGroupItem,\n RadioGroup as ShadcnRadioGroup,\n} from \"../ui/radio-group\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { Control } from \"react-hook-form\";\n\nexport type RadioOption = {\n value: string;\n label: string;\n};\n\nexport interface RadioGroupProps extends React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root> {\n options: RadioOption[];\n defaultValue?: string;\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n}\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n RadioGroupProps\n>(({ className, options, defaultValue, title, name, control, isFormField, ...props }, ref) => {\n if (!isFormField) {\n return (\n <ShadcnRadioGroup defaultValue={defaultValue} {...props} ref={ref}>\n {options?.map((option) => (\n <div key={option.value} className=\"flex items-center space-x-2 cursor-pointer\">\n <RadioGroupItem value={option.value} id={option.value} />\n <label htmlFor={option.value}>{option.label}</label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n\n return (\n <FormField\n control={control}\n name={name!}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnRadioGroup\n onValueChange={field.onChange}\n defaultValue={field.value}\n {...props}\n >\n {options?.map((option) => (\n <div key={option.value} className=\"flex items-center space-x-2 cursor-pointer\">\n <RadioGroupItem value={option.value} id={option.value} />\n <label htmlFor={option.value}>{option.label}</label>\n </div>\n ))}\n </ShadcnRadioGroup>\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n );\n});\n\nRadioGroup.displayName = \"RadioGroup\";\n","import * as React from \"react\";\nimport {\n ScrollArea as ShadcnScrollArea,\n ScrollAreaViewport as ShadcnScrollAreaViewport,\n ScrollAreaScrollbar as ShadcnScrollAreaScrollbar,\n ScrollAreaThumb as ShadcnScrollAreaThumb,\n ScrollAreaCorner as ShadcnScrollAreaCorner,\n} from \"@radix-ui/react-scroll-area\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ScrollAreaProps\n extends React.ComponentPropsWithoutRef<typeof ShadcnScrollArea> {\n children: React.ReactNode;\n className?: string;\n}\n\nexport const ScrollArea = React.forwardRef<\n React.ElementRef<typeof ShadcnScrollArea>,\n ScrollAreaProps\n>(({ className, children, ...props }, ref) => (\n <ShadcnScrollArea\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n {...props}\n >\n <ShadcnScrollAreaViewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ShadcnScrollAreaViewport>\n <ScrollBar />\n <ShadcnScrollAreaCorner />\n </ShadcnScrollArea>\n));\nScrollArea.displayName = ShadcnScrollArea.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ShadcnScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<typeof ShadcnScrollAreaScrollbar>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <ShadcnScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n \"flex touch-none select-none transition-colors\",\n orientation === \"vertical\" &&\n \"h-full w-2.5 border-l border-l-transparent p-px\",\n orientation === \"horizontal\" &&\n \"h-2.5 flex-col border-t border-t-transparent p-px\",\n className\n )}\n {...props}\n >\n <ShadcnScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ShadcnScrollAreaScrollbar>\n));\nScrollBar.displayName = ShadcnScrollAreaScrollbar.displayName;\n","import {\n Select as ShadcnSelect,\n SelectContent as ShadcnSelectContent,\n SelectItem as ShadcnSelectItem,\n SelectTrigger as ShadcnSelectTrigger,\n SelectValue as ShadcnSelectValue,\n} from \"../ui/select\";\n\nexport type SelectOption = {\n value: string;\n label: string;\n};\n\nexport type SelectProps = {\n defaultValue: string;\n placeholder: string;\n options: SelectOption[];\n onValueChange: (value: string) => void;\n className?: string;\n};\n\nexport const Select: React.FC<SelectProps> = ({\n defaultValue,\n placeholder,\n options,\n className = \"\",\n onValueChange,\n}) => {\n return (\n <ShadcnSelect value={defaultValue} onValueChange={onValueChange}>\n <ShadcnSelectTrigger className={className}>\n <ShadcnSelectValue placeholder={placeholder} />\n </ShadcnSelectTrigger>\n <ShadcnSelectContent>\n {options?.map((option, i) => (\n <ShadcnSelectItem key={i} value={option.value}>\n {option.label}\n </ShadcnSelectItem>\n ))}\n </ShadcnSelectContent>\n </ShadcnSelect>\n );\n};\n","import * as CollapsiblePrimitive from \"@radix-ui/react-collapsible\"\n\nconst Collapsible = CollapsiblePrimitive.Root\n\nconst CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger\n\nconst CollapsibleContent = CollapsiblePrimitive.CollapsibleContent\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent }\n","import * as React from \"react\"\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\"\n\nimport { cn } from \"../../lib/utils\"\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>\n>(({ className, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n ref={ref}\n className={cn(\n \"relative h-2 w-full overflow-hidden rounded-full bg-primary/20\",\n className\n )}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n))\nProgress.displayName = ProgressPrimitive.Root.displayName\n\nexport { Progress }\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Collapsible, CollapsibleContent } from \"../ui/collapsible\";\nimport { Progress } from \"../ui/progress\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { Check } from \"lucide-react\";\nimport React, { useId, useState } from \"react\";\n\ninterface ButtonProps {\n content: string;\n props: React.ButtonHTMLAttributes<HTMLButtonElement>;\n}\n\ninterface SetupItem {\n id: number;\n title: string;\n description: string;\n complete: boolean;\n image?: {\n url: string;\n alt: string;\n };\n primaryButton?: ButtonProps;\n secondaryButton?: ButtonProps;\n}\n\ninterface SetupGuideProps {\n onDismiss: () => void;\n onStepComplete: (id: number) => Promise<void>;\n items: SetupItem[];\n}\n\nexport const SetupGuide: React.FC<SetupGuideProps> = ({\n onDismiss,\n onStepComplete,\n items,\n}) => {\n const [expanded, setExpanded] = useState<string | number | null>(\n items.findIndex((item) => !item.complete)\n );\n const [isGuideOpen, setIsGuideOpen] = useState<boolean>(true);\n const accessId = useId();\n const completedItemsLength = items.filter((item) => item.complete).length;\n\n return (\n <div className=\"p-0\">\n <div className=\"px-4 pb-4\">\n <div className=\"space-y-4\">\n \n <div className=\"mt-2\">\n <div className=\"flex items-center gap-2\">\n {completedItemsLength === items.length ? (\n <div className=\"flex items-center gap-1\">\n <Check className=\"h-4 w-4 text-gray-400\" />\n <span className=\"text-sm text-gray-400\">Done</span>\n </div>\n ) : (\n <span className=\"text-sm\">\n {`${completedItemsLength} / ${items.length} completed`}\n </span>\n )}\n\n {completedItemsLength !== items.length && (\n <div className=\"w-24\">\n <Progress\n value={(completedItemsLength / items.length) * 100}\n className=\"h-1\"\n />\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n <Collapsible open={isGuideOpen} id={accessId}>\n <CollapsibleContent className=\"p-2\">\n <div className=\"space-y-1\">\n {items.map((item) => (\n <SetupItem\n key={item.id}\n expanded={expanded === item.id}\n setExpanded={() => setExpanded(item.id)}\n onComplete={onStepComplete}\n {...item}\n />\n ))}\n </div>\n </CollapsibleContent>\n </Collapsible>\n {completedItemsLength === items.length && (\n <div className=\"border-t border-gray-200 bg-gray-50 p-3\">\n <div className=\"flex justify-end\">\n <Button onClick={onDismiss}>Dismiss Guide</Button>\n </div>\n </div>\n )}\n </div>\n );\n};\n\ninterface SetupItemProps extends SetupItem {\n expanded: boolean;\n setExpanded: () => void;\n onComplete: (id: number) => Promise<void>;\n}\n\nconst SetupItem: React.FC<SetupItemProps> = ({\n complete,\n onComplete,\n expanded,\n setExpanded,\n title,\n description,\n image,\n primaryButton,\n secondaryButton,\n id,\n}) => {\n const [loading, setLoading] = useState<boolean>(false);\n\n const completeItem = async () => {\n setLoading(true);\n await onComplete(id);\n setLoading(false);\n };\n\n return (\n <div className={`rounded ${expanded ? \"bg-gray-100\" : \"\"}`}>\n <div className={`p-2 ${expanded ? \"\" : \"hover:bg-gray-50\"}`}>\n <div className=\"flex gap-2 items-start\">\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"mt-0.5\"\n onClick={completeItem}\n >\n {loading ? (\n <div className=\"h-5 w-5 animate-spin rounded-full border-2 border-gray-300 border-t-gray-600\" />\n ) : complete ? (\n <div className=\"h-5 w-5 rounded-full bg-gray-900 flex items-center justify-center\">\n <Check className=\"h-3 w-3 text-white\" />\n </div>\n ) : (\n <div className=\"h-5 w-5 rounded-full border-2 border-gray-300\" />\n )}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n {complete ? \"Mark as not done\" : \"Mark as done\"}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n <div\n className={`grow ${expanded ? \"\" : \"cursor-pointer\"}`}\n onClick={expanded ? undefined : setExpanded}\n >\n <div className=\"space-y-3\" id={id.toString()}>\n <h4 className={expanded ? \"text-sm font-semibold\" : \"text-sm\"}>\n {title}\n </h4>\n <Collapsible open={expanded}>\n <CollapsibleContent className=\"pb-2 pr-2\">\n <div className=\"space-y-4\">\n <p className=\"text-sm text-gray-600\">{description}</p>\n {(primaryButton || secondaryButton) && (\n <div className=\"space-x-3\">\n {primaryButton && (\n <Button {...primaryButton.props}>\n {primaryButton.content}\n </Button>\n )}\n {secondaryButton && (\n <Button variant=\"outline\" {...secondaryButton.props}>\n {secondaryButton.content}\n </Button>\n )}\n </div>\n )}\n </div>\n </CollapsibleContent>\n </Collapsible>\n </div>\n </div>\n {image && expanded && (\n <img\n src={image.url}\n alt={image.alt}\n className=\"hidden md:block max-h-24\"\n />\n )}\n </div>\n </div>\n </div>\n );\n};\n","import {\n Sheet as ShadcnSheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n SheetTrigger,\n} from \"../ui/sheet\";\nimport * as SheetPrimitive from \"@radix-ui/react-dialog\";\n\nexport type SheetPrimitiveRootProps = React.ComponentProps<\n typeof SheetPrimitive.Root\n>;\n\nexport type SheetProps = {\n title: string;\n children: React.ReactNode;\n description?: string;\n trigger?: React.ReactNode;\n} & SheetPrimitiveRootProps;\n\nexport const Sheet = ({\n title,\n trigger,\n description,\n children,\n ...props\n}: SheetProps) => {\n return (\n <ShadcnSheet {...props}>\n {trigger && <SheetTrigger>{trigger}</SheetTrigger>}\n <SheetContent>\n <SheetHeader>\n <SheetTitle>{title}</SheetTitle>\n <SheetDescription>{description}</SheetDescription>\n {children}\n </SheetHeader>\n </SheetContent>\n </ShadcnSheet>\n );\n};\n","import { X } from \"lucide-react\";\nimport * as React from \"react\";\nimport { Variants } from \"../ui\";\n\nexport interface TagsInputProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"value\" | \"onChange\"\n > {\n variant?: Variants;\n value: string[];\n onChange: (tags: string[]) => void;\n}\n\nexport const TagsInput = React.forwardRef<HTMLInputElement, TagsInputProps>(\n ({ variant = \"default\", className, value, onChange, ...props }, ref) => {\n const [inputValue, setInputValue] = React.useState(\"\");\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if ((event.key === \"Enter\" || event.key === \",\") && inputValue.trim()) {\n if (event.key === \",\") {\n event.preventDefault();\n }\n event.preventDefault();\n onChange([...value, inputValue.trim()]);\n setInputValue(\"\");\n } else if (event.key === \"Backspace\" && !inputValue && value.length > 0) {\n onChange(value.slice(0, -1));\n }\n };\n\n const removeTag = (index: number) => {\n onChange(value.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap gap-2 p-2 border rounded\">\n {value.map((tag, index) => (\n <span\n key={index}\n className=\"bg-gray-200 px-2 py-1 rounded flex items-center\"\n >\n {tag}\n <X\n className=\"ml-1 w-4 h-4 cursor-pointer\"\n onClick={() => removeTag(index)}\n />\n </span>\n ))}\n <input\n className=\"grow border-none focus:ring-0\"\n ref={ref}\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n {...props}\n />\n </div>\n );\n }\n);\n\nTagsInput.displayName = \"TagsInput\";\n","import * as React from \"react\";\nimport {\n Textarea as ShadcnTextarea,\n TextareaProps as ShadcnTextareaProps,\n} from \"../ui/textarea\";\nimport { Variants } from \"../ui\";\nimport {\n FormControl,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n} from \"../ui/form\";\nimport { RegisterOptions, Control } from \"react-hook-form\";\n\nexport interface TextareaProps extends ShadcnTextareaProps {\n title?: string;\n name?: string;\n control?: Control;\n isFormField?: boolean;\n variant?: Variants;\n rules?: RegisterOptions;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n variant = \"default\",\n className,\n title,\n name,\n control,\n isFormField,\n rules,\n ...props\n },\n ref\n ) => {\n return isFormField ? (\n <FormField\n control={control}\n name={name!}\n rules={rules}\n render={({ field }) => (\n <FormItem>\n {title && <FormLabel>{title}</FormLabel>}\n <FormControl>\n <ShadcnTextarea\n className={`${className} resize-none`}\n {...field}\n {...props}\n />\n </FormControl>\n <FormMessage />\n </FormItem>\n )}\n />\n ) : (\n <ShadcnTextarea\n className={`${className} resize-none`}\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nTextarea.displayName = \"Textarea\";\n","\"use client\";\nimport { Clock } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { Button } from \"../ui/button\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../ui/popover\";\nimport { Select } from \"./select\";\n\nexport type TimePickerProps = {\n value?: string;\n onValueChange: (time: string) => void;\n placeholder?: string;\n className?: string;\n disabled?: boolean;\n};\n\nexport const TimePicker: React.FC<TimePickerProps> = ({\n value,\n onValueChange,\n placeholder = \"Select time\",\n className = \"\",\n disabled = false,\n}) => {\n const [open, setOpen] = useState(false);\n\n const hours = Array.from({ length: 24 }, (_, i) => ({\n value: i.toString().padStart(2, \"0\"),\n label: i.toString().padStart(2, \"0\"),\n }));\n\n const minutes = Array.from({ length: 60 }, (_, i) => ({\n value: i.toString().padStart(2, \"0\"),\n label: i.toString().padStart(2, \"0\"),\n }));\n\n const [hour, minute] = value?.split(\":\") || [\"00\", \"00\"];\n\n const handleHourChange = (newHour: string) => {\n onValueChange(`${newHour}:${minute}`);\n };\n\n const handleMinuteChange = (newMinute: string) => {\n onValueChange(`${hour}:${newMinute}`);\n };\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className={`w-full justify-start text-left font-normal ${className}`}\n disabled={disabled}\n >\n <Clock className=\"mr-2 h-4 w-4\" />\n {value || placeholder}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-4\" align=\"start\">\n <div className=\"flex items-center gap-2\">\n <Select\n defaultValue={hour}\n placeholder=\"Select hour\"\n onValueChange={handleHourChange}\n options={hours}\n className=\"w-[80px]\"\n />\n <span className=\"text-lg\">:</span>\n <Select\n defaultValue={minute}\n placeholder=\"Select minute\"\n onValueChange={handleMinuteChange}\n options={minutes}\n className=\"w-[80px]\"\n />\n </div>\n </PopoverContent>\n </Popover>\n );\n};","import { ReactNode } from \"react\";\nimport {\n Tooltip as ShadcnTooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\n\nexport type TooltipProps = {\n children: ReactNode;\n tipContent: string;\n};\n\nexport const Tooltip = ({ children, tipContent }: TooltipProps) => {\n return (\n <TooltipProvider>\n <ShadcnTooltip delayDuration={0}>\n <TooltipTrigger>{children}</TooltipTrigger>\n <TooltipContent>\n <p>{tipContent}</p>\n </TooltipContent>\n </ShadcnTooltip>\n </TooltipProvider>\n );\n};\n","import { Loader2, Upload } from \"lucide-react\";\nimport { DropzoneOptions, FileRejection, useDropzone } from \"react-dropzone\";\nimport { toast } from \"sonner\";\nimport { getFileIcon, getFileName } from \"./helpers\";\n\ninterface UploadWidgetProps {\n accept: DropzoneOptions[\"accept\"];\n maxSize: number;\n maxFiles: number;\n fileUrls: string[];\n isUploading?: boolean;\n onFilesSelected: (urls: File[]) => void;\n}\n\nexport function UploadWidget({\n accept,\n maxSize,\n maxFiles,\n fileUrls,\n isUploading,\n onFilesSelected,\n}: UploadWidgetProps) {\n const fileMaxSizeMB = maxSize / 1024 / 1024;\n const acceptedTypes = accept ? Object.values(accept).flat().join(\", \") : \"\";\n\n const onDropFiles = (\n acceptedFiles: File[],\n fileRejections: FileRejection[]\n ) => {\n onFilesSelected(acceptedFiles);\n\n if (fileRejections.length > 0) {\n if (fileRejections[0].errors[0].code === \"file-too-large\") {\n toast.error(\n `File size is too large. Please upload a file smaller than ${fileMaxSizeMB}MB.`\n );\n } else {\n toast.error(\n `File type is not supported. Please upload ${acceptedTypes.replace(/\\./g, \"\")} files.`\n );\n }\n }\n };\n\n const dropzoneOptions: DropzoneOptions = {\n onDrop: onDropFiles,\n accept,\n maxSize,\n maxFiles,\n };\n\n const { getRootProps, getInputProps, isDragActive } =\n useDropzone(dropzoneOptions);\n\n return (\n <div\n {...getRootProps()}\n className=\"relative border-2 border-dashed border-gray-300 rounded-lg p-6 text-center cursor-pointer min-h-[160px]\"\n >\n {isUploading && (\n <div className=\"absolute top-3 right-3\">\n <Loader2 className=\"animate-spin h-6 w-6 text-primary\" />\n </div>\n )}\n <input {...getInputProps()} />\n {isDragActive ? (\n <p>Drop the files here ...</p>\n ) : (\n <div>\n <Upload className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p>Drag n drop some files here, or click to select files</p>\n <p className=\"text-sm text-gray-500\">\n Only {acceptedTypes} files up to {fileMaxSizeMB}MB are accepted\n </p>\n </div>\n )}\n {fileUrls.length > 0 && (\n <div className=\"mt-4 border-t border-gray-300 pt-4\">\n <ul className=\"flex flex-wrap gap-2\">\n {fileUrls.map((url, i) => {\n const fileName = getFileName(url);\n return (\n <li key={i} className=\"flex items-center space-x-2 text-sm\">\n <div>{getFileIcon(fileName)}</div>\n <span>{fileName}</span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","import ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\n\nexport function MarkdownRenderer({ content }: { content: string }) {\n return (\n <ReactMarkdown\n remarkPlugins={[remarkGfm]}\n className=\"text-primary-900\"\n components={{\n a: ({ node, ...props }) => (\n <a\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:underline\"\n {...props}\n />\n ),\n h1: ({ node, ...props }) => (\n <h1 className=\"text-2xl font-bold mt-6 mb-4\" {...props} />\n ),\n h2: ({ node, ...props }) => (\n <h2 className=\"text-xl font-semibold mt-5 mb-3\" {...props} />\n ),\n h3: ({ node, ...props }) => (\n <h3 className=\"text-lg font-semibold mt-4 mb-2\" {...props} />\n ),\n code: ({ node, ...props }) => (\n <code\n className={\"block bg-stone-100 p-3 rounded font-mono\"}\n {...props}\n />\n ),\n ul: ({ node, ...props }) => (\n <ul className=\"list-disc pl-6 my-4\" {...props} />\n ),\n ol: ({ node, ...props }) => (\n <ol className=\"list-decimal pl-6 my-4\" {...props} />\n ),\n p: ({ node, ...props }) => <p className=\"my-4\" {...props} />,\n blockquote: ({ node, ...props }) => (\n <blockquote\n className=\"border-l-4 border-stone-200 pl-4 my-4 italic\"\n {...props}\n />\n ),\n }}\n >\n {content}\n </ReactMarkdown>\n );\n}\n\n\n","export function ChatLoading() {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 60 15\"\n width=\"60\"\n height=\"15\"\n >\n <circle cx=\"7.5\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n <circle cx=\"30\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0.2s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n <circle cx=\"52.5\" cy=\"7.5\" r=\"3.5\" fill=\"#444444\">\n <animate\n attributeName=\"cy\"\n from=\"7.5\"\n to=\"3.5\"\n dur=\"0.6s\"\n begin=\"0.4s\"\n repeatCount=\"indefinite\"\n keyTimes=\"0;0.5;1\"\n values=\"7.5;3.5;7.5\"\n />\n </circle>\n </svg>\n );\n}\n","\"use client\";\nimport { Separator } from \"../ui/separator\";\nimport { ArrowLeft, icons, Loader2 } from \"lucide-react\";\nimport { useRouter } from \"next/navigation\";\nimport React from \"react\";\n\nexport type ActionButtonColor =\n | \"red\"\n | \"blue\"\n | \"green\"\n | \"yellow\"\n | \"purple\"\n | \"gray\";\n\nconst colorStyles: Record<ActionButtonColor, string> = {\n red: \"bg-red-50 hover:bg-red-100 text-red-600\",\n blue: \"bg-blue-50 hover:bg-blue-100 text-blue-600\",\n green: \"bg-green-50 hover:bg-green-100 text-green-600\",\n yellow: \"bg-yellow-50 hover:bg-yellow-100 text-yellow-600\",\n purple: \"bg-purple-50 hover:bg-purple-100 text-purple-600\",\n gray: \"bg-gray-50 hover:bg-gray-100 text-gray-600\",\n};\n\nexport interface ActionButton {\n label: string;\n icon: keyof typeof icons;\n action: () => Promise<void>;\n isLoading?: boolean;\n color: ActionButtonColor;\n}\n\ninterface EloquentActionBarProps {\n showBack?: boolean;\n buttons: ActionButton[];\n title?: string;\n}\n\nexport function EloquentActionBar({\n showBack = true,\n buttons,\n title,\n}: EloquentActionBarProps) {\n const router = useRouter();\n const LucideIcons = icons;\n\n return (\n <div className=\"flex bg-white border-gray-200 border-b border-x rounded-t-lg items-center\">\n {showBack && (\n <>\n <button\n onClick={() => router.back()}\n className=\"flex items-center px-3 py-2 hover:bg-gray-100 transition-colors\"\n >\n <ArrowLeft className=\"w-5 h-5 mr-2 text-gray-600\" />\n <span className=\"text-gray-600 font-medium\">Back</span>\n </button>\n <Separator orientation=\"vertical\" className=\"h-full\" />\n </>\n )}\n\n <div className=\"flex items-center\">\n {buttons.map((button, index) => {\n const Icon = LucideIcons[button.icon];\n return (\n <React.Fragment key={button.label}>\n <button\n onClick={button.action}\n disabled={button.isLoading}\n className={`flex items-center px-4 py-2 transition-colors ${\n colorStyles[button.color]\n } ${button.isLoading ? \"opacity-70 cursor-not-allowed\" : \"\"}`}\n >\n {button.isLoading ? (\n <Loader2 className=\"w-5 h-5 mr-2 animate-spin\" />\n ) : (\n <Icon className=\"w-5 h-5 mr-2\" />\n )}\n <span className=\"font-medium\">{button.label}</span>\n </button>\n {index < buttons.length - 1 && (\n <Separator orientation=\"vertical\" className=\"h-full\" />\n )}\n </React.Fragment>\n );\n })}\n </div>\n {title && <span className=\"text-lg\">{title}</span>}\n </div>\n );\n}\n\n// Example usage:\n/*\nconst buttons: ActionButton[] = [\n {\n label: 'Save',\n icon: 'Save',\n action: async () => { await handleSave() },\n isLoading: false,\n color: 'blue'\n },\n {\n label: 'Run',\n icon: 'Play',\n action: async () => { await handleRun() },\n isLoading: false,\n color: 'green'\n },\n {\n label: 'Delete',\n icon: 'Trash2',\n action: async () => { await handleDelete() },\n isLoading: false,\n color: 'red'\n }\n];\n\n<EloquentActionBar\n showBack={true}\n buttons={buttons}\n/>\n*/\n","import {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"../ui/select\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nfunction ColorDot({ color }: { color?: string }) {\n if (!color) return null;\n return (\n <div\n className=\"w-3 h-3 rounded-full mr-2 inline-block\"\n style={{ backgroundColor: color }}\n />\n );\n}\n\nexport function DropdownField({ schema, value, onChange }: SchemaFieldProps) {\n const options = schema.enum?.map((val, index) => ({\n value: String(val),\n label: schema[\"x-enumLabels\"]?.[index] || String(val),\n color: schema[\"x-enumColors\"]?.[index]\n }));\n\n const renderSelectedValue = () => {\n const selectedOption = options?.find(opt => opt.value === value);\n if (!selectedOption) return null;\n\n return (\n <div className=\"flex items-center\">\n <ColorDot color={selectedOption.color} />\n {selectedOption.label}\n </div>\n );\n };\n\n return (\n <Select\n value={value ?? \"\"}\n onValueChange={onChange}\n >\n <SelectTrigger>\n <SelectValue>{renderSelectedValue()}</SelectValue>\n </SelectTrigger>\n <SelectContent>\n {options?.map((option) => (\n <SelectItem\n key={option.value}\n value={option.value}\n className=\"flex items-center\"\n >\n <ColorDot color={option.color} />\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}","import { Input } from \"../ui/input\";\nimport { JSONSchema } from \"@elqnt/types\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nexport function StringField({\n name,\n schema,\n value,\n onChange,\n}: SchemaFieldProps) {\n const getInputType = (schema: JSONSchema): string => {\n if (schema.format) {\n switch (schema.format) {\n case \"email\":\n return \"email\";\n case \"uri\":\n return \"url\";\n case \"phone\":\n return \"tel\";\n case \"date\":\n return \"date\";\n case \"date-time\":\n return \"datetime-local\";\n default:\n return \"text\";\n }\n }\n switch (schema.type) {\n case \"integer\":\n case \"number\":\n return \"number\";\n default:\n return \"text\";\n }\n };\n\n return (\n <Input\n value={value || \"\"}\n onChange={(e) => onChange(e.target.value)}\n type={getInputType(schema)}\n inputMode={schema.format === \"phone\" ? \"tel\" : undefined}\n pattern={schema.pattern}\n step={schema.type === \"number\" ? \"0.01\" : undefined}\n min={schema.minimum}\n max={schema.maximum}\n minLength={schema.minLength}\n maxLength={schema.maxLength}\n required={schema.required?.includes(name)}\n />\n );\n}\n","import { Textarea } from \"../ui\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\nexport function StringMultiLineField({\n name,\n schema,\n value,\n onChange,\n}: SchemaFieldProps) {\n return (\n <Textarea\n value={value || \"\"}\n onChange={(e) => onChange(e.target.value)}\n required={schema.required?.includes(name)}\n minLength={schema.minLength}\n maxLength={schema.maxLength}\n />\n );\n}\n","\"use client\";\nimport { Button } from \"../ui/button\";\nimport { Input } from \"../ui/input\";\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"../ui/tooltip\";\nimport { cn } from \"../../lib/utils\";\nimport { RiCheckLine } from \"@remixicon/react\";\n// import Link from \"@tiptap/extension-link\";\n// import { BubbleMenu, EditorContent, useEditor } from \"@tiptap/react\";\n// import StarterKit from \"@tiptap/starter-kit\";\nimport { useState } from \"react\";\nimport type { SchemaFieldProps } from \"./schema-field\";\n\ninterface ToolbarButtonProps {\n onClick: () => void;\n icon: React.ReactNode;\n label: string;\n isActive?: boolean;\n}\n\nconst ToolbarButton = ({\n onClick,\n icon,\n label,\n isActive,\n}: ToolbarButtonProps) => (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n isActive && \"bg-accent text-accent-foreground\"\n )}\n onClick={onClick}\n >\n <span className=\"sr-only\">{label}</span>\n {icon}\n </Button>\n </TooltipTrigger>\n <TooltipContent>\n <p>{label}</p>\n </TooltipContent>\n </Tooltip>\n);\n\nconst LinkEditor = ({ editor }: { editor: any }) => {\n const [url, setUrl] = useState(\"\");\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n // Add http:// if no protocol is specified\n let processedUrl = url;\n if (url && !url.startsWith(\"http://\") && !url.startsWith(\"https://\")) {\n processedUrl = `https://${url}`;\n }\n if (processedUrl) {\n editor.chain().focus().setLink({ href: processedUrl }).run();\n setUrl(\"\"); // Reset input after adding\n }\n };\n\n return (\n <form onSubmit={handleSubmit} className=\"flex gap-2\">\n <Input\n type=\"url\"\n placeholder=\"Enter URL\"\n value={url}\n onChange={(e) => setUrl(e.target.value)}\n className=\"h-8\"\n />\n <Button type=\"submit\" size=\"sm\" className=\"h-8\">\n <RiCheckLine className=\"h-4 w-4\" />\n </Button>\n </form>\n );\n};\n\nexport function TextField({ schema, value, onChange }: SchemaFieldProps) {\n // const editor = useEditor({\n // extensions: [\n // StarterKit,\n // Link.configure({\n // openOnClick: false,\n // HTMLAttributes: {\n // class:\n // \"text-primary underline underline-offset-4 hover:text-primary/80\",\n // },\n // }),\n // ],\n // content: value || \"\",\n // editorProps: {\n // attributes: {\n // class: cn(\n // \"prose prose-sm max-w-none p-4\",\n // \"focus:outline-none overflow-y-auto\",\n // \"min-h-[250px] max-h-[600px]\",\n // \"scrollbar scrollbar-w-2 scrollbar-track-transparent\",\n // \"scrollbar-thumb-gray-200 hover:scrollbar-thumb-gray-300\",\n // \"dark:scrollbar-thumb-gray-700 dark:hover:scrollbar-thumb-gray-600\"\n // ),\n // },\n // },\n // onUpdate: ({ editor }) => {\n // onChange(editor.getHTML());\n // },\n // });\n\n // if (!editor) {\n // return null;\n // }\n\n // const toolbarGroups = [\n // [\n // {\n // icon: <RiArrowGoBackLine className=\"h-4 w-4\" />,\n // label: \"Undo\",\n // onClick: () => editor.chain().focus().undo().run(),\n // },\n // {\n // icon: <RiArrowGoForwardLine className=\"h-4 w-4\" />,\n // label: \"Redo\",\n // onClick: () => editor.chain().focus().redo().run(),\n // },\n // {\n // icon: <RiFormatClear className=\"h-4 w-4\" />,\n // label: \"Clear Format\",\n // onClick: () =>\n // editor.chain().focus().clearNodes().unsetAllMarks().run(),\n // },\n // ],\n // [\n // {\n // icon: <RiBold className=\"h-4 w-4\" />,\n // label: \"Bold\",\n // onClick: () => editor.chain().focus().toggleBold().run(),\n // isActive: editor.isActive(\"bold\"),\n // },\n // {\n // icon: <RiItalic className=\"h-4 w-4\" />,\n // label: \"Italic\",\n // onClick: () => editor.chain().focus().toggleItalic().run(),\n // isActive: editor.isActive(\"italic\"),\n // },\n // {\n // icon: <RiStrikethrough className=\"h-4 w-4\" />,\n // label: \"Strike\",\n // onClick: () => editor.chain().focus().toggleStrike().run(),\n // isActive: editor.isActive(\"strike\"),\n // },\n // {\n // icon: <RiCodeSSlashLine className=\"h-4 w-4\" />,\n // label: \"Code\",\n // onClick: () => editor.chain().focus().toggleCode().run(),\n // isActive: editor.isActive(\"code\"),\n // },\n // ],\n // [\n // {\n // icon: <RiH1 className=\"h-4 w-4\" />,\n // label: \"Heading 1\",\n // onClick: () => editor.chain().focus().toggleHeading({ level: 1 }).run(),\n // isActive: editor.isActive(\"heading\", { level: 1 }),\n // },\n // {\n // icon: <RiH2 className=\"h-4 w-4\" />,\n // label: \"Heading 2\",\n // onClick: () => editor.chain().focus().toggleHeading({ level: 2 }).run(),\n // isActive: editor.isActive(\"heading\", { level: 2 }),\n // },\n // ],\n // [\n // {\n // icon: <RiListUnordered className=\"h-4 w-4\" />,\n // label: \"Bullet List\",\n // onClick: () => editor.chain().focus().toggleBulletList().run(),\n // isActive: editor.isActive(\"bulletList\"),\n // },\n // {\n // icon: <RiListOrdered className=\"h-4 w-4\" />,\n // label: \"Ordered List\",\n // onClick: () => editor.chain().focus().toggleOrderedList().run(),\n // isActive: editor.isActive(\"orderedList\"),\n // },\n // ],\n // [\n // {\n // icon: <RiDoubleQuotesL className=\"h-4 w-4\" />,\n // label: \"Blockquote\",\n // onClick: () => editor.chain().focus().toggleBlockquote().run(),\n // isActive: editor.isActive(\"blockquote\"),\n // },\n // {\n // icon: <RiSeparator className=\"h-4 w-4\" />,\n // label: \"Horizontal Rule\",\n // onClick: () => editor.chain().focus().setHorizontalRule().run(),\n // },\n // ],\n // ];\n\n return (\n <TooltipProvider>\n <div className=\"rounded-lg border bg-background flex flex-col\">\n {/* <div className=\"flex flex-wrap gap-1 border-b p-1\">\n {toolbarGroups.map((group, index) => (\n <div key={index} className=\"flex items-center gap-1\">\n {group.map((item) => (\n <ToolbarButton key={item.label} {...item} />\n ))}\n {index < toolbarGroups.length - 1 && (\n <div className=\"mx-1 h-8 w-px bg-border\" />\n )}\n </div>\n ))}\n <div className=\"mx-1 h-8 w-px bg-border\" />\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n editor.isActive(\"link\") && \"bg-accent text-accent-foreground\"\n )}\n >\n <RiLinkM className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\">\n <LinkEditor editor={editor} />\n </PopoverContent>\n </Popover>\n {editor.isActive(\"link\") && (\n <ToolbarButton\n icon={<RiLinkUnlink className=\"h-4 w-4\" />}\n label=\"Remove Link\"\n onClick={() => editor.chain().focus().unsetLink().run()}\n />\n )}\n </div>\n <EditorContent editor={editor} />\n <BubbleMenu editor={editor} tippyOptions={{ duration: 100 }}>\n <div className=\"flex items-center gap-1 rounded-lg border bg-background p-1 shadow-md\">\n <ToolbarButton\n icon={<RiBold className=\"h-4 w-4\" />}\n label=\"Bold\"\n onClick={() => editor.chain().focus().toggleBold().run()}\n isActive={editor.isActive(\"bold\")}\n />\n <ToolbarButton\n icon={<RiItalic className=\"h-4 w-4\" />}\n label=\"Italic\"\n onClick={() => editor.chain().focus().toggleItalic().run()}\n isActive={editor.isActive(\"italic\")}\n />\n <ToolbarButton\n icon={<RiStrikethrough className=\"h-4 w-4\" />}\n label=\"Strike\"\n onClick={() => editor.chain().focus().toggleStrike().run()}\n isActive={editor.isActive(\"strike\")}\n />\n <div className=\"mx-1 h-6 w-px bg-border\" />\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className={cn(\n \"h-8 w-8 p-0\",\n editor.isActive(\"link\") &&\n \"bg-accent text-accent-foreground\"\n )}\n >\n <RiLinkM className=\"h-4 w-4\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-80 p-3\">\n <LinkEditor editor={editor} />\n </PopoverContent>\n </Popover>\n {editor.isActive(\"link\") && (\n <ToolbarButton\n icon={<RiLinkUnlink className=\"h-4 w-4\" />}\n label=\"Remove Link\"\n onClick={() => editor.chain().focus().unsetLink().run()}\n />\n )}\n </div>\n </BubbleMenu> */}\n\n <Input\n value={value}\n onChange={(e) => onChange(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </TooltipProvider>\n );\n}\n","import { Label } from \"../ui/label\";\nimport { cn } from \"../../lib/utils\";\nimport { EntityFieldTypeTS } from \"@elqnt/entity\";\nimport { JSONSchema } from \"@elqnt/types\";\nimport { ReactNode } from \"react\";\nimport { DropdownField } from \"./dropdown-field\";\nimport { StringField } from \"./string-field\";\nimport { StringMultiLineField } from \"./string-multi-line-field\";\nimport { TextField } from \"./text-field\";\n\nexport interface SchemaFieldProps {\n name: string;\n schema: JSONSchema;\n value?: any;\n onChange: (value: any) => void;\n label?: ReactNode;\n}\n\nexport function getFieldType(schema: JSONSchema): EntityFieldTypeTS {\n if (schema.enum) return \"dropdown\";\n if (schema.format === \"richtext\") return \"text\";\n if (schema.format === \"multiline\") return \"stringMultiline\";\n if (schema.format === \"email\") return \"email\";\n if (schema.format === \"phone\") return \"phone\";\n if (schema.format === \"uri\") return \"url\";\n return schema.type as EntityFieldTypeTS;\n}\n\nexport function getColspanBySchema(schema: JSONSchema) {\n return getFieldType(schema) === \"text\" ? \"col-span-2\" : \"\";\n}\n\nexport function SchemaField(props: SchemaFieldProps) {\n const { name, schema, value, onChange, label } = props;\n const fieldType = getFieldType(schema);\n\n const renderField = () => {\n switch (fieldType) {\n case \"string\":\n case \"email\":\n case \"phone\":\n case \"url\":\n return <StringField {...props} />;\n\n case \"stringMultiline\":\n return <StringMultiLineField {...props} />;\n\n case \"text\":\n return <TextField {...props} />;\n\n case \"dropdown\":\n return <DropdownField {...props} />;\n\n default:\n return (\n <div className=\"text-red-500\">\n Unsupported field type: {fieldType}\n </div>\n );\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", getColspanBySchema(schema))}>\n <Label>\n {label ?? schema.title ?? name}\n {schema.required && <span className=\"text-red-500\">*</span>}\n </Label>\n {renderField()}\n {schema.description && (\n <p className=\"text-sm text-gray-500\">{schema.description}</p>\n )}\n </div>\n );\n}\n","\"use client\";\n\nimport { cn } from \"../../lib/utils\";\nimport { getFileIcon, getFileName } from \"@elqnt/docs\";\nimport { Loader2, UploadCloud } from \"lucide-react\";\nimport { useState } from \"react\";\nimport { DropzoneOptions, FileRejection, useDropzone } from \"react-dropzone\";\nimport { toast } from \"sonner\";\nimport { uploadFile, uploadToS3 } from \"./upload-actions\";\n\ninterface UploadWidgetV2Props {\n accept: DropzoneOptions[\"accept\"];\n maxSize: number;\n maxFiles?: number;\n onFilesUploaded: (fileUrls: string[]) => void;\n className?: string;\n uploadDestination?: \"azure\" | \"s3\";\n hideUploadedFiles?: boolean;\n}\n\nexport function UploadWidgetV2({\n accept,\n maxSize,\n maxFiles = 1,\n onFilesUploaded,\n className,\n uploadDestination = \"azure\",\n hideUploadedFiles = false,\n}: UploadWidgetV2Props) {\n const [isUploading, setIsUploading] = useState(false);\n const [fileUrls, setFileUrls] = useState<string[]>([]);\n\n const fileMaxSizeMB = maxSize / 1024 / 1024;\n const acceptedTypes = accept ? Object.values(accept).flat().join(\", \") : \"\";\n\n const handleUpload = async (files: File[]) => {\n setIsUploading(true);\n\n try {\n const uploadFunction = uploadDestination === \"s3\" ? uploadToS3 : uploadFile;\n\n const uploadPromises = files.map(async (file) => {\n const formData = new FormData();\n formData.append(\"file\", file);\n return uploadFunction(formData);\n });\n\n const results = await Promise.all(uploadPromises);\n const failedUploads = results.filter((result) => !result.success);\n\n if (failedUploads.length > 0) {\n throw new Error(`${failedUploads.length} file(s) failed to upload`);\n }\n\n const urls = results.map((result) => result.fileUrl!);\n setFileUrls((prev) => [...prev, ...urls]);\n onFilesUploaded(urls);\n } catch (err) {\n toast.error(err instanceof Error ? err.message : \"Upload failed\");\n } finally {\n setIsUploading(false);\n }\n };\n\n const onDropFiles = (\n acceptedFiles: File[],\n fileRejections: FileRejection[]\n ) => {\n if (fileRejections.length > 0) {\n if (fileRejections[0].errors[0].code === \"file-too-large\") {\n toast.error(\n `File size is too large. Please upload a file smaller than ${fileMaxSizeMB}MB.`\n );\n } else {\n toast.error(\n `File type is not supported. Please upload ${acceptedTypes.replace(/\\./g, \"\")} files.`\n );\n }\n return;\n }\n\n handleUpload(acceptedFiles);\n };\n\n const { getRootProps, getInputProps, isDragActive } = useDropzone({\n onDrop: onDropFiles,\n accept,\n maxSize,\n maxFiles,\n });\n\n return (\n <div\n {...getRootProps()}\n className={cn(\n \"relative border-2 border-dashed border-gray-300 rounded-lg p-6 text-center cursor-pointer min-h-[160px]\",\n className\n )}\n >\n {isUploading && (\n <div className=\"absolute top-3 right-3\">\n <Loader2 className=\"animate-spin h-6 w-6 text-primary\" />\n </div>\n )}\n <input {...getInputProps()} />\n {isDragActive ? (\n <p>Drop the files here ...</p>\n ) : (\n <div>\n <UploadCloud className=\"mx-auto h-12 w-12 text-gray-400\" />\n <p>Drag n drop some files here, or click to select files</p>\n <p className=\"text-sm text-gray-500\">\n Only {acceptedTypes} files up to {fileMaxSizeMB}MB are accepted\n </p>\n </div>\n )}\n {!hideUploadedFiles && fileUrls.length > 0 && (\n <div className=\"mt-4 border-t border-gray-300 pt-4\">\n <ul className=\"flex flex-wrap gap-2\">\n {fileUrls.map((url, i) => {\n const fileName = getFileName(url);\n return (\n <li key={i} className=\"flex items-center space-x-2 text-sm\">\n <div>{getFileIcon(fileName)}</div>\n <span>{fileName}</span>\n </li>\n );\n })}\n </ul>\n </div>\n )}\n </div>\n );\n}\n","\"use server\";\nimport { BlobServiceClient } from \"@azure/storage-blob\";\nimport { PutObjectCommand, S3Client } from \"@aws-sdk/client-s3\";\n\n\nexport async function uploadFile(formData: FormData) {\n try {\n const file = formData.get(\"file\") as File;\n if (!file) {\n throw new Error(\"No file provided\");\n }\n\n const STORAGE_CONNECTION_STRING =\n process.env.AZURE_STORAGE_CONNECTION_STRING;\n const STORAGE_CONTAINER_NAME = process.env.AZURE_STORAGE_CONTAINER_NAME;\n\n if (!STORAGE_CONNECTION_STRING || !STORAGE_CONTAINER_NAME) {\n throw new Error(\n \"STORAGE_CONNECTION_STRING or STORAGE_CONTAINER_NAME not set\"\n );\n }\n\n // Generate unique filename\n const fileExtension = file.name.split(\".\").pop()?.toLowerCase();\n const fileName = `${Date.now()}-${Math.random().toString(36).substring(2)}.${fileExtension}`;\n\n // Determine content type based on file extension\n const contentType = getContentType(fileExtension);\n\n // Convert file to buffer\n const buffer = Buffer.from(await file.arrayBuffer());\n\n // Upload to Azure Blob Storage\n const blobServiceClient = BlobServiceClient.fromConnectionString(\n STORAGE_CONNECTION_STRING\n );\n const containerClient = blobServiceClient.getContainerClient(\n STORAGE_CONTAINER_NAME\n );\n\n // Create container if it doesn't exist\n await containerClient.createIfNotExists();\n\n // Upload file with content type\n const blockBlobClient = containerClient.getBlockBlobClient(fileName);\n await blockBlobClient.upload(buffer, buffer.length, {\n blobHTTPHeaders: {\n blobContentType: contentType,\n },\n });\n\n // Get the URL\n const fileUrl = blockBlobClient.url;\n\n return { success: true, fileUrl };\n } catch (error) {\n console.error(\"Upload error:\", error);\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Failed to upload file\",\n };\n }\n}\n\nfunction getContentType(fileExtension: string | undefined): string {\n if (!fileExtension) return \"application/octet-stream\";\n\n const mimeTypes: Record<string, string> = {\n // Images\n png: \"image/png\",\n jpg: \"image/jpeg\",\n jpeg: \"image/jpeg\",\n gif: \"image/gif\",\n webp: \"image/webp\",\n svg: \"image/svg+xml\",\n // Documents\n pdf: \"application/pdf\",\n doc: \"application/msword\",\n docx: \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\",\n // Others\n txt: \"text/plain\",\n csv: \"text/csv\",\n json: \"application/json\",\n };\n\n return mimeTypes[fileExtension] || \"application/octet-stream\";\n}\n\nexport async function uploadToS3(formData: FormData) {\n try {\n const file = formData.get(\"file\") as File;\n if (!file) {\n throw new Error(\"No file provided\");\n }\n\n const AWS_ACCESS_KEY_ID = process.env.LINODE_ACCESS_KEY;\n const AWS_SECRET_ACCESS_KEY = process.env.LINODE_SECRET_KEY;\n const S3_BUCKET_NAME = process.env.LINODE_BUCKET_NAME;\n let S3_ENDPOINT = process.env.LINODE_OBJECT_STORAGE_ENDPOINT;\n\n if (\n !AWS_ACCESS_KEY_ID ||\n !AWS_SECRET_ACCESS_KEY ||\n !S3_BUCKET_NAME ||\n !S3_ENDPOINT\n ) {\n throw new Error(\"S3 credentials or configuration not set\");\n }\n\n // Generate unique filename\n const fileExtension = file.name.split(\".\").pop()?.toLowerCase();\n const fileName = `${Date.now()}-${Math.random().toString(36).substring(2)}.${fileExtension}`;\n\n // Determine content type based on file extension\n const contentType = getContentType(fileExtension);\n\n // Convert file to buffer\n const buffer = Buffer.from(await file.arrayBuffer());\n\n // Initialize S3 client\n const s3Client = new S3Client({\n endpoint: S3_ENDPOINT,\n region: \"us-east-1\", // Linode requires a region but it's not used with custom endpoint\n credentials: {\n accessKeyId: AWS_ACCESS_KEY_ID,\n secretAccessKey: AWS_SECRET_ACCESS_KEY,\n },\n forcePathStyle: true, // Required for Linode Object Storage\n maxAttempts: 3,\n requestHandler: {\n timeout: 10000, // 10 seconds timeout\n },\n });\n\n // Upload to S3\n const command = new PutObjectCommand({\n Bucket: S3_BUCKET_NAME,\n Key: fileName,\n Body: buffer,\n ContentType: contentType,\n ACL: \"public-read\", // Make the object publicly readable\n });\n\n await s3Client.send(command);\n\n // Construct the URL using the endpoint\n const fileUrl = `${S3_ENDPOINT}/${S3_BUCKET_NAME}/${fileName}`;\n\n return { success: true, fileUrl };\n } catch (error) {\n console.error(\"Upload error:\", JSON.stringify(error, null, 2));\n return {\n success: false,\n error: error instanceof Error ? error.message : \"Failed to upload file\",\n };\n }\n}\n","\"use client\";\n\nimport { useNatsContext } from \"@elqnt/nats\";\nimport { useEffect, useState } from \"react\";\nimport { useWatch } from \"react-hook-form\";\n\nfunction convertDataUrlToUint8Array(dataURL: string) {\n const base64String = dataURL.split(\",\")[1];\n const binaryString = atob(base64String);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n return bytes;\n}\nconst JS_OS_FILE_UPLOAD = \"file-upload\";\n\nexport const useFileUpload = (formFieldName: string) => {\n const files = useWatch({ name: formFieldName }) as FileList | undefined;\n\n const [fileUrls, setFileUrls] = useState<string[]>([]);\n const [isUploading, setIsUploading] = useState(false);\n\n const { request, ObjectStore } = useNatsContext();\n\n useEffect(() => {\n if (!files || files.length === 0) return;\n\n const uploadFiles = async () => {\n setIsUploading(true);\n const bucket = JS_OS_FILE_UPLOAD;\n\n const filesArray = Array.from(files); // Convert FileList to an array\n for (const file of filesArray) {\n // console.log(\"will upload file\", file);\n\n // Create a new FileReader instance\n const reader = new FileReader();\n reader.readAsDataURL(file);\n\n try {\n await new Promise<void>((resolve, reject) => {\n reader.onloadend = async () => {\n const dataURL = reader.result as string;\n const uint8Array = convertDataUrlToUint8Array(dataURL);\n\n const os = await ObjectStore(bucket);\n\n if (os instanceof Error) {\n console.error(os);\n reject(os);\n return;\n }\n\n const extension = file.name.match(/\\.[^/.]+$/)?.[0];\n const name =\n file.name.replace(/\\.[^/.]+$/, \"\") +\n \"-\" +\n Date.now() +\n extension;\n\n const meta = {\n \"Content-Type\": file.type,\n name,\n };\n\n const result = await os.putBlob(meta, uint8Array);\n\n if (result instanceof Error) {\n console.error(result);\n reject(result);\n return;\n }\n\n const res = await request<object, any>(\"entities.uploadFile\", {\n fileName: name,\n mimeType: file.type,\n });\n\n if (res instanceof Error) {\n console.error(res);\n reject(res);\n return;\n }\n\n const { url } = res;\n\n const deleteRes = await os.delete(name);\n\n if (deleteRes instanceof Error) {\n console.error(deleteRes);\n reject(deleteRes);\n return;\n }\n\n // console.log(\"file deleted successfully\", name);\n console.log(\"file uploaded successfully\", url);\n\n setFileUrls((prevUrls) => [...prevUrls, url]);\n resolve();\n };\n });\n } catch (error) {\n console.error(\"Error uploading file:\", error);\n // Optionally handle the error, e.g., show an error message\n continue; // This will now correctly skip to the next iteration of the loop\n }\n }\n setIsUploading(false);\n };\n\n uploadFiles();\n }, [files]);\n\n return { fileUrls, isUploading };\n};\n"],"mappings":"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","names":["React","jsx","jsx","React","jsx","React","jsx","jsxs","jsxs","jsx","cva","jsx","cva","jsx","jsxs","React","jsx","Button","jsx","Button","jsx","Icon","jsx","jsxs","Button","Icon","jsx","jsxs","Icon","React","cva","jsx","cva","jsx","jsxs","Alert","React","jsx","jsx","jsxs","Avatar","Fragment","React","Slot","jsx","jsxs","Slot","jsx","jsxs","Breadcrumb","Fragment","React","jsx","jsx","jsxs","Card","React","React","CheckIcon","jsx","CheckIcon","React","Slot","React","cva","jsx","cva","Label","jsx","Label","Slot","jsx","jsxs","Checkbox","useEffect","useState","React","jsx","jsxs","jsxs","jsx","React","jsx","jsx","jsx","jsxs","useState","useEffect","React","jsx","jsxs","Command","ChevronDownIcon","ChevronRightIcon","React","React","CheckIcon","ChevronRightIcon","jsx","jsxs","jsxs","jsx","ChevronRightIcon","CheckIcon","React","jsx","jsx","jsxs","Icon","ChevronDownIcon","ChevronRightIcon","defaultOptions","format","defaultOptions","defaultOptions","localize","formatLong","format","defaultOptions","jsx","Fragment","jsx","jsxs","icons","jsx","jsxs","Dialog","icons","Button","Icon","React","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","Drawer","jsx","jsxs","DropdownMenu","useEffect","useState","jsx","jsxs","useState","CheckIcon","React","jsx","Separator","Fragment","jsx","jsxs","useState","Icon","Separator","CheckIcon","jsx","jsxs","FormProvider","jsx","jsxs","FormProvider","Button","jsx","jsxs","React","CheckIcon","jsx","RadioGroup","CheckIcon","React","Cross2Icon","cva","jsx","jsxs","jsx","cva","jsxs","Cross2Icon","React","jsx","React","jsx","React","Fragment","jsx","jsxs","config","jsx","jsxs","Fragment","jsx","jsxs","React","jsx","jsxs","jsx","jsxs","jsx","jsx","jsxs","Icon","React","jsx","jsxs","Input","Loader2","Fragment","jsx","jsxs","useEffect","useState","jsx","useState","useEffect","jsx","jsxs","Button","useUserContext","Link","useRouter","useEffect","useState","Link","useRouter","jsx","jsxs","useRouter","Link","Icon","Fragment","jsx","jsxs","useRouter","useUserContext","useState","useEffect","apps","Icon","Link","Check","X","useState","jsx","jsxs","X","Check","Check","Loader2","useEffect","useState","jsx","jsxs","currentStepData","jsx","jsxs","Popover","React","jsx","jsxs","RadioGroup","React","jsx","jsxs","ScrollArea","ScrollBar","jsx","jsxs","Select","CollapsibleContent","React","jsx","Check","useId","useState","jsx","jsxs","CollapsibleContent","jsx","jsxs","Sheet","X","React","jsx","jsxs","React","jsx","jsxs","Textarea","useState","jsx","jsxs","useState","Select","jsx","jsxs","Tooltip","Loader2","jsx","jsxs","Loader2","jsx","jsx","jsxs","icons","Loader2","useRouter","React","Fragment","jsx","jsxs","Separator","Icon","jsx","jsxs","jsx","schema","jsx","useState","jsx","jsxs","jsx","jsx","jsxs","Label","getFileIcon","getFileName","Loader2","useState","useDropzone","toast","jsx","jsxs","useState","toast","useDropzone","Loader2","getFileName","getFileIcon","useEffect","useState"]}
|