@sth87/shadcn-design-system 0.1.5 → 0.1.7

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.
Files changed (65) hide show
  1. package/dist/AI_CONTEXT.md +1 -0
  2. package/dist/cjs/components/Button/Button.cjs +1 -1
  3. package/dist/cjs/components/Button/Button.cjs.map +1 -1
  4. package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
  5. package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
  6. package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
  7. package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
  8. package/dist/cjs/components/Input/Input.cjs +1 -1
  9. package/dist/cjs/components/Input/Input.cjs.map +1 -1
  10. package/dist/cjs/components/Table/data-table.cjs +1 -1
  11. package/dist/cjs/components/Table/data-table.cjs.map +1 -1
  12. package/dist/cjs/hooks/use-data-table.cjs +1 -1
  13. package/dist/cjs/hooks/use-data-table.cjs.map +1 -1
  14. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
  15. package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
  16. package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
  17. package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
  18. package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
  19. package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
  20. package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
  21. package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
  22. package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
  23. package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
  24. package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
  25. package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
  26. package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
  27. package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
  28. package/dist/cjs/styles/index.css +1 -1
  29. package/dist/esm/components/Button/Button.js +22 -24
  30. package/dist/esm/components/Button/Button.js.map +1 -1
  31. package/dist/esm/components/DatePicker/RangePicker.js +41 -41
  32. package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
  33. package/dist/esm/components/ImageViewer/ImageViewer.js +3 -3
  34. package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
  35. package/dist/esm/components/Input/Input.js +37 -36
  36. package/dist/esm/components/Input/Input.js.map +1 -1
  37. package/dist/esm/components/Table/data-table.js +22 -16
  38. package/dist/esm/components/Table/data-table.js.map +1 -1
  39. package/dist/esm/hooks/use-data-table.js +68 -64
  40. package/dist/esm/hooks/use-data-table.js.map +1 -1
  41. package/dist/esm/packages/ui/src/components/alert-dialog.js +7 -7
  42. package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
  43. package/dist/esm/packages/ui/src/components/calendar.js +1 -1
  44. package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
  45. package/dist/esm/packages/ui/src/components/combobox.js +1 -1
  46. package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
  47. package/dist/esm/packages/ui/src/components/context-menu.js +1 -1
  48. package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
  49. package/dist/esm/packages/ui/src/components/popover.js +1 -1
  50. package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
  51. package/dist/esm/packages/ui/src/components/sidebar.js +2 -2
  52. package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
  53. package/dist/esm/packages/ui/src/components/table.js +5 -5
  54. package/dist/esm/packages/ui/src/components/table.js.map +1 -1
  55. package/dist/esm/styles/index.css +1 -1
  56. package/dist/types/components/Button/Button.d.ts.map +1 -1
  57. package/dist/types/components/Input/Input.d.ts +1 -0
  58. package/dist/types/components/Input/Input.d.ts.map +1 -1
  59. package/dist/types/components/Table/data-table-toolbar.d.ts +3 -1
  60. package/dist/types/components/Table/data-table-toolbar.d.ts.map +1 -1
  61. package/dist/types/components/Table/data-table-view-options.d.ts +12 -3
  62. package/dist/types/components/Table/data-table-view-options.d.ts.map +1 -1
  63. package/dist/types/components/Table/data-table.d.ts.map +1 -1
  64. package/dist/types/hooks/use-data-table.d.ts.map +1 -1
  65. package/package.json +4 -1
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),o=require("@tanstack/react-table"),g=require("./data-table-pagination.cjs");require("@radix-ui/react-slot");require("../../packages/ui/src/components/button.cjs");require("../../packages/ui/src/components/button-group.cjs");require("../../packages/ui/src/components/input.cjs");require("../../packages/ui/src/components/textarea.cjs");require("@radix-ui/react-label");const c=require("../../packages/ui/src/lib/utils.cjs");require("../../packages/ui/src/components/select.cjs");require("../../packages/ui/src/components/combobox.cjs");require("@radix-ui/react-tooltip");require("react");require("lucide-react");require("react-day-picker");require("../../packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("../../packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("../../packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("../../packages/ui/src/components/badge.cjs");require("../../packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("../../packages/ui/src/components/input-otp.cjs");require("../../packages/ui/src/components/radio-group.cjs");require("../../packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("../../packages/ui/src/components/tabs.cjs");require("../../packages/ui/src/components/toggle.cjs");const l=require("../../packages/ui/src/components/table.cjs"),a=require("../../utils/data-table.cjs"),b=require("./data-table-column-header.cjs");function j({table:s,actionBar:u,children:q,className:m,pagination:n=!0,sticky:T,bordered:f,loading:d,footer:t,...x}){return e.jsxs("div",{className:c.cn("ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative",m),...x,children:[q,d&&e.jsx("div",{className:"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20",children:"Loading..."}),e.jsx("div",{className:c.cn("ds:overflow-auto ds:rounded-md ds:border",d&&"ds:blur-sm"),children:e.jsxs(l.Table,{children:[e.jsx(l.TableHeader,{children:s.getHeaderGroups().map(i=>e.jsx(l.TableRow,{children:i.headers.map(r=>e.jsx(l.TableHead,{colSpan:r.colSpan,style:{...a.getCommonPinningStyles({column:r.column})},children:r.isPlaceholder?null:r.column.columnDef.header?typeof r.column.columnDef.header=="function"?o.flexRender(r.column.columnDef.header,r.getContext()):e.jsx(b.DataTableColumnHeader,{column:r.column}):null},r.id))},i.id))}),e.jsx(l.TableBody,{children:s.getRowModel().rows?.length?s.getRowModel().rows.map(i=>e.jsx(l.TableRow,{"data-state":i.getIsSelected()&&"selected",children:i.getVisibleCells().map(r=>e.jsx(l.TableCell,{style:{...a.getCommonPinningStyles({column:r.column})},children:o.flexRender(r.column.columnDef.cell,r.getContext())},r.id))},i.id)):e.jsx(l.TableRow,{children:e.jsx(l.TableCell,{colSpan:s.getAllColumns().length,className:"ds:h-24 ds:text-center",children:"No results."})})}),t&&e.jsx("tfoot",{children:e.jsx(l.TableRow,{children:e.jsx(l.TableCell,{colSpan:s.getAllColumns().length,children:t(s.getRowModel().rows.map(i=>i.original))})})})]})}),e.jsxs("div",{className:"ds:flex ds:flex-col ds:gap-2.5",children:[n&&e.jsx(g.DataTablePagination,{table:s,...n===!0?{}:n}),u&&s.getFilteredSelectedRowModel().rows.length>0&&u]})]})}exports.DataTable=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),t=require("@tanstack/react-table"),b=require("./data-table-pagination.cjs");require("@radix-ui/react-slot");require("../../packages/ui/src/components/button.cjs");require("../../packages/ui/src/components/button-group.cjs");require("../../packages/ui/src/components/input.cjs");require("../../packages/ui/src/components/textarea.cjs");require("@radix-ui/react-label");const c=require("../../packages/ui/src/lib/utils.cjs");require("../../packages/ui/src/components/select.cjs");require("../../packages/ui/src/components/combobox.cjs");require("@radix-ui/react-tooltip");require("react");require("lucide-react");require("react-day-picker");require("../../packages/ui/src/components/popover.cjs");require("@radix-ui/react-separator");require("../../packages/ui/src/components/switch.cjs");require("vaul");require("@radix-ui/react-scroll-area");require("../../packages/ui/src/components/tree-view.cjs");require("@radix-ui/react-alert-dialog");require("@radix-ui/react-avatar");require("../../packages/ui/src/components/badge.cjs");require("../../packages/ui/src/components/checkbox.cjs");require("@radix-ui/react-collapsible");require("cmdk");require("@radix-ui/react-dialog");require("@radix-ui/react-dropdown-menu");require("../../packages/ui/src/components/input-otp.cjs");require("../../packages/ui/src/components/radio-group.cjs");require("../../packages/ui/src/components/sidebar.cjs");require("@radix-ui/react-slider");require("../../packages/ui/src/components/tabs.cjs");require("../../packages/ui/src/components/toggle.cjs");const l=require("../../packages/ui/src/components/table.cjs"),a=require("../../utils/data-table.cjs"),g=require("./data-table-column-header.cjs");function j({table:s,actionBar:u,children:q,className:m,pagination:n=!0,sticky:T,bordered:f,loading:d,footer:o,...x}){return e.jsxs("div",{className:c.cn("ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative",m),...x,children:[q,d&&e.jsx("div",{className:"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20",children:"Loading..."}),e.jsx("div",{className:c.cn("ds:overflow-auto ds:rounded-md ds:border ds:border-border",d&&"ds:blur-sm"),children:e.jsxs(l.Table,{children:[e.jsx(l.TableHeader,{children:s.getHeaderGroups().map(i=>e.jsx(l.TableRow,{children:i.headers.map(r=>e.jsx(l.TableHead,{colSpan:r.colSpan,style:{...a.getCommonPinningStyles({column:r.column})},children:r.isPlaceholder?null:r.column.columnDef.header?typeof r.column.columnDef.header=="function"?t.flexRender(r.column.columnDef.header,r.getContext()):e.jsx(g.DataTableColumnHeader,{column:r.column}):null},r.id))},i.id))}),e.jsx(l.TableBody,{children:s.getRowModel().rows?.length?s.getRowModel().rows.map(i=>e.jsx(l.TableRow,{"data-state":i.getIsSelected()&&"selected",children:i.getVisibleCells().map(r=>e.jsx(l.TableCell,{style:{...a.getCommonPinningStyles({column:r.column})},children:t.flexRender(r.column.columnDef.cell,r.getContext())},r.id))},i.id)):e.jsx(l.TableRow,{children:e.jsx(l.TableCell,{colSpan:s.getAllColumns().length,className:"ds:h-24 ds:text-center",children:"No results."})})}),o&&e.jsx("tfoot",{children:e.jsx(l.TableRow,{children:e.jsx(l.TableCell,{colSpan:s.getAllColumns().length,children:o(s.getRowModel().rows.map(i=>i.original))})})})]})}),e.jsxs("div",{className:"ds:flex ds:flex-col ds:gap-2.5",children:[n&&e.jsx(b.DataTablePagination,{table:s,...n===!0?{}:n}),u&&s.getFilteredSelectedRowModel().rows.length>0&&u]})]})}exports.DataTable=j;
2
2
  //# sourceMappingURL=data-table.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-table.cjs","sources":["../../../../src/components/Table/data-table.tsx"],"sourcesContent":["import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport {\n cn,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@dsui/ui\";\nimport { getCommonPinningStyles } from \"@/utils/data-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\n\nexport interface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n pagination?:\n | boolean\n | Omit<React.ComponentProps<typeof DataTablePagination<TData>>, \"table\">;\n sticky?: boolean | { offsetHeader?: number; offsetScroll?: number };\n bordered?: boolean;\n loading?: boolean;\n footer?: (currentPageData: TData[]) => React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n pagination = true,\n sticky,\n bordered,\n loading,\n footer,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\"ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative\", className)}\n {...props}\n >\n {children}\n {loading && (\n <div className=\"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20\">\n Loading...\n </div>\n )}\n <div\n className={cn(\"ds:overflow-auto ds:rounded-md ds:border\", loading && \"ds:blur-sm\")}\n >\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getCommonPinningStyles({ column: header.column }),\n }}\n >\n {header.isPlaceholder ? null : header.column.columnDef\n .header ? (\n typeof header.column.columnDef.header === \"function\" ? (\n flexRender(\n header.column.columnDef.header,\n header.getContext()\n )\n ) : (\n <DataTableColumnHeader column={header.column} />\n )\n ) : null}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"ds:h-24 ds:text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n {footer && (\n <tfoot>\n <TableRow>\n <TableCell colSpan={table.getAllColumns().length}>\n {footer(table.getRowModel().rows.map((row) => row.original))}\n </TableCell>\n </TableRow>\n </tfoot>\n )}\n </Table>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-2.5\">\n {pagination && (\n <DataTablePagination\n table={table}\n {...(pagination === true ? {} : pagination)}\n />\n )}\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"],"names":["DataTable","table","actionBar","children","className","pagination","sticky","bordered","loading","footer","props","jsxs","cn","jsx","Table","TableHeader","headerGroup","TableRow","header","TableHead","getCommonPinningStyles","flexRender","DataTableColumnHeader","TableBody","row","cell","TableCell","DataTablePagination"],"mappings":"kwDA4BO,SAASA,EAAiB,CAAA,MAC/BC,EACA,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,WAAAC,EAAa,GACb,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,OACEC,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GAAG,uDAAwDR,CAAS,EAC9E,GAAGM,EAEH,SAAA,CAAAP,EACAK,GACCK,EAAAA,IAAC,MAAA,CAAI,UAAU,+FAA+F,SAAA,aAE9G,EAEFA,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GAAG,2CAA4CJ,GAAW,YAAY,EAEjF,gBAACM,QAAA,CACC,SAAA,CAAAD,EAAAA,IAACE,EAAAA,YAAA,CACE,SAAAd,EAAM,gBAAA,EAAkB,IAAKe,GAC5BH,EAAAA,IAACI,EAAAA,SAAA,CACE,SAAAD,EAAY,QAAQ,IAAKE,GACxBL,EAAAA,IAACM,EAAAA,UAAA,CAEC,QAASD,EAAO,QAChB,MAAO,CACL,GAAGE,yBAAuB,CAAE,OAAQF,EAAO,OAAQ,CAAA,EAGpD,SAAAA,EAAO,cAAgB,KAAOA,EAAO,OAAO,UACxC,OACH,OAAOA,EAAO,OAAO,UAAU,QAAW,WACxCG,EAAAA,WACEH,EAAO,OAAO,UAAU,OACxBA,EAAO,WAAA,CAAW,EAGpBL,EAAAA,IAACS,EAAAA,sBAAA,CAAsB,OAAQJ,EAAO,OAAQ,EAE9C,IAAA,EAhBCA,EAAO,EAAA,CAkBf,GArBYF,EAAY,EAsB3B,CACD,CAAA,CACH,EACAH,EAAAA,IAACU,EAAAA,UAAA,CACE,SAAAtB,EAAM,YAAA,EAAc,MAAM,OACzBA,EAAM,YAAA,EAAc,KAAK,IAAKuB,GAC5BX,EAAAA,IAACI,EAAAA,SAAA,CAEC,aAAYO,EAAI,cAAA,GAAmB,WAElC,SAAAA,EAAI,gBAAA,EAAkB,IAAKC,GAC1BZ,EAAAA,IAACa,EAAAA,UAAA,CAEC,MAAO,CACL,GAAGN,yBAAuB,CAAE,OAAQK,EAAK,OAAQ,CAAA,EAGlD,SAAAJ,EAAAA,WACCI,EAAK,OAAO,UAAU,KACtBA,EAAK,WAAA,CAAW,CAClB,EARKA,EAAK,EAAA,CAUb,CAAA,EAfID,EAAI,EAAA,CAiBZ,EAEDX,EAAAA,IAACI,WAAA,CACC,SAAAJ,EAAAA,IAACa,EAAAA,UAAA,CACC,QAASzB,EAAM,cAAA,EAAgB,OAC/B,UAAU,yBACX,SAAA,aAAA,CAAA,EAGH,CAAA,CAEJ,EACCQ,GACCI,EAAAA,IAAC,QAAA,CACC,SAAAA,EAAAA,IAACI,EAAAA,SAAA,CACC,eAACS,EAAAA,UAAA,CAAU,QAASzB,EAAM,cAAA,EAAgB,OACvC,WAAOA,EAAM,YAAA,EAAc,KAAK,IAAKuB,GAAQA,EAAI,QAAQ,CAAC,CAAA,CAC7D,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,EAEFb,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACZ,SAAA,CAAAN,GACCQ,EAAAA,IAACc,EAAAA,oBAAA,CAAA,MACC1B,EACC,GAAII,IAAe,GAAO,GAAKA,CAAA,CAAA,EAGnCH,GACCD,EAAM,4BAAA,EAA8B,KAAK,OAAS,GAClDC,CAAA,CAAA,CACJ,CAAA,CAAA,CAAA,CAGN"}
1
+ {"version":3,"file":"data-table.cjs","sources":["../../../../src/components/Table/data-table.tsx"],"sourcesContent":["import { flexRender, type Table as TanstackTable } from \"@tanstack/react-table\";\nimport type * as React from \"react\";\n\nimport { DataTablePagination } from \"./data-table-pagination\";\nimport {\n cn,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from \"@dsui/ui\";\nimport { getCommonPinningStyles } from \"@/utils/data-table\";\nimport { DataTableColumnHeader } from \"./data-table-column-header\";\n\nexport interface DataTableProps<TData> extends React.ComponentProps<\"div\"> {\n table: TanstackTable<TData>;\n actionBar?: React.ReactNode;\n pagination?:\n | boolean\n | Omit<React.ComponentProps<typeof DataTablePagination<TData>>, \"table\">;\n sticky?: boolean | { offsetHeader?: number; offsetScroll?: number };\n bordered?: boolean;\n loading?: boolean;\n footer?: (currentPageData: TData[]) => React.ReactNode;\n}\n\nexport function DataTable<TData>({\n table,\n actionBar,\n children,\n className,\n pagination = true,\n sticky,\n bordered,\n loading,\n footer,\n ...props\n}: DataTableProps<TData>) {\n return (\n <div\n className={cn(\n \"ds:flex ds:w-full ds:flex-col ds:gap-2.5 ds:relative\",\n className\n )}\n {...props}\n >\n {children}\n {loading && (\n <div className=\"ds:absolute ds:inset-0 ds:bg-background/50 ds:flex ds:items-center ds:justify-center ds:z-20\">\n Loading...\n </div>\n )}\n <div\n className={cn(\n \"ds:overflow-auto ds:rounded-md ds:border ds:border-border\",\n loading && \"ds:blur-sm\"\n )}\n >\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n style={{\n ...getCommonPinningStyles({ column: header.column }),\n }}\n >\n {header.isPlaceholder ? null : header.column.columnDef\n .header ? (\n typeof header.column.columnDef.header === \"function\" ? (\n flexRender(\n header.column.columnDef.header,\n header.getContext()\n )\n ) : (\n <DataTableColumnHeader column={header.column} />\n )\n ) : null}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows?.length ? (\n table.getRowModel().rows.map((row) => (\n <TableRow\n key={row.id}\n data-state={row.getIsSelected() && \"selected\"}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n style={{\n ...getCommonPinningStyles({ column: cell.column }),\n }}\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext()\n )}\n </TableCell>\n ))}\n </TableRow>\n ))\n ) : (\n <TableRow>\n <TableCell\n colSpan={table.getAllColumns().length}\n className=\"ds:h-24 ds:text-center\"\n >\n No results.\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n {footer && (\n <tfoot>\n <TableRow>\n <TableCell colSpan={table.getAllColumns().length}>\n {footer(table.getRowModel().rows.map((row) => row.original))}\n </TableCell>\n </TableRow>\n </tfoot>\n )}\n </Table>\n </div>\n <div className=\"ds:flex ds:flex-col ds:gap-2.5\">\n {pagination && (\n <DataTablePagination\n table={table}\n {...(pagination === true ? {} : pagination)}\n />\n )}\n {actionBar &&\n table.getFilteredSelectedRowModel().rows.length > 0 &&\n actionBar}\n </div>\n </div>\n );\n}\n"],"names":["DataTable","table","actionBar","children","className","pagination","sticky","bordered","loading","footer","props","jsxs","cn","jsx","Table","TableHeader","headerGroup","TableRow","header","TableHead","getCommonPinningStyles","flexRender","DataTableColumnHeader","TableBody","row","cell","TableCell","DataTablePagination"],"mappings":"kwDA4BO,SAASA,EAAiB,CAAA,MAC/BC,EACA,UAAAC,EACA,SAAAC,EACA,UAAAC,EACA,WAAAC,EAAa,GACb,OAAAC,EACA,SAAAC,EACA,QAAAC,EACA,OAAAC,EACA,GAAGC,CACL,EAA0B,CACxB,OACEC,EAAAA,KAAC,MAAA,CACC,UAAWC,EAAAA,GACT,uDACAR,CAAA,EAED,GAAGM,EAEH,SAAA,CAAAP,EACAK,GACCK,EAAAA,IAAC,MAAA,CAAI,UAAU,+FAA+F,SAAA,aAE9G,EAEFA,EAAAA,IAAC,MAAA,CACC,UAAWD,EAAAA,GACT,4DACAJ,GAAW,YAAA,EAGb,gBAACM,QAAA,CACC,SAAA,CAAAD,EAAAA,IAACE,EAAAA,YAAA,CACE,SAAAd,EAAM,gBAAA,EAAkB,IAAKe,GAC5BH,EAAAA,IAACI,EAAAA,SAAA,CACE,SAAAD,EAAY,QAAQ,IAAKE,GACxBL,EAAAA,IAACM,EAAAA,UAAA,CAEC,QAASD,EAAO,QAChB,MAAO,CACL,GAAGE,yBAAuB,CAAE,OAAQF,EAAO,OAAQ,CAAA,EAGpD,SAAAA,EAAO,cAAgB,KAAOA,EAAO,OAAO,UACxC,OACH,OAAOA,EAAO,OAAO,UAAU,QAAW,WACxCG,EAAAA,WACEH,EAAO,OAAO,UAAU,OACxBA,EAAO,WAAA,CAAW,EAGpBL,EAAAA,IAACS,EAAAA,sBAAA,CAAsB,OAAQJ,EAAO,OAAQ,EAE9C,IAAA,EAhBCA,EAAO,EAAA,CAkBf,GArBYF,EAAY,EAsB3B,CACD,CAAA,CACH,EACAH,EAAAA,IAACU,EAAAA,UAAA,CACE,SAAAtB,EAAM,YAAA,EAAc,MAAM,OACzBA,EAAM,YAAA,EAAc,KAAK,IAAKuB,GAC5BX,EAAAA,IAACI,EAAAA,SAAA,CAEC,aAAYO,EAAI,cAAA,GAAmB,WAElC,SAAAA,EAAI,gBAAA,EAAkB,IAAKC,GAC1BZ,EAAAA,IAACa,EAAAA,UAAA,CAEC,MAAO,CACL,GAAGN,yBAAuB,CAAE,OAAQK,EAAK,OAAQ,CAAA,EAGlD,SAAAJ,EAAAA,WACCI,EAAK,OAAO,UAAU,KACtBA,EAAK,WAAA,CAAW,CAClB,EARKA,EAAK,EAAA,CAUb,CAAA,EAfID,EAAI,EAAA,CAiBZ,EAEDX,EAAAA,IAACI,WAAA,CACC,SAAAJ,EAAAA,IAACa,EAAAA,UAAA,CACC,QAASzB,EAAM,cAAA,EAAgB,OAC/B,UAAU,yBACX,SAAA,aAAA,CAAA,EAGH,CAAA,CAEJ,EACCQ,GACCI,EAAAA,IAAC,QAAA,CACC,SAAAA,EAAAA,IAACI,EAAAA,SAAA,CACC,eAACS,EAAAA,UAAA,CAAU,QAASzB,EAAM,cAAA,EAAgB,OACvC,WAAOA,EAAM,YAAA,EAAc,KAAK,IAAKuB,GAAQA,EAAI,QAAQ,CAAC,CAAA,CAC7D,CAAA,CACF,CAAA,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,EAEFb,EAAAA,KAAC,MAAA,CAAI,UAAU,iCACZ,SAAA,CAAAN,GACCQ,EAAAA,IAACc,EAAAA,oBAAA,CAAA,MACC1B,EACC,GAAII,IAAe,GAAO,GAAKA,CAAA,CAAA,EAGnCH,GACCD,EAAM,4BAAA,EAA8B,KAAK,OAAS,GAClDC,CAAA,CAAA,CACJ,CAAA,CAAA,CAAA,CAGN"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@tanstack/react-table"),l=require("nuqs"),te=require("react"),ne=require("./use-debounced-callback.cjs"),oe=require("../utils/parsers.cjs");function se(d){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const f in d)if(f!=="default"){const s=Object.getOwnPropertyDescriptor(d,f);Object.defineProperty(a,f,s.get?s:{enumerable:!0,get:()=>d[f]})}}return a.default=d,Object.freeze(a)}const t=se(te),ie="page",ae="perPage",re="sort",le="filters",ce="joinOperator",ue=",",ge=300,de=50;function fe(d){const{columns:a,pageCount:f,initialState:s,queryKeys:b,history:_="replace",debounceMs:y=ge,throttleMs:M=de,clearOnDefault:q=!1,enableAdvancedFilter:c=!1,scroll:K=!1,shallow:R=!0,startTransition:D,enableNuqs:i=!1,...P}=d,I=b?.page??ie,j=b?.perPage??ae,x=b?.sort??re,k=b?.filters??le,N=b?.joinOperator??ce,p=t.useMemo(()=>({history:_,scroll:K,shallow:R,throttleMs:M,debounceMs:y,clearOnDefault:q,startTransition:D}),[_,K,R,M,y,q,D]),[Q,U]=t.useState(s?.rowSelection??{}),[V,B]=t.useState(s?.columnVisibility??{}),[C,w]=i?l.useQueryState(I,l.parseAsInteger.withOptions(p).withDefault(1)):t.useState(s?.pagination?.pageIndex??0),[v,F]=i?l.useQueryState(j,l.parseAsInteger.withOptions(p).withDefault(s?.pagination?.pageSize??10)):t.useState(s?.pagination?.pageSize??10),A=t.useMemo(()=>({pageIndex:i?C-1:C,pageSize:v}),[C,v,i]),G=t.useCallback(e=>{if(typeof e=="function"){const n=e(A);w(i?n.pageIndex+1:n.pageIndex),F(n.pageSize)}else w(i?e.pageIndex+1:e.pageIndex),F(e.pageSize)},[A,w,F,i]),H=t.useMemo(()=>new Set(a.map(e=>e.id).filter(Boolean)),[a]),[O,h]=i?l.useQueryState(x,oe.getSortingStateParser(H).withOptions(p).withDefault(s?.sorting??[])):t.useState(s?.sorting??[]),L=t.useCallback(e=>{if(typeof e=="function"){const n=e(O);h(n)}else h(e)},[O,h]),S=t.useMemo(()=>c?[]:a.filter(e=>e.enableColumnFilter),[a,c]),Z=t.useMemo(()=>c?{}:S.reduce((e,n)=>(n.meta?.variant==="multiSelect"?e[n.id??""]=l.parseAsArrayOf(l.parseAsString,ue).withOptions(p):e[n.id??""]=l.parseAsString.withOptions(p),e),{}),[S,p,c]),[z,J]=i?l.useQueryStates(Z):t.useState({}),Y=ne.useDebouncedCallback(e=>{w(1),J(e)},y),W=t.useMemo(()=>c?[]:Object.entries(z).reduce((e,[n,o])=>{if(o!==null){const r=S.find(m=>m.id===n)?.meta?.variant==="multiSelect",u=Array.isArray(o)?o:r&&typeof o=="string"&&/[^a-zA-Z0-9]/.test(o)?o.split(/[^a-zA-Z0-9]+/).filter(Boolean):r?[o]:o;e.push({id:n,value:u})}return e},[]),[z,c,S]),[X,$]=t.useState(W),ee=t.useCallback(e=>{c||$(n=>{const o=typeof e=="function"?e(n):e,E=o.reduce((r,u)=>{const m=S.find(T=>T.id===u.id);if(m){const T=m.meta?.variant==="multiSelect";r[u.id]=u.value}return console.log("filterParsers",m,r),r},{});for(const r of n)o.some(u=>u.id===r.id)||(E[r.id]=null);return i&&Y(E),o})},[Y,S,c,i]);return{table:g.useReactTable({initialState:s,pageCount:f,state:{pagination:A,sorting:O,columnVisibility:V,rowSelection:Q,columnFilters:X},defaultColumn:{...P.defaultColumn,enableColumnFilter:!0,enableSorting:!1,enableHiding:!0,enablePinning:!0},enableRowSelection:!0,onRowSelectionChange:U,onPaginationChange:G,onSortingChange:L,onColumnFiltersChange:ee,onColumnVisibilityChange:B,getCoreRowModel:g.getCoreRowModel(),getFilteredRowModel:g.getFilteredRowModel(),getPaginationRowModel:g.getPaginationRowModel(),getSortedRowModel:g.getSortedRowModel(),getFacetedRowModel:g.getFacetedRowModel(),getFacetedUniqueValues:g.getFacetedUniqueValues(),getFacetedMinMaxValues:g.getFacetedMinMaxValues(),meta:{...P.meta,queryKeys:{page:I,perPage:j,sort:x,filters:k,joinOperator:N}},...P,columns:a}),shallow:R,debounceMs:y,throttleMs:M}}exports.useDataTable=fe;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=require("@tanstack/react-table"),l=require("nuqs"),oe=require("react"),se=require("./use-debounced-callback.cjs"),ie=require("../utils/parsers.cjs");function re(d){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const f in d)if(f!=="default"){const o=Object.getOwnPropertyDescriptor(d,f);Object.defineProperty(r,f,o.get?o:{enumerable:!0,get:()=>d[f]})}}return r.default=d,Object.freeze(r)}const t=re(oe),ae="page",le="perPage",ue="sort",ce="filters",ge="joinOperator",de=",",fe=300,pe=50;function Se(d){const{columns:r,pageCount:f,initialState:o,queryKeys:m,history:_="replace",debounceMs:y=fe,throttleMs:M=pe,clearOnDefault:q=!1,enableAdvancedFilter:u=!1,scroll:K=!1,shallow:C=!0,startTransition:D,enableNuqs:i=!1,...R}=d,I=m?.page??ae,j=m?.perPage??le,x=m?.sort??ue,k=m?.filters??ce,N=m?.joinOperator??ge,p=t.useMemo(()=>({history:_,scroll:K,shallow:C,throttleMs:M,debounceMs:y,clearOnDefault:q,startTransition:D}),[_,K,C,M,y,q,D]),[Q,U]=t.useState(o?.rowSelection??{}),[V,B]=t.useState(o?.columnVisibility??{}),[G,H]=t.useState(o?.columnOrder??[]),[P,w]=i?l.useQueryState(I,l.parseAsInteger.withOptions(p).withDefault(1)):t.useState(o?.pagination?.pageIndex??0),[v,O]=i?l.useQueryState(j,l.parseAsInteger.withOptions(p).withDefault(o?.pagination?.pageSize??10)):t.useState(o?.pagination?.pageSize??10),F=t.useMemo(()=>({pageIndex:i?P-1:P,pageSize:v}),[P,v,i]),L=t.useCallback(e=>{if(typeof e=="function"){const n=e(F);w(i?n.pageIndex+1:n.pageIndex),O(n.pageSize)}else w(i?e.pageIndex+1:e.pageIndex),O(e.pageSize)},[F,w,O,i]),Z=t.useMemo(()=>new Set(r.map(e=>e.id).filter(Boolean)),[r]),[h,A]=i?l.useQueryState(x,ie.getSortingStateParser(Z).withOptions(p).withDefault(o?.sorting??[])):t.useState(o?.sorting??[]),J=t.useCallback(e=>{if(typeof e=="function"){const n=e(h);A(n)}else A(e)},[h,A]),S=t.useMemo(()=>u?[]:r.filter(e=>e.enableColumnFilter),[r,u]),W=t.useMemo(()=>u?{}:S.reduce((e,n)=>(n.meta?.variant==="multiSelect"?e[n.id??""]=l.parseAsArrayOf(l.parseAsString,de).withOptions(p):e[n.id??""]=l.parseAsString.withOptions(p),e),{}),[S,p,u]),[z,X]=i?l.useQueryStates(W):t.useState({}),Y=se.useDebouncedCallback(e=>{w(1),X(e)},y),$=t.useMemo(()=>u?[]:Object.entries(z).reduce((e,[n,s])=>{if(s!==null){const a=S.find(b=>b.id===n)?.meta?.variant==="multiSelect",c=Array.isArray(s)?s:a&&typeof s=="string"&&/[^a-zA-Z0-9]/.test(s)?s.split(/[^a-zA-Z0-9]+/).filter(Boolean):a?[s]:s;e.push({id:n,value:c})}return e},[]),[z,u,S]),[ee,te]=t.useState($),ne=t.useCallback(e=>{u||te(n=>{const s=typeof e=="function"?e(n):e,E=s.reduce((a,c)=>{const b=S.find(T=>T.id===c.id);if(b){const T=b.meta?.variant==="multiSelect";a[c.id]=c.value}return console.log("filterParsers",b,a),a},{});for(const a of n)s.some(c=>c.id===a.id)||(E[a.id]=null);return i&&Y(E),s})},[Y,S,u,i]);return{table:g.useReactTable({initialState:o,pageCount:f,state:{pagination:F,sorting:h,columnVisibility:V,columnOrder:G,rowSelection:Q,columnFilters:ee},defaultColumn:{...R.defaultColumn,enableColumnFilter:!0,enableSorting:!1,enableHiding:!0,enablePinning:!0},enableRowSelection:!0,onRowSelectionChange:U,onPaginationChange:L,onSortingChange:J,onColumnFiltersChange:ne,onColumnVisibilityChange:B,onColumnOrderChange:H,getCoreRowModel:g.getCoreRowModel(),getFilteredRowModel:g.getFilteredRowModel(),getPaginationRowModel:g.getPaginationRowModel(),getSortedRowModel:g.getSortedRowModel(),getFacetedRowModel:g.getFacetedRowModel(),getFacetedUniqueValues:g.getFacetedUniqueValues(),getFacetedMinMaxValues:g.getFacetedMinMaxValues(),meta:{...R.meta,queryKeys:{page:I,perPage:j,sort:x,filters:k,joinOperator:N}},...R,columns:r}),shallow:C,debounceMs:y,throttleMs:M}}exports.useDataTable=Se;
2
2
  //# sourceMappingURL=use-data-table.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-data-table.cjs","sources":["../../../src/hooks/use-data-table.ts"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport {\n type ColumnFiltersState,\n getCoreRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n type TableOptions,\n type TableState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport {\n parseAsArrayOf,\n parseAsInteger,\n parseAsString,\n type SingleParser,\n type UseQueryStateOptions,\n useQueryState,\n useQueryStates,\n} from \"nuqs\";\nimport * as React from \"react\";\n\nimport { useDebouncedCallback } from \"@/hooks/use-debounced-callback\";\nimport { getSortingStateParser } from \"@/utils/parsers\";\nimport type { ExtendedColumnSort, QueryKeys } from \"@/types/data-table\";\n\nconst PAGE_KEY = \"page\";\nconst PER_PAGE_KEY = \"perPage\";\nconst SORT_KEY = \"sort\";\nconst FILTERS_KEY = \"filters\";\nconst JOIN_OPERATOR_KEY = \"joinOperator\";\nconst ARRAY_SEPARATOR = \",\";\nconst DEBOUNCE_MS = 300;\nconst THROTTLE_MS = 50;\n\ninterface UseDataTableProps<TData>\n extends Omit<\n TableOptions<TData>,\n // | \"state\"\n // | \"pageCount\"\n \"getCoreRowModel\"\n > {\n initialState?: Omit<Partial<TableState>, \"sorting\"> & {\n sorting?: ExtendedColumnSort<TData>[];\n };\n queryKeys?: Partial<QueryKeys>;\n history?: \"push\" | \"replace\";\n debounceMs?: number;\n throttleMs?: number;\n clearOnDefault?: boolean;\n enableAdvancedFilter?: boolean;\n scroll?: boolean;\n shallow?: boolean;\n startTransition?: React.TransitionStartFunction;\n enableNuqs?: boolean;\n}\n\nexport function useDataTable<TData>(props: UseDataTableProps<TData>) {\n const {\n columns,\n pageCount,\n initialState,\n queryKeys,\n history = \"replace\",\n debounceMs = DEBOUNCE_MS,\n throttleMs = THROTTLE_MS,\n clearOnDefault = false,\n enableAdvancedFilter = false,\n scroll = false,\n shallow = true,\n startTransition,\n enableNuqs = false,\n ...tableProps\n } = props;\n const pageKey = queryKeys?.page ?? PAGE_KEY;\n const perPageKey = queryKeys?.perPage ?? PER_PAGE_KEY;\n const sortKey = queryKeys?.sort ?? SORT_KEY;\n const filtersKey = queryKeys?.filters ?? FILTERS_KEY;\n const joinOperatorKey = queryKeys?.joinOperator ?? JOIN_OPERATOR_KEY;\n\n const queryStateOptions = React.useMemo<\n Omit<UseQueryStateOptions<string>, \"parse\">\n >(\n () => ({\n history,\n scroll,\n shallow,\n throttleMs,\n debounceMs,\n clearOnDefault,\n startTransition: startTransition as any,\n }),\n [\n history,\n scroll,\n shallow,\n throttleMs,\n debounceMs,\n clearOnDefault,\n startTransition,\n ]\n );\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>(\n initialState?.rowSelection ?? {}\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>(initialState?.columnVisibility ?? {});\n\n const [page, setPage] = enableNuqs\n ? useQueryState(\n pageKey,\n parseAsInteger.withOptions(queryStateOptions).withDefault(1)\n )\n : React.useState(initialState?.pagination?.pageIndex ?? 0);\n\n const [perPage, setPerPage] = enableNuqs\n ? useQueryState(\n perPageKey,\n parseAsInteger\n .withOptions(queryStateOptions)\n .withDefault(initialState?.pagination?.pageSize ?? 10)\n )\n : React.useState(initialState?.pagination?.pageSize ?? 10);\n\n const pagination: PaginationState = React.useMemo(() => {\n return {\n pageIndex: enableNuqs ? page - 1 : page, // zero-based index\n pageSize: perPage,\n };\n }, [page, perPage, enableNuqs]);\n\n const onPaginationChange = React.useCallback(\n (updaterOrValue: Updater<PaginationState>) => {\n if (typeof updaterOrValue === \"function\") {\n const newPagination = updaterOrValue(pagination);\n void setPage(\n enableNuqs ? newPagination.pageIndex + 1 : newPagination.pageIndex\n );\n void setPerPage(newPagination.pageSize);\n } else {\n void setPage(\n enableNuqs ? updaterOrValue.pageIndex + 1 : updaterOrValue.pageIndex\n );\n void setPerPage(updaterOrValue.pageSize);\n }\n },\n [pagination, setPage, setPerPage, enableNuqs]\n );\n\n const columnIds = React.useMemo(() => {\n return new Set(\n columns.map((column) => column.id).filter(Boolean) as string[]\n );\n }, [columns]);\n\n // Note: enableNuqs should be stable (not change during component lifecycle)\n // to avoid violating React hooks rules. If it changes, it may cause issues.\n const [sorting, setSorting] = enableNuqs\n ? useQueryState(\n sortKey,\n getSortingStateParser<TData>(columnIds)\n .withOptions(queryStateOptions)\n .withDefault(initialState?.sorting ?? [])\n )\n : React.useState(initialState?.sorting ?? []);\n\n const onSortingChange = React.useCallback(\n (updaterOrValue: Updater<SortingState>) => {\n if (typeof updaterOrValue === \"function\") {\n const newSorting = updaterOrValue(sorting);\n setSorting(newSorting as ExtendedColumnSort<TData>[]);\n } else {\n setSorting(updaterOrValue as ExtendedColumnSort<TData>[]);\n }\n },\n [sorting, setSorting]\n );\n\n const filterableColumns = React.useMemo(() => {\n if (enableAdvancedFilter) return [];\n\n return columns.filter((column) => column.enableColumnFilter);\n }, [columns, enableAdvancedFilter]);\n\n const filterParsers = React.useMemo(() => {\n if (enableAdvancedFilter) return {};\n\n return filterableColumns.reduce<\n Record<string, SingleParser<string> | SingleParser<string[]>>\n >((acc, column) => {\n if (column.meta?.variant === \"multiSelect\") {\n acc[column.id ?? \"\"] = parseAsArrayOf(\n parseAsString,\n ARRAY_SEPARATOR\n ).withOptions(queryStateOptions);\n } else {\n acc[column.id ?? \"\"] = parseAsString.withOptions(queryStateOptions);\n }\n return acc;\n }, {});\n }, [filterableColumns, queryStateOptions, enableAdvancedFilter]);\n\n // Note: enableNuqs should be stable (not change during component lifecycle)\n const [filterValues, setFilterValues] = enableNuqs\n ? useQueryStates(filterParsers)\n : React.useState<Record<string, string | string[] | null>>({});\n\n const debouncedSetFilterValues = useDebouncedCallback(\n (values: typeof filterValues) => {\n void setPage(1);\n void setFilterValues(values);\n },\n debounceMs\n );\n\n const initialColumnFilters: ColumnFiltersState = React.useMemo(() => {\n if (enableAdvancedFilter) return [];\n\n return Object.entries(filterValues).reduce<ColumnFiltersState>(\n (filters, [key, value]) => {\n if (value !== null) {\n const column = filterableColumns.find((col) => col.id === key);\n const isMultiSelect = column?.meta?.variant === \"multiSelect\";\n\n const processedValue = Array.isArray(value)\n ? value\n : isMultiSelect &&\n typeof value === \"string\" &&\n /[^a-zA-Z0-9]/.test(value)\n ? value.split(/[^a-zA-Z0-9]+/).filter(Boolean)\n : isMultiSelect\n ? [value]\n : value;\n\n filters.push({\n id: key,\n value: processedValue,\n });\n }\n return filters;\n },\n []\n );\n }, [filterValues, enableAdvancedFilter, filterableColumns]);\n\n const [columnFilters, setColumnFilters] =\n React.useState<ColumnFiltersState>(initialColumnFilters);\n\n const onColumnFiltersChange = React.useCallback(\n (updaterOrValue: Updater<ColumnFiltersState>) => {\n if (enableAdvancedFilter) return;\n\n setColumnFilters((prev) => {\n const next =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(prev)\n : updaterOrValue;\n\n const filterUpdates = next.reduce<\n Record<string, string | string[] | null>\n >((acc, filter) => {\n const column = filterableColumns.find((col) => col.id === filter.id);\n if (column) {\n const isMultiSelect = column.meta?.variant === \"multiSelect\";\n acc[filter.id] = isMultiSelect\n ? (filter.value as string[])\n : (filter.value as string);\n }\n console.log(\"filterParsers\", column, acc);\n return acc;\n }, {});\n\n for (const prevFilter of prev) {\n if (!next.some((filter) => filter.id === prevFilter.id)) {\n filterUpdates[prevFilter.id] = null;\n }\n }\n\n if (enableNuqs) {\n debouncedSetFilterValues(filterUpdates);\n }\n return next;\n });\n },\n [\n debouncedSetFilterValues,\n filterableColumns,\n enableAdvancedFilter,\n enableNuqs,\n ]\n );\n\n const table = useReactTable({\n initialState,\n pageCount,\n state: {\n pagination,\n sorting,\n columnVisibility,\n rowSelection,\n columnFilters,\n },\n defaultColumn: {\n ...tableProps.defaultColumn,\n enableColumnFilter: true,\n enableSorting: false,\n enableHiding: true,\n enablePinning: true,\n },\n enableRowSelection: true,\n onRowSelectionChange: setRowSelection,\n onPaginationChange,\n onSortingChange,\n onColumnFiltersChange,\n onColumnVisibilityChange: setColumnVisibility,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getFacetedMinMaxValues: getFacetedMinMaxValues(),\n meta: {\n ...tableProps.meta,\n queryKeys: {\n page: pageKey,\n perPage: perPageKey,\n sort: sortKey,\n filters: filtersKey,\n joinOperator: joinOperatorKey,\n },\n },\n ...tableProps,\n columns,\n });\n\n return { table, shallow, debounceMs, throttleMs };\n}\n"],"names":["PAGE_KEY","PER_PAGE_KEY","SORT_KEY","FILTERS_KEY","JOIN_OPERATOR_KEY","ARRAY_SEPARATOR","DEBOUNCE_MS","THROTTLE_MS","useDataTable","props","columns","pageCount","initialState","queryKeys","history","debounceMs","throttleMs","clearOnDefault","enableAdvancedFilter","scroll","shallow","startTransition","enableNuqs","tableProps","pageKey","perPageKey","sortKey","filtersKey","joinOperatorKey","queryStateOptions","React","rowSelection","setRowSelection","columnVisibility","setColumnVisibility","page","setPage","useQueryState","parseAsInteger","perPage","setPerPage","pagination","onPaginationChange","updaterOrValue","newPagination","columnIds","column","sorting","setSorting","getSortingStateParser","onSortingChange","newSorting","filterableColumns","filterParsers","acc","parseAsArrayOf","parseAsString","filterValues","setFilterValues","useQueryStates","debouncedSetFilterValues","useDebouncedCallback","values","initialColumnFilters","filters","key","value","isMultiSelect","col","processedValue","columnFilters","setColumnFilters","onColumnFiltersChange","prev","next","filterUpdates","filter","prevFilter","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues"],"mappings":"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"}
1
+ {"version":3,"file":"use-data-table.cjs","sources":["../../../src/hooks/use-data-table.ts"],"sourcesContent":["\"use client\";\n\n/* eslint-disable react-hooks/rules-of-hooks */\n\nimport {\n type ColumnFiltersState,\n type ColumnOrderState,\n getCoreRowModel,\n getFacetedMinMaxValues,\n getFacetedRowModel,\n getFacetedUniqueValues,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type PaginationState,\n type RowSelectionState,\n type SortingState,\n type TableOptions,\n type TableState,\n type Updater,\n useReactTable,\n type VisibilityState,\n} from \"@tanstack/react-table\";\nimport {\n parseAsArrayOf,\n parseAsInteger,\n parseAsString,\n type SingleParser,\n type UseQueryStateOptions,\n useQueryState,\n useQueryStates,\n} from \"nuqs\";\nimport * as React from \"react\";\n\nimport { useDebouncedCallback } from \"@/hooks/use-debounced-callback\";\nimport { getSortingStateParser } from \"@/utils/parsers\";\nimport type { ExtendedColumnSort, QueryKeys } from \"@/types/data-table\";\n\nconst PAGE_KEY = \"page\";\nconst PER_PAGE_KEY = \"perPage\";\nconst SORT_KEY = \"sort\";\nconst FILTERS_KEY = \"filters\";\nconst JOIN_OPERATOR_KEY = \"joinOperator\";\nconst ARRAY_SEPARATOR = \",\";\nconst DEBOUNCE_MS = 300;\nconst THROTTLE_MS = 50;\n\ninterface UseDataTableProps<TData>\n extends Omit<\n TableOptions<TData>,\n // | \"state\"\n // | \"pageCount\"\n \"getCoreRowModel\"\n > {\n initialState?: Omit<Partial<TableState>, \"sorting\"> & {\n sorting?: ExtendedColumnSort<TData>[];\n };\n queryKeys?: Partial<QueryKeys>;\n history?: \"push\" | \"replace\";\n debounceMs?: number;\n throttleMs?: number;\n clearOnDefault?: boolean;\n enableAdvancedFilter?: boolean;\n scroll?: boolean;\n shallow?: boolean;\n startTransition?: React.TransitionStartFunction;\n enableNuqs?: boolean;\n}\n\nexport function useDataTable<TData>(props: UseDataTableProps<TData>) {\n const {\n columns,\n pageCount,\n initialState,\n queryKeys,\n history = \"replace\",\n debounceMs = DEBOUNCE_MS,\n throttleMs = THROTTLE_MS,\n clearOnDefault = false,\n enableAdvancedFilter = false,\n scroll = false,\n shallow = true,\n startTransition,\n enableNuqs = false,\n ...tableProps\n } = props;\n const pageKey = queryKeys?.page ?? PAGE_KEY;\n const perPageKey = queryKeys?.perPage ?? PER_PAGE_KEY;\n const sortKey = queryKeys?.sort ?? SORT_KEY;\n const filtersKey = queryKeys?.filters ?? FILTERS_KEY;\n const joinOperatorKey = queryKeys?.joinOperator ?? JOIN_OPERATOR_KEY;\n\n const queryStateOptions = React.useMemo<\n Omit<UseQueryStateOptions<string>, \"parse\">\n >(\n () => ({\n history,\n scroll,\n shallow,\n throttleMs,\n debounceMs,\n clearOnDefault,\n startTransition: startTransition as any,\n }),\n [\n history,\n scroll,\n shallow,\n throttleMs,\n debounceMs,\n clearOnDefault,\n startTransition,\n ]\n );\n\n const [rowSelection, setRowSelection] = React.useState<RowSelectionState>(\n initialState?.rowSelection ?? {}\n );\n const [columnVisibility, setColumnVisibility] =\n React.useState<VisibilityState>(initialState?.columnVisibility ?? {});\n const [columnOrder, setColumnOrder] = React.useState<ColumnOrderState>(\n initialState?.columnOrder ?? []\n );\n\n const [page, setPage] = enableNuqs\n ? useQueryState(\n pageKey,\n parseAsInteger.withOptions(queryStateOptions).withDefault(1)\n )\n : React.useState(initialState?.pagination?.pageIndex ?? 0);\n\n const [perPage, setPerPage] = enableNuqs\n ? useQueryState(\n perPageKey,\n parseAsInteger\n .withOptions(queryStateOptions)\n .withDefault(initialState?.pagination?.pageSize ?? 10)\n )\n : React.useState(initialState?.pagination?.pageSize ?? 10);\n\n const pagination: PaginationState = React.useMemo(() => {\n return {\n pageIndex: enableNuqs ? page - 1 : page, // zero-based index\n pageSize: perPage,\n };\n }, [page, perPage, enableNuqs]);\n\n const onPaginationChange = React.useCallback(\n (updaterOrValue: Updater<PaginationState>) => {\n if (typeof updaterOrValue === \"function\") {\n const newPagination = updaterOrValue(pagination);\n void setPage(\n enableNuqs ? newPagination.pageIndex + 1 : newPagination.pageIndex\n );\n void setPerPage(newPagination.pageSize);\n } else {\n void setPage(\n enableNuqs ? updaterOrValue.pageIndex + 1 : updaterOrValue.pageIndex\n );\n void setPerPage(updaterOrValue.pageSize);\n }\n },\n [pagination, setPage, setPerPage, enableNuqs]\n );\n\n const columnIds = React.useMemo(() => {\n return new Set(\n columns.map((column) => column.id).filter(Boolean) as string[]\n );\n }, [columns]);\n\n // Note: enableNuqs should be stable (not change during component lifecycle)\n // to avoid violating React hooks rules. If it changes, it may cause issues.\n const [sorting, setSorting] = enableNuqs\n ? useQueryState(\n sortKey,\n getSortingStateParser<TData>(columnIds)\n .withOptions(queryStateOptions)\n .withDefault(initialState?.sorting ?? [])\n )\n : React.useState(initialState?.sorting ?? []);\n\n const onSortingChange = React.useCallback(\n (updaterOrValue: Updater<SortingState>) => {\n if (typeof updaterOrValue === \"function\") {\n const newSorting = updaterOrValue(sorting);\n setSorting(newSorting as ExtendedColumnSort<TData>[]);\n } else {\n setSorting(updaterOrValue as ExtendedColumnSort<TData>[]);\n }\n },\n [sorting, setSorting]\n );\n\n const filterableColumns = React.useMemo(() => {\n if (enableAdvancedFilter) return [];\n\n return columns.filter((column) => column.enableColumnFilter);\n }, [columns, enableAdvancedFilter]);\n\n const filterParsers = React.useMemo(() => {\n if (enableAdvancedFilter) return {};\n\n return filterableColumns.reduce<\n Record<string, SingleParser<string> | SingleParser<string[]>>\n >((acc, column) => {\n if (column.meta?.variant === \"multiSelect\") {\n acc[column.id ?? \"\"] = parseAsArrayOf(\n parseAsString,\n ARRAY_SEPARATOR\n ).withOptions(queryStateOptions);\n } else {\n acc[column.id ?? \"\"] = parseAsString.withOptions(queryStateOptions);\n }\n return acc;\n }, {});\n }, [filterableColumns, queryStateOptions, enableAdvancedFilter]);\n\n // Note: enableNuqs should be stable (not change during component lifecycle)\n const [filterValues, setFilterValues] = enableNuqs\n ? useQueryStates(filterParsers)\n : React.useState<Record<string, string | string[] | null>>({});\n\n const debouncedSetFilterValues = useDebouncedCallback(\n (values: typeof filterValues) => {\n void setPage(1);\n void setFilterValues(values);\n },\n debounceMs\n );\n\n const initialColumnFilters: ColumnFiltersState = React.useMemo(() => {\n if (enableAdvancedFilter) return [];\n\n return Object.entries(filterValues).reduce<ColumnFiltersState>(\n (filters, [key, value]) => {\n if (value !== null) {\n const column = filterableColumns.find((col) => col.id === key);\n const isMultiSelect = column?.meta?.variant === \"multiSelect\";\n\n const processedValue = Array.isArray(value)\n ? value\n : isMultiSelect &&\n typeof value === \"string\" &&\n /[^a-zA-Z0-9]/.test(value)\n ? value.split(/[^a-zA-Z0-9]+/).filter(Boolean)\n : isMultiSelect\n ? [value]\n : value;\n\n filters.push({\n id: key,\n value: processedValue,\n });\n }\n return filters;\n },\n []\n );\n }, [filterValues, enableAdvancedFilter, filterableColumns]);\n\n const [columnFilters, setColumnFilters] =\n React.useState<ColumnFiltersState>(initialColumnFilters);\n\n const onColumnFiltersChange = React.useCallback(\n (updaterOrValue: Updater<ColumnFiltersState>) => {\n if (enableAdvancedFilter) return;\n\n setColumnFilters((prev) => {\n const next =\n typeof updaterOrValue === \"function\"\n ? updaterOrValue(prev)\n : updaterOrValue;\n\n const filterUpdates = next.reduce<\n Record<string, string | string[] | null>\n >((acc, filter) => {\n const column = filterableColumns.find((col) => col.id === filter.id);\n if (column) {\n const isMultiSelect = column.meta?.variant === \"multiSelect\";\n acc[filter.id] = isMultiSelect\n ? (filter.value as string[])\n : (filter.value as string);\n }\n console.log(\"filterParsers\", column, acc);\n return acc;\n }, {});\n\n for (const prevFilter of prev) {\n if (!next.some((filter) => filter.id === prevFilter.id)) {\n filterUpdates[prevFilter.id] = null;\n }\n }\n\n if (enableNuqs) {\n debouncedSetFilterValues(filterUpdates);\n }\n return next;\n });\n },\n [\n debouncedSetFilterValues,\n filterableColumns,\n enableAdvancedFilter,\n enableNuqs,\n ]\n );\n\n const table = useReactTable({\n initialState,\n pageCount,\n state: {\n pagination,\n sorting,\n columnVisibility,\n columnOrder,\n rowSelection,\n columnFilters,\n },\n defaultColumn: {\n ...tableProps.defaultColumn,\n enableColumnFilter: true,\n enableSorting: false,\n enableHiding: true,\n enablePinning: true,\n },\n enableRowSelection: true,\n onRowSelectionChange: setRowSelection,\n onPaginationChange,\n onSortingChange,\n onColumnFiltersChange,\n onColumnVisibilityChange: setColumnVisibility,\n onColumnOrderChange: setColumnOrder,\n getCoreRowModel: getCoreRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n getPaginationRowModel: getPaginationRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFacetedRowModel: getFacetedRowModel(),\n getFacetedUniqueValues: getFacetedUniqueValues(),\n getFacetedMinMaxValues: getFacetedMinMaxValues(),\n meta: {\n ...tableProps.meta,\n queryKeys: {\n page: pageKey,\n perPage: perPageKey,\n sort: sortKey,\n filters: filtersKey,\n joinOperator: joinOperatorKey,\n },\n },\n ...tableProps,\n columns,\n });\n\n return { table, shallow, debounceMs, throttleMs };\n}\n"],"names":["PAGE_KEY","PER_PAGE_KEY","SORT_KEY","FILTERS_KEY","JOIN_OPERATOR_KEY","ARRAY_SEPARATOR","DEBOUNCE_MS","THROTTLE_MS","useDataTable","props","columns","pageCount","initialState","queryKeys","history","debounceMs","throttleMs","clearOnDefault","enableAdvancedFilter","scroll","shallow","startTransition","enableNuqs","tableProps","pageKey","perPageKey","sortKey","filtersKey","joinOperatorKey","queryStateOptions","React","rowSelection","setRowSelection","columnVisibility","setColumnVisibility","columnOrder","setColumnOrder","page","setPage","useQueryState","parseAsInteger","perPage","setPerPage","pagination","onPaginationChange","updaterOrValue","newPagination","columnIds","column","sorting","setSorting","getSortingStateParser","onSortingChange","newSorting","filterableColumns","filterParsers","acc","parseAsArrayOf","parseAsString","filterValues","setFilterValues","useQueryStates","debouncedSetFilterValues","useDebouncedCallback","values","initialColumnFilters","filters","key","value","isMultiSelect","col","processedValue","columnFilters","setColumnFilters","onColumnFiltersChange","prev","next","filterUpdates","filter","prevFilter","useReactTable","getCoreRowModel","getFilteredRowModel","getPaginationRowModel","getSortedRowModel","getFacetedRowModel","getFacetedUniqueValues","getFacetedMinMaxValues"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),c=require("@radix-ui/react-alert-dialog"),r=require("../lib/utils.cjs");require("./button.cjs");function g(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const o=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(e,l,o.get?o:{enumerable:!0,get:()=>t[l]})}}return e.default=t,Object.freeze(e)}const s=g(c);function u({...t}){return a.jsx(s.Root,{"data-slot":"alert-dialog",...t})}function f({...t}){return a.jsx(s.Trigger,{"data-slot":"alert-dialog-trigger",...t})}function i({...t}){return a.jsx(s.Portal,{"data-slot":"alert-dialog-portal",...t})}function n({className:t,backdropFilter:e,overlay:l="dark",...o}){const d=l==="dark"?"bg-black/50":"bg-white/50";return a.jsx(s.Overlay,{"data-slot":"alert-dialog-overlay",className:r.cn("ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:fixed ds:inset-0 ds:z-50",d,t),style:e?{backdropFilter:`blur(${e}px)`}:void 0,...o})}function m({className:t,noDefaultAnimation:e,backdropFilter:l,overlay:o,...d}){return a.jsxs(i,{children:[a.jsx(n,{backdropFilter:l,overlay:o}),a.jsx(s.Content,{"data-slot":"alert-dialog-content",className:r.cn("ds:bg-background ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:fixed ds:top-[50%] ds:left-[50%] ds:z-50 ds:grid ds:w-full ds:max-w-[calc(100%-2rem)] ds:translate-x-[-50%] ds:translate-y-[-50%] ds:gap-4 ds:rounded-lg ds:border ds:p-6 ds:shadow-lg ds:duration-200 ds:sm:max-w-lg",{"ds:data-[state=open]:animate-in":!e},t),...d})]})}function x({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-header",className:r.cn("ds:flex ds:flex-col ds:gap-2 ds:text-center ds:sm:text-left",t),...e})}function D({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-footer",className:r.cn("ds:flex ds:flex-col-reverse ds:gap-2 ds:sm:flex-row ds:sm:justify-end",t),...e})}function p({className:t,...e}){return a.jsx(s.Title,{"data-slot":"alert-dialog-title",className:r.cn("ds:text-lg ds:font-semibold",t),...e})}function A({className:t,...e}){return a.jsx(s.Description,{"data-slot":"alert-dialog-description",className:r.cn("ds:text-muted-foreground ds:text-sm",t),...e})}exports.AlertDialog=u;exports.AlertDialogContent=m;exports.AlertDialogDescription=A;exports.AlertDialogFooter=D;exports.AlertDialogHeader=x;exports.AlertDialogOverlay=n;exports.AlertDialogPortal=i;exports.AlertDialogTitle=p;exports.AlertDialogTrigger=f;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),c=require("@radix-ui/react-alert-dialog"),o=require("../lib/utils.cjs");require("./button.cjs");function g(t){const e=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const l in t)if(l!=="default"){const r=Object.getOwnPropertyDescriptor(t,l);Object.defineProperty(e,l,r.get?r:{enumerable:!0,get:()=>t[l]})}}return e.default=t,Object.freeze(e)}const s=g(c);function u({...t}){return a.jsx(s.Root,{"data-slot":"alert-dialog",...t})}function f({...t}){return a.jsx(s.Trigger,{"data-slot":"alert-dialog-trigger",...t})}function i({...t}){return a.jsx(s.Portal,{"data-slot":"alert-dialog-portal",...t})}function n({className:t,backdropFilter:e,overlay:l="dark",...r}){const d=l==="dark"?"bg-black/50":"bg-white/50";return a.jsx(s.Overlay,{"data-slot":"alert-dialog-overlay",className:o.cn("ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:fixed ds:inset-0 ds:z-50",d,t),style:e?{backdropFilter:`blur(${e}px)`}:void 0,...r})}function m({className:t,noDefaultAnimation:e,backdropFilter:l,overlay:r,...d}){return a.jsxs(i,{children:[a.jsx(n,{backdropFilter:l,overlay:r}),a.jsx(s.Content,{"data-slot":"alert-dialog-content",className:o.cn("ds:bg-background ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:fixed ds:top-[50%] ds:left-[50%] ds:z-50 ds:grid ds:w-full ds:max-w-[calc(100%-2rem)] ds:translate-x-[-50%] ds:translate-y-[-50%] ds:gap-4 ds:rounded-lg ds:border ds:border-border ds:p-6 ds:shadow-lg ds:duration-200 ds:sm:max-w-lg",{"ds:data-[state=open]:animate-in":!e},t),...d})]})}function x({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-header",className:o.cn("ds:flex ds:flex-col ds:gap-2 ds:text-center ds:sm:text-left",t),...e})}function D({className:t,...e}){return a.jsx("div",{"data-slot":"alert-dialog-footer",className:o.cn("ds:flex ds:flex-col-reverse ds:gap-2 ds:sm:flex-row ds:sm:justify-end",t),...e})}function p({className:t,...e}){return a.jsx(s.Title,{"data-slot":"alert-dialog-title",className:o.cn("ds:text-lg ds:font-semibold",t),...e})}function A({className:t,...e}){return a.jsx(s.Description,{"data-slot":"alert-dialog-description",className:o.cn("ds:text-muted-foreground ds:text-sm",t),...e})}exports.AlertDialog=u;exports.AlertDialogContent=m;exports.AlertDialogDescription=A;exports.AlertDialogFooter=D;exports.AlertDialogHeader=x;exports.AlertDialogOverlay=n;exports.AlertDialogPortal=i;exports.AlertDialogTitle=p;exports.AlertDialogTrigger=f;
2
2
  //# sourceMappingURL=alert-dialog.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"alert-dialog.cjs","sources":["../../../../../../../../packages/ui/src/components/alert-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { buttonVariants } from \"@dsui/ui/components/button\";\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n backdropFilter,\n overlay = \"dark\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & {\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n}) {\n const overlayClass = overlay === \"dark\" ? \"bg-black/50\" : \"bg-white/50\";\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:fixed ds:inset-0 ds:z-50\",\n overlayClass,\n className\n )}\n style={\n backdropFilter\n ? { backdropFilter: `blur(${backdropFilter}px)` }\n : undefined\n }\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n noDefaultAnimation,\n backdropFilter,\n overlay,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n noDefaultAnimation?: boolean;\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay backdropFilter={backdropFilter} overlay={overlay} />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"ds:bg-background ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:fixed ds:top-[50%] ds:left-[50%] ds:z-50 ds:grid ds:w-full ds:max-w-[calc(100%-2rem)] ds:translate-x-[-50%] ds:translate-y-[-50%] ds:gap-4 ds:rounded-lg ds:border ds:p-6 ds:shadow-lg ds:duration-200 ds:sm:max-w-lg\",\n {\n \"ds:data-[state=open]:animate-in\": !noDefaultAnimation,\n },\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:text-center ds:sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"ds:flex ds:flex-col-reverse ds:gap-2 ds:sm:flex-row ds:sm:justify-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"ds:text-lg ds:font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"ds:text-muted-foreground ds:text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"],"names":["AlertDialog","props","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","className","backdropFilter","overlay","overlayClass","jsx","cn","AlertDialogContent","noDefaultAnimation","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription"],"mappings":"+eAQA,SAASA,EAAY,CACnB,GAAGC,CACL,EAA2D,CACzD,aAAQC,EAAqB,KAArB,CAA0B,YAAU,eAAgB,GAAGD,EAAO,CACxE,CAEA,SAASE,EAAmB,CAC1B,GAAGF,CACL,EAA8D,CAC5D,aACGC,EAAqB,QAArB,CAA6B,YAAU,uBAAwB,GAAGD,EAAO,CAE9E,CAEA,SAASG,EAAkB,CACzB,GAAGH,CACL,EAA6D,CAC3D,aACGC,EAAqB,OAArB,CAA4B,YAAU,sBAAuB,GAAGD,EAAO,CAE5E,CAEA,SAASI,EAAmB,CAC1B,UAAAC,EACA,eAAAC,EACA,QAAAC,EAAU,OACV,GAAGP,CACL,EAGG,CACD,MAAMQ,EAAeD,IAAY,OAAS,cAAgB,cAC1D,OACEE,EAAAA,IAACR,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWS,EAAAA,GACT,kKACAF,EACAH,CAAA,EAEF,MACEC,EACI,CAAE,eAAgB,QAAQA,CAAc,OACxC,OAEL,GAAGN,CAAA,CAAA,CAGV,CAEA,SAASW,EAAmB,CAC1B,UAAAN,EACA,mBAAAO,EACA,eAAAN,EACA,QAAAC,EACA,GAAGP,CACL,EAIG,CACD,cACGG,EAAA,CACC,SAAA,CAAAM,EAAAA,IAACL,EAAA,CAAmB,eAAAE,EAAgC,QAAAC,CAAA,CAAkB,EACtEE,EAAAA,IAACR,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWS,EAAAA,GACT,mZACA,CACE,kCAAmC,CAACE,CAAA,EAEtCP,CAAA,EAED,GAAGL,CAAA,CAAA,CACN,EACF,CAEJ,CAEA,SAASa,EAAkB,CACzB,UAAAR,EACA,GAAGL,CACL,EAAgC,CAC9B,OACES,EAAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWC,EAAAA,GAAG,8DAA+DL,CAAS,EACrF,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASc,EAAkB,CACzB,UAAAT,EACA,GAAGL,CACL,EAAgC,CAC9B,OACES,EAAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWC,EAAAA,GACT,wEACAL,CAAA,EAED,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASe,EAAiB,CACxB,UAAAV,EACA,GAAGL,CACL,EAA4D,CAC1D,OACES,EAAAA,IAACR,EAAqB,MAArB,CACC,YAAU,qBACV,UAAWS,EAAAA,GAAG,8BAA+BL,CAAS,EACrD,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASgB,EAAuB,CAC9B,UAAAX,EACA,GAAGL,CACL,EAAkE,CAChE,OACES,EAAAA,IAACR,EAAqB,YAArB,CACC,YAAU,2BACV,UAAWS,EAAAA,GAAG,sCAAuCL,CAAS,EAC7D,GAAGL,CAAA,CAAA,CAGV"}
1
+ {"version":3,"file":"alert-dialog.cjs","sources":["../../../../../../../../packages/ui/src/components/alert-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { buttonVariants } from \"@dsui/ui/components/button\";\n\nfunction AlertDialog({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root>) {\n return <AlertDialogPrimitive.Root data-slot=\"alert-dialog\" {...props} />;\n}\n\nfunction AlertDialogTrigger({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger>) {\n return (\n <AlertDialogPrimitive.Trigger data-slot=\"alert-dialog-trigger\" {...props} />\n );\n}\n\nfunction AlertDialogPortal({\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal>) {\n return (\n <AlertDialogPrimitive.Portal data-slot=\"alert-dialog-portal\" {...props} />\n );\n}\n\nfunction AlertDialogOverlay({\n className,\n backdropFilter,\n overlay = \"dark\",\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & {\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n}) {\n const overlayClass = overlay === \"dark\" ? \"bg-black/50\" : \"bg-white/50\";\n return (\n <AlertDialogPrimitive.Overlay\n data-slot=\"alert-dialog-overlay\"\n className={cn(\n \"ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:fixed ds:inset-0 ds:z-50\",\n overlayClass,\n className\n )}\n style={\n backdropFilter\n ? { backdropFilter: `blur(${backdropFilter}px)` }\n : undefined\n }\n {...props}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n noDefaultAnimation,\n backdropFilter,\n overlay,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n noDefaultAnimation?: boolean;\n backdropFilter?: number;\n overlay?: \"dark\" | \"light\";\n}) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay backdropFilter={backdropFilter} overlay={overlay} />\n <AlertDialogPrimitive.Content\n data-slot=\"alert-dialog-content\"\n className={cn(\n \"ds:bg-background ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:fixed ds:top-[50%] ds:left-[50%] ds:z-50 ds:grid ds:w-full ds:max-w-[calc(100%-2rem)] ds:translate-x-[-50%] ds:translate-y-[-50%] ds:gap-4 ds:rounded-lg ds:border ds:border-border ds:p-6 ds:shadow-lg ds:duration-200 ds:sm:max-w-lg\",\n {\n \"ds:data-[state=open]:animate-in\": !noDefaultAnimation,\n },\n className\n )}\n {...props}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-header\"\n className={cn(\"ds:flex ds:flex-col ds:gap-2 ds:text-center ds:sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"alert-dialog-footer\"\n className={cn(\n \"ds:flex ds:flex-col-reverse ds:gap-2 ds:sm:flex-row ds:sm:justify-end\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title>) {\n return (\n <AlertDialogPrimitive.Title\n data-slot=\"alert-dialog-title\"\n className={cn(\"ds:text-lg ds:font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description>) {\n return (\n <AlertDialogPrimitive.Description\n data-slot=\"alert-dialog-description\"\n className={cn(\"ds:text-muted-foreground ds:text-sm\", className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action>) {\n return (\n <AlertDialogPrimitive.Action\n className={cn(buttonVariants(), className)}\n {...props}\n />\n );\n}\n\nfunction AlertDialogCancel({\n className,\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel>) {\n return (\n <AlertDialogPrimitive.Cancel\n className={cn(buttonVariants({ variant: \"outline\" }), className)}\n {...props}\n />\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogTrigger,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n};\n"],"names":["AlertDialog","props","AlertDialogPrimitive","AlertDialogTrigger","AlertDialogPortal","AlertDialogOverlay","className","backdropFilter","overlay","overlayClass","jsx","cn","AlertDialogContent","noDefaultAnimation","AlertDialogHeader","AlertDialogFooter","AlertDialogTitle","AlertDialogDescription"],"mappings":"+eAQA,SAASA,EAAY,CACnB,GAAGC,CACL,EAA2D,CACzD,aAAQC,EAAqB,KAArB,CAA0B,YAAU,eAAgB,GAAGD,EAAO,CACxE,CAEA,SAASE,EAAmB,CAC1B,GAAGF,CACL,EAA8D,CAC5D,aACGC,EAAqB,QAArB,CAA6B,YAAU,uBAAwB,GAAGD,EAAO,CAE9E,CAEA,SAASG,EAAkB,CACzB,GAAGH,CACL,EAA6D,CAC3D,aACGC,EAAqB,OAArB,CAA4B,YAAU,sBAAuB,GAAGD,EAAO,CAE5E,CAEA,SAASI,EAAmB,CAC1B,UAAAC,EACA,eAAAC,EACA,QAAAC,EAAU,OACV,GAAGP,CACL,EAGG,CACD,MAAMQ,EAAeD,IAAY,OAAS,cAAgB,cAC1D,OACEE,EAAAA,IAACR,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWS,EAAAA,GACT,kKACAF,EACAH,CAAA,EAEF,MACEC,EACI,CAAE,eAAgB,QAAQA,CAAc,OACxC,OAEL,GAAGN,CAAA,CAAA,CAGV,CAEA,SAASW,EAAmB,CAC1B,UAAAN,EACA,mBAAAO,EACA,eAAAN,EACA,QAAAC,EACA,GAAGP,CACL,EAIG,CACD,cACGG,EAAA,CACC,SAAA,CAAAM,EAAAA,IAACL,EAAA,CAAmB,eAAAE,EAAgC,QAAAC,CAAA,CAAkB,EACtEE,EAAAA,IAACR,EAAqB,QAArB,CACC,YAAU,uBACV,UAAWS,EAAAA,GACT,oaACA,CACE,kCAAmC,CAACE,CAAA,EAEtCP,CAAA,EAED,GAAGL,CAAA,CAAA,CACN,EACF,CAEJ,CAEA,SAASa,EAAkB,CACzB,UAAAR,EACA,GAAGL,CACL,EAAgC,CAC9B,OACES,EAAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWC,EAAAA,GAAG,8DAA+DL,CAAS,EACrF,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASc,EAAkB,CACzB,UAAAT,EACA,GAAGL,CACL,EAAgC,CAC9B,OACES,EAAAA,IAAC,MAAA,CACC,YAAU,sBACV,UAAWC,EAAAA,GACT,wEACAL,CAAA,EAED,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASe,EAAiB,CACxB,UAAAV,EACA,GAAGL,CACL,EAA4D,CAC1D,OACES,EAAAA,IAACR,EAAqB,MAArB,CACC,YAAU,qBACV,UAAWS,EAAAA,GAAG,8BAA+BL,CAAS,EACrD,GAAGL,CAAA,CAAA,CAGV,CAEA,SAASgB,EAAuB,CAC9B,UAAAX,EACA,GAAGL,CACL,EAAkE,CAChE,OACES,EAAAA,IAACR,EAAqB,YAArB,CACC,YAAU,2BACV,UAAWS,EAAAA,GAAG,sCAAuCL,CAAS,EAC7D,GAAGL,CAAA,CAAA,CAGV"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),k=require("react"),p=require("lucide-react"),x=require("react-day-picker"),d=require("../lib/utils.cjs"),_=require("./button.cjs");function z(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(a,e,o.get?o:{enumerable:!0,get:()=>r[e]})}}return a.default=r,Object.freeze(a)}const v=z(k);function j({className:r,classNames:a,showOutsideDays:e=!0,captionLayout:o="label",buttonVariant:i="ghost",variant:u="default",color:f="primary",formatters:c,components:b,...y}){const s=x.getDefaultClassNames(),m=h(f);return n.jsx(x.DayPicker,{showOutsideDays:e,className:d.cn("ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent",String.raw`ds:rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`ds:rtl:**:[.rdp-button\_previous>svg]:rotate-180`,r),captionLayout:o,formatters:{formatMonthDropdown:t=>t.toLocaleString("default",{month:"short"}),...c},classNames:{root:d.cn("ds:w-fit",s.root),months:d.cn("ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative",s.months),month:d.cn("ds:flex ds:flex-col ds:w-full ds:gap-4",s.month),nav:d.cn("ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between",s.nav),button_previous:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_previous),button_next:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_next),month_caption:d.cn("ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)",s.month_caption),dropdowns:d.cn("ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5",s.dropdowns),dropdown_root:d.cn("ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md",s.dropdown_root),dropdown:d.cn("ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0",s.dropdown),caption_label:d.cn("ds:select-none ds:font-medium",o==="label"?"ds:text-sm":"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5",s.caption_label),table:"ds:w-full ds:border-collapse",weekdays:d.cn("ds:flex",s.weekdays),weekday:d.cn("ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none",s.weekday),week:d.cn("ds:flex ds:w-full ds:mt-2",s.week),week_number_header:d.cn("ds:select-none ds:w-(--cell-size)",s.week_number_header),week_number:d.cn("ds:text-[0.8rem] ds:select-none ds:text-muted-foreground",s.week_number),day:d.cn("ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none",y.showWeekNumber?"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md":"ds:[&:first-child[data-selected=true]_button]:rounded-l-md",s.day),range_start:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-l-full`:"ds:rounded-l-md ds:bg-accent",s.range_start),range_middle:d.cn("ds:rounded-none",s.range_middle),range_end:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-r-full`:"ds:rounded-r-md ds:bg-accent",s.range_end),today:d.cn(u==="rounded"?`ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${m.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`:"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none",s.today),outside:d.cn("ds:text-muted-foreground ds:aria-selected:text-muted-foreground",s.outside),disabled:d.cn("ds:text-muted-foreground ds:opacity-50",s.disabled),hidden:d.cn("ds:invisible",s.hidden),...a},components:{Root:({className:t,rootRef:g,...l})=>n.jsx("div",{"data-slot":"calendar",ref:g,className:d.cn(t),...l}),Chevron:({className:t,orientation:g,...l})=>g==="left"?n.jsx(p.ChevronLeftIcon,{className:d.cn("ds:size-4",t),...l}):g==="right"?n.jsx(p.ChevronRightIcon,{className:d.cn("ds:size-4",t),...l}):n.jsx(p.ChevronDownIcon,{className:d.cn("ds:size-4",t),...l}),DayButton:t=>n.jsx(w,{...t,variant:u,color:f}),WeekNumber:({children:t,...g})=>n.jsx("td",{...g,children:n.jsx("div",{className:"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center",children:t})}),...b},...y})}const h=(r="foreground")=>({primary:{selected:"ds:bg-primary ds:text-primary-foreground",selectedHover:"ds:hover:bg-primary/90",rangeBg:"ds:bg-primary/20 dark:ds:bg-primary/10",focusRing:"ds:ring-primary/20 dark:ds:ring-primary/40"},secondary:{selected:"ds:bg-secondary ds:text-secondary-foreground",selectedHover:"ds:hover:bg-secondary/90",rangeBg:"ds:bg-secondary/20 dark:ds:bg-secondary/10",focusRing:"ds:ring-secondary/20 dark:ds:ring-secondary/40"},accent:{selected:"ds:bg-accent ds:text-accent-foreground",selectedHover:"ds:hover:bg-accent/90",rangeBg:"ds:bg-accent/20 dark:ds:bg-accent/10",focusRing:"ds:ring-accent/20 dark:ds:ring-accent/40"},destructive:{selected:"ds:bg-destructive ds:text-destructive-foreground",selectedHover:"ds:hover:bg-destructive/90",rangeBg:"ds:bg-destructive/20 dark:ds:bg-destructive/10",focusRing:"ds:ring-destructive/20 dark:ds:ring-destructive/40"},muted:{selected:"ds:bg-muted ds:text-muted-foreground",selectedHover:"ds:hover:bg-muted/90",rangeBg:"ds:bg-muted/30 dark:ds:bg-muted/20",focusRing:"ds:ring-muted/20 dark:ds:ring-muted/40"},success:{selected:"ds:bg-success ds:text-success-foreground",selectedHover:"ds:hover:bg-success/90",rangeBg:"ds:bg-success/20 dark:ds:bg-success/10",focusRing:"ds:ring-success/20 dark:ds:ring-success/40"},error:{selected:"ds:bg-error ds:text-error-foreground",selectedHover:"ds:hover:bg-error/90",rangeBg:"ds:bg-error/20 dark:ds:bg-error/10",focusRing:"ds:ring-error/20 dark:ds:ring-error/40"},warning:{selected:"ds:bg-warning ds:text-warning-foreground",selectedHover:"ds:hover:bg-warning/90",rangeBg:"ds:bg-warning/20 dark:ds:bg-warning/10",focusRing:"ds:ring-warning/20 dark:ds:ring-warning/40"},foreground:{selected:"ds:bg-foreground ds:text-background",selectedHover:"ds:hover:bg-foreground/90",rangeBg:"ds:bg-foreground/10 dark:ds:bg-foreground/5",focusRing:"ds:ring-foreground/20 dark:ds:ring-foreground/40"}})[r];function w({className:r,day:a,modifiers:e,variant:o="default",color:i="foreground",...u}){const f=x.getDefaultClassNames(),c=h(i),b=v.useRef(null);return v.useEffect(()=>{e.focused&&b.current?.focus()},[e.focused]),n.jsx(_.Button,{ref:b,variant:"ghost",size:"icon","data-day":a.date.toLocaleDateString(),"data-selected-single":e.selected&&!e.range_start&&!e.range_end&&!e.range_middle,"data-range-start":e.range_start,"data-range-end":e.range_end,"data-range-middle":e.range_middle,className:d.cn("ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal","ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]","ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50","ds:[&>span]:text-xs ds:[&>span]:opacity-70",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground",e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&c.selected,e.range_start&&c.selected,e.range_end&&c.selected,e.range_middle&&`${c.rangeBg} ds:text-accent-foreground`,o==="default"&&["ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md","ds:data-[range-middle=true]:rounded-none","ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md"],o==="rounded"&&["ds:data-[selected-single=true]:rounded-full","ds:data-[range-end=true]:rounded-full","ds:data-[range-start=true]:rounded-full",e.range_start&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_end&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_middle&&"ds:rounded-none",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:rounded-full"],f.day,r),...u})}exports.Calendar=j;exports.CalendarDayButton=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),k=require("react"),p=require("lucide-react"),x=require("react-day-picker"),d=require("../lib/utils.cjs"),_=require("./button.cjs");function z(r){const a=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(r){for(const e in r)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(r,e);Object.defineProperty(a,e,o.get?o:{enumerable:!0,get:()=>r[e]})}}return a.default=r,Object.freeze(a)}const v=z(k);function j({className:r,classNames:a,showOutsideDays:e=!0,captionLayout:o="label",buttonVariant:i="ghost",variant:u="default",color:f="primary",formatters:c,components:b,...y}){const s=x.getDefaultClassNames(),m=h(f);return n.jsx(x.DayPicker,{showOutsideDays:e,className:d.cn("ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--ds-spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent",String.raw`ds:rtl:**:[.rdp-button\_next>svg]:rotate-180`,String.raw`ds:rtl:**:[.rdp-button\_previous>svg]:rotate-180`,r),captionLayout:o,formatters:{formatMonthDropdown:t=>t.toLocaleString("default",{month:"short"}),...c},classNames:{root:d.cn("ds:w-fit",s.root),months:d.cn("ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative",s.months),month:d.cn("ds:flex ds:flex-col ds:w-full ds:gap-4",s.month),nav:d.cn("ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between",s.nav),button_previous:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_previous),button_next:d.cn(_.buttonVariants({variant:i}),"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none",s.button_next),month_caption:d.cn("ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)",s.month_caption),dropdowns:d.cn("ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5",s.dropdowns),dropdown_root:d.cn("ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md",s.dropdown_root),dropdown:d.cn("ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0",s.dropdown),caption_label:d.cn("ds:select-none ds:font-medium",o==="label"?"ds:text-sm":"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5",s.caption_label),table:"ds:w-full ds:border-collapse",weekdays:d.cn("ds:flex",s.weekdays),weekday:d.cn("ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none",s.weekday),week:d.cn("ds:flex ds:w-full ds:mt-2",s.week),week_number_header:d.cn("ds:select-none ds:w-(--cell-size)",s.week_number_header),week_number:d.cn("ds:text-[0.8rem] ds:select-none ds:text-muted-foreground",s.week_number),day:d.cn("ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none",y.showWeekNumber?"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md":"ds:[&:first-child[data-selected=true]_button]:rounded-l-md",s.day),range_start:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-l-full`:"ds:rounded-l-md ds:bg-accent",s.range_start),range_middle:d.cn("ds:rounded-none",s.range_middle),range_end:d.cn(u==="rounded"?`${m.rangeBg} ds:rounded-r-full`:"ds:rounded-r-md ds:bg-accent",s.range_end),today:d.cn(u==="rounded"?`ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${m.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`:"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none",s.today),outside:d.cn("ds:text-muted-foreground ds:aria-selected:text-muted-foreground",s.outside),disabled:d.cn("ds:text-muted-foreground ds:opacity-50",s.disabled),hidden:d.cn("ds:invisible",s.hidden),...a},components:{Root:({className:t,rootRef:g,...l})=>n.jsx("div",{"data-slot":"calendar",ref:g,className:d.cn(t),...l}),Chevron:({className:t,orientation:g,...l})=>g==="left"?n.jsx(p.ChevronLeftIcon,{className:d.cn("ds:size-4",t),...l}):g==="right"?n.jsx(p.ChevronRightIcon,{className:d.cn("ds:size-4",t),...l}):n.jsx(p.ChevronDownIcon,{className:d.cn("ds:size-4",t),...l}),DayButton:t=>n.jsx(w,{...t,variant:u,color:f}),WeekNumber:({children:t,...g})=>n.jsx("td",{...g,children:n.jsx("div",{className:"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center",children:t})}),...b},...y})}const h=(r="foreground")=>({primary:{selected:"ds:bg-primary ds:text-primary-foreground",selectedHover:"ds:hover:bg-primary/90",rangeBg:"ds:bg-primary/20 dark:ds:bg-primary/10",focusRing:"ds:ring-primary/20 dark:ds:ring-primary/40"},secondary:{selected:"ds:bg-secondary ds:text-secondary-foreground",selectedHover:"ds:hover:bg-secondary/90",rangeBg:"ds:bg-secondary/20 dark:ds:bg-secondary/10",focusRing:"ds:ring-secondary/20 dark:ds:ring-secondary/40"},accent:{selected:"ds:bg-accent ds:text-accent-foreground",selectedHover:"ds:hover:bg-accent/90",rangeBg:"ds:bg-accent/20 dark:ds:bg-accent/10",focusRing:"ds:ring-accent/20 dark:ds:ring-accent/40"},destructive:{selected:"ds:bg-destructive ds:text-destructive-foreground",selectedHover:"ds:hover:bg-destructive/90",rangeBg:"ds:bg-destructive/20 dark:ds:bg-destructive/10",focusRing:"ds:ring-destructive/20 dark:ds:ring-destructive/40"},muted:{selected:"ds:bg-muted ds:text-muted-foreground",selectedHover:"ds:hover:bg-muted/90",rangeBg:"ds:bg-muted/30 dark:ds:bg-muted/20",focusRing:"ds:ring-muted/20 dark:ds:ring-muted/40"},success:{selected:"ds:bg-success ds:text-success-foreground",selectedHover:"ds:hover:bg-success/90",rangeBg:"ds:bg-success/20 dark:ds:bg-success/10",focusRing:"ds:ring-success/20 dark:ds:ring-success/40"},error:{selected:"ds:bg-error ds:text-error-foreground",selectedHover:"ds:hover:bg-error/90",rangeBg:"ds:bg-error/20 dark:ds:bg-error/10",focusRing:"ds:ring-error/20 dark:ds:ring-error/40"},warning:{selected:"ds:bg-warning ds:text-warning-foreground",selectedHover:"ds:hover:bg-warning/90",rangeBg:"ds:bg-warning/20 dark:ds:bg-warning/10",focusRing:"ds:ring-warning/20 dark:ds:ring-warning/40"},foreground:{selected:"ds:bg-foreground ds:text-background",selectedHover:"ds:hover:bg-foreground/90",rangeBg:"ds:bg-foreground/10 dark:ds:bg-foreground/5",focusRing:"ds:ring-foreground/20 dark:ds:ring-foreground/40"}})[r];function w({className:r,day:a,modifiers:e,variant:o="default",color:i="foreground",...u}){const f=x.getDefaultClassNames(),c=h(i),b=v.useRef(null);return v.useEffect(()=>{e.focused&&b.current?.focus()},[e.focused]),n.jsx(_.Button,{ref:b,variant:"ghost",size:"icon","data-day":a.date.toLocaleDateString(),"data-selected-single":e.selected&&!e.range_start&&!e.range_end&&!e.range_middle,"data-range-start":e.range_start,"data-range-end":e.range_end,"data-range-middle":e.range_middle,className:d.cn("ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal","ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]","ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50","ds:[&>span]:text-xs ds:[&>span]:opacity-70",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground",e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&c.selected,e.range_start&&c.selected,e.range_end&&c.selected,e.range_middle&&`${c.rangeBg} ds:text-accent-foreground`,o==="default"&&["ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md","ds:data-[range-middle=true]:rounded-none","ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md"],o==="rounded"&&["ds:data-[selected-single=true]:rounded-full","ds:data-[range-end=true]:rounded-full","ds:data-[range-start=true]:rounded-full",e.range_start&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_end&&`ds:group-data-[focused=true]/day:${c.focusRing}`,e.range_middle&&"ds:rounded-none",!e.selected&&!e.range_start&&!e.range_end&&!e.range_middle&&"ds:hover:rounded-full"],f.day,r),...u})}exports.Calendar=j;exports.CalendarDayButton=w;
2
2
  //# sourceMappingURL=calendar.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.cjs","sources":["../../../../../../../../packages/ui/src/components/calendar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button, buttonVariants } from \"@dsui/ui/components/button\";\n\ntype CalendarColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"foreground\";\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n variant = \"default\",\n color = \"primary\",\n formatters,\n components,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`ds:rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`ds:rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"ds:w-fit\", defaultClassNames.root),\n months: cn(\n \"ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative\",\n defaultClassNames.months\n ),\n month: cn(\"ds:flex ds:flex-col ds:w-full ds:gap-4\", defaultClassNames.month),\n nav: cn(\n \"ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"ds:select-none ds:font-medium\",\n captionLayout === \"label\"\n ? \"ds:text-sm\"\n : \"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"ds:w-full ds:border-collapse\",\n weekdays: cn(\"ds:flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"ds:flex ds:w-full ds:mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"ds:select-none ds:w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"ds:text-[0.8rem] ds:select-none ds:text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none\",\n props.showWeekNumber\n ? \"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"ds:[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-l-full`\n : \"ds:rounded-l-md ds:bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\n variant === \"rounded\" ? \"ds:rounded-none\" : \"ds:rounded-none\",\n defaultClassNames.range_middle\n ),\n range_end: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-r-full`\n : \"ds:rounded-r-md ds:bg-accent\",\n defaultClassNames.range_end\n ),\n today: cn(\n variant === \"rounded\"\n ? `ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${colorClasses.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`\n : \"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"ds:text-muted-foreground ds:aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"ds:text-muted-foreground ds:opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"ds:invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"ds:size-4\", className)}\n {...props}\n />\n );\n }\n\n return (\n <ChevronDownIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n },\n DayButton: (props) => (\n <CalendarDayButton {...props} variant={variant} color={color} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\ntype CalendarDayButtonProps = Omit<\n React.ComponentProps<typeof DayButton>,\n \"color\"\n> & {\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\n\n// Color variants for calendar day buttons\nconst getColorClasses = (color: CalendarColor = \"foreground\") => {\n const colorMap = {\n primary: {\n selected: \"ds:bg-primary ds:text-primary-foreground\",\n selectedHover: \"ds:hover:bg-primary/90\",\n rangeBg: \"ds:bg-primary/20 dark:ds:bg-primary/10\",\n focusRing: \"ds:ring-primary/20 dark:ds:ring-primary/40\",\n },\n secondary: {\n selected: \"ds:bg-secondary ds:text-secondary-foreground\",\n selectedHover: \"ds:hover:bg-secondary/90\",\n rangeBg: \"ds:bg-secondary/20 dark:ds:bg-secondary/10\",\n focusRing: \"ds:ring-secondary/20 dark:ds:ring-secondary/40\",\n },\n accent: {\n selected: \"ds:bg-accent ds:text-accent-foreground\",\n selectedHover: \"ds:hover:bg-accent/90\",\n rangeBg: \"ds:bg-accent/20 dark:ds:bg-accent/10\",\n focusRing: \"ds:ring-accent/20 dark:ds:ring-accent/40\",\n },\n destructive: {\n selected: \"ds:bg-destructive ds:text-destructive-foreground\",\n selectedHover: \"ds:hover:bg-destructive/90\",\n rangeBg: \"ds:bg-destructive/20 dark:ds:bg-destructive/10\",\n focusRing: \"ds:ring-destructive/20 dark:ds:ring-destructive/40\",\n },\n muted: {\n selected: \"ds:bg-muted ds:text-muted-foreground\",\n selectedHover: \"ds:hover:bg-muted/90\",\n rangeBg: \"ds:bg-muted/30 dark:ds:bg-muted/20\",\n focusRing: \"ds:ring-muted/20 dark:ds:ring-muted/40\",\n },\n success: {\n selected: \"ds:bg-success ds:text-success-foreground\",\n selectedHover: \"ds:hover:bg-success/90\",\n rangeBg: \"ds:bg-success/20 dark:ds:bg-success/10\",\n focusRing: \"ds:ring-success/20 dark:ds:ring-success/40\",\n },\n error: {\n selected: \"ds:bg-error ds:text-error-foreground\",\n selectedHover: \"ds:hover:bg-error/90\",\n rangeBg: \"ds:bg-error/20 dark:ds:bg-error/10\",\n focusRing: \"ds:ring-error/20 dark:ds:ring-error/40\",\n },\n warning: {\n selected: \"ds:bg-warning ds:text-warning-foreground\",\n selectedHover: \"ds:hover:bg-warning/90\",\n rangeBg: \"ds:bg-warning/20 dark:ds:bg-warning/10\",\n focusRing: \"ds:ring-warning/20 dark:ds:ring-warning/40\",\n },\n foreground: {\n selected: \"ds:bg-foreground ds:text-background\",\n selectedHover: \"ds:hover:bg-foreground/90\",\n rangeBg: \"ds:bg-foreground/10 dark:ds:bg-foreground/5\",\n focusRing: \"ds:ring-foreground/20 dark:ds:ring-foreground/40\",\n },\n };\n\n return colorMap[color];\n};\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n variant = \"default\",\n color = \"foreground\",\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal\",\n \"ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]\",\n \"ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50\",\n \"ds:[&>span]:text-xs ds:[&>span]:opacity-70\",\n // Hover effect chỉ khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground\",\n // Selected single day - chỉ apply color khi selected\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n colorClasses.selected,\n // Range start/end - chỉ apply color khi là range start/end\n modifiers.range_start && colorClasses.selected,\n modifiers.range_end && colorClasses.selected,\n // Range middle - apply rangeBg nhưng giữ text color mặc định\n modifiers.range_middle &&\n `${colorClasses.rangeBg} ds:text-accent-foreground`,\n variant === \"default\" && [\n \"ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md\",\n \"ds:data-[range-middle=true]:rounded-none\",\n \"ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md\",\n ],\n variant === \"rounded\" && [\n \"ds:data-[selected-single=true]:rounded-full\",\n \"ds:data-[range-end=true]:rounded-full\",\n \"ds:data-[range-start=true]:rounded-full\",\n modifiers.range_start &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_end &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_middle && \"ds:rounded-none\",\n // Chỉ hover:rounded-full khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:rounded-full\",\n ],\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Calendar,\n CalendarDayButton,\n type CalendarProps,\n type CalendarDayButtonProps,\n type CalendarColor,\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","variant","color","formatters","components","props","defaultClassNames","getDefaultClassNames","colorClasses","getColorClasses","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","Button"],"mappings":"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"}
1
+ {"version":3,"file":"calendar.cjs","sources":["../../../../../../../../packages/ui/src/components/calendar.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport {\n ChevronDownIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n} from \"lucide-react\";\nimport { DayButton, DayPicker, getDefaultClassNames } from \"react-day-picker\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\nimport { Button, buttonVariants } from \"@dsui/ui/components/button\";\n\ntype CalendarColor =\n | \"primary\"\n | \"secondary\"\n | \"accent\"\n | \"destructive\"\n | \"muted\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"foreground\";\n\ntype CalendarProps = React.ComponentProps<typeof DayPicker> & {\n buttonVariant?: React.ComponentProps<typeof Button>[\"variant\"];\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\nfunction Calendar({\n className,\n classNames,\n showOutsideDays = true,\n captionLayout = \"label\",\n buttonVariant = \"ghost\",\n variant = \"default\",\n color = \"primary\",\n formatters,\n components,\n ...props\n}: CalendarProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn(\n \"ds:bg-background ds:group/calendar ds:p-3 ds:[--cell-size:--ds-spacing(8)] ds:[[data-slot=card-content]_&]:bg-transparent ds:[[data-slot=popover-content]_&]:bg-transparent\",\n String.raw`ds:rtl:**:[.rdp-button\\_next>svg]:rotate-180`,\n String.raw`ds:rtl:**:[.rdp-button\\_previous>svg]:rotate-180`,\n className\n )}\n captionLayout={captionLayout}\n formatters={{\n formatMonthDropdown: (date) =>\n date.toLocaleString(\"default\", { month: \"short\" }),\n ...formatters,\n }}\n classNames={{\n root: cn(\"ds:w-fit\", defaultClassNames.root),\n months: cn(\n \"ds:flex ds:gap-4 ds:flex-col ds:md:flex-row ds:relative\",\n defaultClassNames.months\n ),\n month: cn(\"ds:flex ds:flex-col ds:w-full ds:gap-4\", defaultClassNames.month),\n nav: cn(\n \"ds:flex ds:items-center ds:gap-1 ds:w-full ds:absolute ds:top-0 ds:inset-x-0 ds:justify-between\",\n defaultClassNames.nav\n ),\n button_previous: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_previous\n ),\n button_next: cn(\n buttonVariants({ variant: buttonVariant }),\n \"ds:size-(--cell-size) ds:aria-disabled:opacity-50 ds:p-0 ds:select-none\",\n defaultClassNames.button_next\n ),\n month_caption: cn(\n \"ds:flex ds:items-center ds:justify-center ds:h-(--cell-size) ds:w-full ds:px-(--cell-size)\",\n defaultClassNames.month_caption\n ),\n dropdowns: cn(\n \"ds:w-full ds:flex ds:items-center ds:text-sm ds:font-medium ds:justify-center ds:h-(--cell-size) ds:gap-1.5\",\n defaultClassNames.dropdowns\n ),\n dropdown_root: cn(\n \"ds:relative ds:has-focus:border-ring ds:border ds:border-input ds:shadow-xs ds:has-focus:ring-ring/50 ds:has-focus:ring-[3px] ds:rounded-md\",\n defaultClassNames.dropdown_root\n ),\n dropdown: cn(\n \"ds:absolute ds:bg-popover ds:inset-0 ds:opacity-0\",\n defaultClassNames.dropdown\n ),\n caption_label: cn(\n \"ds:select-none ds:font-medium\",\n captionLayout === \"label\"\n ? \"ds:text-sm\"\n : \"ds:rounded-md ds:pl-2 ds:pr-1 ds:flex ds:items-center ds:gap-1 ds:text-sm ds:h-8 ds:[&>svg]:text-muted-foreground ds:[&>svg]:size-3.5\",\n defaultClassNames.caption_label\n ),\n table: \"ds:w-full ds:border-collapse\",\n weekdays: cn(\"ds:flex\", defaultClassNames.weekdays),\n weekday: cn(\n \"ds:text-muted-foreground ds:rounded-md ds:flex-1 ds:font-normal ds:text-[0.8rem] ds:select-none\",\n defaultClassNames.weekday\n ),\n week: cn(\"ds:flex ds:w-full ds:mt-2\", defaultClassNames.week),\n week_number_header: cn(\n \"ds:select-none ds:w-(--cell-size)\",\n defaultClassNames.week_number_header\n ),\n week_number: cn(\n \"ds:text-[0.8rem] ds:select-none ds:text-muted-foreground\",\n defaultClassNames.week_number\n ),\n day: cn(\n \"ds:relative ds:w-full ds:h-full ds:p-0 ds:text-center ds:[&:last-child[data-selected=true]_button]:rounded-r-md ds:group/day ds:aspect-square ds:select-none\",\n props.showWeekNumber\n ? \"ds:[&:nth-child(2)[data-selected=true]_button]:rounded-l-md\"\n : \"ds:[&:first-child[data-selected=true]_button]:rounded-l-md\",\n defaultClassNames.day\n ),\n range_start: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-l-full`\n : \"ds:rounded-l-md ds:bg-accent\",\n defaultClassNames.range_start\n ),\n range_middle: cn(\n variant === \"rounded\" ? \"ds:rounded-none\" : \"ds:rounded-none\",\n defaultClassNames.range_middle\n ),\n range_end: cn(\n variant === \"rounded\"\n ? `${colorClasses.rangeBg} ds:rounded-r-full`\n : \"ds:rounded-r-md ds:bg-accent\",\n defaultClassNames.range_end\n ),\n today: cn(\n variant === \"rounded\"\n ? `ds:rounded-full ds:bg-accent ds:data-[selected=true]:rounded-l-none ds:data-[selected=true]:${colorClasses.rangeBg} ds:[&_button[data-range-middle=true]]:bg-transparent`\n : \"ds:bg-accent ds:text-accent-foreground ds:rounded-md ds:data-[selected=true]:rounded-none\",\n defaultClassNames.today\n ),\n outside: cn(\n \"ds:text-muted-foreground ds:aria-selected:text-muted-foreground\",\n defaultClassNames.outside\n ),\n disabled: cn(\n \"ds:text-muted-foreground ds:opacity-50\",\n defaultClassNames.disabled\n ),\n hidden: cn(\"ds:invisible\", defaultClassNames.hidden),\n ...classNames,\n }}\n components={{\n Root: ({ className, rootRef, ...props }) => {\n return (\n <div\n data-slot=\"calendar\"\n ref={rootRef}\n className={cn(className)}\n {...props}\n />\n );\n },\n Chevron: ({ className, orientation, ...props }) => {\n if (orientation === \"left\") {\n return (\n <ChevronLeftIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n }\n\n if (orientation === \"right\") {\n return (\n <ChevronRightIcon\n className={cn(\"ds:size-4\", className)}\n {...props}\n />\n );\n }\n\n return (\n <ChevronDownIcon className={cn(\"ds:size-4\", className)} {...props} />\n );\n },\n DayButton: (props) => (\n <CalendarDayButton {...props} variant={variant} color={color} />\n ),\n WeekNumber: ({ children, ...props }) => {\n return (\n <td {...props}>\n <div className=\"ds:flex ds:size-(--cell-size) ds:items-center ds:justify-center ds:text-center\">\n {children}\n </div>\n </td>\n );\n },\n ...components,\n }}\n {...props}\n />\n );\n}\n\ntype CalendarDayButtonProps = Omit<\n React.ComponentProps<typeof DayButton>,\n \"color\"\n> & {\n variant?: \"default\" | \"rounded\";\n color?: CalendarColor;\n};\n\n// Color variants for calendar day buttons\nconst getColorClasses = (color: CalendarColor = \"foreground\") => {\n const colorMap = {\n primary: {\n selected: \"ds:bg-primary ds:text-primary-foreground\",\n selectedHover: \"ds:hover:bg-primary/90\",\n rangeBg: \"ds:bg-primary/20 dark:ds:bg-primary/10\",\n focusRing: \"ds:ring-primary/20 dark:ds:ring-primary/40\",\n },\n secondary: {\n selected: \"ds:bg-secondary ds:text-secondary-foreground\",\n selectedHover: \"ds:hover:bg-secondary/90\",\n rangeBg: \"ds:bg-secondary/20 dark:ds:bg-secondary/10\",\n focusRing: \"ds:ring-secondary/20 dark:ds:ring-secondary/40\",\n },\n accent: {\n selected: \"ds:bg-accent ds:text-accent-foreground\",\n selectedHover: \"ds:hover:bg-accent/90\",\n rangeBg: \"ds:bg-accent/20 dark:ds:bg-accent/10\",\n focusRing: \"ds:ring-accent/20 dark:ds:ring-accent/40\",\n },\n destructive: {\n selected: \"ds:bg-destructive ds:text-destructive-foreground\",\n selectedHover: \"ds:hover:bg-destructive/90\",\n rangeBg: \"ds:bg-destructive/20 dark:ds:bg-destructive/10\",\n focusRing: \"ds:ring-destructive/20 dark:ds:ring-destructive/40\",\n },\n muted: {\n selected: \"ds:bg-muted ds:text-muted-foreground\",\n selectedHover: \"ds:hover:bg-muted/90\",\n rangeBg: \"ds:bg-muted/30 dark:ds:bg-muted/20\",\n focusRing: \"ds:ring-muted/20 dark:ds:ring-muted/40\",\n },\n success: {\n selected: \"ds:bg-success ds:text-success-foreground\",\n selectedHover: \"ds:hover:bg-success/90\",\n rangeBg: \"ds:bg-success/20 dark:ds:bg-success/10\",\n focusRing: \"ds:ring-success/20 dark:ds:ring-success/40\",\n },\n error: {\n selected: \"ds:bg-error ds:text-error-foreground\",\n selectedHover: \"ds:hover:bg-error/90\",\n rangeBg: \"ds:bg-error/20 dark:ds:bg-error/10\",\n focusRing: \"ds:ring-error/20 dark:ds:ring-error/40\",\n },\n warning: {\n selected: \"ds:bg-warning ds:text-warning-foreground\",\n selectedHover: \"ds:hover:bg-warning/90\",\n rangeBg: \"ds:bg-warning/20 dark:ds:bg-warning/10\",\n focusRing: \"ds:ring-warning/20 dark:ds:ring-warning/40\",\n },\n foreground: {\n selected: \"ds:bg-foreground ds:text-background\",\n selectedHover: \"ds:hover:bg-foreground/90\",\n rangeBg: \"ds:bg-foreground/10 dark:ds:bg-foreground/5\",\n focusRing: \"ds:ring-foreground/20 dark:ds:ring-foreground/40\",\n },\n };\n\n return colorMap[color];\n};\n\nfunction CalendarDayButton({\n className,\n day,\n modifiers,\n variant = \"default\",\n color = \"foreground\",\n ...props\n}: CalendarDayButtonProps) {\n const defaultClassNames = getDefaultClassNames();\n const colorClasses = getColorClasses(color);\n\n const ref = React.useRef<HTMLButtonElement>(null);\n React.useEffect(() => {\n if (modifiers.focused) ref.current?.focus();\n }, [modifiers.focused]);\n\n return (\n <Button\n ref={ref}\n variant=\"ghost\"\n size=\"icon\"\n data-day={day.date.toLocaleDateString()}\n data-selected-single={\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle\n }\n data-range-start={modifiers.range_start}\n data-range-end={modifiers.range_end}\n data-range-middle={modifiers.range_middle}\n className={cn(\n \"ds:flex ds:aspect-square ds:size-auto ds:w-full ds:min-w-(--cell-size) ds:flex-col ds:gap-1 ds:leading-none ds:font-normal\",\n \"ds:group-data-[focused=true]/day:relative ds:group-data-[focused=true]/day:z-10 ds:group-data-[focused=true]/day:ring-[3px]\",\n \"ds:group-data-[focused=true]/day:border-ring ds:group-data-[focused=true]/day:ring-ring/50\",\n \"ds:[&>span]:text-xs ds:[&>span]:opacity-70\",\n // Hover effect chỉ khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:bg-accent ds:hover:text-accent-foreground ds:dark:hover:text-accent-foreground\",\n // Selected single day - chỉ apply color khi selected\n modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n colorClasses.selected,\n // Range start/end - chỉ apply color khi là range start/end\n modifiers.range_start && colorClasses.selected,\n modifiers.range_end && colorClasses.selected,\n // Range middle - apply rangeBg nhưng giữ text color mặc định\n modifiers.range_middle &&\n `${colorClasses.rangeBg} ds:text-accent-foreground`,\n variant === \"default\" && [\n \"ds:data-[range-end=true]:rounded-md ds:data-[range-end=true]:rounded-r-md\",\n \"ds:data-[range-middle=true]:rounded-none\",\n \"ds:data-[range-start=true]:rounded-md ds:data-[range-start=true]:rounded-l-md\",\n ],\n variant === \"rounded\" && [\n \"ds:data-[selected-single=true]:rounded-full\",\n \"ds:data-[range-end=true]:rounded-full\",\n \"ds:data-[range-start=true]:rounded-full\",\n modifiers.range_start &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_end &&\n `ds:group-data-[focused=true]/day:${colorClasses.focusRing}`,\n modifiers.range_middle && \"ds:rounded-none\",\n // Chỉ hover:rounded-full khi chưa selected\n !modifiers.selected &&\n !modifiers.range_start &&\n !modifiers.range_end &&\n !modifiers.range_middle &&\n \"ds:hover:rounded-full\",\n ],\n defaultClassNames.day,\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n Calendar,\n CalendarDayButton,\n type CalendarProps,\n type CalendarDayButtonProps,\n type CalendarColor,\n};\n"],"names":["Calendar","className","classNames","showOutsideDays","captionLayout","buttonVariant","variant","color","formatters","components","props","defaultClassNames","getDefaultClassNames","colorClasses","getColorClasses","jsx","DayPicker","cn","date","buttonVariants","rootRef","orientation","ChevronLeftIcon","ChevronRightIcon","ChevronDownIcon","CalendarDayButton","children","day","modifiers","ref","React","Button"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("react"),o=require("lucide-react"),O=require("class-variance-authority"),i=require("./command.cjs"),u=require("./popover.cjs"),a=require("../lib/utils.cjs"),f=require("./label.cjs");function q(d){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const t in d)if(t!=="default"){const c=Object.getOwnPropertyDescriptor(d,t);Object.defineProperty(n,t,c.get?c:{enumerable:!0,get:()=>d[t]})}}return n.default=d,Object.freeze(n)}const v=q(k),P=O.cva("ds:justify-between ds:relative ds:dark:bg-background ds:dark:hover:bg-input/50 ds:border-input ds:w-full ds:min-w-0 ds:rounded-md ds:border ds:bg-transparent ds:shadow-xs ds:transition-[color,box-shadow] ds:outline-none ds:file:inline-flex ds:file:h-7 ds:file:border-0 ds:file:bg-transparent ds:file:text-sm ds:file:font-medium ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:opacity-50 ds:focus-visible:border-ring ds:focus-visible:ring-ring/50 ds:focus-visible:ring-[3px] ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:aria-invalid:border-destructive",{variants:{size:{xs:"ds:h-6 ds:text-xs ds:px-2 ds:py-0.5",sm:"ds:h-8 ds:text-sm ds:px-2.5 ds:py-1",normal:"ds:h-9 ds:px-3 ds:py-1",lg:"ds:h-11 ds:px-4 ds:py-2",xl:"ds:h-14 ds:px-5 ds:py-3"},state:{default:"",success:"ds:border-success ds:ring-success/30 ds:focus-visible:border-success ds:focus-visible:ring-success/50",error:"ds:border-destructive ds:ring-destructive/30 ds:focus-visible:border-destructive ds:focus-visible:ring-destructive/50",warning:"ds:border-warning ds:ring-warning/30 ds:focus-visible:border-warning ds:focus-visible:ring-warning/50"}},defaultVariants:{size:"normal",state:"default"}});function S({value:d,options:n,placeHolder:t,emptyText:c,onChange:m,clearable:b,className:h,dropdownClassName:g,children:j,size:r,state:y="default",searchable:w=!0,tagRender:p,...C}){const[l,x]=v.useState(!1),N=v.useCallback(s=>{x(s)},[]);return e.jsxs(u.Popover,{open:l,onOpenChange:N,modal:!0,children:[e.jsx(u.PopoverTrigger,{asChild:!0,...C,children:j??e.jsxs(f.Label,{className:a.cn(P({size:r,state:y}),h),children:[e.jsx("span",{className:a.cn("ds:truncate ds:w-full ds:inline-block ds:align-middle ds:text-left",{"ds:pr-8":b}),children:d?n?.find(s=>s.value===d)?.label:t}),l&&e.jsx(o.ChevronUp,{className:a.cn("ds:z-10 ds:opacity-50",{"ds:size-4 ds:min-w-4":r==="sm"||r==="xs","ds:size-5 ds:min-w-5":r==="lg"||r==="xl"},g)}),!l&&e.jsx(o.ChevronDown,{className:a.cn("ds:z-10 ds:opacity-50",{"ds:size-4 ds:min-w-4":r==="sm"||r==="xs","ds:size-5 ds:min-w-5":r==="lg"||r==="xl"},g)})]})}),b&&d&&e.jsx(f.Label,{onClick:s=>{s.stopPropagation(),m?.("")},className:"ds:absolute ds:right-11 ds:top-1/2 ds:-translate-y-1/2 ds:rounded-sm ds:p-1 ds:text-muted-foreground ds:hover:bg-accent ds:hover:text-accent-foreground ds:cursor-pointer ds:size-6 ds:opacity-50",children:e.jsx(o.X,{className:"ds:h-4 ds:w-4"})}),e.jsx(u.PopoverContent,{className:a.cn("ds:p-0 ds:w-(--radix-popover-trigger-width)"),onInteractOutside:s=>{s.target.closest('[data-slot="popover-trigger"]')&&s.preventDefault()},children:e.jsxs(i.Command,{children:[w&&e.jsx(i.CommandInput,{placeholder:t,className:"ds:h-9"}),e.jsxs(i.CommandList,{children:[e.jsx(i.CommandEmpty,{children:c||"Not found"}),e.jsx(i.CommandGroup,{children:n?.map(s=>e.jsxs(i.CommandItem,{value:String(s.label),onSelect:s?.disabled?void 0:()=>{m?.(s.value),x(!1)},className:a.cn(s?.disabled&&"ds:opacity-50 ds:cursor-not-allowed ds:grayscale",d===s.value&&"ds:bg-primary/10 ds:dark:bg-primary/20"),children:[p?p(s):e.jsxs(e.Fragment,{children:[s.icon&&e.jsx("span",{className:"ds:mr-2 ds:max-w-4 ds:max-h-4",children:s.icon}),s.label]}),e.jsx(o.Check,{className:a.cn("ds:ml-auto",d===s.value?"ds:opacity-100":"ds:opacity-0")})]},s.value))})]})]})})]})}exports.Combobox=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),k=require("react"),o=require("lucide-react"),O=require("class-variance-authority"),i=require("./command.cjs"),u=require("./popover.cjs"),a=require("../lib/utils.cjs"),f=require("./label.cjs");function q(d){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const t in d)if(t!=="default"){const c=Object.getOwnPropertyDescriptor(d,t);Object.defineProperty(n,t,c.get?c:{enumerable:!0,get:()=>d[t]})}}return n.default=d,Object.freeze(n)}const v=q(k),P=O.cva("ds:justify-between ds:relative ds:dark:bg-background ds:dark:hover:bg-input/50 ds:border-input ds:w-full ds:min-w-0 ds:rounded-md ds:border ds:border-border ds:bg-transparent ds:shadow-xs ds:transition-[color,box-shadow] ds:outline-none ds:file:inline-flex ds:file:h-7 ds:file:border-0 ds:file:bg-transparent ds:file:text-sm ds:file:font-medium ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:opacity-50 ds:focus-visible:border-ring ds:focus-visible:ring-ring/50 ds:focus-visible:ring-[3px] ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:aria-invalid:border-destructive",{variants:{size:{xs:"ds:h-6 ds:text-xs ds:px-2 ds:py-0.5",sm:"ds:h-8 ds:text-sm ds:px-2.5 ds:py-1",normal:"ds:h-9 ds:px-3 ds:py-1",lg:"ds:h-11 ds:px-4 ds:py-2",xl:"ds:h-14 ds:px-5 ds:py-3"},state:{default:"",success:"ds:border-success ds:ring-success/30 ds:focus-visible:border-success ds:focus-visible:ring-success/50",error:"ds:border-destructive ds:ring-destructive/30 ds:focus-visible:border-destructive ds:focus-visible:ring-destructive/50",warning:"ds:border-warning ds:ring-warning/30 ds:focus-visible:border-warning ds:focus-visible:ring-warning/50"}},defaultVariants:{size:"normal",state:"default"}});function S({value:d,options:n,placeHolder:t,emptyText:c,onChange:m,clearable:b,className:h,dropdownClassName:g,children:j,size:r,state:y="default",searchable:w=!0,tagRender:p,...C}){const[l,x]=v.useState(!1),N=v.useCallback(s=>{x(s)},[]);return e.jsxs(u.Popover,{open:l,onOpenChange:N,modal:!0,children:[e.jsx(u.PopoverTrigger,{asChild:!0,...C,children:j??e.jsxs(f.Label,{className:a.cn(P({size:r,state:y}),h),children:[e.jsx("span",{className:a.cn("ds:truncate ds:w-full ds:inline-block ds:align-middle ds:text-left",{"ds:pr-8":b}),children:d?n?.find(s=>s.value===d)?.label:t}),l&&e.jsx(o.ChevronUp,{className:a.cn("ds:z-10 ds:opacity-50",{"ds:size-4 ds:min-w-4":r==="sm"||r==="xs","ds:size-5 ds:min-w-5":r==="lg"||r==="xl"},g)}),!l&&e.jsx(o.ChevronDown,{className:a.cn("ds:z-10 ds:opacity-50",{"ds:size-4 ds:min-w-4":r==="sm"||r==="xs","ds:size-5 ds:min-w-5":r==="lg"||r==="xl"},g)})]})}),b&&d&&e.jsx(f.Label,{onClick:s=>{s.stopPropagation(),m?.("")},className:"ds:absolute ds:right-11 ds:top-1/2 ds:-translate-y-1/2 ds:rounded-sm ds:p-1 ds:text-muted-foreground ds:hover:bg-accent ds:hover:text-accent-foreground ds:cursor-pointer ds:size-6 ds:opacity-50",children:e.jsx(o.X,{className:"ds:h-4 ds:w-4"})}),e.jsx(u.PopoverContent,{className:a.cn("ds:p-0 ds:w-(--radix-popover-trigger-width)"),onInteractOutside:s=>{s.target.closest('[data-slot="popover-trigger"]')&&s.preventDefault()},children:e.jsxs(i.Command,{children:[w&&e.jsx(i.CommandInput,{placeholder:t,className:"ds:h-9"}),e.jsxs(i.CommandList,{children:[e.jsx(i.CommandEmpty,{children:c||"Not found"}),e.jsx(i.CommandGroup,{children:n?.map(s=>e.jsxs(i.CommandItem,{value:String(s.label),onSelect:s?.disabled?void 0:()=>{m?.(s.value),x(!1)},className:a.cn(s?.disabled&&"ds:opacity-50 ds:cursor-not-allowed ds:grayscale",d===s.value&&"ds:bg-primary/10 ds:dark:bg-primary/20"),children:[p?p(s):e.jsxs(e.Fragment,{children:[s.icon&&e.jsx("span",{className:"ds:mr-2 ds:max-w-4 ds:max-h-4",children:s.icon}),s.label]}),e.jsx(o.Check,{className:a.cn("ds:ml-auto",d===s.value?"ds:opacity-100":"ds:opacity-0")})]},s.value))})]})]})})]})}exports.Combobox=S;
2
2
  //# sourceMappingURL=combobox.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"combobox.cjs","sources":["../../../../../../../../packages/ui/src/components/combobox.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronDown, ChevronUp, X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { cn } from \"../lib/utils\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Label } from \"./label\";\n\nconst comboboxVariants = cva(\n \"ds:justify-between ds:relative ds:dark:bg-background ds:dark:hover:bg-input/50 ds:border-input ds:w-full ds:min-w-0 ds:rounded-md ds:border ds:bg-transparent ds:shadow-xs ds:transition-[color,box-shadow] ds:outline-none ds:file:inline-flex ds:file:h-7 ds:file:border-0 ds:file:bg-transparent ds:file:text-sm ds:file:font-medium ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:opacity-50 ds:focus-visible:border-ring ds:focus-visible:ring-ring/50 ds:focus-visible:ring-[3px] ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:aria-invalid:border-destructive\",\n {\n variants: {\n size: {\n xs: \"ds:h-6 ds:text-xs ds:px-2 ds:py-0.5\",\n sm: \"ds:h-8 ds:text-sm ds:px-2.5 ds:py-1\",\n normal: \"ds:h-9 ds:px-3 ds:py-1\",\n lg: \"ds:h-11 ds:px-4 ds:py-2\",\n xl: \"ds:h-14 ds:px-5 ds:py-3\",\n },\n state: {\n default: \"\",\n success:\n \"ds:border-success ds:ring-success/30 ds:focus-visible:border-success ds:focus-visible:ring-success/50\",\n error:\n \"ds:border-destructive ds:ring-destructive/30 ds:focus-visible:border-destructive ds:focus-visible:ring-destructive/50\",\n warning:\n \"ds:border-warning ds:ring-warning/30 ds:focus-visible:border-warning ds:focus-visible:ring-warning/50\",\n },\n },\n defaultVariants: {\n size: \"normal\",\n state: \"default\",\n },\n }\n);\n\ntype SelectOption = {\n label: React.ReactNode;\n value: string;\n group?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n};\n\ntype ComboboxProps = Omit<\n React.ComponentProps<typeof PopoverPrimitive.Trigger>,\n \"onChange\"\n> & {\n value?: string;\n options?: SelectOption[];\n placeHolder?: string;\n onChange?: (value?: string | null) => void;\n clearable?: boolean;\n emptyText?: string;\n className?: string;\n dropdownClassName?: string;\n children?: React.ReactNode;\n size?: \"normal\" | \"sm\" | \"xs\" | \"lg\" | \"xl\";\n state?: \"default\" | \"success\" | \"error\" | \"warning\";\n searchable?: boolean;\n tagRender?: (\n option: SelectOption & { onClick?: () => void }\n ) => React.ReactNode;\n} & VariantProps<typeof comboboxVariants>;\n\nfunction Combobox({\n value,\n options,\n placeHolder,\n emptyText,\n onChange,\n clearable,\n className,\n dropdownClassName,\n children,\n size,\n state = \"default\",\n searchable = true,\n tagRender,\n ...props\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n\n const handleOpenChange = React.useCallback((newOpen: boolean) => {\n setOpen(newOpen);\n }, []);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange} modal={true}>\n <PopoverTrigger asChild {...props}>\n {children ?? (\n <Label className={cn(comboboxVariants({ size, state }), className)}>\n <span\n className={cn(\n \"ds:truncate ds:w-full ds:inline-block ds:align-middle ds:text-left\",\n {\n \"ds:pr-8\": clearable,\n }\n )}\n >\n {value\n ? options?.find((option) => option.value === value)?.label\n : placeHolder}\n </span>\n {open && (\n <ChevronUp\n className={cn(\n \"ds:z-10 ds:opacity-50\",\n {\n \"ds:size-4 ds:min-w-4\": size === \"sm\" || size === \"xs\",\n \"ds:size-5 ds:min-w-5\": size === \"lg\" || size === \"xl\",\n },\n dropdownClassName\n )}\n />\n )}\n {!open && (\n <ChevronDown\n className={cn(\n \"ds:z-10 ds:opacity-50\",\n {\n \"ds:size-4 ds:min-w-4\": size === \"sm\" || size === \"xs\",\n \"ds:size-5 ds:min-w-5\": size === \"lg\" || size === \"xl\",\n },\n dropdownClassName\n )}\n />\n )}\n </Label>\n )}\n </PopoverTrigger>\n\n {clearable && value && (\n <Label\n onClick={(e) => {\n e.stopPropagation();\n onChange?.(\"\");\n }}\n className=\"ds:absolute ds:right-11 ds:top-1/2 ds:-translate-y-1/2 ds:rounded-sm ds:p-1 ds:text-muted-foreground ds:hover:bg-accent ds:hover:text-accent-foreground ds:cursor-pointer ds:size-6 ds:opacity-50\"\n >\n <X className=\"ds:h-4 ds:w-4\" />\n </Label>\n )}\n <PopoverContent\n className={cn(\"ds:p-0 ds:w-(--radix-popover-trigger-width)\")}\n onInteractOutside={(e) => {\n // Prevent closing when clicking the trigger\n const target = e.target as HTMLElement;\n if (target.closest('[data-slot=\"popover-trigger\"]')) {\n e.preventDefault();\n }\n }}\n >\n <Command>\n {searchable && (\n <CommandInput placeholder={placeHolder} className=\"ds:h-9\" />\n )}\n <CommandList>\n <CommandEmpty>{emptyText || \"Not found\"}</CommandEmpty>\n <CommandGroup>\n {options?.map((option) => (\n <CommandItem\n key={option.value}\n value={String(option.label)} // Để Command search theo label\n onSelect={\n option?.disabled\n ? undefined\n : () => {\n onChange?.(option.value); // Lưu value thực sự\n setOpen(false);\n }\n }\n className={cn(\n option?.disabled &&\n \"ds:opacity-50 ds:cursor-not-allowed ds:grayscale\",\n value === option.value && \"ds:bg-primary/10 ds:dark:bg-primary/20\"\n )}\n >\n {tagRender ? (\n tagRender(option)\n ) : (\n <>\n {option.icon && (\n <span className=\"ds:mr-2 ds:max-w-4 ds:max-h-4\">\n {option.icon}\n </span>\n )}\n {option.label}\n </>\n )}\n <Check\n className={cn(\n \"ds:ml-auto\",\n value === option.value ? \"ds:opacity-100\" : \"ds:opacity-0\" // So sánh theo value\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { Combobox, type ComboboxProps, type SelectOption };\n"],"names":["comboboxVariants","cva","Combobox","value","options","placeHolder","emptyText","onChange","clearable","className","dropdownClassName","children","size","state","searchable","tagRender","props","open","setOpen","React","handleOpenChange","newOpen","Popover","jsx","PopoverTrigger","jsxs","Label","cn","option","ChevronUp","ChevronDown","e","X","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","Fragment","Check"],"mappings":"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"}
1
+ {"version":3,"file":"combobox.cjs","sources":["../../../../../../../../packages/ui/src/components/combobox.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport { Check, ChevronDown, ChevronUp, X } from \"lucide-react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from \"./command\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"./popover\";\nimport { cn } from \"../lib/utils\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\nimport { Label } from \"./label\";\n\nconst comboboxVariants = cva(\n \"ds:justify-between ds:relative ds:dark:bg-background ds:dark:hover:bg-input/50 ds:border-input ds:w-full ds:min-w-0 ds:rounded-md ds:border ds:border-border ds:bg-transparent ds:shadow-xs ds:transition-[color,box-shadow] ds:outline-none ds:file:inline-flex ds:file:h-7 ds:file:border-0 ds:file:bg-transparent ds:file:text-sm ds:file:font-medium ds:disabled:pointer-events-none ds:disabled:cursor-not-allowed ds:disabled:opacity-50 ds:focus-visible:border-ring ds:focus-visible:ring-ring/50 ds:focus-visible:ring-[3px] ds:aria-invalid:ring-destructive/20 ds:dark:aria-invalid:ring-destructive/40 ds:aria-invalid:border-destructive\",\n {\n variants: {\n size: {\n xs: \"ds:h-6 ds:text-xs ds:px-2 ds:py-0.5\",\n sm: \"ds:h-8 ds:text-sm ds:px-2.5 ds:py-1\",\n normal: \"ds:h-9 ds:px-3 ds:py-1\",\n lg: \"ds:h-11 ds:px-4 ds:py-2\",\n xl: \"ds:h-14 ds:px-5 ds:py-3\",\n },\n state: {\n default: \"\",\n success:\n \"ds:border-success ds:ring-success/30 ds:focus-visible:border-success ds:focus-visible:ring-success/50\",\n error:\n \"ds:border-destructive ds:ring-destructive/30 ds:focus-visible:border-destructive ds:focus-visible:ring-destructive/50\",\n warning:\n \"ds:border-warning ds:ring-warning/30 ds:focus-visible:border-warning ds:focus-visible:ring-warning/50\",\n },\n },\n defaultVariants: {\n size: \"normal\",\n state: \"default\",\n },\n }\n);\n\ntype SelectOption = {\n label: React.ReactNode;\n value: string;\n group?: string;\n icon?: React.ReactNode;\n disabled?: boolean;\n};\n\ntype ComboboxProps = Omit<\n React.ComponentProps<typeof PopoverPrimitive.Trigger>,\n \"onChange\"\n> & {\n value?: string;\n options?: SelectOption[];\n placeHolder?: string;\n onChange?: (value?: string | null) => void;\n clearable?: boolean;\n emptyText?: string;\n className?: string;\n dropdownClassName?: string;\n children?: React.ReactNode;\n size?: \"normal\" | \"sm\" | \"xs\" | \"lg\" | \"xl\";\n state?: \"default\" | \"success\" | \"error\" | \"warning\";\n searchable?: boolean;\n tagRender?: (\n option: SelectOption & { onClick?: () => void }\n ) => React.ReactNode;\n} & VariantProps<typeof comboboxVariants>;\n\nfunction Combobox({\n value,\n options,\n placeHolder,\n emptyText,\n onChange,\n clearable,\n className,\n dropdownClassName,\n children,\n size,\n state = \"default\",\n searchable = true,\n tagRender,\n ...props\n}: ComboboxProps) {\n const [open, setOpen] = React.useState(false);\n\n const handleOpenChange = React.useCallback((newOpen: boolean) => {\n setOpen(newOpen);\n }, []);\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange} modal={true}>\n <PopoverTrigger asChild {...props}>\n {children ?? (\n <Label className={cn(comboboxVariants({ size, state }), className)}>\n <span\n className={cn(\n \"ds:truncate ds:w-full ds:inline-block ds:align-middle ds:text-left\",\n {\n \"ds:pr-8\": clearable,\n }\n )}\n >\n {value\n ? options?.find((option) => option.value === value)?.label\n : placeHolder}\n </span>\n {open && (\n <ChevronUp\n className={cn(\n \"ds:z-10 ds:opacity-50\",\n {\n \"ds:size-4 ds:min-w-4\": size === \"sm\" || size === \"xs\",\n \"ds:size-5 ds:min-w-5\": size === \"lg\" || size === \"xl\",\n },\n dropdownClassName\n )}\n />\n )}\n {!open && (\n <ChevronDown\n className={cn(\n \"ds:z-10 ds:opacity-50\",\n {\n \"ds:size-4 ds:min-w-4\": size === \"sm\" || size === \"xs\",\n \"ds:size-5 ds:min-w-5\": size === \"lg\" || size === \"xl\",\n },\n dropdownClassName\n )}\n />\n )}\n </Label>\n )}\n </PopoverTrigger>\n\n {clearable && value && (\n <Label\n onClick={(e) => {\n e.stopPropagation();\n onChange?.(\"\");\n }}\n className=\"ds:absolute ds:right-11 ds:top-1/2 ds:-translate-y-1/2 ds:rounded-sm ds:p-1 ds:text-muted-foreground ds:hover:bg-accent ds:hover:text-accent-foreground ds:cursor-pointer ds:size-6 ds:opacity-50\"\n >\n <X className=\"ds:h-4 ds:w-4\" />\n </Label>\n )}\n <PopoverContent\n className={cn(\"ds:p-0 ds:w-(--radix-popover-trigger-width)\")}\n onInteractOutside={(e) => {\n // Prevent closing when clicking the trigger\n const target = e.target as HTMLElement;\n if (target.closest('[data-slot=\"popover-trigger\"]')) {\n e.preventDefault();\n }\n }}\n >\n <Command>\n {searchable && (\n <CommandInput placeholder={placeHolder} className=\"ds:h-9\" />\n )}\n <CommandList>\n <CommandEmpty>{emptyText || \"Not found\"}</CommandEmpty>\n <CommandGroup>\n {options?.map((option) => (\n <CommandItem\n key={option.value}\n value={String(option.label)} // Để Command search theo label\n onSelect={\n option?.disabled\n ? undefined\n : () => {\n onChange?.(option.value); // Lưu value thực sự\n setOpen(false);\n }\n }\n className={cn(\n option?.disabled &&\n \"ds:opacity-50 ds:cursor-not-allowed ds:grayscale\",\n value === option.value && \"ds:bg-primary/10 ds:dark:bg-primary/20\"\n )}\n >\n {tagRender ? (\n tagRender(option)\n ) : (\n <>\n {option.icon && (\n <span className=\"ds:mr-2 ds:max-w-4 ds:max-h-4\">\n {option.icon}\n </span>\n )}\n {option.label}\n </>\n )}\n <Check\n className={cn(\n \"ds:ml-auto\",\n value === option.value ? \"ds:opacity-100\" : \"ds:opacity-0\" // So sánh theo value\n )}\n />\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport { Combobox, type ComboboxProps, type SelectOption };\n"],"names":["comboboxVariants","cva","Combobox","value","options","placeHolder","emptyText","onChange","clearable","className","dropdownClassName","children","size","state","searchable","tagRender","props","open","setOpen","React","handleOpenChange","newOpen","Popover","jsx","PopoverTrigger","jsxs","Label","cn","option","ChevronUp","ChevronDown","e","X","PopoverContent","Command","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandItem","Fragment","Check"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("@radix-ui/react-context-menu"),r=require("lucide-react"),o=require("../lib/utils.cjs");function u(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const d in t)if(d!=="default"){const a=Object.getOwnPropertyDescriptor(t,d);Object.defineProperty(s,d,a.get?a:{enumerable:!0,get:()=>t[d]})}}return s.default=t,Object.freeze(s)}const n=u(i);function c({...t}){return e.jsx(n.Root,{"data-slot":"context-menu",...t})}function l({...t}){return e.jsx(n.Trigger,{"data-slot":"context-menu-trigger",...t})}function x({...t}){return e.jsx(n.Group,{"data-slot":"context-menu-group",...t})}function m({...t}){return e.jsx(n.Portal,{"data-slot":"context-menu-portal",...t})}function f({...t}){return e.jsx(n.Sub,{"data-slot":"context-menu-sub",...t})}function g({...t}){return e.jsx(n.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function p({className:t,inset:s,children:d,...a}){return e.jsxs(n.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":s,className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[state=open]:bg-accent ds:data-[state=open]:text-accent-foreground ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:flex ds:cursor-default ds:items-center ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4 ds:gap-2",t),...a,children:[d,e.jsx(r.ChevronRightIcon,{className:"ds:ml-auto"})]})}function v({className:t,...s}){return e.jsx(n.SubContent,{"data-slot":"context-menu-sub-content",className:o.cn("ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-hidden ds:rounded-md ds:border ds:p-1 ds:shadow-lg",t),...s})}function b({className:t,...s}){return e.jsx(n.Portal,{children:e.jsx(n.Content,{"data-slot":"context-menu-content",updatePositionStrategy:"always",className:o.cn("ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:max-h-(--radix-context-menu-content-available-height) ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-x-hidden ds:overflow-y-auto ds:rounded-md ds:border ds:p-1 ds:shadow-md",t),...s})})}function C({className:t,inset:s,variant:d="default",...a}){return e.jsx(n.Item,{"data-slot":"context-menu-item","data-inset":s,"data-variant":d,className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[variant=destructive]:text-destructive ds:data-[variant=destructive]:focus:bg-destructive/10 ds:dark:data-[variant=destructive]:focus:bg-destructive/20 ds:data-[variant=destructive]:focus:text-destructive ds:data-[variant=destructive]:*:[svg]:!text-destructive ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),...a})}function h({className:t,children:s,checked:d,...a}){return e.jsxs(n.CheckboxItem,{"data-slot":"context-menu-checkbox-item",className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),checked:d,...a,children:[e.jsx("span",{className:"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center",children:e.jsx(n.ItemIndicator,{children:e.jsx(r.CheckIcon,{className:"ds:size-4"})})}),s]})}function M({className:t,children:s,...d}){return e.jsxs(n.RadioItem,{"data-slot":"context-menu-radio-item",className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),...d,children:[e.jsx("span",{className:"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center",children:e.jsx(n.ItemIndicator,{children:e.jsx(r.CircleIcon,{className:"ds:size-2 ds:fill-current"})})}),s]})}function j({className:t,inset:s,...d}){return e.jsx(n.Label,{"data-slot":"context-menu-label","data-inset":s,className:o.cn("ds:text-foreground ds:px-2 ds:py-1.5 ds:text-sm ds:font-medium ds:data-[inset]:pl-8",t),...d})}function y({className:t,...s}){return e.jsx(n.Separator,{"data-slot":"context-menu-separator",className:o.cn("ds:bg-border ds:-mx-1 ds:my-1 ds:h-px",t),...s})}function z({className:t,...s}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:o.cn("ds:text-muted-foreground ds:ml-auto ds:text-xs ds:tracking-widest",t),...s})}exports.ContextMenu=c;exports.ContextMenuCheckboxItem=h;exports.ContextMenuContent=b;exports.ContextMenuGroup=x;exports.ContextMenuItem=C;exports.ContextMenuLabel=j;exports.ContextMenuPortal=m;exports.ContextMenuRadioGroup=g;exports.ContextMenuRadioItem=M;exports.ContextMenuSeparator=y;exports.ContextMenuShortcut=z;exports.ContextMenuSub=f;exports.ContextMenuSubContent=v;exports.ContextMenuSubTrigger=p;exports.ContextMenuTrigger=l;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),i=require("@radix-ui/react-context-menu"),r=require("lucide-react"),o=require("../lib/utils.cjs");function u(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const d in t)if(d!=="default"){const a=Object.getOwnPropertyDescriptor(t,d);Object.defineProperty(s,d,a.get?a:{enumerable:!0,get:()=>t[d]})}}return s.default=t,Object.freeze(s)}const n=u(i);function c({...t}){return e.jsx(n.Root,{"data-slot":"context-menu",...t})}function l({...t}){return e.jsx(n.Trigger,{"data-slot":"context-menu-trigger",...t})}function x({...t}){return e.jsx(n.Group,{"data-slot":"context-menu-group",...t})}function m({...t}){return e.jsx(n.Portal,{"data-slot":"context-menu-portal",...t})}function f({...t}){return e.jsx(n.Sub,{"data-slot":"context-menu-sub",...t})}function g({...t}){return e.jsx(n.RadioGroup,{"data-slot":"context-menu-radio-group",...t})}function p({className:t,inset:s,children:d,...a}){return e.jsxs(n.SubTrigger,{"data-slot":"context-menu-sub-trigger","data-inset":s,className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[state=open]:bg-accent ds:data-[state=open]:text-accent-foreground ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:flex ds:cursor-default ds:items-center ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4 ds:gap-2",t),...a,children:[d,e.jsx(r.ChevronRightIcon,{className:"ds:ml-auto"})]})}function b({className:t,...s}){return e.jsx(n.SubContent,{"data-slot":"context-menu-sub-content",className:o.cn("ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-hidden ds:rounded-md ds:border ds:border-border ds:p-1 ds:shadow-lg",t),...s})}function v({className:t,...s}){return e.jsx(n.Portal,{children:e.jsx(n.Content,{"data-slot":"context-menu-content",updatePositionStrategy:"always",className:o.cn("ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:max-h-(--radix-context-menu-content-available-height) ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-x-hidden ds:overflow-y-auto ds:rounded-md ds:border ds:p-1 ds:shadow-md",t),...s})})}function C({className:t,inset:s,variant:d="default",...a}){return e.jsx(n.Item,{"data-slot":"context-menu-item","data-inset":s,"data-variant":d,className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[variant=destructive]:text-destructive ds:data-[variant=destructive]:focus:bg-destructive/10 ds:dark:data-[variant=destructive]:focus:bg-destructive/20 ds:data-[variant=destructive]:focus:text-destructive ds:data-[variant=destructive]:*:[svg]:!text-destructive ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),...a})}function h({className:t,children:s,checked:d,...a}){return e.jsxs(n.CheckboxItem,{"data-slot":"context-menu-checkbox-item",className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),checked:d,...a,children:[e.jsx("span",{className:"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center",children:e.jsx(n.ItemIndicator,{children:e.jsx(r.CheckIcon,{className:"ds:size-4"})})}),s]})}function M({className:t,children:s,...d}){return e.jsxs(n.RadioItem,{"data-slot":"context-menu-radio-item",className:o.cn("ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4",t),...d,children:[e.jsx("span",{className:"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center",children:e.jsx(n.ItemIndicator,{children:e.jsx(r.CircleIcon,{className:"ds:size-2 ds:fill-current"})})}),s]})}function j({className:t,inset:s,...d}){return e.jsx(n.Label,{"data-slot":"context-menu-label","data-inset":s,className:o.cn("ds:text-foreground ds:px-2 ds:py-1.5 ds:text-sm ds:font-medium ds:data-[inset]:pl-8",t),...d})}function y({className:t,...s}){return e.jsx(n.Separator,{"data-slot":"context-menu-separator",className:o.cn("ds:bg-border ds:-mx-1 ds:my-1 ds:h-px",t),...s})}function z({className:t,...s}){return e.jsx("span",{"data-slot":"context-menu-shortcut",className:o.cn("ds:text-muted-foreground ds:ml-auto ds:text-xs ds:tracking-widest",t),...s})}exports.ContextMenu=c;exports.ContextMenuCheckboxItem=h;exports.ContextMenuContent=v;exports.ContextMenuGroup=x;exports.ContextMenuItem=C;exports.ContextMenuLabel=j;exports.ContextMenuPortal=m;exports.ContextMenuRadioGroup=g;exports.ContextMenuRadioItem=M;exports.ContextMenuSeparator=y;exports.ContextMenuShortcut=z;exports.ContextMenuSub=f;exports.ContextMenuSubContent=b;exports.ContextMenuSubTrigger=p;exports.ContextMenuTrigger=l;
2
2
  //# sourceMappingURL=context-menu.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-menu.cjs","sources":["../../../../../../../../packages/ui/src/components/context-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[state=open]:bg-accent ds:data-[state=open]:text-accent-foreground ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:flex ds:cursor-default ds:items-center ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4 ds:gap-2\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ds:ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-hidden ds:rounded-md ds:border ds:p-1 ds:shadow-lg\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n updatePositionStrategy=\"always\"\n className={cn(\n \"ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:max-h-(--radix-context-menu-content-available-height) ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-x-hidden ds:overflow-y-auto ds:rounded-md ds:border ds:p-1 ds:shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[variant=destructive]:text-destructive ds:data-[variant=destructive]:focus:bg-destructive/10 ds:dark:data-[variant=destructive]:focus:bg-destructive/20 ds:data-[variant=destructive]:focus:text-destructive ds:data-[variant=destructive]:*:[svg]:!text-destructive ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"ds:size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"ds:size-2 ds:fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"ds:text-foreground ds:px-2 ds:py-1.5 ds:text-sm ds:font-medium ds:data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"ds:bg-border ds:-mx-1 ds:my-1 ds:h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ds:text-muted-foreground ds:ml-auto ds:text-xs ds:tracking-widest\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","jsx","ContextMenuSubTrigger","className","inset","children","jsxs","cn","ChevronRightIcon","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","variant","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","CircleIcon","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}
1
+ {"version":3,"file":"context-menu.cjs","sources":["../../../../../../../../packages/ui/src/components/context-menu.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as ContextMenuPrimitive from \"@radix-ui/react-context-menu\";\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from \"lucide-react\";\n\nimport { cn } from \"@dsui/ui/lib/utils\";\n\nfunction ContextMenu({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root>) {\n return <ContextMenuPrimitive.Root data-slot=\"context-menu\" {...props} />;\n}\n\nfunction ContextMenuTrigger({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger>) {\n return (\n <ContextMenuPrimitive.Trigger data-slot=\"context-menu-trigger\" {...props} />\n );\n}\n\nfunction ContextMenuGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group>) {\n return (\n <ContextMenuPrimitive.Group data-slot=\"context-menu-group\" {...props} />\n );\n}\n\nfunction ContextMenuPortal({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal>) {\n return (\n <ContextMenuPrimitive.Portal data-slot=\"context-menu-portal\" {...props} />\n );\n}\n\nfunction ContextMenuSub({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub>) {\n return <ContextMenuPrimitive.Sub data-slot=\"context-menu-sub\" {...props} />;\n}\n\nfunction ContextMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup>) {\n return (\n <ContextMenuPrimitive.RadioGroup\n data-slot=\"context-menu-radio-group\"\n {...props}\n />\n );\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-slot=\"context-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[state=open]:bg-accent ds:data-[state=open]:text-accent-foreground ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:flex ds:cursor-default ds:items-center ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4 ds:gap-2\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"ds:ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent>) {\n return (\n <ContextMenuPrimitive.SubContent\n data-slot=\"context-menu-sub-content\"\n className={cn(\n \"ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-hidden ds:rounded-md ds:border ds:border-border ds:p-1 ds:shadow-lg\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content>) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n data-slot=\"context-menu-content\"\n updatePositionStrategy=\"always\"\n className={cn(\n \"ds:bg-popover ds:text-popover-foreground ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0 ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95 ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2 ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2 ds:z-50 ds:max-h-(--radix-context-menu-content-available-height) ds:min-w-[8rem] ds:origin-(--radix-context-menu-content-transform-origin) ds:overflow-x-hidden ds:overflow-y-auto ds:rounded-md ds:border ds:p-1 ds:shadow-md\",\n className\n )}\n {...props}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <ContextMenuPrimitive.Item\n data-slot=\"context-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:data-[variant=destructive]:text-destructive ds:data-[variant=destructive]:focus:bg-destructive/10 ds:dark:data-[variant=destructive]:focus:bg-destructive/20 ds:data-[variant=destructive]:focus:text-destructive ds:data-[variant=destructive]:*:[svg]:!text-destructive ds:[&_svg:not([class*='text-'])]:text-muted-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:px-2 ds:py-1.5 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:data-[inset]:pl-8 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem>) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n data-slot=\"context-menu-checkbox-item\"\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"ds:size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem>) {\n return (\n <ContextMenuPrimitive.RadioItem\n data-slot=\"context-menu-radio-item\"\n className={cn(\n \"ds:focus:bg-accent ds:focus:text-accent-foreground ds:relative ds:flex ds:cursor-default ds:items-center ds:gap-2 ds:rounded-sm ds:py-1.5 ds:pr-2 ds:pl-8 ds:text-sm ds:outline-hidden ds:select-none ds:data-[disabled]:pointer-events-none ds:data-[disabled]:opacity-50 ds:[&_svg]:pointer-events-none ds:[&_svg]:shrink-0 ds:[&_svg:not([class*='size-'])]:size-4\",\n className\n )}\n {...props}\n >\n <span className=\"ds:pointer-events-none ds:absolute ds:left-2 ds:flex ds:size-3.5 ds:items-center ds:justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"ds:size-2 ds:fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <ContextMenuPrimitive.Label\n data-slot=\"context-menu-label\"\n data-inset={inset}\n className={cn(\n \"ds:text-foreground ds:px-2 ds:py-1.5 ds:text-sm ds:font-medium ds:data-[inset]:pl-8\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator>) {\n return (\n <ContextMenuPrimitive.Separator\n data-slot=\"context-menu-separator\"\n className={cn(\"ds:bg-border ds:-mx-1 ds:my-1 ds:h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"context-menu-shortcut\"\n className={cn(\n \"ds:text-muted-foreground ds:ml-auto ds:text-xs ds:tracking-widest\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuTrigger,\n ContextMenuContent,\n ContextMenuItem,\n ContextMenuCheckboxItem,\n ContextMenuRadioItem,\n ContextMenuLabel,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuGroup,\n ContextMenuPortal,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuRadioGroup,\n};\n"],"names":["ContextMenu","props","ContextMenuPrimitive","ContextMenuTrigger","ContextMenuGroup","ContextMenuPortal","ContextMenuSub","ContextMenuRadioGroup","jsx","ContextMenuSubTrigger","className","inset","children","jsxs","cn","ChevronRightIcon","ContextMenuSubContent","ContextMenuContent","ContextMenuItem","variant","ContextMenuCheckboxItem","checked","CheckIcon","ContextMenuRadioItem","CircleIcon","ContextMenuLabel","ContextMenuSeparator","ContextMenuShortcut"],"mappings":"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"}