@alkimi.org/ui-kit 0.8.1 → 0.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-24H4O2Z5.js +3 -0
- package/dist/chunk-24H4O2Z5.js.map +1 -0
- package/dist/chunk-7YRREWHH.js +3 -0
- package/dist/chunk-7YRREWHH.js.map +1 -0
- package/dist/chunk-A7NIT2PJ.mjs +3 -0
- package/dist/chunk-A7NIT2PJ.mjs.map +1 -0
- package/dist/{chunk-LIQU27WD.js → chunk-FFX2EHXT.js} +2 -2
- package/dist/{chunk-LIQU27WD.js.map → chunk-FFX2EHXT.js.map} +1 -1
- package/dist/{chunk-JCADQPVL.mjs → chunk-GB5MQZ4S.mjs} +2 -2
- package/dist/{chunk-JCADQPVL.mjs.map → chunk-GB5MQZ4S.mjs.map} +1 -1
- package/dist/chunk-LFPVTYLX.mjs +3 -0
- package/dist/chunk-LFPVTYLX.mjs.map +1 -0
- package/dist/components/accordion.d.mts +17 -0
- package/dist/components/accordion.d.ts +17 -0
- package/dist/components/accordion.js +3 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/accordion.mjs +3 -0
- package/dist/components/accordion.mjs.map +1 -0
- package/dist/components/button.d.mts +1 -1
- package/dist/components/button.d.ts +1 -1
- package/dist/components/sidebar.js +1 -1
- package/dist/components/sidebar.mjs +1 -1
- package/dist/components/table.js +1 -1
- package/dist/components/table.mjs +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/package.json +2 -1
- package/dist/chunk-2Q4N3AS5.js +0 -3
- package/dist/chunk-2Q4N3AS5.js.map +0 -1
- package/dist/chunk-CMWQZYPL.mjs +0 -3
- package/dist/chunk-CMWQZYPL.mjs.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var r = _interopRequireWildcard(_react);var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var f=r.createContext({}),b="[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted",m="[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted";function C({className:a,stickyFirstColumn:t,...o}){return _jsxruntime.jsx.call(void 0, f.Provider,{value:{stickyFirstColumn:t},children:_jsxruntime.jsx.call(void 0, "div",{"data-slot":"table-container",className:_chunkFUYXCJOQjs.a.call(void 0, "relative bg-background w-full overflow-x-auto border border-border rounded-3xl",t&&b,t&&m),children:_jsxruntime.jsx.call(void 0, "table",{"data-slot":"table",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full caption-bottom text-sm",a),...o})})})}function y({className:a,...t}){return _jsxruntime.jsx.call(void 0, "thead",{"data-slot":"table-header",className:_chunkFUYXCJOQjs.a.call(void 0, "[&_tr]:border-b text-secondary-text",a),...t})}function k({className:a,...t}){return _jsxruntime.jsx.call(void 0, "tbody",{"data-slot":"table-body",className:_chunkFUYXCJOQjs.a.call(void 0, "[&_tr:last-child]:border-0",a),...t})}function v({className:a,...t}){return _jsxruntime.jsx.call(void 0, "tfoot",{"data-slot":"table-footer",className:_chunkFUYXCJOQjs.a.call(void 0, "bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",a),...t})}function R({className:a,isClickable:t,actionIcon:o,children:c,...i}){let s=o==="eye"?_jsxruntime.jsx.call(void 0, _lucidereact.Eye,{className:"h-4 w-4"}):o==="more"?_jsxruntime.jsx.call(void 0, _lucidereact.MoreVertical,{className:"h-4 w-4"}):null;return _jsxruntime.jsxs.call(void 0, "tr",{"data-slot":"table-row","data-has-action-column":o!==void 0?"":void 0,className:_chunkFUYXCJOQjs.a.call(void 0, "border-b border-border/50 transition-colors",t&&"cursor-pointer hover:bg-muted/50",a),...i,children:[o!==void 0&&_jsxruntime.jsx.call(void 0, p,{className:"w-12",children:s}),c]})}function T({className:a,isSticky:t,...o}){return _jsxruntime.jsx.call(void 0, "th",{"data-slot":"table-head",className:_chunkFUYXCJOQjs.a.call(void 0, "text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t&&"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border",a),...o})}function p({className:a,isSticky:t,...o}){return _jsxruntime.jsx.call(void 0, "td",{"data-slot":"table-cell",className:_chunkFUYXCJOQjs.a.call(void 0, "p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t&&"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border",a),...o})}function P({className:a,onClick:t,children:o,asChild:c=!1,...i}){let s=l=>{l.stopPropagation(),_optionalChain([t, 'optionalCall', _2 => _2(l)])};return c&&r.isValidElement(o)?r.cloneElement(o,{onClick:l=>{l.stopPropagation();let d=o.props.onClick;_optionalChain([d, 'optionalCall', _3 => _3(l)])},className:_chunkFUYXCJOQjs.a.call(void 0, "inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent",o.props.className,a)}):_jsxruntime.jsx.call(void 0, "button",{type:"button","data-slot":"table-cell-action",className:_chunkFUYXCJOQjs.a.call(void 0, "inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent",a),onClick:s,...i,children:o})}function w({className:a,...t}){return _jsxruntime.jsx.call(void 0, "caption",{"data-slot":"table-caption",className:_chunkFUYXCJOQjs.a.call(void 0, "text-muted-foreground mt-4 text-sm",a),...t})}exports.a = C; exports.b = y; exports.c = k; exports.d = v; exports.e = R; exports.f = T; exports.g = p; exports.h = P; exports.i = w;
|
|
3
|
+
//# sourceMappingURL=chunk-24H4O2Z5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-24H4O2Z5.js","../src/components/table.tsx"],"names":["TableContext","stickyFirstColumnStyles","stickyActionColumnStyles","Table","className","stickyFirstColumn","props","jsx","cn","TableHeader","TableBody","TableFooter","TableRow","isClickable","actionIcon","children","iconComponent","Eye","MoreVertical","jsxs","TableCell","TableHead","isSticky","TableCellAction","onClick","asChild","handleClick","e","childOnClick","TableCaption"],"mappings":"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","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-24H4O2Z5.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Eye, MoreVertical } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface TableContextValue {\n stickyFirstColumn?: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue>({})\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {\n stickyFirstColumn?: boolean\n}\n\n// Sticky first column (rows without action icon)\nconst stickyFirstColumnStyles =\n \"[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted\"\n\n// Sticky first two columns (rows with action icon): icon at left-0, data column at left-12\nconst stickyActionColumnStyles =\n \"[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted\"\n\nfunction Table({ className, stickyFirstColumn, ...props }: TableProps) {\n return (\n <TableContext.Provider value={{ stickyFirstColumn }}>\n <div\n data-slot=\"table-container\"\n className={cn(\n \"relative bg-background w-full overflow-x-auto border border-border rounded-3xl\",\n stickyFirstColumn && stickyFirstColumnStyles,\n stickyFirstColumn && stickyActionColumnStyles\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n </TableContext.Provider>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b text-secondary-text\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {\n isClickable?: boolean\n actionIcon?: \"eye\" | \"more\" | null\n}\n\nfunction TableRow({\n className,\n isClickable,\n actionIcon,\n children,\n ...props\n}: TableRowProps) {\n const iconComponent =\n actionIcon === \"eye\" ? (\n <Eye className=\"h-4 w-4\" />\n ) : actionIcon === \"more\" ? (\n <MoreVertical className=\"h-4 w-4\" />\n ) : null\n\n return (\n <tr\n data-slot=\"table-row\"\n data-has-action-column={actionIcon !== undefined ? \"\" : undefined}\n className={cn(\n \"border-b border-border/50 transition-colors\",\n isClickable && \"cursor-pointer hover:bg-muted/50\",\n className\n )}\n {...props}\n >\n {actionIcon !== undefined && (\n <TableCell className=\"w-12\">{iconComponent}</TableCell>\n )}\n {children}\n </tr>\n )\n}\n\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {\n isSticky?: boolean\n}\n\nfunction TableHead({ className, isSticky, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {\n isSticky?: boolean\n}\n\nfunction TableCell({ className, isSticky, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellActionProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean\n}\n\nfunction TableCellAction({\n className,\n onClick,\n children,\n asChild = false,\n ...props\n}: TableCellActionProps) {\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n onClick?.(e)\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n className?: string\n }>,\n {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n const childOnClick = (\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n }>\n ).props.onClick\n childOnClick?.(e)\n },\n className: cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n (children as React.ReactElement<{ className?: string }>).props\n .className,\n className\n ),\n }\n )\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"table-cell-action\"\n className={cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCellAction,\n TableCaption,\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } }"use client";
|
|
2
|
+
var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var n = _interopRequireWildcard(_react);var _reactaccordion = require('@radix-ui/react-accordion'); var e = _interopRequireWildcard(_reactaccordion);var _lucidereact = require('lucide-react');var _classvarianceauthority = require('class-variance-authority');var _jsxruntime = require('react/jsx-runtime');var f=_classvarianceauthority.cva.call(void 0, "rounded-3xl",{variants:{variant:{default:"border border-border bg-background",ghost:""}},defaultVariants:{variant:"default"}}),l= exports.a =n.forwardRef(({className:i,...r},t)=>_jsxruntime.jsx.call(void 0, e.Root,{ref:t,className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col gap-4",i),...r}));l.displayName="Accordion";var R=n.forwardRef(({className:i,variant:r,...t},a)=>_jsxruntime.jsx.call(void 0, e.Item,{ref:a,className:_chunkFUYXCJOQjs.a.call(void 0, f({variant:r}),i),...t}));R.displayName="AccordionItem";var v=n.forwardRef(({className:i,children:r,aside:t,...a},d)=>_jsxruntime.jsx.call(void 0, e.Header,{className:"flex",children:_jsxruntime.jsxs.call(void 0, e.Trigger,{ref:d,className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-1 cursor-pointer items-center gap-4 px-4.5 py-3.5 text-sm transition-all text-left [&[data-state=open]>svg]:rotate-90 data-disabled:cursor-not-allowed",i),...a,children:[_jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight,{className:"h-4 w-4 shrink-0 transition-transform duration-200 in-data-disabled:opacity-40"}),_jsxruntime.jsx.call(void 0, "span",{className:"in-data-disabled:opacity-40",children:r}),t&&_jsxruntime.jsx.call(void 0, "span",{className:"ml-auto",children:t})]})}));v.displayName=e.Trigger.displayName;var A=n.forwardRef(({className:i,children:r,description:t,...a},d)=>_jsxruntime.jsxs.call(void 0, e.Content,{ref:d,className:"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",...a,children:[t&&_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "div",{className:"pl-12.5 pr-4.5 pb-3 text-sm text-secondary-text",children:t}),_jsxruntime.jsx.call(void 0, "div",{className:"border-t border-border"})]}),_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "px-4.5 pb-4 pt-3",i),children:r})]}));A.displayName=e.Content.displayName;exports.a = l; exports.b = R; exports.c = v; exports.d = A;
|
|
3
|
+
//# sourceMappingURL=chunk-7YRREWHH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7YRREWHH.js","../src/components/accordion.tsx"],"names":["accordionItemVariants","cva","Accordion","className","props","ref","jsx","cn","AccordionItem","variant","AccordionTrigger","children","aside","jsxs","ChevronRight","AccordionContent","description","Fragment"],"mappings":"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","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-7YRREWHH.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronRight } from \"lucide-react\"\n\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst accordionItemVariants = cva(\"rounded-3xl\", {\n variants: {\n variant: {\n default: \"border border-border bg-background\",\n ghost: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n})\n\nconst Accordion = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Root\n ref={ref}\n className={cn(\"flex flex-col gap-4\", className)}\n {...props}\n />\n))\nAccordion.displayName = \"Accordion\"\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> &\n VariantProps<typeof accordionItemVariants>\n>(({ className, variant, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(accordionItemVariants({ variant }), className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> & {\n aside?: React.ReactNode\n }\n>(({ className, children, aside, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 cursor-pointer items-center gap-4 px-4.5 py-3.5 text-sm transition-all text-left [&[data-state=open]>svg]:rotate-90 data-disabled:cursor-not-allowed\",\n className\n )}\n {...props}\n >\n <ChevronRight className=\"h-4 w-4 shrink-0 transition-transform duration-200 in-data-disabled:opacity-40\" />\n <span className=\"in-data-disabled:opacity-40\">{children}</span>\n {aside && <span className=\"ml-auto\">{aside}</span>}\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content> & {\n description?: React.ReactNode\n }\n>(({ className, children, description, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n {description && (\n <>\n <div className=\"pl-12.5 pr-4.5 pb-3 text-sm text-secondary-text\">\n {description}\n </div>\n <div className=\"border-t border-border\" />\n </>\n )}\n\n <div className={cn(\"px-4.5 pb-4 pt-3\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import{a as n}from"./chunk-S5TKCF6T.mjs";import*as r from"react";import{Eye as h,MoreVertical as u}from"lucide-react";import{jsx as e,jsxs as _}from"react/jsx-runtime";var f=r.createContext({}),b="[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted",m="[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted";function C({className:a,stickyFirstColumn:t,...o}){return e(f.Provider,{value:{stickyFirstColumn:t},children:e("div",{"data-slot":"table-container",className:n("relative bg-background w-full overflow-x-auto border border-border rounded-3xl",t&&b,t&&m),children:e("table",{"data-slot":"table",className:n("w-full caption-bottom text-sm",a),...o})})})}function y({className:a,...t}){return e("thead",{"data-slot":"table-header",className:n("[&_tr]:border-b text-secondary-text",a),...t})}function k({className:a,...t}){return e("tbody",{"data-slot":"table-body",className:n("[&_tr:last-child]:border-0",a),...t})}function v({className:a,...t}){return e("tfoot",{"data-slot":"table-footer",className:n("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0",a),...t})}function R({className:a,isClickable:t,actionIcon:o,children:c,...i}){let s=o==="eye"?e(h,{className:"h-4 w-4"}):o==="more"?e(u,{className:"h-4 w-4"}):null;return _("tr",{"data-slot":"table-row","data-has-action-column":o!==void 0?"":void 0,className:n("border-b border-border/50 transition-colors",t&&"cursor-pointer hover:bg-muted/50",a),...i,children:[o!==void 0&&e(p,{className:"w-12",children:s}),c]})}function T({className:a,isSticky:t,...o}){return e("th",{"data-slot":"table-head",className:n("text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0",t&&"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border",a),...o})}function p({className:a,isSticky:t,...o}){return e("td",{"data-slot":"table-cell",className:n("p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",t&&"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border",a),...o})}function P({className:a,onClick:t,children:o,asChild:c=!1,...i}){let s=l=>{l.stopPropagation(),t?.(l)};return c&&r.isValidElement(o)?r.cloneElement(o,{onClick:l=>{l.stopPropagation();let d=o.props.onClick;d?.(l)},className:n("inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent",o.props.className,a)}):e("button",{type:"button","data-slot":"table-cell-action",className:n("inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent",a),onClick:s,...i,children:o})}function w({className:a,...t}){return e("caption",{"data-slot":"table-caption",className:n("text-muted-foreground mt-4 text-sm",a),...t})}export{C as a,y as b,k as c,v as d,R as e,T as f,p as g,P as h,w as i};
|
|
3
|
+
//# sourceMappingURL=chunk-A7NIT2PJ.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/table.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport { Eye, MoreVertical } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ninterface TableContextValue {\n stickyFirstColumn?: boolean\n}\n\nconst TableContext = React.createContext<TableContextValue>({})\n\nexport interface TableProps extends React.ComponentProps<\"table\"> {\n stickyFirstColumn?: boolean\n}\n\n// Sticky first column (rows without action icon)\nconst stickyFirstColumnStyles =\n \"[&_tr:not([data-has-action-column])>th:first-child]:sticky [&_tr:not([data-has-action-column])>th:first-child]:left-0 [&_tr:not([data-has-action-column])>th:first-child]:z-10 [&_tr:not([data-has-action-column])>th:first-child]:bg-background [&_tr:not([data-has-action-column])>th:first-child]:after:absolute [&_tr:not([data-has-action-column])>th:first-child]:after:right-0 [&_tr:not([data-has-action-column])>th:first-child]:after:top-0 [&_tr:not([data-has-action-column])>th:first-child]:after:h-full [&_tr:not([data-has-action-column])>th:first-child]:after:w-px [&_tr:not([data-has-action-column])>th:first-child]:after:bg-border [&_tr:not([data-has-action-column])>td:first-child]:sticky [&_tr:not([data-has-action-column])>td:first-child]:left-0 [&_tr:not([data-has-action-column])>td:first-child]:z-10 [&_tr:not([data-has-action-column])>td:first-child]:bg-background [&_tr:not([data-has-action-column])>td:first-child]:after:absolute [&_tr:not([data-has-action-column])>td:first-child]:after:right-0 [&_tr:not([data-has-action-column])>td:first-child]:after:top-0 [&_tr:not([data-has-action-column])>td:first-child]:after:h-full [&_tr:not([data-has-action-column])>td:first-child]:after:w-px [&_tr:not([data-has-action-column])>td:first-child]:after:bg-border [&_tbody_tr:not([data-has-action-column]):hover>td:first-child]:bg-muted\"\n\n// Sticky first two columns (rows with action icon): icon at left-0, data column at left-12\nconst stickyActionColumnStyles =\n \"[&_tr[data-has-action-column]>*:first-child]:sticky [&_tr[data-has-action-column]>*:first-child]:left-0 [&_tr[data-has-action-column]>*:first-child]:z-10 [&_tr[data-has-action-column]>*:first-child]:bg-background [&_tr[data-has-action-column]>*:first-child]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:sticky [&_tr[data-has-action-column]>*:nth-child(2)]:left-12 [&_tr[data-has-action-column]>*:nth-child(2)]:z-10 [&_tr[data-has-action-column]>*:nth-child(2)]:bg-background [&_tr[data-has-action-column]>*:nth-child(2)]:transition-colors [&_tr[data-has-action-column]>*:nth-child(2)]:after:absolute [&_tr[data-has-action-column]>*:nth-child(2)]:after:right-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:top-0 [&_tr[data-has-action-column]>*:nth-child(2)]:after:h-full [&_tr[data-has-action-column]>*:nth-child(2)]:after:w-px [&_tr[data-has-action-column]>*:nth-child(2)]:after:bg-border [&_tbody_tr[data-has-action-column]:hover>td:first-child]:bg-muted [&_tbody_tr[data-has-action-column]:hover>td:nth-child(2)]:bg-muted\"\n\nfunction Table({ className, stickyFirstColumn, ...props }: TableProps) {\n return (\n <TableContext.Provider value={{ stickyFirstColumn }}>\n <div\n data-slot=\"table-container\"\n className={cn(\n \"relative bg-background w-full overflow-x-auto border border-border rounded-3xl\",\n stickyFirstColumn && stickyFirstColumnStyles,\n stickyFirstColumn && stickyActionColumnStyles\n )}\n >\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n </div>\n </TableContext.Provider>\n )\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b text-secondary-text\", className)}\n {...props}\n />\n )\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody\n data-slot=\"table-body\"\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n )\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\n \"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableRowProps extends React.ComponentProps<\"tr\"> {\n isClickable?: boolean\n actionIcon?: \"eye\" | \"more\" | null\n}\n\nfunction TableRow({\n className,\n isClickable,\n actionIcon,\n children,\n ...props\n}: TableRowProps) {\n const iconComponent =\n actionIcon === \"eye\" ? (\n <Eye className=\"h-4 w-4\" />\n ) : actionIcon === \"more\" ? (\n <MoreVertical className=\"h-4 w-4\" />\n ) : null\n\n return (\n <tr\n data-slot=\"table-row\"\n data-has-action-column={actionIcon !== undefined ? \"\" : undefined}\n className={cn(\n \"border-b border-border/50 transition-colors\",\n isClickable && \"cursor-pointer hover:bg-muted/50\",\n className\n )}\n {...props}\n >\n {actionIcon !== undefined && (\n <TableCell className=\"w-12\">{iconComponent}</TableCell>\n )}\n {children}\n </tr>\n )\n}\n\nexport interface TableHeadProps extends React.ComponentProps<\"th\"> {\n isSticky?: boolean\n}\n\nfunction TableHead({ className, isSticky, ...props }: TableHeadProps) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-secondary-text h-10 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellProps extends React.ComponentProps<\"td\"> {\n isSticky?: boolean\n}\n\nfunction TableCell({ className, isSticky, ...props }: TableCellProps) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-4 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0\",\n isSticky &&\n \"sticky left-0 z-10 bg-background after:absolute after:right-0 after:top-0 after:h-full after:w-px after:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport interface TableCellActionProps extends React.ComponentProps<\"button\"> {\n asChild?: boolean\n}\n\nfunction TableCellAction({\n className,\n onClick,\n children,\n asChild = false,\n ...props\n}: TableCellActionProps) {\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n onClick?.(e)\n }\n\n if (asChild && React.isValidElement(children)) {\n return React.cloneElement(\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n className?: string\n }>,\n {\n onClick: (e: React.MouseEvent) => {\n e.stopPropagation()\n const childOnClick = (\n children as React.ReactElement<{\n onClick?: (e: React.MouseEvent) => void\n }>\n ).props.onClick\n childOnClick?.(e)\n },\n className: cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:bg-muted/50 hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n (children as React.ReactElement<{ className?: string }>).props\n .className,\n className\n ),\n }\n )\n }\n\n return (\n <button\n type=\"button\"\n data-slot=\"table-cell-action\"\n className={cn(\n \"inline-flex items-center justify-center rounded-full p-1 text-secondary-text transition-colors hover:text-primary-accent focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-primary-accent\",\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n )\n}\n\nfunction TableCaption({\n className,\n ...props\n}: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n )\n}\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCellAction,\n TableCaption,\n}\n"],"mappings":"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","names":["React","Eye","MoreVertical","jsx","jsxs","TableContext","stickyFirstColumnStyles","stickyActionColumnStyles","Table","className","stickyFirstColumn","props","cn","TableHeader","TableBody","TableFooter","TableRow","isClickable","actionIcon","children","iconComponent","Eye","MoreVertical","TableCell","TableHead","isSticky","TableCellAction","onClick","asChild","handleClick","e","childOnClick","TableCaption"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
|
|
2
|
-
var _chunkRRAIGAHUjs = require('./chunk-RRAIGAHU.js');var _chunk7SOZ6MOVjs = require('./chunk-7SOZ6MOV.js');var _chunk752ERCMUjs = require('./chunk-752ERCMU.js');var _chunk5L5DM2X5js = require('./chunk-5L5DM2X5.js');var _chunkK4GMCVHOjs = require('./chunk-K4GMCVHO.js');var _chunk7T4BNCXLjs = require('./chunk-7T4BNCXL.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var e = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var le="sidebar_state",ce=3600*24*7,pe="16.75rem",Z="23rem",ue="calc(3rem + 0.75rem)",be="b",ee=e.createContext(null);function T(){let a=e.useContext(ee);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var fe=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:r,className:i,style:s,children:c,...g},u)=>{let[h,l]=e.useState(!1),[p,f]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=_nullishCoalesce(t, () => (P)),R=e.useCallback(d=>{let b=typeof d=="function"?d(S):d;r?r(b):x(b),document.cookie=`${le}=${b}; path=/; max-age=${ce}`},[r,S]),v=e.useCallback(()=>{R(d=>!d)},[R]),D=e.useCallback(()=>{l(d=>!d)},[l]);e.useEffect(()=>{let d=b=>{b.key===be&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),v())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[v]);let _=S?"expanded":"collapsed",[B,k]=e.useState(0),A=e.useRef(null),L=e.useRef([]),O=e.Children.toArray(c),C=O.filter(d=>e.isValidElement(d)&&_optionalChain([d, 'access', _2 => _2.type, 'optionalAccess', _3 => _3.displayName])==="SidebarBanner"),re=O.filter(d=>!e.isValidElement(d)||_optionalChain([d, 'access', _4 => _4.type, 'optionalAccess', _5 => _5.displayName])!=="SidebarBanner");C.length>0&&(L.current=C);let N=C.length>0,M=!N&&L.current.length>0,F=N||M,ne=e.useMemo(()=>({state:_,isOpen:p,setOpen:R,openMobile:h,setOpenMobile:l,toggleSidebar:v,toggleMobileSidebar:D,setIsFullyOpen:f,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,p,R,h,l,v,D,f,w,y,M]);return e.useEffect(()=>{let d=A.current;if(!d){k(0);return}let b=()=>{k(d.offsetHeight)};b();let G=new ResizeObserver(b);return G.observe(d),()=>G.disconnect()},[C.length]),_jsxruntime.jsx.call(void 0, ee.Provider,{value:ne,children:_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{style:{"--sidebar-width":pe,"--sidebar-width-icon":ue,"--sidebar-top":N?`${B}px`:"0px",...s},className:_chunkFUYXCJOQjs.a.call(void 0, "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:u,...g,children:F?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":B>0?`${B}px`:"auto"},children:_jsxruntime.jsx.call(void 0, "div",{ref:A,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(L.current=[])},children:N?C:L.current})}),_jsxruntime.jsx.call(void 0, "div",{className:"flex flex-1",children:re})]}):c})})})});fe.displayName="SidebarProvider";var me=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"banner",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full",a),...t}));me.displayName="SidebarBanner";var ge=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:r="offcanvas",className:i,children:s,...c},g)=>{let{state:u,openMobile:h,setOpenMobile:l,setIsFullyOpen:p,setIsAnimating:f,isBannerClosing:w}=T(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,p(u==="expanded"),f(!1);return}f(!0);let S=setTimeout(()=>{p(u==="expanded"),f(!1)},300),R=v=>{v.target===x&&(v.propertyName==="left"||v.propertyName==="right"||v.propertyName==="width")&&(clearTimeout(S),p(u==="expanded"),f(!1))};return x.addEventListener("transitionend",R),()=>{x.removeEventListener("transitionend",R),clearTimeout(S)}},[u,p,f]),r==="none"?_jsxruntime.jsx.call(void 0, "aside",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:g,...c,children:s}):_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.a,{open:h,onOpenChange:l,children:_jsxruntime.jsxs.call(void 0, _chunk752ERCMUjs.f,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:Z,maxWidth:Z},side:a,children:[_jsxruntime.jsxs.call(void 0, _chunk752ERCMUjs.g,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.i,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.j,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:s})]})}),_jsxruntime.jsxs.call(void 0, "aside",{ref:g,className:"group peer hidden text-sidebar-foreground md:block","data-state":u,"data-collapsible":u==="collapsed"?r:"","data-variant":t,"data-side":a,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),_jsxruntime.jsx.call(void 0, "div",{ref:y,"data-banner-closing":w,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:_jsxruntime.jsx.call(void 0, "div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:_jsxruntime.jsx.call(void 0, "div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ge.displayName="Sidebar";var ae=e.forwardRef(({className:a,onClick:t,...r},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:g}=T(),[u,h]=e.useState(!1);return e.useEffect(()=>{let l=window.matchMedia("(max-width: 767px)"),p=f=>{h(f.matches)};return p(l),l.addEventListener("change",p),()=>l.removeEventListener("change",p)},[]),u?_jsxruntime.jsxs.call(void 0, _chunk7T4BNCXLjs.b,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:_chunkFUYXCJOQjs.a.call(void 0, "bg-transparent hover:bg-transparent",a),onClick:l=>{_optionalChain([t, 'optionalCall', _6 => _6(l)]),c()},...r,children:[g?_jsxruntime.jsx.call(void 0, "span",{className:_chunkFUYXCJOQjs.a.call(void 0, _chunk7T4BNCXLjs.a.call(void 0, {variant:"secondary",size:"icon"})),children:_jsxruntime.jsx.call(void 0, _lucidereact.X,{size:16})}):_jsxruntime.jsx.call(void 0, "span",{className:_chunkFUYXCJOQjs.a.call(void 0, _chunk7T4BNCXLjs.a.call(void 0, {variant:"outline",size:"icon"})),children:_jsxruntime.jsx.call(void 0, _lucidereact.Menu,{size:16})}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]}):_jsxruntime.jsxs.call(void 0, _chunk7T4BNCXLjs.b,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:_chunkFUYXCJOQjs.a.call(void 0, "h-7 w-7",a),onClick:l=>{_optionalChain([t, 'optionalCall', _7 => _7(l)]),s()},...r,children:[_jsxruntime.jsx.call(void 0, "span",{className:"rounded-full p-2",children:_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeft,{size:16})}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})});ae.displayName="SidebarTrigger";var ve=e.forwardRef(({className:a,...t},r)=>{let{toggleSidebar:i}=T();return _jsxruntime.jsx.call(void 0, "button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});ve.displayName="SidebarRail";var he=e.memo(e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "main",{ref:r,className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));he.displayName="SidebarInset";var Re=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, _chunkK4GMCVHOjs.a,{ref:r,"data-sidebar":"input",className:_chunkFUYXCJOQjs.a.call(void 0, "h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));Re.displayName="SidebarInput";var xe=e.forwardRef(({className:a,showTrigger:t=!1,children:r,...i},s)=>{let{state:c}=T();return _jsxruntime.jsxs.call(void 0, "div",{ref:s,"data-sidebar":"header",className:_chunkFUYXCJOQjs.a.call(void 0, "flex w-full gap-2 p-2 items-center",c==="collapsed"?"justify-center items-center":"justify-between items-start",a),...i,children:[c!=="collapsed"&&_jsxruntime.jsx.call(void 0, "div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:_jsxruntime.jsx.call(void 0, "div",{className:"whitespace-nowrap",children:r})}),t&&_jsxruntime.jsx.call(void 0, ae,{})]})});xe.displayName="SidebarHeader";var Se=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"footer",className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col gap-2 p-2",a),...t}));Se.displayName="SidebarFooter";var we=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, _chunk7SOZ6MOVjs.a,{ref:r,"data-sidebar":"separator",className:_chunkFUYXCJOQjs.a.call(void 0, "mx-2 w-auto bg-border",a),...t}));we.displayName="SidebarSeparator";var ye=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"content",className:_chunkFUYXCJOQjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));ye.displayName="SidebarContent";var Ce=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"group",className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ce.displayName="SidebarGroup";var Ne=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"div",{ref:i,"data-sidebar":"group-label",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...r}));Ne.displayName="SidebarGroupLabel";var Me=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"button",{ref:i,"data-sidebar":"group-action",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...r}));Me.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"group-content",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Te=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "ul",{ref:r,"data-sidebar":"menu",className:_chunkFUYXCJOQjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",a),...t}));Te.displayName="SidebarMenu";var Pe=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "li",{ref:r,"data-sidebar":"menu-item",className:_chunkFUYXCJOQjs.a.call(void 0, "group/menu-item relative",a),...t}));Pe.displayName="SidebarMenuItem";var Le=_classvarianceauthority.cva.call(void 0, "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground",outline:"bg-sidebar shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Be= exports.s =e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:r="default",size:i="default",tooltip:s,className:c,...g},u)=>{let h=a?_reactslot.Slot:"button",{state:l}=T(),p=_jsxruntime.jsx.call(void 0, h,{ref:u,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:_chunkFUYXCJOQjs.a.call(void 0, Le({variant:r,size:i}),c),...g});return s?(typeof s=="string"&&(s={children:s}),_jsxruntime.jsxs.call(void 0, _chunkRRAIGAHUjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.c,{asChild:!0,children:p}),_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.d,{side:"right",align:"center",hidden:l!=="collapsed",...s})]})):p});Be.displayName="SidebarMenuButton";var He=e.forwardRef(({className:a,asChild:t=!1,showOnHover:r=!1,...i},s)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"button",{ref:s,"data-sidebar":"menu-action",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));He.displayName="SidebarMenuAction";var Ie=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"menu-badge",className:_chunkFUYXCJOQjs.a.call(void 0, "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));Ie.displayName="SidebarMenuBadge";var ze=e.forwardRef(({className:a,showIcon:t=!1,...r},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{ref:i,"data-sidebar":"menu-skeleton",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",a),...r,children:[t&&_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ze.displayName="SidebarMenuSkeleton";var De=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "ul",{ref:r,"data-sidebar":"menu-sub",className:_chunkFUYXCJOQjs.a.call(void 0, "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));De.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>_jsxruntime.jsx.call(void 0, "li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var ke=e.forwardRef(({asChild:a=!1,size:t="md",isActive:r,className:i,...s},c)=>_jsxruntime.jsx.call(void 0, a?_reactslot.Slot:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":r,className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));ke.displayName="SidebarMenuSubButton";exports.a = T; exports.b = fe; exports.c = me; exports.d = ge; exports.e = ae; exports.f = ve; exports.g = he; exports.h = Re; exports.i = xe; exports.j = Se; exports.k = we; exports.l = ye; exports.m = Ce; exports.n = Ne; exports.o = Me; exports.p = Ee; exports.q = Te; exports.r = Pe; exports.s = Be; exports.t = He; exports.u = Ie; exports.v = ze; exports.w = De; exports.x = _e; exports.y = ke;
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
var _chunkRRAIGAHUjs = require('./chunk-RRAIGAHU.js');var _chunk7SOZ6MOVjs = require('./chunk-7SOZ6MOV.js');var _chunk752ERCMUjs = require('./chunk-752ERCMU.js');var _chunk5L5DM2X5js = require('./chunk-5L5DM2X5.js');var _chunkK4GMCVHOjs = require('./chunk-K4GMCVHO.js');var _chunk7T4BNCXLjs = require('./chunk-7T4BNCXL.js');var _chunkFUYXCJOQjs = require('./chunk-FUYXCJOQ.js');var _react = require('react'); var e = _interopRequireWildcard(_react);var _reactslot = require('@radix-ui/react-slot');var _classvarianceauthority = require('class-variance-authority');var _lucidereact = require('lucide-react');var _jsxruntime = require('react/jsx-runtime');var le="sidebar_state",ce=3600*24*7,pe="16.75rem",Z="23rem",ue="calc(3rem + 0.75rem)",be="b",ee=e.createContext(null);function T(){let a=e.useContext(ee);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var fe=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:r,className:i,style:s,children:c,...g},u)=>{let[h,l]=e.useState(!1),[p,f]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=_nullishCoalesce(t, () => (P)),R=e.useCallback(d=>{let b=typeof d=="function"?d(S):d;r?r(b):x(b),document.cookie=`${le}=${b}; path=/; max-age=${ce}`},[r,S]),v=e.useCallback(()=>{R(d=>!d)},[R]),D=e.useCallback(()=>{l(d=>!d)},[l]);e.useEffect(()=>{let d=b=>{b.key===be&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),v())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[v]);let _=S?"expanded":"collapsed",[B,k]=e.useState(0),A=e.useRef(null),L=e.useRef([]),O=e.Children.toArray(c),C=O.filter(d=>e.isValidElement(d)&&_optionalChain([d, 'access', _2 => _2.type, 'optionalAccess', _3 => _3.displayName])==="SidebarBanner"),re=O.filter(d=>!e.isValidElement(d)||_optionalChain([d, 'access', _4 => _4.type, 'optionalAccess', _5 => _5.displayName])!=="SidebarBanner");C.length>0&&(L.current=C);let N=C.length>0,M=!N&&L.current.length>0,F=N||M,ne=e.useMemo(()=>({state:_,isOpen:p,setOpen:R,openMobile:h,setOpenMobile:l,toggleSidebar:v,toggleMobileSidebar:D,setIsFullyOpen:f,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,p,R,h,l,v,D,f,w,y,M]);return e.useEffect(()=>{let d=A.current;if(!d){k(0);return}let b=()=>{k(d.offsetHeight)};b();let G=new ResizeObserver(b);return G.observe(d),()=>G.disconnect()},[C.length]),_jsxruntime.jsx.call(void 0, ee.Provider,{value:ne,children:_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.a,{delayDuration:0,children:_jsxruntime.jsx.call(void 0, "div",{style:{"--sidebar-width":pe,"--sidebar-width-icon":ue,"--sidebar-top":N?`${B}px`:"0px",...s},className:_chunkFUYXCJOQjs.a.call(void 0, "group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:u,...g,children:F?_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, "div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":B>0?`${B}px`:"auto"},children:_jsxruntime.jsx.call(void 0, "div",{ref:A,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(L.current=[])},children:N?C:L.current})}),_jsxruntime.jsx.call(void 0, "div",{className:"flex flex-1",children:re})]}):c})})})});fe.displayName="SidebarProvider";var me=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"banner",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full",a),...t}));me.displayName="SidebarBanner";var ge=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:r="offcanvas",className:i,children:s,...c},g)=>{let{state:u,openMobile:h,setOpenMobile:l,setIsFullyOpen:p,setIsAnimating:f,isBannerClosing:w}=T(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,p(u==="expanded"),f(!1);return}f(!0);let S=setTimeout(()=>{p(u==="expanded"),f(!1)},300),R=v=>{v.target===x&&(v.propertyName==="left"||v.propertyName==="right"||v.propertyName==="width")&&(clearTimeout(S),p(u==="expanded"),f(!1))};return x.addEventListener("transitionend",R),()=>{x.removeEventListener("transitionend",R),clearTimeout(S)}},[u,p,f]),r==="none"?_jsxruntime.jsx.call(void 0, "aside",{className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:g,...c,children:s}):_jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment,{children:[_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.a,{open:h,onOpenChange:l,children:_jsxruntime.jsxs.call(void 0, _chunk752ERCMUjs.f,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:Z,maxWidth:Z},side:a,children:[_jsxruntime.jsxs.call(void 0, _chunk752ERCMUjs.g,{className:"sr-only",children:[_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.i,{children:"Sidebar"}),_jsxruntime.jsx.call(void 0, _chunk752ERCMUjs.j,{children:"Displays the mobile sidebar."})]}),_jsxruntime.jsx.call(void 0, "div",{className:"flex h-full w-full flex-col",children:s})]})}),_jsxruntime.jsxs.call(void 0, "aside",{ref:g,className:"group peer hidden text-sidebar-foreground md:block","data-state":u,"data-collapsible":u==="collapsed"?r:"","data-variant":t,"data-side":a,children:[_jsxruntime.jsx.call(void 0, "div",{className:_chunkFUYXCJOQjs.a.call(void 0, "w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),_jsxruntime.jsx.call(void 0, "div",{ref:y,"data-banner-closing":w,className:_chunkFUYXCJOQjs.a.call(void 0, "fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:_jsxruntime.jsx.call(void 0, "div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:_jsxruntime.jsx.call(void 0, "div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ge.displayName="Sidebar";var ae=e.forwardRef(({className:a,onClick:t,...r},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:g}=T(),[u,h]=e.useState(!1);return e.useEffect(()=>{let l=window.matchMedia("(max-width: 767px)"),p=f=>{h(f.matches)};return p(l),l.addEventListener("change",p),()=>l.removeEventListener("change",p)},[]),u?_jsxruntime.jsxs.call(void 0, _chunk7T4BNCXLjs.b,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:_chunkFUYXCJOQjs.a.call(void 0, "bg-transparent hover:bg-transparent",a),onClick:l=>{_optionalChain([t, 'optionalCall', _6 => _6(l)]),c()},...r,children:[g?_jsxruntime.jsx.call(void 0, "span",{className:_chunkFUYXCJOQjs.a.call(void 0, _chunk7T4BNCXLjs.a.call(void 0, {variant:"secondary",size:"icon"})),children:_jsxruntime.jsx.call(void 0, _lucidereact.X,{size:16})}):_jsxruntime.jsx.call(void 0, "span",{className:_chunkFUYXCJOQjs.a.call(void 0, _chunk7T4BNCXLjs.a.call(void 0, {variant:"outline",size:"icon"})),children:_jsxruntime.jsx.call(void 0, _lucidereact.Menu,{size:16})}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]}):_jsxruntime.jsxs.call(void 0, _chunk7T4BNCXLjs.b,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:_chunkFUYXCJOQjs.a.call(void 0, "h-7 w-7",a),onClick:l=>{_optionalChain([t, 'optionalCall', _7 => _7(l)]),s()},...r,children:[_jsxruntime.jsx.call(void 0, "span",{className:"rounded-full p-2",children:_jsxruntime.jsx.call(void 0, _lucidereact.PanelLeft,{size:16})}),_jsxruntime.jsx.call(void 0, "span",{className:"sr-only",children:"Toggle Sidebar"})]})});ae.displayName="SidebarTrigger";var ve=e.forwardRef(({className:a,...t},r)=>{let{toggleSidebar:i}=T();return _jsxruntime.jsx.call(void 0, "button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});ve.displayName="SidebarRail";var he=e.memo(e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "main",{ref:r,className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));he.displayName="SidebarInset";var Re=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, _chunkK4GMCVHOjs.a,{ref:r,"data-sidebar":"input",className:_chunkFUYXCJOQjs.a.call(void 0, "h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));Re.displayName="SidebarInput";var xe=e.forwardRef(({className:a,showTrigger:t=!1,children:r,...i},s)=>{let{state:c}=T();return _jsxruntime.jsxs.call(void 0, "div",{ref:s,"data-sidebar":"header",className:_chunkFUYXCJOQjs.a.call(void 0, "flex w-full gap-2 p-2 items-center",c==="collapsed"?"justify-center items-center":"justify-between items-start",a),...i,children:[c!=="collapsed"&&_jsxruntime.jsx.call(void 0, "div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:_jsxruntime.jsx.call(void 0, "div",{className:"whitespace-nowrap",children:r})}),t&&_jsxruntime.jsx.call(void 0, ae,{})]})});xe.displayName="SidebarHeader";var Se=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"footer",className:_chunkFUYXCJOQjs.a.call(void 0, "flex flex-col gap-2 p-2",a),...t}));Se.displayName="SidebarFooter";var we=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, _chunk7SOZ6MOVjs.a,{ref:r,"data-sidebar":"separator",className:_chunkFUYXCJOQjs.a.call(void 0, "mx-2 w-auto bg-border",a),...t}));we.displayName="SidebarSeparator";var ye=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"content",className:_chunkFUYXCJOQjs.a.call(void 0, "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));ye.displayName="SidebarContent";var Ce=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"group",className:_chunkFUYXCJOQjs.a.call(void 0, "relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ce.displayName="SidebarGroup";var Ne=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"div",{ref:i,"data-sidebar":"group-label",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...r}));Ne.displayName="SidebarGroupLabel";var Me=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"button",{ref:i,"data-sidebar":"group-action",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...r}));Me.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"group-content",className:_chunkFUYXCJOQjs.a.call(void 0, "w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Te=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "ul",{ref:r,"data-sidebar":"menu",className:_chunkFUYXCJOQjs.a.call(void 0, "flex w-full min-w-0 flex-col gap-1",a),...t}));Te.displayName="SidebarMenu";var Pe=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "li",{ref:r,"data-sidebar":"menu-item",className:_chunkFUYXCJOQjs.a.call(void 0, "group/menu-item relative",a),...t}));Pe.displayName="SidebarMenuItem";var Le=_classvarianceauthority.cva.call(void 0, "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground",outline:"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Be= exports.s =e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:r="default",size:i="default",tooltip:s,className:c,...g},u)=>{let h=a?_reactslot.Slot:"button",{state:l}=T(),p=_jsxruntime.jsx.call(void 0, h,{ref:u,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:_chunkFUYXCJOQjs.a.call(void 0, Le({variant:r,size:i}),c),...g});return s?(typeof s=="string"&&(s={children:s}),_jsxruntime.jsxs.call(void 0, _chunkRRAIGAHUjs.b,{children:[_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.c,{asChild:!0,children:p}),_jsxruntime.jsx.call(void 0, _chunkRRAIGAHUjs.d,{side:"right",align:"center",hidden:l!=="collapsed",...s})]})):p});Be.displayName="SidebarMenuButton";var He=e.forwardRef(({className:a,asChild:t=!1,showOnHover:r=!1,...i},s)=>_jsxruntime.jsx.call(void 0, t?_reactslot.Slot:"button",{ref:s,"data-sidebar":"menu-action",className:_chunkFUYXCJOQjs.a.call(void 0, "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));He.displayName="SidebarMenuAction";var Ie=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "div",{ref:r,"data-sidebar":"menu-badge",className:_chunkFUYXCJOQjs.a.call(void 0, "pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));Ie.displayName="SidebarMenuBadge";var ze=e.forwardRef(({className:a,showIcon:t=!1,...r},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return _jsxruntime.jsxs.call(void 0, "div",{ref:i,"data-sidebar":"menu-skeleton",className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-8 items-center gap-2 rounded-md px-2",a),...r,children:[t&&_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),_jsxruntime.jsx.call(void 0, _chunk5L5DM2X5js.a,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ze.displayName="SidebarMenuSkeleton";var De=e.forwardRef(({className:a,...t},r)=>_jsxruntime.jsx.call(void 0, "ul",{ref:r,"data-sidebar":"menu-sub",className:_chunkFUYXCJOQjs.a.call(void 0, "mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));De.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>_jsxruntime.jsx.call(void 0, "li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var ke=e.forwardRef(({asChild:a=!1,size:t="md",isActive:r,className:i,...s},c)=>_jsxruntime.jsx.call(void 0, a?_reactslot.Slot:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":r,className:_chunkFUYXCJOQjs.a.call(void 0, "flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));ke.displayName="SidebarMenuSubButton";exports.a = T; exports.b = fe; exports.c = me; exports.d = ge; exports.e = ae; exports.f = ve; exports.g = he; exports.h = Re; exports.i = xe; exports.j = Se; exports.k = we; exports.l = ye; exports.m = Ce; exports.n = Ne; exports.o = Me; exports.p = Ee; exports.q = Te; exports.r = Pe; exports.s = Be; exports.t = He; exports.u = Ie; exports.v = ze; exports.w = De; exports.x = _e; exports.y = ke;
|
|
3
|
+
//# sourceMappingURL=chunk-FFX2EHXT.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-LIQU27WD.js","../src/components/sidebar.tsx"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","openMobile","setOpenMobile","isFullyOpen","setIsFullyOpen","isAnimating","setIsAnimating","_open","_setOpen","open","setOpen","value","openState"],"mappings":"AAAA,+8BAAY;AACZ,sDAA4D,sDAAwC,sDAAoE,sDAAwC,sDAAwC,sDAA+C,sDAAwC,uECCxT,iDACF,kEACkB,2CACJ,+CAuNrB,IAlMRA,EAAAA,CAAsB,eAAA,CACtBC,EAAAA,CAAyB,IAAA,CAAU,EAAA,CAAK,CAAA,CACxCC,EAAAA,CAAgB,UAAA,CAChBC,CAAAA,CAAuB,OAAA,CACvBC,EAAAA,CAAqB,sBAAA,CACrBC,EAAAA,CAA4B,GAAA,CAgB5BC,EAAAA,CAAuB,CAAA,CAAA,aAAA,CAA0C,IAAI,CAAA,CAE3E,SAASC,CAAAA,CAAAA,CAAa,CACpB,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAWF,EAAc,CAAA,CAC/C,EAAA,CAAI,CAACE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,CAEA,IAAMC,EAAAA,CAAwB,CAAA,CAAA,UAAA,CAQ5B,CACE,CACE,WAAA,CAAAC,CAAAA,CAAc,CAAA,CAAA,CACd,IAAA,CAAMC,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EACG,CACH,GAAM,CAACC,CAAAA,CAAYC,CAAa,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAClD,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAASX,CAAW,CAAA,CAC1D,CAACY,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAEpD,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAASf,CAAW,CAAA,CAC9CgB,CAAAA,kBAAOf,CAAAA,SAAYa,GAAAA,CACnBG,CAAAA,CAAgB,CAAA,CAAA,WAAA,CACnBC,CAAAA,EAAmD,CAClD,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMF,CAAI,CAAA,CAAIE,CAAAA,CAC1DhB,CAAAA,CACFA,CAAAA,CAAYiB,CAAS,CAAA,CAErBJ,CAAAA,CAASI,CAAS,CAAA,CAGpB,QAAA,CAAS,MAAA,CAAS,CAAA,EAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-LIQU27WD.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16.75rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"calc(3rem + 0.75rem)\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n isOpen: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n toggleSidebar: () => void\n toggleMobileSidebar: () => void\n setIsFullyOpen: (open: boolean) => void\n isAnimating: boolean\n setIsAnimating: (animating: boolean) => void\n isBannerClosing: boolean\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const [openMobile, setOpenMobile] = React.useState(false)\n const [isFullyOpen, setIsFullyOpen] = React.useState(defaultOpen)\n const [isAnimating, setIsAnimating] = React.useState(false)\n\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n setOpen((open) => !open)\n }, [setOpen])\n\n const toggleMobileSidebar = React.useCallback(() => {\n setOpenMobile((open) => !open)\n }, [setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const [bannerHeight, setBannerHeight] = React.useState(0)\n const bannerRef = React.useRef<HTMLDivElement>(null)\n const previousBannerChildrenRef = React.useRef<React.ReactNode[]>([])\n\n // Separate banner children (SidebarBanner) from layout children (Sidebar, SidebarInset)\n const childArray = React.Children.toArray(children)\n const bannerChildren = childArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.FC & { displayName?: string })?.displayName ===\n \"SidebarBanner\"\n )\n const layoutChildren = childArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.FC & { displayName?: string })?.displayName !==\n \"SidebarBanner\"\n )\n\n // Store previous banner children for closing animation\n if (bannerChildren.length > 0) {\n previousBannerChildrenRef.current = bannerChildren\n }\n\n const hasBanner = bannerChildren.length > 0\n const isClosing = !hasBanner && previousBannerChildrenRef.current.length > 0\n const displayBanner = hasBanner || isClosing\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n isOpen: isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isBannerClosing: isClosing,\n }),\n [\n state,\n isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isClosing,\n ]\n )\n\n // Measure banner height\n React.useEffect(() => {\n const banner = bannerRef.current\n if (!banner) {\n setBannerHeight(0)\n return\n }\n\n const updateHeight = () => {\n setBannerHeight(banner.offsetHeight)\n }\n\n updateHeight()\n const resizeObserver = new ResizeObserver(updateHeight)\n resizeObserver.observe(banner)\n\n return () => resizeObserver.disconnect()\n }, [bannerChildren.length])\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n \"--sidebar-top\": hasBanner ? `${bannerHeight}px` : \"0px\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n displayBanner && \"flex-col\",\n className\n )}\n ref={ref}\n {...props}\n >\n {displayBanner ? (\n <>\n <div\n className=\"relative overflow-hidden transition-[height] duration-200 ease-linear\"\n style={\n {\n height: isClosing\n ? \"0px\"\n : bannerHeight > 0\n ? `${bannerHeight}px`\n : \"auto\",\n } as React.CSSProperties\n }\n >\n <div\n ref={bannerRef}\n className=\"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full\"\n data-state={hasBanner ? \"open\" : \"closed\"}\n onTransitionEnd={() => {\n if (isClosing) {\n previousBannerChildrenRef.current = []\n }\n }}\n >\n {hasBanner\n ? bannerChildren\n : previousBannerChildrenRef.current}\n </div>\n </div>\n <div className=\"flex flex-1\">{layoutChildren}</div>\n </>\n ) : (\n children\n )}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst SidebarBanner = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"banner\"\n className={cn(\"w-full\", className)}\n {...props}\n />\n )\n})\nSidebarBanner.displayName = \"SidebarBanner\"\n\nconst Sidebar = React.forwardRef<\n HTMLElement,\n React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const {\n state,\n openMobile,\n setOpenMobile,\n setIsFullyOpen,\n setIsAnimating,\n isBannerClosing,\n } = useSidebar()\n const sidebarRef = React.useRef<HTMLDivElement>(null)\n const isFirstRenderRef = React.useRef(true)\n\n // Track when the sidebar animation completes\n React.useEffect(() => {\n const sidebar = sidebarRef.current\n if (!sidebar) return\n\n // On first render, set isFullyOpen immediately without waiting for animation\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n return\n }\n\n // Mark as animating when state changes\n setIsAnimating(true)\n\n // Fallback timeout in case transitionend doesn't fire\n const fallbackTimeout = setTimeout(() => {\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }, 300) // Slightly longer than the 200ms transition duration\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n // Only respond to transitions on the sidebar itself, not children\n if (event.target !== sidebar) return\n\n // Check if we're transitioning width, left, or right properties\n if (\n event.propertyName === \"left\" ||\n event.propertyName === \"right\" ||\n event.propertyName === \"width\"\n ) {\n clearTimeout(fallbackTimeout)\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }\n }\n\n sidebar.addEventListener(\"transitionend\", handleTransitionEnd)\n return () => {\n sidebar.removeEventListener(\"transitionend\", handleTransitionEnd)\n clearTimeout(fallbackTimeout)\n }\n }, [state, setIsFullyOpen, setIsAnimating])\n\n if (collapsible === \"none\") {\n return (\n <aside\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </aside>\n )\n }\n\n return (\n <>\n {/* Mobile Sheet - visible only on mobile (< md) */}\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n {/* Desktop Sidebar - visible only on desktop (md+) */}\n <aside\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* Spacer to reserve horizontal space */}\n <div\n className={cn(\n \"w-(--sidebar-width) transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n {/* Fixed sidebar */}\n <div\n ref={sidebarRef}\n data-banner-closing={isBannerClosing}\n className={cn(\n \"fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n isBannerClosing && \"transition-[left,right,width,top,height]\",\n \"top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0\">\n {children}\n </div>\n </div>\n </div>\n </aside>\n </>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, toggleMobileSidebar, openMobile } = useSidebar()\n const [isMobile, setIsMobile] = React.useState(false)\n\n React.useEffect(() => {\n const mql = window.matchMedia(\"(max-width: 767px)\")\n const onChange = (e: MediaQueryListEvent | MediaQueryList) => {\n setIsMobile(e.matches)\n }\n onChange(mql)\n mql.addEventListener(\"change\", onChange)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n if (isMobile) {\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"bg-transparent hover:bg-transparent\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleMobileSidebar()\n }}\n {...props}\n >\n {openMobile ? (\n <span\n className={cn(\n buttonVariants({ variant: \"secondary\", size: \"icon\" })\n )}\n >\n <X size={16} />\n </span>\n ) : (\n <span\n className={cn(buttonVariants({ variant: \"outline\", size: \"icon\" }))}\n >\n <Menu size={16} />\n </span>\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n }\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <span className=\"rounded-full p-2\">\n <PanelLeft size={16} />\n </span>\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.memo(\n React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n }\n )\n)\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex w-full gap-2 p-2 items-center\",\n state === \"collapsed\"\n ? \"justify-center items-center\"\n : \"justify-between items-start\",\n className\n )}\n {...props}\n >\n {state !== \"collapsed\" && (\n <div className=\"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden\">\n <div className=\"whitespace-nowrap\">{children}</div>\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-sidebar shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarBanner,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-FFX2EHXT.js","../src/components/sidebar.tsx"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","useSidebar","context","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","openMobile","setOpenMobile","isFullyOpen","setIsFullyOpen","isAnimating","setIsAnimating","_open","_setOpen","open","setOpen","value","openState"],"mappings":"AAAA,+8BAAY;AACZ,sDAA4D,sDAAwC,sDAAoE,sDAAwC,sDAAwC,sDAA+C,sDAAwC,uECCxT,iDACF,kEACkB,2CACJ,+CAuNrB,IAlMRA,EAAAA,CAAsB,eAAA,CACtBC,EAAAA,CAAyB,IAAA,CAAU,EAAA,CAAK,CAAA,CACxCC,EAAAA,CAAgB,UAAA,CAChBC,CAAAA,CAAuB,OAAA,CACvBC,EAAAA,CAAqB,sBAAA,CACrBC,EAAAA,CAA4B,GAAA,CAgB5BC,EAAAA,CAAuB,CAAA,CAAA,aAAA,CAA0C,IAAI,CAAA,CAE3E,SAASC,CAAAA,CAAAA,CAAa,CACpB,IAAMC,CAAAA,CAAgB,CAAA,CAAA,UAAA,CAAWF,EAAc,CAAA,CAC/C,EAAA,CAAI,CAACE,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,mDAAmD,CAAA,CAGrE,OAAOA,CACT,CAEA,IAAMC,EAAAA,CAAwB,CAAA,CAAA,UAAA,CAQ5B,CACE,CACE,WAAA,CAAAC,CAAAA,CAAc,CAAA,CAAA,CACd,IAAA,CAAMC,CAAAA,CACN,YAAA,CAAcC,CAAAA,CACd,SAAA,CAAAC,CAAAA,CACA,KAAA,CAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,GAAGC,CACL,CAAA,CACAC,CAAAA,CAAAA,EACG,CACH,GAAM,CAACC,CAAAA,CAAYC,CAAa,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAClD,CAACC,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAASX,CAAW,CAAA,CAC1D,CAACY,CAAAA,CAAaC,CAAc,CAAA,CAAU,CAAA,CAAA,QAAA,CAAS,CAAA,CAAK,CAAA,CAEpD,CAACC,CAAAA,CAAOC,CAAQ,CAAA,CAAU,CAAA,CAAA,QAAA,CAASf,CAAW,CAAA,CAC9CgB,CAAAA,kBAAOf,CAAAA,SAAYa,GAAAA,CACnBG,CAAAA,CAAgB,CAAA,CAAA,WAAA,CACnBC,CAAAA,EAAmD,CAClD,IAAMC,CAAAA,CAAY,OAAOD,CAAAA,EAAU,UAAA,CAAaA,CAAAA,CAAMF,CAAI,CAAA,CAAIE,CAAAA,CAC1DhB,CAAAA,CACFA,CAAAA,CAAYiB,CAAS,CAAA,CAErBJ,CAAAA,CAASI,CAAS,CAAA,CAGpB,QAAA,CAAS,MAAA,CAAS,CAAA,EAAA","file":"/Users/admin/Desktop/PROJECTS/alkimi-ui-kit/dist/chunk-FFX2EHXT.js","sourcesContent":[null,"\"use client\"\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { PanelLeft, X, Menu } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button, buttonVariants } from \"@/components/button\"\nimport { Input } from \"@/components/input\"\nimport { Separator } from \"@/components/separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"@/components/sheet\"\nimport { Skeleton } from \"@/components/skeleton\"\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from \"@/components/tooltip\"\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\"\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = \"16.75rem\"\nconst SIDEBAR_WIDTH_MOBILE = \"23rem\"\nconst SIDEBAR_WIDTH_ICON = \"calc(3rem + 0.75rem)\"\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\"\n\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n isOpen: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n toggleSidebar: () => void\n toggleMobileSidebar: () => void\n setIsFullyOpen: (open: boolean) => void\n isAnimating: boolean\n setIsAnimating: (animating: boolean) => void\n isBannerClosing: boolean\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const [openMobile, setOpenMobile] = React.useState(false)\n const [isFullyOpen, setIsFullyOpen] = React.useState(defaultOpen)\n const [isAnimating, setIsAnimating] = React.useState(false)\n\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n const toggleSidebar = React.useCallback(() => {\n setOpen((open) => !open)\n }, [setOpen])\n\n const toggleMobileSidebar = React.useCallback(() => {\n setOpenMobile((open) => !open)\n }, [setOpenMobile])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n const state = open ? \"expanded\" : \"collapsed\"\n\n const [bannerHeight, setBannerHeight] = React.useState(0)\n const bannerRef = React.useRef<HTMLDivElement>(null)\n const previousBannerChildrenRef = React.useRef<React.ReactNode[]>([])\n\n // Separate banner children (SidebarBanner) from layout children (Sidebar, SidebarInset)\n const childArray = React.Children.toArray(children)\n const bannerChildren = childArray.filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as React.FC & { displayName?: string })?.displayName ===\n \"SidebarBanner\"\n )\n const layoutChildren = childArray.filter(\n (child) =>\n !React.isValidElement(child) ||\n (child.type as React.FC & { displayName?: string })?.displayName !==\n \"SidebarBanner\"\n )\n\n // Store previous banner children for closing animation\n if (bannerChildren.length > 0) {\n previousBannerChildrenRef.current = bannerChildren\n }\n\n const hasBanner = bannerChildren.length > 0\n const isClosing = !hasBanner && previousBannerChildrenRef.current.length > 0\n const displayBanner = hasBanner || isClosing\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n isOpen: isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isBannerClosing: isClosing,\n }),\n [\n state,\n isFullyOpen,\n setOpen,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n toggleMobileSidebar,\n setIsFullyOpen,\n isAnimating,\n setIsAnimating,\n isClosing,\n ]\n )\n\n // Measure banner height\n React.useEffect(() => {\n const banner = bannerRef.current\n if (!banner) {\n setBannerHeight(0)\n return\n }\n\n const updateHeight = () => {\n setBannerHeight(banner.offsetHeight)\n }\n\n updateHeight()\n const resizeObserver = new ResizeObserver(updateHeight)\n resizeObserver.observe(banner)\n\n return () => resizeObserver.disconnect()\n }, [bannerChildren.length])\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH,\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n \"--sidebar-top\": hasBanner ? `${bannerHeight}px` : \"0px\",\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n \"group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n displayBanner && \"flex-col\",\n className\n )}\n ref={ref}\n {...props}\n >\n {displayBanner ? (\n <>\n <div\n className=\"relative overflow-hidden transition-[height] duration-200 ease-linear\"\n style={\n {\n height: isClosing\n ? \"0px\"\n : bannerHeight > 0\n ? `${bannerHeight}px`\n : \"auto\",\n } as React.CSSProperties\n }\n >\n <div\n ref={bannerRef}\n className=\"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full\"\n data-state={hasBanner ? \"open\" : \"closed\"}\n onTransitionEnd={() => {\n if (isClosing) {\n previousBannerChildrenRef.current = []\n }\n }}\n >\n {hasBanner\n ? bannerChildren\n : previousBannerChildrenRef.current}\n </div>\n </div>\n <div className=\"flex flex-1\">{layoutChildren}</div>\n </>\n ) : (\n children\n )}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = \"SidebarProvider\"\n\nconst SidebarBanner = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"banner\"\n className={cn(\"w-full\", className)}\n {...props}\n />\n )\n})\nSidebarBanner.displayName = \"SidebarBanner\"\n\nconst Sidebar = React.forwardRef<\n HTMLElement,\n React.ComponentProps<\"aside\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n }\n>(\n (\n {\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n ...props\n },\n ref\n ) => {\n const {\n state,\n openMobile,\n setOpenMobile,\n setIsFullyOpen,\n setIsAnimating,\n isBannerClosing,\n } = useSidebar()\n const sidebarRef = React.useRef<HTMLDivElement>(null)\n const isFirstRenderRef = React.useRef(true)\n\n // Track when the sidebar animation completes\n React.useEffect(() => {\n const sidebar = sidebarRef.current\n if (!sidebar) return\n\n // On first render, set isFullyOpen immediately without waiting for animation\n if (isFirstRenderRef.current) {\n isFirstRenderRef.current = false\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n return\n }\n\n // Mark as animating when state changes\n setIsAnimating(true)\n\n // Fallback timeout in case transitionend doesn't fire\n const fallbackTimeout = setTimeout(() => {\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }, 300) // Slightly longer than the 200ms transition duration\n\n const handleTransitionEnd = (event: TransitionEvent) => {\n // Only respond to transitions on the sidebar itself, not children\n if (event.target !== sidebar) return\n\n // Check if we're transitioning width, left, or right properties\n if (\n event.propertyName === \"left\" ||\n event.propertyName === \"right\" ||\n event.propertyName === \"width\"\n ) {\n clearTimeout(fallbackTimeout)\n setIsFullyOpen(state === \"expanded\")\n setIsAnimating(false)\n }\n }\n\n sidebar.addEventListener(\"transitionend\", handleTransitionEnd)\n return () => {\n sidebar.removeEventListener(\"transitionend\", handleTransitionEnd)\n clearTimeout(fallbackTimeout)\n }\n }, [state, setIsFullyOpen, setIsAnimating])\n\n if (collapsible === \"none\") {\n return (\n <aside\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </aside>\n )\n }\n\n return (\n <>\n {/* Mobile Sheet - visible only on mobile (< md) */}\n <Sheet open={openMobile} onOpenChange={setOpenMobile}>\n <SheetContent\n data-sidebar=\"sidebar\"\n data-mobile=\"true\"\n className=\"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n width: SIDEBAR_WIDTH_MOBILE,\n maxWidth: SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n\n {/* Desktop Sidebar - visible only on desktop (md+) */}\n <aside\n ref={ref}\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n >\n {/* Spacer to reserve horizontal space */}\n <div\n className={cn(\n \"w-(--sidebar-width) transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n {/* Fixed sidebar */}\n <div\n ref={sidebarRef}\n data-banner-closing={isBannerClosing}\n className={cn(\n \"fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\n isBannerClosing && \"transition-[left,right,width,top,height]\",\n \"top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]\",\n side === \"left\"\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n <div className=\"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0\">\n {children}\n </div>\n </div>\n </div>\n </aside>\n </>\n )\n }\n)\nSidebar.displayName = \"Sidebar\"\n\nconst SidebarTrigger = React.forwardRef<\n React.ElementRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar, toggleMobileSidebar, openMobile } = useSidebar()\n const [isMobile, setIsMobile] = React.useState(false)\n\n React.useEffect(() => {\n const mql = window.matchMedia(\"(max-width: 767px)\")\n const onChange = (e: MediaQueryListEvent | MediaQueryList) => {\n setIsMobile(e.matches)\n }\n onChange(mql)\n mql.addEventListener(\"change\", onChange)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n if (isMobile) {\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"bg-transparent hover:bg-transparent\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleMobileSidebar()\n }}\n {...props}\n >\n {openMobile ? (\n <span\n className={cn(\n buttonVariants({ variant: \"secondary\", size: \"icon\" })\n )}\n >\n <X size={16} />\n </span>\n ) : (\n <span\n className={cn(buttonVariants({ variant: \"outline\", size: \"icon\" }))}\n >\n <Menu size={16} />\n </span>\n )}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n }\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn(\"h-7 w-7\", className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <span className=\"rounded-full p-2\">\n <PanelLeft size={16} />\n </span>\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n})\nSidebarTrigger.displayName = \"SidebarTrigger\"\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\">\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n \"absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = \"SidebarRail\"\n\nconst SidebarInset = React.memo(\n React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n \"relative flex w-full flex-1 flex-col\",\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow\",\n className\n )}\n {...props}\n />\n )\n }\n )\n)\nSidebarInset.displayName = \"SidebarInset\"\n\nconst SidebarInput = React.forwardRef<\n React.ElementRef<typeof Input>,\n React.ComponentProps<typeof Input>\n>(({ className, ...props }, ref) => {\n return (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n \"h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarInput.displayName = \"SidebarInput\"\n\nconst SidebarHeader = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showTrigger?: boolean\n }\n>(({ className, showTrigger = false, children, ...props }, ref) => {\n const { state } = useSidebar()\n\n return (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn(\n \"flex w-full gap-2 p-2 items-center\",\n state === \"collapsed\"\n ? \"justify-center items-center\"\n : \"justify-between items-start\",\n className\n )}\n {...props}\n >\n {state !== \"collapsed\" && (\n <div className=\"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden\">\n <div className=\"whitespace-nowrap\">{children}</div>\n </div>\n )}\n\n {showTrigger && <SidebarTrigger />}\n </div>\n )\n})\nSidebarHeader.displayName = \"SidebarHeader\"\n\nconst SidebarFooter = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n})\nSidebarFooter.displayName = \"SidebarFooter\"\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => {\n return (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-border\", className)}\n {...props}\n />\n )\n})\nSidebarSeparator.displayName = \"SidebarSeparator\"\n\nconst SidebarContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n \"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarContent.displayName = \"SidebarContent\"\n\nconst SidebarGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn(\n \"relative flex w-full min-w-0 flex-col\",\n \"group-data-[collapsible=icon]:p-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroup.displayName = \"SidebarGroup\"\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n \"flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\"\n\nconst SidebarGroupAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n \"absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarGroupAction.displayName = \"SidebarGroupAction\"\n\nconst SidebarGroupContent = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n))\nSidebarGroupContent.displayName = \"SidebarGroupContent\"\n\nconst SidebarMenu = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n))\nSidebarMenu.displayName = \"SidebarMenu\"\n\nconst SidebarMenuItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n))\nSidebarMenuItem.displayName = \"SidebarMenuItem\"\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\n {\n variants: {\n variant: {\n default:\n \"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]\",\n },\n size: {\n default: \"h-8 text-sm\",\n sm: \"h-7 text-xs\",\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\"\n const { state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...props}\n />\n )\n\n if (!tooltip) {\n return button\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\"}\n {...tooltip}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = \"SidebarMenuButton\"\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<\"button\"> & {\n asChild?: boolean\n showOnHover?: boolean\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n \"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0\",\n \"after:absolute after:-inset-2 after:md:hidden\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuAction.displayName = \"SidebarMenuAction\"\n\nconst SidebarMenuBadge = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground\",\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\n \"peer-data-[size=sm]/menu-button:top-1\",\n \"peer-data-[size=default]/menu-button:top-1.5\",\n \"peer-data-[size=lg]/menu-button:top-2.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\"\n\nconst SidebarMenuSkeleton = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n }\n>(({ className, showIcon = false, ...props }, ref) => {\n const width = React.useMemo(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n }, [])\n\n return (\n <div\n ref={ref}\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-[--skeleton-width] flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n})\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\"\n\nconst SidebarMenuSub = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n))\nSidebarMenuSub.displayName = \"SidebarMenuSub\"\n\nconst SidebarMenuSubItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ ...props }, ref) => <li ref={ref} {...props} />)\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\"\n\nconst SidebarMenuSubButton = React.forwardRef<\n HTMLAnchorElement,\n React.ComponentProps<\"a\"> & {\n asChild?: boolean\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\"\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n data-active={isActive}\n className={cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\n size === \"sm\" && \"text-xs\",\n size === \"md\" && \"text-sm\",\n \"group-data-[collapsible=icon]:hidden\",\n className\n )}\n {...props}\n />\n )\n})\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\"\n\nexport {\n Sidebar,\n SidebarBanner,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import{a as Q,b as X,c as Y,d as J}from"./chunk-QC5MA4WL.mjs";import{a as K}from"./chunk-YBV4CPVD.mjs";import{a as $,f as j,g as W,i as q,j as U}from"./chunk-DMHIFNXF.mjs";import{a as z}from"./chunk-CNRZOMR4.mjs";import{a as V}from"./chunk-NEOUFWZN.mjs";import{a as H,b as I}from"./chunk-W65OWFZY.mjs";import{a as o}from"./chunk-S5TKCF6T.mjs";import*as e from"react";import{Slot as E}from"@radix-ui/react-slot";import{cva as oe}from"class-variance-authority";import{PanelLeft as ie,X as se,Menu as de}from"lucide-react";import{Fragment as te,jsx as n,jsxs as m}from"react/jsx-runtime";var le="sidebar_state",ce=3600*24*7,pe="16.75rem",Z="23rem",ue="calc(3rem + 0.75rem)",be="b",ee=e.createContext(null);function T(){let a=e.useContext(ee);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var fe=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:r,className:i,style:s,children:c,...g},u)=>{let[h,l]=e.useState(!1),[p,f]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=t??P,R=e.useCallback(d=>{let b=typeof d=="function"?d(S):d;r?r(b):x(b),document.cookie=`${le}=${b}; path=/; max-age=${ce}`},[r,S]),v=e.useCallback(()=>{R(d=>!d)},[R]),D=e.useCallback(()=>{l(d=>!d)},[l]);e.useEffect(()=>{let d=b=>{b.key===be&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),v())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[v]);let _=S?"expanded":"collapsed",[B,k]=e.useState(0),A=e.useRef(null),L=e.useRef([]),O=e.Children.toArray(c),C=O.filter(d=>e.isValidElement(d)&&d.type?.displayName==="SidebarBanner"),re=O.filter(d=>!e.isValidElement(d)||d.type?.displayName!=="SidebarBanner");C.length>0&&(L.current=C);let N=C.length>0,M=!N&&L.current.length>0,F=N||M,ne=e.useMemo(()=>({state:_,isOpen:p,setOpen:R,openMobile:h,setOpenMobile:l,toggleSidebar:v,toggleMobileSidebar:D,setIsFullyOpen:f,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,p,R,h,l,v,D,f,w,y,M]);return e.useEffect(()=>{let d=A.current;if(!d){k(0);return}let b=()=>{k(d.offsetHeight)};b();let G=new ResizeObserver(b);return G.observe(d),()=>G.disconnect()},[C.length]),n(ee.Provider,{value:ne,children:n(Q,{delayDuration:0,children:n("div",{style:{"--sidebar-width":pe,"--sidebar-width-icon":ue,"--sidebar-top":N?`${B}px`:"0px",...s},className:o("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:u,...g,children:F?m(te,{children:[n("div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":B>0?`${B}px`:"auto"},children:n("div",{ref:A,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(L.current=[])},children:N?C:L.current})}),n("div",{className:"flex flex-1",children:re})]}):c})})})});fe.displayName="SidebarProvider";var me=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"banner",className:o("w-full",a),...t}));me.displayName="SidebarBanner";var ge=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:r="offcanvas",className:i,children:s,...c},g)=>{let{state:u,openMobile:h,setOpenMobile:l,setIsFullyOpen:p,setIsAnimating:f,isBannerClosing:w}=T(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,p(u==="expanded"),f(!1);return}f(!0);let S=setTimeout(()=>{p(u==="expanded"),f(!1)},300),R=v=>{v.target===x&&(v.propertyName==="left"||v.propertyName==="right"||v.propertyName==="width")&&(clearTimeout(S),p(u==="expanded"),f(!1))};return x.addEventListener("transitionend",R),()=>{x.removeEventListener("transitionend",R),clearTimeout(S)}},[u,p,f]),r==="none"?n("aside",{className:o("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:g,...c,children:s}):m(te,{children:[n($,{open:h,onOpenChange:l,children:m(j,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:Z,maxWidth:Z},side:a,children:[m(W,{className:"sr-only",children:[n(q,{children:"Sidebar"}),n(U,{children:"Displays the mobile sidebar."})]}),n("div",{className:"flex h-full w-full flex-col",children:s})]})}),m("aside",{ref:g,className:"group peer hidden text-sidebar-foreground md:block","data-state":u,"data-collapsible":u==="collapsed"?r:"","data-variant":t,"data-side":a,children:[n("div",{className:o("w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),n("div",{ref:y,"data-banner-closing":w,className:o("fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:n("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:n("div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ge.displayName="Sidebar";var ae=e.forwardRef(({className:a,onClick:t,...r},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:g}=T(),[u,h]=e.useState(!1);return e.useEffect(()=>{let l=window.matchMedia("(max-width: 767px)"),p=f=>{h(f.matches)};return p(l),l.addEventListener("change",p),()=>l.removeEventListener("change",p)},[]),u?m(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("bg-transparent hover:bg-transparent",a),onClick:l=>{t?.(l),c()},...r,children:[g?n("span",{className:o(H({variant:"secondary",size:"icon"})),children:n(se,{size:16})}):n("span",{className:o(H({variant:"outline",size:"icon"})),children:n(de,{size:16})}),n("span",{className:"sr-only",children:"Toggle Sidebar"})]}):m(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("h-7 w-7",a),onClick:l=>{t?.(l),s()},...r,children:[n("span",{className:"rounded-full p-2",children:n(ie,{size:16})}),n("span",{className:"sr-only",children:"Toggle Sidebar"})]})});ae.displayName="SidebarTrigger";var ve=e.forwardRef(({className:a,...t},r)=>{let{toggleSidebar:i}=T();return n("button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:o("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});ve.displayName="SidebarRail";var he=e.memo(e.forwardRef(({className:a,...t},r)=>n("main",{ref:r,className:o("relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));he.displayName="SidebarInset";var Re=e.forwardRef(({className:a,...t},r)=>n(V,{ref:r,"data-sidebar":"input",className:o("h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));Re.displayName="SidebarInput";var xe=e.forwardRef(({className:a,showTrigger:t=!1,children:r,...i},s)=>{let{state:c}=T();return m("div",{ref:s,"data-sidebar":"header",className:o("flex w-full gap-2 p-2 items-center",c==="collapsed"?"justify-center items-center":"justify-between items-start",a),...i,children:[c!=="collapsed"&&n("div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:n("div",{className:"whitespace-nowrap",children:r})}),t&&n(ae,{})]})});xe.displayName="SidebarHeader";var Se=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"footer",className:o("flex flex-col gap-2 p-2",a),...t}));Se.displayName="SidebarFooter";var we=e.forwardRef(({className:a,...t},r)=>n(K,{ref:r,"data-sidebar":"separator",className:o("mx-2 w-auto bg-border",a),...t}));we.displayName="SidebarSeparator";var ye=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"content",className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));ye.displayName="SidebarContent";var Ce=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"group",className:o("relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ce.displayName="SidebarGroup";var Ne=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>n(t?E:"div",{ref:i,"data-sidebar":"group-label",className:o("flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...r}));Ne.displayName="SidebarGroupLabel";var Me=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>n(t?E:"button",{ref:i,"data-sidebar":"group-action",className:o("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...r}));Me.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"group-content",className:o("w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Te=e.forwardRef(({className:a,...t},r)=>n("ul",{ref:r,"data-sidebar":"menu",className:o("flex w-full min-w-0 flex-col gap-1",a),...t}));Te.displayName="SidebarMenu";var Pe=e.forwardRef(({className:a,...t},r)=>n("li",{ref:r,"data-sidebar":"menu-item",className:o("group/menu-item relative",a),...t}));Pe.displayName="SidebarMenuItem";var Le=oe("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground",outline:"bg-sidebar shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Be=e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:r="default",size:i="default",tooltip:s,className:c,...g},u)=>{let h=a?E:"button",{state:l}=T(),p=n(h,{ref:u,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:o(Le({variant:r,size:i}),c),...g});return s?(typeof s=="string"&&(s={children:s}),m(X,{children:[n(Y,{asChild:!0,children:p}),n(J,{side:"right",align:"center",hidden:l!=="collapsed",...s})]})):p});Be.displayName="SidebarMenuButton";var He=e.forwardRef(({className:a,asChild:t=!1,showOnHover:r=!1,...i},s)=>n(t?E:"button",{ref:s,"data-sidebar":"menu-action",className:o("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));He.displayName="SidebarMenuAction";var Ie=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"menu-badge",className:o("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));Ie.displayName="SidebarMenuBadge";var ze=e.forwardRef(({className:a,showIcon:t=!1,...r},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return m("div",{ref:i,"data-sidebar":"menu-skeleton",className:o("flex h-8 items-center gap-2 rounded-md px-2",a),...r,children:[t&&n(z,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),n(z,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ze.displayName="SidebarMenuSkeleton";var De=e.forwardRef(({className:a,...t},r)=>n("ul",{ref:r,"data-sidebar":"menu-sub",className:o("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));De.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>n("li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var ke=e.forwardRef(({asChild:a=!1,size:t="md",isActive:r,className:i,...s},c)=>n(a?E:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":r,className:o("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));ke.displayName="SidebarMenuSubButton";export{T as a,fe as b,me as c,ge as d,ae as e,ve as f,he as g,Re as h,xe as i,Se as j,we as k,ye as l,Ce as m,Ne as n,Me as o,Ee as p,Te as q,Pe as r,Be as s,He as t,Ie as u,ze as v,De as w,_e as x,ke as y};
|
|
3
|
-
//# sourceMappingURL=chunk-
|
|
2
|
+
import{a as Q,b as X,c as Y,d as J}from"./chunk-QC5MA4WL.mjs";import{a as K}from"./chunk-YBV4CPVD.mjs";import{a as $,f as j,g as W,i as q,j as U}from"./chunk-DMHIFNXF.mjs";import{a as z}from"./chunk-CNRZOMR4.mjs";import{a as V}from"./chunk-NEOUFWZN.mjs";import{a as H,b as I}from"./chunk-W65OWFZY.mjs";import{a as o}from"./chunk-S5TKCF6T.mjs";import*as e from"react";import{Slot as E}from"@radix-ui/react-slot";import{cva as oe}from"class-variance-authority";import{PanelLeft as ie,X as se,Menu as de}from"lucide-react";import{Fragment as te,jsx as n,jsxs as m}from"react/jsx-runtime";var le="sidebar_state",ce=3600*24*7,pe="16.75rem",Z="23rem",ue="calc(3rem + 0.75rem)",be="b",ee=e.createContext(null);function T(){let a=e.useContext(ee);if(!a)throw new Error("useSidebar must be used within a SidebarProvider.");return a}var fe=e.forwardRef(({defaultOpen:a=!0,open:t,onOpenChange:r,className:i,style:s,children:c,...g},u)=>{let[h,l]=e.useState(!1),[p,f]=e.useState(a),[w,y]=e.useState(!1),[P,x]=e.useState(a),S=t??P,R=e.useCallback(d=>{let b=typeof d=="function"?d(S):d;r?r(b):x(b),document.cookie=`${le}=${b}; path=/; max-age=${ce}`},[r,S]),v=e.useCallback(()=>{R(d=>!d)},[R]),D=e.useCallback(()=>{l(d=>!d)},[l]);e.useEffect(()=>{let d=b=>{b.key===be&&(b.metaKey||b.ctrlKey)&&(b.preventDefault(),v())};return window.addEventListener("keydown",d),()=>window.removeEventListener("keydown",d)},[v]);let _=S?"expanded":"collapsed",[B,k]=e.useState(0),A=e.useRef(null),L=e.useRef([]),O=e.Children.toArray(c),C=O.filter(d=>e.isValidElement(d)&&d.type?.displayName==="SidebarBanner"),re=O.filter(d=>!e.isValidElement(d)||d.type?.displayName!=="SidebarBanner");C.length>0&&(L.current=C);let N=C.length>0,M=!N&&L.current.length>0,F=N||M,ne=e.useMemo(()=>({state:_,isOpen:p,setOpen:R,openMobile:h,setOpenMobile:l,toggleSidebar:v,toggleMobileSidebar:D,setIsFullyOpen:f,isAnimating:w,setIsAnimating:y,isBannerClosing:M}),[_,p,R,h,l,v,D,f,w,y,M]);return e.useEffect(()=>{let d=A.current;if(!d){k(0);return}let b=()=>{k(d.offsetHeight)};b();let G=new ResizeObserver(b);return G.observe(d),()=>G.disconnect()},[C.length]),n(ee.Provider,{value:ne,children:n(Q,{delayDuration:0,children:n("div",{style:{"--sidebar-width":pe,"--sidebar-width-icon":ue,"--sidebar-top":N?`${B}px`:"0px",...s},className:o("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar",F&&"flex-col",i),ref:u,...g,children:F?m(te,{children:[n("div",{className:"relative overflow-hidden transition-[height] duration-200 ease-linear",style:{height:M?"0px":B>0?`${B}px`:"auto"},children:n("div",{ref:A,className:"fixed top-0 left-0 right-0 z-20 w-full transition-transform duration-200 ease-linear data-[state=closed]:-translate-y-full","data-state":N?"open":"closed",onTransitionEnd:()=>{M&&(L.current=[])},children:N?C:L.current})}),n("div",{className:"flex flex-1",children:re})]}):c})})})});fe.displayName="SidebarProvider";var me=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"banner",className:o("w-full",a),...t}));me.displayName="SidebarBanner";var ge=e.forwardRef(({side:a="left",variant:t="sidebar",collapsible:r="offcanvas",className:i,children:s,...c},g)=>{let{state:u,openMobile:h,setOpenMobile:l,setIsFullyOpen:p,setIsAnimating:f,isBannerClosing:w}=T(),y=e.useRef(null),P=e.useRef(!0);return e.useEffect(()=>{let x=y.current;if(!x)return;if(P.current){P.current=!1,p(u==="expanded"),f(!1);return}f(!0);let S=setTimeout(()=>{p(u==="expanded"),f(!1)},300),R=v=>{v.target===x&&(v.propertyName==="left"||v.propertyName==="right"||v.propertyName==="width")&&(clearTimeout(S),p(u==="expanded"),f(!1))};return x.addEventListener("transitionend",R),()=>{x.removeEventListener("transitionend",R),clearTimeout(S)}},[u,p,f]),r==="none"?n("aside",{className:o("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground",i),ref:g,...c,children:s}):m(te,{children:[n($,{open:h,onOpenChange:l,children:m(j,{"data-sidebar":"sidebar","data-mobile":"true",className:"md:hidden bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",style:{width:Z,maxWidth:Z},side:a,children:[m(W,{className:"sr-only",children:[n(q,{children:"Sidebar"}),n(U,{children:"Displays the mobile sidebar."})]}),n("div",{className:"flex h-full w-full flex-col",children:s})]})}),m("aside",{ref:g,className:"group peer hidden text-sidebar-foreground md:block","data-state":u,"data-collapsible":u==="collapsed"?r:"","data-variant":t,"data-side":a,children:[n("div",{className:o("w-(--sidebar-width) transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0",t==="floating"||t==="inset"?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),n("div",{ref:y,"data-banner-closing":w,className:o("fixed z-10 hidden w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",w&&"transition-[left,right,width,top,height]","top-(--sidebar-top) h-[calc(100svh-var(--sidebar-top))]",a==="left"?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",t==="floating"||t==="inset"?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)",i),...c,children:n("div",{"data-sidebar":"sidebar",className:"flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",children:n("div",{className:"flex flex-col my-2.5 ml-2.5 rounded-2xl border bg-sidebar border-sidebar-border flex-1 min-h-0",children:s})})})]})]})});ge.displayName="Sidebar";var ae=e.forwardRef(({className:a,onClick:t,...r},i)=>{let{toggleSidebar:s,toggleMobileSidebar:c,openMobile:g}=T(),[u,h]=e.useState(!1);return e.useEffect(()=>{let l=window.matchMedia("(max-width: 767px)"),p=f=>{h(f.matches)};return p(l),l.addEventListener("change",p),()=>l.removeEventListener("change",p)},[]),u?m(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("bg-transparent hover:bg-transparent",a),onClick:l=>{t?.(l),c()},...r,children:[g?n("span",{className:o(H({variant:"secondary",size:"icon"})),children:n(se,{size:16})}):n("span",{className:o(H({variant:"outline",size:"icon"})),children:n(de,{size:16})}),n("span",{className:"sr-only",children:"Toggle Sidebar"})]}):m(I,{ref:i,"data-sidebar":"trigger",variant:"ghost",size:"icon",className:o("h-7 w-7",a),onClick:l=>{t?.(l),s()},...r,children:[n("span",{className:"rounded-full p-2",children:n(ie,{size:16})}),n("span",{className:"sr-only",children:"Toggle Sidebar"})]})});ae.displayName="SidebarTrigger";var ve=e.forwardRef(({className:a,...t},r)=>{let{toggleSidebar:i}=T();return n("button",{ref:r,"data-sidebar":"rail","aria-label":"Toggle Sidebar",tabIndex:-1,onClick:i,title:"Toggle Sidebar",className:o("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex","in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize","[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize","group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar","[[data-side=left][data-collapsible=offcanvas]_&]:-right-2","[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",a),...t})});ve.displayName="SidebarRail";var he=e.memo(e.forwardRef(({className:a,...t},r)=>n("main",{ref:r,className:o("relative flex w-full flex-1 flex-col","md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",a),...t})));he.displayName="SidebarInset";var Re=e.forwardRef(({className:a,...t},r)=>n(V,{ref:r,"data-sidebar":"input",className:o("h-8 w-full bg-sidebar shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",a),...t}));Re.displayName="SidebarInput";var xe=e.forwardRef(({className:a,showTrigger:t=!1,children:r,...i},s)=>{let{state:c}=T();return m("div",{ref:s,"data-sidebar":"header",className:o("flex w-full gap-2 p-2 items-center",c==="collapsed"?"justify-center items-center":"justify-between items-start",a),...i,children:[c!=="collapsed"&&n("div",{className:"transition-all duration-200 w-full h-fit flex justify-between overflow-hidden",children:n("div",{className:"whitespace-nowrap",children:r})}),t&&n(ae,{})]})});xe.displayName="SidebarHeader";var Se=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"footer",className:o("flex flex-col gap-2 p-2",a),...t}));Se.displayName="SidebarFooter";var we=e.forwardRef(({className:a,...t},r)=>n(K,{ref:r,"data-sidebar":"separator",className:o("mx-2 w-auto bg-border",a),...t}));we.displayName="SidebarSeparator";var ye=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"content",className:o("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden p-2",a),...t}));ye.displayName="SidebarContent";var Ce=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"group",className:o("relative flex w-full min-w-0 flex-col","group-data-[collapsible=icon]:p-0",a),...t}));Ce.displayName="SidebarGroup";var Ne=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>n(t?E:"div",{ref:i,"data-sidebar":"group-label",className:o("flex h-8 shrink-0 items-center rounded-md text-xs font-medium text-secondary-text outline-none ring-sidebar-ring transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",a),...r}));Ne.displayName="SidebarGroupLabel";var Me=e.forwardRef(({className:a,asChild:t=!1,...r},i)=>n(t?E:"button",{ref:i,"data-sidebar":"group-action",className:o("absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","group-data-[collapsible=icon]:hidden",a),...r}));Me.displayName="SidebarGroupAction";var Ee=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"group-content",className:o("w-full text-sm",a),...t}));Ee.displayName="SidebarGroupContent";var Te=e.forwardRef(({className:a,...t},r)=>n("ul",{ref:r,"data-sidebar":"menu",className:o("flex w-full min-w-0 flex-col gap-1",a),...t}));Te.displayName="SidebarMenu";var Pe=e.forwardRef(({className:a,...t},r)=>n("li",{ref:r,"data-sidebar":"menu-item",className:o("group/menu-item relative",a),...t}));Pe.displayName="SidebarMenuItem";var Le=oe("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent/20 hover:text-sidebar-accent-foreground",outline:"bg-sidebar shadow-[0_0_0_1px_var(--sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--sidebar-accent)]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:!p-0"}},defaultVariants:{variant:"default",size:"default"}}),Be=e.forwardRef(({asChild:a=!1,isActive:t=!1,variant:r="default",size:i="default",tooltip:s,className:c,...g},u)=>{let h=a?E:"button",{state:l}=T(),p=n(h,{ref:u,"data-sidebar":"menu-button","data-size":i,"data-active":t,className:o(Le({variant:r,size:i}),c),...g});return s?(typeof s=="string"&&(s={children:s}),m(X,{children:[n(Y,{asChild:!0,children:p}),n(J,{side:"right",align:"center",hidden:l!=="collapsed",...s})]})):p});Be.displayName="SidebarMenuButton";var He=e.forwardRef(({className:a,asChild:t=!1,showOnHover:r=!1,...i},s)=>n(t?E:"button",{ref:s,"data-sidebar":"menu-action",className:o("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0","after:absolute after:-inset-2 after:md:hidden","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",r&&"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-base-accent-foreground md:opacity-0",a),...i}));He.displayName="SidebarMenuAction";var Ie=e.forwardRef(({className:a,...t},r)=>n("div",{ref:r,"data-sidebar":"menu-badge",className:o("pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground","peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground","peer-data-[size=sm]/menu-button:top-1","peer-data-[size=default]/menu-button:top-1.5","peer-data-[size=lg]/menu-button:top-2.5","group-data-[collapsible=icon]:hidden",a),...t}));Ie.displayName="SidebarMenuBadge";var ze=e.forwardRef(({className:a,showIcon:t=!1,...r},i)=>{let s=e.useMemo(()=>`${Math.floor(Math.random()*40)+50}%`,[]);return m("div",{ref:i,"data-sidebar":"menu-skeleton",className:o("flex h-8 items-center gap-2 rounded-md px-2",a),...r,children:[t&&n(z,{className:"size-4 rounded-md","data-sidebar":"menu-skeleton-icon"}),n(z,{className:"h-4 max-w-[--skeleton-width] flex-1","data-sidebar":"menu-skeleton-text",style:{"--skeleton-width":s}})]})});ze.displayName="SidebarMenuSkeleton";var De=e.forwardRef(({className:a,...t},r)=>n("ul",{ref:r,"data-sidebar":"menu-sub",className:o("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5","group-data-[collapsible=icon]:hidden",a),...t}));De.displayName="SidebarMenuSub";var _e=e.forwardRef(({...a},t)=>n("li",{ref:t,...a}));_e.displayName="SidebarMenuSubItem";var ke=e.forwardRef(({asChild:a=!1,size:t="md",isActive:r,className:i,...s},c)=>n(a?E:"a",{ref:c,"data-sidebar":"menu-sub-button","data-size":t,"data-active":r,className:o("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground","data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground",t==="sm"&&"text-xs",t==="md"&&"text-sm","group-data-[collapsible=icon]:hidden",i),...s}));ke.displayName="SidebarMenuSubButton";export{T as a,fe as b,me as c,ge as d,ae as e,ve as f,he as g,Re as h,xe as i,Se as j,we as k,ye as l,Ce as m,Ne as n,Me as o,Ee as p,Te as q,Pe as r,Be as s,He as t,Ie as u,ze as v,De as w,_e as x,ke as y};
|
|
3
|
+
//# sourceMappingURL=chunk-GB5MQZ4S.mjs.map
|