@senitix/ui 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/avatar-C0aVNCG9.cjs +2 -0
- package/dist/avatar-C0aVNCG9.cjs.map +1 -0
- package/dist/avatar-CN6wcrqY.js +288 -0
- package/dist/avatar-CN6wcrqY.js.map +1 -0
- package/dist/calendar-BFWc4IB7.js +1182 -0
- package/dist/calendar-BFWc4IB7.js.map +1 -0
- package/dist/calendar-BUm7YrNf.cjs +2 -0
- package/dist/calendar-BUm7YrNf.cjs.map +1 -0
- package/dist/calendar-ChJkFXXr.js +11 -0
- package/dist/calendar-ChJkFXXr.js.map +1 -0
- package/dist/calendar-SwL5isYC.cjs +2 -0
- package/dist/calendar-SwL5isYC.cjs.map +1 -0
- package/dist/card-K4fxyYwE.js +51 -0
- package/dist/card-K4fxyYwE.js.map +1 -0
- package/dist/card-tMkUxpmW.cjs +2 -0
- package/dist/card-tMkUxpmW.cjs.map +1 -0
- package/dist/checkbox-CpOq5hkT.js +289 -0
- package/dist/checkbox-CpOq5hkT.js.map +1 -0
- package/dist/checkbox-D7-LQyCl.cjs +2 -0
- package/dist/checkbox-D7-LQyCl.cjs.map +1 -0
- package/dist/chevron-down-DHdXqOqK.cjs +2 -0
- package/dist/chevron-down-DHdXqOqK.cjs.map +1 -0
- package/dist/chevron-down-DJ1_YIFu.js +8 -0
- package/dist/chevron-down-DJ1_YIFu.js.map +1 -0
- package/dist/chevron-right-B3bovvh0.js +8 -0
- package/dist/chevron-right-B3bovvh0.js.map +1 -0
- package/dist/chevron-right-Dvyd11q0.cjs +2 -0
- package/dist/chevron-right-Dvyd11q0.cjs.map +1 -0
- package/dist/chevron-up-B9fuiZhc.cjs +2 -0
- package/dist/chevron-up-B9fuiZhc.cjs.map +1 -0
- package/dist/chevron-up-CGtXOr51.js +6 -0
- package/dist/chevron-up-CGtXOr51.js.map +1 -0
- package/dist/components/charts/index.cjs.js +2 -0
- package/dist/components/charts/index.cjs.js.map +1 -0
- package/dist/components/charts/index.es.js +12 -0
- package/dist/components/charts/index.es.js.map +1 -0
- package/dist/components/data-display/index.cjs.js +2 -0
- package/dist/components/data-display/index.cjs.js.map +1 -0
- package/dist/components/data-display/index.es.js +25 -0
- package/dist/components/data-display/index.es.js.map +1 -0
- package/dist/components/dnd/index.cjs.js +2 -0
- package/dist/components/dnd/index.cjs.js.map +1 -0
- package/dist/components/dnd/index.es.js +9 -0
- package/dist/components/dnd/index.es.js.map +1 -0
- package/dist/components/feedback/index.cjs.js +2 -0
- package/dist/components/feedback/index.cjs.js.map +1 -0
- package/dist/components/feedback/index.es.js +16 -0
- package/dist/components/feedback/index.es.js.map +1 -0
- package/dist/components/forms/index.cjs.js +2 -0
- package/dist/components/forms/index.cjs.js.map +1 -0
- package/dist/components/forms/index.es.js +27 -0
- package/dist/components/forms/index.es.js.map +1 -0
- package/dist/components/layouts/index.cjs.js +2 -0
- package/dist/components/layouts/index.cjs.js.map +1 -0
- package/dist/components/layouts/index.es.js +25 -0
- package/dist/components/layouts/index.es.js.map +1 -0
- package/dist/components/navigation/index.cjs.js +2 -0
- package/dist/components/navigation/index.cjs.js.map +1 -0
- package/dist/components/navigation/index.es.js +42 -0
- package/dist/components/navigation/index.es.js.map +1 -0
- package/dist/components/ui/index.cjs.js +2 -0
- package/dist/components/ui/index.cjs.js.map +1 -0
- package/dist/components/ui/index.es.js +165 -0
- package/dist/components/ui/index.es.js.map +1 -0
- package/dist/createLucideIcon-BbeNo6vq.js +56 -0
- package/dist/createLucideIcon-BbeNo6vq.js.map +1 -0
- package/dist/createLucideIcon-i5GEhNMV.cjs +2 -0
- package/dist/createLucideIcon-i5GEhNMV.cjs.map +1 -0
- package/dist/ellipsis-BW2gWki8.cjs +2 -0
- package/dist/ellipsis-BW2gWki8.cjs.map +1 -0
- package/dist/ellipsis-CiKEaUNP.js +10 -0
- package/dist/ellipsis-CiKEaUNP.js.map +1 -0
- package/dist/file-V_hhCUhr.cjs +2 -0
- package/dist/file-V_hhCUhr.cjs.map +1 -0
- package/dist/file-wzTXnWqz.js +9 -0
- package/dist/file-wzTXnWqz.js.map +1 -0
- package/dist/filter-tags-DjUaNXHR.cjs +5 -0
- package/dist/filter-tags-DjUaNXHR.cjs.map +1 -0
- package/dist/filter-tags-i_I8qV1N.js +2658 -0
- package/dist/filter-tags-i_I8qV1N.js.map +1 -0
- package/dist/full-calendar-7ac2FFU6.js +3518 -0
- package/dist/full-calendar-7ac2FFU6.js.map +1 -0
- package/dist/full-calendar-Cpeh5xMP.cjs +8 -0
- package/dist/full-calendar-Cpeh5xMP.cjs.map +1 -0
- package/dist/global-search-UNXjoFlI.cjs +2 -0
- package/dist/global-search-UNXjoFlI.cjs.map +1 -0
- package/dist/global-search-h1rVbP2q.js +1188 -0
- package/dist/global-search-h1rVbP2q.js.map +1 -0
- package/dist/hooks/index.cjs.js +2 -0
- package/dist/hooks/index.cjs.js.map +1 -0
- package/dist/hooks/index.es.js +13 -0
- package/dist/hooks/index.es.js.map +1 -0
- package/dist/index-Co9o9StL.js +33 -0
- package/dist/index-Co9o9StL.js.map +1 -0
- package/dist/index-CwJPJKOE.js +2278 -0
- package/dist/index-CwJPJKOE.js.map +1 -0
- package/dist/index-CzVK9Zyb.cjs +6 -0
- package/dist/index-CzVK9Zyb.cjs.map +1 -0
- package/dist/index-l828OqQN.js +288 -0
- package/dist/index-l828OqQN.js.map +1 -0
- package/dist/index-lGzB9daF.cjs +2 -0
- package/dist/index-lGzB9daF.cjs.map +1 -0
- package/dist/index-lT9bLt9X.cjs +2 -0
- package/dist/index-lT9bLt9X.cjs.map +1 -0
- package/dist/index.cjs.js +2 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.es.js +332 -0
- package/dist/index.es.js.map +1 -0
- package/dist/input-CZrckPLk.cjs +42 -0
- package/dist/input-CZrckPLk.cjs.map +1 -0
- package/dist/input-D4AoiWxo.js +3629 -0
- package/dist/input-D4AoiWxo.js.map +1 -0
- package/dist/locale-provider-DHMwuneF.cjs +2 -0
- package/dist/locale-provider-DHMwuneF.cjs.map +1 -0
- package/dist/locale-provider-DanG6RRG.js +1012 -0
- package/dist/locale-provider-DanG6RRG.js.map +1 -0
- package/dist/locale-selector-Ppe0KTi-.cjs +2 -0
- package/dist/locale-selector-Ppe0KTi-.cjs.map +1 -0
- package/dist/locale-selector-xn2GpdP9.js +1745 -0
- package/dist/locale-selector-xn2GpdP9.js.map +1 -0
- package/dist/minus-BXBFZSZs.cjs +2 -0
- package/dist/minus-BXBFZSZs.cjs.map +1 -0
- package/dist/minus-DvlYtl96.js +6 -0
- package/dist/minus-DvlYtl96.js.map +1 -0
- package/dist/multi-container-C2UpSw5f.js +731 -0
- package/dist/multi-container-C2UpSw5f.js.map +1 -0
- package/dist/multi-container-DMKL8c9B.cjs +2 -0
- package/dist/multi-container-DMKL8c9B.cjs.map +1 -0
- package/dist/pipeline-By5_8AFg.cjs +2 -0
- package/dist/pipeline-By5_8AFg.cjs.map +1 -0
- package/dist/pipeline-D-QNSU0U.js +1036 -0
- package/dist/pipeline-D-QNSU0U.js.map +1 -0
- package/dist/plus-8wKRkVu-.cjs +2 -0
- package/dist/plus-8wKRkVu-.cjs.map +1 -0
- package/dist/plus-CJD68KQD.js +9 -0
- package/dist/plus-CJD68KQD.js.map +1 -0
- package/dist/popover-4V4sGe1U.js +765 -0
- package/dist/popover-4V4sGe1U.js.map +1 -0
- package/dist/popover-ivh-plLc.cjs +2 -0
- package/dist/popover-ivh-plLc.cjs.map +1 -0
- package/dist/progress-CFnuLqnS.cjs +7 -0
- package/dist/progress-CFnuLqnS.cjs.map +1 -0
- package/dist/progress-D5AsrWa6.js +222 -0
- package/dist/progress-D5AsrWa6.js.map +1 -0
- package/dist/providers/index.cjs.js +2 -0
- package/dist/providers/index.cjs.js.map +1 -0
- package/dist/providers/index.es.js +9 -0
- package/dist/providers/index.es.js.map +1 -0
- package/dist/scroll-area-DQeqDp3Y.js +952 -0
- package/dist/scroll-area-DQeqDp3Y.js.map +1 -0
- package/dist/scroll-area-DYOiJMXh.cjs +2 -0
- package/dist/scroll-area-DYOiJMXh.cjs.map +1 -0
- package/dist/select-C1rNBi6c.js +974 -0
- package/dist/select-C1rNBi6c.js.map +1 -0
- package/dist/select-m-Mqwxu3.cjs +2 -0
- package/dist/select-m-Mqwxu3.cjs.map +1 -0
- package/dist/separator-DBUivkHq.cjs +2 -0
- package/dist/separator-DBUivkHq.cjs.map +1 -0
- package/dist/separator-DsfoJx-2.js +395 -0
- package/dist/separator-DsfoJx-2.js.map +1 -0
- package/dist/sheet-BVWCpq7E.js +84 -0
- package/dist/sheet-BVWCpq7E.js.map +1 -0
- package/dist/sheet-mKiFLVnK.cjs +2 -0
- package/dist/sheet-mKiFLVnK.cjs.map +1 -0
- package/dist/skeleton-BSwwYaQU.cjs +2 -0
- package/dist/skeleton-BSwwYaQU.cjs.map +1 -0
- package/dist/skeleton-BmGbfJw3.js +9 -0
- package/dist/skeleton-BmGbfJw3.js.map +1 -0
- package/dist/sortable.esm-Blhf_jh1.js +3391 -0
- package/dist/sortable.esm-Blhf_jh1.js.map +1 -0
- package/dist/sortable.esm-DcQYlXi3.cjs +6 -0
- package/dist/sortable.esm-DcQYlXi3.cjs.map +1 -0
- package/dist/sparkline-chart-Da-ehDGv.js +21082 -0
- package/dist/sparkline-chart-Da-ehDGv.js.map +1 -0
- package/dist/sparkline-chart-ca3uTzVK.cjs +68 -0
- package/dist/sparkline-chart-ca3uTzVK.cjs.map +1 -0
- package/dist/trending-up-D3Nfrhi3.cjs +2 -0
- package/dist/trending-up-D3Nfrhi3.cjs.map +1 -0
- package/dist/trending-up-DPwlYzQb.js +9 -0
- package/dist/trending-up-DPwlYzQb.js.map +1 -0
- package/dist/ui.css +1 -0
- package/dist/use-formatters-d97RVcmg.cjs +2 -0
- package/dist/use-formatters-d97RVcmg.cjs.map +1 -0
- package/dist/use-formatters-l1_2c8z0.js +6682 -0
- package/dist/use-formatters-l1_2c8z0.js.map +1 -0
- package/dist/use-local-storage-BjlrKzE-.js +42 -0
- package/dist/use-local-storage-BjlrKzE-.js.map +1 -0
- package/dist/use-local-storage-q-1odzIu.cjs +2 -0
- package/dist/use-local-storage-q-1odzIu.cjs.map +1 -0
- package/dist/use-mobile-C-LMK4T8.js +15 -0
- package/dist/use-mobile-C-LMK4T8.js.map +1 -0
- package/dist/use-mobile-DY7TJ5lx.cjs +2 -0
- package/dist/use-mobile-DY7TJ5lx.cjs.map +1 -0
- package/dist/use-toast-DG2qdYhl.js +97 -0
- package/dist/use-toast-DG2qdYhl.js.map +1 -0
- package/dist/use-toast-DxZJ8uUm.cjs +2 -0
- package/dist/use-toast-DxZJ8uUm.cjs.map +1 -0
- package/dist/utils/index.cjs.js +2 -0
- package/dist/utils/index.cjs.js.map +1 -0
- package/dist/utils/index.es.js +5 -0
- package/dist/utils/index.es.js.map +1 -0
- package/dist/welcome-card-CPolYl1D.cjs +2 -0
- package/dist/welcome-card-CPolYl1D.cjs.map +1 -0
- package/dist/welcome-card-CxMJZ8bv.js +963 -0
- package/dist/welcome-card-CxMJZ8bv.js.map +1 -0
- package/package.json +179 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-By5_8AFg.cjs","sources":["../node_modules/lucide-react/dist/esm/icons/filter.js","../node_modules/lucide-react/dist/esm/icons/grip-vertical.js","../node_modules/lucide-react/dist/esm/icons/layout-grid.js","../node_modules/lucide-react/dist/esm/icons/list.js","../node_modules/lucide-react/dist/esm/icons/table-2.js","../src/components/layouts/app-shell.tsx","../src/components/layouts/page-header.tsx","../src/components/layouts/dashboard-layout.tsx","../src/components/layouts/pipeline.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Filter = createLucideIcon(\"Filter\", [\n [\"polygon\", { points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\", key: \"1yg77f\" }]\n]);\n\nexport { Filter as default };\n//# sourceMappingURL=filter.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GripVertical = createLucideIcon(\"GripVertical\", [\n [\"circle\", { cx: \"9\", cy: \"12\", r: \"1\", key: \"1vctgf\" }],\n [\"circle\", { cx: \"9\", cy: \"5\", r: \"1\", key: \"hp0tcf\" }],\n [\"circle\", { cx: \"9\", cy: \"19\", r: \"1\", key: \"fkjjf6\" }],\n [\"circle\", { cx: \"15\", cy: \"12\", r: \"1\", key: \"1tmaij\" }],\n [\"circle\", { cx: \"15\", cy: \"5\", r: \"1\", key: \"19l28e\" }],\n [\"circle\", { cx: \"15\", cy: \"19\", r: \"1\", key: \"f4zoj3\" }]\n]);\n\nexport { GripVertical as default };\n//# sourceMappingURL=grip-vertical.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst LayoutGrid = createLucideIcon(\"LayoutGrid\", [\n [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"3\", rx: \"1\", key: \"1g98yp\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"3\", rx: \"1\", key: \"6d4xhi\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"14\", y: \"14\", rx: \"1\", key: \"nxv5o0\" }],\n [\"rect\", { width: \"7\", height: \"7\", x: \"3\", y: \"14\", rx: \"1\", key: \"1bb6yr\" }]\n]);\n\nexport { LayoutGrid as default };\n//# sourceMappingURL=layout-grid.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst List = createLucideIcon(\"List\", [\n [\"line\", { x1: \"8\", x2: \"21\", y1: \"6\", y2: \"6\", key: \"7ey8pc\" }],\n [\"line\", { x1: \"8\", x2: \"21\", y1: \"12\", y2: \"12\", key: \"rjfblc\" }],\n [\"line\", { x1: \"8\", x2: \"21\", y1: \"18\", y2: \"18\", key: \"c3b1m8\" }],\n [\"line\", { x1: \"3\", x2: \"3.01\", y1: \"6\", y2: \"6\", key: \"1g7gq3\" }],\n [\"line\", { x1: \"3\", x2: \"3.01\", y1: \"12\", y2: \"12\", key: \"1pjlvk\" }],\n [\"line\", { x1: \"3\", x2: \"3.01\", y1: \"18\", y2: \"18\", key: \"28t2mc\" }]\n]);\n\nexport { List as default };\n//# sourceMappingURL=list.js.map\n","/**\n * @license lucide-react v0.441.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Table2 = createLucideIcon(\"Table2\", [\n [\n \"path\",\n {\n d: \"M9 3H5a2 2 0 0 0-2 2v4m6-6h10a2 2 0 0 1 2 2v4M9 3v18m0 0h10a2 2 0 0 0 2-2V9M9 21H5a2 2 0 0 1-2-2V9m0 0h18\",\n key: \"gugj83\"\n }\n ]\n]);\n\nexport { Table2 as default };\n//# sourceMappingURL=table-2.js.map\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n}\n\nconst AppShell = React.forwardRef<HTMLDivElement, AppShellProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex min-h-screen w-full flex-col bg-background', className)}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nAppShell.displayName = 'AppShell'\n\nconst AppShellHeader = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'sticky top-0 z-50 flex h-16 items-center gap-4 border-b bg-background px-4 md:px-6',\n className\n )}\n {...props}\n />\n )\n }\n)\nAppShellHeader.displayName = 'AppShellHeader'\n\nconst AppShellMain = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn('flex flex-1 flex-col gap-4 p-4 md:gap-8 md:p-6', className)}\n {...props}\n />\n )\n }\n)\nAppShellMain.displayName = 'AppShellMain'\n\nconst AppShellFooter = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => {\n return (\n <footer\n ref={ref}\n className={cn('border-t bg-background px-4 py-6 md:px-6', className)}\n {...props}\n />\n )\n }\n)\nAppShellFooter.displayName = 'AppShellFooter'\n\nexport { AppShell, AppShellHeader, AppShellMain, AppShellFooter }\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\n\nexport interface PageHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n heading: string\n description?: string\n actions?: React.ReactNode\n}\n\nconst PageHeader = React.forwardRef<HTMLDivElement, PageHeaderProps>(\n ({ className, heading, description, actions, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('flex flex-col gap-4 md:flex-row md:items-center md:justify-between', className)}\n {...props}\n >\n <div className=\"space-y-1\">\n <h1 className=\"text-2xl font-bold tracking-tight md:text-3xl\">{heading}</h1>\n {description && <p className=\"text-muted-foreground\">{description}</p>}\n </div>\n {actions && <div className=\"flex items-center gap-2\">{actions}</div>}\n {children}\n </div>\n )\n }\n)\nPageHeader.displayName = 'PageHeader'\n\nexport { PageHeader }\n","import * as React from 'react'\nimport { cn } from '@/utils/cn'\nimport { useIsMobile } from '@/hooks/use-mobile'\nimport { Sheet, SheetContent } from '@/components/ui/sheet'\n\ntype DashboardLayoutContext = {\n sidebarOpen: boolean\n setSidebarOpen: (open: boolean) => void\n sidebarCollapsed: boolean\n setSidebarCollapsed: (collapsed: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst DashboardLayoutContext = React.createContext<DashboardLayoutContext | null>(null)\n\nexport function useDashboardLayout() {\n const context = React.useContext(DashboardLayoutContext)\n if (!context) {\n throw new Error('useDashboardLayout must be used within a DashboardLayout.')\n }\n return context\n}\n\nexport interface DashboardLayoutProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n defaultSidebarOpen?: boolean\n defaultSidebarCollapsed?: boolean\n sidebarWidth?: string\n sidebarCollapsedWidth?: string\n}\n\nconst DashboardLayout = React.forwardRef<HTMLDivElement, DashboardLayoutProps>(\n (\n {\n className,\n children,\n defaultSidebarOpen = true,\n defaultSidebarCollapsed = false,\n sidebarWidth = '16rem',\n sidebarCollapsedWidth = '4rem',\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile()\n const [sidebarOpen, setSidebarOpen] = React.useState(defaultSidebarOpen)\n const [sidebarCollapsed, setSidebarCollapsed] = React.useState(defaultSidebarCollapsed)\n\n const toggleSidebar = React.useCallback(() => {\n if (isMobile) {\n setSidebarOpen((prev) => !prev)\n } else {\n setSidebarCollapsed((prev) => !prev)\n }\n }, [isMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'b' && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n const contextValue = React.useMemo<DashboardLayoutContext>(\n () => ({\n sidebarOpen,\n setSidebarOpen,\n sidebarCollapsed,\n setSidebarCollapsed,\n isMobile,\n toggleSidebar,\n }),\n [sidebarOpen, sidebarCollapsed, isMobile, toggleSidebar]\n )\n\n return (\n <DashboardLayoutContext.Provider value={contextValue}>\n <div\n ref={ref}\n style={\n {\n '--sidebar-width': sidebarWidth,\n '--sidebar-collapsed-width': sidebarCollapsedWidth,\n } as React.CSSProperties\n }\n className={cn('flex min-h-screen w-full bg-background', className)}\n {...props}\n >\n {children}\n </div>\n </DashboardLayoutContext.Provider>\n )\n }\n)\nDashboardLayout.displayName = 'DashboardLayout'\n\nexport interface DashboardSidebarProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n}\n\nconst DashboardSidebar = React.forwardRef<HTMLElement, DashboardSidebarProps>(\n ({ className, children, ...props }, ref) => {\n const { sidebarOpen, setSidebarOpen, sidebarCollapsed, isMobile } = useDashboardLayout()\n\n if (isMobile) {\n return (\n <Sheet open={sidebarOpen} onOpenChange={setSidebarOpen}>\n <SheetContent\n side=\"left\"\n className=\"w-[var(--sidebar-width)] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n >\n <aside className=\"flex h-full w-full flex-col\">{children}</aside>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <aside\n ref={ref}\n data-collapsed={sidebarCollapsed}\n className={cn(\n 'fixed inset-y-0 left-0 z-30 flex h-screen flex-col border-r bg-sidebar text-sidebar-foreground transition-[width] duration-200 ease-in-out',\n sidebarCollapsed ? 'w-[var(--sidebar-collapsed-width)]' : 'w-[var(--sidebar-width)]',\n className\n )}\n {...props}\n >\n {children}\n </aside>\n )\n }\n)\nDashboardSidebar.displayName = 'DashboardSidebar'\n\nexport interface DashboardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n}\n\nconst DashboardContent = React.forwardRef<HTMLDivElement, DashboardContentProps>(\n ({ className, children, ...props }, ref) => {\n const { sidebarCollapsed, isMobile } = useDashboardLayout()\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-1 flex-col transition-[margin-left] duration-200 ease-in-out',\n !isMobile && (sidebarCollapsed ? 'ml-[var(--sidebar-collapsed-width)]' : 'ml-[var(--sidebar-width)]'),\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n)\nDashboardContent.displayName = 'DashboardContent'\n\nexport interface DashboardHeaderProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n}\n\nconst DashboardHeader = React.forwardRef<HTMLElement, DashboardHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'sticky top-0 z-20 flex h-16 items-center gap-4 border-b bg-background px-4 md:px-6',\n className\n )}\n {...props}\n >\n {children}\n </header>\n )\n }\n)\nDashboardHeader.displayName = 'DashboardHeader'\n\nexport interface DashboardMainProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n}\n\nconst DashboardMain = React.forwardRef<HTMLElement, DashboardMainProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn('flex-1 overflow-auto p-4 md:p-6', className)}\n {...props}\n >\n {children}\n </main>\n )\n }\n)\nDashboardMain.displayName = 'DashboardMain'\n\nexport interface DashboardFooterProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n}\n\nconst DashboardFooter = React.forwardRef<HTMLElement, DashboardFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <footer\n ref={ref}\n className={cn('border-t bg-background px-4 py-4 md:px-6', className)}\n {...props}\n >\n {children}\n </footer>\n )\n }\n)\nDashboardFooter.displayName = 'DashboardFooter'\n\nexport {\n DashboardLayout,\n DashboardSidebar,\n DashboardContent,\n DashboardHeader,\n DashboardMain,\n DashboardFooter,\n}\n","import * as React from 'react'\nimport {\n LayoutGrid,\n List,\n Table2,\n Calendar,\n Filter,\n Plus,\n GripVertical,\n MoreHorizontal,\n Search,\n} from 'lucide-react'\nimport {\n DndContext,\n DragOverlay,\n closestCorners,\n useSensor,\n useSensors,\n PointerSensor,\n KeyboardSensor,\n type DragStartEvent,\n type DragEndEvent,\n type DragOverEvent,\n} from '@dnd-kit/core'\nimport {\n SortableContext,\n useSortable,\n verticalListSortingStrategy,\n sortableKeyboardCoordinates,\n} from '@dnd-kit/sortable'\nimport { CSS } from '@dnd-kit/utilities'\nimport { cn } from '@/utils/cn'\nimport { Button } from '@/components/ui/button'\nimport { Input } from '@/components/ui/input'\nimport { Badge } from '@/components/ui/badge'\nimport { ScrollArea, ScrollBar } from '@/components/ui/scroll-area'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu'\nimport { Card, CardContent } from '@/components/ui/card'\nimport { Checkbox } from '@/components/ui/checkbox'\nimport { useFormatters } from '@/hooks/use-formatters'\n\n// Types\nexport type PipelineView = 'kanban' | 'list' | 'table' | 'timeline'\n\nexport interface PipelineStage {\n id: string\n name: string\n color?: string\n order: number\n}\n\nexport interface PipelineItem {\n id: string\n title: string\n stageId: string\n value?: number\n probability?: number\n owner?: {\n name: string\n avatar?: string\n }\n company?: string\n dueDate?: Date | string\n priority?: 'low' | 'medium' | 'high'\n tags?: string[]\n [key: string]: unknown\n}\n\nexport interface PipelineContextValue {\n view: PipelineView\n setView: (view: PipelineView) => void\n stages: PipelineStage[]\n items: PipelineItem[]\n selectedItems: string[]\n setSelectedItems: (ids: string[]) => void\n onItemMove?: (itemId: string, fromStageId: string, toStageId: string) => void\n onItemClick?: (item: PipelineItem) => void\n onItemAdd?: (stageId: string) => void\n onItemEdit?: (item: PipelineItem) => void\n onItemDelete?: (itemId: string) => void\n searchQuery: string\n setSearchQuery: (query: string) => void\n groupBy?: string\n setGroupBy?: (field: string) => void\n}\n\nconst PipelineContext = React.createContext<PipelineContextValue | null>(null)\n\nexport function usePipeline() {\n const context = React.useContext(PipelineContext)\n if (!context) {\n throw new Error('usePipeline must be used within a Pipeline component')\n }\n return context\n}\n\n// Main Pipeline Component\nexport interface PipelineProps extends React.HTMLAttributes<HTMLDivElement> {\n stages: PipelineStage[]\n items: PipelineItem[]\n defaultView?: PipelineView\n view?: PipelineView\n onViewChange?: (view: PipelineView) => void\n onItemMove?: (itemId: string, fromStageId: string, toStageId: string) => void\n onItemClick?: (item: PipelineItem) => void\n onItemAdd?: (stageId: string) => void\n onItemEdit?: (item: PipelineItem) => void\n onItemDelete?: (itemId: string) => void\n children?: React.ReactNode\n}\n\nconst Pipeline = React.forwardRef<HTMLDivElement, PipelineProps>(\n (\n {\n className,\n stages,\n items,\n defaultView = 'kanban',\n view: controlledView,\n onViewChange,\n onItemMove,\n onItemClick,\n onItemAdd,\n onItemEdit,\n onItemDelete,\n children,\n ...props\n },\n ref\n ) => {\n const [internalView, setInternalView] = React.useState<PipelineView>(defaultView)\n const [selectedItems, setSelectedItems] = React.useState<string[]>([])\n const [searchQuery, setSearchQuery] = React.useState('')\n const [groupBy, setGroupBy] = React.useState<string | undefined>()\n\n const view = controlledView ?? internalView\n\n const handleViewChange = (newView: PipelineView) => {\n if (controlledView === undefined) {\n setInternalView(newView)\n }\n onViewChange?.(newView)\n }\n\n const filteredItems = React.useMemo(() => {\n if (!searchQuery) return items\n const query = searchQuery.toLowerCase()\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(query) ||\n item.company?.toLowerCase().includes(query) ||\n item.owner?.name.toLowerCase().includes(query)\n )\n }, [items, searchQuery])\n\n const contextValue = React.useMemo<PipelineContextValue>(\n () => ({\n view,\n setView: handleViewChange,\n stages,\n items: filteredItems,\n selectedItems,\n setSelectedItems,\n onItemMove,\n onItemClick,\n onItemAdd,\n onItemEdit,\n onItemDelete,\n searchQuery,\n setSearchQuery,\n groupBy,\n setGroupBy,\n }),\n [\n view,\n stages,\n filteredItems,\n selectedItems,\n searchQuery,\n groupBy,\n onItemMove,\n onItemClick,\n onItemAdd,\n onItemEdit,\n onItemDelete,\n ]\n )\n\n return (\n <PipelineContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn('flex h-full flex-col', className)}\n {...props}\n >\n {children}\n </div>\n </PipelineContext.Provider>\n )\n }\n)\nPipeline.displayName = 'Pipeline'\n\n// Pipeline Header Component\nexport interface PipelineHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n showViewSelector?: boolean\n showSearch?: boolean\n showAddButton?: boolean\n addButtonLabel?: string\n onAdd?: () => void\n title?: string\n actions?: React.ReactNode\n}\n\nconst PipelineHeader = React.forwardRef<HTMLDivElement, PipelineHeaderProps>(\n (\n {\n className,\n showViewSelector = true,\n showSearch = true,\n showAddButton = true,\n addButtonLabel,\n onAdd,\n title,\n actions,\n ...props\n },\n ref\n ) => {\n const { view, setView, searchQuery, setSearchQuery, selectedItems } = usePipeline()\n const { t } = useFormatters()\n\n const viewOptions: { value: PipelineView; icon: React.ReactNode; label: string }[] = [\n { value: 'kanban', icon: <LayoutGrid className=\"h-4 w-4\" />, label: 'Kanban' },\n { value: 'list', icon: <List className=\"h-4 w-4\" />, label: t('calendar.agenda') },\n { value: 'table', icon: <Table2 className=\"h-4 w-4\" />, label: 'Table' },\n { value: 'timeline', icon: <Calendar className=\"h-4 w-4\" />, label: 'Timeline' },\n ]\n\n return (\n <div\n ref={ref}\n className={cn(\n 'flex flex-wrap items-center justify-between gap-4 border-b bg-background p-4',\n className\n )}\n {...props}\n >\n <div className=\"flex items-center gap-4\">\n {title && <h2 className=\"text-lg font-semibold\">{title}</h2>}\n {selectedItems.length > 0 && (\n <Badge variant=\"secondary\">{selectedItems.length} selected</Badge>\n )}\n </div>\n\n <div className=\"flex flex-wrap items-center gap-2\">\n {showSearch && (\n <div className=\"relative\">\n <Search className=\"absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground\" />\n <Input\n placeholder={t('common.search')}\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n className=\"h-9 w-[200px] pl-8\"\n />\n </div>\n )}\n\n {showViewSelector && (\n <div className=\"flex items-center rounded-md border bg-muted/50 p-1\">\n {viewOptions.map((option) => (\n <Button\n key={option.value}\n variant={view === option.value ? 'secondary' : 'ghost'}\n size=\"sm\"\n className=\"h-7 px-2\"\n onClick={() => setView(option.value)}\n title={option.label}\n >\n {option.icon}\n </Button>\n ))}\n </div>\n )}\n\n <Button variant=\"outline\" size=\"sm\" className=\"h-9\">\n <Filter className=\"mr-2 h-4 w-4\" />\n {t('common.filter')}\n </Button>\n\n {actions}\n\n {showAddButton && (\n <Button size=\"sm\" className=\"h-9\" onClick={onAdd}>\n <Plus className=\"mr-2 h-4 w-4\" />\n {addButtonLabel || t('common.create')}\n </Button>\n )}\n </div>\n </div>\n )\n }\n)\nPipelineHeader.displayName = 'PipelineHeader'\n\n// Pipeline Content Component\nexport interface PipelineContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children?: React.ReactNode\n}\n\nconst PipelineContent = React.forwardRef<HTMLDivElement, PipelineContentProps>(\n ({ className, children, ...props }, ref) => {\n const { view } = usePipeline()\n\n return (\n <div ref={ref} className={cn('flex-1 overflow-hidden', className)} {...props}>\n {children || (\n <>\n {view === 'kanban' && <PipelineKanban />}\n {view === 'list' && <PipelineList />}\n {view === 'table' && <PipelineTable />}\n {view === 'timeline' && <PipelineTimeline />}\n </>\n )}\n </div>\n )\n }\n)\nPipelineContent.displayName = 'PipelineContent'\n\n// Pipeline Kanban View\nexport interface PipelineKanbanProps extends React.HTMLAttributes<HTMLDivElement> {\n columnWidth?: number\n showAddButton?: boolean\n renderItem?: (item: PipelineItem, stageId: string) => React.ReactNode\n}\n\n// Sortable Card Component\ninterface SortablePipelineCardProps {\n item: PipelineItem\n stageId: string\n renderItem?: (item: PipelineItem, stageId: string) => React.ReactNode\n defaultRenderItem: (item: PipelineItem) => React.ReactNode\n onItemClick?: (item: PipelineItem) => void\n}\n\nconst SortablePipelineCard = React.memo(function SortablePipelineCard({\n item,\n stageId,\n renderItem,\n defaultRenderItem,\n onItemClick,\n}: SortablePipelineCardProps) {\n const {\n attributes,\n listeners,\n setNodeRef,\n transform,\n transition,\n isDragging: isSortableDragging,\n } = useSortable({\n id: item.id,\n data: {\n type: 'item',\n item,\n stageId,\n },\n })\n\n const style: React.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition,\n opacity: isSortableDragging ? 0.5 : 1,\n cursor: 'grab',\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n onClick={(e) => {\n e.stopPropagation()\n onItemClick?.(item)\n }}\n >\n {renderItem ? renderItem(item, stageId) : defaultRenderItem(item)}\n </div>\n )\n})\n\n// Droppable Column Component\ninterface DroppableColumnProps {\n stage: PipelineStage\n items: PipelineItem[]\n columnWidth: number\n showAddButton: boolean\n onItemAdd?: (stageId: string) => void\n onItemClick?: (item: PipelineItem) => void\n renderItem?: (item: PipelineItem, stageId: string) => React.ReactNode\n defaultRenderItem: (item: PipelineItem) => React.ReactNode\n getStageTotal: (stageId: string) => number\n formatCurrency: (value: number, options?: Intl.NumberFormatOptions) => string\n t: (key: string) => string\n}\n\nconst DroppableColumn = React.memo(function DroppableColumn({\n stage,\n items,\n columnWidth,\n showAddButton,\n onItemAdd,\n onItemClick,\n renderItem,\n defaultRenderItem,\n getStageTotal,\n formatCurrency,\n t,\n}: DroppableColumnProps) {\n const itemIds = React.useMemo(() => items.map((item) => item.id), [items])\n\n return (\n <div\n className=\"flex shrink-0 flex-col rounded-lg bg-muted/30\"\n style={{ width: columnWidth }}\n >\n {/* Stage Header */}\n <div className=\"flex items-center justify-between p-3 border-b\">\n <div className=\"flex items-center gap-2\">\n {stage.color && (\n <div\n className=\"h-3 w-3 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <h3 className=\"text-sm font-semibold\">{stage.name}</h3>\n <Badge variant=\"secondary\" className=\"text-xs\">\n {items.length}\n </Badge>\n </div>\n <div className=\"flex items-center gap-1\">\n {showAddButton && onItemAdd && (\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"h-6 w-6\"\n onClick={() => onItemAdd(stage.id)}\n >\n <Plus className=\"h-4 w-4\" />\n </Button>\n )}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-6 w-6\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem>{t('common.edit')}</DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem className=\"text-destructive\">\n {t('common.delete')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n\n {/* Stage Total */}\n <div className=\"px-3 py-2 text-xs text-muted-foreground border-b\">\n {t('deal.value')}:{' '}\n <span className=\"font-medium text-foreground\">\n {formatCurrency(getStageTotal(stage.id), {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n })}\n </span>\n </div>\n\n {/* Stage Items */}\n <ScrollArea className=\"flex-1\">\n <div className=\"flex flex-col gap-2 p-2 min-h-[100px]\">\n <SortableContext items={itemIds} strategy={verticalListSortingStrategy}>\n {items.map((item) => (\n <SortablePipelineCard\n key={item.id}\n item={item}\n stageId={stage.id}\n renderItem={renderItem}\n defaultRenderItem={defaultRenderItem}\n onItemClick={onItemClick}\n />\n ))}\n </SortableContext>\n {items.length === 0 && (\n <div className=\"py-8 text-center text-sm text-muted-foreground\">\n {t('common.noData')}\n </div>\n )}\n </div>\n </ScrollArea>\n </div>\n )\n})\n\nconst PipelineKanban = React.forwardRef<HTMLDivElement, PipelineKanbanProps>(\n ({ className, columnWidth = 320, showAddButton = true, renderItem, ...props }, ref) => {\n const { stages, items, onItemMove, onItemClick, onItemAdd } = usePipeline()\n const { formatCurrency, formatDate, t } = useFormatters()\n const [activeItem, setActiveItem] = React.useState<PipelineItem | null>(null)\n\n // Sensors with activation constraint for better UX\n const sensors = useSensors(\n useSensor(PointerSensor, {\n activationConstraint: {\n delay: 150,\n tolerance: 5,\n },\n }),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n })\n )\n\n const itemsByStage = React.useMemo(() => {\n const grouped: Record<string, PipelineItem[]> = {}\n stages.forEach((stage) => {\n grouped[stage.id] = items.filter((item) => item.stageId === stage.id)\n })\n return grouped\n }, [stages, items])\n\n const getStageTotal = React.useCallback(\n (stageId: string) => {\n return itemsByStage[stageId]?.reduce((sum, item) => sum + (item.value || 0), 0) || 0\n },\n [itemsByStage]\n )\n\n const priorityColors = {\n low: 'bg-muted text-muted-foreground',\n medium: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200',\n high: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200',\n }\n\n const defaultRenderItem = React.useCallback(\n (item: PipelineItem) => (\n <Card className=\"cursor-pointer transition-all hover:shadow-md\">\n <CardContent className=\"p-3 space-y-2\">\n <div className=\"flex items-start justify-between\">\n <div className=\"flex-1 min-w-0\">\n <h4 className=\"font-medium text-sm truncate\">{item.title}</h4>\n {item.company && (\n <p className=\"text-xs text-muted-foreground truncate\">{item.company}</p>\n )}\n </div>\n {item.priority && (\n <Badge className={cn('text-[10px] ml-2', priorityColors[item.priority])}>\n {item.priority}\n </Badge>\n )}\n </div>\n\n {item.value !== undefined && (\n <div className=\"text-sm font-semibold\">\n {formatCurrency(item.value, { minimumFractionDigits: 0, maximumFractionDigits: 0 })}\n </div>\n )}\n\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n {item.dueDate && <span>{formatDate(item.dueDate)}</span>}\n {item.owner && (\n <span className=\"truncate max-w-[100px]\">{item.owner.name}</span>\n )}\n </div>\n\n {item.probability !== undefined && (\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1 h-1.5 bg-muted rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-primary rounded-full\"\n style={{ width: `${item.probability}%` }}\n />\n </div>\n <span className=\"text-[10px] text-muted-foreground\">{item.probability}%</span>\n </div>\n )}\n </CardContent>\n </Card>\n ),\n [formatCurrency, formatDate, priorityColors]\n )\n\n const handleDragStart = React.useCallback(\n (event: DragStartEvent) => {\n const { active } = event\n const activeData = active.data.current\n if (activeData?.item) {\n setActiveItem(activeData.item as PipelineItem)\n }\n },\n []\n )\n\n const handleDragOver = React.useCallback((_event: DragOverEvent) => {\n // Handle drag over for visual feedback if needed\n }, [])\n\n const handleDragEnd = React.useCallback(\n (event: DragEndEvent) => {\n const { active, over } = event\n setActiveItem(null)\n\n if (!over) return\n\n const activeData = active.data.current\n const overData = over.data.current\n\n if (!activeData) return\n\n const activeItem = activeData.item as PipelineItem\n const fromStageId = activeData.stageId as string\n\n // Determine target stage\n let toStageId: string | null = null\n\n if (overData?.type === 'item') {\n // Dropped over another item - get that item's stage\n toStageId = overData.stageId as string\n } else if (overData?.type === 'column') {\n // Dropped directly on a column\n toStageId = overData.stageId as string\n } else {\n // Check if dropped over a column by finding the stage\n const overItem = items.find((item) => item.id === over.id)\n if (overItem) {\n toStageId = overItem.stageId\n }\n }\n\n if (toStageId && fromStageId !== toStageId) {\n onItemMove?.(activeItem.id, fromStageId, toStageId)\n }\n },\n [items, onItemMove]\n )\n\n const sortedStages = React.useMemo(\n () => [...stages].sort((a, b) => a.order - b.order),\n [stages]\n )\n\n return (\n <div ref={ref} className={cn('h-full', className)} {...props}>\n <DndContext\n sensors={sensors}\n collisionDetection={closestCorners}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n >\n <ScrollArea className=\"h-full\">\n <div className=\"flex gap-4 p-4 h-full\">\n {sortedStages.map((stage) => (\n <DroppableColumn\n key={stage.id}\n stage={stage}\n items={itemsByStage[stage.id] || []}\n columnWidth={columnWidth}\n showAddButton={showAddButton}\n onItemAdd={onItemAdd}\n onItemClick={onItemClick}\n renderItem={renderItem}\n defaultRenderItem={defaultRenderItem}\n getStageTotal={getStageTotal}\n formatCurrency={formatCurrency}\n t={t}\n />\n ))}\n </div>\n <ScrollBar orientation=\"horizontal\" />\n </ScrollArea>\n\n {/* Drag Overlay for smooth drag preview */}\n <DragOverlay dropAnimation={{\n duration: 200,\n easing: 'cubic-bezier(0.18, 0.67, 0.6, 1.22)',\n }}>\n {activeItem ? (\n <div className=\"opacity-90 shadow-xl rotate-3 scale-105\">\n {renderItem ? renderItem(activeItem, activeItem.stageId) : defaultRenderItem(activeItem)}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n </div>\n )\n }\n)\nPipelineKanban.displayName = 'PipelineKanban'\n\n// Pipeline List View\nexport interface PipelineListProps extends React.HTMLAttributes<HTMLDivElement> {\n renderItem?: (item: PipelineItem) => React.ReactNode\n}\n\nconst PipelineList = React.forwardRef<HTMLDivElement, PipelineListProps>(\n ({ className, renderItem, ...props }, ref) => {\n const { stages, items, selectedItems, setSelectedItems, onItemClick, onItemEdit, onItemDelete } =\n usePipeline()\n const { formatCurrency, formatDate, t } = useFormatters()\n\n const itemsByStage = React.useMemo(() => {\n const grouped: Record<string, PipelineItem[]> = {}\n stages.forEach((stage) => {\n grouped[stage.id] = items.filter((item) => item.stageId === stage.id)\n })\n return grouped\n }, [stages, items])\n\n const toggleSelect = (itemId: string) => {\n if (selectedItems.includes(itemId)) {\n setSelectedItems(selectedItems.filter((id) => id !== itemId))\n } else {\n setSelectedItems([...selectedItems, itemId])\n }\n }\n\n const priorityColors = {\n low: 'bg-muted text-muted-foreground',\n medium: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200',\n high: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200',\n }\n\n const defaultRenderItem = (item: PipelineItem, stage: PipelineStage) => (\n <div\n className={cn(\n 'flex items-center gap-4 rounded-lg border bg-card p-4 transition-colors hover:bg-muted/50',\n selectedItems.includes(item.id) && 'bg-muted/50 border-primary'\n )}\n >\n <Checkbox\n checked={selectedItems.includes(item.id)}\n onCheckedChange={() => toggleSelect(item.id)}\n />\n <GripVertical className=\"h-4 w-4 text-muted-foreground cursor-grab\" />\n <div className=\"flex-1 min-w-0 cursor-pointer\" onClick={() => onItemClick?.(item)}>\n <div className=\"flex items-center gap-2 mb-1\">\n <h4 className=\"font-medium truncate\">{item.title}</h4>\n {item.priority && (\n <Badge className={cn('text-xs', priorityColors[item.priority])}>\n {item.priority}\n </Badge>\n )}\n </div>\n <div className=\"flex items-center gap-4 text-sm text-muted-foreground\">\n {item.company && <span>{item.company}</span>}\n {item.owner && <span>{item.owner.name}</span>}\n </div>\n </div>\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n {stage.color && (\n <div\n className=\"h-2 w-2 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <span className=\"text-sm\">{stage.name}</span>\n </div>\n {item.value !== undefined && (\n <div className=\"font-semibold min-w-[100px] text-right\">\n {formatCurrency(item.value, { minimumFractionDigits: 0, maximumFractionDigits: 0 })}\n </div>\n )}\n {item.dueDate && (\n <div className=\"text-sm text-muted-foreground min-w-[100px]\">\n {formatDate(item.dueDate)}\n </div>\n )}\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => onItemEdit?.(item)}>\n {t('common.edit')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n className=\"text-destructive\"\n onClick={() => onItemDelete?.(item.id)}\n >\n {t('common.delete')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </div>\n )\n\n return (\n <div ref={ref} className={cn('h-full', className)} {...props}>\n <ScrollArea className=\"h-full\">\n <div className=\"p-4 space-y-6\">\n {stages\n .sort((a, b) => a.order - b.order)\n .map((stage) => (\n <div key={stage.id}>\n <div className=\"flex items-center gap-2 mb-3\">\n {stage.color && (\n <div\n className=\"h-3 w-3 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <h3 className=\"font-semibold\">{stage.name}</h3>\n <Badge variant=\"secondary\">{itemsByStage[stage.id]?.length || 0}</Badge>\n </div>\n <div className=\"space-y-2\">\n {itemsByStage[stage.id]?.map((item) =>\n renderItem ? (\n <div key={item.id}>{renderItem(item)}</div>\n ) : (\n <div key={item.id}>{defaultRenderItem(item, stage)}</div>\n )\n )}\n {itemsByStage[stage.id]?.length === 0 && (\n <div className=\"py-4 text-center text-sm text-muted-foreground border rounded-lg\">\n {t('common.noData')}\n </div>\n )}\n </div>\n </div>\n ))}\n </div>\n </ScrollArea>\n </div>\n )\n }\n)\nPipelineList.displayName = 'PipelineList'\n\n// Pipeline Table View\nexport interface PipelineTableProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst PipelineTable = React.forwardRef<HTMLDivElement, PipelineTableProps>(\n ({ className, ...props }, ref) => {\n const {\n stages,\n items,\n selectedItems,\n setSelectedItems,\n onItemClick,\n onItemEdit,\n onItemDelete,\n } = usePipeline()\n const { formatCurrency, formatDate, t } = useFormatters()\n\n const stageMap = React.useMemo(() => {\n const map: Record<string, PipelineStage> = {}\n stages.forEach((stage) => {\n map[stage.id] = stage\n })\n return map\n }, [stages])\n\n const toggleSelectAll = () => {\n if (selectedItems.length === items.length) {\n setSelectedItems([])\n } else {\n setSelectedItems(items.map((item) => item.id))\n }\n }\n\n const toggleSelect = (itemId: string) => {\n if (selectedItems.includes(itemId)) {\n setSelectedItems(selectedItems.filter((id) => id !== itemId))\n } else {\n setSelectedItems([...selectedItems, itemId])\n }\n }\n\n const priorityColors = {\n low: 'bg-muted text-muted-foreground',\n medium: 'bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-200',\n high: 'bg-red-100 text-red-800 dark:bg-red-900 dark:text-red-200',\n }\n\n return (\n <div ref={ref} className={cn('h-full', className)} {...props}>\n <ScrollArea className=\"h-full\">\n <div className=\"p-4\">\n <div className=\"rounded-lg border\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b bg-muted/50\">\n <th className=\"w-[40px] p-3\">\n <Checkbox\n checked={selectedItems.length === items.length && items.length > 0}\n onCheckedChange={toggleSelectAll}\n />\n </th>\n <th className=\"text-left p-3 font-medium text-sm\">Title</th>\n <th className=\"text-left p-3 font-medium text-sm\">Company</th>\n <th className=\"text-left p-3 font-medium text-sm\">{t('deal.stage')}</th>\n <th className=\"text-right p-3 font-medium text-sm\">{t('deal.value')}</th>\n <th className=\"text-center p-3 font-medium text-sm\">{t('deal.probability')}</th>\n <th className=\"text-left p-3 font-medium text-sm\">Owner</th>\n <th className=\"text-left p-3 font-medium text-sm\">{t('deal.closeDate')}</th>\n <th className=\"text-left p-3 font-medium text-sm\">Priority</th>\n <th className=\"w-[60px] p-3\"></th>\n </tr>\n </thead>\n <tbody>\n {items.map((item) => {\n const stage = stageMap[item.stageId]\n return (\n <tr\n key={item.id}\n className={cn(\n 'border-b transition-colors hover:bg-muted/50',\n selectedItems.includes(item.id) && 'bg-muted/50'\n )}\n >\n <td className=\"p-3\">\n <Checkbox\n checked={selectedItems.includes(item.id)}\n onCheckedChange={() => toggleSelect(item.id)}\n />\n </td>\n <td\n className=\"p-3 font-medium cursor-pointer\"\n onClick={() => onItemClick?.(item)}\n >\n {item.title}\n </td>\n <td className=\"p-3 text-muted-foreground\">{item.company}</td>\n <td className=\"p-3\">\n <div className=\"flex items-center gap-2\">\n {stage?.color && (\n <div\n className=\"h-2 w-2 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <span>{stage?.name}</span>\n </div>\n </td>\n <td className=\"p-3 text-right font-medium\">\n {item.value !== undefined\n ? formatCurrency(item.value, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n })\n : '-'}\n </td>\n <td className=\"p-3 text-center\">\n {item.probability !== undefined ? `${item.probability}%` : '-'}\n </td>\n <td className=\"p-3 text-muted-foreground\">{item.owner?.name || '-'}</td>\n <td className=\"p-3 text-muted-foreground\">\n {item.dueDate ? formatDate(item.dueDate) : '-'}\n </td>\n <td className=\"p-3\">\n {item.priority && (\n <Badge className={cn('text-xs', priorityColors[item.priority])}>\n {item.priority}\n </Badge>\n )}\n </td>\n <td className=\"p-3\">\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"ghost\" size=\"icon\" className=\"h-8 w-8\">\n <MoreHorizontal className=\"h-4 w-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onClick={() => onItemEdit?.(item)}>\n {t('common.edit')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n className=\"text-destructive\"\n onClick={() => onItemDelete?.(item.id)}\n >\n {t('common.delete')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </td>\n </tr>\n )\n })}\n {items.length === 0 && (\n <tr>\n <td colSpan={10} className=\"p-8 text-center text-muted-foreground\">\n {t('common.noData')}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n </div>\n </ScrollArea>\n </div>\n )\n }\n)\nPipelineTable.displayName = 'PipelineTable'\n\n// Pipeline Timeline View\nexport interface PipelineTimelineProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst PipelineTimeline = React.forwardRef<HTMLDivElement, PipelineTimelineProps>(\n ({ className, ...props }, ref) => {\n const { stages, items, onItemClick } = usePipeline()\n const { formatCurrency, formatDate, t } = useFormatters()\n\n // Group items by due date\n const itemsByDate = React.useMemo(() => {\n const grouped: Record<string, PipelineItem[]> = {}\n const today = new Date()\n today.setHours(0, 0, 0, 0)\n\n items\n .filter((item) => item.dueDate)\n .sort((a, b) => {\n const dateA = new Date(a.dueDate!)\n const dateB = new Date(b.dueDate!)\n return dateA.getTime() - dateB.getTime()\n })\n .forEach((item) => {\n const date = new Date(item.dueDate!)\n const dateKey = date.toISOString().split('T')[0]\n if (!grouped[dateKey]) {\n grouped[dateKey] = []\n }\n grouped[dateKey].push(item)\n })\n\n return grouped\n }, [items])\n\n const stageMap = React.useMemo(() => {\n const map: Record<string, PipelineStage> = {}\n stages.forEach((stage) => {\n map[stage.id] = stage\n })\n return map\n }, [stages])\n\n const dateKeys = Object.keys(itemsByDate).sort()\n const today = new Date().toISOString().split('T')[0]\n\n const getDateLabel = (dateKey: string) => {\n const date = new Date(dateKey)\n const todayDate = new Date()\n todayDate.setHours(0, 0, 0, 0)\n const diff = Math.ceil((date.getTime() - todayDate.getTime()) / (1000 * 60 * 60 * 24))\n\n if (diff === 0) return t('date.today')\n if (diff === 1) return t('date.tomorrow')\n if (diff === -1) return t('date.yesterday')\n return formatDate(date, 'EEEE, MMMM d')\n }\n\n const isOverdue = (dateKey: string) => {\n return dateKey < today\n }\n\n return (\n <div ref={ref} className={cn('h-full', className)} {...props}>\n <ScrollArea className=\"h-full\">\n <div className=\"p-4\">\n {dateKeys.length === 0 ? (\n <div className=\"py-12 text-center text-muted-foreground\">{t('common.noData')}</div>\n ) : (\n <div className=\"relative space-y-8 before:absolute before:inset-0 before:ml-5 before:h-full before:w-0.5 before:-translate-x-px before:bg-border md:before:mx-auto md:before:translate-x-0\">\n {dateKeys.map((dateKey) => (\n <div key={dateKey} className=\"relative flex items-start gap-6 md:gap-12\">\n {/* Timeline marker */}\n <div className=\"flex items-center justify-center w-10 h-10 rounded-full bg-background border-2 border-muted shrink-0 md:order-1 md:mx-auto\">\n <div\n className={cn(\n 'w-3 h-3 rounded-full',\n isOverdue(dateKey) ? 'bg-destructive' : 'bg-primary'\n )}\n />\n </div>\n\n {/* Date label */}\n <div className=\"hidden md:block md:w-1/2 md:text-right md:pr-8\">\n <span\n className={cn(\n 'font-semibold',\n isOverdue(dateKey) && 'text-destructive'\n )}\n >\n {getDateLabel(dateKey)}\n </span>\n <span className=\"block text-sm text-muted-foreground\">\n {itemsByDate[dateKey].length} item(s)\n </span>\n </div>\n\n {/* Items */}\n <div className=\"flex-1 md:w-1/2 md:pl-8\">\n <div className=\"md:hidden mb-2\">\n <span\n className={cn(\n 'font-semibold',\n isOverdue(dateKey) && 'text-destructive'\n )}\n >\n {getDateLabel(dateKey)}\n </span>\n </div>\n <div className=\"space-y-3\">\n {itemsByDate[dateKey].map((item) => {\n const stage = stageMap[item.stageId]\n return (\n <Card\n key={item.id}\n className=\"cursor-pointer hover:shadow-md transition-shadow\"\n onClick={() => onItemClick?.(item)}\n >\n <CardContent className=\"p-4\">\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1\">\n <h4 className=\"font-medium truncate\">{item.title}</h4>\n {item.company && (\n <p className=\"text-sm text-muted-foreground\">\n {item.company}\n </p>\n )}\n </div>\n {item.value !== undefined && (\n <div className=\"font-semibold\">\n {formatCurrency(item.value, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n })}\n </div>\n )}\n </div>\n <div className=\"flex items-center gap-3 mt-3 text-sm\">\n {stage && (\n <div className=\"flex items-center gap-1.5\">\n {stage.color && (\n <div\n className=\"h-2 w-2 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <span>{stage.name}</span>\n </div>\n )}\n {item.owner && (\n <span className=\"text-muted-foreground\">{item.owner.name}</span>\n )}\n </div>\n </CardContent>\n </Card>\n )\n })}\n </div>\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </ScrollArea>\n </div>\n )\n }\n)\nPipelineTimeline.displayName = 'PipelineTimeline'\n\n// Pipeline Summary/Footer Component\nexport interface PipelineSummaryProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nconst PipelineSummary = React.forwardRef<HTMLDivElement, PipelineSummaryProps>(\n ({ className, ...props }, ref) => {\n const { stages, items } = usePipeline()\n const { formatCurrency, t } = useFormatters()\n\n const totalValue = items.reduce((sum, item) => sum + (item.value || 0), 0)\n const totalItems = items.length\n\n const stageStats = React.useMemo(() => {\n return stages.map((stage) => {\n const stageItems = items.filter((item) => item.stageId === stage.id)\n const value = stageItems.reduce((sum, item) => sum + (item.value || 0), 0)\n return {\n ...stage,\n count: stageItems.length,\n value,\n }\n })\n }, [stages, items])\n\n return (\n <div\n ref={ref}\n className={cn('border-t bg-muted/30 px-4 py-3', className)}\n {...props}\n >\n <div className=\"flex flex-wrap items-center justify-between gap-4\">\n <div className=\"flex items-center gap-6\">\n <div>\n <span className=\"text-sm text-muted-foreground\">{t('common.total')}</span>\n <div className=\"font-semibold\">\n {formatCurrency(totalValue, { minimumFractionDigits: 0, maximumFractionDigits: 0 })}\n </div>\n </div>\n <div>\n <span className=\"text-sm text-muted-foreground\">{t('common.items')}</span>\n <div className=\"font-semibold\">{totalItems}</div>\n </div>\n </div>\n <div className=\"flex items-center gap-4\">\n {stageStats.map((stage) => (\n <div key={stage.id} className=\"flex items-center gap-2 text-sm\">\n {stage.color && (\n <div\n className=\"h-2 w-2 rounded-full\"\n style={{ backgroundColor: stage.color }}\n />\n )}\n <span className=\"text-muted-foreground\">{stage.name}:</span>\n <span className=\"font-medium\">{stage.count}</span>\n </div>\n ))}\n </div>\n </div>\n </div>\n )\n }\n)\nPipelineSummary.displayName = 'PipelineSummary'\n\nexport {\n Pipeline,\n PipelineHeader,\n PipelineContent,\n PipelineKanban,\n PipelineList,\n PipelineTable,\n PipelineTimeline,\n PipelineSummary,\n}\n"],"names":["Filter","createLucideIcon","GripVertical","LayoutGrid","List","Table2","AppShell","React","className","children","props","ref","jsx","cn","AppShellHeader","AppShellMain","AppShellFooter","PageHeader","heading","description","actions","jsxs","DashboardLayoutContext","useDashboardLayout","context","DashboardLayout","defaultSidebarOpen","defaultSidebarCollapsed","sidebarWidth","sidebarCollapsedWidth","isMobile","useIsMobile","sidebarOpen","setSidebarOpen","sidebarCollapsed","setSidebarCollapsed","toggleSidebar","prev","handleKeyDown","event","contextValue","DashboardSidebar","Sheet","SheetContent","DashboardContent","DashboardHeader","DashboardMain","DashboardFooter","PipelineContext","usePipeline","Pipeline","stages","items","defaultView","controlledView","onViewChange","onItemMove","onItemClick","onItemAdd","onItemEdit","onItemDelete","internalView","setInternalView","selectedItems","setSelectedItems","searchQuery","setSearchQuery","groupBy","setGroupBy","view","handleViewChange","newView","filteredItems","query","item","PipelineHeader","showViewSelector","showSearch","showAddButton","addButtonLabel","onAdd","title","setView","t","useFormatters","viewOptions","Calendar","Badge","Search","Input","e","option","Button","Plus","PipelineContent","Fragment","PipelineKanban","PipelineList","PipelineTable","PipelineTimeline","SortablePipelineCard","stageId","renderItem","defaultRenderItem","attributes","listeners","setNodeRef","transform","transition","isSortableDragging","useSortable","style","CSS","DroppableColumn","stage","columnWidth","getStageTotal","formatCurrency","itemIds","DropdownMenu","DropdownMenuTrigger","MoreHorizontal","DropdownMenuContent","DropdownMenuItem","DropdownMenuSeparator","ScrollArea","SortableContext","verticalListSortingStrategy","formatDate","activeItem","setActiveItem","sensors","useSensors","useSensor","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","itemsByStage","grouped","sum","priorityColors","Card","CardContent","handleDragStart","active","activeData","handleDragOver","_event","handleDragEnd","over","overData","fromStageId","toStageId","overItem","sortedStages","a","b","DndContext","closestCorners","ScrollBar","DragOverlay","toggleSelect","itemId","id","Checkbox","stageMap","map","toggleSelectAll","itemsByDate","today","dateA","dateB","dateKey","dateKeys","getDateLabel","date","todayDate","diff","isOverdue","PipelineSummary","totalValue","totalItems","stageStats","stageItems","value"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]}
|