@jarllyng/nostromo 3.12.1 → 3.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import t,{useState,useEffect,useRef,useCallback}from'react';import {cva}from'class-variance-authority';var $=cva("relative flex items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm","top-right":"fixed top-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-left":"fixed bottom-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-right":"fixed bottom-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),b=cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),B=t.createContext(void 0),H=t.createContext(false),q=()=>{let n=t.useContext(B);if(!n)throw new Error("useToast must be used within a ToastProvider");return n},A=0,D=()=>`toast-${++A}`,et=({children:n})=>{let[c,d]=useState([]),[l,s]=useState(()=>new Set),r=useRef(new Map),i=useCallback(e=>{let o=r.current.get(e);o&&(clearTimeout(o),r.current.delete(e));},[]),u=useCallback(e=>{i(e),s(o=>{if(o.has(e))return o;let a=new Set(o);return a.add(e),a});},[i]),g=useCallback(e=>{i(e),d(o=>o.filter(a=>a.id!==e)),s(o=>{if(!o.has(e))return o;let a=new Set(o);return a.delete(e),a});},[i]),T=useRef(u);useEffect(()=>{T.current=u;},[u]);let C=useCallback(e=>{let o=D(),a={...e,id:o};if(d(m=>[...m,a]),e.duration!==0){let m=setTimeout(()=>{T.current(o);},e.duration||5e3);r.current.set(o,m);}return o},[]),f=useCallback(()=>{r.current.forEach(e=>clearTimeout(e)),r.current.clear(),d(e=>(s(new Set(e.map(o=>o.id))),e));},[]);return useEffect(()=>{let e=r.current;return ()=>{e.forEach(o=>clearTimeout(o)),e.clear();}},[]),t.createElement(B.Provider,{value:{toasts:c,addToast:C,removeToast:u,clearToasts:f}},n,t.createElement(J,{toasts:c,dismissing:l,onExited:g}))},U={"top-left":"top-4 left-4 flex-col","top-center":"top-4 left-1/2 -translate-x-1/2 flex-col","top-right":"top-4 right-4 flex-col","bottom-left":"bottom-4 left-4 flex-col-reverse","bottom-center":"bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse","bottom-right":"bottom-4 right-4 flex-col-reverse"},G=({position:n,children:c})=>t.createElement(H.Provider,{value:true},t.createElement("ol",{"data-toast-viewport":n,className:a("pointer-events-none fixed z-50 flex w-[calc(100vw-2rem)] max-w-sm gap-2 m-0 list-none p-0",U[n])},c)),J=({toasts:n,dismissing:c,onExited:d})=>{if(n.length===0)return null;let l=n.reduce((s,r)=>{let i=r.position??"top-right";return (s[i]??=[]).push(r),s},{});return t.createElement(t.Fragment,null,Object.entries(l).map(([s,r])=>t.createElement(G,{key:s,position:s},r.map(i=>t.createElement("li",{key:i.id,className:"contents"},t.createElement(K,{...i,dismissing:c.has(i.id),onExited:()=>d(i.id)}))))))},F=t.forwardRef(({id:n,title:c,description:d,variant:l="default",position:s="top-right",animation:r="default",duration:i=5e3,onClose:u,action:g,className:T,children:C,appearDelay:f=10,animationMs:e=150,dismissing:o=false,onExited:a$1,...m},j)=>{let h=t.useContext(H),[V,L]=useState(f<=0),[y,W]=useState(false);useEffect(()=>{if(f<=0)return;let N=window.setTimeout(()=>L(true),f);return ()=>clearTimeout(N)},[f]);let M=useRef(false),S=useRef(u),E=useRef(a$1);useEffect(()=>{S.current=u,E.current=a$1;},[u,a$1]);let x=useCallback(()=>{M.current||(M.current=true,W(true),window.setTimeout(()=>{S.current?.(),L(false),E.current?.();},e));},[e]);useEffect(()=>{o&&x();},[o,x]),useEffect(()=>{if(!h&&i>0){let N=window.setTimeout(x,i);return ()=>clearTimeout(N)}},[h,i,x]);let X=()=>{switch(l){case "success":return t.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};if(!V)return null;let I=l==="error",{style:O,..._}=m;return t.createElement("div",{ref:j,role:m.role??(I?"alert":"status"),"aria-live":m["aria-live"]??(I?"assertive":"polite"),"aria-atomic":m["aria-atomic"]??true,className:a($({variant:l,position:h?null:s,animation:r}),h&&"w-full",y?"opacity-0":"opacity-100","pointer-events-auto",T),"data-visible":V?"true":"false","data-leaving":y?"true":"false",..._,style:{transition:`all ${e}ms ease-in-out`,...O,transform:y?"translateX(100%)":O?.transform??"translateX(0)"}},t.createElement("div",{className:"flex items-start space-x-3"},X(),t.createElement("div",{className:"flex-1 min-w-0"},c&&t.createElement("div",{className:"text-sm font-medium"},c),d&&t.createElement("div",{className:"mt-1 text-sm opacity-90"},d),C)),g&&t.createElement("button",{type:"button",onClick:g.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring"},g.label),t.createElement("button",{type:"button",onClick:x,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring","aria-label":"Close notification"},t.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"}))))});F.displayName="Toast";var K=a$1(F),ot=()=>{let{addToast:n,removeToast:c,clearToasts:d}=q();return {success:(s,r)=>n({variant:"success",title:"Success",description:s,...r}),error:(s,r)=>n({variant:"error",title:"Error",description:s,...r}),warning:(s,r)=>n({variant:"warning",title:"Warning",description:s,...r}),info:(s,r)=>n({variant:"info",title:"Info",description:s,...r}),custom:s=>n(s),dismiss:c,clear:d}};export{$ as a,b,q as c,et as d,K as e,ot as f};//# sourceMappingURL=chunk-CH5LTBAG.js.map
3
+ //# sourceMappingURL=chunk-CH5LTBAG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","ToastViewportContext","useToast","context","toastSequence","nextToastId","ToastProvider","children","toasts","setToasts","useState","dismissing","setDismissing","timeoutRefs","useRef","clearTimer","useCallback","id","timeoutId","removeToast","prev","next","finalize","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","VIEWPORT_POSITIONS","ToastViewport","position","cn","onExited","toastsByPosition","acc","positionToasts","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","contained","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","closedRef","onCloseRef","onExitedRef","handleClose","getIcon","isUrgent","callerStyle","restProps","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-CH5LTBAG.js","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n/**\n * Notifications, and the provider that owns them.\n *\n * Three things about this component are worth reading before changing it.\n *\n * ## The viewport positions, the toast does not\n *\n * A `ToastProvider` renders one `ToastViewport` per position: a fixed, bounded\n * column that stacks its children in normal flex flow with a gap. The toasts\n * inside it are ordinary block elements.\n *\n * Every toast used to position itself instead, with `fixed right-4` plus `w-full`\n * and a `translateY(index * 8px)` for stacking. Both halves were wrong. `w-full`\n * against a fixed right offset made a 1200px-wide box starting at x=-16, so the\n * notification ran off the left edge of the window; and 8px of offset for a box\n * about 94px tall meant the second notification covered nearly all of the first.\n *\n * A standalone `<Toast position=\"top-right\">` still positions itself, because\n * that is a supported way to use it. `ToastViewportContext` is how a toast knows\n * which of the two it is in.\n *\n * ## One dismissal path\n *\n * Closing a toast used to leave it in the provider's `toasts` array forever: the\n * component unmounted itself and nothing told the provider. A persistent toast\n * dismissed ten times left ten invisible entries behind.\n *\n * Now every route - the close button, the timeout, `dismiss(id)`, `clear()` -\n * goes through the same two steps. `removeToast` marks the toast as dismissing,\n * which starts its exit animation; when the animation ends the toast reports back\n * and the provider drops it from state. `onClose` fires exactly once, guarded by\n * a ref, whichever route was taken.\n *\n * There is also exactly one timer per toast. Inside a viewport the provider owns\n * it; standalone, the toast owns its own. Previously both ran, and the provider's\n * could remove a toast before its own exit finished.\n *\n * ## Announcement is the default, not an opt-in\n *\n * A toast carries `role=\"status\"` and `aria-live=\"polite\"`, or `role=\"alert\"` and\n * `aria-live=\"assertive\"` for the error variant, so a message that appears\n * without warning is announced without the caller arranging anything. It is also\n * `aria-atomic`, so the title and description are read as one message rather than\n * as two arrivals. Pass `role` or `aria-live` to override either.\n *\n * Focus is deliberately not moved. A notification that steals focus interrupts\n * whatever the reader was doing, which is worse than the problem it solves; the\n * close button and any action stay reachable by Tab.\n */\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n // Only applied when the toast is positioning itself. Inside a viewport the\n // column owns the position and the toast just fills its width.\n //\n // The width bound is the fix for the clipping: `w-full` next to a fixed\n // right offset is a full-viewport box pushed 16px off the left edge.\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"top-center\":\n \"fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"top-right\": \"fixed top-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-left\":\n \"fixed bottom-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-center\":\n \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-right\":\n \"fixed bottom-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n /**\n * Internal. Set by the viewport to start the exit animation, so that a\n * programmatic `dismiss(id)` animates out like a click on the close button\n * rather than vanishing.\n */\n dismissing?: boolean;\n /** Internal. Told to the provider when the exit animation has finished. */\n onExited?: () => void;\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\n/**\n * True inside a `ToastViewport`.\n *\n * A contained toast does not position itself and does not run its own\n * auto-dismiss timer, because the viewport does the first and the provider does\n * the second. Both used to happen twice.\n */\nconst ToastViewportContext = React.createContext(false);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n/**\n * Ids are a counter, not `Math.random()`.\n *\n * Random ids differ between a server render and the client that hydrates it,\n * which is a hydration mismatch waiting for the first server-rendered toast. A\n * counter is stable for a given sequence of calls, and these ids are only ever\n * used to address a toast within one provider.\n */\nlet toastSequence = 0;\nconst nextToastId = () => `toast-${++toastSequence}`;\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n // Toasts whose exit animation is running. They are still in `toasts` - and so\n // still rendered - until the animation reports back.\n const [dismissing, setDismissing] = useState<ReadonlySet<string>>(\n () => new Set(),\n );\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const clearTimer = useCallback((id: string) => {\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n }, []);\n\n /** Starts the exit. The toast leaves the array in `finalize`, not here. */\n const removeToast = useCallback(\n (id: string) => {\n clearTimer(id);\n setDismissing((prev) => {\n if (prev.has(id)) return prev;\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n },\n [clearTimer],\n );\n\n /** The exit has finished: drop it. */\n const finalize = useCallback(\n (id: string) => {\n clearTimer(id);\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n setDismissing((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n },\n [clearTimer],\n );\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = nextToastId();\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // The provider owns the timer for a toast it renders, and it starts the same\n // exit a click on the close button would. The toast's own timer is disabled\n // inside a viewport, so this is the only one.\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n // Animate them all out rather than cutting to nothing, so `clear()` looks\n // like dismissing each one.\n setToasts((prev) => {\n setDismissing(new Set(prev.map((toast) => toast.id!)));\n return prev;\n });\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer\n toasts={toasts}\n dismissing={dismissing}\n onExited={finalize}\n />\n </ToastContext.Provider>\n );\n};\n\nconst VIEWPORT_POSITIONS: Record<ToastPosition, string> = {\n // Bottom edges stack upwards, so the newest is nearest the edge and the older\n // ones move away from it. Reversing the column is what does that.\n \"top-left\": \"top-4 left-4 flex-col\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2 flex-col\",\n \"top-right\": \"top-4 right-4 flex-col\",\n \"bottom-left\": \"bottom-4 left-4 flex-col-reverse\",\n \"bottom-center\": \"bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse\",\n \"bottom-right\": \"bottom-4 right-4 flex-col-reverse\",\n};\n\n/**\n * One bounded column per position.\n *\n * `w-[calc(100vw-2rem)] max-w-sm` is the pair that keeps it on screen: full width\n * minus the 16px inset on each side, up to a readable maximum. The column is\n * `pointer-events-none` so it does not swallow clicks on the page underneath it,\n * and each toast turns pointer events back on for itself.\n */\nconst ToastViewport: React.FC<{\n position: ToastPosition;\n children: React.ReactNode;\n}> = ({ position, children }) => (\n <ToastViewportContext.Provider value={true}>\n <ol\n data-toast-viewport={position}\n className={cn(\n \"pointer-events-none fixed z-50 flex w-[calc(100vw-2rem)] max-w-sm gap-2 m-0 list-none p-0\",\n VIEWPORT_POSITIONS[position],\n )}\n >\n {children}\n </ol>\n </ToastViewportContext.Provider>\n);\n\n// Toast Container\nconst ToastContainer: React.FC<{\n toasts: ToastProps[];\n dismissing: ReadonlySet<string>;\n onExited: (id: string) => void;\n}> = ({ toasts, dismissing, onExited }) => {\n if (toasts.length === 0) return null;\n\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = (toast.position ?? \"top-right\") as ToastPosition;\n (acc[position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastProps[]>,\n );\n\n return (\n <>\n {(\n Object.entries(toastsByPosition) as [ToastPosition, ToastProps[]][]\n ).map(([position, positionToasts]) => (\n <ToastViewport key={position} position={position}>\n {positionToasts.map((toast) => (\n <li key={toast.id} className=\"contents\">\n <Toast\n {...toast}\n dismissing={dismissing.has(toast.id!)}\n onExited={() => onExited(toast.id!)}\n />\n </li>\n ))}\n </ToastViewport>\n ))}\n </>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n dismissing = false,\n onExited,\n ...props\n },\n ref,\n ) => {\n const contained = React.useContext(ToastViewportContext);\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n // `onClose` fires once, whichever route got here: the close button, the\n // timeout, `dismiss(id)` or `clear()`. Without the guard, a second click\n // during the exit animation fired it twice.\n const closedRef = useRef(false);\n const onCloseRef = useRef(onClose);\n const onExitedRef = useRef(onExited);\n useEffect(() => {\n onCloseRef.current = onClose;\n onExitedRef.current = onExited;\n }, [onClose, onExited]);\n\n const handleClose = useCallback(() => {\n if (closedRef.current) return;\n closedRef.current = true;\n setIsLeaving(true);\n window.setTimeout(() => {\n onCloseRef.current?.();\n setIsVisible(false);\n // The provider drops it from state here, after the animation, so the\n // array and the screen agree.\n onExitedRef.current?.();\n }, animationMs);\n }, [animationMs]);\n\n // Started from outside: `dismiss(id)`, `clear()`, or the provider's timeout.\n useEffect(() => {\n if (dismissing) handleClose();\n }, [dismissing, handleClose]);\n\n // Auto close after duration.\n //\n // Only when standalone. Inside a viewport the provider owns this timer, and\n // running both meant a toast could be removed from state while its own exit\n // was still going.\n useEffect(() => {\n if (contained) return undefined;\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [contained, duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n // An error is the one variant a reader should be interrupted for. Everything\n // else waits for a pause. A caller who knows better can pass either.\n const isUrgent = variant === \"error\";\n const { style: callerStyle, ...restProps } = props;\n\n return (\n <div\n ref={ref}\n role={props.role ?? (isUrgent ? \"alert\" : \"status\")}\n aria-live={props[\"aria-live\"] ?? (isUrgent ? \"assertive\" : \"polite\")}\n // Read the title and the description as one message rather than as two\n // separate arrivals.\n aria-atomic={props[\"aria-atomic\"] ?? true}\n className={cn(\n toastVariants({\n variant,\n // Inside a viewport the column positions it; on its own it has to.\n position: contained ? null : position,\n animation,\n }),\n contained && \"w-full\",\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n {...restProps}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n ...callerStyle,\n // Last, so the exit is not silently overridden by a caller's transform.\n // It used to be first, and the container passed a transform on every\n // toast, so the exit animation never ran for a toast in a provider.\n transform: isLeaving\n ? \"translateX(100%)\"\n : (callerStyle?.transform ?? \"translateX(0)\"),\n }}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}
@@ -0,0 +1,3 @@
1
+ "use client";
2
+ 'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),t=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var t__default=/*#__PURE__*/_interopDefault(t);var $=classVarianceAuthority.cva("relative flex items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm","top-right":"fixed top-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-left":"fixed bottom-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm","bottom-right":"fixed bottom-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),b=classVarianceAuthority.cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),B=t__default.default.createContext(void 0),H=t__default.default.createContext(false),q=()=>{let n=t__default.default.useContext(B);if(!n)throw new Error("useToast must be used within a ToastProvider");return n},A=0,D=()=>`toast-${++A}`,et=({children:n})=>{let[c,d]=t.useState([]),[l,s]=t.useState(()=>new Set),r=t.useRef(new Map),i=t.useCallback(e=>{let o=r.current.get(e);o&&(clearTimeout(o),r.current.delete(e));},[]),u=t.useCallback(e=>{i(e),s(o=>{if(o.has(e))return o;let a=new Set(o);return a.add(e),a});},[i]),g=t.useCallback(e=>{i(e),d(o=>o.filter(a=>a.id!==e)),s(o=>{if(!o.has(e))return o;let a=new Set(o);return a.delete(e),a});},[i]),T=t.useRef(u);t.useEffect(()=>{T.current=u;},[u]);let C=t.useCallback(e=>{let o=D(),a={...e,id:o};if(d(m=>[...m,a]),e.duration!==0){let m=setTimeout(()=>{T.current(o);},e.duration||5e3);r.current.set(o,m);}return o},[]),f=t.useCallback(()=>{r.current.forEach(e=>clearTimeout(e)),r.current.clear(),d(e=>(s(new Set(e.map(o=>o.id))),e));},[]);return t.useEffect(()=>{let e=r.current;return ()=>{e.forEach(o=>clearTimeout(o)),e.clear();}},[]),t__default.default.createElement(B.Provider,{value:{toasts:c,addToast:C,removeToast:u,clearToasts:f}},n,t__default.default.createElement(J,{toasts:c,dismissing:l,onExited:g}))},U={"top-left":"top-4 left-4 flex-col","top-center":"top-4 left-1/2 -translate-x-1/2 flex-col","top-right":"top-4 right-4 flex-col","bottom-left":"bottom-4 left-4 flex-col-reverse","bottom-center":"bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse","bottom-right":"bottom-4 right-4 flex-col-reverse"},G=({position:n,children:c})=>t__default.default.createElement(H.Provider,{value:true},t__default.default.createElement("ol",{"data-toast-viewport":n,className:chunkITRGJNWL_cjs.a("pointer-events-none fixed z-50 flex w-[calc(100vw-2rem)] max-w-sm gap-2 m-0 list-none p-0",U[n])},c)),J=({toasts:n,dismissing:c,onExited:d})=>{if(n.length===0)return null;let l=n.reduce((s,r)=>{let i=r.position??"top-right";return (s[i]??=[]).push(r),s},{});return t__default.default.createElement(t__default.default.Fragment,null,Object.entries(l).map(([s,r])=>t__default.default.createElement(G,{key:s,position:s},r.map(i=>t__default.default.createElement("li",{key:i.id,className:"contents"},t__default.default.createElement(K,{...i,dismissing:c.has(i.id),onExited:()=>d(i.id)}))))))},F=t__default.default.forwardRef(({id:n,title:c,description:d,variant:l="default",position:s="top-right",animation:r="default",duration:i=5e3,onClose:u,action:g,className:T,children:C,appearDelay:f=10,animationMs:e=150,dismissing:o=false,onExited:a,...m},j)=>{let h=t__default.default.useContext(H),[V,L]=t.useState(f<=0),[y,W]=t.useState(false);t.useEffect(()=>{if(f<=0)return;let N=window.setTimeout(()=>L(true),f);return ()=>clearTimeout(N)},[f]);let M=t.useRef(false),S=t.useRef(u),E=t.useRef(a);t.useEffect(()=>{S.current=u,E.current=a;},[u,a]);let x=t.useCallback(()=>{M.current||(M.current=true,W(true),window.setTimeout(()=>{S.current?.(),L(false),E.current?.();},e));},[e]);t.useEffect(()=>{o&&x();},[o,x]),t.useEffect(()=>{if(!h&&i>0){let N=window.setTimeout(x,i);return ()=>clearTimeout(N)}},[h,i,x]);let X=()=>{switch(l){case "success":return t__default.default.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t__default.default.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t__default.default.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t__default.default.createElement("svg",{className:b({variant:l}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};if(!V)return null;let I=l==="error",{style:O,..._}=m;return t__default.default.createElement("div",{ref:j,role:m.role??(I?"alert":"status"),"aria-live":m["aria-live"]??(I?"assertive":"polite"),"aria-atomic":m["aria-atomic"]??true,className:chunkITRGJNWL_cjs.a($({variant:l,position:h?null:s,animation:r}),h&&"w-full",y?"opacity-0":"opacity-100","pointer-events-auto",T),"data-visible":V?"true":"false","data-leaving":y?"true":"false",..._,style:{transition:`all ${e}ms ease-in-out`,...O,transform:y?"translateX(100%)":O?.transform??"translateX(0)"}},t__default.default.createElement("div",{className:"flex items-start space-x-3"},X(),t__default.default.createElement("div",{className:"flex-1 min-w-0"},c&&t__default.default.createElement("div",{className:"text-sm font-medium"},c),d&&t__default.default.createElement("div",{className:"mt-1 text-sm opacity-90"},d),C)),g&&t__default.default.createElement("button",{type:"button",onClick:g.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring"},g.label),t__default.default.createElement("button",{type:"button",onClick:x,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring","aria-label":"Close notification"},t__default.default.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"}))))});F.displayName="Toast";var K=chunk7SPPGTBT_cjs.a(F),ot=()=>{let{addToast:n,removeToast:c,clearToasts:d}=q();return {success:(s,r)=>n({variant:"success",title:"Success",description:s,...r}),error:(s,r)=>n({variant:"error",title:"Error",description:s,...r}),warning:(s,r)=>n({variant:"warning",title:"Warning",description:s,...r}),info:(s,r)=>n({variant:"info",title:"Info",description:s,...r}),custom:s=>n(s),dismiss:c,clear:d}};exports.a=$;exports.b=b;exports.c=q;exports.d=et;exports.e=K;exports.f=ot;//# sourceMappingURL=chunk-JTHW25XF.cjs.map
3
+ //# sourceMappingURL=chunk-JTHW25XF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","ToastViewportContext","useToast","context","toastSequence","nextToastId","ToastProvider","children","toasts","setToasts","useState","dismissing","setDismissing","timeoutRefs","useRef","clearTimer","useCallback","id","timeoutId","removeToast","prev","next","finalize","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","VIEWPORT_POSITIONS","ToastViewport","position","cn","onExited","toastsByPosition","acc","positionToasts","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","contained","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","closedRef","onCloseRef","onExitedRef","handleClose","getIcon","isUrgent","callerStyle","restProps","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-JTHW25XF.cjs","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n/**\n * Notifications, and the provider that owns them.\n *\n * Three things about this component are worth reading before changing it.\n *\n * ## The viewport positions, the toast does not\n *\n * A `ToastProvider` renders one `ToastViewport` per position: a fixed, bounded\n * column that stacks its children in normal flex flow with a gap. The toasts\n * inside it are ordinary block elements.\n *\n * Every toast used to position itself instead, with `fixed right-4` plus `w-full`\n * and a `translateY(index * 8px)` for stacking. Both halves were wrong. `w-full`\n * against a fixed right offset made a 1200px-wide box starting at x=-16, so the\n * notification ran off the left edge of the window; and 8px of offset for a box\n * about 94px tall meant the second notification covered nearly all of the first.\n *\n * A standalone `<Toast position=\"top-right\">` still positions itself, because\n * that is a supported way to use it. `ToastViewportContext` is how a toast knows\n * which of the two it is in.\n *\n * ## One dismissal path\n *\n * Closing a toast used to leave it in the provider's `toasts` array forever: the\n * component unmounted itself and nothing told the provider. A persistent toast\n * dismissed ten times left ten invisible entries behind.\n *\n * Now every route - the close button, the timeout, `dismiss(id)`, `clear()` -\n * goes through the same two steps. `removeToast` marks the toast as dismissing,\n * which starts its exit animation; when the animation ends the toast reports back\n * and the provider drops it from state. `onClose` fires exactly once, guarded by\n * a ref, whichever route was taken.\n *\n * There is also exactly one timer per toast. Inside a viewport the provider owns\n * it; standalone, the toast owns its own. Previously both ran, and the provider's\n * could remove a toast before its own exit finished.\n *\n * ## Announcement is the default, not an opt-in\n *\n * A toast carries `role=\"status\"` and `aria-live=\"polite\"`, or `role=\"alert\"` and\n * `aria-live=\"assertive\"` for the error variant, so a message that appears\n * without warning is announced without the caller arranging anything. It is also\n * `aria-atomic`, so the title and description are read as one message rather than\n * as two arrivals. Pass `role` or `aria-live` to override either.\n *\n * Focus is deliberately not moved. A notification that steals focus interrupts\n * whatever the reader was doing, which is worse than the problem it solves; the\n * close button and any action stay reachable by Tab.\n */\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n // Only applied when the toast is positioning itself. Inside a viewport the\n // column owns the position and the toast just fills its width.\n //\n // The width bound is the fix for the clipping: `w-full` next to a fixed\n // right offset is a full-viewport box pushed 16px off the left edge.\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"top-center\":\n \"fixed top-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"top-right\": \"fixed top-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-left\":\n \"fixed bottom-4 left-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-center\":\n \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n \"bottom-right\":\n \"fixed bottom-4 right-4 z-50 w-[calc(100vw-2rem)] max-w-sm\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport type ToastPosition =\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n /**\n * Internal. Set by the viewport to start the exit animation, so that a\n * programmatic `dismiss(id)` animates out like a click on the close button\n * rather than vanishing.\n */\n dismissing?: boolean;\n /** Internal. Told to the provider when the exit animation has finished. */\n onExited?: () => void;\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\n/**\n * True inside a `ToastViewport`.\n *\n * A contained toast does not position itself and does not run its own\n * auto-dismiss timer, because the viewport does the first and the provider does\n * the second. Both used to happen twice.\n */\nconst ToastViewportContext = React.createContext(false);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n/**\n * Ids are a counter, not `Math.random()`.\n *\n * Random ids differ between a server render and the client that hydrates it,\n * which is a hydration mismatch waiting for the first server-rendered toast. A\n * counter is stable for a given sequence of calls, and these ids are only ever\n * used to address a toast within one provider.\n */\nlet toastSequence = 0;\nconst nextToastId = () => `toast-${++toastSequence}`;\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n // Toasts whose exit animation is running. They are still in `toasts` - and so\n // still rendered - until the animation reports back.\n const [dismissing, setDismissing] = useState<ReadonlySet<string>>(\n () => new Set(),\n );\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const clearTimer = useCallback((id: string) => {\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n }, []);\n\n /** Starts the exit. The toast leaves the array in `finalize`, not here. */\n const removeToast = useCallback(\n (id: string) => {\n clearTimer(id);\n setDismissing((prev) => {\n if (prev.has(id)) return prev;\n const next = new Set(prev);\n next.add(id);\n return next;\n });\n },\n [clearTimer],\n );\n\n /** The exit has finished: drop it. */\n const finalize = useCallback(\n (id: string) => {\n clearTimer(id);\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n setDismissing((prev) => {\n if (!prev.has(id)) return prev;\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n },\n [clearTimer],\n );\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = nextToastId();\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // The provider owns the timer for a toast it renders, and it starts the same\n // exit a click on the close button would. The toast's own timer is disabled\n // inside a viewport, so this is the only one.\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n // Animate them all out rather than cutting to nothing, so `clear()` looks\n // like dismissing each one.\n setToasts((prev) => {\n setDismissing(new Set(prev.map((toast) => toast.id!)));\n return prev;\n });\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer\n toasts={toasts}\n dismissing={dismissing}\n onExited={finalize}\n />\n </ToastContext.Provider>\n );\n};\n\nconst VIEWPORT_POSITIONS: Record<ToastPosition, string> = {\n // Bottom edges stack upwards, so the newest is nearest the edge and the older\n // ones move away from it. Reversing the column is what does that.\n \"top-left\": \"top-4 left-4 flex-col\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2 flex-col\",\n \"top-right\": \"top-4 right-4 flex-col\",\n \"bottom-left\": \"bottom-4 left-4 flex-col-reverse\",\n \"bottom-center\": \"bottom-4 left-1/2 -translate-x-1/2 flex-col-reverse\",\n \"bottom-right\": \"bottom-4 right-4 flex-col-reverse\",\n};\n\n/**\n * One bounded column per position.\n *\n * `w-[calc(100vw-2rem)] max-w-sm` is the pair that keeps it on screen: full width\n * minus the 16px inset on each side, up to a readable maximum. The column is\n * `pointer-events-none` so it does not swallow clicks on the page underneath it,\n * and each toast turns pointer events back on for itself.\n */\nconst ToastViewport: React.FC<{\n position: ToastPosition;\n children: React.ReactNode;\n}> = ({ position, children }) => (\n <ToastViewportContext.Provider value={true}>\n <ol\n data-toast-viewport={position}\n className={cn(\n \"pointer-events-none fixed z-50 flex w-[calc(100vw-2rem)] max-w-sm gap-2 m-0 list-none p-0\",\n VIEWPORT_POSITIONS[position],\n )}\n >\n {children}\n </ol>\n </ToastViewportContext.Provider>\n);\n\n// Toast Container\nconst ToastContainer: React.FC<{\n toasts: ToastProps[];\n dismissing: ReadonlySet<string>;\n onExited: (id: string) => void;\n}> = ({ toasts, dismissing, onExited }) => {\n if (toasts.length === 0) return null;\n\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = (toast.position ?? \"top-right\") as ToastPosition;\n (acc[position] ??= []).push(toast);\n return acc;\n },\n {} as Record<ToastPosition, ToastProps[]>,\n );\n\n return (\n <>\n {(\n Object.entries(toastsByPosition) as [ToastPosition, ToastProps[]][]\n ).map(([position, positionToasts]) => (\n <ToastViewport key={position} position={position}>\n {positionToasts.map((toast) => (\n <li key={toast.id} className=\"contents\">\n <Toast\n {...toast}\n dismissing={dismissing.has(toast.id!)}\n onExited={() => onExited(toast.id!)}\n />\n </li>\n ))}\n </ToastViewport>\n ))}\n </>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n dismissing = false,\n onExited,\n ...props\n },\n ref,\n ) => {\n const contained = React.useContext(ToastViewportContext);\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n // `onClose` fires once, whichever route got here: the close button, the\n // timeout, `dismiss(id)` or `clear()`. Without the guard, a second click\n // during the exit animation fired it twice.\n const closedRef = useRef(false);\n const onCloseRef = useRef(onClose);\n const onExitedRef = useRef(onExited);\n useEffect(() => {\n onCloseRef.current = onClose;\n onExitedRef.current = onExited;\n }, [onClose, onExited]);\n\n const handleClose = useCallback(() => {\n if (closedRef.current) return;\n closedRef.current = true;\n setIsLeaving(true);\n window.setTimeout(() => {\n onCloseRef.current?.();\n setIsVisible(false);\n // The provider drops it from state here, after the animation, so the\n // array and the screen agree.\n onExitedRef.current?.();\n }, animationMs);\n }, [animationMs]);\n\n // Started from outside: `dismiss(id)`, `clear()`, or the provider's timeout.\n useEffect(() => {\n if (dismissing) handleClose();\n }, [dismissing, handleClose]);\n\n // Auto close after duration.\n //\n // Only when standalone. Inside a viewport the provider owns this timer, and\n // running both meant a toast could be removed from state while its own exit\n // was still going.\n useEffect(() => {\n if (contained) return undefined;\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [contained, duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n // An error is the one variant a reader should be interrupted for. Everything\n // else waits for a pause. A caller who knows better can pass either.\n const isUrgent = variant === \"error\";\n const { style: callerStyle, ...restProps } = props;\n\n return (\n <div\n ref={ref}\n role={props.role ?? (isUrgent ? \"alert\" : \"status\")}\n aria-live={props[\"aria-live\"] ?? (isUrgent ? \"assertive\" : \"polite\")}\n // Read the title and the description as one message rather than as two\n // separate arrivals.\n aria-atomic={props[\"aria-atomic\"] ?? true}\n className={cn(\n toastVariants({\n variant,\n // Inside a viewport the column positions it; on its own it has to.\n position: contained ? null : position,\n animation,\n }),\n contained && \"w-full\",\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n {...restProps}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n ...callerStyle,\n // Last, so the exit is not silently overridden by a caller's transform.\n // It used to be first, and the container passed a transform on every\n // toast, so the exit animation never ran for a toast in a provider.\n transform: isLeaving\n ? \"translateX(100%)\"\n : (callerStyle?.transform ?? \"translateX(0)\"),\n }}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var chunk5Z3MYAVM_cjs=require('../../chunk-5Z3MYAVM.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.f}});//# sourceMappingURL=toast.cjs.map
2
+ 'use strict';var chunkJTHW25XF_cjs=require('../../chunk-JTHW25XF.cjs');require('../../chunk-7SPPGTBT.cjs'),require('../../chunk-ITRGJNWL.cjs');Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});//# sourceMappingURL=toast.cjs.map
3
3
  //# sourceMappingURL=toast.cjs.map
@@ -2,6 +2,55 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
2
2
  import React__default from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
+ /**
6
+ * Notifications, and the provider that owns them.
7
+ *
8
+ * Three things about this component are worth reading before changing it.
9
+ *
10
+ * ## The viewport positions, the toast does not
11
+ *
12
+ * A `ToastProvider` renders one `ToastViewport` per position: a fixed, bounded
13
+ * column that stacks its children in normal flex flow with a gap. The toasts
14
+ * inside it are ordinary block elements.
15
+ *
16
+ * Every toast used to position itself instead, with `fixed right-4` plus `w-full`
17
+ * and a `translateY(index * 8px)` for stacking. Both halves were wrong. `w-full`
18
+ * against a fixed right offset made a 1200px-wide box starting at x=-16, so the
19
+ * notification ran off the left edge of the window; and 8px of offset for a box
20
+ * about 94px tall meant the second notification covered nearly all of the first.
21
+ *
22
+ * A standalone `<Toast position="top-right">` still positions itself, because
23
+ * that is a supported way to use it. `ToastViewportContext` is how a toast knows
24
+ * which of the two it is in.
25
+ *
26
+ * ## One dismissal path
27
+ *
28
+ * Closing a toast used to leave it in the provider's `toasts` array forever: the
29
+ * component unmounted itself and nothing told the provider. A persistent toast
30
+ * dismissed ten times left ten invisible entries behind.
31
+ *
32
+ * Now every route - the close button, the timeout, `dismiss(id)`, `clear()` -
33
+ * goes through the same two steps. `removeToast` marks the toast as dismissing,
34
+ * which starts its exit animation; when the animation ends the toast reports back
35
+ * and the provider drops it from state. `onClose` fires exactly once, guarded by
36
+ * a ref, whichever route was taken.
37
+ *
38
+ * There is also exactly one timer per toast. Inside a viewport the provider owns
39
+ * it; standalone, the toast owns its own. Previously both ran, and the provider's
40
+ * could remove a toast before its own exit finished.
41
+ *
42
+ * ## Announcement is the default, not an opt-in
43
+ *
44
+ * A toast carries `role="status"` and `aria-live="polite"`, or `role="alert"` and
45
+ * `aria-live="assertive"` for the error variant, so a message that appears
46
+ * without warning is announced without the caller arranging anything. It is also
47
+ * `aria-atomic`, so the title and description are read as one message rather than
48
+ * as two arrivals. Pass `role` or `aria-live` to override either.
49
+ *
50
+ * Focus is deliberately not moved. A notification that steals focus interrupts
51
+ * whatever the reader was doing, which is worse than the problem it solves; the
52
+ * close button and any action stay reachable by Tab.
53
+ */
5
54
  declare const toastVariants: (props?: ({
6
55
  variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
7
56
  position?: "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | null | undefined;
@@ -10,6 +59,7 @@ declare const toastVariants: (props?: ({
10
59
  declare const toastIconVariants: (props?: ({
11
60
  variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
12
61
  } & class_variance_authority_types.ClassProp) | undefined) => string;
62
+ type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
13
63
  interface ToastProps extends VariantProps<typeof toastVariants>, React__default.HTMLAttributes<HTMLDivElement> {
14
64
  id?: string;
15
65
  title?: string;
@@ -24,6 +74,14 @@ interface ToastProps extends VariantProps<typeof toastVariants>, React__default.
24
74
  children?: React__default.ReactNode;
25
75
  appearDelay?: number;
26
76
  animationMs?: number;
77
+ /**
78
+ * Internal. Set by the viewport to start the exit animation, so that a
79
+ * programmatic `dismiss(id)` animates out like a click on the close button
80
+ * rather than vanishing.
81
+ */
82
+ dismissing?: boolean;
83
+ /** Internal. Told to the provider when the exit animation has finished. */
84
+ onExited?: () => void;
27
85
  }
28
86
  interface ToastContextType {
29
87
  toasts: ToastProps[];
@@ -47,4 +105,4 @@ declare const useToastNotification: () => {
47
105
  clear: () => void;
48
106
  };
49
107
 
50
- export { Toast, type ToastContextType, type ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification };
108
+ export { Toast, type ToastContextType, type ToastPosition, type ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification };
@@ -2,6 +2,55 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
2
2
  import React__default from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
+ /**
6
+ * Notifications, and the provider that owns them.
7
+ *
8
+ * Three things about this component are worth reading before changing it.
9
+ *
10
+ * ## The viewport positions, the toast does not
11
+ *
12
+ * A `ToastProvider` renders one `ToastViewport` per position: a fixed, bounded
13
+ * column that stacks its children in normal flex flow with a gap. The toasts
14
+ * inside it are ordinary block elements.
15
+ *
16
+ * Every toast used to position itself instead, with `fixed right-4` plus `w-full`
17
+ * and a `translateY(index * 8px)` for stacking. Both halves were wrong. `w-full`
18
+ * against a fixed right offset made a 1200px-wide box starting at x=-16, so the
19
+ * notification ran off the left edge of the window; and 8px of offset for a box
20
+ * about 94px tall meant the second notification covered nearly all of the first.
21
+ *
22
+ * A standalone `<Toast position="top-right">` still positions itself, because
23
+ * that is a supported way to use it. `ToastViewportContext` is how a toast knows
24
+ * which of the two it is in.
25
+ *
26
+ * ## One dismissal path
27
+ *
28
+ * Closing a toast used to leave it in the provider's `toasts` array forever: the
29
+ * component unmounted itself and nothing told the provider. A persistent toast
30
+ * dismissed ten times left ten invisible entries behind.
31
+ *
32
+ * Now every route - the close button, the timeout, `dismiss(id)`, `clear()` -
33
+ * goes through the same two steps. `removeToast` marks the toast as dismissing,
34
+ * which starts its exit animation; when the animation ends the toast reports back
35
+ * and the provider drops it from state. `onClose` fires exactly once, guarded by
36
+ * a ref, whichever route was taken.
37
+ *
38
+ * There is also exactly one timer per toast. Inside a viewport the provider owns
39
+ * it; standalone, the toast owns its own. Previously both ran, and the provider's
40
+ * could remove a toast before its own exit finished.
41
+ *
42
+ * ## Announcement is the default, not an opt-in
43
+ *
44
+ * A toast carries `role="status"` and `aria-live="polite"`, or `role="alert"` and
45
+ * `aria-live="assertive"` for the error variant, so a message that appears
46
+ * without warning is announced without the caller arranging anything. It is also
47
+ * `aria-atomic`, so the title and description are read as one message rather than
48
+ * as two arrivals. Pass `role` or `aria-live` to override either.
49
+ *
50
+ * Focus is deliberately not moved. A notification that steals focus interrupts
51
+ * whatever the reader was doing, which is worse than the problem it solves; the
52
+ * close button and any action stay reachable by Tab.
53
+ */
5
54
  declare const toastVariants: (props?: ({
6
55
  variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
7
56
  position?: "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | null | undefined;
@@ -10,6 +59,7 @@ declare const toastVariants: (props?: ({
10
59
  declare const toastIconVariants: (props?: ({
11
60
  variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
12
61
  } & class_variance_authority_types.ClassProp) | undefined) => string;
62
+ type ToastPosition = "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right";
13
63
  interface ToastProps extends VariantProps<typeof toastVariants>, React__default.HTMLAttributes<HTMLDivElement> {
14
64
  id?: string;
15
65
  title?: string;
@@ -24,6 +74,14 @@ interface ToastProps extends VariantProps<typeof toastVariants>, React__default.
24
74
  children?: React__default.ReactNode;
25
75
  appearDelay?: number;
26
76
  animationMs?: number;
77
+ /**
78
+ * Internal. Set by the viewport to start the exit animation, so that a
79
+ * programmatic `dismiss(id)` animates out like a click on the close button
80
+ * rather than vanishing.
81
+ */
82
+ dismissing?: boolean;
83
+ /** Internal. Told to the provider when the exit animation has finished. */
84
+ onExited?: () => void;
27
85
  }
28
86
  interface ToastContextType {
29
87
  toasts: ToastProps[];
@@ -47,4 +105,4 @@ declare const useToastNotification: () => {
47
105
  clear: () => void;
48
106
  };
49
107
 
50
- export { Toast, type ToastContextType, type ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification };
108
+ export { Toast, type ToastContextType, type ToastPosition, type ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification };
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'../../chunk-WO3KCAN6.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=toast.js.map
2
+ export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'../../chunk-CH5LTBAG.js';import'../../chunk-COXN6XBA.js';import'../../chunk-AC2JBXHQ.js';//# sourceMappingURL=toast.js.map
3
3
  //# sourceMappingURL=toast.js.map
package/dist/index.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var chunk7PPAI3MM_cjs=require('./chunk-7PPAI3MM.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkOEN63W3G_cjs=require('./chunk-OEN63W3G.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunk5Z3MYAVM_cjs=require('./chunk-5Z3MYAVM.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkAYEM2M4H_cjs=require('./chunk-AYEM2M4H.cjs'),chunkVNDL67OG_cjs=require('./chunk-VNDL67OG.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunkJCETHQ55_cjs=require('./chunk-JCETHQ55.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunkBDRP7ALG_cjs=require('./chunk-BDRP7ALG.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkPZLBMQGI_cjs=require('./chunk-PZLBMQGI.cjs'),chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunk7PPAI3MM_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkOEN63W3G_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunk5Z3MYAVM_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkAYEM2M4H_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
2
+ 'use strict';var chunk7PPAI3MM_cjs=require('./chunk-7PPAI3MM.cjs'),chunk2DNQXAMB_cjs=require('./chunk-2DNQXAMB.cjs'),chunk3V3OIZWQ_cjs=require('./chunk-3V3OIZWQ.cjs'),chunkOEN63W3G_cjs=require('./chunk-OEN63W3G.cjs'),chunkJUOCEYUF_cjs=require('./chunk-JUOCEYUF.cjs'),chunkEVRQYWZ3_cjs=require('./chunk-EVRQYWZ3.cjs'),chunkHWZTMVQV_cjs=require('./chunk-HWZTMVQV.cjs'),chunkV45EOCAD_cjs=require('./chunk-V45EOCAD.cjs'),chunkJTHW25XF_cjs=require('./chunk-JTHW25XF.cjs'),chunkSZ34F6OZ_cjs=require('./chunk-SZ34F6OZ.cjs'),chunkJ4VRJVTO_cjs=require('./chunk-J4VRJVTO.cjs'),chunk27UORO2F_cjs=require('./chunk-27UORO2F.cjs'),chunkCGBIJDZX_cjs=require('./chunk-CGBIJDZX.cjs'),chunkK2JCGDU7_cjs=require('./chunk-K2JCGDU7.cjs'),chunkERGAJKFH_cjs=require('./chunk-ERGAJKFH.cjs'),chunkZ7WEJ5IQ_cjs=require('./chunk-Z7WEJ5IQ.cjs'),chunkC7HZAQBX_cjs=require('./chunk-C7HZAQBX.cjs'),chunkMQUHAWJ2_cjs=require('./chunk-MQUHAWJ2.cjs'),chunkQEHKWS7N_cjs=require('./chunk-QEHKWS7N.cjs'),chunkFMIAI6US_cjs=require('./chunk-FMIAI6US.cjs'),chunk45W3AH36_cjs=require('./chunk-45W3AH36.cjs'),chunkBYV75TDY_cjs=require('./chunk-BYV75TDY.cjs'),chunkE53C3RDD_cjs=require('./chunk-E53C3RDD.cjs'),chunkG35BR7SK_cjs=require('./chunk-G35BR7SK.cjs'),chunkYLAUFUIS_cjs=require('./chunk-YLAUFUIS.cjs'),chunk4NLMGH2S_cjs=require('./chunk-4NLMGH2S.cjs'),chunkXPIBRXTW_cjs=require('./chunk-XPIBRXTW.cjs'),chunkV77N662N_cjs=require('./chunk-V77N662N.cjs'),chunk7YFUAGIW_cjs=require('./chunk-7YFUAGIW.cjs'),chunkE3A4SP3X_cjs=require('./chunk-E3A4SP3X.cjs'),chunkNC27D5Y3_cjs=require('./chunk-NC27D5Y3.cjs'),chunkBJPJB6IA_cjs=require('./chunk-BJPJB6IA.cjs'),chunkWK6LNC2E_cjs=require('./chunk-WK6LNC2E.cjs'),chunkNPSIDFOF_cjs=require('./chunk-NPSIDFOF.cjs'),chunkEEGXD4HC_cjs=require('./chunk-EEGXD4HC.cjs'),chunkDB6MHAU3_cjs=require('./chunk-DB6MHAU3.cjs'),chunkKCS3UL74_cjs=require('./chunk-KCS3UL74.cjs');require('./chunk-MIYL7YKU.cjs');var chunkAYEM2M4H_cjs=require('./chunk-AYEM2M4H.cjs'),chunkVNDL67OG_cjs=require('./chunk-VNDL67OG.cjs'),chunkFUENXWR7_cjs=require('./chunk-FUENXWR7.cjs'),chunkRKSTEJKG_cjs=require('./chunk-RKSTEJKG.cjs'),chunk75OZKMEA_cjs=require('./chunk-75OZKMEA.cjs'),chunkEFCNLYYW_cjs=require('./chunk-EFCNLYYW.cjs'),chunk35RWQSO2_cjs=require('./chunk-35RWQSO2.cjs'),chunkJCETHQ55_cjs=require('./chunk-JCETHQ55.cjs'),chunkPMNNV4ML_cjs=require('./chunk-PMNNV4ML.cjs'),chunkBDRP7ALG_cjs=require('./chunk-BDRP7ALG.cjs'),chunk3HKYX26O_cjs=require('./chunk-3HKYX26O.cjs'),chunkBZ5ZCZJX_cjs=require('./chunk-BZ5ZCZJX.cjs'),chunk3QVQ2TNE_cjs=require('./chunk-3QVQ2TNE.cjs'),chunk55N2IT62_cjs=require('./chunk-55N2IT62.cjs'),chunk4FSJEW7W_cjs=require('./chunk-4FSJEW7W.cjs'),chunk7WEIVLG3_cjs=require('./chunk-7WEIVLG3.cjs'),chunkMLSE5XSB_cjs=require('./chunk-MLSE5XSB.cjs'),chunkPZLBMQGI_cjs=require('./chunk-PZLBMQGI.cjs'),chunk5PVFLXPO_cjs=require('./chunk-5PVFLXPO.cjs'),chunkLXQT7FH6_cjs=require('./chunk-LXQT7FH6.cjs'),chunkR4L5BZYI_cjs=require('./chunk-R4L5BZYI.cjs'),chunkIOX4WPJL_cjs=require('./chunk-IOX4WPJL.cjs');require('./chunk-7SPPGTBT.cjs');var chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs');var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};Object.defineProperty(exports,"Gallery",{enumerable:true,get:function(){return chunk7PPAI3MM_cjs.a}});Object.defineProperty(exports,"Hero",{enumerable:true,get:function(){return chunk2DNQXAMB_cjs.a}});Object.defineProperty(exports,"LogoWall",{enumerable:true,get:function(){return chunk3V3OIZWQ_cjs.a}});Object.defineProperty(exports,"Pricing",{enumerable:true,get:function(){return chunkOEN63W3G_cjs.a}});Object.defineProperty(exports,"Testimonials",{enumerable:true,get:function(){return chunkJUOCEYUF_cjs.a}});Object.defineProperty(exports,"Switch",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.c}});Object.defineProperty(exports,"switchThumbVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.b}});Object.defineProperty(exports,"switchVariants",{enumerable:true,get:function(){return chunkEVRQYWZ3_cjs.a}});Object.defineProperty(exports,"Tabs",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.d}});Object.defineProperty(exports,"TabsContent",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.g}});Object.defineProperty(exports,"TabsList",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.e}});Object.defineProperty(exports,"TabsTrigger",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.f}});Object.defineProperty(exports,"tabsContentVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.c}});Object.defineProperty(exports,"tabsListVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.a}});Object.defineProperty(exports,"tabsTriggerVariants",{enumerable:true,get:function(){return chunkHWZTMVQV_cjs.b}});Object.defineProperty(exports,"Textarea",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.b}});Object.defineProperty(exports,"textareaVariants",{enumerable:true,get:function(){return chunkV45EOCAD_cjs.a}});Object.defineProperty(exports,"Toast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.e}});Object.defineProperty(exports,"ToastProvider",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.d}});Object.defineProperty(exports,"toastIconVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.b}});Object.defineProperty(exports,"toastVariants",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.a}});Object.defineProperty(exports,"useToast",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.c}});Object.defineProperty(exports,"useToastNotification",{enumerable:true,get:function(){return chunkJTHW25XF_cjs.f}});Object.defineProperty(exports,"Toggle",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.b}});Object.defineProperty(exports,"ToggleGroup",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.c}});Object.defineProperty(exports,"ToggleGroupItem",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.d}});Object.defineProperty(exports,"toggleVariants",{enumerable:true,get:function(){return chunkSZ34F6OZ_cjs.a}});Object.defineProperty(exports,"Features",{enumerable:true,get:function(){return chunkJ4VRJVTO_cjs.a}});Object.defineProperty(exports,"ResizableHandle",{enumerable:true,get:function(){return chunk27UORO2F_cjs.c}});Object.defineProperty(exports,"ResizablePanel",{enumerable:true,get:function(){return chunk27UORO2F_cjs.b}});Object.defineProperty(exports,"ResizablePanelGroup",{enumerable:true,get:function(){return chunk27UORO2F_cjs.a}});Object.defineProperty(exports,"ScrollArea",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.a}});Object.defineProperty(exports,"ScrollBar",{enumerable:true,get:function(){return chunkCGBIJDZX_cjs.b}});Object.defineProperty(exports,"Select",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.d}});Object.defineProperty(exports,"SelectContent",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.h}});Object.defineProperty(exports,"SelectGroup",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.e}});Object.defineProperty(exports,"SelectItem",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.j}});Object.defineProperty(exports,"SelectLabel",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.i}});Object.defineProperty(exports,"SelectSeparator",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.k}});Object.defineProperty(exports,"SelectTrigger",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.g}});Object.defineProperty(exports,"SelectValue",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.f}});Object.defineProperty(exports,"selectContentVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.b}});Object.defineProperty(exports,"selectItemVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.c}});Object.defineProperty(exports,"selectTriggerVariants",{enumerable:true,get:function(){return chunkK2JCGDU7_cjs.a}});Object.defineProperty(exports,"MOBILE_BREAKPOINT",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.a}});Object.defineProperty(exports,"Sidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.e}});Object.defineProperty(exports,"SidebarContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.m}});Object.defineProperty(exports,"SidebarFooter",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.k}});Object.defineProperty(exports,"SidebarGroup",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.n}});Object.defineProperty(exports,"SidebarGroupAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.p}});Object.defineProperty(exports,"SidebarGroupContent",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.q}});Object.defineProperty(exports,"SidebarGroupLabel",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.o}});Object.defineProperty(exports,"SidebarHeader",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.j}});Object.defineProperty(exports,"SidebarInput",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.i}});Object.defineProperty(exports,"SidebarInset",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.h}});Object.defineProperty(exports,"SidebarMenu",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.r}});Object.defineProperty(exports,"SidebarMenuAction",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.v}});Object.defineProperty(exports,"SidebarMenuBadge",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.w}});Object.defineProperty(exports,"SidebarMenuButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.u}});Object.defineProperty(exports,"SidebarMenuItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.s}});Object.defineProperty(exports,"SidebarMenuSkeleton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.x}});Object.defineProperty(exports,"SidebarMenuSub",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.y}});Object.defineProperty(exports,"SidebarMenuSubButton",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.A}});Object.defineProperty(exports,"SidebarMenuSubItem",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.z}});Object.defineProperty(exports,"SidebarProvider",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.d}});Object.defineProperty(exports,"SidebarRail",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.g}});Object.defineProperty(exports,"SidebarSeparator",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.l}});Object.defineProperty(exports,"SidebarTrigger",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.f}});Object.defineProperty(exports,"sidebarMenuButtonVariants",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.t}});Object.defineProperty(exports,"useIsMobile",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.b}});Object.defineProperty(exports,"useSidebar",{enumerable:true,get:function(){return chunkERGAJKFH_cjs.c}});Object.defineProperty(exports,"Tooltip",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.f}});Object.defineProperty(exports,"TooltipContent",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.d}});Object.defineProperty(exports,"TooltipProvider",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.e}});Object.defineProperty(exports,"TooltipTrigger",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.c}});Object.defineProperty(exports,"arrowVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.b}});Object.defineProperty(exports,"tooltipVariants",{enumerable:true,get:function(){return chunkZ7WEJ5IQ_cjs.a}});Object.defineProperty(exports,"Separator",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.b}});Object.defineProperty(exports,"separatorVariants",{enumerable:true,get:function(){return chunkC7HZAQBX_cjs.a}});Object.defineProperty(exports,"Sheet",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.b}});Object.defineProperty(exports,"SheetClose",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.d}});Object.defineProperty(exports,"SheetContent",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.g}});Object.defineProperty(exports,"SheetDescription",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.k}});Object.defineProperty(exports,"SheetFooter",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.i}});Object.defineProperty(exports,"SheetHeader",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.h}});Object.defineProperty(exports,"SheetOverlay",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.f}});Object.defineProperty(exports,"SheetPortal",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.e}});Object.defineProperty(exports,"SheetTitle",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.j}});Object.defineProperty(exports,"SheetTrigger",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.c}});Object.defineProperty(exports,"sheetVariants",{enumerable:true,get:function(){return chunkMQUHAWJ2_cjs.a}});Object.defineProperty(exports,"Slider",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.c}});Object.defineProperty(exports,"sliderThumbVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.b}});Object.defineProperty(exports,"sliderTrackVariants",{enumerable:true,get:function(){return chunkQEHKWS7N_cjs.a}});Object.defineProperty(exports,"Menubar",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.a}});Object.defineProperty(exports,"MenubarCheckboxItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.e}});Object.defineProperty(exports,"MenubarContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.c}});Object.defineProperty(exports,"MenubarGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.m}});Object.defineProperty(exports,"MenubarItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.d}});Object.defineProperty(exports,"MenubarLabel",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.g}});Object.defineProperty(exports,"MenubarMenu",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.l}});Object.defineProperty(exports,"MenubarRadioGroup",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.o}});Object.defineProperty(exports,"MenubarRadioItem",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.f}});Object.defineProperty(exports,"MenubarSeparator",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.h}});Object.defineProperty(exports,"MenubarShortcut",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.i}});Object.defineProperty(exports,"MenubarSub",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.n}});Object.defineProperty(exports,"MenubarSubContent",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.k}});Object.defineProperty(exports,"MenubarSubTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.j}});Object.defineProperty(exports,"MenubarTrigger",{enumerable:true,get:function(){return chunkFMIAI6US_cjs.b}});Object.defineProperty(exports,"NavigationMenu",{enumerable:true,get:function(){return chunk45W3AH36_cjs.a}});Object.defineProperty(exports,"NavigationMenuContent",{enumerable:true,get:function(){return chunk45W3AH36_cjs.f}});Object.defineProperty(exports,"NavigationMenuIndicator",{enumerable:true,get:function(){return chunk45W3AH36_cjs.i}});Object.defineProperty(exports,"NavigationMenuItem",{enumerable:true,get:function(){return chunk45W3AH36_cjs.c}});Object.defineProperty(exports,"NavigationMenuLink",{enumerable:true,get:function(){return chunk45W3AH36_cjs.g}});Object.defineProperty(exports,"NavigationMenuList",{enumerable:true,get:function(){return chunk45W3AH36_cjs.b}});Object.defineProperty(exports,"NavigationMenuTrigger",{enumerable:true,get:function(){return chunk45W3AH36_cjs.e}});Object.defineProperty(exports,"NavigationMenuViewport",{enumerable:true,get:function(){return chunk45W3AH36_cjs.h}});Object.defineProperty(exports,"navigationMenuTriggerStyle",{enumerable:true,get:function(){return chunk45W3AH36_cjs.d}});Object.defineProperty(exports,"Pagination",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.c}});Object.defineProperty(exports,"PaginationContent",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.d}});Object.defineProperty(exports,"PaginationEllipsis",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.i}});Object.defineProperty(exports,"PaginationItem",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.e}});Object.defineProperty(exports,"PaginationLink",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.f}});Object.defineProperty(exports,"PaginationNext",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.h}});Object.defineProperty(exports,"PaginationPrevious",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.g}});Object.defineProperty(exports,"paginationItemVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.b}});Object.defineProperty(exports,"paginationVariants",{enumerable:true,get:function(){return chunkBYV75TDY_cjs.a}});Object.defineProperty(exports,"Popover",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.b}});Object.defineProperty(exports,"PopoverAnchor",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.d}});Object.defineProperty(exports,"PopoverArrow",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.g}});Object.defineProperty(exports,"PopoverClose",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.e}});Object.defineProperty(exports,"PopoverContent",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.f}});Object.defineProperty(exports,"PopoverTrigger",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.c}});Object.defineProperty(exports,"popoverContentVariants",{enumerable:true,get:function(){return chunkE53C3RDD_cjs.a}});Object.defineProperty(exports,"CircularProgress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.e}});Object.defineProperty(exports,"Progress",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.d}});Object.defineProperty(exports,"progressBarVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.b}});Object.defineProperty(exports,"progressLabelVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.c}});Object.defineProperty(exports,"progressVariants",{enumerable:true,get:function(){return chunkG35BR7SK_cjs.a}});Object.defineProperty(exports,"RadioGroup",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.c}});Object.defineProperty(exports,"RadioGroupItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"RadioItem",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.d}});Object.defineProperty(exports,"radioGroupVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.a}});Object.defineProperty(exports,"radioItemVariants",{enumerable:true,get:function(){return chunkYLAUFUIS_cjs.b}});Object.defineProperty(exports,"DropdownMenu",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.a}});Object.defineProperty(exports,"DropdownMenuCheckboxItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.h}});Object.defineProperty(exports,"DropdownMenuContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.f}});Object.defineProperty(exports,"DropdownMenuGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.c}});Object.defineProperty(exports,"DropdownMenuItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.g}});Object.defineProperty(exports,"DropdownMenuLabel",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.j}});Object.defineProperty(exports,"DropdownMenuRadioGroup",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.e}});Object.defineProperty(exports,"DropdownMenuRadioItem",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.i}});Object.defineProperty(exports,"DropdownMenuSeparator",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.k}});Object.defineProperty(exports,"DropdownMenuShortcut",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.l}});Object.defineProperty(exports,"DropdownMenuSub",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.d}});Object.defineProperty(exports,"DropdownMenuSubContent",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.n}});Object.defineProperty(exports,"DropdownMenuSubTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.m}});Object.defineProperty(exports,"DropdownMenuTrigger",{enumerable:true,get:function(){return chunk4NLMGH2S_cjs.b}});Object.defineProperty(exports,"Label",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.b}});Object.defineProperty(exports,"labelVariants",{enumerable:true,get:function(){return chunkXPIBRXTW_cjs.a}});Object.defineProperty(exports,"ErrorMessage",{enumerable:true,get:function(){return chunkV77N662N_cjs.b}});Object.defineProperty(exports,"errorMessageVariants",{enumerable:true,get:function(){return chunkV77N662N_cjs.a}});Object.defineProperty(exports,"HelperText",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.b}});Object.defineProperty(exports,"helperTextVariants",{enumerable:true,get:function(){return chunk7YFUAGIW_cjs.a}});Object.defineProperty(exports,"HoverCard",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.a}});Object.defineProperty(exports,"HoverCardContent",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.c}});Object.defineProperty(exports,"HoverCardTrigger",{enumerable:true,get:function(){return chunkE3A4SP3X_cjs.b}});Object.defineProperty(exports,"Icon",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.a}});Object.defineProperty(exports,"iconNames",{enumerable:true,get:function(){return chunkNC27D5Y3_cjs.b}});Object.defineProperty(exports,"InputOTP",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.a}});Object.defineProperty(exports,"InputOTPGroup",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.b}});Object.defineProperty(exports,"InputOTPSeparator",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.d}});Object.defineProperty(exports,"InputOTPSlot",{enumerable:true,get:function(){return chunkBJPJB6IA_cjs.c}});Object.defineProperty(exports,"Chart",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.b}});Object.defineProperty(exports,"chartContainerVariants",{enumerable:true,get:function(){return chunkWK6LNC2E_cjs.a}});Object.defineProperty(exports,"Checkbox",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.b}});Object.defineProperty(exports,"checkboxVariants",{enumerable:true,get:function(){return chunkNPSIDFOF_cjs.a}});Object.defineProperty(exports,"Collapsible",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.a}});Object.defineProperty(exports,"CollapsibleContent",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.c}});Object.defineProperty(exports,"CollapsibleTrigger",{enumerable:true,get:function(){return chunkEEGXD4HC_cjs.b}});Object.defineProperty(exports,"Command",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.a}});Object.defineProperty(exports,"CommandDialog",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.b}});Object.defineProperty(exports,"CommandEmpty",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.e}});Object.defineProperty(exports,"CommandGroup",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.f}});Object.defineProperty(exports,"CommandInput",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.c}});Object.defineProperty(exports,"CommandItem",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.h}});Object.defineProperty(exports,"CommandList",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.d}});Object.defineProperty(exports,"CommandLoading",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.j}});Object.defineProperty(exports,"CommandSeparator",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.g}});Object.defineProperty(exports,"CommandShortcut",{enumerable:true,get:function(){return chunkDB6MHAU3_cjs.i}});Object.defineProperty(exports,"ContextMenu",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.a}});Object.defineProperty(exports,"ContextMenuCheckboxItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.h}});Object.defineProperty(exports,"ContextMenuContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.f}});Object.defineProperty(exports,"ContextMenuGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.c}});Object.defineProperty(exports,"ContextMenuItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.g}});Object.defineProperty(exports,"ContextMenuLabel",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.j}});Object.defineProperty(exports,"ContextMenuRadioGroup",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.e}});Object.defineProperty(exports,"ContextMenuRadioItem",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.i}});Object.defineProperty(exports,"ContextMenuSeparator",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.k}});Object.defineProperty(exports,"ContextMenuShortcut",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.l}});Object.defineProperty(exports,"ContextMenuSub",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.d}});Object.defineProperty(exports,"ContextMenuSubContent",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.n}});Object.defineProperty(exports,"ContextMenuSubTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.m}});Object.defineProperty(exports,"ContextMenuTrigger",{enumerable:true,get:function(){return chunkKCS3UL74_cjs.b}});Object.defineProperty(exports,"DataTable",{enumerable:true,get:function(){return chunkAYEM2M4H_cjs.a}});Object.defineProperty(exports,"Table",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.d}});Object.defineProperty(exports,"TableBody",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.f}});Object.defineProperty(exports,"TableCell",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.h}});Object.defineProperty(exports,"TableHead",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.i}});Object.defineProperty(exports,"TableHeader",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.e}});Object.defineProperty(exports,"TableRow",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.g}});Object.defineProperty(exports,"tableCellVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.c}});Object.defineProperty(exports,"tableHeaderVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.b}});Object.defineProperty(exports,"tableVariants",{enumerable:true,get:function(){return chunkVNDL67OG_cjs.a}});Object.defineProperty(exports,"Input",{enumerable:true,get:function(){return chunkFUENXWR7_cjs.b}});Object.defineProperty(exports,"Dialog",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.c}});Object.defineProperty(exports,"DialogContent",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.e}});Object.defineProperty(exports,"DialogDescription",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.h}});Object.defineProperty(exports,"DialogHeader",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.f}});Object.defineProperty(exports,"DialogTitle",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.g}});Object.defineProperty(exports,"DialogTrigger",{enumerable:true,get:function(){return chunkRKSTEJKG_cjs.d}});Object.defineProperty(exports,"Drawer",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.a}});Object.defineProperty(exports,"DrawerClose",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.d}});Object.defineProperty(exports,"DrawerContent",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.g}});Object.defineProperty(exports,"DrawerDescription",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.k}});Object.defineProperty(exports,"DrawerFooter",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.i}});Object.defineProperty(exports,"DrawerHandle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.e}});Object.defineProperty(exports,"DrawerHeader",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.h}});Object.defineProperty(exports,"DrawerNested",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.l}});Object.defineProperty(exports,"DrawerOverlay",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.f}});Object.defineProperty(exports,"DrawerPortal",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.c}});Object.defineProperty(exports,"DrawerTitle",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.j}});Object.defineProperty(exports,"DrawerTrigger",{enumerable:true,get:function(){return chunk75OZKMEA_cjs.b}});Object.defineProperty(exports,"Badge",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.b}});Object.defineProperty(exports,"badgeVariants",{enumerable:true,get:function(){return chunkEFCNLYYW_cjs.a}});Object.defineProperty(exports,"Breadcrumb",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.d}});Object.defineProperty(exports,"BreadcrumbEllipsis",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.j}});Object.defineProperty(exports,"BreadcrumbItem",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.f}});Object.defineProperty(exports,"BreadcrumbLink",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.g}});Object.defineProperty(exports,"BreadcrumbList",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.e}});Object.defineProperty(exports,"BreadcrumbPage",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.h}});Object.defineProperty(exports,"BreadcrumbSeparator",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.i}});Object.defineProperty(exports,"breadcrumbItemVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.b}});Object.defineProperty(exports,"breadcrumbSeparatorVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.c}});Object.defineProperty(exports,"breadcrumbVariants",{enumerable:true,get:function(){return chunk35RWQSO2_cjs.a}});Object.defineProperty(exports,"Calendar",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.c}});Object.defineProperty(exports,"calendarDayVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.b}});Object.defineProperty(exports,"calendarVariants",{enumerable:true,get:function(){return chunkJCETHQ55_cjs.a}});Object.defineProperty(exports,"Card",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.g}});Object.defineProperty(exports,"CardContent",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.e}});Object.defineProperty(exports,"CardDescription",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.d}});Object.defineProperty(exports,"CardFooter",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.f}});Object.defineProperty(exports,"CardHeader",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.b}});Object.defineProperty(exports,"CardTitle",{enumerable:true,get:function(){return chunkPMNNV4ML_cjs.c}});Object.defineProperty(exports,"Carousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.b}});Object.defineProperty(exports,"CarouselContent",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.c}});Object.defineProperty(exports,"CarouselItem",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.d}});Object.defineProperty(exports,"CarouselNext",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.f}});Object.defineProperty(exports,"CarouselPrevious",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.e}});Object.defineProperty(exports,"useCarousel",{enumerable:true,get:function(){return chunkBDRP7ALG_cjs.a}});Object.defineProperty(exports,"ChartArea",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.l}});Object.defineProperty(exports,"ChartBar",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.j}});Object.defineProperty(exports,"ChartContainer",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.d}});Object.defineProperty(exports,"ChartGrid",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.e}});Object.defineProperty(exports,"ChartLegend",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.i}});Object.defineProperty(exports,"ChartLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.k}});Object.defineProperty(exports,"ChartReferenceLine",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.m}});Object.defineProperty(exports,"ChartTooltip",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.h}});Object.defineProperty(exports,"ChartXAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.f}});Object.defineProperty(exports,"ChartYAxis",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.g}});Object.defineProperty(exports,"buildColorMap",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.b}});Object.defineProperty(exports,"chartPalette",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.a}});Object.defineProperty(exports,"resolveSeriesColor",{enumerable:true,get:function(){return chunk3HKYX26O_cjs.c}});Object.defineProperty(exports,"LazyChart",{enumerable:true,get:function(){return chunkBZ5ZCZJX_cjs.a}});Object.defineProperty(exports,"Skeleton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.b}});Object.defineProperty(exports,"SkeletonAvatar",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.d}});Object.defineProperty(exports,"SkeletonButton",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.e}});Object.defineProperty(exports,"SkeletonCard",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.f}});Object.defineProperty(exports,"SkeletonList",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.h}});Object.defineProperty(exports,"SkeletonTable",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.g}});Object.defineProperty(exports,"SkeletonText",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.c}});Object.defineProperty(exports,"skeletonVariants",{enumerable:true,get:function(){return chunk3QVQ2TNE_cjs.a}});Object.defineProperty(exports,"LazyComponent",{enumerable:true,get:function(){return chunk55N2IT62_cjs.a}});Object.defineProperty(exports,"LazyInView",{enumerable:true,get:function(){return chunk55N2IT62_cjs.d}});Object.defineProperty(exports,"useLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.c}});Object.defineProperty(exports,"withLazyLoading",{enumerable:true,get:function(){return chunk55N2IT62_cjs.b}});Object.defineProperty(exports,"ErrorBoundary",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.a}});Object.defineProperty(exports,"useErrorHandler",{enumerable:true,get:function(){return chunk4FSJEW7W_cjs.b}});Object.defineProperty(exports,"performanceUtils",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.d}});Object.defineProperty(exports,"useMemoryMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.c}});Object.defineProperty(exports,"usePerformanceMonitor",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.a}});Object.defineProperty(exports,"withPerformanceMonitoring",{enumerable:true,get:function(){return chunk7WEIVLG3_cjs.b}});Object.defineProperty(exports,"Accordion",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.f}});Object.defineProperty(exports,"AccordionContent",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.i}});Object.defineProperty(exports,"AccordionItem",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.g}});Object.defineProperty(exports,"AccordionTrigger",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.h}});Object.defineProperty(exports,"accordionChevronVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.e}});Object.defineProperty(exports,"accordionContentVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.d}});Object.defineProperty(exports,"accordionItemVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.b}});Object.defineProperty(exports,"accordionTriggerVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.c}});Object.defineProperty(exports,"accordionVariants",{enumerable:true,get:function(){return chunkMLSE5XSB_cjs.a}});Object.defineProperty(exports,"AlertDialog",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.a}});Object.defineProperty(exports,"AlertDialogAction",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.j}});Object.defineProperty(exports,"AlertDialogCancel",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.k}});Object.defineProperty(exports,"AlertDialogContent",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.e}});Object.defineProperty(exports,"AlertDialogDescription",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.i}});Object.defineProperty(exports,"AlertDialogFooter",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.g}});Object.defineProperty(exports,"AlertDialogHeader",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.f}});Object.defineProperty(exports,"AlertDialogOverlay",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.d}});Object.defineProperty(exports,"AlertDialogPortal",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.c}});Object.defineProperty(exports,"AlertDialogTitle",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.h}});Object.defineProperty(exports,"AlertDialogTrigger",{enumerable:true,get:function(){return chunkPZLBMQGI_cjs.b}});Object.defineProperty(exports,"Button",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.b}});Object.defineProperty(exports,"buttonVariants",{enumerable:true,get:function(){return chunk5PVFLXPO_cjs.a}});Object.defineProperty(exports,"Alert",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.g}});Object.defineProperty(exports,"AlertDescription",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.f}});Object.defineProperty(exports,"AlertTitle",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.e}});Object.defineProperty(exports,"alertCloseVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.d}});Object.defineProperty(exports,"alertDescriptionVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.c}});Object.defineProperty(exports,"alertTitleVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.b}});Object.defineProperty(exports,"alertVariants",{enumerable:true,get:function(){return chunkLXQT7FH6_cjs.a}});Object.defineProperty(exports,"AspectRatio",{enumerable:true,get:function(){return chunkR4L5BZYI_cjs.a}});Object.defineProperty(exports,"Avatar",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.d}});Object.defineProperty(exports,"AvatarFallback",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.c}});Object.defineProperty(exports,"AvatarImage",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.b}});Object.defineProperty(exports,"avatarVariants",{enumerable:true,get:function(){return chunkIOX4WPJL_cjs.a}});Object.defineProperty(exports,"cn",{enumerable:true,get:function(){return chunkITRGJNWL_cjs.a}});exports.applyTheme=ra;exports.getColorScheme=ea;exports.getCurrentTheme=ta;exports.initializeTheme=fa;exports.onSystemColorSchemeChange=ga;exports.prefersDarkMode=aa;exports.setDarkMode=na;exports.themeInfo=Ia;exports.themes=ua;exports.toggleDarkMode=pa;//# sourceMappingURL=index.cjs.map
3
3
  //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -25,7 +25,7 @@ export { Calendar, CalendarMode, CalendarProps, calendarDayVariants, calendarVar
25
25
  export { Chart, ChartDataPoint, ChartProps, ChartType, chartContainerVariants } from './components/core/charts.cjs';
26
26
  export { ChartArea, ChartAreaProps, ChartBar, ChartBarProps, ChartContainer, ChartContainerProps, ChartGrid, ChartGridProps, ChartLegend, ChartLegendProps, ChartLine, ChartLineProps, ChartReferenceLine, ChartReferenceLineProps, ChartTooltip, ChartTooltipProps, ChartXAxis, ChartXAxisProps, ChartYAxis, ChartYAxisProps, buildColorMap, chartPalette, resolveSeriesColor } from './components/core/chart-composable.cjs';
27
27
  export { LazyChart, LazyChartProps } from './components/core/charts-lazy.cjs';
28
- export { Toast, ToastContextType, ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification } from './components/core/toast.cjs';
28
+ export { Toast, ToastContextType, ToastPosition, ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification } from './components/core/toast.cjs';
29
29
  export { Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipTrigger, TooltipTriggerProps, arrowVariants, tooltipVariants } from './components/core/tooltip.cjs';
30
30
  export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, AccordionTriggerProps, accordionChevronVariants, accordionContentVariants, accordionItemVariants, accordionTriggerVariants, accordionVariants } from './components/core/accordion.cjs';
31
31
  export { Skeleton, SkeletonAvatar, SkeletonAvatarProps, SkeletonButton, SkeletonButtonProps, SkeletonCard, SkeletonCardProps, SkeletonList, SkeletonProps, SkeletonTable, SkeletonText, SkeletonTextProps, skeletonVariants } from './components/core/skeleton.cjs';
package/dist/index.d.ts CHANGED
@@ -25,7 +25,7 @@ export { Calendar, CalendarMode, CalendarProps, calendarDayVariants, calendarVar
25
25
  export { Chart, ChartDataPoint, ChartProps, ChartType, chartContainerVariants } from './components/core/charts.js';
26
26
  export { ChartArea, ChartAreaProps, ChartBar, ChartBarProps, ChartContainer, ChartContainerProps, ChartGrid, ChartGridProps, ChartLegend, ChartLegendProps, ChartLine, ChartLineProps, ChartReferenceLine, ChartReferenceLineProps, ChartTooltip, ChartTooltipProps, ChartXAxis, ChartXAxisProps, ChartYAxis, ChartYAxisProps, buildColorMap, chartPalette, resolveSeriesColor } from './components/core/chart-composable.js';
27
27
  export { LazyChart, LazyChartProps } from './components/core/charts-lazy.js';
28
- export { Toast, ToastContextType, ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification } from './components/core/toast.js';
28
+ export { Toast, ToastContextType, ToastPosition, ToastProps, ToastProvider, toastIconVariants, toastVariants, useToast, useToastNotification } from './components/core/toast.js';
29
29
  export { Tooltip, TooltipContent, TooltipContentProps, TooltipProps, TooltipProvider, TooltipProviderProps, TooltipTrigger, TooltipTriggerProps, arrowVariants, tooltipVariants } from './components/core/tooltip.js';
30
30
  export { Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps, AccordionProps, AccordionTrigger, AccordionTriggerProps, accordionChevronVariants, accordionContentVariants, accordionItemVariants, accordionTriggerVariants, accordionVariants } from './components/core/accordion.js';
31
31
  export { Skeleton, SkeletonAvatar, SkeletonAvatarProps, SkeletonButton, SkeletonButtonProps, SkeletonCard, SkeletonCardProps, SkeletonList, SkeletonProps, SkeletonTable, SkeletonText, SkeletonTextProps, skeletonVariants } from './components/core/skeleton.js';
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- export{a as Gallery}from'./chunk-2JQROMCM.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-44HISN45.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-WO3KCAN6.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-XJJJEWSU.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-UIEGBT4T.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-35I2BJC3.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-NM5NVIAK.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-CT6LEOBW.js';export{b as Button,a as buttonVariants}from'./chunk-AVTJE2O2.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
2
+ export{a as Gallery}from'./chunk-2JQROMCM.js';export{a as Hero}from'./chunk-JEHIMQQZ.js';export{a as LogoWall}from'./chunk-RC2THAIA.js';export{a as Pricing}from'./chunk-44HISN45.js';export{a as Testimonials}from'./chunk-LR4VUFOQ.js';export{c as Switch,b as switchThumbVariants,a as switchVariants}from'./chunk-OUWOPYAX.js';export{d as Tabs,g as TabsContent,e as TabsList,f as TabsTrigger,c as tabsContentVariants,a as tabsListVariants,b as tabsTriggerVariants}from'./chunk-ZEJAFIOC.js';export{b as Textarea,a as textareaVariants}from'./chunk-2HYJSYQX.js';export{e as Toast,d as ToastProvider,b as toastIconVariants,a as toastVariants,c as useToast,f as useToastNotification}from'./chunk-CH5LTBAG.js';export{b as Toggle,c as ToggleGroup,d as ToggleGroupItem,a as toggleVariants}from'./chunk-EZGTC7L3.js';export{a as Features}from'./chunk-CEMOHO3Z.js';export{c as ResizableHandle,b as ResizablePanel,a as ResizablePanelGroup}from'./chunk-MINSU2YF.js';export{a as ScrollArea,b as ScrollBar}from'./chunk-GCMMAUW3.js';export{d as Select,h as SelectContent,e as SelectGroup,j as SelectItem,i as SelectLabel,k as SelectSeparator,g as SelectTrigger,f as SelectValue,b as selectContentVariants,c as selectItemVariants,a as selectTriggerVariants}from'./chunk-BZF3ZOAN.js';export{a as MOBILE_BREAKPOINT,e as Sidebar,m as SidebarContent,k as SidebarFooter,n as SidebarGroup,p as SidebarGroupAction,q as SidebarGroupContent,o as SidebarGroupLabel,j as SidebarHeader,i as SidebarInput,h as SidebarInset,r as SidebarMenu,v as SidebarMenuAction,w as SidebarMenuBadge,u as SidebarMenuButton,s as SidebarMenuItem,x as SidebarMenuSkeleton,y as SidebarMenuSub,A as SidebarMenuSubButton,z as SidebarMenuSubItem,d as SidebarProvider,g as SidebarRail,l as SidebarSeparator,f as SidebarTrigger,t as sidebarMenuButtonVariants,b as useIsMobile,c as useSidebar}from'./chunk-QESG3HCL.js';export{f as Tooltip,d as TooltipContent,e as TooltipProvider,c as TooltipTrigger,b as arrowVariants,a as tooltipVariants}from'./chunk-TCA5Z7FL.js';export{b as Separator,a as separatorVariants}from'./chunk-XRVHMGMD.js';export{b as Sheet,d as SheetClose,g as SheetContent,k as SheetDescription,i as SheetFooter,h as SheetHeader,f as SheetOverlay,e as SheetPortal,j as SheetTitle,c as SheetTrigger,a as sheetVariants}from'./chunk-HCYZ3LZP.js';export{c as Slider,b as sliderThumbVariants,a as sliderTrackVariants}from'./chunk-VBGHESL2.js';export{a as Menubar,e as MenubarCheckboxItem,c as MenubarContent,m as MenubarGroup,d as MenubarItem,g as MenubarLabel,l as MenubarMenu,o as MenubarRadioGroup,f as MenubarRadioItem,h as MenubarSeparator,i as MenubarShortcut,n as MenubarSub,k as MenubarSubContent,j as MenubarSubTrigger,b as MenubarTrigger}from'./chunk-FTAB43WC.js';export{a as NavigationMenu,f as NavigationMenuContent,i as NavigationMenuIndicator,c as NavigationMenuItem,g as NavigationMenuLink,b as NavigationMenuList,e as NavigationMenuTrigger,h as NavigationMenuViewport,d as navigationMenuTriggerStyle}from'./chunk-BISYWH74.js';export{c as Pagination,d as PaginationContent,i as PaginationEllipsis,e as PaginationItem,f as PaginationLink,h as PaginationNext,g as PaginationPrevious,b as paginationItemVariants,a as paginationVariants}from'./chunk-Q6QMSAJR.js';export{b as Popover,d as PopoverAnchor,g as PopoverArrow,e as PopoverClose,f as PopoverContent,c as PopoverTrigger,a as popoverContentVariants}from'./chunk-3FY7LZ3B.js';export{e as CircularProgress,d as Progress,b as progressBarVariants,c as progressLabelVariants,a as progressVariants}from'./chunk-NLD4R74T.js';export{c as RadioGroup,d as RadioGroupItem,d as RadioItem,a as radioGroupVariants,b as radioItemVariants}from'./chunk-KR6IVHNR.js';export{a as DropdownMenu,h as DropdownMenuCheckboxItem,f as DropdownMenuContent,c as DropdownMenuGroup,g as DropdownMenuItem,j as DropdownMenuLabel,e as DropdownMenuRadioGroup,i as DropdownMenuRadioItem,k as DropdownMenuSeparator,l as DropdownMenuShortcut,d as DropdownMenuSub,n as DropdownMenuSubContent,m as DropdownMenuSubTrigger,b as DropdownMenuTrigger}from'./chunk-MM54MZBX.js';export{b as Label,a as labelVariants}from'./chunk-LYVCB45L.js';export{b as ErrorMessage,a as errorMessageVariants}from'./chunk-XQUZ7DUN.js';export{b as HelperText,a as helperTextVariants}from'./chunk-ABA7B5DE.js';export{a as HoverCard,c as HoverCardContent,b as HoverCardTrigger}from'./chunk-HEU5GFOV.js';export{a as Icon,b as iconNames}from'./chunk-BL2TM4YT.js';export{a as InputOTP,b as InputOTPGroup,d as InputOTPSeparator,c as InputOTPSlot}from'./chunk-K45ZUJ42.js';export{b as Chart,a as chartContainerVariants}from'./chunk-XLZJ6HBL.js';export{b as Checkbox,a as checkboxVariants}from'./chunk-DNTPD3PJ.js';export{a as Collapsible,c as CollapsibleContent,b as CollapsibleTrigger}from'./chunk-ESUSGG6O.js';export{a as Command,b as CommandDialog,e as CommandEmpty,f as CommandGroup,c as CommandInput,h as CommandItem,d as CommandList,j as CommandLoading,g as CommandSeparator,i as CommandShortcut}from'./chunk-PLEQSJHY.js';export{a as ContextMenu,h as ContextMenuCheckboxItem,f as ContextMenuContent,c as ContextMenuGroup,g as ContextMenuItem,j as ContextMenuLabel,e as ContextMenuRadioGroup,i as ContextMenuRadioItem,k as ContextMenuSeparator,l as ContextMenuShortcut,d as ContextMenuSub,n as ContextMenuSubContent,m as ContextMenuSubTrigger,b as ContextMenuTrigger}from'./chunk-AYKNZARS.js';import'./chunk-XYPJ2K22.js';export{a as DataTable}from'./chunk-XJJJEWSU.js';export{d as Table,f as TableBody,h as TableCell,i as TableHead,e as TableHeader,g as TableRow,c as tableCellVariants,b as tableHeaderVariants,a as tableVariants}from'./chunk-UIEGBT4T.js';export{b as Input}from'./chunk-HD3TMQPR.js';export{c as Dialog,e as DialogContent,h as DialogDescription,f as DialogHeader,g as DialogTitle,d as DialogTrigger}from'./chunk-5N5KJBMP.js';export{a as Drawer,d as DrawerClose,g as DrawerContent,k as DrawerDescription,i as DrawerFooter,e as DrawerHandle,h as DrawerHeader,l as DrawerNested,f as DrawerOverlay,c as DrawerPortal,j as DrawerTitle,b as DrawerTrigger}from'./chunk-QQTI6OI3.js';export{b as Badge,a as badgeVariants}from'./chunk-UL6MF7ES.js';export{d as Breadcrumb,j as BreadcrumbEllipsis,f as BreadcrumbItem,g as BreadcrumbLink,e as BreadcrumbList,h as BreadcrumbPage,i as BreadcrumbSeparator,b as breadcrumbItemVariants,c as breadcrumbSeparatorVariants,a as breadcrumbVariants}from'./chunk-SVWQWRPZ.js';export{c as Calendar,b as calendarDayVariants,a as calendarVariants}from'./chunk-35I2BJC3.js';export{g as Card,e as CardContent,d as CardDescription,f as CardFooter,b as CardHeader,c as CardTitle}from'./chunk-VD6S2PE4.js';export{b as Carousel,c as CarouselContent,d as CarouselItem,f as CarouselNext,e as CarouselPrevious,a as useCarousel}from'./chunk-NM5NVIAK.js';export{l as ChartArea,j as ChartBar,d as ChartContainer,e as ChartGrid,i as ChartLegend,k as ChartLine,m as ChartReferenceLine,h as ChartTooltip,f as ChartXAxis,g as ChartYAxis,b as buildColorMap,a as chartPalette,c as resolveSeriesColor}from'./chunk-CCNO2VWE.js';export{a as LazyChart}from'./chunk-HRJXPCGF.js';export{b as Skeleton,d as SkeletonAvatar,e as SkeletonButton,f as SkeletonCard,h as SkeletonList,g as SkeletonTable,c as SkeletonText,a as skeletonVariants}from'./chunk-QKM5LPRW.js';export{a as LazyComponent,d as LazyInView,c as useLazyLoading,b as withLazyLoading}from'./chunk-QBAURT3I.js';export{a as ErrorBoundary,b as useErrorHandler}from'./chunk-MVCGR7JQ.js';export{d as performanceUtils,c as useMemoryMonitor,a as usePerformanceMonitor,b as withPerformanceMonitoring}from'./chunk-3BNGK67W.js';export{f as Accordion,i as AccordionContent,g as AccordionItem,h as AccordionTrigger,e as accordionChevronVariants,d as accordionContentVariants,b as accordionItemVariants,c as accordionTriggerVariants,a as accordionVariants}from'./chunk-6QAYHUNV.js';export{a as AlertDialog,j as AlertDialogAction,k as AlertDialogCancel,e as AlertDialogContent,i as AlertDialogDescription,g as AlertDialogFooter,f as AlertDialogHeader,d as AlertDialogOverlay,c as AlertDialogPortal,h as AlertDialogTitle,b as AlertDialogTrigger}from'./chunk-CT6LEOBW.js';export{b as Button,a as buttonVariants}from'./chunk-AVTJE2O2.js';export{g as Alert,f as AlertDescription,e as AlertTitle,d as alertCloseVariants,c as alertDescriptionVariants,b as alertTitleVariants,a as alertVariants}from'./chunk-AHRTNKXE.js';export{a as AspectRatio}from'./chunk-YCVOS3MT.js';export{d as Avatar,c as AvatarFallback,b as AvatarImage,a as avatarVariants}from'./chunk-YNSODGYK.js';import'./chunk-COXN6XBA.js';export{a as cn}from'./chunk-AC2JBXHQ.js';var ua={nostromo:"nostromo",mother:"mother","lv-426":"lv-426",sulaco:"sulaco"};function ra(o){typeof document<"u"&&document.documentElement.setAttribute("data-theme",o);}function ta(){return typeof document>"u"?null:document.documentElement.getAttribute("data-theme")}function pa(){if(typeof document>"u")return;let r=document.documentElement.getAttribute("data-color-scheme")==="dark"?"light":"dark";document.documentElement.setAttribute("data-color-scheme",r);}function na(o){typeof document>"u"||document.documentElement.setAttribute("data-color-scheme",o?"dark":"light");}function ea(){return typeof document>"u"?null:document.documentElement.getAttribute("data-color-scheme")}function aa(){return typeof window>"u"?false:window.matchMedia("(prefers-color-scheme: dark)").matches}function ga(o){if(typeof window>"u")return ()=>{};let r=window.matchMedia("(prefers-color-scheme: dark)"),t=e=>{o(e.matches);};return r.addEventListener("change",t),()=>{r.removeEventListener("change",t);}}function fa(o="nostromo"){typeof document>"u"||(ta()||ra(o),ea()||na(aa()));}var Ia={nostromo:{name:"Nostromo",description:"Classic space industrial theme inspired by the USCSS Nostromo",colors:{primary:"Purple/Blue",secondary:"Dark Gray",accent:"Green"}},mother:{name:"Mother",description:"Cold, clinical AI aesthetic inspired by the ship's computer",colors:{primary:"Cold Blue/Cyan",secondary:"Clinical White",accent:"Green"}},"lv-426":{name:"LV-426",description:"Warm, rusty atmosphere inspired by the planet LV-426",colors:{primary:"Warm Orange/Rust",secondary:"Earth Tones",accent:"Green"}},sulaco:{name:"Sulaco",description:"Modern, military-inspired aesthetic from the USS Sulaco",colors:{primary:"Military Blue/Gray",secondary:"Steel Tones",accent:"Green"}}};export{ra as applyTheme,ea as getColorScheme,ta as getCurrentTheme,fa as initializeTheme,ga as onSystemColorSchemeChange,aa as prefersDarkMode,na as setDarkMode,Ia as themeInfo,ua as themes,pa as toggleDarkMode};//# sourceMappingURL=index.js.map
3
3
  //# sourceMappingURL=index.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jarllyng/nostromo",
3
- "version": "3.12.1",
3
+ "version": "3.13.0",
4
4
  "description": "Accessible React component library with CSS-first Tailwind v4 theming",
5
5
  "keywords": [
6
6
  "react",
@@ -683,9 +683,9 @@
683
683
  "cmdk": "^1.1.1",
684
684
  "date-fns": "^4.4.0",
685
685
  "embla-carousel-react": "^8.6.0",
686
- "input-otp": "^1.4.2",
686
+ "input-otp": "^1.5.0",
687
687
  "phosphor-react": "^1.4.1",
688
- "react-resizable-panels": "^4.12.3",
688
+ "react-resizable-panels": "^4.12.4",
689
689
  "recharts": "^3.10.1",
690
690
  "tailwind-merge": "^3.6.0",
691
691
  "vaul": "^1.1.2"
@@ -1,3 +0,0 @@
1
- "use client";
2
- 'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),t=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var t__default=/*#__PURE__*/_interopDefault(t);var E=classVarianceAuthority.cva("relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50","top-right":"fixed top-4 right-4 z-50","bottom-left":"fixed bottom-4 left-4 z-50","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50","bottom-right":"fixed bottom-4 right-4 z-50"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),m=classVarianceAuthority.cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),M=t__default.default.createContext(void 0),I=()=>{let i=t__default.default.useContext(M);if(!i)throw new Error("useToast must be used within a ToastProvider");return i},X=({children:i})=>{let[d,r]=t.useState([]),o=t.useRef(new Map),e=t.useCallback(s=>{let a=o.current.get(s);a&&(clearTimeout(a),o.current.delete(s)),r(f=>f.filter(l=>l.id!==s));},[]),n=t.useRef(e);t.useEffect(()=>{n.current=e;},[e]);let u=t.useCallback(s=>{let a=Math.random().toString(36).substr(2,9),f={...s,id:a};if(r(l=>[...l,f]),s.duration!==0){let l=setTimeout(()=>{n.current(a),o.current.delete(a);},s.duration||5e3);o.current.set(a,l);}return a},[]),c=t.useCallback(()=>{o.current.forEach(s=>clearTimeout(s)),o.current.clear(),r([]);},[]);return t.useEffect(()=>{let s=o.current;return ()=>{s.forEach(a=>clearTimeout(a)),s.clear();}},[]),t__default.default.createElement(M.Provider,{value:{toasts:d,addToast:u,removeToast:e,clearToasts:c}},i,t__default.default.createElement(H,{toasts:d}))},H=({toasts:i})=>{if(i.length===0)return null;let d=i.reduce((r,o)=>{let e=o.position||"top-right";return r[e]||(r[e]=[]),r[e].push(o),r},{});return t__default.default.createElement("div",{className:"fixed inset-0 z-50 pointer-events-none"},Object.entries(d).map(([r,o])=>t__default.default.createElement("div",{key:r,className:"pointer-events-none"},o.map((e,n)=>{let{style:u,...c}=e;return t__default.default.createElement(S,{key:e.id,...c,style:{...u,transform:`translateY(${n*8}px) ${u?.transform||""}`,marginBottom:n<o.length-1?"8px":"0"}})}))))},V=t__default.default.forwardRef(({id:i,title:d,description:r,variant:o="default",position:e="top-right",animation:n="default",duration:u=5e3,onClose:c,action:s,className:a,children:f,appearDelay:l=10,animationMs:g=150,...x},k)=>{let[C,y]=t.useState(l<=0),[T,O]=t.useState(false);t.useEffect(()=>{if(l<=0)return;let w=window.setTimeout(()=>y(true),l);return ()=>clearTimeout(w)},[l]);let h=t.useCallback(()=>{O(true),window.setTimeout(()=>{c?.(),y(false);},g);},[c,g]);t.useEffect(()=>{if(u>0){let w=window.setTimeout(h,u);return ()=>clearTimeout(w)}},[u,h]);let B=()=>{switch(o){case "success":return t__default.default.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t__default.default.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t__default.default.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t__default.default.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};return C?t__default.default.createElement("div",{ref:k,className:chunkITRGJNWL_cjs.a(E({variant:o,position:e,animation:n}),T?"opacity-0":"opacity-100","pointer-events-auto",a),"data-visible":C?"true":"false","data-leaving":T?"true":"false",style:{transition:`all ${g}ms ease-in-out`,transform:T?"translateX(100%)":x.style?.transform||"translateX(0)",...x.style},...x},t__default.default.createElement("div",{className:"flex items-start space-x-3"},B(),t__default.default.createElement("div",{className:"flex-1 min-w-0"},d&&t__default.default.createElement("div",{className:"text-sm font-medium"},d),r&&t__default.default.createElement("div",{className:"mt-1 text-sm opacity-90"},r),f)),s&&t__default.default.createElement("button",{type:"button",onClick:s.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring"},s.label),t__default.default.createElement("button",{type:"button",onClick:h,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring","aria-label":"Close notification"},t__default.default.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t__default.default.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})))):null});V.displayName="Toast";var S=chunk7SPPGTBT_cjs.a(V),A=()=>{let{addToast:i,removeToast:d,clearToasts:r}=I();return {success:(e,n)=>i({variant:"success",title:"Success",description:e,...n}),error:(e,n)=>i({variant:"error",title:"Error",description:e,...n}),warning:(e,n)=>i({variant:"warning",title:"Warning",description:e,...n}),info:(e,n)=>i({variant:"info",title:"Info",description:e,...n}),custom:e=>i(e),dismiss:d,clear:r}};exports.a=E;exports.b=m;exports.c=I;exports.d=X;exports.e=S;exports.f=A;//# sourceMappingURL=chunk-5Z3MYAVM.cjs.map
3
- //# sourceMappingURL=chunk-5Z3MYAVM.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","useToast","context","ToastProvider","children","toasts","setToasts","useState","timeoutRefs","useRef","removeToast","useCallback","id","timeoutId","prev","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","toastsByPosition","acc","position","positionToasts","index","toastStyle","toastProps","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","handleClose","getIcon","cn","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-5Z3MYAVM.cjs","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50\",\n \"top-center\": \"fixed top-4 left-1/2 -translate-x-1/2 z-50\",\n \"top-right\": \"fixed top-4 right-4 z-50\",\n \"bottom-left\": \"fixed bottom-4 left-4 z-50\",\n \"bottom-center\": \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50\",\n \"bottom-right\": \"fixed bottom-4 right-4 z-50\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const removeToast = useCallback((id: string) => {\n // Clear timeout if it exists\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = Math.random().toString(36).substr(2, 9);\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // Auto remove toast after duration\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n timeoutRefs.current.delete(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n // Clear all timeouts\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n setToasts([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer toasts={toasts} />\n </ToastContext.Provider>\n );\n};\n\n// Toast Container\nconst ToastContainer: React.FC<{ toasts: ToastProps[] }> = ({ toasts }) => {\n if (toasts.length === 0) return null;\n\n // Group toasts by position for stacking\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = toast.position || \"top-right\";\n if (!acc[position]) {\n acc[position] = [];\n }\n acc[position].push(toast);\n return acc;\n },\n {} as Record<string, ToastProps[]>,\n );\n\n return (\n <div className=\"fixed inset-0 z-50 pointer-events-none\">\n {Object.entries(toastsByPosition).map(([position, positionToasts]) => (\n <div key={position} className=\"pointer-events-none\">\n {positionToasts.map((toast, index) => {\n const { style: toastStyle, ...toastProps } = toast;\n return (\n <Toast\n key={toast.id}\n {...toastProps}\n style={{\n ...toastStyle,\n // Stack toasts with offset\n transform: `translateY(${index * 8}px) ${toastStyle?.transform || \"\"}`,\n marginBottom: index < positionToasts.length - 1 ? \"8px\" : \"0\",\n }}\n />\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n ...props\n },\n ref,\n ) => {\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n const handleClose = useCallback(() => {\n setIsLeaving(true);\n window.setTimeout(() => {\n onClose?.();\n setIsVisible(false);\n }, animationMs);\n }, [onClose, animationMs]);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ variant, position, animation }),\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n transform: isLeaving\n ? \"translateX(100%)\"\n : props.style?.transform || \"translateX(0)\",\n ...props.style,\n }}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}
@@ -1,3 +0,0 @@
1
- "use client";
2
- import {a as a$1}from'./chunk-COXN6XBA.js';import {a}from'./chunk-AC2JBXHQ.js';import t,{useState,useEffect,useCallback,useRef}from'react';import {cva}from'class-variance-authority';var E=cva("relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300",{variants:{variant:{default:"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl",success:"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl",error:"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl",warning:"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl",info:"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl"},position:{"top-left":"fixed top-4 left-4 z-50","top-center":"fixed top-4 left-1/2 -translate-x-1/2 z-50","top-right":"fixed top-4 right-4 z-50","bottom-left":"fixed bottom-4 left-4 z-50","bottom-center":"fixed bottom-4 left-1/2 -translate-x-1/2 z-50","bottom-right":"fixed bottom-4 right-4 z-50"},animation:{default:"animate-in slide-in-from-right-full duration-300",slide:"animate-in slide-in-from-bottom-4 duration-300",fade:"animate-in fade-in-0 duration-300",scale:"animate-in zoom-in-95 duration-300",none:""}},defaultVariants:{variant:"default",position:"top-right",animation:"default"}}),m=cva("flex-shrink-0 w-5 h-5 transition-colors duration-200",{variants:{variant:{default:"text-muted-foreground",success:"text-success-600",error:"text-destructive",warning:"text-warning-600",info:"text-info-600"}},defaultVariants:{variant:"default"}}),M=t.createContext(void 0),I=()=>{let i=t.useContext(M);if(!i)throw new Error("useToast must be used within a ToastProvider");return i},X=({children:i})=>{let[d,r]=useState([]),o=useRef(new Map),e=useCallback(s=>{let a=o.current.get(s);a&&(clearTimeout(a),o.current.delete(s)),r(f=>f.filter(l=>l.id!==s));},[]),n=useRef(e);useEffect(()=>{n.current=e;},[e]);let u=useCallback(s=>{let a=Math.random().toString(36).substr(2,9),f={...s,id:a};if(r(l=>[...l,f]),s.duration!==0){let l=setTimeout(()=>{n.current(a),o.current.delete(a);},s.duration||5e3);o.current.set(a,l);}return a},[]),c=useCallback(()=>{o.current.forEach(s=>clearTimeout(s)),o.current.clear(),r([]);},[]);return useEffect(()=>{let s=o.current;return ()=>{s.forEach(a=>clearTimeout(a)),s.clear();}},[]),t.createElement(M.Provider,{value:{toasts:d,addToast:u,removeToast:e,clearToasts:c}},i,t.createElement(H,{toasts:d}))},H=({toasts:i})=>{if(i.length===0)return null;let d=i.reduce((r,o)=>{let e=o.position||"top-right";return r[e]||(r[e]=[]),r[e].push(o),r},{});return t.createElement("div",{className:"fixed inset-0 z-50 pointer-events-none"},Object.entries(d).map(([r,o])=>t.createElement("div",{key:r,className:"pointer-events-none"},o.map((e,n)=>{let{style:u,...c}=e;return t.createElement(S,{key:e.id,...c,style:{...u,transform:`translateY(${n*8}px) ${u?.transform||""}`,marginBottom:n<o.length-1?"8px":"0"}})}))))},V=t.forwardRef(({id:i,title:d,description:r,variant:o="default",position:e="top-right",animation:n="default",duration:u=5e3,onClose:c,action:s,className:a$1,children:f,appearDelay:l=10,animationMs:g=150,...x},k)=>{let[C,y]=useState(l<=0),[T,O]=useState(false);useEffect(()=>{if(l<=0)return;let w=window.setTimeout(()=>y(true),l);return ()=>clearTimeout(w)},[l]);let h=useCallback(()=>{O(true),window.setTimeout(()=>{c?.(),y(false);},g);},[c,g]);useEffect(()=>{if(u>0){let w=window.setTimeout(h,u);return ()=>clearTimeout(w)}},[u,h]);let B=()=>{switch(o){case "success":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",clipRule:"evenodd"}));case "error":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",clipRule:"evenodd"}));case "warning":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",clipRule:"evenodd"}));case "info":return t.createElement("svg",{className:m({variant:o}),fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z",clipRule:"evenodd"}));default:return null}};return C?t.createElement("div",{ref:k,className:a(E({variant:o,position:e,animation:n}),T?"opacity-0":"opacity-100","pointer-events-auto",a$1),"data-visible":C?"true":"false","data-leaving":T?"true":"false",style:{transition:`all ${g}ms ease-in-out`,transform:T?"translateX(100%)":x.style?.transform||"translateX(0)",...x.style},...x},t.createElement("div",{className:"flex items-start space-x-3"},B(),t.createElement("div",{className:"flex-1 min-w-0"},d&&t.createElement("div",{className:"text-sm font-medium"},d),r&&t.createElement("div",{className:"mt-1 text-sm opacity-90"},r),f)),s&&t.createElement("button",{type:"button",onClick:s.onClick,className:"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring"},s.label),t.createElement("button",{type:"button",onClick:h,className:"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring","aria-label":"Close notification"},t.createElement("svg",{className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20"},t.createElement("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})))):null});V.displayName="Toast";var S=a$1(V),A=()=>{let{addToast:i,removeToast:d,clearToasts:r}=I();return {success:(e,n)=>i({variant:"success",title:"Success",description:e,...n}),error:(e,n)=>i({variant:"error",title:"Error",description:e,...n}),warning:(e,n)=>i({variant:"warning",title:"Warning",description:e,...n}),info:(e,n)=>i({variant:"info",title:"Info",description:e,...n}),custom:e=>i(e),dismiss:d,clear:r}};export{E as a,m as b,I as c,X as d,S as e,A as f};//# sourceMappingURL=chunk-WO3KCAN6.js.map
3
- //# sourceMappingURL=chunk-WO3KCAN6.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/core/toast.tsx"],"names":["toastVariants","cva","toastIconVariants","ToastContext","React","useToast","context","ToastProvider","children","toasts","setToasts","useState","timeoutRefs","useRef","removeToast","useCallback","id","timeoutId","prev","toast","removeToastRef","useEffect","addToast","newToast","clearToasts","refs","ToastContainer","toastsByPosition","acc","position","positionToasts","index","toastStyle","toastProps","Toast","ToastComponent","_id","title","description","variant","animation","duration","onClose","action","className","appearDelay","animationMs","props","ref","isVisible","setIsVisible","isLeaving","setIsLeaving","timer","handleClose","getIcon","cn","memo","useToastNotification","message","options"],"mappings":"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","file":"chunk-WO3KCAN6.js","sourcesContent":["import React, { useState, useEffect, useCallback, useRef } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Toast variants\nconst toastVariants = cva(\n \"relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all duration-300\",\n {\n variants: {\n variant: {\n default:\n \"border-border bg-card text-card-foreground shadow-lg hover:shadow-xl\",\n success:\n \"border-success-200 bg-success-50 text-success-900 shadow-lg hover:shadow-xl\",\n error:\n \"border-destructive/20 bg-destructive/10 text-destructive shadow-lg hover:shadow-xl\",\n warning:\n \"border-warning-200 bg-warning-50 text-warning-900 shadow-lg hover:shadow-xl\",\n info: \"border-info-200 bg-info-50 text-info-900 shadow-lg hover:shadow-xl\",\n },\n position: {\n \"top-left\": \"fixed top-4 left-4 z-50\",\n \"top-center\": \"fixed top-4 left-1/2 -translate-x-1/2 z-50\",\n \"top-right\": \"fixed top-4 right-4 z-50\",\n \"bottom-left\": \"fixed bottom-4 left-4 z-50\",\n \"bottom-center\": \"fixed bottom-4 left-1/2 -translate-x-1/2 z-50\",\n \"bottom-right\": \"fixed bottom-4 right-4 z-50\",\n },\n animation: {\n default: \"animate-in slide-in-from-right-full duration-300\",\n slide: \"animate-in slide-in-from-bottom-4 duration-300\",\n fade: \"animate-in fade-in-0 duration-300\",\n scale: \"animate-in zoom-in-95 duration-300\",\n none: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n position: \"top-right\",\n animation: \"default\",\n },\n },\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 w-5 h-5 transition-colors duration-200\",\n {\n variants: {\n variant: {\n default: \"text-muted-foreground\",\n success: \"text-success-600\",\n error: \"text-destructive\",\n warning: \"text-warning-600\",\n info: \"text-info-600\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\n// Types\nexport interface ToastProps\n extends\n VariantProps<typeof toastVariants>,\n React.HTMLAttributes<HTMLDivElement> {\n id?: string;\n title?: string;\n description?: string;\n duration?: number;\n onClose?: () => void;\n action?: {\n label: string;\n onClick: () => void;\n };\n className?: string;\n children?: React.ReactNode;\n appearDelay?: number; // time in ms before first render becomes visible; default 10\n animationMs?: number; // exit animation duration; default 150\n}\n\nexport interface ToastContextType {\n toasts: ToastProps[];\n addToast: (toast: Omit<ToastProps, \"id\">) => string;\n removeToast: (id: string) => void;\n clearToasts: () => void;\n}\n\n// Toast Context\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined,\n);\n\nexport const useToast = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\n\n// Toast Provider\nexport const ToastProvider: React.FC<{ children: React.ReactNode }> = ({\n children,\n}) => {\n const [toasts, setToasts] = useState<ToastProps[]>([]);\n const timeoutRefs = useRef<Map<string, ReturnType<typeof setTimeout>>>(\n new Map(),\n );\n\n const removeToast = useCallback((id: string) => {\n // Clear timeout if it exists\n const timeoutId = timeoutRefs.current.get(id);\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutRefs.current.delete(id);\n }\n setToasts((prev) => prev.filter((toast) => toast.id !== id));\n }, []);\n\n const removeToastRef = useRef(removeToast);\n useEffect(() => {\n removeToastRef.current = removeToast;\n }, [removeToast]);\n\n const addToast = useCallback((toast: Omit<ToastProps, \"id\">) => {\n const id = Math.random().toString(36).substr(2, 9);\n const newToast = { ...toast, id };\n\n setToasts((prev) => [...prev, newToast]);\n\n // Auto remove toast after duration\n if (toast.duration !== 0) {\n const timeoutId = setTimeout(() => {\n removeToastRef.current(id);\n timeoutRefs.current.delete(id);\n }, toast.duration || 5000);\n timeoutRefs.current.set(id, timeoutId);\n }\n\n return id;\n }, []);\n\n const clearToasts = useCallback(() => {\n // Clear all timeouts\n timeoutRefs.current.forEach((timeoutId) => clearTimeout(timeoutId));\n timeoutRefs.current.clear();\n setToasts([]);\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n const refs = timeoutRefs.current;\n return () => {\n refs.forEach((timeoutId) => clearTimeout(timeoutId));\n refs.clear();\n };\n }, []);\n\n return (\n <ToastContext.Provider\n value={{ toasts, addToast, removeToast, clearToasts }}\n >\n {children}\n <ToastContainer toasts={toasts} />\n </ToastContext.Provider>\n );\n};\n\n// Toast Container\nconst ToastContainer: React.FC<{ toasts: ToastProps[] }> = ({ toasts }) => {\n if (toasts.length === 0) return null;\n\n // Group toasts by position for stacking\n const toastsByPosition = toasts.reduce(\n (acc, toast) => {\n const position = toast.position || \"top-right\";\n if (!acc[position]) {\n acc[position] = [];\n }\n acc[position].push(toast);\n return acc;\n },\n {} as Record<string, ToastProps[]>,\n );\n\n return (\n <div className=\"fixed inset-0 z-50 pointer-events-none\">\n {Object.entries(toastsByPosition).map(([position, positionToasts]) => (\n <div key={position} className=\"pointer-events-none\">\n {positionToasts.map((toast, index) => {\n const { style: toastStyle, ...toastProps } = toast;\n return (\n <Toast\n key={toast.id}\n {...toastProps}\n style={{\n ...toastStyle,\n // Stack toasts with offset\n transform: `translateY(${index * 8}px) ${toastStyle?.transform || \"\"}`,\n marginBottom: index < positionToasts.length - 1 ? \"8px\" : \"0\",\n }}\n />\n );\n })}\n </div>\n ))}\n </div>\n );\n};\n\n// Individual Toast Component\nconst ToastComponent = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n id: _id,\n title,\n description,\n variant = \"default\",\n position = \"top-right\",\n animation = \"default\",\n duration = 5000,\n onClose,\n action,\n className,\n children,\n appearDelay = 10,\n animationMs = 150,\n ...props\n },\n ref,\n ) => {\n const [isVisible, setIsVisible] = useState(appearDelay <= 0);\n const [isLeaving, setIsLeaving] = useState(false);\n\n useEffect(() => {\n if (appearDelay <= 0) {\n return;\n }\n const timer = window.setTimeout(() => setIsVisible(true), appearDelay);\n return () => clearTimeout(timer);\n }, [appearDelay]);\n\n const handleClose = useCallback(() => {\n setIsLeaving(true);\n window.setTimeout(() => {\n onClose?.();\n setIsVisible(false);\n }, animationMs);\n }, [onClose, animationMs]);\n\n // Auto close after duration\n useEffect(() => {\n if (duration > 0) {\n const timer = window.setTimeout(handleClose, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration, handleClose]);\n\n const getIcon = () => {\n switch (variant) {\n case \"success\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"error\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"warning\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n case \"info\":\n return (\n <svg\n className={toastIconVariants({ variant })}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n default:\n return null;\n }\n };\n\n if (!isVisible) return null;\n\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ variant, position, animation }),\n isLeaving ? \"opacity-0\" : \"opacity-100\",\n \"pointer-events-auto\",\n className,\n )}\n data-visible={isVisible ? \"true\" : \"false\"}\n data-leaving={isLeaving ? \"true\" : \"false\"}\n style={{\n transition: `all ${animationMs}ms ease-in-out`,\n transform: isLeaving\n ? \"translateX(100%)\"\n : props.style?.transform || \"translateX(0)\",\n ...props.style,\n }}\n {...props}\n >\n <div className=\"flex items-start space-x-3\">\n {getIcon()}\n <div className=\"flex-1 min-w-0\">\n {title && <div className=\"text-sm font-medium\">{title}</div>}\n {description && (\n <div className=\"mt-1 text-sm opacity-90\">{description}</div>\n )}\n {children}\n </div>\n </div>\n\n {action && (\n <button\n type=\"button\"\n onClick={action.onClick}\n className=\"ml-4 text-sm font-medium underline hover:no-underline focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n >\n {action.label}\n </button>\n )}\n\n <button\n type=\"button\"\n onClick={handleClose}\n className=\"absolute top-2 right-2 p-1 rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-ring\"\n aria-label=\"Close notification\"\n >\n <svg className=\"w-4 h-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n </div>\n );\n },\n);\n\nToastComponent.displayName = \"Toast\";\n\n// Memoize Toast for performance optimization\nexport const Toast = memo(ToastComponent) as typeof ToastComponent;\n\n// Toast Hook for easy usage\nexport const useToastNotification = () => {\n const { addToast, removeToast, clearToasts } = useToast();\n\n const toast = {\n success: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"success\",\n title: \"Success\",\n description: message,\n ...options,\n }),\n\n error: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"error\",\n title: \"Error\",\n description: message,\n ...options,\n }),\n\n warning: (\n message: string,\n options?: Omit<ToastProps, \"variant\" | \"title\">,\n ) =>\n addToast({\n variant: \"warning\",\n title: \"Warning\",\n description: message,\n ...options,\n }),\n\n info: (message: string, options?: Omit<ToastProps, \"variant\" | \"title\">) =>\n addToast({\n variant: \"info\",\n title: \"Info\",\n description: message,\n ...options,\n }),\n\n custom: (toast: Omit<ToastProps, \"id\">) => addToast(toast),\n\n dismiss: removeToast,\n clear: clearToasts,\n };\n\n return toast;\n};\n\n// Export variants for external use\nexport { toastVariants, toastIconVariants };\n"]}