@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.
- package/dist/AI_CONTEXT.md +1 -0
- package/dist/cjs/components/Button/Button.cjs +1 -1
- package/dist/cjs/components/Button/Button.cjs.map +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs +1 -1
- package/dist/cjs/components/DatePicker/RangePicker.cjs.map +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs +1 -1
- package/dist/cjs/components/ImageViewer/ImageViewer.cjs.map +1 -1
- package/dist/cjs/components/Input/Input.cjs +1 -1
- package/dist/cjs/components/Input/Input.cjs.map +1 -1
- package/dist/cjs/components/Table/data-table.cjs +1 -1
- package/dist/cjs/components/Table/data-table.cjs.map +1 -1
- package/dist/cjs/hooks/use-data-table.cjs +1 -1
- package/dist/cjs/hooks/use-data-table.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/alert-dialog.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/calendar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/combobox.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/context-menu.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/popover.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/sidebar.cjs.map +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs +1 -1
- package/dist/cjs/packages/ui/src/components/table.cjs.map +1 -1
- package/dist/cjs/styles/index.css +1 -1
- package/dist/esm/components/Button/Button.js +22 -24
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/DatePicker/RangePicker.js +41 -41
- package/dist/esm/components/DatePicker/RangePicker.js.map +1 -1
- package/dist/esm/components/ImageViewer/ImageViewer.js +3 -3
- package/dist/esm/components/ImageViewer/ImageViewer.js.map +1 -1
- package/dist/esm/components/Input/Input.js +37 -36
- package/dist/esm/components/Input/Input.js.map +1 -1
- package/dist/esm/components/Table/data-table.js +22 -16
- package/dist/esm/components/Table/data-table.js.map +1 -1
- package/dist/esm/hooks/use-data-table.js +68 -64
- package/dist/esm/hooks/use-data-table.js.map +1 -1
- package/dist/esm/packages/ui/src/components/alert-dialog.js +7 -7
- package/dist/esm/packages/ui/src/components/alert-dialog.js.map +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js +1 -1
- package/dist/esm/packages/ui/src/components/calendar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js +1 -1
- package/dist/esm/packages/ui/src/components/combobox.js.map +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js +1 -1
- package/dist/esm/packages/ui/src/components/context-menu.js.map +1 -1
- package/dist/esm/packages/ui/src/components/popover.js +1 -1
- package/dist/esm/packages/ui/src/components/popover.js.map +1 -1
- package/dist/esm/packages/ui/src/components/sidebar.js +2 -2
- package/dist/esm/packages/ui/src/components/sidebar.js.map +1 -1
- package/dist/esm/packages/ui/src/components/table.js +5 -5
- package/dist/esm/packages/ui/src/components/table.js.map +1 -1
- package/dist/esm/styles/index.css +1 -1
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Input/Input.d.ts +1 -0
- package/dist/types/components/Input/Input.d.ts.map +1 -1
- package/dist/types/components/Table/data-table-toolbar.d.ts +3 -1
- package/dist/types/components/Table/data-table-toolbar.d.ts.map +1 -1
- package/dist/types/components/Table/data-table-view-options.d.ts +12 -3
- package/dist/types/components/Table/data-table-view-options.d.ts.map +1 -1
- package/dist/types/components/Table/data-table.d.ts.map +1 -1
- package/dist/types/hooks/use-data-table.d.ts.map +1 -1
- 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"),
|
|
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\"
|
|
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"),
|
|
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"),
|
|
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,
|
|
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
|
|
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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"}
|