@jameskyeong/uix 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +159 -0
- package/dist/index.js +1738 -439
- package/package.json +6 -3
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),m=require("motion/react"),n=require("react"),v=require("clsx"),re=require("tailwind-merge"),y=require("lucide-react"),se=require("shiki"),ie=require("react-dom");function c(...e){return re.twMerge(v.clsx(e))}const w=n.forwardRef(({className:e,variant:t="default",size:r="sm",children:s,...o},a)=>{const l=t==="default"?"uix-convex-colored-sm":"uix-convex-sm",u={default:"bg-uix-prime-300 backdrop-blur-sm text-uix-white-100",secondary:"bg-uix-surface-300/80 backdrop-blur-sm text-uix-text-100",outline:"border border-uix-border-200 bg-uix-surface-100/50 backdrop-blur-sm text-uix-text-300"},x={sm:"px-2 py-0.5 text-xs",md:"px-2.5 py-1 text-sm"},{onDrag:g,onDragStart:d,onDragEnd:p,...b}=o;return i.jsx(m.motion.span,{ref:a,className:c("inline-flex items-center rounded-xl font-medium",l,u[t],x[r],e),whileHover:{scale:1.05},whileTap:{scale:.97},transition:{type:"tween",duration:.1,ease:"linear"},...b,children:s})});w.displayName="Badge";const j=n.forwardRef(({className:e,variant:t,color:r="prime",size:s="md",children:o,...a},l)=>{const x=`inline-flex items-center justify-center rounded-full font-semibold transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-uix-prime-300 disabled:pointer-events-none disabled:opacity-50 cursor-pointer backdrop-blur-sm ${t==="filled"?"uix-convex-colored-sm":"uix-convex-sm"}`,g="bg-uix-surface-200/70 text-uix-text-100 hover:bg-uix-surface-300/80",d={prime:"bg-uix-prime-300 text-uix-white-100 hover:bg-uix-prime-400",sub1:"bg-uix-sub1-300 text-uix-white-100 hover:bg-uix-sub1-400",sub2:"bg-uix-sub2-300 text-uix-black-300 hover:bg-uix-sub2-400"},p={prime:"border border-uix-prime-300/50 text-uix-prime-300 bg-uix-surface-100/20 hover:bg-uix-prime-300 hover:text-uix-white-100 hover:border-transparent",sub1:"border border-uix-sub1-300/50 text-uix-sub1-300 bg-uix-surface-100/20 hover:bg-uix-sub1-300 hover:text-uix-white-100 hover:border-transparent",sub2:"border border-uix-sub2-300/50 text-uix-sub2-400 bg-uix-surface-100/20 hover:bg-uix-sub2-300 hover:text-uix-black-300 hover:border-transparent"},b={prime:"bg-transparent text-uix-prime-300 hover:bg-uix-prime-100/15",sub1:"bg-transparent text-uix-sub1-300 hover:bg-uix-sub1-100/15",sub2:"bg-transparent text-uix-sub2-400 hover:bg-uix-sub2-100/15"},f={filled:d[r],outline:p[r],ghost:b[r]},h={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"},te=t?f[t]:g;return i.jsx(m.motion.button,{ref:l,className:c(x,te,h[s],e),whileHover:{scale:1.03,y:-1},whileTap:{scale:.96},transition:{duration:.06,ease:[0,0,1,1]},...a,children:o})});j.displayName="Button";const T=n.forwardRef(({className:e,children:t,hover:r=!0,accentColor:s="none",accentPosition:o="none",...a},l)=>{const u={prime:"bg-uix-prime-300",sub1:"bg-uix-sub1-300",sub2:"bg-uix-sub2-300",none:""};return i.jsxs(m.motion.div,{ref:l,className:c("relative bg-uix-surface-100/80 backdrop-blur-xl backdrop-saturate-150 uix-glass-border rounded-[2rem] overflow-hidden uix-convex",e),initial:!1,whileHover:r?{y:-4,scale:1.01}:void 0,transition:{type:"tween",duration:.15,ease:"linear"},...a,children:[o==="top"&&s!=="none"&&i.jsx("div",{className:c("absolute top-0 left-0 right-0 h-1",u[s])}),o==="left"&&s!=="none"&&i.jsx("div",{className:c("absolute top-0 left-0 bottom-0 w-1",u[s])}),t]})});T.displayName="Card";const C=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("p-6 xl:p-8",e),...r,children:t}));C.displayName="CardContent";const k=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("flex items-center gap-4 mb-4",e),...r,children:t}));k.displayName="CardHeader";const R=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("h3",{ref:s,className:c("text-xl xl:text-2xl font-bold text-uix-text-100",e),...r,children:t}));R.displayName="CardTitle";const E=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("p",{ref:s,className:c("text-uix-gray-200 leading-relaxed",e),...r,children:t}));E.displayName="CardDescription";const D=n.forwardRef(({className:e,code:t,language:r="tsx",showLineNumbers:s=!1,...o},a)=>{const[l,u]=n.useState(!1),[x,g]=n.useState("");n.useEffect(()=>{(async()=>{const b=await se.codeToHtml(t.trim(),{lang:r,theme:"github-dark"});g(b)})()},[t,r]);const d=async()=>{await navigator.clipboard.writeText(t.trim()),u(!0),setTimeout(()=>u(!1),2e3)};return i.jsxs("div",{ref:a,className:c("relative rounded-2xl bg-uix-black-400 overflow-hidden uix-convex",e),...o,children:[i.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-uix-black-200",children:[i.jsx(w,{variant:"secondary",size:"sm",children:r}),i.jsx("button",{type:"button",onClick:d,className:"p-1.5 rounded-xl hover:bg-uix-black-200 transition-colors","aria-label":"Copy code",children:l?i.jsx(y.Check,{size:14,className:"text-green-400"}):i.jsx(y.Copy,{size:14,className:"text-uix-gray-100"})})]}),i.jsx("div",{className:c("p-4 overflow-x-auto text-sm","[&_pre]:!bg-transparent [&_pre]:!m-0 [&_pre]:!p-0","[&_code]:!bg-transparent",s&&"[&_.line]:before:content-[counter(line)] [&_.line]:before:counter-increment-[line] [&_.line]:before:mr-4 [&_.line]:before:text-uix-gray-300"),dangerouslySetInnerHTML:{__html:x}})]})});D.displayName="CodeBlock";const ne={prime:"var(--uix-prime-300)",sub1:"var(--uix-sub1-300)",sub2:"var(--uix-sub2-300)"},oe={prime:"bg-gradient-to-br from-uix-prime-400 via-uix-prime-300 to-uix-prime-400",sub1:"bg-gradient-to-br from-uix-sub1-400 via-uix-sub1-300 to-uix-sub1-400",sub2:"bg-gradient-to-br from-uix-sub2-400 via-uix-sub2-300 to-uix-sub2-400"};function ae({children:e,className:t="",color:r="prime",gradient:s=!1,delay:o=0,charDelay:a=.04}){const l=n.useRef(null),u=m.useInView(l,{once:!0,margin:"-50px"}),[x,g]=n.useState(!1),d=1,p=e.length,b=d+o+p*a+.25;return n.useEffect(()=>{if(s&&u&&!x){const f=setTimeout(()=>{g(!0)},b*1e3);return()=>clearTimeout(f)}},[s,u,x,b]),s&&x?i.jsx("span",{ref:l,className:`inline-block bg-clip-text text-transparent ${oe[r]} ${t}`,children:e}):i.jsx("span",{ref:l,className:`inline-block ${t}`,children:e.split("").map((f,h)=>i.jsx(m.motion.span,{className:"inline-block",style:{color:"var(--uix-text-100)"},animate:u?{color:ne[r]}:{},transition:{duration:.25,delay:d+o+h*a,ease:[.1,.1,.9,.9]},children:f===" "?" ":f},h))})}const L=n.createContext(null);function S(){const e=n.useContext(L);if(!e)throw new Error("Dropdown components must be used within a Dropdown");return e}function le({children:e,open:t,onOpenChange:r,className:s,...o}){const[a,l]=n.useState(!1),u=n.useRef(null),x=t??a,g=d=>{l(d),r==null||r(d)};return i.jsx(L.Provider,{value:{open:x,setOpen:g,triggerRef:u},children:i.jsx("div",{className:v.clsx("relative inline-block",s),...o,children:e})})}function ue({children:e,className:t,onClick:r,...s}){const{open:o,setOpen:a,triggerRef:l}=S();return i.jsxs("button",{ref:l,type:"button",className:v.clsx("inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-sm font-medium","uix-glass uix-glass-border uix-convex-sm","text-uix-text-200 hover:text-uix-text-100 transition-colors",t),onClick:u=>{a(!o),r==null||r(u)},"aria-expanded":o,"aria-haspopup":"true",...s,children:[e,i.jsx("svg",{className:v.clsx("w-3.5 h-3.5 transition-transform duration-200",o&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,"aria-hidden":"true",children:i.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]})}function ce({children:e,className:t,align:r="start"}){const{open:s,setOpen:o,triggerRef:a}=S(),l=n.useRef(null),[u,x]=n.useState({top:0,left:0});n.useLayoutEffect(()=>{if(!s||!a.current)return;const d=()=>{var f;const p=(f=a.current)==null?void 0:f.getBoundingClientRect();if(!p)return;let b=p.left;r==="center"?b=p.left+p.width/2:r==="end"&&(b=p.right),x({top:p.bottom+8,left:b})};return d(),window.addEventListener("scroll",d,!0),window.addEventListener("resize",d),()=>{window.removeEventListener("scroll",d,!0),window.removeEventListener("resize",d)}},[s,a,r]),n.useEffect(()=>{if(!s)return;const d=b=>{l.current&&!l.current.contains(b.target)&&a.current&&!a.current.contains(b.target)&&o(!1)},p=b=>{var f;b.key==="Escape"&&(o(!1),(f=a.current)==null||f.focus())};return document.addEventListener("mousedown",d),document.addEventListener("keydown",p),()=>{document.removeEventListener("mousedown",d),document.removeEventListener("keydown",p)}},[s,o,a]);const g={start:{transform:"translateX(0)"},center:{transform:"translateX(-50%)"},end:{transform:"translateX(-100%)"}};return typeof document>"u"?null:ie.createPortal(i.jsx(m.AnimatePresence,{children:s&&i.jsx(m.motion.div,{ref:l,initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:{type:"spring",stiffness:400,damping:25,mass:.8},className:v.clsx("fixed z-50 min-w-[180px]","uix-glass uix-glass-border uix-convex uix-glass-noise rounded-2xl","p-1.5 shadow-xl",t),style:{top:u.top,left:u.left,...g[r]},role:"menu",children:e})}),document.body)}function de({children:e,className:t,disabled:r,onClick:s,...o}){const{setOpen:a}=S();return i.jsx("button",{type:"button",role:"menuitem",disabled:r,className:v.clsx("w-full flex items-center gap-2 px-3 py-2 rounded-xl text-sm text-left","transition-colors duration-100",r?"text-uix-text-300 cursor-not-allowed":"text-uix-text-200 hover:text-uix-text-100 hover:bg-uix-surface-300/60",t),onClick:l=>{r||(s==null||s(l),a(!1))},...o,children:e})}function xe({className:e,...t}){return i.jsx("hr",{className:v.clsx("my-1.5 h-px border-0 bg-uix-border-100",e),...t})}const N=n.forwardRef(({className:e,orientation:t="vertical",children:r,...s},o)=>{const a={vertical:"overflow-y-auto overflow-x-hidden",horizontal:"overflow-x-auto overflow-y-hidden",both:"overflow-auto"};return i.jsx("div",{ref:o,className:c("relative",a[t],"[&::-webkit-scrollbar]:w-2","[&::-webkit-scrollbar-track]:bg-transparent","[&::-webkit-scrollbar-thumb]:bg-uix-gray-300/50","[&::-webkit-scrollbar-thumb]:rounded-full","[&::-webkit-scrollbar-thumb]:hover:bg-uix-gray-300",e),...s,children:r})});N.displayName="ScrollArea";function be({threshold:e=500,className:t}){const[r,s]=n.useState(!1);n.useEffect(()=>{const a=()=>{s(window.scrollY>e)};return window.addEventListener("scroll",a,{passive:!0}),()=>window.removeEventListener("scroll",a)},[e]);const o=()=>{window.scrollTo({top:0,behavior:"smooth"})};return i.jsx(m.AnimatePresence,{children:r&&i.jsx(m.motion.button,{initial:{opacity:0,scale:.5,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.5,y:20},whileHover:{scale:1.1,y:-2},whileTap:{scale:.9},transition:{default:{type:"spring",stiffness:300,damping:20,mass:.8},scale:{duration:.06,ease:[0,0,1,1]}},onClick:o,className:c("fixed bottom-6 right-6 z-50 p-3 rounded-full bg-uix-prime-300 backdrop-blur-sm text-uix-white-100 hover:bg-uix-prime-400 cursor-pointer uix-convex-colored",t),"aria-label":"Scroll to top",children:i.jsx(y.ChevronUp,{size:24})})})}const H=n.forwardRef(({className:e,children:t,variant:r="default",container:s=!0,animate:o=!0,id:a,...l},u)=>{const x=n.useRef(null),g=m.useInView(x,{once:!0,margin:"-100px"}),d="backdrop-blur-xl backdrop-saturate-150 uix-glass-border uix-convex",p={default:`bg-uix-surface-200/50 ${d}`,secondary:`bg-uix-surface-300/50 ${d}`,accent:`bg-uix-prime-300/60 ${d} text-uix-white-100`},b=s?i.jsx("div",{className:"max-w-4xl mx-auto px-6 xl:px-12",children:t}):t;return i.jsx("section",{ref:f=>{x.current=f,typeof u=="function"?u(f):u&&(u.current=f)},id:a,className:c("relative py-16 xl:py-24 rounded-[2.5rem]",p[r],e),...l,children:o?i.jsx(m.motion.div,{initial:{opacity:0,y:40},animate:g?{opacity:1,y:0}:{opacity:0,y:40},transition:{type:"spring",stiffness:200,damping:25,mass:1},children:b}):b})});H.displayName="Section";const I=n.forwardRef(({className:e,children:t,subtitle:r,...s},o)=>i.jsxs("div",{className:"text-center mb-14 xl:mb-20",children:[i.jsx("h2",{ref:o,className:c("text-4xl xl:text-6xl font-bold text-uix-text-100 mb-6 tracking-tight",e),...s,children:t}),r&&i.jsx("p",{className:"text-xl xl:text-2xl text-uix-gray-200 max-w-3xl mx-auto leading-relaxed",children:r})]}));I.displayName="SectionTitle";const P=n.createContext(null),me=()=>{const e=n.useContext(P);if(!e)throw new Error("Sheet components must be used within a Sheet provider");return e},z=({open:e,onOpenChange:t,children:r})=>(n.useEffect(()=>{const s=o=>{o.key==="Escape"&&e&&t(!1)};return document.addEventListener("keydown",s),()=>document.removeEventListener("keydown",s)},[e,t]),n.useEffect(()=>(e?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[e]),i.jsx(P.Provider,{value:{open:e,onOpenChange:t},children:r}));z.displayName="Sheet";const B=n.forwardRef(({className:e,side:t="left",children:r},s)=>{const{open:o,onOpenChange:a}=me(),l={left:{initial:{x:"-100%"},animate:{x:0},exit:{x:"-100%"}},right:{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"}}},u={left:"left-0",right:"right-0"};return i.jsx(m.AnimatePresence,{children:o&&i.jsxs(i.Fragment,{children:[i.jsx(m.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",onClick:()=>a(!1)}),i.jsx(m.motion.div,{ref:s,initial:l[t].initial,animate:l[t].animate,exit:l[t].exit,transition:{type:"spring",damping:25,stiffness:300},className:c("fixed top-0 z-50 h-full w-72 bg-uix-surface-100/90 backdrop-blur-xl backdrop-saturate-150 border-r border-black/[0.3] dark:border-white/[0.03] rounded-r-3xl uix-convex-lg",u[t],e),children:r})]})})});B.displayName="SheetContent";const M=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("flex flex-col gap-2 p-6 border-b border-uix-border-100",e),...r,children:t}));M.displayName="SheetHeader";const A=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("h2",{ref:s,className:c("text-lg font-semibold text-uix-text-100",e),...r,children:t}));A.displayName="SheetTitle";const pe="relative uix-glass uix-glass-border uix-convex uix-glass-noise rounded-3xl",V=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("aside",{ref:s,className:c("hidden xl:flex flex-col w-60 h-full",pe,e),...r,children:t}));V.displayName="Sidebar";const _=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("flex flex-col gap-1 p-6",e),...r,children:t}));_.displayName="SidebarHeader";const $=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx(N,{ref:s,className:c("flex-1 p-4",e),...r,children:t}));$.displayName="SidebarContent";const q=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("mb-6",e),...r,children:t}));q.displayName="SidebarGroup";const G=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("px-3 mb-3 text-xs font-semibold uppercase tracking-widest text-uix-sub1-300/80",e),...r,children:t}));G.displayName="SidebarGroupLabel";const O=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("ul",{ref:s,className:c("space-y-1",e),...r,children:t}));O.displayName="SidebarMenu";const X=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("li",{ref:s,className:c("",e),...r,children:t}));X.displayName="SidebarMenuItem";const F=n.forwardRef(({className:e,isActive:t=!1,children:r,...s},o)=>{const{onDrag:a,onDragStart:l,onDragEnd:u,...x}=s;return i.jsxs(m.motion.button,{ref:o,type:"button",className:c("relative flex w-full items-center gap-2 rounded-xl px-3 py-2.5 text-base font-medium","hover:bg-uix-surface-300/50 hover:text-uix-text-100",t?"text-uix-prime-300 bg-uix-prime-100/15":"text-uix-text-300",e),whileHover:{x:4,scale:1.01},whileTap:{scale:.97},transition:{duration:.08,ease:[0,0,1,1]},...x,children:[t&&i.jsx(m.motion.span,{className:"absolute left-0 top-1/2 -translate-y-1/2 w-0.5 h-5 bg-uix-prime-300 rounded-r-full",layoutId:"sidebar-active-indicator",transition:{type:"spring",stiffness:300,damping:20,mass:.8}}),r]})});F.displayName="SidebarMenuButton";const U=n.forwardRef(({className:e,variant:t="default",rounded:r="3xl",children:s,...o},a)=>{const l="relative uix-glass uix-glass-border uix-convex uix-glass-noise",u={default:"",subtle:"uix-convex-subtle",strong:"uix-convex-lg"},x={none:"rounded-none",sm:"rounded-lg",md:"rounded-xl",lg:"rounded-2xl",xl:"rounded-[1.5rem]","2xl":"rounded-[2rem]","3xl":"rounded-3xl",full:"rounded-full"};return i.jsx("div",{ref:a,className:c(l,u[t],x[r],e),...o,children:s})});U.displayName="Surface";const W=n.createContext(null),Y=()=>{const e=n.useContext(W);if(!e)throw new Error("Tabs components must be used within a Tabs provider");return e},J=n.forwardRef(({className:e,defaultValue:t,children:r,...s},o)=>{const[a,l]=n.useState(t),u=n.useId();return i.jsx(W.Provider,{value:{activeTab:a,setActiveTab:l,tabsId:u},children:i.jsx("div",{ref:o,className:c("w-full",e),...s,children:r})})});J.displayName="Tabs";const K=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("inline-flex items-center gap-1 rounded-2xl bg-uix-surface-300/50 backdrop-blur-xl backdrop-saturate-150 uix-glass-border p-1.5 uix-convex",e),...r,children:t}));K.displayName="TabsList";const Q=n.forwardRef(({className:e,value:t,children:r,...s},o)=>{const{activeTab:a,setActiveTab:l,tabsId:u}=Y(),x=a===t,{onDrag:g,onDragStart:d,onDragEnd:p,...b}=s;return i.jsxs(m.motion.button,{ref:o,type:"button",onClick:()=>l(t),className:c("relative inline-flex items-center justify-center px-4 py-2 text-base font-medium rounded-xl","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-uix-prime-300",x?"text-uix-text-100":"text-uix-text-300 hover:text-uix-text-100",e),whileHover:{scale:1.02},whileTap:{scale:.96},transition:{duration:.06,ease:[0,0,1,1]},...b,children:[x&&i.jsx(m.motion.span,{layoutId:`tabs-indicator-${u}`,className:"absolute inset-0 bg-uix-surface-100 rounded-xl uix-convex-sm",transition:{type:"spring",stiffness:300,damping:20,mass:.8}}),i.jsx("span",{className:"relative z-10",children:r})]})});Q.displayName="TabsTrigger";const Z=n.forwardRef(({className:e,children:t,...r},s)=>i.jsx("div",{ref:s,className:c("relative mt-4",e),...r,children:i.jsx("div",{className:"grid [&>*]:col-start-1 [&>*]:row-start-1",children:t})}));Z.displayName="TabsPanels";const ee=n.forwardRef(({className:e,value:t,children:r,...s},o)=>{const{activeTab:a}=Y(),l=a===t;return i.jsx(m.motion.div,{ref:o,className:c(e),initial:!1,animate:{opacity:l?1:0,scale:l?1:.98,y:l?0:8,visibility:l?"visible":"hidden"},transition:{type:"spring",stiffness:400,damping:25,mass:.8},"aria-hidden":!l,children:i.jsx("div",{...s,children:r})})});ee.displayName="TabsContent";exports.Badge=w;exports.Button=j;exports.Card=T;exports.CardContent=C;exports.CardDescription=E;exports.CardHeader=k;exports.CardTitle=R;exports.CodeBlock=D;exports.ColorSwipeText=ae;exports.Dropdown=le;exports.DropdownContent=ce;exports.DropdownItem=de;exports.DropdownSeparator=xe;exports.DropdownTrigger=ue;exports.ScrollArea=N;exports.ScrollToTop=be;exports.Section=H;exports.SectionTitle=I;exports.Sheet=z;exports.SheetContent=B;exports.SheetHeader=M;exports.SheetTitle=A;exports.Sidebar=V;exports.SidebarContent=$;exports.SidebarGroup=q;exports.SidebarGroupLabel=G;exports.SidebarHeader=_;exports.SidebarMenu=O;exports.SidebarMenuButton=F;exports.SidebarMenuItem=X;exports.Surface=U;exports.Tabs=J;exports.TabsContent=ee;exports.TabsList=K;exports.TabsPanels=Z;exports.TabsTrigger=Q;exports.cn=c;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("react/jsx-runtime"),Q=require("clsx"),D=require("motion/react"),a=require("react"),Yt=require("tailwind-merge"),Ne=require("lucide-react"),Ft=require("shiki"),Ve=require("react-dom"),$e=a.createContext(null),Ye=a.createContext(null),Fe=()=>{const r=a.useContext($e);if(!r)throw new Error("Accordion components must be used within an Accordion");return r},Ue=()=>{const r=a.useContext(Ye);if(!r)throw new Error("AccordionTrigger/Content must be used within an AccordionItem");return r},Xe=a.forwardRef(({children:r,className:s,multiple:e=!0,defaultValue:n=[],...l},o)=>{const[c,d]=a.useState(()=>new Set(n)),f=u=>{d(p=>{const t=new Set(p);return t.has(u)?t.delete(u):(e||t.clear(),t.add(u)),t})};return i.jsx($e.Provider,{value:{openItems:c,toggle:f,multiple:e},children:i.jsx("div",{ref:o,className:Q.clsx("space-y-2",s),...l,children:r})})});Xe.displayName="Accordion";const We=a.forwardRef(({children:r,className:s,value:e,disabled:n=!1,...l},o)=>{const{openItems:c}=Fe(),d=c.has(e);return i.jsx(Ye.Provider,{value:{value:e,isOpen:d,disabled:n},children:i.jsx("div",{ref:o,className:Q.clsx("border border-black/5 dark:border-white/5 rounded-xl overflow-hidden",n&&"opacity-50",s),...l,children:r})})});We.displayName="AccordionItem";const qe=a.forwardRef(({children:r,className:s,...e},n)=>{const{toggle:l}=Fe(),{value:o,isOpen:c,disabled:d}=Ue();return i.jsx("button",{ref:n,type:"button",disabled:d,onClick:()=>!d&&l(o),className:Q.clsx("w-full flex items-center justify-between px-4 py-3 text-left transition-colors",c?"bg-uix-surface-200/50":"hover:bg-uix-surface-200/30",d&&"cursor-not-allowed",s),"aria-expanded":c,...e,children:i.jsxs("div",{className:"flex items-center gap-3",children:[i.jsx("svg",{className:Q.clsx("w-4 h-4 text-uix-text-300 transition-transform duration-200",c&&"rotate-90"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,"aria-hidden":"true",children:i.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M9 5l7 7-7 7"})}),r]})})});qe.displayName="AccordionTrigger";const Ke=a.forwardRef(({children:r,className:s,...e},n)=>{const{isOpen:l}=Ue();return i.jsx(D.AnimatePresence,{initial:!1,children:l&&i.jsx(D.motion.div,{ref:n,initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0},transition:{duration:.2,ease:"easeInOut"},children:i.jsx("div",{className:Q.clsx("px-4 pb-4 pt-2",s),...e,children:r})})})});Ke.displayName="AccordionContent";function x(...r){return Yt.twMerge(Q.clsx(r))}const ke=a.forwardRef(({className:r,variant:s="default",size:e="sm",children:n,...l},o)=>{const c=s==="default"?"uix-convex-colored-sm":"uix-convex-sm",d={default:"bg-uix-prime-300 backdrop-blur-sm text-uix-white-100",secondary:"bg-uix-surface-300/80 backdrop-blur-sm text-uix-text-100",outline:"border border-uix-border-200 bg-uix-surface-100/50 backdrop-blur-sm text-uix-text-300"},f={sm:"px-2 py-0.5 text-xs",md:"px-2.5 py-1 text-sm"},{onDrag:u,onDragStart:p,onDragEnd:t,...m}=l;return i.jsx(D.motion.span,{ref:o,className:x("inline-flex items-center rounded-xl font-medium",c,d[s],f[e],r),whileHover:{scale:1.05},whileTap:{scale:.97},transition:{type:"tween",duration:.1,ease:"linear"},...m,children:n})});ke.displayName="Badge";const Ge=a.forwardRef(({className:r,variant:s,color:e="prime",size:n="md",children:l,...o},c)=>{const f=`inline-flex items-center justify-center rounded-full font-semibold transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-uix-prime-300 disabled:pointer-events-none disabled:opacity-50 cursor-pointer backdrop-blur-sm ${s==="filled"?"uix-convex-colored-sm":"uix-convex-sm"}`,u="bg-uix-surface-200/70 text-uix-text-100 hover:bg-uix-surface-300/80",p={prime:"bg-uix-prime-300 text-uix-white-100 hover:bg-uix-prime-400",sub1:"bg-uix-sub1-300 text-uix-white-100 hover:bg-uix-sub1-400",sub2:"bg-uix-sub2-300 text-uix-black-300 hover:bg-uix-sub2-400"},t={prime:"border border-uix-prime-300/50 text-uix-prime-300 bg-uix-surface-100/20 hover:bg-uix-prime-300 hover:text-uix-white-100 hover:border-transparent",sub1:"border border-uix-sub1-300/50 text-uix-sub1-300 bg-uix-surface-100/20 hover:bg-uix-sub1-300 hover:text-uix-white-100 hover:border-transparent",sub2:"border border-uix-sub2-300/50 text-uix-sub2-400 bg-uix-surface-100/20 hover:bg-uix-sub2-300 hover:text-uix-black-300 hover:border-transparent"},m={prime:"bg-transparent text-uix-prime-300 hover:bg-uix-prime-100/15",sub1:"bg-transparent text-uix-sub1-300 hover:bg-uix-sub1-100/15",sub2:"bg-transparent text-uix-sub2-400 hover:bg-uix-sub2-100/15"},g={filled:p[e],outline:t[e],ghost:m[e]},T={sm:"px-4 py-2 text-sm",md:"px-6 py-3 text-base",lg:"px-8 py-4 text-lg"},O=s?g[s]:u;return i.jsx(D.motion.button,{ref:c,className:x(f,O,T[n],r),whileHover:{scale:1.03,y:-1},whileTap:{scale:.96},transition:{duration:.06,ease:[0,0,1,1]},...o,children:l})});Ge.displayName="Button";const Qe=a.forwardRef(({className:r,children:s,hover:e=!0,accentColor:n="none",accentPosition:l="none",...o},c)=>{const d={prime:"bg-uix-prime-300",sub1:"bg-uix-sub1-300",sub2:"bg-uix-sub2-300",none:""};return i.jsxs(D.motion.div,{ref:c,className:x("relative bg-uix-surface-100/80 backdrop-blur-xl backdrop-saturate-150 uix-glass-border rounded-[2rem] overflow-hidden uix-convex",r),initial:!1,whileHover:e?{y:-4,scale:1.01}:void 0,transition:{type:"tween",duration:.15,ease:"linear"},...o,children:[l==="top"&&n!=="none"&&i.jsx("div",{className:x("absolute top-0 left-0 right-0 h-1",d[n])}),l==="left"&&n!=="none"&&i.jsx("div",{className:x("absolute top-0 left-0 bottom-0 w-1",d[n])}),s]})});Qe.displayName="Card";const Ze=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("p-6 xl:p-8",r),...e,children:s}));Ze.displayName="CardContent";const Je=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("flex items-center gap-4 mb-4",r),...e,children:s}));Je.displayName="CardHeader";const et=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("h3",{ref:n,className:x("text-xl xl:text-2xl font-bold text-uix-text-100",r),...e,children:s}));et.displayName="CardTitle";const tt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("p",{ref:n,className:x("text-uix-gray-200 leading-relaxed",r),...e,children:s}));tt.displayName="CardDescription";const st=a.forwardRef(({className:r,code:s,language:e="tsx",showLineNumbers:n=!1,...l},o)=>{const[c,d]=a.useState(!1),[f,u]=a.useState("");a.useEffect(()=>{(async()=>{const m=await Ft.codeToHtml(s.trim(),{lang:e,theme:"github-dark"});u(m)})()},[s,e]);const p=async()=>{await navigator.clipboard.writeText(s.trim()),d(!0),setTimeout(()=>d(!1),2e3)};return i.jsxs("div",{ref:o,className:x("relative rounded-2xl bg-uix-black-400 overflow-hidden uix-convex",r),...l,children:[i.jsxs("div",{className:"flex items-center justify-between px-4 py-2 border-b border-uix-black-200",children:[i.jsx(ke,{variant:"secondary",size:"sm",children:e}),i.jsx("button",{type:"button",onClick:p,className:"p-1.5 rounded-xl hover:bg-uix-black-200 transition-colors","aria-label":"Copy code",children:c?i.jsx(Ne.Check,{size:14,className:"text-green-400"}):i.jsx(Ne.Copy,{size:14,className:"text-uix-gray-100"})})]}),i.jsx("div",{className:x("p-4 overflow-x-auto text-sm","[&_pre]:!bg-transparent [&_pre]:!m-0 [&_pre]:!p-0","[&_code]:!bg-transparent",n&&"[&_.line]:before:content-[counter(line)] [&_.line]:before:counter-increment-[line] [&_.line]:before:mr-4 [&_.line]:before:text-uix-gray-300"),dangerouslySetInnerHTML:{__html:f}})]})});st.displayName="CodeBlock";const Ut={prime:"var(--uix-prime-300)",sub1:"var(--uix-sub1-300)",sub2:"var(--uix-sub2-300)"},Xt={prime:"bg-gradient-to-br from-uix-prime-400 via-uix-prime-300 to-uix-prime-400",sub1:"bg-gradient-to-br from-uix-sub1-400 via-uix-sub1-300 to-uix-sub1-400",sub2:"bg-gradient-to-br from-uix-sub2-400 via-uix-sub2-300 to-uix-sub2-400"};function Wt({children:r,className:s="",color:e="prime",gradient:n=!1,delay:l=0,charDelay:o=.04}){const c=a.useRef(null),d=D.useInView(c,{once:!0,margin:"-50px"}),[f,u]=a.useState(!1),p=1,t=r.length,m=p+l+t*o+.25;return a.useEffect(()=>{if(n&&d&&!f){const g=setTimeout(()=>{u(!0)},m*1e3);return()=>clearTimeout(g)}},[n,d,f,m]),n&&f?i.jsx("span",{ref:c,className:`inline-block bg-clip-text text-transparent ${Xt[e]} ${s}`,children:r}):i.jsx("span",{ref:c,className:`inline-block ${s}`,children:r.split("").map((g,T)=>i.jsx(D.motion.span,{className:"inline-block",style:{color:"var(--uix-text-100)"},animate:d?{color:Ut[e]}:{},transition:{duration:.25,delay:p+l+T*o,ease:[.1,.1,.9,.9]},children:g===" "?" ":g},T))})}const rt=a.createContext(null);function De(){const r=a.useContext(rt);if(!r)throw new Error("Dropdown components must be used within a Dropdown");return r}function qt({children:r,open:s,onOpenChange:e,className:n,...l}){const[o,c]=a.useState(!1),d=a.useRef(null),f=s??o,u=p=>{c(p),e==null||e(p)};return i.jsx(rt.Provider,{value:{open:f,setOpen:u,triggerRef:d},children:i.jsx("div",{className:Q.clsx("relative inline-block",n),...l,children:r})})}function Kt({children:r,className:s,onClick:e,...n}){const{open:l,setOpen:o,triggerRef:c}=De();return i.jsxs("button",{ref:c,type:"button",className:Q.clsx("inline-flex items-center gap-1.5 px-3 py-1.5 rounded-xl text-sm font-medium","uix-glass uix-glass-border uix-convex-sm","text-uix-text-200 hover:text-uix-text-100 transition-colors",s),onClick:d=>{o(!l),e==null||e(d)},"aria-expanded":l,"aria-haspopup":"true",...n,children:[r,i.jsx("svg",{className:Q.clsx("w-3.5 h-3.5 transition-transform duration-200",l&&"rotate-180"),fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2,"aria-hidden":"true",children:i.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M19 9l-7 7-7-7"})})]})}function Gt({children:r,className:s,align:e="start"}){const{open:n,setOpen:l,triggerRef:o}=De(),c=a.useRef(null),[d,f]=a.useState({top:0,left:0});a.useLayoutEffect(()=>{if(!n||!o.current)return;const p=()=>{var g;const t=(g=o.current)==null?void 0:g.getBoundingClientRect();if(!t)return;let m=t.left;e==="center"?m=t.left+t.width/2:e==="end"&&(m=t.right),f({top:t.bottom+8,left:m})};return p(),window.addEventListener("scroll",p,!0),window.addEventListener("resize",p),()=>{window.removeEventListener("scroll",p,!0),window.removeEventListener("resize",p)}},[n,o,e]),a.useEffect(()=>{if(!n)return;const p=m=>{c.current&&!c.current.contains(m.target)&&o.current&&!o.current.contains(m.target)&&l(!1)},t=m=>{var g;m.key==="Escape"&&(l(!1),(g=o.current)==null||g.focus())};return document.addEventListener("mousedown",p),document.addEventListener("keydown",t),()=>{document.removeEventListener("mousedown",p),document.removeEventListener("keydown",t)}},[n,l,o]);const u={start:{transform:"translateX(0)"},center:{transform:"translateX(-50%)"},end:{transform:"translateX(-100%)"}};return typeof document>"u"?null:Ve.createPortal(i.jsx(D.AnimatePresence,{children:n&&i.jsx(D.motion.div,{ref:c,initial:{opacity:0,y:-8},animate:{opacity:1,y:0},exit:{opacity:0,y:-8},transition:{type:"spring",stiffness:400,damping:25,mass:.8},className:Q.clsx("fixed z-50 min-w-[180px]","uix-glass uix-glass-border uix-convex uix-glass-noise rounded-2xl","p-1.5 shadow-xl",s),style:{top:d.top,left:d.left,...u[e]},role:"menu",children:r})}),document.body)}function Qt({children:r,className:s,disabled:e,onClick:n,...l}){const{setOpen:o}=De();return i.jsx("button",{type:"button",role:"menuitem",disabled:e,className:Q.clsx("w-full flex items-center gap-2 px-3 py-2 rounded-xl text-sm text-left","transition-colors duration-100",e?"text-uix-text-300 cursor-not-allowed":"text-uix-text-200 hover:text-uix-text-100 hover:bg-uix-surface-300/60",s),onClick:c=>{e||(n==null||n(c),o(!1))},...l,children:r})}function Zt({className:r,...s}){return i.jsx("hr",{className:Q.clsx("my-1.5 h-px border-0 bg-white/15",r),...s})}const nt=({onFileSelect:r,onFilesSelect:s,accept:e="image/*",maxSizeMB:n=10,multiple:l=!1,disabled:o=!1,variant:c="default",size:d="md",icon:f,title:u,description:p,className:t,onError:m})=>{const g=a.useRef(null),[T,O]=a.useState(!1),F=w=>{const h=n*1024*1024;return w.size>h?(m==null||m(`파일 크기는 ${n}MB 이하여야 합니다`),!1):!0},v=w=>{if(!w||w.length===0)return;const h=[];for(const E of Array.from(w))F(E)&&h.push(E);h.length!==0&&(l&&s?s(h):r(h[0]))},q=w=>{v(w.target.files),w.target.value=""},V=w=>{w.preventDefault(),O(!1),!o&&v(w.dataTransfer.files)},se=w=>{w.preventDefault(),o||O(!0)},y=()=>{O(!1)},S=w=>{if(o)return;const h=w.clipboardData.items,E=[];for(const U of Array.from(h))if(U.type.startsWith("image/")||e==="*"){const Z=U.getAsFile();if(Z&&F(Z)&&(E.push(Z),!l))break}E.length>0&&(l&&s?s(E):r(E[0]))},j=()=>{var w;o||(w=g.current)==null||w.click()},M=w=>{(w.key==="Enter"||w.key===" ")&&(w.preventDefault(),j())},H={sm:"p-6",md:"p-10",lg:"p-14"},_={sm:"w-8 h-8",md:"w-12 h-12",lg:"w-16 h-16"},B=x("relative rounded-3xl text-center cursor-pointer transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-uix-prime-300",H[d],o&&"opacity-50 cursor-not-allowed"),R={default:x("border-2 border-dashed uix-glass-border bg-uix-surface-100/50",T?"border-uix-prime-300 bg-uix-prime-500/5":"border-uix-border-200 hover:border-uix-prime-300/50 hover:bg-uix-surface-200/50"),glass:x("border-2 border-dashed uix-glass uix-convex",T?"border-uix-prime-300 bg-uix-prime-500/10":"border-uix-border-100 hover:border-uix-prime-300/50")},A=u??"파일을 선택하거나 드래그하세요",$=p??"클릭, 드래그 앤 드롭, 또는 붙여넣기";return i.jsxs(D.motion.div,{className:x(B,R[c],t),onClick:j,onDrop:V,onDragOver:se,onDragLeave:y,onPaste:S,onKeyDown:M,tabIndex:o?-1:0,role:"button","aria-label":A,"aria-disabled":o,whileHover:o?void 0:{scale:1.01},whileTap:o?void 0:{scale:.99},transition:{duration:.1},children:[i.jsx("input",{ref:g,type:"file",accept:e,multiple:l,onChange:q,disabled:o,className:"hidden",tabIndex:-1}),i.jsxs("div",{className:"space-y-3",children:[i.jsx("div",{className:"flex justify-center",children:f??i.jsx(Ne.Upload,{className:x(_[d],"transition-colors",T?"text-uix-prime-300":"text-uix-text-300"),strokeWidth:1.5})}),i.jsxs("div",{children:[i.jsx("p",{className:"text-uix-text-100 font-medium mb-1",children:A}),i.jsx("p",{className:"text-sm text-uix-text-200",children:$})]}),i.jsxs("p",{className:"text-xs text-uix-text-300",children:["최대 ",n,"MB"]})]})]})};nt.displayName="FileUploader";const at=({length:r=6,onComplete:s,onChange:e,disabled:n=!1,error:l=!1,mask:o=!1,variant:c="default",size:d="md",type:f="numeric",className:u,autoFocus:p=!0})=>{const[t,m]=a.useState(Array(r).fill("")),g=a.useRef([]);a.useEffect(()=>{var y;p&&((y=g.current[0])==null||y.focus())},[p]),a.useEffect(()=>{const y=t.join("");e==null||e(y),y.length===r&&t.every(S=>S!=="")&&s(y)},[t,r,s,e]);const T=y=>f==="numeric"?y.replace(/\D/g,""):y.replace(/[^a-zA-Z0-9]/g,""),O=(y,S)=>{var H;const j=T(S).slice(-1),M=[...t];M[y]=j,m(M),j&&y<r-1&&((H=g.current[y+1])==null||H.focus())},F=(y,S)=>{var j,M,H;if(S.key==="Backspace")if(!t[y]&&y>0){(j=g.current[y-1])==null||j.focus();const _=[...t];_[y-1]="",m(_)}else{const _=[...t];_[y]="",m(_)}else S.key==="ArrowLeft"&&y>0?(M=g.current[y-1])==null||M.focus():S.key==="ArrowRight"&&y<r-1&&((H=g.current[y+1])==null||H.focus())},v=y=>{var j;y.preventDefault();const S=T(y.clipboardData.getData("text")).slice(0,r);if(S){const M=[...t];for(let _=0;_<S.length;_++)M[_]=S[_];m(M);const H=Math.min(S.length,r-1);(j=g.current[H])==null||j.focus()}},q={sm:{input:"w-10 h-11 text-lg",gap:"gap-2"},md:{input:"w-12 h-14 text-xl",gap:"gap-3"},lg:{input:"w-14 h-16 text-2xl",gap:"gap-3"}},V={default:x("bg-uix-surface-100/80 border uix-glass-border",l?"border-uix-sub1-400 focus:ring-uix-sub1-300/30":"border-uix-border-200 focus:border-uix-prime-300 focus:ring-uix-prime-300/20"),glass:x("uix-glass border uix-glass-border",l?"border-uix-sub1-400 focus:ring-uix-sub1-300/30":"border-uix-border-100 focus:border-uix-prime-300 focus:ring-uix-prime-300/20")},se=x("text-center font-semibold rounded-2xl outline-none transition-all","focus:ring-2 text-uix-text-100","disabled:opacity-50 disabled:cursor-not-allowed",q[d].input,V[c]);return i.jsx("div",{className:x("flex justify-center",q[d].gap,u),children:t.map((y,S)=>i.jsx("input",{ref:j=>{g.current[S]=j},type:o?"password":"text",inputMode:f==="numeric"?"numeric":"text",maxLength:1,value:y,onChange:j=>O(S,j.target.value),onKeyDown:j=>F(S,j),onPaste:v,disabled:n,className:se,autoComplete:"one-time-code","aria-label":`PIN 입력 ${S+1}/${r}`},S))})};at.displayName="PinInput";const Re=a.forwardRef(({className:r,orientation:s="vertical",children:e,...n},l)=>{const o={vertical:"overflow-y-auto overflow-x-hidden",horizontal:"overflow-x-auto overflow-y-hidden",both:"overflow-auto"};return i.jsx("div",{ref:l,className:x("relative",o[s],"[&::-webkit-scrollbar]:w-2","[&::-webkit-scrollbar-track]:bg-transparent","[&::-webkit-scrollbar-thumb]:bg-uix-gray-300/50","[&::-webkit-scrollbar-thumb]:rounded-full","[&::-webkit-scrollbar-thumb]:hover:bg-uix-gray-300",r),...n,children:e})});Re.displayName="ScrollArea";function Jt({threshold:r=500,className:s}){const[e,n]=a.useState(!1);a.useEffect(()=>{const o=()=>{n(window.scrollY>r)};return window.addEventListener("scroll",o,{passive:!0}),()=>window.removeEventListener("scroll",o)},[r]);const l=()=>{window.scrollTo({top:0,behavior:"smooth"})};return i.jsx(D.AnimatePresence,{children:e&&i.jsx(D.motion.button,{initial:{opacity:0,scale:.5,y:20},animate:{opacity:1,scale:1,y:0},exit:{opacity:0,scale:.5,y:20},whileHover:{scale:1.1,y:-2},whileTap:{scale:.9},transition:{default:{type:"spring",stiffness:300,damping:20,mass:.8},scale:{duration:.06,ease:[0,0,1,1]}},onClick:l,className:x("fixed bottom-6 right-6 z-50 p-3 rounded-full bg-uix-prime-300 backdrop-blur-sm text-uix-white-100 hover:bg-uix-prime-400 cursor-pointer uix-convex-colored",s),"aria-label":"Scroll to top",children:i.jsx(Ne.ChevronUp,{size:24})})})}const ot=a.forwardRef(({className:r,children:s,variant:e="default",container:n=!0,animate:l=!0,id:o,...c},d)=>{const f=a.useRef(null),u=D.useInView(f,{once:!0,margin:"-100px"}),p="backdrop-blur-xl backdrop-saturate-150 uix-glass-border uix-convex",t={default:`bg-uix-surface-200/50 ${p}`,secondary:`bg-uix-surface-300/50 ${p}`,accent:`bg-uix-prime-300/60 ${p} text-uix-white-100`},m=n?i.jsx("div",{className:"max-w-4xl mx-auto px-6 xl:px-12",children:s}):s;return i.jsx("section",{ref:g=>{f.current=g,typeof d=="function"?d(g):d&&(d.current=g)},id:o,className:x("relative py-16 xl:py-24 rounded-[2.5rem]",t[e],r),...c,children:l?i.jsx(D.motion.div,{initial:{opacity:0,y:40},animate:u?{opacity:1,y:0}:{opacity:0,y:40},transition:{type:"spring",stiffness:200,damping:25,mass:1},children:m}):m})});ot.displayName="Section";const it=a.forwardRef(({className:r,children:s,subtitle:e,...n},l)=>i.jsxs("div",{className:"text-center mb-14 xl:mb-20",children:[i.jsx("h2",{ref:l,className:x("text-4xl xl:text-6xl font-bold text-uix-text-100 mb-6 tracking-tight",r),...n,children:s}),e&&i.jsx("p",{className:"text-xl xl:text-2xl text-uix-gray-200 max-w-3xl mx-auto leading-relaxed",children:e})]}));it.displayName="SectionTitle";const lt=a.createContext(null),es=()=>{const r=a.useContext(lt);if(!r)throw new Error("Sheet components must be used within a Sheet provider");return r},ct=({open:r,onOpenChange:s,children:e})=>(a.useEffect(()=>{const n=l=>{l.key==="Escape"&&r&&s(!1)};return document.addEventListener("keydown",n),()=>document.removeEventListener("keydown",n)},[r,s]),a.useEffect(()=>(r?document.body.style.overflow="hidden":document.body.style.overflow="",()=>{document.body.style.overflow=""}),[r]),i.jsx(lt.Provider,{value:{open:r,onOpenChange:s},children:e}));ct.displayName="Sheet";const dt=a.forwardRef(({className:r,side:s="left",children:e},n)=>{const{open:l,onOpenChange:o}=es(),c={left:{initial:{x:"-100%"},animate:{x:0},exit:{x:"-100%"}},right:{initial:{x:"100%"},animate:{x:0},exit:{x:"100%"}}},d={left:"left-0",right:"right-0"};return i.jsx(D.AnimatePresence,{children:l&&i.jsxs(i.Fragment,{children:[i.jsx(D.motion.div,{initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:{duration:.2},className:"fixed inset-0 z-50 bg-black/50 backdrop-blur-sm",onClick:()=>o(!1)}),i.jsx(D.motion.div,{ref:n,initial:c[s].initial,animate:c[s].animate,exit:c[s].exit,transition:{type:"spring",damping:25,stiffness:300},className:x("fixed top-0 z-50 h-full w-72 bg-uix-surface-100/90 backdrop-blur-xl backdrop-saturate-150 border-r border-black/[0.3] dark:border-white/[0.03] rounded-r-3xl uix-convex-lg",d[s],r),children:e})]})})});dt.displayName="SheetContent";const ut=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("flex flex-col gap-2 p-6 border-b border-black/10 dark:border-white/10",r),...e,children:s}));ut.displayName="SheetHeader";const ft=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("h2",{ref:n,className:x("text-lg font-semibold text-uix-text-100",r),...e,children:s}));ft.displayName="SheetTitle";const ts="relative uix-glass uix-glass-border uix-convex uix-glass-noise rounded-3xl",mt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("aside",{ref:n,className:x("hidden xl:flex flex-col w-60 h-full",ts,r),...e,children:s}));mt.displayName="Sidebar";const pt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("flex flex-col gap-1 p-6",r),...e,children:s}));pt.displayName="SidebarHeader";const xt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx(Re,{ref:n,className:x("flex-1 p-4",r),...e,children:s}));xt.displayName="SidebarContent";const bt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("mb-6",r),...e,children:s}));bt.displayName="SidebarGroup";const gt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("px-3 mb-3 text-xs font-semibold uppercase tracking-widest text-uix-sub1-300/80",r),...e,children:s}));gt.displayName="SidebarGroupLabel";const ht=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("ul",{ref:n,className:x("space-y-1",r),...e,children:s}));ht.displayName="SidebarMenu";const vt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("li",{ref:n,className:x("",r),...e,children:s}));vt.displayName="SidebarMenuItem";const yt=a.forwardRef(({className:r,isActive:s=!1,children:e,...n},l)=>{const{onDrag:o,onDragStart:c,onDragEnd:d,...f}=n;return i.jsxs(D.motion.button,{ref:l,type:"button",className:x("relative flex w-full items-center gap-2 rounded-xl px-3 py-2.5 text-base font-medium","hover:bg-uix-surface-300/50 hover:text-uix-text-100",s?"text-uix-prime-300 bg-uix-prime-100/15":"text-uix-text-300",r),whileHover:{x:4,scale:1.01},whileTap:{scale:.97},transition:{duration:.08,ease:[0,0,1,1]},...f,children:[s&&i.jsx(D.motion.span,{className:"absolute left-0 top-1/2 -translate-y-1/2 w-0.5 h-5 bg-uix-prime-300 rounded-r-full",layoutId:"sidebar-active-indicator",transition:{type:"spring",stiffness:300,damping:20,mass:.8}}),e]})});yt.displayName="SidebarMenuButton";const wt=({value:r,onChange:s,min:e=0,max:n=100,step:l=1,disabled:o=!1,variant:c="default",size:d="md",color:f="prime",showValue:u=!1,showMinMax:p=!1,marks:t,label:m,description:g,className:T})=>{const O=a.useRef(null),[F,v]=a.useState(!1),q=(r-e)/(n-e)*100,V=a.useCallback(B=>{if(!O.current)return r;const R=O.current.getBoundingClientRect(),A=Math.max(0,Math.min(1,(B-R.left)/R.width)),$=e+A*(n-e),w=Math.round($/l)*l;return Math.max(e,Math.min(n,w))},[e,n,l,r]),se=B=>{if(o)return;B.preventDefault(),v(!0);const R=V(B.clientX);s(R);const A=w=>{const h=V(w.clientX);s(h)},$=()=>{v(!1),document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",$)};document.addEventListener("mousemove",A),document.addEventListener("mouseup",$)},y=B=>{if(o)return;v(!0);const R=B.touches[0],A=V(R.clientX);s(A);const $=h=>{const E=h.touches[0],U=V(E.clientX);s(U)},w=()=>{v(!1),document.removeEventListener("touchmove",$),document.removeEventListener("touchend",w)};document.addEventListener("touchmove",$),document.addEventListener("touchend",w)},S=B=>{if(o)return;let R=r;switch(B.key){case"ArrowRight":case"ArrowUp":R=Math.min(n,r+l);break;case"ArrowLeft":case"ArrowDown":R=Math.max(e,r-l);break;case"Home":R=e;break;case"End":R=n;break;default:return}B.preventDefault(),s(R)},j={sm:{track:"h-1.5",thumb:"w-4 h-4"},md:{track:"h-2",thumb:"w-5 h-5"},lg:{track:"h-3",thumb:"w-6 h-6"}},M={prime:"bg-uix-prime-400",sub1:"bg-uix-sub1-400",sub2:"bg-uix-sub2-400"},H={prime:"bg-uix-prime-300",sub1:"bg-uix-sub1-300",sub2:"bg-uix-sub2-300"},_={default:"bg-uix-surface-300",glass:"uix-glass"};return i.jsxs("div",{className:x("w-full",T),children:[(m||u)&&i.jsxs("div",{className:"flex items-center justify-between mb-2",children:[m&&i.jsx("span",{className:"text-sm font-medium text-uix-text-100",children:m}),u&&i.jsx("span",{className:"text-sm font-semibold text-uix-text-200",children:r})]}),g&&i.jsx("p",{className:"text-sm text-uix-text-300 mb-3",children:g}),i.jsxs("div",{ref:O,className:x("relative w-full rounded-full cursor-pointer",j[d].track,_[c],o&&"opacity-50 cursor-not-allowed"),onMouseDown:se,onTouchStart:y,role:"slider","aria-valuemin":e,"aria-valuemax":n,"aria-valuenow":r,"aria-disabled":o,tabIndex:o?-1:0,onKeyDown:S,children:[i.jsx("div",{className:x("absolute left-0 top-0 h-full rounded-full",M[f]),style:{width:`${q}%`}}),t==null?void 0:t.map(B=>{const R=(B.value-e)/(n-e)*100;return i.jsxs("div",{className:"absolute top-1/2 -translate-y-1/2 -translate-x-1/2",style:{left:`${R}%`},children:[i.jsx("div",{className:x("w-2 h-2 rounded-full",B.value<=r?H[f]:"bg-uix-surface-400")}),i.jsx("span",{className:"absolute top-4 left-1/2 -translate-x-1/2 text-xs text-uix-text-300 whitespace-nowrap",children:B.label})]},B.value)}),i.jsx(D.motion.div,{className:x("absolute top-1/2 -translate-y-1/2 -translate-x-1/2 rounded-full","uix-convex-colored shadow-lg",j[d].thumb,H[f],!o&&"cursor-grab active:cursor-grabbing"),style:{left:`${q}%`},animate:{scale:F?1.15:1},whileHover:o?void 0:{scale:1.1},transition:{duration:.1}})]}),p&&i.jsxs("div",{className:"flex justify-between mt-2 text-xs text-uix-text-300",children:[i.jsx("span",{children:e}),i.jsx("span",{children:n})]})]})};wt.displayName="Slider";const Nt=a.forwardRef(({className:r,variant:s="default",rounded:e="3xl",children:n,...l},o)=>{const c="relative uix-glass uix-glass-border uix-convex uix-glass-noise",d={default:"",subtle:"uix-convex-subtle",strong:"uix-convex-lg"},f={none:"rounded-none",sm:"rounded-lg",md:"rounded-xl",lg:"rounded-2xl",xl:"rounded-[1.5rem]","2xl":"rounded-[2rem]","3xl":"rounded-3xl",full:"rounded-full"};return i.jsx("div",{ref:o,className:x(c,d[s],f[e],r),...l,children:n})});Nt.displayName="Surface";const St=a.createContext(null),Tt=()=>{const r=a.useContext(St);if(!r)throw new Error("Tabs components must be used within a Tabs provider");return r},Et=a.forwardRef(({className:r,defaultValue:s,children:e,...n},l)=>{const[o,c]=a.useState(s),d=a.useId();return i.jsx(St.Provider,{value:{activeTab:o,setActiveTab:c,tabsId:d},children:i.jsx("div",{ref:l,className:x("w-full",r),...n,children:e})})});Et.displayName="Tabs";const jt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("inline-flex items-center gap-1 rounded-2xl bg-uix-surface-300/50 backdrop-blur-xl backdrop-saturate-150 uix-glass-border p-1.5 uix-convex",r),...e,children:s}));jt.displayName="TabsList";const kt=a.forwardRef(({className:r,value:s,children:e,...n},l)=>{const{activeTab:o,setActiveTab:c,tabsId:d}=Tt(),f=o===s,{onDrag:u,onDragStart:p,onDragEnd:t,...m}=n;return i.jsxs(D.motion.button,{ref:l,type:"button",onClick:()=>c(s),className:x("relative inline-flex items-center justify-center px-4 py-2 text-base font-medium rounded-xl","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-uix-prime-300",f?"text-uix-text-100":"text-uix-text-300 hover:text-uix-text-100",r),whileHover:{scale:1.02},whileTap:{scale:.96},transition:{duration:.06,ease:[0,0,1,1]},...m,children:[f&&i.jsx(D.motion.span,{layoutId:`tabs-indicator-${d}`,className:"absolute inset-0 bg-uix-surface-100 rounded-xl uix-convex-sm",transition:{type:"spring",stiffness:300,damping:20,mass:.8}}),i.jsx("span",{className:"relative z-10",children:e})]})});kt.displayName="TabsTrigger";const Dt=a.forwardRef(({className:r,children:s,...e},n)=>i.jsx("div",{ref:n,className:x("relative mt-4",r),...e,children:i.jsx("div",{className:"grid [&>*]:col-start-1 [&>*]:row-start-1",children:s})}));Dt.displayName="TabsPanels";const Rt=a.forwardRef(({className:r,value:s,children:e,...n},l)=>{const{activeTab:o}=Tt(),c=o===s;return i.jsx(D.motion.div,{ref:l,className:x(r),initial:!1,animate:{opacity:c?1:0,scale:c?1:.98,y:c?0:8,visibility:c?"visible":"hidden"},transition:{type:"spring",stiffness:400,damping:25,mass:.8},"aria-hidden":!c,children:i.jsx("div",{...n,children:e})})});Rt.displayName="TabsContent";function ss(r){if(typeof document>"u")return;let s=document.head||document.getElementsByTagName("head")[0],e=document.createElement("style");e.type="text/css",s.appendChild(e),e.styleSheet?e.styleSheet.cssText=r:e.appendChild(document.createTextNode(r))}const rs=r=>{switch(r){case"success":return os;case"info":return ls;case"warning":return is;case"error":return cs;default:return null}},ns=Array(12).fill(0),as=({visible:r,className:s})=>a.createElement("div",{className:["sonner-loading-wrapper",s].filter(Boolean).join(" "),"data-visible":r},a.createElement("div",{className:"sonner-spinner"},ns.map((e,n)=>a.createElement("div",{className:"sonner-loading-bar",key:`spinner-bar-${n}`})))),os=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),is=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},a.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),ls=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.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 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),cs=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},a.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),ds=a.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},a.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),a.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),us=()=>{const[r,s]=a.useState(document.hidden);return a.useEffect(()=>{const e=()=>{s(document.hidden)};return document.addEventListener("visibilitychange",e),()=>window.removeEventListener("visibilitychange",e)},[]),r};let je=1;class fs{constructor(){this.subscribe=s=>(this.subscribers.push(s),()=>{const e=this.subscribers.indexOf(s);this.subscribers.splice(e,1)}),this.publish=s=>{this.subscribers.forEach(e=>e(s))},this.addToast=s=>{this.publish(s),this.toasts=[...this.toasts,s]},this.create=s=>{var e;const{message:n,...l}=s,o=typeof(s==null?void 0:s.id)=="number"||((e=s.id)==null?void 0:e.length)>0?s.id:je++,c=this.toasts.find(f=>f.id===o),d=s.dismissible===void 0?!0:s.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),c?this.toasts=this.toasts.map(f=>f.id===o?(this.publish({...f,...s,id:o,title:n}),{...f,...s,id:o,dismissible:d,title:n}):f):this.addToast({title:n,...l,dismissible:d,id:o}),o},this.dismiss=s=>(s?(this.dismissedToasts.add(s),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:s,dismiss:!0})))):this.toasts.forEach(e=>{this.subscribers.forEach(n=>n({id:e.id,dismiss:!0}))}),s),this.message=(s,e)=>this.create({...e,message:s}),this.error=(s,e)=>this.create({...e,message:s,type:"error"}),this.success=(s,e)=>this.create({...e,type:"success",message:s}),this.info=(s,e)=>this.create({...e,type:"info",message:s}),this.warning=(s,e)=>this.create({...e,type:"warning",message:s}),this.loading=(s,e)=>this.create({...e,type:"loading",message:s}),this.promise=(s,e)=>{if(!e)return;let n;e.loading!==void 0&&(n=this.create({...e,promise:s,type:"loading",message:e.loading,description:typeof e.description!="function"?e.description:void 0}));const l=Promise.resolve(s instanceof Function?s():s);let o=n!==void 0,c;const d=l.then(async u=>{if(c=["resolve",u],a.isValidElement(u))o=!1,this.create({id:n,type:"default",message:u});else if(ps(u)&&!u.ok){o=!1;const t=typeof e.error=="function"?await e.error(`HTTP error! status: ${u.status}`):e.error,m=typeof e.description=="function"?await e.description(`HTTP error! status: ${u.status}`):e.description,T=typeof t=="object"&&!a.isValidElement(t)?t:{message:t};this.create({id:n,type:"error",description:m,...T})}else if(u instanceof Error){o=!1;const t=typeof e.error=="function"?await e.error(u):e.error,m=typeof e.description=="function"?await e.description(u):e.description,T=typeof t=="object"&&!a.isValidElement(t)?t:{message:t};this.create({id:n,type:"error",description:m,...T})}else if(e.success!==void 0){o=!1;const t=typeof e.success=="function"?await e.success(u):e.success,m=typeof e.description=="function"?await e.description(u):e.description,T=typeof t=="object"&&!a.isValidElement(t)?t:{message:t};this.create({id:n,type:"success",description:m,...T})}}).catch(async u=>{if(c=["reject",u],e.error!==void 0){o=!1;const p=typeof e.error=="function"?await e.error(u):e.error,t=typeof e.description=="function"?await e.description(u):e.description,g=typeof p=="object"&&!a.isValidElement(p)?p:{message:p};this.create({id:n,type:"error",description:t,...g})}}).finally(()=>{o&&(this.dismiss(n),n=void 0),e.finally==null||e.finally.call(e)}),f=()=>new Promise((u,p)=>d.then(()=>c[0]==="reject"?p(c[1]):u(c[1])).catch(p));return typeof n!="string"&&typeof n!="number"?{unwrap:f}:Object.assign(n,{unwrap:f})},this.custom=(s,e)=>{const n=(e==null?void 0:e.id)||je++;return this.create({jsx:s(n),id:n,...e}),n},this.getActiveToasts=()=>this.toasts.filter(s=>!this.dismissedToasts.has(s.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}const Y=new fs,ms=(r,s)=>{const e=(s==null?void 0:s.id)||je++;return Y.addToast({title:r,...s,id:e}),e},ps=r=>r&&typeof r=="object"&&"ok"in r&&typeof r.ok=="boolean"&&"status"in r&&typeof r.status=="number",xs=ms,bs=()=>Y.toasts,gs=()=>Y.getActiveToasts(),hs=Object.assign(xs,{success:Y.success,info:Y.info,warning:Y.warning,error:Y.error,custom:Y.custom,message:Y.message,promise:Y.promise,dismiss:Y.dismiss,loading:Y.loading},{getHistory:bs,getToasts:gs});ss("[data-sonner-toaster][dir=ltr],html[dir=ltr]{--toast-icon-margin-start:-3px;--toast-icon-margin-end:4px;--toast-svg-margin-start:-1px;--toast-svg-margin-end:0px;--toast-button-margin-start:auto;--toast-button-margin-end:0;--toast-close-button-start:0;--toast-close-button-end:unset;--toast-close-button-transform:translate(-35%, -35%)}[data-sonner-toaster][dir=rtl],html[dir=rtl]{--toast-icon-margin-start:4px;--toast-icon-margin-end:-3px;--toast-svg-margin-start:0px;--toast-svg-margin-end:-1px;--toast-button-margin-start:0;--toast-button-margin-end:auto;--toast-close-button-start:unset;--toast-close-button-end:0;--toast-close-button-transform:translate(35%, -35%)}[data-sonner-toaster]{position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1:hsl(0, 0%, 99%);--gray2:hsl(0, 0%, 97.3%);--gray3:hsl(0, 0%, 95.1%);--gray4:hsl(0, 0%, 93%);--gray5:hsl(0, 0%, 90.9%);--gray6:hsl(0, 0%, 88.7%);--gray7:hsl(0, 0%, 85.8%);--gray8:hsl(0, 0%, 78%);--gray9:hsl(0, 0%, 56.1%);--gray10:hsl(0, 0%, 52.3%);--gray11:hsl(0, 0%, 43.5%);--gray12:hsl(0, 0%, 9%);--border-radius:8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:0;z-index:999999999;transition:transform .4s ease}@media (hover:none) and (pointer:coarse){[data-sonner-toaster][data-lifted=true]{transform:none}}[data-sonner-toaster][data-x-position=right]{right:var(--offset-right)}[data-sonner-toaster][data-x-position=left]{left:var(--offset-left)}[data-sonner-toaster][data-x-position=center]{left:50%;transform:translateX(-50%)}[data-sonner-toaster][data-y-position=top]{top:var(--offset-top)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--offset-bottom)}[data-sonner-toast]{--y:translateY(100%);--lift-amount:calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:0;overflow-wrap:anywhere}[data-sonner-toast][data-styled=true]{padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px rgba(0,0,0,.1);width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}[data-sonner-toast]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-y-position=top]{top:0;--y:translateY(-100%);--lift:1;--lift-amount:calc(1 * var(--gap))}[data-sonner-toast][data-y-position=bottom]{bottom:0;--y:translateY(100%);--lift:-1;--lift-amount:calc(var(--lift) * var(--gap))}[data-sonner-toast][data-styled=true] [data-description]{font-weight:400;line-height:1.4;color:#3f3f3f}[data-rich-colors=true][data-sonner-toast][data-styled=true] [data-description]{color:inherit}[data-sonner-toaster][data-sonner-theme=dark] [data-description]{color:#e8e8e8}[data-sonner-toast][data-styled=true] [data-title]{font-weight:500;line-height:1.5;color:inherit}[data-sonner-toast][data-styled=true] [data-icon]{display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}[data-sonner-toast][data-promise=true] [data-icon]>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");function we(r){return r.label!==void 0}const vs=3,ys="24px",ws="16px",ze=4e3,Ns=356,Ss=14,Ts=45,Es=200;function re(...r){return r.filter(Boolean).join(" ")}function js(r){const[s,e]=r.split("-"),n=[];return s&&n.push(s),e&&n.push(e),n}const ks=r=>{var s,e,n,l,o,c,d,f,u;const{invert:p,toast:t,unstyled:m,interacting:g,setHeights:T,visibleToasts:O,heights:F,index:v,toasts:q,expanded:V,removeToast:se,defaultRichColors:y,closeButton:S,style:j,cancelButtonStyle:M,actionButtonStyle:H,className:_="",descriptionClassName:B="",duration:R,position:A,gap:$,expandByDefault:w,classNames:h,icons:E,closeButtonAriaLabel:U="Close toast"}=r,[Z,J]=a.useState(null),[oe,xe]=a.useState(null),[N,I]=a.useState(!1),[C,K]=a.useState(!1),[le,k]=a.useState(!1),[ce,be]=a.useState(!1),[ge,de]=a.useState(!1),[It,Se]=a.useState(0),[Mt,Ce]=a.useState(0),pe=a.useRef(t.duration||R||ze),Ie=a.useRef(null),ne=a.useRef(null),Bt=v===0,At=v+1<=O,X=t.type,ue=t.dismissible!==!1,_t=t.className||"",Lt=t.descriptionClassName||"",he=a.useMemo(()=>F.findIndex(b=>b.toastId===t.id)||0,[F,t.id]),Pt=a.useMemo(()=>{var b;return(b=t.closeButton)!=null?b:S},[t.closeButton,S]),Me=a.useMemo(()=>t.duration||R||ze,[t.duration,R]),Te=a.useRef(0),fe=a.useRef(0),Be=a.useRef(0),me=a.useRef(null),[Ht,zt]=A.split("-"),Ae=a.useMemo(()=>F.reduce((b,L,z)=>z>=he?b:b+L.height,0),[F,he]),_e=us(),Ot=t.invert||p,Ee=X==="loading";fe.current=a.useMemo(()=>he*$+Ae,[he,Ae]),a.useEffect(()=>{pe.current=Me},[Me]),a.useEffect(()=>{I(!0)},[]),a.useEffect(()=>{const b=ne.current;if(b){const L=b.getBoundingClientRect().height;return Ce(L),T(z=>[{toastId:t.id,height:L,position:t.position},...z]),()=>T(z=>z.filter(W=>W.toastId!==t.id))}},[T,t.id]),a.useLayoutEffect(()=>{if(!N)return;const b=ne.current,L=b.style.height;b.style.height="auto";const z=b.getBoundingClientRect().height;b.style.height=L,Ce(z),T(W=>W.find(P=>P.toastId===t.id)?W.map(P=>P.toastId===t.id?{...P,height:z}:P):[{toastId:t.id,height:z,position:t.position},...W])},[N,t.title,t.description,T,t.id,t.jsx,t.action,t.cancel]);const ae=a.useCallback(()=>{K(!0),Se(fe.current),T(b=>b.filter(L=>L.toastId!==t.id)),setTimeout(()=>{se(t)},Es)},[t,se,T,fe]);a.useEffect(()=>{if(t.promise&&X==="loading"||t.duration===1/0||t.type==="loading")return;let b;return V||g||_e?(()=>{if(Be.current<Te.current){const W=new Date().getTime()-Te.current;pe.current=pe.current-W}Be.current=new Date().getTime()})():(()=>{pe.current!==1/0&&(Te.current=new Date().getTime(),b=setTimeout(()=>{t.onAutoClose==null||t.onAutoClose.call(t,t),ae()},pe.current))})(),()=>clearTimeout(b)},[V,g,t,X,_e,ae]),a.useEffect(()=>{t.delete&&(ae(),t.onDismiss==null||t.onDismiss.call(t,t))},[ae,t.delete]);function Vt(){var b;if(E!=null&&E.loading){var L;return a.createElement("div",{className:re(h==null?void 0:h.loader,t==null||(L=t.classNames)==null?void 0:L.loader,"sonner-loader"),"data-visible":X==="loading"},E.loading)}return a.createElement(as,{className:re(h==null?void 0:h.loader,t==null||(b=t.classNames)==null?void 0:b.loader),visible:X==="loading"})}const $t=t.icon||(E==null?void 0:E[X])||rs(X);var Le,Pe;return a.createElement("li",{tabIndex:0,ref:ne,className:re(_,_t,h==null?void 0:h.toast,t==null||(s=t.classNames)==null?void 0:s.toast,h==null?void 0:h.default,h==null?void 0:h[X],t==null||(e=t.classNames)==null?void 0:e[X]),"data-sonner-toast":"","data-rich-colors":(Le=t.richColors)!=null?Le:y,"data-styled":!(t.jsx||t.unstyled||m),"data-mounted":N,"data-promise":!!t.promise,"data-swiped":ge,"data-removed":C,"data-visible":At,"data-y-position":Ht,"data-x-position":zt,"data-index":v,"data-front":Bt,"data-swiping":le,"data-dismissible":ue,"data-type":X,"data-invert":Ot,"data-swipe-out":ce,"data-swipe-direction":oe,"data-expanded":!!(V||w&&N),"data-testid":t.testId,style:{"--index":v,"--toasts-before":v,"--z-index":q.length-v,"--offset":`${C?It:fe.current}px`,"--initial-height":w?"auto":`${Mt}px`,...j,...t.style},onDragEnd:()=>{k(!1),J(null),me.current=null},onPointerDown:b=>{b.button!==2&&(Ee||!ue||(Ie.current=new Date,Se(fe.current),b.target.setPointerCapture(b.pointerId),b.target.tagName!=="BUTTON"&&(k(!0),me.current={x:b.clientX,y:b.clientY})))},onPointerUp:()=>{var b,L,z;if(ce||!ue)return;me.current=null;const W=Number(((b=ne.current)==null?void 0:b.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),ve=Number(((L=ne.current)==null?void 0:L.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),P=new Date().getTime()-((z=Ie.current)==null?void 0:z.getTime()),G=Z==="x"?W:ve,ye=Math.abs(G)/P;if(Math.abs(G)>=Ts||ye>.11){Se(fe.current),t.onDismiss==null||t.onDismiss.call(t,t),xe(Z==="x"?W>0?"right":"left":ve>0?"down":"up"),ae(),be(!0);return}else{var ee,te;(ee=ne.current)==null||ee.style.setProperty("--swipe-amount-x","0px"),(te=ne.current)==null||te.style.setProperty("--swipe-amount-y","0px")}de(!1),k(!1),J(null)},onPointerMove:b=>{var L,z,W;if(!me.current||!ue||((L=window.getSelection())==null?void 0:L.toString().length)>0)return;const P=b.clientY-me.current.y,G=b.clientX-me.current.x;var ye;const ee=(ye=r.swipeDirections)!=null?ye:js(A);!Z&&(Math.abs(G)>1||Math.abs(P)>1)&&J(Math.abs(G)>Math.abs(P)?"x":"y");let te={x:0,y:0};const He=ie=>1/(1.5+Math.abs(ie)/20);if(Z==="y"){if(ee.includes("top")||ee.includes("bottom"))if(ee.includes("top")&&P<0||ee.includes("bottom")&&P>0)te.y=P;else{const ie=P*He(P);te.y=Math.abs(ie)<Math.abs(P)?ie:P}}else if(Z==="x"&&(ee.includes("left")||ee.includes("right")))if(ee.includes("left")&&G<0||ee.includes("right")&&G>0)te.x=G;else{const ie=G*He(G);te.x=Math.abs(ie)<Math.abs(G)?ie:G}(Math.abs(te.x)>0||Math.abs(te.y)>0)&&de(!0),(z=ne.current)==null||z.style.setProperty("--swipe-amount-x",`${te.x}px`),(W=ne.current)==null||W.style.setProperty("--swipe-amount-y",`${te.y}px`)}},Pt&&!t.jsx&&X!=="loading"?a.createElement("button",{"aria-label":U,"data-disabled":Ee,"data-close-button":!0,onClick:Ee||!ue?()=>{}:()=>{ae(),t.onDismiss==null||t.onDismiss.call(t,t)},className:re(h==null?void 0:h.closeButton,t==null||(n=t.classNames)==null?void 0:n.closeButton)},(Pe=E==null?void 0:E.close)!=null?Pe:ds):null,(X||t.icon||t.promise)&&t.icon!==null&&((E==null?void 0:E[X])!==null||t.icon)?a.createElement("div",{"data-icon":"",className:re(h==null?void 0:h.icon,t==null||(l=t.classNames)==null?void 0:l.icon)},t.promise||t.type==="loading"&&!t.icon?t.icon||Vt():null,t.type!=="loading"?$t:null):null,a.createElement("div",{"data-content":"",className:re(h==null?void 0:h.content,t==null||(o=t.classNames)==null?void 0:o.content)},a.createElement("div",{"data-title":"",className:re(h==null?void 0:h.title,t==null||(c=t.classNames)==null?void 0:c.title)},t.jsx?t.jsx:typeof t.title=="function"?t.title():t.title),t.description?a.createElement("div",{"data-description":"",className:re(B,Lt,h==null?void 0:h.description,t==null||(d=t.classNames)==null?void 0:d.description)},typeof t.description=="function"?t.description():t.description):null),a.isValidElement(t.cancel)?t.cancel:t.cancel&&we(t.cancel)?a.createElement("button",{"data-button":!0,"data-cancel":!0,style:t.cancelButtonStyle||M,onClick:b=>{we(t.cancel)&&ue&&(t.cancel.onClick==null||t.cancel.onClick.call(t.cancel,b),ae())},className:re(h==null?void 0:h.cancelButton,t==null||(f=t.classNames)==null?void 0:f.cancelButton)},t.cancel.label):null,a.isValidElement(t.action)?t.action:t.action&&we(t.action)?a.createElement("button",{"data-button":!0,"data-action":!0,style:t.actionButtonStyle||H,onClick:b=>{we(t.action)&&(t.action.onClick==null||t.action.onClick.call(t.action,b),!b.defaultPrevented&&ae())},className:re(h==null?void 0:h.actionButton,t==null||(u=t.classNames)==null?void 0:u.actionButton)},t.action.label):null)};function Oe(){if(typeof window>"u"||typeof document>"u")return"ltr";const r=document.documentElement.getAttribute("dir");return r==="auto"||!r?window.getComputedStyle(document.documentElement).direction:r}function Ds(r,s){const e={};return[r,s].forEach((n,l)=>{const o=l===1,c=o?"--mobile-offset":"--offset",d=o?ws:ys;function f(u){["top","right","bottom","left"].forEach(p=>{e[`${c}-${p}`]=typeof u=="number"?`${u}px`:u})}typeof n=="number"||typeof n=="string"?f(n):typeof n=="object"?["top","right","bottom","left"].forEach(u=>{n[u]===void 0?e[`${c}-${u}`]=d:e[`${c}-${u}`]=typeof n[u]=="number"?`${n[u]}px`:n[u]}):f(d)}),e}const Rs=a.forwardRef(function(s,e){const{id:n,invert:l,position:o="bottom-right",hotkey:c=["altKey","KeyT"],expand:d,closeButton:f,className:u,offset:p,mobileOffset:t,theme:m="light",richColors:g,duration:T,style:O,visibleToasts:F=vs,toastOptions:v,dir:q=Oe(),gap:V=Ss,icons:se,containerAriaLabel:y="Notifications"}=s,[S,j]=a.useState([]),M=a.useMemo(()=>n?S.filter(N=>N.toasterId===n):S.filter(N=>!N.toasterId),[S,n]),H=a.useMemo(()=>Array.from(new Set([o].concat(M.filter(N=>N.position).map(N=>N.position)))),[M,o]),[_,B]=a.useState([]),[R,A]=a.useState(!1),[$,w]=a.useState(!1),[h,E]=a.useState(m!=="system"?m:typeof window<"u"&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),U=a.useRef(null),Z=c.join("+").replace(/Key/g,"").replace(/Digit/g,""),J=a.useRef(null),oe=a.useRef(!1),xe=a.useCallback(N=>{j(I=>{var C;return(C=I.find(K=>K.id===N.id))!=null&&C.delete||Y.dismiss(N.id),I.filter(({id:K})=>K!==N.id)})},[]);return a.useEffect(()=>Y.subscribe(N=>{if(N.dismiss){requestAnimationFrame(()=>{j(I=>I.map(C=>C.id===N.id?{...C,delete:!0}:C))});return}setTimeout(()=>{Ve.flushSync(()=>{j(I=>{const C=I.findIndex(K=>K.id===N.id);return C!==-1?[...I.slice(0,C),{...I[C],...N},...I.slice(C+1)]:[N,...I]})})})}),[S]),a.useEffect(()=>{if(m!=="system"){E(m);return}if(m==="system"&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?E("dark"):E("light")),typeof window>"u")return;const N=window.matchMedia("(prefers-color-scheme: dark)");try{N.addEventListener("change",({matches:I})=>{E(I?"dark":"light")})}catch{N.addListener(({matches:C})=>{try{E(C?"dark":"light")}catch(K){console.error(K)}})}},[m]),a.useEffect(()=>{S.length<=1&&A(!1)},[S]),a.useEffect(()=>{const N=I=>{var C;if(c.every(k=>I[k]||I.code===k)){var le;A(!0),(le=U.current)==null||le.focus()}I.code==="Escape"&&(document.activeElement===U.current||(C=U.current)!=null&&C.contains(document.activeElement))&&A(!1)};return document.addEventListener("keydown",N),()=>document.removeEventListener("keydown",N)},[c]),a.useEffect(()=>{if(U.current)return()=>{J.current&&(J.current.focus({preventScroll:!0}),J.current=null,oe.current=!1)}},[U.current]),a.createElement("section",{ref:e,"aria-label":`${y} ${Z}`,tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},H.map((N,I)=>{var C;const[K,le]=N.split("-");return M.length?a.createElement("ol",{key:N,dir:q==="auto"?Oe():q,tabIndex:-1,ref:U,className:u,"data-sonner-toaster":!0,"data-sonner-theme":h,"data-y-position":K,"data-x-position":le,style:{"--front-toast-height":`${((C=_[0])==null?void 0:C.height)||0}px`,"--width":`${Ns}px`,"--gap":`${V}px`,...O,...Ds(p,t)},onBlur:k=>{oe.current&&!k.currentTarget.contains(k.relatedTarget)&&(oe.current=!1,J.current&&(J.current.focus({preventScroll:!0}),J.current=null))},onFocus:k=>{k.target instanceof HTMLElement&&k.target.dataset.dismissible==="false"||oe.current||(oe.current=!0,J.current=k.relatedTarget)},onMouseEnter:()=>A(!0),onMouseMove:()=>A(!0),onMouseLeave:()=>{$||A(!1)},onDragEnd:()=>A(!1),onPointerDown:k=>{k.target instanceof HTMLElement&&k.target.dataset.dismissible==="false"||w(!0)},onPointerUp:()=>w(!1)},M.filter(k=>!k.position&&I===0||k.position===N).map((k,ce)=>{var be,ge;return a.createElement(ks,{key:k.id,icons:se,index:ce,toast:k,defaultRichColors:g,duration:(be=v==null?void 0:v.duration)!=null?be:T,className:v==null?void 0:v.className,descriptionClassName:v==null?void 0:v.descriptionClassName,invert:l,visibleToasts:F,closeButton:(ge=v==null?void 0:v.closeButton)!=null?ge:f,interacting:$,position:N,style:v==null?void 0:v.style,unstyled:v==null?void 0:v.unstyled,classNames:v==null?void 0:v.classNames,cancelButtonStyle:v==null?void 0:v.cancelButtonStyle,actionButtonStyle:v==null?void 0:v.actionButtonStyle,closeButtonAriaLabel:v==null?void 0:v.closeButtonAriaLabel,removeToast:xe,toasts:M.filter(de=>de.position==k.position),heights:_.filter(de=>de.position==k.position),setHeights:B,expandByDefault:d,gap:V,expanded:R,swipeDirections:s.swipeDirections})})):null}))}),Ct=({position:r="bottom-center",variant:s="default",theme:e="system",toasterProps:n})=>{const o={default:{toast:"bg-uix-surface-200 text-uix-text-100 border border-uix-border-200 rounded-2xl shadow-lg",title:"text-uix-text-100 font-medium",description:"text-uix-text-200",actionButton:"bg-uix-prime-300 text-white rounded-xl hover:bg-uix-prime-400",cancelButton:"bg-uix-surface-300 text-uix-text-200 rounded-xl hover:bg-uix-surface-400",success:"text-green-500",error:"text-uix-sub1-400",warning:"text-amber-500",info:"text-uix-prime-400"},glass:{toast:"uix-glass uix-glass-border uix-convex rounded-2xl shadow-lg text-uix-text-100",title:"text-uix-text-100 font-medium",description:"text-uix-text-200",actionButton:"bg-uix-prime-300 text-white rounded-xl hover:bg-uix-prime-400",cancelButton:"bg-uix-surface-300/50 text-uix-text-200 rounded-xl hover:bg-uix-surface-400/50",success:"text-green-500",error:"text-uix-sub1-400",warning:"text-amber-500",info:"text-uix-prime-400"}}[s];return i.jsx(Rs,{position:r,theme:e,toastOptions:{unstyled:!0,classNames:{toast:o.toast,title:o.title,description:o.description,actionButton:o.actionButton,cancelButton:o.cancelButton,success:o.success,error:o.error,warning:o.warning,info:o.info},style:{padding:"16px",gap:"8px",display:"flex",alignItems:"center"}},...n})};Ct.displayName="Toaster";exports.Accordion=Xe;exports.AccordionContent=Ke;exports.AccordionItem=We;exports.AccordionTrigger=qe;exports.Badge=ke;exports.Button=Ge;exports.Card=Qe;exports.CardContent=Ze;exports.CardDescription=tt;exports.CardHeader=Je;exports.CardTitle=et;exports.CodeBlock=st;exports.ColorSwipeText=Wt;exports.Dropdown=qt;exports.DropdownContent=Gt;exports.DropdownItem=Qt;exports.DropdownSeparator=Zt;exports.DropdownTrigger=Kt;exports.FileUploader=nt;exports.PinInput=at;exports.ScrollArea=Re;exports.ScrollToTop=Jt;exports.Section=ot;exports.SectionTitle=it;exports.Sheet=ct;exports.SheetContent=dt;exports.SheetHeader=ut;exports.SheetTitle=ft;exports.Sidebar=mt;exports.SidebarContent=xt;exports.SidebarGroup=bt;exports.SidebarGroupLabel=gt;exports.SidebarHeader=pt;exports.SidebarMenu=ht;exports.SidebarMenuButton=yt;exports.SidebarMenuItem=vt;exports.Slider=wt;exports.Surface=Nt;exports.Tabs=Et;exports.TabsContent=Rt;exports.TabsList=jt;exports.TabsPanels=Dt;exports.TabsTrigger=kt;exports.Toaster=Ct;exports.cn=x;exports.toast=hs;
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,40 @@ import { JSX } from 'react/jsx-runtime';
|
|
|
6
6
|
import { ReactNode } from 'react';
|
|
7
7
|
import { ReactPortal } from 'react';
|
|
8
8
|
import { RefAttributes } from 'react';
|
|
9
|
+
import { toast } from 'sonner';
|
|
10
|
+
import { ToasterProps as ToasterProps_2 } from 'sonner';
|
|
11
|
+
|
|
12
|
+
export declare const Accordion: ForwardRefExoticComponent<AccordionProps & RefAttributes<HTMLDivElement>>;
|
|
13
|
+
|
|
14
|
+
export declare const AccordionContent: ForwardRefExoticComponent<AccordionContentProps & RefAttributes<HTMLDivElement>>;
|
|
15
|
+
|
|
16
|
+
export declare interface AccordionContentProps extends HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export declare const AccordionItem: ForwardRefExoticComponent<AccordionItemProps & RefAttributes<HTMLDivElement>>;
|
|
21
|
+
|
|
22
|
+
export declare interface AccordionItemProps extends HTMLAttributes<HTMLDivElement> {
|
|
23
|
+
children: ReactNode;
|
|
24
|
+
/** Unique value for this item */
|
|
25
|
+
value: string;
|
|
26
|
+
/** Disabled state */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export declare interface AccordionProps extends HTMLAttributes<HTMLDivElement> {
|
|
31
|
+
children: ReactNode;
|
|
32
|
+
/** Allow multiple items to be open at once */
|
|
33
|
+
multiple?: boolean;
|
|
34
|
+
/** Default open items (controlled by value) */
|
|
35
|
+
defaultValue?: string[];
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export declare const AccordionTrigger: ForwardRefExoticComponent<AccordionTriggerProps & RefAttributes<HTMLButtonElement>>;
|
|
39
|
+
|
|
40
|
+
export declare interface AccordionTriggerProps extends HTMLAttributes<HTMLButtonElement> {
|
|
41
|
+
children: ReactNode;
|
|
42
|
+
}
|
|
9
43
|
|
|
10
44
|
export declare const Badge: ForwardRefExoticComponent<BadgeProps & RefAttributes<HTMLSpanElement>>;
|
|
11
45
|
|
|
@@ -109,6 +143,70 @@ export declare interface DropdownTriggerProps extends HTMLAttributes<HTMLButtonE
|
|
|
109
143
|
children: ReactNode;
|
|
110
144
|
}
|
|
111
145
|
|
|
146
|
+
export declare const FileUploader: {
|
|
147
|
+
({ onFileSelect, onFilesSelect, accept, maxSizeMB, multiple, disabled, variant, size, icon, title, description, className, onError, }: FileUploaderProps): JSX.Element;
|
|
148
|
+
displayName: string;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
export declare interface FileUploaderProps {
|
|
152
|
+
/** 단일 파일 선택 시 콜백 */
|
|
153
|
+
onFileSelect: (file: File) => void;
|
|
154
|
+
/** 다중 파일 선택 시 콜백 */
|
|
155
|
+
onFilesSelect?: (files: File[]) => void;
|
|
156
|
+
/** 허용 파일 타입 (예: 'image/*', '.pdf,.doc') */
|
|
157
|
+
accept?: string;
|
|
158
|
+
/** 최대 파일 크기 (MB 단위, 기본 10) */
|
|
159
|
+
maxSizeMB?: number;
|
|
160
|
+
/** 다중 파일 선택 허용 */
|
|
161
|
+
multiple?: boolean;
|
|
162
|
+
/** 비활성화 여부 */
|
|
163
|
+
disabled?: boolean;
|
|
164
|
+
/** 스타일 변형 */
|
|
165
|
+
variant?: 'default' | 'glass';
|
|
166
|
+
/** 크기 */
|
|
167
|
+
size?: 'sm' | 'md' | 'lg';
|
|
168
|
+
/** 커스텀 아이콘 */
|
|
169
|
+
icon?: ReactNode;
|
|
170
|
+
/** 제목 텍스트 */
|
|
171
|
+
title?: string;
|
|
172
|
+
/** 설명 텍스트 */
|
|
173
|
+
description?: string;
|
|
174
|
+
/** 추가 클래스명 */
|
|
175
|
+
className?: string;
|
|
176
|
+
/** 파일 크기 초과 시 에러 콜백 */
|
|
177
|
+
onError?: (message: string) => void;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export declare const PinInput: {
|
|
181
|
+
({ length, onComplete, onChange, disabled, error, mask, variant, size, type, className, autoFocus, }: PinInputProps): JSX.Element;
|
|
182
|
+
displayName: string;
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
export declare interface PinInputProps {
|
|
186
|
+
/** PIN 자릿수 (기본 6) */
|
|
187
|
+
length?: number;
|
|
188
|
+
/** 모든 자리 입력 완료 시 콜백 */
|
|
189
|
+
onComplete: (pin: string) => void;
|
|
190
|
+
/** 입력 중 값 변경 콜백 */
|
|
191
|
+
onChange?: (pin: string) => void;
|
|
192
|
+
/** 비활성화 여부 */
|
|
193
|
+
disabled?: boolean;
|
|
194
|
+
/** 에러 상태 */
|
|
195
|
+
error?: boolean;
|
|
196
|
+
/** 비밀번호 마스킹 (●●●) */
|
|
197
|
+
mask?: boolean;
|
|
198
|
+
/** 스타일 변형 */
|
|
199
|
+
variant?: 'default' | 'glass';
|
|
200
|
+
/** 크기 */
|
|
201
|
+
size?: 'sm' | 'md' | 'lg';
|
|
202
|
+
/** 입력 타입 */
|
|
203
|
+
type?: 'numeric' | 'alphanumeric';
|
|
204
|
+
/** 추가 클래스명 */
|
|
205
|
+
className?: string;
|
|
206
|
+
/** 자동 포커스 */
|
|
207
|
+
autoFocus?: boolean;
|
|
208
|
+
}
|
|
209
|
+
|
|
112
210
|
export declare const ScrollArea: ForwardRefExoticComponent<ScrollAreaProps & RefAttributes<HTMLDivElement>>;
|
|
113
211
|
|
|
114
212
|
export declare interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {
|
|
@@ -217,6 +315,49 @@ export declare interface SidebarProps extends HTMLAttributes<HTMLElement> {
|
|
|
217
315
|
children: ReactNode;
|
|
218
316
|
}
|
|
219
317
|
|
|
318
|
+
export declare const Slider: {
|
|
319
|
+
({ value, onChange, min, max, step, disabled, variant, size, color, showValue, showMinMax, marks, label, description, className, }: SliderProps): JSX.Element;
|
|
320
|
+
displayName: string;
|
|
321
|
+
};
|
|
322
|
+
|
|
323
|
+
export declare interface SliderMark {
|
|
324
|
+
value: number;
|
|
325
|
+
label: string;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
export declare interface SliderProps {
|
|
329
|
+
/** 현재 값 */
|
|
330
|
+
value: number;
|
|
331
|
+
/** 값 변경 콜백 */
|
|
332
|
+
onChange: (value: number) => void;
|
|
333
|
+
/** 최솟값 (기본 0) */
|
|
334
|
+
min?: number;
|
|
335
|
+
/** 최댓값 (기본 100) */
|
|
336
|
+
max?: number;
|
|
337
|
+
/** 스텝 단위 (기본 1) */
|
|
338
|
+
step?: number;
|
|
339
|
+
/** 비활성화 여부 */
|
|
340
|
+
disabled?: boolean;
|
|
341
|
+
/** 스타일 변형 */
|
|
342
|
+
variant?: 'default' | 'glass';
|
|
343
|
+
/** 크기 */
|
|
344
|
+
size?: 'sm' | 'md' | 'lg';
|
|
345
|
+
/** 채워진 영역 색상 */
|
|
346
|
+
color?: 'prime' | 'sub1' | 'sub2';
|
|
347
|
+
/** 현재 값 표시 */
|
|
348
|
+
showValue?: boolean;
|
|
349
|
+
/** 양 끝 라벨 표시 */
|
|
350
|
+
showMinMax?: boolean;
|
|
351
|
+
/** 커스텀 마커 */
|
|
352
|
+
marks?: SliderMark[];
|
|
353
|
+
/** 라벨 텍스트 */
|
|
354
|
+
label?: string;
|
|
355
|
+
/** 설명 텍스트 */
|
|
356
|
+
description?: string;
|
|
357
|
+
/** 추가 클래스명 */
|
|
358
|
+
className?: string;
|
|
359
|
+
}
|
|
360
|
+
|
|
220
361
|
export declare const Surface: ForwardRefExoticComponent<SurfaceProps & RefAttributes<HTMLDivElement>>;
|
|
221
362
|
|
|
222
363
|
export declare interface SurfaceProps extends HTMLAttributes<HTMLDivElement> {
|
|
@@ -264,4 +405,22 @@ export declare interface TabsTriggerProps extends HTMLAttributes<HTMLButtonEleme
|
|
|
264
405
|
children: ReactNode;
|
|
265
406
|
}
|
|
266
407
|
|
|
408
|
+
export { toast }
|
|
409
|
+
|
|
410
|
+
export declare const Toaster: {
|
|
411
|
+
({ position, variant, theme, toasterProps, }: ToasterProps): JSX.Element;
|
|
412
|
+
displayName: string;
|
|
413
|
+
};
|
|
414
|
+
|
|
415
|
+
export declare interface ToasterProps {
|
|
416
|
+
/** 토스트 위치 */
|
|
417
|
+
position?: 'top-center' | 'top-right' | 'bottom-center' | 'bottom-right' | 'top-left' | 'bottom-left';
|
|
418
|
+
/** 스타일 변형 */
|
|
419
|
+
variant?: 'default' | 'glass';
|
|
420
|
+
/** 테마 (자동 감지 시 'system') */
|
|
421
|
+
theme?: 'light' | 'dark' | 'system';
|
|
422
|
+
/** sonner 기본 옵션 오버라이드 */
|
|
423
|
+
toasterProps?: Partial<ToasterProps_2>;
|
|
424
|
+
}
|
|
425
|
+
|
|
267
426
|
export { }
|