@etus/ui 0.4.0-beta.3 → 0.4.0-beta.5
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/chunk-2HM5Z2YP.js +834 -0
- package/dist/chunk-2HM5Z2YP.js.map +1 -0
- package/dist/{chunk-LMTNDUIP.js → chunk-2Y7PQ6ZL.js} +4 -4
- package/dist/{chunk-LMTNDUIP.js.map → chunk-2Y7PQ6ZL.js.map} +1 -1
- package/dist/{chunk-SAKW2OKH.js → chunk-32IJQOUV.js} +15 -26
- package/dist/chunk-32IJQOUV.js.map +1 -0
- package/dist/{chunk-CXHA5D3I.js → chunk-33JGPMUW.js} +4 -4
- package/dist/{chunk-CXHA5D3I.js.map → chunk-33JGPMUW.js.map} +1 -1
- package/dist/{chunk-JLVL76SW.js → chunk-36XTKR3B.js} +4 -4
- package/dist/{chunk-JLVL76SW.js.map → chunk-36XTKR3B.js.map} +1 -1
- package/dist/{chunk-CUWQUGGB.js → chunk-4GQN76L7.js} +3 -3
- package/dist/{chunk-CUWQUGGB.js.map → chunk-4GQN76L7.js.map} +1 -1
- package/dist/{chunk-7BAL24EU.js → chunk-5XQIH6WM.js} +4 -4
- package/dist/{chunk-7BAL24EU.js.map → chunk-5XQIH6WM.js.map} +1 -1
- package/dist/chunk-5ZWFIDO2.js +3 -0
- package/dist/{chunk-NNOGFX66.js.map → chunk-5ZWFIDO2.js.map} +1 -1
- package/dist/{chunk-43SINRHH.js → chunk-AUCDXPWH.js} +5 -5
- package/dist/{chunk-43SINRHH.js.map → chunk-AUCDXPWH.js.map} +1 -1
- package/dist/{chunk-4HRQX2IA.js → chunk-AWYOWR5N.js} +3 -3
- package/dist/{chunk-4HRQX2IA.js.map → chunk-AWYOWR5N.js.map} +1 -1
- package/dist/{chunk-YTGYSNFR.js → chunk-B4ETIQOO.js} +4 -4
- package/dist/{chunk-YTGYSNFR.js.map → chunk-B4ETIQOO.js.map} +1 -1
- package/dist/{chunk-D5DM6GZB.js → chunk-D6TH3EGA.js} +12 -12
- package/dist/chunk-D6TH3EGA.js.map +1 -0
- package/dist/{chunk-ZJVZ3LQS.js → chunk-DDM2I5C6.js} +3 -3
- package/dist/{chunk-ZJVZ3LQS.js.map → chunk-DDM2I5C6.js.map} +1 -1
- package/dist/{chunk-3JIXCWJO.js → chunk-DDR24GOP.js} +3 -3
- package/dist/{chunk-3JIXCWJO.js.map → chunk-DDR24GOP.js.map} +1 -1
- package/dist/{chunk-GBTVAO4V.js → chunk-EGYWK2XX.js} +3 -3
- package/dist/{chunk-GBTVAO4V.js.map → chunk-EGYWK2XX.js.map} +1 -1
- package/dist/{chunk-CCUCWL6M.js → chunk-HT5XM6XK.js} +12 -7
- package/dist/chunk-HT5XM6XK.js.map +1 -0
- package/dist/{chunk-KNH7JW6E.js → chunk-IBVCSZCH.js} +3 -3
- package/dist/{chunk-KNH7JW6E.js.map → chunk-IBVCSZCH.js.map} +1 -1
- package/dist/{chunk-GLEKBJLR.js → chunk-ILAV2AZ4.js} +3 -3
- package/dist/{chunk-GLEKBJLR.js.map → chunk-ILAV2AZ4.js.map} +1 -1
- package/dist/{chunk-MDQFZEIC.js → chunk-J62TFQHR.js} +6 -6
- package/dist/chunk-J62TFQHR.js.map +1 -0
- package/dist/{chunk-AWWBBMMY.js → chunk-JKYB5QAP.js} +5 -5
- package/dist/{chunk-AWWBBMMY.js.map → chunk-JKYB5QAP.js.map} +1 -1
- package/dist/{chunk-UKC3Q6OA.js → chunk-JMZ4CO6R.js} +3 -3
- package/dist/{chunk-UKC3Q6OA.js.map → chunk-JMZ4CO6R.js.map} +1 -1
- package/dist/{chunk-VJITPUUS.js → chunk-JONTKXGK.js} +26 -24
- package/dist/chunk-JONTKXGK.js.map +1 -0
- package/dist/{chunk-POZNQWZE.js → chunk-KC6CHPT3.js} +4 -4
- package/dist/{chunk-POZNQWZE.js.map → chunk-KC6CHPT3.js.map} +1 -1
- package/dist/{chunk-4J6DHPYY.js → chunk-KPNNSUXM.js} +3 -3
- package/dist/{chunk-4J6DHPYY.js.map → chunk-KPNNSUXM.js.map} +1 -1
- package/dist/{chunk-RPV77BCQ.js → chunk-ONQCNOLU.js} +4 -9
- package/dist/chunk-ONQCNOLU.js.map +1 -0
- package/dist/{chunk-QSY52N3A.js → chunk-OWOVCGUZ.js} +3 -3
- package/dist/{chunk-QSY52N3A.js.map → chunk-OWOVCGUZ.js.map} +1 -1
- package/dist/{chunk-QWRHPNBY.js → chunk-QIETN4UU.js} +4 -4
- package/dist/{chunk-QWRHPNBY.js.map → chunk-QIETN4UU.js.map} +1 -1
- package/dist/{chunk-NWFRMVI2.js → chunk-QZWKXUZP.js} +3 -3
- package/dist/{chunk-NWFRMVI2.js.map → chunk-QZWKXUZP.js.map} +1 -1
- package/dist/{chunk-7QDWREVG.js → chunk-R4UOT76L.js} +3 -3
- package/dist/{chunk-7QDWREVG.js.map → chunk-R4UOT76L.js.map} +1 -1
- package/dist/{chunk-HIEOL77G.js → chunk-RVUO7SDG.js} +4 -4
- package/dist/{chunk-HIEOL77G.js.map → chunk-RVUO7SDG.js.map} +1 -1
- package/dist/{chunk-XPVKJIWY.js → chunk-SCGKQ5RE.js} +3 -3
- package/dist/{chunk-XPVKJIWY.js.map → chunk-SCGKQ5RE.js.map} +1 -1
- package/dist/{chunk-UCGT2IR4.js → chunk-SJSYKUCL.js} +3 -3
- package/dist/{chunk-UCGT2IR4.js.map → chunk-SJSYKUCL.js.map} +1 -1
- package/dist/{chunk-KOTCWE7V.js → chunk-TNROOKX3.js} +11 -4
- package/dist/chunk-TNROOKX3.js.map +1 -0
- package/dist/{chunk-PGTCXLGY.js → chunk-U6EOAIPK.js} +3 -3
- package/dist/chunk-U6EOAIPK.js.map +1 -0
- package/dist/{chunk-KXSJSLPJ.js → chunk-V7XHE25E.js} +4 -4
- package/dist/{chunk-KXSJSLPJ.js.map → chunk-V7XHE25E.js.map} +1 -1
- package/dist/{chunk-5ZKKXLPF.js → chunk-VPNFYQBL.js} +10 -15
- package/dist/chunk-VPNFYQBL.js.map +1 -0
- package/dist/{chunk-FUCQNVJL.js → chunk-XLTSCY22.js} +10 -7
- package/dist/chunk-XLTSCY22.js.map +1 -0
- package/dist/{chunk-K3J7YLL4.js → chunk-XOGMDABS.js} +5 -6
- package/dist/chunk-XOGMDABS.js.map +1 -0
- package/dist/{chunk-53RWD44Z.js → chunk-XRMKL43Y.js} +3 -3
- package/dist/{chunk-53RWD44Z.js.map → chunk-XRMKL43Y.js.map} +1 -1
- package/dist/{chunk-DZALMUQD.js → chunk-Y3BOERVB.js} +3 -3
- package/dist/{chunk-DZALMUQD.js.map → chunk-Y3BOERVB.js.map} +1 -1
- package/dist/{chunk-AV5YQ2Z4.js → chunk-Y7UFBSAD.js} +3 -3
- package/dist/{chunk-AV5YQ2Z4.js.map → chunk-Y7UFBSAD.js.map} +1 -1
- package/dist/{chunk-HNYBLROK.js → chunk-YP2ATSXP.js} +11 -28
- package/dist/chunk-YP2ATSXP.js.map +1 -0
- package/dist/{chunk-75QBUI2P.js → chunk-ZO2EKJZM.js} +16 -8
- package/dist/chunk-ZO2EKJZM.js.map +1 -0
- package/dist/{chunk-VOCA4KZB.js → chunk-ZS2WS5NJ.js} +4 -4
- package/dist/{chunk-VOCA4KZB.js.map → chunk-ZS2WS5NJ.js.map} +1 -1
- package/dist/components/advanced/Calendar/index.js +3 -3
- package/dist/components/advanced/EventCalendar/index.js +3 -3
- package/dist/components/advanced/FilterBuilder/index.js +3 -3
- package/dist/components/advanced/ReportBuilder/index.js +11 -0
- package/dist/components/advanced/ReportBuilder/index.js.map +1 -0
- package/dist/components/advanced/index.js +14 -10
- package/dist/components/data-display/Callout/index.js +1 -1
- package/dist/components/data-display/Carousel/index.js +3 -3
- package/dist/components/data-display/ChartCard/index.js +2 -2
- package/dist/components/data-display/DashboardFilterbar/index.js +5 -5
- package/dist/components/data-display/DataTable/FilterBuilder/index.js +3 -3
- package/dist/components/data-display/DataTable/index.js +5 -5
- package/dist/components/data-display/KPICard/index.js +3 -2
- package/dist/components/data-display/List/index.js +3 -3
- package/dist/components/data-display/SingleStat/index.js +1 -1
- package/dist/components/data-display/VirtualTable/index.js +2 -2
- package/dist/components/data-display/index.js +29 -29
- package/dist/components/feedback/AlertDialog/index.js +3 -3
- package/dist/components/feedback/ConfirmModal/index.js +4 -4
- package/dist/components/feedback/Notification/index.js +2 -2
- package/dist/components/feedback/index.js +8 -8
- package/dist/components/forms/DatePicker/index.js +4 -4
- package/dist/components/forms/DateRangePicker/index.js +4 -4
- package/dist/components/forms/Field/index.js +2 -2
- package/dist/components/forms/Form/index.js +2 -2
- package/dist/components/forms/InputGroup/index.js +4 -4
- package/dist/components/forms/InputOTPField/index.js +3 -3
- package/dist/components/forms/NativeSelect/index.js +1 -1
- package/dist/components/forms/TagsInput/index.js +2 -2
- package/dist/components/forms/Textarea/index.js +1 -1
- package/dist/components/forms/TextareaField/index.js +4 -4
- package/dist/components/forms/index.js +26 -26
- package/dist/components/index.js +105 -104
- package/dist/components/layout/index.js +3 -3
- package/dist/components/navigation/AccountSwitch/index.js +3 -3
- package/dist/components/navigation/Header/index.js +1 -1
- package/dist/components/navigation/MobileSidebar/index.js +2 -2
- package/dist/components/navigation/Pagination/index.js +3 -3
- package/dist/components/navigation/Sidebar/index.js +4 -4
- package/dist/components/navigation/index.js +10 -10
- package/dist/components/primitives/Avatar/index.js +1 -1
- package/dist/components/primitives/Badge/index.js +1 -1
- package/dist/components/primitives/Button/index.js +2 -2
- package/dist/components/primitives/ConfirmButton/index.js +4 -4
- package/dist/components/primitives/Label/index.js +1 -1
- package/dist/components/primitives/SplitButton/index.js +1 -1
- package/dist/components/primitives/index.js +17 -17
- package/dist/components/workflow/ApprovalFlow/index.js +4 -4
- package/dist/components/workflow/CommentSystem/index.js +5 -5
- package/dist/components/workflow/Dashboard/index.js +3 -3
- package/dist/components/workflow/DashboardBuilder/index.js +4 -4
- package/dist/components/workflow/KanbanBoard/index.js +4 -4
- package/dist/components/workflow/ReportGenerator/index.js +4 -4
- package/dist/components/workflow/Wizard/index.js +3 -3
- package/dist/components/workflow/index.js +15 -15
- package/dist/fonts/inter-OFL.txt +92 -0
- package/dist/fonts/inter-latin-400-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-500-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-600-normal.woff2 +0 -0
- package/dist/fonts/inter-latin-700-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-OFL.txt +93 -0
- package/dist/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
- package/dist/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/dist/index.d.ts +132 -33
- package/dist/index.js +105 -104
- package/dist/styles.css +291 -13
- package/package.json +2 -2
- package/dist/chunk-5ZKKXLPF.js.map +0 -1
- package/dist/chunk-75QBUI2P.js.map +0 -1
- package/dist/chunk-CCUCWL6M.js.map +0 -1
- package/dist/chunk-D5DM6GZB.js.map +0 -1
- package/dist/chunk-FUCQNVJL.js.map +0 -1
- package/dist/chunk-HNYBLROK.js.map +0 -1
- package/dist/chunk-K3J7YLL4.js.map +0 -1
- package/dist/chunk-KOTCWE7V.js.map +0 -1
- package/dist/chunk-MDQFZEIC.js.map +0 -1
- package/dist/chunk-NNOGFX66.js +0 -3
- package/dist/chunk-PGTCXLGY.js.map +0 -1
- package/dist/chunk-RPV77BCQ.js.map +0 -1
- package/dist/chunk-SAKW2OKH.js.map +0 -1
- package/dist/chunk-VJITPUUS.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-QWRHPNBY.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/workflow/DashboardBuilder/DashboardBuilder.variants.ts","../src/components/workflow/DashboardBuilder/DashboardBuilder.tsx"],"names":[],"mappings":"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","file":"chunk-QIETN4UU.js","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * DashboardBuilder container variants\n */\nexport const dashboardBuilderVariants = cva(\n \"relative flex h-full w-full overflow-hidden rounded-lg border bg-background transition-all duration-300\",\n {\n variants: {\n mode: {\n edit: \"\",\n preview: \"\",\n configure: \"\",\n },\n size: {\n default: \"\",\n compact: \"\",\n full: \"h-screen\",\n },\n },\n defaultVariants: {\n mode: \"edit\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Toolbar variants\n */\nexport const dashboardBuilderToolbarVariants = cva(\n \"flex h-14 shrink-0 items-center justify-between border-b bg-card px-4 transition-all duration-200\",\n {\n variants: {\n position: {\n top: \"\",\n bottom: \"border-b-0 border-t\",\n },\n },\n defaultVariants: {\n position: \"top\",\n },\n }\n)\n\n/**\n * Canvas (main work area) variants\n */\nexport const dashboardBuilderCanvasVariants = cva(\n \"relative flex-1 overflow-auto bg-muted/30 p-4 transition-all duration-200\",\n {\n variants: {\n showGrid: {\n true: [\n \"bg-[linear-gradient(to_right,var(--border)_1px,transparent_1px),linear-gradient(to_bottom,var(--border)_1px,transparent_1px)]\",\n \"bg-[size:var(--grid-size)_var(--grid-size)]\",\n ],\n false: \"\",\n },\n state: {\n idle: \"\",\n dragging: \"cursor-grabbing\",\n resizing: \"cursor-nwse-resize\",\n configuring: \"\",\n saving: \"pointer-events-none opacity-75\",\n },\n },\n defaultVariants: {\n showGrid: true,\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget library sidebar variants\n */\nexport const dashboardBuilderWidgetLibraryVariants = cva(\n \"flex w-64 shrink-0 flex-col border-r bg-card transition-all duration-200\",\n {\n variants: {\n collapsed: {\n true: \"w-14\",\n false: \"w-64\",\n },\n position: {\n left: \"border-r\",\n right: \"border-l border-r-0\",\n },\n },\n defaultVariants: {\n collapsed: false,\n position: \"left\",\n },\n }\n)\n\n/**\n * Properties panel variants\n */\nexport const dashboardBuilderPropertiesPanelVariants = cva(\n \"flex w-72 shrink-0 flex-col border-l bg-card transition-all duration-200\",\n {\n variants: {\n open: {\n true: \"w-72\",\n false: \"w-0 overflow-hidden border-l-0\",\n },\n },\n defaultVariants: {\n open: false,\n },\n }\n)\n\n/**\n * Widget card in library variants\n */\nexport const dashboardBuilderWidgetCardVariants = cva(\n \"flex cursor-grab items-center gap-3 rounded-md border bg-background p-3 transition-all duration-200 hover:border-primary hover:shadow-sm active:cursor-grabbing\",\n {\n variants: {\n category: {\n default: \"\",\n charts: \"border-l-2 border-l-blue-500\",\n kpi: \"border-l-2 border-l-green-500\",\n tables: \"border-l-2 border-l-purple-500\",\n text: \"border-l-2 border-l-orange-500\",\n },\n dragging: {\n true: \"opacity-50\",\n false: \"\",\n },\n },\n defaultVariants: {\n category: \"default\",\n dragging: false,\n },\n }\n)\n\n/**\n * Widget on canvas variants\n */\nexport const dashboardBuilderWidgetVariants = cva(\n \"group relative rounded-md border-2 bg-card transition-all duration-200\",\n {\n variants: {\n state: {\n idle: \"border-transparent hover:border-muted-foreground/30\",\n selected: \"border-primary ring-2 ring-primary/20\",\n dragging: \"border-primary border-dashed opacity-75\",\n resizing: \"border-primary\",\n preview: \"border-border\",\n },\n },\n defaultVariants: {\n state: \"idle\",\n },\n }\n)\n\n/**\n * Widget resize handle variants\n */\nexport const dashboardBuilderResizeHandleVariants = cva(\n \"absolute opacity-0 transition-opacity group-hover:opacity-100\",\n {\n variants: {\n position: {\n se: \"bottom-0 right-0 cursor-se-resize\",\n sw: \"bottom-0 left-0 cursor-sw-resize\",\n ne: \"right-0 top-0 cursor-ne-resize\",\n nw: \"left-0 top-0 cursor-nw-resize\",\n e: \"right-0 top-1/2 -translate-y-1/2 cursor-e-resize\",\n w: \"left-0 top-1/2 -translate-y-1/2 cursor-w-resize\",\n n: \"left-1/2 top-0 -translate-x-1/2 cursor-n-resize\",\n s: \"bottom-0 left-1/2 -translate-x-1/2 cursor-s-resize\",\n },\n size: {\n sm: \"h-2 w-2\",\n default: \"h-3 w-3\",\n lg: \"h-4 w-4\",\n },\n },\n defaultVariants: {\n position: \"se\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Drop zone indicator variants\n */\nexport const dashboardBuilderDropZoneVariants = cva(\n \"pointer-events-none absolute rounded-md border-2 transition-all duration-200\",\n {\n variants: {\n active: {\n true: \"border-primary bg-primary/10\",\n false: \"border-transparent\",\n },\n valid: {\n true: \"border-primary bg-primary/10\",\n false: \"border-destructive bg-destructive/10\",\n },\n },\n defaultVariants: {\n active: false,\n valid: true,\n },\n }\n)\n\n/**\n * Empty state variants for canvas\n */\nexport const dashboardBuilderEmptyStateVariants = cva(\n \"flex h-full flex-col items-center justify-center gap-4 text-muted-foreground\",\n {\n variants: {\n variant: {\n default: \"\",\n minimal: \"gap-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\n// Export variant prop types\nexport type DashboardBuilderVariantProps = VariantProps<\n typeof dashboardBuilderVariants\n>\nexport type DashboardBuilderToolbarVariantProps = VariantProps<\n typeof dashboardBuilderToolbarVariants\n>\nexport type DashboardBuilderCanvasVariantProps = VariantProps<\n typeof dashboardBuilderCanvasVariants\n>\nexport type DashboardBuilderWidgetLibraryVariantProps = VariantProps<\n typeof dashboardBuilderWidgetLibraryVariants\n>\nexport type DashboardBuilderPropertiesPanelVariantProps = VariantProps<\n typeof dashboardBuilderPropertiesPanelVariants\n>\nexport type DashboardBuilderWidgetCardVariantProps = VariantProps<\n typeof dashboardBuilderWidgetCardVariants\n>\nexport type DashboardBuilderWidgetVariantProps = VariantProps<\n typeof dashboardBuilderWidgetVariants\n>\nexport type DashboardBuilderResizeHandleVariantProps = VariantProps<\n typeof dashboardBuilderResizeHandleVariants\n>\nexport type DashboardBuilderDropZoneVariantProps = VariantProps<\n typeof dashboardBuilderDropZoneVariants\n>\nexport type DashboardBuilderEmptyStateVariantProps = VariantProps<\n typeof dashboardBuilderEmptyStateVariants\n>\n","import type {\n BuilderLayoutConfig,\n BuilderMode,\n BuilderPosition,\n BuilderState,\n BuilderWidget,\n BuilderWidgetDefinition,\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n} from \"./DashboardBuilder.types\"\nimport type { DragEvent, KeyboardEvent, ReactNode } from \"react\"\n\nimport {\n BarChart2,\n ChevronLeft,\n ChevronRight,\n Eye,\n GripVertical,\n LayoutGrid,\n PieChart,\n Redo2,\n Save,\n Table,\n Trash2,\n Type,\n Undo2,\n X,\n} from \"lucide-react\"\nimport { useCallback, useId, useMemo, useRef, useState } from \"react\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { TextInput } from \"../../forms/TextInput\"\nimport { Button } from \"../../primitives/Button\"\nimport { Label } from \"../../primitives/Label\"\nimport {\n dashboardBuilderCanvasVariants,\n dashboardBuilderEmptyStateVariants,\n dashboardBuilderPropertiesPanelVariants,\n dashboardBuilderToolbarVariants,\n dashboardBuilderVariants,\n dashboardBuilderWidgetCardVariants,\n dashboardBuilderWidgetLibraryVariants,\n dashboardBuilderWidgetVariants,\n} from \"./DashboardBuilder.variants\"\n\n// ============================================\n// DEFAULT WIDGET DEFINITIONS\n// ============================================\n\n/**\n * Placeholder widget component for demo purposes\n */\nfunction PlaceholderWidget({ config, title }: { config: Record<string, unknown>; title: string }): ReactNode {\n const value = config[\"value\"]\n const getDisplayValue = (): string => {\n if (value === null || value === undefined) return \"\"\n if (typeof value === \"object\") return JSON.stringify(value)\n return String(value as boolean | number | string)\n }\n return (\n <div className=\"flex h-full flex-col items-center justify-center p-4\">\n <span className=\"text-sm font-medium\">{title}</span>\n {value !== undefined && value !== null && (\n <span className=\"text-2xl font-bold text-primary\">\n {getDisplayValue()}\n </span>\n )}\n </div>\n )\n}\n\n/**\n * Default widgets available in the library\n */\nconst defaultWidgets: BuilderWidgetDefinition[] = [\n {\n type: \"kpi\",\n name: \"KPI Card\",\n description: \"Display a key performance indicator\",\n icon: <LayoutGrid className=\"h-4 w-4\" />,\n category: \"kpi\",\n defaultSize: { w: 3, h: 2 },\n minSize: { w: 2, h: 1 },\n maxSize: { w: 6, h: 4 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"KPI\" },\n { name: \"value\", type: \"text\", label: \"Value\", defaultValue: \"0\" },\n { name: \"unit\", type: \"text\", label: \"Unit\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-line\",\n name: \"Line Chart\",\n description: \"Display data as a line chart\",\n icon: <BarChart2 className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n {\n name: \"showLegend\",\n type: \"boolean\",\n label: \"Show Legend\",\n defaultValue: true,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"chart-pie\",\n name: \"Pie Chart\",\n description: \"Display data as a pie chart\",\n icon: <PieChart className=\"h-4 w-4\" />,\n category: \"charts\",\n defaultSize: { w: 4, h: 4 },\n minSize: { w: 3, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Chart\" },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"table\",\n name: \"Data Table\",\n description: \"Display data in a table format\",\n icon: <Table className=\"h-4 w-4\" />,\n category: \"tables\",\n defaultSize: { w: 6, h: 4 },\n minSize: { w: 4, h: 3 },\n configSchema: {\n fields: [\n { name: \"title\", type: \"text\", label: \"Title\", defaultValue: \"Table\" },\n {\n name: \"pageSize\",\n type: \"number\",\n label: \"Page Size\",\n defaultValue: 10,\n },\n ],\n },\n component: PlaceholderWidget,\n },\n {\n type: \"text\",\n name: \"Text Block\",\n description: \"Display formatted text content\",\n icon: <Type className=\"h-4 w-4\" />,\n category: \"text\",\n defaultSize: { w: 4, h: 2 },\n minSize: { w: 2, h: 1 },\n configSchema: {\n fields: [\n { name: \"content\", type: \"text\", label: \"Content\", defaultValue: \"\" },\n ],\n },\n component: PlaceholderWidget,\n },\n]\n\n// ============================================\n// SUB-COMPONENTS\n// ============================================\n\n/**\n * Toolbar component with save, undo, redo, and preview actions\n */\nfunction DashboardBuilderToolbar({\n canRedo,\n canUndo,\n onRedo,\n onSave,\n onTogglePreview,\n onUndo,\n showPreview,\n showUndo,\n}: DashboardBuilderToolbarProps): ReactNode {\n return (\n <div\n className={dashboardBuilderToolbarVariants()}\n data-slot=\"dashboard-builder-toolbar\"\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"text-sm font-medium\">Dashboard Builder</span>\n </div>\n\n <div className=\"flex items-center gap-2\">\n {showUndo && (\n <>\n <Button\n aria-label=\"Undo\"\n disabled={!canUndo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onUndo}\n >\n <Undo2 className=\"h-4 w-4\" />\n </Button>\n <Button\n aria-label=\"Redo\"\n disabled={!canRedo}\n size=\"sm\"\n variant=\"ghost\"\n onClick={onRedo}\n >\n <Redo2 className=\"h-4 w-4\" />\n </Button>\n <div className=\"mx-2 h-6 w-px bg-border\" />\n </>\n )}\n\n {showPreview && (\n <Button\n aria-label=\"Preview dashboard\"\n size=\"sm\"\n variant=\"outline\"\n onClick={onTogglePreview}\n >\n <Eye className=\"mr-2 h-4 w-4\" />\n Preview\n </Button>\n )}\n\n <Button size=\"sm\" onClick={onSave}>\n <Save className=\"mr-2 h-4 w-4\" />\n Save\n </Button>\n </div>\n </div>\n )\n}\n\n/**\n * Widget library sidebar showing available widgets\n */\nfunction DashboardBuilderWidgetLibrary({\n widgets,\n}: DashboardBuilderWidgetLibraryProps): ReactNode {\n const [collapsed, setCollapsed] = useState(false)\n\n // Group widgets by category\n const groupedWidgets = useMemo(() => {\n return widgets.reduce<Record<string, BuilderWidgetDefinition[]>>((acc, widget) => {\n const category = widget.category || \"default\"\n acc[category] ??= []\n acc[category].push(widget)\n return acc\n }, {})\n }, [widgets])\n\n const handleDragStart = (e: DragEvent<HTMLDivElement>, widget: BuilderWidgetDefinition): void => {\n e.dataTransfer.setData(\"widget-type\", widget.type)\n e.dataTransfer.effectAllowed = \"copy\"\n }\n\n return (\n <div\n className={dashboardBuilderWidgetLibraryVariants({ collapsed })}\n data-slot=\"dashboard-builder-widget-library\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n {!collapsed && (\n <span className=\"text-sm font-medium\">Widgets</span>\n )}\n <Button\n aria-label={collapsed ? \"Expand widget library\" : \"Collapse widget library\"}\n className=\"ml-auto\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={() => { setCollapsed(!collapsed); }}\n >\n {collapsed ? (\n <ChevronRight className=\"h-4 w-4\" />\n ) : (\n <ChevronLeft className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n\n {!collapsed && (\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n {Object.entries(groupedWidgets).map(([category, categoryWidgets]) => (\n <div key={category}>\n <span className=\"mb-2 block text-xs font-medium uppercase text-muted-foreground\">\n {category}\n </span>\n <div className=\"space-y-2\">\n {categoryWidgets.map((widget) => (\n <div\n key={widget.type}\n draggable\n className={dashboardBuilderWidgetCardVariants({\n category: category as \"charts\" | \"default\" | \"kpi\" | \"tables\" | \"text\",\n })}\n aria-label={`Drag ${widget.name} widget`}\n role=\"button\"\n tabIndex={0}\n title={widget.description}\n onDragStart={(e: DragEvent<HTMLDivElement>) => { handleDragStart(e, widget); }}\n >\n <span className=\"text-muted-foreground\">{widget.icon}</span>\n <span className=\"text-sm\">{widget.name}</span>\n </div>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Canvas component - main work area for widgets\n */\nfunction DashboardBuilderCanvas({\n children,\n columns,\n onWidgetDrop,\n rowHeight,\n showGrid,\n widgets,\n}: DashboardBuilderCanvasProps & {\n children?: ReactNode\n onWidgetClick?: (id: string) => void\n onWidgetRemove?: (id: string) => void\n selectedWidgetId?: null | string\n widgetDefinitions: BuilderWidgetDefinition[]\n}): ReactNode {\n const canvasRef = useRef<HTMLDivElement>(null)\n const [isDragOver, setIsDragOver] = useState(false)\n\n const handleDragOver = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n e.dataTransfer.dropEffect = \"copy\"\n setIsDragOver(true)\n }\n\n const handleDragLeave = (): void => {\n setIsDragOver(false)\n }\n\n const handleDrop = (e: DragEvent<HTMLDivElement>): void => {\n e.preventDefault()\n setIsDragOver(false)\n\n const widgetType = e.dataTransfer.getData(\"widget-type\")\n if (!widgetType || !canvasRef.current) return\n\n const rect = canvasRef.current.getBoundingClientRect()\n const gridWidth = rect.width / columns\n const x = Math.floor((e.clientX - rect.left) / gridWidth)\n const y = Math.floor((e.clientY - rect.top) / rowHeight)\n\n onWidgetDrop?.(widgetType, { x, y })\n }\n\n const gridSizeStyle = {\n \"--grid-size\": `${String(100 / columns)}%`,\n } as React.CSSProperties\n\n return (\n <div\n ref={canvasRef}\n className={cn(\n dashboardBuilderCanvasVariants({ showGrid }),\n isDragOver && \"ring-2 ring-primary ring-offset-2\"\n )}\n aria-describedby=\"canvas-instructions\"\n aria-label=\"Dashboard canvas\"\n data-slot=\"dashboard-builder-canvas\"\n role=\"region\"\n style={gridSizeStyle}\n onDragLeave={handleDragLeave}\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n >\n <span className=\"sr-only\" id=\"canvas-instructions\">\n Drag widgets from the library to add them. Use arrow keys to move selected widgets.\n Press Delete to remove selected widget.\n </span>\n\n {widgets.length === 0 ? (\n <div className={dashboardBuilderEmptyStateVariants()}>\n <LayoutGrid className=\"h-12 w-12 opacity-50\" />\n <div className=\"text-center\">\n <p className=\"text-sm font-medium\">No widgets yet</p>\n <p className=\"text-xs text-muted-foreground\">\n Drag widgets from the library to get started\n </p>\n </div>\n </div>\n ) : (\n <div\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${String(columns)}, 1fr)`,\n gap: \"var(--spacing-4)\",\n minHeight: \"100%\",\n }}\n className=\"relative\"\n >\n {children}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * Properties panel for configuring selected widget\n */\nfunction DashboardBuilderPropertiesPanel({\n onClose,\n onConfigChange,\n widget,\n widgetDefinition,\n}: DashboardBuilderPropertiesPanelProps): ReactNode {\n const panelId = useId()\n\n if (!widget || !widgetDefinition) {\n return (\n <div\n className={dashboardBuilderPropertiesPanelVariants({ open: false })}\n data-slot=\"dashboard-builder-properties-panel\"\n />\n )\n }\n\n const handleFieldChange = (fieldName: string, value: unknown): void => {\n const newConfig = { ...widget.config, [fieldName]: value }\n onConfigChange?.(newConfig)\n }\n\n return (\n <div\n aria-labelledby={`${panelId}-title`}\n className={dashboardBuilderPropertiesPanelVariants({ open: true })}\n data-slot=\"dashboard-builder-properties-panel\"\n role=\"region\"\n >\n <div className=\"flex h-12 items-center justify-between border-b px-4\">\n <span className=\"text-sm font-medium\" id={`${panelId}-title`}>\n Properties\n </span>\n <Button\n aria-label=\"Close properties panel\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={onClose}\n >\n <X className=\"h-4 w-4\" />\n </Button>\n </div>\n\n <div className=\"flex-1 overflow-y-auto p-4\">\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-xs font-medium uppercase text-muted-foreground\">\n Widget: {widgetDefinition.name}\n </span>\n </div>\n\n <div className=\"h-px w-full bg-border\" />\n\n <div className=\"space-y-4\">\n {widgetDefinition.configSchema.fields.map((field) => (\n <div key={field.name} className=\"space-y-2\">\n <Label htmlFor={`${panelId}-${field.name}`}>{field.label}</Label>\n {field.type === \"text\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? \"\"\n if (typeof val === \"object\") return JSON.stringify(val)\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.value); }}\n />\n )}\n {field.type === \"number\" && (\n <TextInput\n value={(() => {\n const val = widget.config[field.name] ?? field.defaultValue ?? 0\n if (typeof val === \"object\") return \"0\"\n return String(val as boolean | number | string)\n })()}\n id={`${panelId}-${field.name}`}\n type=\"number\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, Number(e.target.value)); }}\n />\n )}\n {field.type === \"boolean\" && (\n <input\n checked={Boolean(widget.config[field.name] ?? field.defaultValue)}\n className=\"h-4 w-4\"\n id={`${panelId}-${field.name}`}\n type=\"checkbox\"\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => { handleFieldChange(field.name, e.target.checked); }}\n />\n )}\n </div>\n ))}\n </div>\n </div>\n </div>\n </div>\n )\n}\n\n/**\n * Individual widget component on the canvas\n */\nfunction DashboardBuilderWidgetComponent({\n isDragging,\n isSelected,\n onClick,\n onRemove,\n widget,\n widgetDefinition,\n}: DashboardBuilderWidgetComponentProps): ReactNode {\n const WidgetComponent = widgetDefinition?.component\n\n const state = isSelected ? \"selected\" : isDragging ? \"dragging\" : \"idle\"\n\n const handleKeyDown = (e: KeyboardEvent<HTMLDivElement>): void => {\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault()\n onRemove?.()\n }\n }\n\n return (\n <div\n style={{\n gridColumn: `span ${String(widget.w)}`,\n gridRow: `span ${String(widget.h)}`,\n minHeight: `${String(widget.h * 100)}px`,\n }}\n aria-label={`Widget: ${widget.title}`}\n aria-selected={isSelected}\n className={dashboardBuilderWidgetVariants({ state })}\n data-slot=\"dashboard-builder-widget\"\n data-widget-id={widget.id}\n role=\"button\"\n tabIndex={0}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n >\n {/* Widget header */}\n <div className=\"flex items-center justify-between border-b bg-muted/50 px-3 py-2\">\n <div className=\"flex items-center gap-2\">\n <GripVertical className=\"h-4 w-4 cursor-grab text-muted-foreground\" />\n <span className=\"text-xs font-medium\">{widget.title}</span>\n </div>\n <Button\n aria-label={`Remove ${widget.title}`}\n className=\"opacity-0 group-hover:opacity-100\"\n size=\"icon\"\n variant=\"ghost\"\n onClick={(e) => {\n e.stopPropagation()\n onRemove?.()\n }}\n >\n <Trash2 className=\"h-3 w-3\" />\n </Button>\n </div>\n\n {/* Widget content */}\n <div className=\"flex-1 overflow-hidden p-2\">\n {WidgetComponent ? (\n <WidgetComponent\n config={widget.config}\n height={widget.h}\n id={widget.id}\n title={widget.title}\n width={widget.w}\n />\n ) : (\n <div className=\"flex h-full items-center justify-center text-muted-foreground\">\n <span className=\"text-xs\">Unknown widget type</span>\n </div>\n )}\n </div>\n </div>\n )\n}\n\n// ============================================\n// MAIN COMPONENT\n// ============================================\n\n/**\n * DashboardBuilder - Visual dashboard construction interface.\n *\n * Allows users to create, edit and customize dashboards through a drag-and-drop\n * interface with a widget library and properties panel.\n *\n * @example\n * ```tsx\n * <DashboardBuilder\n * onSave={({ widgets, layout }) => console.log('Saved:', widgets, layout)}\n * />\n * ```\n *\n * @example\n * ```tsx\n * const initialWidgets = [\n * { id: '1', type: 'kpi', title: 'Sales', x: 0, y: 0, w: 3, h: 2, config: { value: '150k' } }\n * ];\n *\n * <DashboardBuilder\n * initialWidgets={initialWidgets}\n * columns={12}\n * rowHeight={100}\n * />\n * ```\n */\nfunction DashboardBuilder({\n \"aria-label\": ariaLabel = \"Dashboard builder\",\n allowOverlap = false,\n autoSaveInterval = 30000,\n availableWidgets = defaultWidgets,\n className,\n columns = 12,\n enableAutoSave = false,\n initialLayout,\n initialWidgets = [],\n mode,\n onLayoutChange,\n onPreview,\n onRedo,\n onSave,\n onUndo,\n onWidgetAdd,\n onWidgetRemove,\n onWidgetUpdate,\n rowHeight = 100,\n showGrid = true,\n showPreview = true,\n showUndo = true,\n size,\n snapToGrid = true,\n ...props\n}: DashboardBuilderProps): ReactNode {\n const builderId = useId()\n\n // State\n const [widgets, setWidgets] = useState<BuilderWidget[]>(initialWidgets)\n const [selectedWidgetId, setSelectedWidgetId] = useState<null | string>(null)\n const [_builderMode, setBuilderMode] = useState<BuilderMode>(\"edit\")\n const [_builderState, setBuilderState] = useState<BuilderState>(\"idle\")\n const [history, setHistory] = useState<BuilderWidget[][]>([initialWidgets])\n const [historyIndex, setHistoryIndex] = useState(0)\n\n // Suppress unused variable warnings for future implementation\n void snapToGrid\n void allowOverlap\n void enableAutoSave\n void autoSaveInterval\n void initialLayout\n\n // Computed\n const selectedWidget = useMemo(\n () => widgets.find((w) => w.id === selectedWidgetId) ?? null,\n [widgets, selectedWidgetId]\n )\n const selectedWidgetDefinition = useMemo(\n () =>\n selectedWidget\n ? availableWidgets.find((w) => w.type === selectedWidget.type)\n : undefined,\n [selectedWidget, availableWidgets]\n )\n\n const canUndo = historyIndex > 0\n const canRedo = historyIndex < history.length - 1\n\n // Helpers\n const updateHistory = useCallback((newWidgets: BuilderWidget[]) => {\n setHistory((prev) => {\n const newHistory = prev.slice(0, historyIndex + 1)\n newHistory.push(newWidgets)\n return newHistory\n })\n setHistoryIndex((prev) => prev + 1)\n }, [historyIndex])\n\n const generateId = (): string => `widget-${String(Date.now())}-${Math.random().toString(36).slice(2, 9)}`\n\n const getLayoutConfig = useCallback((): BuilderLayoutConfig => {\n return {\n columns,\n rowHeight,\n widgets: widgets.map((w) => ({\n i: w.id,\n x: w.x,\n y: w.y,\n w: w.w,\n h: w.h,\n })),\n }\n }, [columns, rowHeight, widgets])\n\n // Event handlers\n const handleWidgetDrop = useCallback(\n (widgetType: string, position: BuilderPosition) => {\n const definition = availableWidgets.find((w) => w.type === widgetType)\n if (!definition) return\n\n const newWidget: BuilderWidget = {\n id: generateId(),\n type: widgetType,\n title: definition.name,\n x: position.x,\n y: position.y,\n w: definition.defaultSize.w,\n h: definition.defaultSize.h,\n config: definition.configSchema.fields.reduce<Record<string, unknown>>(\n (acc, field) => {\n acc[field.name] = field.defaultValue\n return acc\n },\n {}\n ),\n }\n\n const newWidgets = [...widgets, newWidget]\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n setSelectedWidgetId(newWidget.id)\n\n onWidgetAdd?.({ widget: newWidget, position })\n onLayoutChange?.(getLayoutConfig())\n },\n [availableWidgets, widgets, updateHistory, onWidgetAdd, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetRemove = useCallback(\n (widgetId: string) => {\n const newWidgets = widgets.filter((w) => w.id !== widgetId)\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n if (selectedWidgetId === widgetId) {\n setSelectedWidgetId(null)\n }\n\n onWidgetRemove?.({ widgetId })\n onLayoutChange?.(getLayoutConfig())\n },\n [widgets, selectedWidgetId, updateHistory, onWidgetRemove, onLayoutChange, getLayoutConfig]\n )\n\n const handleWidgetSelect = useCallback((widgetId: string) => {\n setSelectedWidgetId(widgetId)\n setBuilderState(\"configuring\")\n }, [])\n\n const handleConfigChange = useCallback(\n (newConfig: Record<string, unknown>) => {\n if (!selectedWidgetId) return\n\n const newWidgets = widgets.map((w) =>\n w.id === selectedWidgetId ? { ...w, config: newConfig } : w\n )\n setWidgets(newWidgets)\n updateHistory(newWidgets)\n\n onWidgetUpdate?.({ widgetId: selectedWidgetId, config: newConfig })\n },\n [selectedWidgetId, widgets, updateHistory, onWidgetUpdate]\n )\n\n const handleSave = useCallback(() => {\n setBuilderState(\"saving\")\n onSave?.({ widgets, layout: getLayoutConfig() })\n setBuilderState(\"idle\")\n }, [widgets, getLayoutConfig, onSave])\n\n const handleUndo = useCallback(() => {\n if (!canUndo) return\n const newIndex = historyIndex - 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onUndo?.()\n }, [canUndo, historyIndex, history, onUndo])\n\n const handleRedo = useCallback(() => {\n if (!canRedo) return\n const newIndex = historyIndex + 1\n setHistoryIndex(newIndex)\n setWidgets(history[newIndex] ?? [])\n onRedo?.()\n }, [canRedo, historyIndex, history, onRedo])\n\n const handlePreview = useCallback(() => {\n setBuilderMode(\"preview\")\n onPreview?.()\n }, [onPreview])\n\n const handleCloseProperties = useCallback(() => {\n setSelectedWidgetId(null)\n setBuilderState(\"idle\")\n }, [])\n\n // Keyboard shortcuts\n const handleKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n // Ctrl/Cmd + S: Save\n if ((e.ctrlKey || e.metaKey) && e.key === \"s\") {\n e.preventDefault()\n handleSave()\n }\n // Ctrl/Cmd + Z: Undo\n if ((e.ctrlKey || e.metaKey) && e.key === \"z\" && !e.shiftKey) {\n e.preventDefault()\n handleUndo()\n }\n // Ctrl/Cmd + Shift + Z or Ctrl/Cmd + Y: Redo\n if ((e.ctrlKey || e.metaKey) && (e.key === \"y\" || (e.key === \"z\" && e.shiftKey))) {\n e.preventDefault()\n handleRedo()\n }\n // Delete: Remove selected widget\n if ((e.key === \"Delete\" || e.key === \"Backspace\") && selectedWidgetId) {\n e.preventDefault()\n handleWidgetRemove(selectedWidgetId)\n }\n },\n [handleSave, handleUndo, handleRedo, selectedWidgetId, handleWidgetRemove]\n )\n\n return (\n <div\n aria-label={ariaLabel}\n className={cn(dashboardBuilderVariants({ mode, size }), className)}\n data-slot=\"dashboard-builder\"\n id={builderId}\n role=\"application\"\n tabIndex={-1}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {/* Toolbar */}\n <div className=\"flex flex-col\">\n <DashboardBuilderToolbar\n canRedo={canRedo}\n canUndo={canUndo}\n showPreview={showPreview}\n showUndo={showUndo}\n onRedo={handleRedo}\n onSave={handleSave}\n onTogglePreview={handlePreview}\n onUndo={handleUndo}\n />\n\n {/* Main content area */}\n <div className=\"flex flex-1 overflow-hidden\">\n {/* Widget Library */}\n <DashboardBuilderWidgetLibrary widgets={availableWidgets} />\n\n {/* Canvas */}\n <div className=\"flex flex-1 flex-col\">\n <DashboardBuilderCanvas\n columns={columns}\n rowHeight={rowHeight}\n selectedWidgetId={selectedWidgetId}\n showGrid={showGrid}\n widgetDefinitions={availableWidgets}\n widgets={widgets}\n onWidgetClick={handleWidgetSelect}\n onWidgetDrop={handleWidgetDrop}\n onWidgetRemove={handleWidgetRemove}\n >\n {widgets.map((widget) => {\n const definition = availableWidgets.find(\n (w) => w.type === widget.type\n )\n return (\n <DashboardBuilderWidgetComponent\n key={widget.id}\n isSelected={widget.id === selectedWidgetId}\n widget={widget}\n widgetDefinition={definition}\n onClick={() => { handleWidgetSelect(widget.id); }}\n onRemove={() => { handleWidgetRemove(widget.id); }}\n />\n )\n })}\n </DashboardBuilderCanvas>\n </div>\n\n {/* Properties Panel */}\n <DashboardBuilderPropertiesPanel\n widget={selectedWidget}\n widgetDefinition={selectedWidgetDefinition}\n onClose={handleCloseProperties}\n onConfigChange={handleConfigChange}\n />\n </div>\n </div>\n </div>\n )\n}\n\nDashboardBuilder.displayName = \"DashboardBuilder\"\n\n// ============================================\n// EXPORTS\n// ============================================\n\nexport {\n DashboardBuilder,\n DashboardBuilderCanvas,\n DashboardBuilderPropertiesPanel,\n DashboardBuilderToolbar,\n DashboardBuilderWidgetComponent,\n DashboardBuilderWidgetLibrary,\n defaultWidgets,\n}\nexport type {\n DashboardBuilderCanvasProps,\n DashboardBuilderPropertiesPanelProps,\n DashboardBuilderProps,\n DashboardBuilderToolbarProps,\n DashboardBuilderWidgetComponentProps,\n DashboardBuilderWidgetLibraryProps,\n}\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator } from './chunk-N3I6GA4I.js';
|
|
2
|
-
import { Field, FieldLabel, FieldError, FieldDescription } from './chunk-
|
|
2
|
+
import { Field, FieldLabel, FieldError, FieldDescription } from './chunk-4GQN76L7.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
5
5
|
import { cva } from 'class-variance-authority';
|
|
@@ -143,5 +143,5 @@ var inputOTPFieldErrorVariants = cva(
|
|
|
143
143
|
);
|
|
144
144
|
|
|
145
145
|
export { InputOTPField, inputOTPFieldDescriptionVariants, inputOTPFieldErrorVariants, inputOTPFieldLabelVariants, inputOTPFieldVariants };
|
|
146
|
-
//# sourceMappingURL=chunk-
|
|
147
|
-
//# sourceMappingURL=chunk-
|
|
146
|
+
//# sourceMappingURL=chunk-QZWKXUZP.js.map
|
|
147
|
+
//# sourceMappingURL=chunk-QZWKXUZP.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/forms/InputOTPField/InputOTPField.tsx","../src/components/forms/InputOTPField/InputOTPField.variants.ts"],"names":[],"mappings":"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","file":"chunk-NWFRMVI2.js","sourcesContent":["\"use client\"\n\nimport type { InputOTPFieldProps } from \"./InputOTPField.types\"\n\nimport * as React from \"react\"\n\nimport { Field, FieldDescription, FieldError, FieldLabel } from \"../Field\"\nimport {\n InputOTP,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n} from \"../InputOTP\"\n\n/**\n * InputOTPField - A complete OTP input field with label, description, and error handling\n *\n * @example\n * ```tsx\n * // 6-digit OTP with two groups\n * <InputOTPField\n * label=\"Verification Code\"\n * description=\"Enter the 6-digit code sent to your phone\"\n * digits={6}\n * />\n *\n * // 4-digit OTP with placeholder\n * <InputOTPField\n * label=\"PIN\"\n * digits={4}\n * placeholder=\"0\"\n * />\n *\n * // With error state\n * <InputOTPField\n * label=\"Code\"\n * errorMessage=\"Invalid verification code\"\n * digits={6}\n * />\n * ```\n */\nfunction InputOTPField({\n label,\n description,\n errorMessage,\n required,\n digits = 6,\n placeholder,\n size = \"md\",\n slotSize,\n onChange,\n onComplete,\n value,\n defaultValue,\n disabled,\n pattern,\n className,\n containerClassName,\n}: InputOTPFieldProps) {\n const id = React.useId()\n const inputId = `${id}-input`\n const descriptionId = `${id}-description`\n const errorId = `${id}-error`\n\n const hasError = !!errorMessage\n const resolvedSlotSize = slotSize ?? size\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n onChange?.(nextValue)\n },\n [isControlled, onChange]\n )\n\n // Generate slot elements based on digit count\n // Index keys are safe here: OTP slots are static, fixed-length, never reordered\n /* eslint-disable @eslint-react/no-array-index-key */\n const renderSlots = () => {\n const slotProps = {\n size: resolvedSlotSize,\n ...(placeholder ? { placeholder } : {}),\n }\n\n if (digits === 4) {\n return (\n <InputOTPGroup>\n {Array.from({ length: 4 }).map((_, i) => (\n <InputOTPSlot key={i} index={i} {...slotProps} />\n ))}\n </InputOTPGroup>\n )\n }\n\n // 6 digits: two groups of 3 with separator\n return (\n <>\n <InputOTPGroup>\n {Array.from({ length: 3 }).map((_, i) => (\n <InputOTPSlot key={i} index={i} {...slotProps} />\n ))}\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n {Array.from({ length: 3 }).map((_, i) => (\n <InputOTPSlot key={i + 3} index={i + 3} {...slotProps} />\n ))}\n </InputOTPGroup>\n </>\n )\n }\n /* eslint-enable @eslint-react/no-array-index-key */\n\n return (\n <Field>\n {label && (\n <FieldLabel htmlFor={inputId}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive ml-1\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <InputOTP\n id={inputId}\n maxLength={digits}\n slotSize={resolvedSlotSize}\n onChange={handleChange}\n {...(onComplete ? { onComplete } : {})}\n disabled={disabled}\n value={currentValue}\n {...(pattern ? { pattern } : {})}\n {...(className ? { className } : {})}\n {...(containerClassName ? { containerClassName } : {})}\n aria-describedby={\n hasError ? errorId : (description ? descriptionId : undefined)\n }\n aria-invalid={hasError || undefined}\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Using || intentionally: false || undefined = undefined, false ?? undefined = false\n aria-required={required || undefined}\n >\n {renderSlots()}\n </InputOTP>\n {hasError ? (\n <FieldError id={errorId}>{errorMessage}</FieldError>\n ) : description ? (\n <FieldDescription id={descriptionId}>{description}</FieldDescription>\n ) : null}\n </Field>\n )\n}\n\nexport { InputOTPField }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * InputOTPField container variant styles using CVA\n * Wraps the Field + InputOTP combination with consistent spacing\n */\nexport const inputOTPFieldVariants = cva(\n \"flex flex-col gap-2\",\n {\n variants: {\n size: {\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField label variant styles using CVA\n */\nexport const inputOTPFieldLabelVariants = cva(\n \"font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField description variant styles using CVA\n */\nexport const inputOTPFieldDescriptionVariants = cva(\n \"text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField error variant styles using CVA\n */\nexport const inputOTPFieldErrorVariants = cva(\n \"text-destructive font-medium\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type InputOTPFieldVariantProps = VariantProps<typeof inputOTPFieldVariants>\nexport type InputOTPFieldLabelVariantProps = VariantProps<typeof inputOTPFieldLabelVariants>\nexport type InputOTPFieldDescriptionVariantProps = VariantProps<typeof inputOTPFieldDescriptionVariants>\nexport type InputOTPFieldErrorVariantProps = VariantProps<typeof inputOTPFieldErrorVariants>\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/forms/InputOTPField/InputOTPField.tsx","../src/components/forms/InputOTPField/InputOTPField.variants.ts"],"names":[],"mappings":"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","file":"chunk-QZWKXUZP.js","sourcesContent":["\"use client\"\n\nimport type { InputOTPFieldProps } from \"./InputOTPField.types\"\n\nimport * as React from \"react\"\n\nimport { Field, FieldDescription, FieldError, FieldLabel } from \"../Field\"\nimport {\n InputOTP,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n} from \"../InputOTP\"\n\n/**\n * InputOTPField - A complete OTP input field with label, description, and error handling\n *\n * @example\n * ```tsx\n * // 6-digit OTP with two groups\n * <InputOTPField\n * label=\"Verification Code\"\n * description=\"Enter the 6-digit code sent to your phone\"\n * digits={6}\n * />\n *\n * // 4-digit OTP with placeholder\n * <InputOTPField\n * label=\"PIN\"\n * digits={4}\n * placeholder=\"0\"\n * />\n *\n * // With error state\n * <InputOTPField\n * label=\"Code\"\n * errorMessage=\"Invalid verification code\"\n * digits={6}\n * />\n * ```\n */\nfunction InputOTPField({\n label,\n description,\n errorMessage,\n required,\n digits = 6,\n placeholder,\n size = \"md\",\n slotSize,\n onChange,\n onComplete,\n value,\n defaultValue,\n disabled,\n pattern,\n className,\n containerClassName,\n}: InputOTPFieldProps) {\n const id = React.useId()\n const inputId = `${id}-input`\n const descriptionId = `${id}-description`\n const errorId = `${id}-error`\n\n const hasError = !!errorMessage\n const resolvedSlotSize = slotSize ?? size\n const isControlled = value !== undefined\n const [internalValue, setInternalValue] = React.useState(defaultValue ?? \"\")\n\n const currentValue = isControlled ? value : internalValue\n\n const handleChange = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue)\n }\n onChange?.(nextValue)\n },\n [isControlled, onChange]\n )\n\n // Generate slot elements based on digit count\n // Index keys are safe here: OTP slots are static, fixed-length, never reordered\n /* eslint-disable @eslint-react/no-array-index-key */\n const renderSlots = () => {\n const slotProps = {\n size: resolvedSlotSize,\n ...(placeholder ? { placeholder } : {}),\n }\n\n if (digits === 4) {\n return (\n <InputOTPGroup>\n {Array.from({ length: 4 }).map((_, i) => (\n <InputOTPSlot key={i} index={i} {...slotProps} />\n ))}\n </InputOTPGroup>\n )\n }\n\n // 6 digits: two groups of 3 with separator\n return (\n <>\n <InputOTPGroup>\n {Array.from({ length: 3 }).map((_, i) => (\n <InputOTPSlot key={i} index={i} {...slotProps} />\n ))}\n </InputOTPGroup>\n <InputOTPSeparator />\n <InputOTPGroup>\n {Array.from({ length: 3 }).map((_, i) => (\n <InputOTPSlot key={i + 3} index={i + 3} {...slotProps} />\n ))}\n </InputOTPGroup>\n </>\n )\n }\n /* eslint-enable @eslint-react/no-array-index-key */\n\n return (\n <Field>\n {label && (\n <FieldLabel htmlFor={inputId}>\n {label}\n {required && (\n <span aria-hidden=\"true\" className=\"text-destructive ml-1\">\n *\n </span>\n )}\n </FieldLabel>\n )}\n <InputOTP\n id={inputId}\n maxLength={digits}\n slotSize={resolvedSlotSize}\n onChange={handleChange}\n {...(onComplete ? { onComplete } : {})}\n disabled={disabled}\n value={currentValue}\n {...(pattern ? { pattern } : {})}\n {...(className ? { className } : {})}\n {...(containerClassName ? { containerClassName } : {})}\n aria-describedby={\n hasError ? errorId : (description ? descriptionId : undefined)\n }\n aria-invalid={hasError || undefined}\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- Using || intentionally: false || undefined = undefined, false ?? undefined = false\n aria-required={required || undefined}\n >\n {renderSlots()}\n </InputOTP>\n {hasError ? (\n <FieldError id={errorId}>{errorMessage}</FieldError>\n ) : description ? (\n <FieldDescription id={descriptionId}>{description}</FieldDescription>\n ) : null}\n </Field>\n )\n}\n\nexport { InputOTPField }\n","import { cva, type VariantProps } from \"class-variance-authority\"\n\n/**\n * InputOTPField container variant styles using CVA\n * Wraps the Field + InputOTP combination with consistent spacing\n */\nexport const inputOTPFieldVariants = cva(\n \"flex flex-col gap-2\",\n {\n variants: {\n size: {\n sm: \"gap-1.5\",\n md: \"gap-2\",\n lg: \"gap-2.5\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField label variant styles using CVA\n */\nexport const inputOTPFieldLabelVariants = cva(\n \"font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField description variant styles using CVA\n */\nexport const inputOTPFieldDescriptionVariants = cva(\n \"text-muted-foreground\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\n/**\n * InputOTPField error variant styles using CVA\n */\nexport const inputOTPFieldErrorVariants = cva(\n \"text-destructive font-medium\",\n {\n variants: {\n size: {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-sm\",\n },\n },\n defaultVariants: {\n size: \"md\",\n },\n }\n)\n\nexport type InputOTPFieldVariantProps = VariantProps<typeof inputOTPFieldVariants>\nexport type InputOTPFieldLabelVariantProps = VariantProps<typeof inputOTPFieldLabelVariants>\nexport type InputOTPFieldDescriptionVariantProps = VariantProps<typeof inputOTPFieldDescriptionVariants>\nexport type InputOTPFieldErrorVariantProps = VariantProps<typeof inputOTPFieldErrorVariants>\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { buttonVariants } from './chunk-
|
|
1
|
+
import { buttonVariants } from './chunk-ONQCNOLU.js';
|
|
2
2
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
3
3
|
import { isSameDay } from 'date-fns';
|
|
4
4
|
import { ChevronLeftIcon, ChevronRightIcon, ChevronDownIcon } from 'lucide-react';
|
|
@@ -338,5 +338,5 @@ var calendarDisabledVariants = cva([
|
|
|
338
338
|
]);
|
|
339
339
|
|
|
340
340
|
export { Calendar, CalendarDayButton, calendarContainerVariants, calendarDayButtonVariants, calendarDayCellVariants, calendarDisabledVariants, calendarNavButtonVariants, calendarOutsideVariants, calendarRangeEndVariants, calendarRangeMiddleVariants, calendarRangeStartVariants, calendarTodayIndicatorVariants, calendarTodayVariants };
|
|
341
|
-
//# sourceMappingURL=chunk-
|
|
342
|
-
//# sourceMappingURL=chunk-
|
|
341
|
+
//# sourceMappingURL=chunk-R4UOT76L.js.map
|
|
342
|
+
//# sourceMappingURL=chunk-R4UOT76L.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/components/advanced/Calendar/Calendar.tsx","../src/components/advanced/Calendar/Calendar.variants.ts"],"names":["className","props"],"mappings":"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","file":"chunk-7QDWREVG.js","sourcesContent":["import type {\n CalendarDayButtonProps,\n CalendarProps,\n} from \"./Calendar.types\"\n\nimport { isSameDay } from \"date-fns\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\nimport { DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { buttonVariants } from \"../../primitives/Button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n activeDates,\n modifiers: propModifiers,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames()\n\n // Convert activeDates to a modifier function\n const isActiveDate = React.useCallback(\n (date: Date): boolean => {\n if (!activeDates) return false\n if (Array.isArray(activeDates)) {\n return activeDates.some((activeDate) => isSameDay(activeDate, date))\n }\n return activeDates(date)\n },\n [activeDates]\n )\n\n // Merge activeDates modifier with any prop modifiers\n const modifiers = React.useMemo(\n () => ({\n ...propModifiers,\n active: activeDates ? isActiveDate : undefined,\n }),\n [propModifiers, activeDates, isActiveDate]\n )\n\n return (\n <DayPicker\n className={cn(\n \"bg-background group/calendar p-[var(--calendar-container-padding)] [--cell-size:var(--calendar-cell-size)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[length:var(--calendar-weekday-font-size)] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-[var(--calendar-week-gap)]\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[length:var(--calendar-weekday-font-size)] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n ref={rootRef}\n className={cn(className)}\n data-slot=\"calendar\"\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n captionLayout={captionLayout}\n modifiers={modifiers}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n children,\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const isFocused = modifiers[\"focused\"]\n const isToday = modifiers[\"today\"]\n const isActive = modifiers[\"active\"]\n\n React.useEffect(() => {\n if (isFocused) buttonRef.current?.focus()\n }, [isFocused])\n\n return (\n <button\n ref={buttonRef}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:rounded-md data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col items-center justify-center gap-0.5 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n data-selected-single={\n modifiers[\"selected\"] &&\n !modifiers[\"range_start\"] &&\n !modifiers[\"range_end\"] &&\n !modifiers[\"range_middle\"]\n }\n data-active={isActive ?? undefined}\n data-day={day.date.toLocaleDateString()}\n data-range-end={modifiers[\"range_end\"]}\n data-range-middle={modifiers[\"range_middle\"]}\n data-range-start={modifiers[\"range_start\"]}\n data-today={isToday ?? undefined}\n type=\"button\"\n {...props}\n >\n {children}\n {/* Show today indicator (priority) or active indicator */}\n {isToday ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-today-indicator-size,4px)] rounded-full bg-primary [[data-selected-single=true]>&]:bg-primary-foreground [[data-range-start=true]>&]:bg-primary-foreground [[data-range-end=true]>&]:bg-primary-foreground\"\n data-slot=\"today-indicator\"\n />\n ) : isActive ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-active-indicator-size,4px)] rounded-full bg-primary/60 [[data-selected-single=true]>&]:bg-primary-foreground/60 [[data-range-start=true]>&]:bg-primary-foreground/60 [[data-range-end=true]>&]:bg-primary-foreground/60\"\n data-slot=\"active-indicator\"\n />\n ) : null}\n </button>\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","// Calendar/Calendar.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * Calendar container styles\n */\nexport const calendarContainerVariants = cva(\n [\n \"bg-background\",\n \"group/calendar\",\n \"p-[var(--calendar-container-padding)]\",\n \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n \"[[data-slot=card-content]_&]:bg-transparent\",\n \"[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n ],\n {\n variants: {\n size: {\n default: \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n sm: \"[--cell-size:var(--calendar-container-cell-size-sm)]\",\n lg: \"[--cell-size:var(--calendar-container-cell-size-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Calendar day button styles\n */\nexport const calendarDayButtonVariants = cva(\n [\n \"flex\",\n \"aspect-square\",\n \"size-[var(--calendar-day-size)]\",\n \"w-full\",\n \"min-w-(--cell-size)\",\n \"flex-col\",\n \"gap-[var(--calendar-day-gap)]\",\n \"leading-none\",\n \"font-normal\",\n \"[&>span]:text-[length:var(--calendar-day-font-size)]\",\n \"[&>span]:opacity-70\",\n ],\n {\n variants: {\n state: {\n default: \"\",\n selected:\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n rangeStart:\n \"data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md\",\n rangeMiddle:\n \"data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-middle=true]:rounded-none\",\n rangeEnd:\n \"data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md\",\n focused:\n \"group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px]\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Navigation button styles (uses Button variants)\n */\nexport const calendarNavButtonVariants = cva(\n [\"size-(--cell-size)\", \"aria-disabled:opacity-50\", \"p-0\", \"select-none\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * Calendar day cell styles\n */\nexport const calendarDayCellVariants = cva(\n [\n \"relative\",\n \"w-full\",\n \"h-full\",\n \"p-0\",\n \"text-center\",\n \"[&:last-child[data-selected=true]_button]:rounded-r-md\",\n \"aspect-square\",\n \"select-none\",\n ],\n {\n variants: {\n showWeekNumber: {\n true: \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\",\n false: \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n },\n },\n defaultVariants: {\n showWeekNumber: false,\n },\n }\n)\n\n/**\n * Today cell styles\n */\nexport const calendarTodayVariants = cva([\n \"bg-accent\",\n \"text-accent-foreground\",\n \"rounded-md\",\n \"data-[selected=true]:rounded-none\",\n])\n\n/**\n * Today indicator dot styles\n */\nexport const calendarTodayIndicatorVariants = cva([\n \"size-[var(--calendar-indicator-size)]\",\n \"rounded-full\",\n \"bg-primary\",\n \"[[data-selected-single=true]>&]:bg-primary-foreground\",\n \"[[data-range-start=true]>&]:bg-primary-foreground\",\n \"[[data-range-end=true]>&]:bg-primary-foreground\",\n])\n\n/**\n * Range styles\n */\nexport const calendarRangeStartVariants = cva([\"rounded-l-md\", \"bg-accent\"])\n\nexport const calendarRangeMiddleVariants = cva([\"rounded-none\"])\n\nexport const calendarRangeEndVariants = cva([\"rounded-r-md\", \"bg-accent\"])\n\n/**\n * Outside days styles\n */\nexport const calendarOutsideVariants = cva([\n \"text-muted-foreground\",\n \"aria-selected:text-muted-foreground\",\n])\n\n/**\n * Disabled days styles\n */\nexport const calendarDisabledVariants = cva([\n \"text-muted-foreground\",\n \"opacity-50\",\n])\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/components/advanced/Calendar/Calendar.tsx","../src/components/advanced/Calendar/Calendar.variants.ts"],"names":["className","props"],"mappings":";;;;;;;;;AAiBA,SAAS,QAAA,CAAS;AAAA,EAChB,SAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA,GAAkB,IAAA;AAAA,EAClB,aAAA,GAAgB,OAAA;AAAA,EAChB,aAAA,GAAgB,OAAA;AAAA,EAChB,UAAA;AAAA,EACA,UAAA;AAAA,EACA,WAAA;AAAA,EACA,SAAA,EAAW,aAAA;AAAA,EACX,GAAG;AACL,CAAA,EAAkB;AAChB,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAG/C,EAAA,MAAM,YAAA,GAAqB,KAAA,CAAA,WAAA;AAAA,IACzB,CAAC,IAAA,KAAwB;AACvB,MAAA,IAAI,CAAC,aAAa,OAAO,KAAA;AACzB,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC9B,QAAA,OAAO,YAAY,IAAA,CAAK,CAAC,eAAe,SAAA,CAAU,UAAA,EAAY,IAAI,CAAC,CAAA;AAAA,MACrE;AACA,MAAA,OAAO,YAAY,IAAI,CAAA;AAAA,IACzB,CAAA;AAAA,IACA,CAAC,WAAW;AAAA,GACd;AAGA,EAAA,MAAM,SAAA,GAAkB,KAAA,CAAA,OAAA;AAAA,IACtB,OAAO;AAAA,MACL,GAAG,aAAA;AAAA,MACH,MAAA,EAAQ,cAAc,YAAA,GAAe;AAAA,KACvC,CAAA;AAAA,IACA,CAAC,aAAA,EAAe,WAAA,EAAa,YAAY;AAAA,GAC3C;AAEA,EAAA,uBACE,GAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,uMAAA;AAAA,QACA,MAAA,CAAO,GAAA,CAAA,yCAAA,CAAA;AAAA,QACP,MAAA,CAAO,GAAA,CAAA,6CAAA,CAAA;AAAA,QACP;AAAA,OACF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,EAAA,CAAG,OAAA,EAAS,iBAAA,CAAkB,IAAI,CAAA;AAAA,QACxC,MAAA,EAAQ,EAAA;AAAA,UACN,0CAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,EAAA,CAAG,4BAAA,EAA8B,iBAAA,CAAkB,KAAK,CAAA;AAAA,QAC/D,GAAA,EAAK,EAAA;AAAA,UACH,yEAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,eAAA,EAAiB,EAAA;AAAA,UACf,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,6DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,cAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,CAAA;AAAA,UACzC,6DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,0EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,qFAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,qHAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,uCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,aAAA,EAAe,EAAA;AAAA,UACb,yBAAA;AAAA,UACA,aAAA,KAAkB,UACd,SAAA,GACA,yGAAA;AAAA,UACJ,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,KAAA,EAAO,wBAAA;AAAA,QACP,QAAA,EAAU,EAAA,CAAG,MAAA,EAAQ,iBAAA,CAAkB,QAAQ,CAAA;AAAA,QAC/C,OAAA,EAAS,EAAA;AAAA,UACP,iHAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,IAAA,EAAM,EAAA,CAAG,2CAAA,EAA6C,iBAAA,CAAkB,IAAI,CAAA;AAAA,QAC5E,kBAAA,EAAoB,EAAA;AAAA,UAClB,6BAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,mFAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,GAAA,EAAK,EAAA;AAAA,UACH,mIAAA;AAAA,UACA,KAAA,CAAM,iBACF,0DAAA,GACA,yDAAA;AAAA,UACJ,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,WAAA,EAAa,EAAA;AAAA,UACX,wBAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,YAAA,EAAc,EAAA,CAAG,cAAA,EAAgB,iBAAA,CAAkB,YAAY,CAAA;AAAA,QAC/D,SAAA,EAAW,EAAA,CAAG,wBAAA,EAA0B,iBAAA,CAAkB,SAAS,CAAA;AAAA,QACnE,KAAA,EAAO,EAAA;AAAA,UACL,+EAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,OAAA,EAAS,EAAA;AAAA,UACP,2DAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,QAAA,EAAU,EAAA;AAAA,UACR,kCAAA;AAAA,UACA,iBAAA,CAAkB;AAAA,SACpB;AAAA,QACA,MAAA,EAAQ,EAAA,CAAG,WAAA,EAAa,iBAAA,CAAkB,MAAM,CAAA;AAAA,QAChD,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,IAAA,EAAM,CAAC,EAAE,SAAA,EAAAA,YAAW,OAAA,EAAS,GAAGC,QAAM,KAAM;AAC1C,UAAA,uBACE,GAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,OAAA;AAAA,cACL,SAAA,EAAW,GAAGD,UAAS,CAAA;AAAA,cACvB,WAAA,EAAU,UAAA;AAAA,cACT,GAAGC;AAAA;AAAA,WACN;AAAA,QAEJ,CAAA;AAAA,QACA,OAAA,EAAS,CAAC,EAAE,SAAA,EAAAD,YAAW,WAAA,EAAa,GAAGC,QAAM,KAAM;AACjD,UAAA,IAAI,gBAAgB,MAAA,EAAQ;AAC1B,YAAA,uBACE,GAAA,CAAC,mBAAgB,SAAA,EAAW,EAAA,CAAG,UAAUD,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,UAEpE;AAEA,UAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,YAAA,uBACE,GAAA;AAAA,cAAC,gBAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA,CAAG,QAAA,EAAUD,UAAS,CAAA;AAAA,gBAChC,GAAGC;AAAA;AAAA,aACN;AAAA,UAEJ;AAEA,UAAA,uBACE,GAAA,CAAC,mBAAgB,SAAA,EAAW,EAAA,CAAG,UAAUD,UAAS,CAAA,EAAI,GAAGC,MAAAA,EAAO,CAAA;AAAA,QAEpE,CAAA;AAAA,QACA,SAAA,EAAW,iBAAA;AAAA,QACX,YAAY,CAAC,EAAE,QAAA,EAAU,GAAGA,QAAM,KAAM;AACtC,UAAA,uBACE,GAAA,CAAC,QAAI,GAAGA,MAAAA,EACN,8BAAC,KAAA,EAAA,EAAI,SAAA,EAAU,iEAAA,EACZ,QAAA,EACH,CAAA,EACF,CAAA;AAAA,QAEJ,CAAA;AAAA,QACA,GAAG;AAAA,OACL;AAAA,MACA,UAAA,EAAY;AAAA,QACV,mBAAA,EAAqB,CAAC,IAAA,KACpB,IAAA,CAAK,eAAe,SAAA,EAAW,EAAE,KAAA,EAAO,OAAA,EAAS,CAAA;AAAA,QACnD,GAAG;AAAA,OACL;AAAA,MACA,aAAA;AAAA,MACA,SAAA;AAAA,MACA,eAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,SAAA;AAAA,EACA,GAAA;AAAA,EACA,SAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAG;AACL,CAAA,EAA2B;AACzB,EAAA,MAAM,oBAAoB,oBAAA,EAAqB;AAE/C,EAAA,MAAM,SAAA,GAAkB,aAA0B,IAAI,CAAA;AACtD,EAAA,MAAM,SAAA,GAAY,UAAU,SAAS,CAAA;AACrC,EAAA,MAAM,OAAA,GAAU,UAAU,OAAO,CAAA;AACjC,EAAA,MAAM,QAAA,GAAW,UAAU,QAAQ,CAAA;AAEnC,EAAM,gBAAU,MAAM;AACpB,IAAA,IAAI,SAAA,EAAW,SAAA,CAAU,OAAA,EAAS,KAAA,EAAM;AAAA,EAC1C,CAAA,EAAG,CAAC,SAAS,CAAC,CAAA;AAEd,EAAA,uBACE,IAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,GAAA,EAAK,SAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,u7BAAA;AAAA,QACA,iBAAA,CAAkB,GAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACA,sBAAA,EACE,SAAA,CAAU,UAAU,CAAA,IACpB,CAAC,SAAA,CAAU,aAAa,CAAA,IACxB,CAAC,SAAA,CAAU,WAAW,CAAA,IACtB,CAAC,UAAU,cAAc,CAAA;AAAA,MAE3B,eAAa,QAAA,IAAY,MAAA;AAAA,MACzB,UAAA,EAAU,GAAA,CAAI,IAAA,CAAK,kBAAA,EAAmB;AAAA,MACtC,gBAAA,EAAgB,UAAU,WAAW,CAAA;AAAA,MACrC,mBAAA,EAAmB,UAAU,cAAc,CAAA;AAAA,MAC3C,kBAAA,EAAkB,UAAU,aAAa,CAAA;AAAA,MACzC,cAAY,OAAA,IAAW,MAAA;AAAA,MACvB,IAAA,EAAK,QAAA;AAAA,MACJ,GAAG,KAAA;AAAA,MAEH,QAAA,EAAA;AAAA,QAAA,QAAA;AAAA,QAEA,OAAA,mBACC,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,iOAAA;AAAA,YACV,WAAA,EAAU;AAAA;AAAA,YAEV,QAAA,mBACF,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAY,MAAA;AAAA,YACZ,SAAA,EAAU,8OAAA;AAAA,YACV,WAAA,EAAU;AAAA;AAAA,SACZ,GACE;AAAA;AAAA;AAAA,GACN;AAEJ;AC/PO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC;AAAA,IACE,eAAA;AAAA,IACA,gBAAA;AAAA,IACA,uCAAA;AAAA,IACA,2DAAA;AAAA,IACA,6CAAA;AAAA,IACA,gDAAA;AAAA,IACA,MAAA,CAAO,GAAA,CAAA,yCAAA,CAAA;AAAA,IACP,MAAA,CAAO,GAAA,CAAA,6CAAA;AAAA,GACT;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,IAAA,EAAM;AAAA,QACJ,OAAA,EAAS,2DAAA;AAAA,QACT,EAAA,EAAI,sDAAA;AAAA,QACJ,EAAA,EAAI;AAAA;AACN,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,IAAA,EAAM;AAAA;AACR;AAEJ;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC;AAAA,IACE,MAAA;AAAA,IACA,eAAA;AAAA,IACA,iCAAA;AAAA,IACA,QAAA;AAAA,IACA,qBAAA;AAAA,IACA,UAAA;AAAA,IACA,+BAAA;AAAA,IACA,cAAA;AAAA,IACA,aAAA;AAAA,IACA,sDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,EAAA;AAAA,QACT,QAAA,EACE,4FAAA;AAAA,QACF,UAAA,EACE,4JAAA;AAAA,QACF,WAAA,EACE,0HAAA;AAAA,QACF,QAAA,EACE,oJAAA;AAAA,QACF,OAAA,EACE;AAAA;AACJ,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ;AAKO,IAAM,yBAAA,GAA4B,GAAA;AAAA,EACvC,CAAC,oBAAA,EAAsB,0BAAA,EAA4B,KAAA,EAAO,aAAa,CAAA;AAAA,EACvE;AAAA,IACE,UAAU,EAAC;AAAA,IACX,iBAAiB;AAAC;AAEtB;AAKO,IAAM,uBAAA,GAA0B,GAAA;AAAA,EACrC;AAAA,IACE,UAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,KAAA;AAAA,IACA,aAAA;AAAA,IACA,wDAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,cAAA,EAAgB;AAAA,QACd,IAAA,EAAM,0DAAA;AAAA,QACN,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,cAAA,EAAgB;AAAA;AAClB;AAEJ;AAKO,IAAM,wBAAwB,GAAA,CAAI;AAAA,EACvC,WAAA;AAAA,EACA,wBAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,iCAAiC,GAAA,CAAI;AAAA,EAChD,uCAAA;AAAA,EACA,cAAA;AAAA,EACA,YAAA;AAAA,EACA,uDAAA;AAAA,EACA,mDAAA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,0BAAA,GAA6B,GAAA,CAAI,CAAC,cAAA,EAAgB,WAAW,CAAC;AAEpE,IAAM,2BAAA,GAA8B,GAAA,CAAI,CAAC,cAAc,CAAC;AAExD,IAAM,wBAAA,GAA2B,GAAA,CAAI,CAAC,cAAA,EAAgB,WAAW,CAAC;AAKlE,IAAM,0BAA0B,GAAA,CAAI;AAAA,EACzC,uBAAA;AAAA,EACA;AACF,CAAC;AAKM,IAAM,2BAA2B,GAAA,CAAI;AAAA,EAC1C,uBAAA;AAAA,EACA;AACF,CAAC","file":"chunk-R4UOT76L.js","sourcesContent":["import type {\n CalendarDayButtonProps,\n CalendarProps,\n} from \"./Calendar.types\"\n\nimport { isSameDay } from \"date-fns\"\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\"\nimport * as React from \"react\"\nimport { DayPicker, getDefaultClassNames } from \"react-day-picker\"\n\nimport { cn } from \"../../../lib/utils\"\nimport { buttonVariants } from \"../../primitives/Button\"\n\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n formatters,\n components,\n activeDates,\n modifiers: propModifiers,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames()\n\n // Convert activeDates to a modifier function\n const isActiveDate = React.useCallback(\n (date: Date): boolean => {\n if (!activeDates) return false\n if (Array.isArray(activeDates)) {\n return activeDates.some((activeDate) => isSameDay(activeDate, date))\n }\n return activeDates(date)\n },\n [activeDates]\n )\n\n // Merge activeDates modifier with any prop modifiers\n const modifiers = React.useMemo(\n () => ({\n ...propModifiers,\n active: activeDates ? isActiveDate : undefined,\n }),\n [propModifiers, activeDates, isActiveDate]\n )\n\n return (\n <DayPicker\n className={cn(\n \"bg-background group/calendar p-[var(--calendar-container-padding)] [--cell-size:var(--calendar-cell-size)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n classNames={{\n root: cn(\"w-fit\", defaultClassNames.root),\n months: cn(\n \"flex gap-4 flex-col md:flex-row relative\",\n defaultClassNames.months\n ),\n month: cn(\"flex flex-col w-full gap-4\", defaultClassNames.month),\n nav: cn(\n \"flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"size-(--cell-size) aria-disabled:opacity-50 p-0 select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"absolute bg-popover inset-0 opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"select-none font-medium\",\n captionLayout === \"label\"\n ? \"text-sm\"\n : \"rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"w-full border-collapse\",\n weekdays: cn(\"flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"text-muted-foreground rounded-md flex-1 font-normal text-[length:var(--calendar-weekday-font-size)] select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"flex w-full mt-[var(--calendar-week-gap)]\", defaultClassNames.week),\n week_number_header: cn(\n \"select-none w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"text-[length:var(--calendar-weekday-font-size)] select-none text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"relative w-full h-full p-0 text-center [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none\",\n props.showWeekNumber\n ? \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n \"rounded-l-md bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\"rounded-none\", defaultClassNames.range_middle),\n range_end: cn(\"rounded-r-md bg-accent\", defaultClassNames.range_end),\n today: cn(\n \"bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"text-muted-foreground aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"text-muted-foreground opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n ref={rootRef}\n className={cn(className)}\n data-slot=\"calendar\"\n {...props}\n />\n )\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"size-4\", className)} {...props} />\n )\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"size-4\", className)}\n {...props}\n />\n )\n }\n\n return (\n <ChevronDownIcon className={cn(\"size-4\", className)} {...props} />\n )\n },\n DayButton: CalendarDayButton,\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"flex size-(--cell-size) items-center justify-center text-center\">\n {children}\n </div>\n </td>\n )\n },\n ...components,\n }}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n captionLayout={captionLayout}\n modifiers={modifiers}\n showOutsideDays={showOutsideDays}\n {...props}\n />\n )\n}\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n children,\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames()\n\n const buttonRef = React.useRef<HTMLButtonElement>(null)\n const isFocused = modifiers[\"focused\"]\n const isToday = modifiers[\"today\"]\n const isActive = modifiers[\"active\"]\n\n React.useEffect(() => {\n if (isFocused) buttonRef.current?.focus()\n }, [isFocused])\n\n return (\n <button\n ref={buttonRef}\n className={cn(\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[selected-single=true]:rounded-md data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col items-center justify-center gap-0.5 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70\",\n defaultClassNames.day,\n className\n )}\n data-selected-single={\n modifiers[\"selected\"] &&\n !modifiers[\"range_start\"] &&\n !modifiers[\"range_end\"] &&\n !modifiers[\"range_middle\"]\n }\n data-active={isActive ?? undefined}\n data-day={day.date.toLocaleDateString()}\n data-range-end={modifiers[\"range_end\"]}\n data-range-middle={modifiers[\"range_middle\"]}\n data-range-start={modifiers[\"range_start\"]}\n data-today={isToday ?? undefined}\n type=\"button\"\n {...props}\n >\n {children}\n {/* Show today indicator (priority) or active indicator */}\n {isToday ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-today-indicator-size,4px)] rounded-full bg-primary [[data-selected-single=true]>&]:bg-primary-foreground [[data-range-start=true]>&]:bg-primary-foreground [[data-range-end=true]>&]:bg-primary-foreground\"\n data-slot=\"today-indicator\"\n />\n ) : isActive ? (\n <span\n aria-hidden=\"true\"\n className=\"size-[var(--calendar-active-indicator-size,4px)] rounded-full bg-primary/60 [[data-selected-single=true]>&]:bg-primary-foreground/60 [[data-range-start=true]>&]:bg-primary-foreground/60 [[data-range-end=true]>&]:bg-primary-foreground/60\"\n data-slot=\"active-indicator\"\n />\n ) : null}\n </button>\n )\n}\n\nexport { Calendar, CalendarDayButton }\n","// Calendar/Calendar.variants.ts\nimport { cva } from \"class-variance-authority\"\n\n/**\n * Calendar container styles\n */\nexport const calendarContainerVariants = cva(\n [\n \"bg-background\",\n \"group/calendar\",\n \"p-[var(--calendar-container-padding)]\",\n \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n \"[[data-slot=card-content]_&]:bg-transparent\",\n \"[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n ],\n {\n variants: {\n size: {\n default: \"[--cell-size:var(--calendar-container-cell-size-default)]\",\n sm: \"[--cell-size:var(--calendar-container-cell-size-sm)]\",\n lg: \"[--cell-size:var(--calendar-container-cell-size-lg)]\",\n },\n },\n defaultVariants: {\n size: \"default\",\n },\n }\n)\n\n/**\n * Calendar day button styles\n */\nexport const calendarDayButtonVariants = cva(\n [\n \"flex\",\n \"aspect-square\",\n \"size-[var(--calendar-day-size)]\",\n \"w-full\",\n \"min-w-(--cell-size)\",\n \"flex-col\",\n \"gap-[var(--calendar-day-gap)]\",\n \"leading-none\",\n \"font-normal\",\n \"[&>span]:text-[length:var(--calendar-day-font-size)]\",\n \"[&>span]:opacity-70\",\n ],\n {\n variants: {\n state: {\n default: \"\",\n selected:\n \"data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground\",\n rangeStart:\n \"data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md\",\n rangeMiddle:\n \"data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-middle=true]:rounded-none\",\n rangeEnd:\n \"data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md\",\n focused:\n \"group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px]\",\n },\n },\n defaultVariants: {\n state: \"default\",\n },\n }\n)\n\n/**\n * Navigation button styles (uses Button variants)\n */\nexport const calendarNavButtonVariants = cva(\n [\"size-(--cell-size)\", \"aria-disabled:opacity-50\", \"p-0\", \"select-none\"],\n {\n variants: {},\n defaultVariants: {},\n }\n)\n\n/**\n * Calendar day cell styles\n */\nexport const calendarDayCellVariants = cva(\n [\n \"relative\",\n \"w-full\",\n \"h-full\",\n \"p-0\",\n \"text-center\",\n \"[&:last-child[data-selected=true]_button]:rounded-r-md\",\n \"aspect-square\",\n \"select-none\",\n ],\n {\n variants: {\n showWeekNumber: {\n true: \"[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\",\n false: \"[&:first-child[data-selected=true]_button]:rounded-l-md\",\n },\n },\n defaultVariants: {\n showWeekNumber: false,\n },\n }\n)\n\n/**\n * Today cell styles\n */\nexport const calendarTodayVariants = cva([\n \"bg-accent\",\n \"text-accent-foreground\",\n \"rounded-md\",\n \"data-[selected=true]:rounded-none\",\n])\n\n/**\n * Today indicator dot styles\n */\nexport const calendarTodayIndicatorVariants = cva([\n \"size-[var(--calendar-indicator-size)]\",\n \"rounded-full\",\n \"bg-primary\",\n \"[[data-selected-single=true]>&]:bg-primary-foreground\",\n \"[[data-range-start=true]>&]:bg-primary-foreground\",\n \"[[data-range-end=true]>&]:bg-primary-foreground\",\n])\n\n/**\n * Range styles\n */\nexport const calendarRangeStartVariants = cva([\"rounded-l-md\", \"bg-accent\"])\n\nexport const calendarRangeMiddleVariants = cva([\"rounded-none\"])\n\nexport const calendarRangeEndVariants = cva([\"rounded-r-md\", \"bg-accent\"])\n\n/**\n * Outside days styles\n */\nexport const calendarOutsideVariants = cva([\n \"text-muted-foreground\",\n \"aria-selected:text-muted-foreground\",\n])\n\n/**\n * Disabled days styles\n */\nexport const calendarDisabledVariants = cva([\n \"text-muted-foreground\",\n \"opacity-50\",\n])\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ScrollArea } from './chunk-CNRV2IGH.js';
|
|
2
|
-
import { Calendar } from './chunk-
|
|
2
|
+
import { Calendar } from './chunk-R4UOT76L.js';
|
|
3
3
|
import { Popover, PopoverTrigger, PopoverContent } from './chunk-AFCSDND5.js';
|
|
4
|
-
import { Button } from './chunk-
|
|
4
|
+
import { Button } from './chunk-ONQCNOLU.js';
|
|
5
5
|
import { cn } from './chunk-HRNDJU7D.js';
|
|
6
6
|
import { format, startOfDay, isBefore, isAfter, setMinutes, setHours } from 'date-fns';
|
|
7
7
|
import { XIcon, CalendarIcon } from 'lucide-react';
|
|
@@ -456,5 +456,5 @@ function DatePicker({
|
|
|
456
456
|
}
|
|
457
457
|
|
|
458
458
|
export { DatePicker, datePickerTriggerVariants };
|
|
459
|
-
//# sourceMappingURL=chunk-
|
|
460
|
-
//# sourceMappingURL=chunk-
|
|
459
|
+
//# sourceMappingURL=chunk-RVUO7SDG.js.map
|
|
460
|
+
//# sourceMappingURL=chunk-RVUO7SDG.js.map
|