@jarllyng/nostromo 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-TCA5Z7FL.js +3 -0
- package/dist/chunk-TCA5Z7FL.js.map +1 -0
- package/dist/chunk-Z7WEJ5IQ.cjs +3 -0
- package/dist/chunk-Z7WEJ5IQ.cjs.map +1 -0
- package/dist/components/core/alert.d.cts +1 -1
- package/dist/components/core/alert.d.ts +1 -1
- package/dist/components/core/badge.d.cts +1 -1
- package/dist/components/core/badge.d.ts +1 -1
- package/dist/components/core/breadcrumb.d.cts +1 -1
- package/dist/components/core/breadcrumb.d.ts +1 -1
- package/dist/components/core/button.d.cts +2 -2
- package/dist/components/core/button.d.ts +2 -2
- package/dist/components/core/checkbox.d.cts +1 -1
- package/dist/components/core/checkbox.d.ts +1 -1
- package/dist/components/core/dialog.d.cts +1 -1
- package/dist/components/core/dialog.d.ts +1 -1
- package/dist/components/core/error-message.d.cts +1 -1
- package/dist/components/core/error-message.d.ts +1 -1
- package/dist/components/core/helper-text.d.cts +1 -1
- package/dist/components/core/helper-text.d.ts +1 -1
- package/dist/components/core/icon.d.cts +2 -2
- package/dist/components/core/icon.d.ts +2 -2
- package/dist/components/core/input.d.cts +1 -1
- package/dist/components/core/input.d.ts +1 -1
- package/dist/components/core/label.d.cts +1 -1
- package/dist/components/core/label.d.ts +1 -1
- package/dist/components/core/pagination.d.cts +1 -1
- package/dist/components/core/pagination.d.ts +1 -1
- package/dist/components/core/progress.d.cts +3 -3
- package/dist/components/core/progress.d.ts +3 -3
- package/dist/components/core/radio-group.d.cts +1 -1
- package/dist/components/core/radio-group.d.ts +1 -1
- package/dist/components/core/select.d.cts +3 -3
- package/dist/components/core/select.d.ts +3 -3
- package/dist/components/core/skeleton.d.cts +1 -1
- package/dist/components/core/skeleton.d.ts +1 -1
- package/dist/components/core/switch.d.cts +1 -1
- package/dist/components/core/switch.d.ts +1 -1
- package/dist/components/core/textarea.d.cts +1 -1
- package/dist/components/core/textarea.d.ts +1 -1
- package/dist/components/core/toast.d.cts +2 -2
- package/dist/components/core/toast.d.ts +2 -2
- package/dist/components/core/tooltip.cjs +1 -1
- package/dist/components/core/tooltip.d.cts +11 -3
- package/dist/components/core/tooltip.d.ts +11 -3
- package/dist/components/core/tooltip.js +1 -1
- package/dist/components/marketing/features.d.cts +2 -2
- package/dist/components/marketing/features.d.ts +2 -2
- package/dist/components/marketing/gallery.d.cts +1 -1
- package/dist/components/marketing/gallery.d.ts +1 -1
- package/dist/components/marketing/pricing.d.cts +1 -1
- package/dist/components/marketing/pricing.d.ts +1 -1
- package/dist/components/marketing/testimonials.d.cts +1 -1
- package/dist/components/marketing/testimonials.d.ts +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/package.json +7 -7
- package/dist/chunk-MDXW6IRM.cjs +0 -3
- package/dist/chunk-MDXW6IRM.cjs.map +0 -1
- package/dist/chunk-MOPCE5RA.js +0 -3
- package/dist/chunk-MOPCE5RA.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {a as a$2}from'./chunk-COXN6XBA.js';import {a as a$1}from'./chunk-AC2JBXHQ.js';import a,{useState,useRef,useCallback,useEffect}from'react';import {cva}from'class-variance-authority';var Y=cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),O=a.createContext(void 0),$=()=>{let u=a.useContext(O);if(!u)throw new Error("Tooltip components must be used within a Tooltip");return u},q=a.forwardRef(({children:u,content:h,trigger:T="hover",open:i,onOpenChange:d,delayDuration:e=700,skipDelayDuration:y=300,disabled:f=false,className:E,contentClassName:s,sideOffset:C=4,alignOffset:M=0,avoidCollisions:R=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:x=false,sticky:D="partial",updatePositionDeps:L,closeOnBlur:H=true,...v},c)=>{let[N,t]=useState(false),r=useRef(null),g=useRef(null),l=i!==void 0,n=l?i:N,p=useCallback(_=>{f||(l||t(_),d?.(_));},[f,l,d]),m=useCallback(()=>{r.current!=null&&(clearTimeout(r.current),r.current=null),g.current!=null&&(clearTimeout(g.current),g.current=null);},[]),W=useCallback(()=>{m(),p(true);},[m,p]),B=useCallback(()=>{m(),p(false);},[m,p]),V=useCallback(()=>{m(),!f&&(e>0?r.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,f,e,p]),z=useCallback(()=>{m(),y>0?g.current=window.setTimeout(()=>{p(false);},y):p(false);},[m,y,p]),G=useCallback(()=>{n?z():V();},[n,V,z]),J=useCallback(()=>{n?B():W();},[n,W,B]);useEffect(()=>()=>{m();},[m]);let Q={open:n,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:y,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:H},U=n===true&&h!==void 0;return a.createElement(O.Provider,{value:Q},a.createElement("div",{ref:c,className:a$1("relative inline-block",E),"data-open":n,...v},u,U?a.createElement(F,{className:s||"",sideOffset:C,alignOffset:M,avoidCollisions:R,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:x,sticky:D,updatePositionDeps:L||[],variant:v.variant,size:v.size,placement:v.placement},h):null))});q.displayName="Tooltip";var A=a.forwardRef(({children:u,asChild:h=true,className:T,...i},d)=>{let{trigger:e,openNow:y,closeNow:f,openWithDelay:E,closeWithDelay:s,toggleNow:C,closeOnBlur:M}=$(),R=useRef(null),w={ref:o=>{R.current=o,typeof d=="function"?d(o):d&&(d.current=o);},className:a$1(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&E();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&s();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&E();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&s();},onClick:o=>{i.onClick?.(o),e==="click"&&C();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&y();},onBlur:o=>{i.onBlur?.(o),M&&f();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&f();}};return h&&a.isValidElement(u)?a.cloneElement(u,{...u.props||{},...w}):a.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},u)});A.displayName="TooltipTrigger";var F=a.forwardRef(({children:u,variant:h="default",size:T="md",placement:i="top",className:d,sideOffset:e=4,alignOffset:y=0,avoidCollisions:f=true,collisionBoundary:E,collisionPadding:s=8,hideWhenDetached:C=false,sticky:M="partial",updatePositionDeps:R,...w},o)=>{let x=a.useContext(O)?.open??true,D=useRef(null),[L,H]=useState({top:0,left:0}),v=useCallback(()=>{if(!D.current)return;let c=D.current,N=c.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),r=c.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},l=0,n=0;switch(i){case "top":l=t.top-r.height-e,n=t.left+t.width/2-r.width/2;break;case "top-start":l=t.top-r.height-e,n=t.left;break;case "top-end":l=t.top-r.height-e,n=t.right-r.width;break;case "bottom":l=t.bottom+e,n=t.left+t.width/2-r.width/2;break;case "bottom-start":l=t.bottom+e,n=t.left;break;case "bottom-end":l=t.bottom+e,n=t.right-r.width;break;case "left":l=t.top+t.height/2-r.height/2,n=t.left-r.width-e;break;case "left-start":l=t.top,n=t.left-r.width-e;break;case "left-end":l=t.bottom-r.height,n=t.left-r.width-e;break;case "right":l=t.top+t.height/2-r.height/2,n=t.right+e;break;case "right-start":l=t.top,n=t.right+e;break;case "right-end":l=t.bottom-r.height,n=t.right+e;break}f&&(n<s?n=s:n+r.width>g.width-s&&(n=g.width-r.width-s),l<s?l=s:l+r.height>g.height-s&&(l=g.height-r.height-s)),H({top:l,left:n});},[i,e,f,s]);return a.useLayoutEffect(()=>{v();let c=()=>v();return window.addEventListener("resize",c),window.addEventListener("scroll",c),()=>{window.removeEventListener("resize",c),window.removeEventListener("scroll",c);}},[v,R,x]),a.createElement("div",{ref:c=>{D.current=c,typeof o=="function"?o(c):o&&(o.current=c);},role:"tooltip","data-tooltip-instance":"nostromo","data-state":x?"open":"closed","aria-hidden":x?void 0:true,className:a$1(Y({variant:h,size:T,placement:i}),x?"opacity-100":"pointer-events-none opacity-0",d),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},u,a.createElement("div",{className:a$1(Z({variant:h,placement:i}))}))});F.displayName="TooltipContent";var tt=({children:u,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>a.createElement("div",{"data-tooltip-provider":true},u),j=a$2(q);j.Trigger=A;j.Content=F;j.Provider=tt;export{Y as a,Z as b,A as c,F as d,tt as e,j as f};//# sourceMappingURL=chunk-TCA5Z7FL.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-TCA5Z7FL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"iMAMMA,CAAAA,CAAkBC,GAAAA,CACtB,kGAAA,CACA,CACE,QAAA,CAAU,CACR,OAAA,CAAS,CACP,QAAS,yDAAA,CACT,KAAA,CAAO,yDAAA,CACP,IAAA,CAAM,0DACN,OAAA,CAAS,oCAAA,CACT,OAAA,CAAS,oCAAA,CACT,MAAO,4CAAA,CACP,IAAA,CAAM,8BACR,CAAA,CACA,IAAA,CAAM,CACJ,EAAA,CAAI,mBAAA,CACJ,GAAI,mBAAA,CACJ,EAAA,CAAI,qBACN,CAAA,CACA,UAAW,CACT,GAAA,CAAK,4CAAA,CACL,WAAA,CAAa,0BACb,SAAA,CAAW,0BAAA,CACX,MAAA,CAAQ,yCAAA,CACR,eAAgB,sBAAA,CAChB,YAAA,CAAc,uBAAA,CACd,IAAA,CAAM,2CACN,YAAA,CAAc,uBAAA,CACd,UAAA,CAAY,0BAAA,CACZ,MAAO,yCAAA,CACP,aAAA,CAAe,sBAAA,CACf,WAAA,CAAa,yBACf,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,SAAA,CACT,IAAA,CAAM,IAAA,CACN,UAAW,KACb,CACF,CACF,CAAA,CAEMC,EAAgBD,GAAAA,CAAI,4BAAA,CAA8B,CACtD,QAAA,CAAU,CACR,OAAA,CAAS,CACP,OAAA,CAAS,iCAAA,CACT,MAAO,iCAAA,CACP,IAAA,CAAM,iCAAA,CACN,OAAA,CAAS,iBACT,OAAA,CAAS,gBAAA,CACT,KAAA,CAAO,gBAAA,CACP,KAAM,aACR,CAAA,CACA,SAAA,CAAW,CACT,IAAK,qDAAA,CACL,WAAA,CAAa,kCAAA,CACb,SAAA,CAAW,mCAAA,CACX,MAAA,CAAQ,uDAAA,CACR,cAAA,CAAgB,qCAChB,YAAA,CAAc,qCAAA,CACd,IAAA,CAAM,qDAAA,CACN,aAAc,kCAAA,CACd,UAAA,CAAY,qCAAA,CACZ,KAAA,CAAO,sDACP,aAAA,CAAe,kCAAA,CACf,WAAA,CAAa,qCACf,CACF,CAAA,CACA,eAAA,CAAiB,CACf,OAAA,CAAS,UACT,SAAA,CAAW,KACb,CACF,CAAC,EAsEKE,CAAAA,CAAiBC,CAAAA,CAAM,aAAA,CAC3B,MACF,EAEMC,CAAAA,CAAoB,IAAM,CAC9B,IAAMC,CAAAA,CAAUF,CAAAA,CAAM,UAAA,CAAWD,CAAc,EAC/C,GAAI,CAACG,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,kDAAkD,CAAA,CAEpE,OAAOA,CACT,CAAA,CAGMC,CAAAA,CAAmBH,CAAAA,CAAM,UAAA,CAC7B,CACE,CACE,QAAA,CAAAI,CAAAA,CACA,QAAAC,CAAAA,CACA,OAAA,CAAAC,CAAAA,CAAU,OAAA,CACV,KAAMC,CAAAA,CACN,YAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,EAAgB,GAAA,CAChB,iBAAA,CAAAC,CAAAA,CAAoB,GAAA,CACpB,QAAA,CAAAC,CAAAA,CAAW,KAAA,CACX,SAAA,CAAAC,EACA,gBAAA,CAAAC,CAAAA,CACA,UAAA,CAAAC,CAAAA,CAAa,EACb,WAAA,CAAAC,CAAAA,CAAc,CAAA,CACd,eAAA,CAAAC,EAAkB,IAAA,CAClB,iBAAA,CAAAC,CAAAA,CACA,gBAAA,CAAAC,EAAmB,CAAA,CACnB,gBAAA,CAAAC,CAAAA,CAAmB,KAAA,CACnB,OAAAC,CAAAA,CAAS,SAAA,CACT,kBAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CAAc,IAAA,CACd,GAAGC,CACL,EACAC,CAAAA,GACG,CACH,GAAM,CAACC,CAAAA,CAAcC,CAAe,CAAA,CAAIC,QAAAA,CAAS,KAAK,CAAA,CAChDC,CAAAA,CAAgBC,MAAAA,CACpB,IACF,EACMC,CAAAA,CAAoBD,MAAAA,CAExB,IAAI,CAAA,CAEAE,EAAexB,CAAAA,GAAmB,MAAA,CAClCyB,CAAAA,CAAOD,CAAAA,CAAexB,EAAiBkB,CAAAA,CAEvCQ,CAAAA,CAAUC,WAAAA,CACbC,CAAAA,EAAqB,CAChBxB,CAAAA,GAEAoB,CAAAA,EAGFL,CAAAA,CAAgBS,CAAO,EACvB3B,CAAAA,GAAe2B,CAAO,CAAA,EAE1B,CAAA,CACA,CAACxB,CAAAA,CAAUoB,CAAAA,CAAcvB,CAAY,CACvC,CAAA,CAGM4B,CAAAA,CAAcF,WAAAA,CAAY,IAAM,CAChCN,CAAAA,CAAc,OAAA,EAAW,IAAA,GAC3B,YAAA,CAAaA,EAAc,OAAO,CAAA,CAClCA,CAAAA,CAAc,OAAA,CAAU,MAEtBE,CAAAA,CAAkB,OAAA,EAAW,IAAA,GAC/B,YAAA,CAAaA,EAAkB,OAAO,CAAA,CACtCA,CAAAA,CAAkB,OAAA,CAAU,MAEhC,CAAA,CAAG,EAAE,CAAA,CAECO,EAAUH,WAAAA,CAAY,IAAM,CAChCE,CAAAA,GACAH,CAAAA,CAAQ,IAAI,EACd,CAAA,CAAG,CAACG,CAAAA,CAAaH,CAAO,CAAC,EAEnBK,CAAAA,CAAWJ,WAAAA,CAAY,IAAM,CACjCE,GAAY,CACZH,CAAAA,CAAQ,KAAK,EACf,EAAG,CAACG,CAAAA,CAAaH,CAAO,CAAC,CAAA,CAEnBM,CAAAA,CAAgBL,WAAAA,CAAY,IAAM,CACtCE,CAAAA,EAAY,CACR,CAAAzB,CAAAA,GACAF,EAAgB,CAAA,CAClBmB,CAAAA,CAAc,OAAA,CAAU,MAAA,CAAO,WAAW,IAAM,CAC9CK,CAAAA,CAAQ,IAAI,EACd,CAAA,CAAGxB,CAAa,CAAA,CAEhBwB,EAAQ,IAAI,CAAA,EAEhB,CAAA,CAAG,CAACG,EAAazB,CAAAA,CAAUF,CAAAA,CAAewB,CAAO,CAAC,EAE5CO,CAAAA,CAAiBN,WAAAA,CAAY,IAAM,CACvCE,GAAY,CACR1B,CAAAA,CAAoB,CAAA,CACtBoB,CAAAA,CAAkB,QAAU,MAAA,CAAO,UAAA,CAAW,IAAM,CAClDG,EAAQ,KAAK,EACf,CAAA,CAAGvB,CAAiB,EAEpBuB,CAAAA,CAAQ,KAAK,EAEjB,CAAA,CAAG,CAACG,CAAAA,CAAa1B,CAAAA,CAAmBuB,CAAO,CAAC,CAAA,CAEtCQ,CAAAA,CAAkBP,WAAAA,CAAY,IAAM,CACpCF,CAAAA,CACFQ,CAAAA,EAAe,CAEfD,CAAAA,GAEJ,CAAA,CAAG,CAACP,CAAAA,CAAMO,CAAAA,CAAeC,CAAc,CAAC,CAAA,CAElCE,CAAAA,CAAYR,WAAAA,CAAY,IAAM,CAC9BF,CAAAA,CAAMM,CAAAA,EAAS,CACdD,IACP,CAAA,CAAG,CAACL,CAAAA,CAAMK,EAASC,CAAQ,CAAC,CAAA,CAG5BK,SAAAA,CAAU,IACD,IAAM,CACXP,CAAAA,GACF,CAAA,CACC,CAACA,CAAW,CAAC,EAEhB,IAAMQ,CAAAA,CAAmC,CACvC,IAAA,CAAAZ,EACA,OAAA,CAAAC,CAAAA,CACA,OAAA,CAAA3B,CAAAA,CACA,cAAAG,CAAAA,CACA,iBAAA,CAAAC,CAAAA,CACA,OAAA,CAAA2B,EACA,QAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,eAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,WAAA,CAAApB,CACF,CAAA,CAUMuB,CAAAA,CAAsBb,CAAAA,GAAS,IAAA,EAAQ3B,CAAAA,GAAY,MAAA,CAEzD,OACEL,CAAAA,CAAA,aAAA,CAACD,CAAAA,CAAe,QAAA,CAAf,CAAwB,KAAA,CAAO6C,CAAAA,CAAAA,CAC9B5C,CAAAA,CAAA,aAAA,CAAC,OACC,GAAA,CAAKwB,CAAAA,CACL,SAAA,CAAWsB,GAAAA,CAAG,uBAAA,CAAyBlC,CAAS,CAAA,CAChD,WAAA,CAAWoB,EACV,GAAGT,CAAAA,CAAAA,CAEHnB,CAAAA,CACAyC,CAAAA,CACC7C,EAAA,aAAA,CAAC+C,CAAAA,CAAA,CACC,SAAA,CAAWlC,GAAoB,EAAA,CAC/B,UAAA,CAAYC,CAAAA,CACZ,WAAA,CAAaC,CAAAA,CACb,eAAA,CAAiBC,CAAAA,CACjB,iBAAA,CAAmBC,GAAqB,IAAA,CACxC,gBAAA,CAAkBC,CAAAA,CAClB,gBAAA,CAAkBC,EAClB,MAAA,CAAQC,CAAAA,CACR,kBAAA,CAAoBC,CAAAA,EAAsB,EAAC,CAC3C,OAAA,CAASE,CAAAA,CAAM,OAAA,CACf,KAAMA,CAAAA,CAAM,IAAA,CACZ,SAAA,CAAWA,CAAAA,CAAM,WAEhBlB,CACH,CAAA,CACE,IACN,CACF,CAEJ,CACF,EAEAF,CAAAA,CAAiB,WAAA,CAAc,UAKxB,IAAM6C,CAAAA,CAAiBhD,CAAAA,CAAM,UAAA,CAGlC,CAAC,CAAE,QAAA,CAAAI,CAAAA,CAAU,QAAA6C,CAAAA,CAAU,IAAA,CAAM,SAAA,CAAArC,CAAAA,CAAW,GAAGW,CAAM,CAAA,CAAGC,CAAAA,GAAQ,CAC5D,GAAM,CACJ,OAAA,CAAAlB,CAAAA,CACA,OAAA,CAAA+B,EACA,QAAA,CAAAC,CAAAA,CACA,aAAA,CAAAC,CAAAA,CACA,eAAAC,CAAAA,CACA,SAAA,CAAAE,CAAAA,CACA,WAAA,CAAApB,CACF,CAAA,CAAIrB,CAAAA,EAAkB,CAChBiD,CAAAA,CAAarB,OAAoB,IAAI,CAAA,CAErCsB,CAAAA,CAAe,CACnB,GAAA,CAAMC,CAAAA,EAAsB,CACzBF,CAAAA,CAA0D,QAAUE,CAAAA,CACjE,OAAO5B,CAAAA,EAAQ,UAAA,CACjBA,EAAI4B,CAAI,CAAA,CACC5B,CAAAA,GACRA,CAAAA,CAAmD,QAAU4B,CAAAA,EAElE,CAAA,CACA,SAAA,CAAWN,GAAAA,CAAGlC,CAAS,CAAA,CACvB,sBAAA,CAAwB,IAAA,CACxB,YAAA,CAAeyC,GAAqC,CAElD9B,CAAAA,CAAM,YAAA,GAAe8B,CAAkC,EACnD/C,CAAAA,GAAY,OAAA,EACdiC,CAAAA,GAEJ,EACA,YAAA,CAAec,CAAAA,EAAqC,CAClD9B,CAAAA,CAAM,YAAA,GAAe8B,CAAkC,CAAA,CACnD/C,CAAAA,GAAY,SAASkC,CAAAA,GAC3B,CAAA,CACA,cAAA,CAAiBa,GAA0B,CAEzC9B,CAAAA,CAAM,cAAA,GAAiB8B,CAAC,EACpB/C,CAAAA,GAAY,OAAA,EAASiC,CAAAA,GAC3B,CAAA,CACA,cAAA,CAAiBc,CAAAA,EAA0B,CAEzC9B,EAAM,cAAA,GAAiB8B,CAAC,CAAA,CACpB/C,CAAAA,GAAY,SAASkC,CAAAA,GAC3B,CAAA,CACA,OAAA,CAAUa,GAAwB,CAEhC9B,CAAAA,CAAM,OAAA,GAAU8B,CAAC,CAAA,CACb/C,CAAAA,GAAY,OAAA,EAASoC,CAAAA,GAC3B,CAAA,CACA,OAAA,CAAUW,CAAAA,EAAwB,CAEhC9B,EAAM,OAAA,GAAU8B,CAAC,CAAA,CACb/C,CAAAA,GAAY,SAAS+B,CAAAA,GAC3B,CAAA,CACA,MAAA,CAASgB,GAAwB,CAE/B9B,CAAAA,CAAM,MAAA,GAAS8B,CAAC,EACZ/B,CAAAA,EAAagB,CAAAA,GACnB,CAAA,CACA,UAAYe,CAAAA,EAA2B,CAErC9B,CAAAA,CAAM,SAAA,GAAY8B,CAAC,CAAA,CACfA,CAAAA,CAAE,GAAA,GAAQ,QAAA,EAAUf,CAAAA,GAC1B,CACF,CAAA,CAEA,OAAIW,CAAAA,EAAWjD,CAAAA,CAAM,cAAA,CAAeI,CAAQ,EAEnCJ,CAAAA,CAAM,YAAA,CAAaI,CAAAA,CAAU,CAClC,GAAIA,CAAAA,CAAS,KAAA,EAAS,EAAC,CACvB,GAAG+C,CACL,CAAC,CAAA,CAIDnD,CAAAA,CAAA,cAAC,MAAA,CAAA,CACE,GAAGmD,CAAAA,CACJ,QAAA,CAAU7C,IAAY,OAAA,CAAU,CAAA,CAAI,MAAA,CACpC,IAAA,CAAMA,IAAY,OAAA,CAAU,QAAA,CAAW,MAAA,CAAA,CAEtCF,CACH,CAEJ,CAAC,EAED4C,CAAAA,CAAe,YAAc,gBAAA,CAGtB,IAAMD,CAAAA,CAAiB/C,CAAAA,CAAM,WAIlC,CACE,CACE,QAAA,CAAAI,CAAAA,CACA,QAAAkD,CAAAA,CAAU,SAAA,CACV,IAAA,CAAAC,CAAAA,CAAO,KACP,SAAA,CAAAC,CAAAA,CAAY,KAAA,CACZ,SAAA,CAAA5C,EACA,UAAA,CAAAE,CAAAA,CAAa,CAAA,CACb,WAAA,CAAa2C,EAAe,CAAA,CAC5B,eAAA,CAAAzC,CAAAA,CAAkB,IAAA,CAClB,kBAAmB0C,CAAAA,CACnB,gBAAA,CAAAxC,CAAAA,CAAmB,CAAA,CACnB,gBAAA,CAAkByC,CAAAA,CAAoB,KAAA,CACtC,MAAA,CAAQC,EAAU,SAAA,CAClB,kBAAA,CAAAvC,CAAAA,CACA,GAAGE,CACL,CAAA,CACAC,CAAAA,GACG,CAKH,IAAMQ,EAAOhC,CAAAA,CAAM,UAAA,CAAWD,CAAc,CAAA,EAAG,IAAA,EAAQ,IAAA,CACjD8D,CAAAA,CAAahC,MAAAA,CAAuB,IAAI,CAAA,CACxC,CAACiC,CAAAA,CAAUC,CAAW,EAAIpC,QAAAA,CAAS,CAAE,GAAA,CAAK,CAAA,CAAG,KAAM,CAAE,CAAC,CAAA,CAEtDqC,CAAAA,CAAiB9B,WAAAA,CAAY,IAAM,CACvC,GAAI,CAAC2B,CAAAA,CAAW,OAAA,CAAS,OAEzB,IAAMxD,EAAUwD,CAAAA,CAAW,OAAA,CACrBvD,CAAAA,CAAUD,CAAAA,CAAQ,eAAe,aAAA,CACrC,wBACF,CAAA,CAEA,GAAI,CAACC,CAAAA,CAAS,OAEd,IAAM2D,CAAAA,CAAc3D,EAAQ,qBAAA,EAAsB,CAC5C4D,CAAAA,CAAc7D,CAAAA,CAAQ,uBAAsB,CAC5C8D,CAAAA,CAAW,CACf,KAAA,CAAO,OAAO,UAAA,CACd,MAAA,CAAQ,MAAA,CAAO,WACjB,CAAA,CAEIC,CAAAA,CAAM,CAAA,CACNC,CAAAA,CAAO,EAGX,OAAQb,CAAAA,EACN,KAAK,MACHY,CAAAA,CAAMH,CAAAA,CAAY,GAAA,CAAMC,CAAAA,CAAY,OAASpD,CAAAA,CAC7CuD,CAAAA,CACEJ,CAAAA,CAAY,IAAA,CAAOA,EAAY,KAAA,CAAQ,CAAA,CAAIC,CAAAA,CAAY,KAAA,CAAQ,EACjE,MACF,KAAK,WAAA,CACHE,CAAAA,CAAMH,EAAY,GAAA,CAAMC,CAAAA,CAAY,MAAA,CAASpD,CAAAA,CAC7CuD,EAAOJ,CAAAA,CAAY,IAAA,CACnB,MACF,KAAK,SAAA,CACHG,CAAAA,CAAMH,CAAAA,CAAY,GAAA,CAAMC,EAAY,MAAA,CAASpD,CAAAA,CAC7CuD,CAAAA,CAAOJ,CAAAA,CAAY,MAAQC,CAAAA,CAAY,KAAA,CACvC,MACF,KAAK,SACHE,CAAAA,CAAMH,CAAAA,CAAY,MAAA,CAASnD,CAAAA,CAC3BuD,EACEJ,CAAAA,CAAY,IAAA,CAAOA,CAAAA,CAAY,KAAA,CAAQ,EAAIC,CAAAA,CAAY,KAAA,CAAQ,CAAA,CACjE,MACF,KAAK,cAAA,CACHE,CAAAA,CAAMH,CAAAA,CAAY,MAAA,CAASnD,EAC3BuD,CAAAA,CAAOJ,CAAAA,CAAY,IAAA,CACnB,MACF,KAAK,YAAA,CACHG,CAAAA,CAAMH,CAAAA,CAAY,OAASnD,CAAAA,CAC3BuD,CAAAA,CAAOJ,CAAAA,CAAY,KAAA,CAAQC,EAAY,KAAA,CACvC,MACF,KAAK,MAAA,CACHE,EACEH,CAAAA,CAAY,GAAA,CAAMA,CAAAA,CAAY,MAAA,CAAS,CAAA,CAAIC,CAAAA,CAAY,MAAA,CAAS,CAAA,CAClEG,EAAOJ,CAAAA,CAAY,IAAA,CAAOC,CAAAA,CAAY,KAAA,CAAQpD,EAC9C,MACF,KAAK,YAAA,CACHsD,CAAAA,CAAMH,EAAY,GAAA,CAClBI,CAAAA,CAAOJ,CAAAA,CAAY,IAAA,CAAOC,CAAAA,CAAY,KAAA,CAAQpD,CAAAA,CAC9C,MACF,KAAK,UAAA,CACHsD,CAAAA,CAAMH,CAAAA,CAAY,MAAA,CAASC,EAAY,MAAA,CACvCG,CAAAA,CAAOJ,CAAAA,CAAY,IAAA,CAAOC,EAAY,KAAA,CAAQpD,CAAAA,CAC9C,MACF,KAAK,QACHsD,CAAAA,CACEH,CAAAA,CAAY,GAAA,CAAMA,CAAAA,CAAY,OAAS,CAAA,CAAIC,CAAAA,CAAY,MAAA,CAAS,CAAA,CAClEG,EAAOJ,CAAAA,CAAY,KAAA,CAAQnD,CAAAA,CAC3B,MACF,KAAK,aAAA,CACHsD,CAAAA,CAAMH,CAAAA,CAAY,GAAA,CAClBI,CAAAA,CAAOJ,CAAAA,CAAY,KAAA,CAAQnD,CAAAA,CAC3B,MACF,KAAK,WAAA,CACHsD,CAAAA,CAAMH,CAAAA,CAAY,OAASC,CAAAA,CAAY,MAAA,CACvCG,CAAAA,CAAOJ,CAAAA,CAAY,MAAQnD,CAAAA,CAC3B,KACJ,CAGIE,CAAAA,GAEEqD,EAAOnD,CAAAA,CACTmD,CAAAA,CAAOnD,CAAAA,CAEPmD,CAAAA,CAAOH,EAAY,KAAA,CACnBC,CAAAA,CAAS,KAAA,CAAQjD,CAAAA,GAEjBmD,EAAOF,CAAAA,CAAS,KAAA,CAAQD,CAAAA,CAAY,KAAA,CAAQhD,GAI1CkD,CAAAA,CAAMlD,CAAAA,CACRkD,CAAAA,CAAMlD,CAAAA,CAENkD,CAAAA,CAAMF,CAAAA,CAAY,MAAA,CAClBC,CAAAA,CAAS,OAASjD,CAAAA,GAElBkD,CAAAA,CAAMD,CAAAA,CAAS,MAAA,CAASD,EAAY,MAAA,CAAShD,CAAAA,CAAAA,CAAAA,CAIjD6C,CAAAA,CAAY,CAAE,IAAAK,CAAAA,CAAK,IAAA,CAAAC,CAAK,CAAC,EAC3B,CAAA,CAAG,CAACb,CAAAA,CAAW1C,CAAAA,CAAYE,EAAiBE,CAAgB,CAAC,CAAA,CAE7D,OAAAlB,EAAM,eAAA,CAAgB,IAAM,CAC1BgE,CAAAA,GAEA,IAAMM,CAAAA,CAAe,IAAMN,CAAAA,EAAe,CAC1C,OAAA,MAAA,CAAO,gBAAA,CAAiB,QAAA,CAAUM,CAAY,CAAA,CAC9C,MAAA,CAAO,gBAAA,CAAiB,QAAA,CAAUA,CAAY,CAAA,CAEvC,IAAM,CACX,MAAA,CAAO,oBAAoB,QAAA,CAAUA,CAAY,CAAA,CACjD,MAAA,CAAO,mBAAA,CAAoB,QAAA,CAAUA,CAAY,EACnD,CAGF,CAAA,CAAG,CAACN,CAAAA,CAAgB3C,CAAAA,CAAoBW,CAAI,CAAC,CAAA,CAG3ChC,CAAAA,CAAA,aAAA,CAAC,OACC,GAAA,CAAMoD,CAAAA,EAAS,CAEXS,CAAAA,CACA,OAAA,CAAUT,CAAAA,CACR,OAAO5B,CAAAA,EAAQ,WACjBA,CAAAA,CAAI4B,CAAI,CAAA,CACC5B,CAAAA,GACRA,EAAsD,OAAA,CACrD4B,CAAAA,EAEN,CAAA,CACA,IAAA,CAAK,UACL,uBAAA,CAAsB,UAAA,CACtB,YAAA,CAAYpB,CAAAA,CAAO,OAAS,QAAA,CAC5B,aAAA,CAAaA,CAAAA,CAAO,MAAA,CAAY,KAChC,SAAA,CAAWc,GAAAA,CACTlD,CAAAA,CAAgB,CAAE,QAAA0D,CAAAA,CAAS,IAAA,CAAAC,CAAAA,CAAM,SAAA,CAAAC,CAAU,CAAC,CAAA,CAM5CxB,CAAAA,CAAO,aAAA,CAAgB,+BAAA,CACvBpB,CACF,CAAA,CACA,KAAA,CAAO,CACL,QAAA,CAAU,OAAA,CACV,GAAA,CAAKkD,CAAAA,CAAS,IACd,IAAA,CAAMA,CAAAA,CAAS,IAAA,CACf,MAAA,CAAQ,EACV,CAAA,CACC,GAAGvC,CAAAA,CAAAA,CAEHnB,CAAAA,CACDJ,EAAA,aAAA,CAAC,KAAA,CAAA,CAAI,SAAA,CAAW8C,GAAAA,CAAGhD,EAAc,CAAE,OAAA,CAAAwD,CAAAA,CAAS,SAAA,CAAAE,CAAU,CAAC,CAAC,CAAA,CAAG,CAC7D,CAEJ,CACF,EAEAT,CAAAA,CAAe,WAAA,CAAc,gBAAA,CAUtB,IAAMwB,EAAAA,CAAkD,CAAC,CAC9D,QAAA,CAAAnE,CAAAA,CACA,aAAA,CAAeoE,CAAAA,CAAiB,IAChC,iBAAA,CAAmBC,CAAAA,CAAqB,GAAA,CACxC,WAAA,CAAaC,EAAe,KAC9B,CAAA,GACS1E,CAAAA,CAAA,aAAA,CAAC,OAAI,uBAAA,CAAqB,IAAA,CAAA,CAAEI,CAAS,CAAA,CAIxCuE,EAAUC,GAAAA,CAAKzE,CAAgB,EAOrCwE,CAAAA,CAAQ,QAAU3B,CAAAA,CAClB2B,CAAAA,CAAQ,OAAA,CAAU5B,CAAAA,CAClB4B,EAAQ,QAAA,CAAWJ,EAAAA","file":"chunk-TCA5Z7FL.js","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n },\n placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n /**\n * The tooltip body, for the shorthand form:\n * `<Tooltip content=\"...\"> <button /></Tooltip>`.\n *\n * Optional, because `TooltipTrigger` and `TooltipContent` are exported and\n * composing them is the other supported form - and the one the docs show. It\n * was required, which meant the composed form did not type-check at all.\n */\n content?: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n //\n // `content !== undefined` matters for the composed form. Without it, opening\n // a `<Tooltip><TooltipTrigger /><TooltipContent /></Tooltip>` rendered this\n // slot too, with `undefined` inside - a second, empty bubble next to the real\n // one. The shorthand and the composed form are now mutually exclusive, which\n // is what they always looked like from the outside.\n const shouldRenderContent = open === true && content !== undefined;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n // Read the context directly rather than through useTooltipContext: that\n // throws without a provider, and TooltipContent was usable standalone before\n // this. Absent a Tooltip parent there is nothing to open it, so treat it as\n // shown - which is also what it did previously.\n const open = React.useContext(TooltipContext)?.open ?? true;\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n // is a dependency: the box is measured to place it, and measuring\n // it while closed gave a stale position on the first show.\n }, [updatePosition, updatePositionDeps, open]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n data-state={open ? \"open\" : \"closed\"}\n aria-hidden={open ? undefined : true}\n className={cn(\n tooltipVariants({ variant, size, placement }),\n // The content never read the open state. `data-open` was written on the\n // wrapper and nothing - no CSS, no conditional render - ever acted on\n // it, so the tooltip was permanently visible, sitting on top of its own\n // trigger. Bound to opacity rather than unmounted so the\n // `transition-opacity` the variants already declare still runs.\n open ? \"opacity-100\" : \"pointer-events-none opacity-0\",\n className,\n )}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunk7SPPGTBT_cjs=require('./chunk-7SPPGTBT.cjs'),chunkITRGJNWL_cjs=require('./chunk-ITRGJNWL.cjs'),a=require('react'),classVarianceAuthority=require('class-variance-authority');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var a__default=/*#__PURE__*/_interopDefault(a);var Y=classVarianceAuthority.cva("absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200",{variants:{variant:{default:"bg-popover text-popover-foreground border border-border",light:"bg-popover text-popover-foreground border border-border",dark:"bg-popover text-popover-foreground border border-border",success:"bg-success text-success-foreground",warning:"bg-warning text-warning-foreground",error:"bg-destructive text-destructive-foreground",info:"bg-info text-info-foreground"},size:{sm:"text-xs px-2 py-1",md:"text-sm px-3 py-2",lg:"text-base px-4 py-3"},placement:{top:"bottom-full left-1/2 -translate-x-1/2 mb-2","top-start":"bottom-full left-0 mb-2","top-end":"bottom-full right-0 mb-2",bottom:"top-full left-1/2 -translate-x-1/2 mt-2","bottom-start":"top-full left-0 mt-2","bottom-end":"top-full right-0 mt-2",left:"right-full top-1/2 -translate-y-1/2 mr-2","left-start":"right-full top-0 mr-2","left-end":"right-full bottom-0 mr-2",right:"left-full top-1/2 -translate-y-1/2 ml-2","right-start":"left-full top-0 ml-2","right-end":"left-full bottom-0 ml-2"}},defaultVariants:{variant:"default",size:"md",placement:"top"}}),Z=classVarianceAuthority.cva("absolute w-2 h-2 rotate-45",{variants:{variant:{default:"bg-popover border border-border",light:"bg-popover border border-border",dark:"bg-popover border border-border",success:"bg-success-500",warning:"bg-warning-500",error:"bg-destructive",info:"bg-info-500"},placement:{top:"top-full left-1/2 -translate-x-1/2 -translate-y-1/2","top-start":"top-full left-4 -translate-y-1/2","top-end":"top-full right-4 -translate-y-1/2",bottom:"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2","bottom-start":"bottom-full left-4 translate-y-1/2","bottom-end":"bottom-full right-4 translate-y-1/2",left:"left-full top-1/2 -translate-x-1/2 -translate-y-1/2","left-start":"left-full top-4 -translate-x-1/2","left-end":"left-full bottom-4 -translate-x-1/2",right:"right-full top-1/2 translate-x-1/2 -translate-y-1/2","right-start":"right-full top-4 translate-x-1/2","right-end":"right-full bottom-4 translate-x-1/2"}},defaultVariants:{variant:"default",placement:"top"}}),O=a__default.default.createContext(void 0),$=()=>{let u=a__default.default.useContext(O);if(!u)throw new Error("Tooltip components must be used within a Tooltip");return u},q=a__default.default.forwardRef(({children:u,content:h,trigger:T="hover",open:i,onOpenChange:d,delayDuration:e=700,skipDelayDuration:y=300,disabled:f=false,className:E,contentClassName:s,sideOffset:C=4,alignOffset:M=0,avoidCollisions:R=true,collisionBoundary:w,collisionPadding:o=8,hideWhenDetached:x=false,sticky:D="partial",updatePositionDeps:L,closeOnBlur:H=true,...v},c)=>{let[N,t]=a.useState(false),r=a.useRef(null),g=a.useRef(null),l=i!==void 0,n=l?i:N,p=a.useCallback(_=>{f||(l||t(_),d?.(_));},[f,l,d]),m=a.useCallback(()=>{r.current!=null&&(clearTimeout(r.current),r.current=null),g.current!=null&&(clearTimeout(g.current),g.current=null);},[]),W=a.useCallback(()=>{m(),p(true);},[m,p]),B=a.useCallback(()=>{m(),p(false);},[m,p]),V=a.useCallback(()=>{m(),!f&&(e>0?r.current=window.setTimeout(()=>{p(true);},e):p(true));},[m,f,e,p]),z=a.useCallback(()=>{m(),y>0?g.current=window.setTimeout(()=>{p(false);},y):p(false);},[m,y,p]),G=a.useCallback(()=>{n?z():V();},[n,V,z]),J=a.useCallback(()=>{n?B():W();},[n,W,B]);a.useEffect(()=>()=>{m();},[m]);let Q={open:n,setOpen:p,trigger:T,delayDuration:e,skipDelayDuration:y,openNow:W,closeNow:B,openWithDelay:V,closeWithDelay:z,toggleWithDelay:G,toggleNow:J,closeOnBlur:H},U=n===true&&h!==void 0;return a__default.default.createElement(O.Provider,{value:Q},a__default.default.createElement("div",{ref:c,className:chunkITRGJNWL_cjs.a("relative inline-block",E),"data-open":n,...v},u,U?a__default.default.createElement(F,{className:s||"",sideOffset:C,alignOffset:M,avoidCollisions:R,collisionBoundary:w||null,collisionPadding:o,hideWhenDetached:x,sticky:D,updatePositionDeps:L||[],variant:v.variant,size:v.size,placement:v.placement},h):null))});q.displayName="Tooltip";var A=a__default.default.forwardRef(({children:u,asChild:h=true,className:T,...i},d)=>{let{trigger:e,openNow:y,closeNow:f,openWithDelay:E,closeWithDelay:s,toggleNow:C,closeOnBlur:M}=$(),R=a.useRef(null),w={ref:o=>{R.current=o,typeof d=="function"?d(o):d&&(d.current=o);},className:chunkITRGJNWL_cjs.a(T),"data-tooltip-trigger":true,onMouseEnter:o=>{i.onMouseEnter?.(o),e==="hover"&&E();},onMouseLeave:o=>{i.onMouseLeave?.(o),e==="hover"&&s();},onPointerEnter:o=>{i.onPointerEnter?.(o),e==="hover"&&E();},onPointerLeave:o=>{i.onPointerLeave?.(o),e==="hover"&&s();},onClick:o=>{i.onClick?.(o),e==="click"&&C();},onFocus:o=>{i.onFocus?.(o),e==="focus"&&y();},onBlur:o=>{i.onBlur?.(o),M&&f();},onKeyDown:o=>{i.onKeyDown?.(o),o.key==="Escape"&&f();}};return h&&a__default.default.isValidElement(u)?a__default.default.cloneElement(u,{...u.props||{},...w}):a__default.default.createElement("span",{...w,tabIndex:e==="focus"?0:void 0,role:e==="click"?"button":void 0},u)});A.displayName="TooltipTrigger";var F=a__default.default.forwardRef(({children:u,variant:h="default",size:T="md",placement:i="top",className:d,sideOffset:e=4,alignOffset:y=0,avoidCollisions:f=true,collisionBoundary:E,collisionPadding:s=8,hideWhenDetached:C=false,sticky:M="partial",updatePositionDeps:R,...w},o)=>{let x=a__default.default.useContext(O)?.open??true,D=a.useRef(null),[L,H]=a.useState({top:0,left:0}),v=a.useCallback(()=>{if(!D.current)return;let c=D.current,N=c.parentElement?.querySelector("[data-tooltip-trigger]");if(!N)return;let t=N.getBoundingClientRect(),r=c.getBoundingClientRect(),g={width:window.innerWidth,height:window.innerHeight},l=0,n=0;switch(i){case "top":l=t.top-r.height-e,n=t.left+t.width/2-r.width/2;break;case "top-start":l=t.top-r.height-e,n=t.left;break;case "top-end":l=t.top-r.height-e,n=t.right-r.width;break;case "bottom":l=t.bottom+e,n=t.left+t.width/2-r.width/2;break;case "bottom-start":l=t.bottom+e,n=t.left;break;case "bottom-end":l=t.bottom+e,n=t.right-r.width;break;case "left":l=t.top+t.height/2-r.height/2,n=t.left-r.width-e;break;case "left-start":l=t.top,n=t.left-r.width-e;break;case "left-end":l=t.bottom-r.height,n=t.left-r.width-e;break;case "right":l=t.top+t.height/2-r.height/2,n=t.right+e;break;case "right-start":l=t.top,n=t.right+e;break;case "right-end":l=t.bottom-r.height,n=t.right+e;break}f&&(n<s?n=s:n+r.width>g.width-s&&(n=g.width-r.width-s),l<s?l=s:l+r.height>g.height-s&&(l=g.height-r.height-s)),H({top:l,left:n});},[i,e,f,s]);return a__default.default.useLayoutEffect(()=>{v();let c=()=>v();return window.addEventListener("resize",c),window.addEventListener("scroll",c),()=>{window.removeEventListener("resize",c),window.removeEventListener("scroll",c);}},[v,R,x]),a__default.default.createElement("div",{ref:c=>{D.current=c,typeof o=="function"?o(c):o&&(o.current=c);},role:"tooltip","data-tooltip-instance":"nostromo","data-state":x?"open":"closed","aria-hidden":x?void 0:true,className:chunkITRGJNWL_cjs.a(Y({variant:h,size:T,placement:i}),x?"opacity-100":"pointer-events-none opacity-0",d),style:{position:"fixed",top:L.top,left:L.left,zIndex:50},...w},u,a__default.default.createElement("div",{className:chunkITRGJNWL_cjs.a(Z({variant:h,placement:i}))}))});F.displayName="TooltipContent";var tt=({children:u,delayDuration:h=700,skipDelayDuration:T=300,defaultOpen:i=false})=>a__default.default.createElement("div",{"data-tooltip-provider":true},u),j=chunk7SPPGTBT_cjs.a(q);j.Trigger=A;j.Content=F;j.Provider=tt;exports.a=Y;exports.b=Z;exports.c=A;exports.d=F;exports.e=tt;exports.f=j;//# sourceMappingURL=chunk-Z7WEJ5IQ.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-Z7WEJ5IQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/core/tooltip.tsx"],"names":["tooltipVariants","cva","arrowVariants","TooltipContext","React","useTooltipContext","context","TooltipComponent","children","content","trigger","controlledOpen","onOpenChange","delayDuration","skipDelayDuration","disabled","className","contentClassName","sideOffset","alignOffset","avoidCollisions","collisionBoundary","collisionPadding","hideWhenDetached","sticky","updatePositionDeps","closeOnBlur","props","ref","internalOpen","setInternalOpen","useState","delayTimerRef","useRef","skipDelayTimerRef","isControlled","open","setOpen","useCallback","newOpen","clearTimers","openNow","closeNow","openWithDelay","closeWithDelay","toggleWithDelay","toggleNow","useEffect","contextValue","shouldRenderContent","cn","TooltipContent","TooltipTrigger","asChild","triggerRef","triggerProps","node","e","variant","size","placement","_alignOffset","_collisionBoundary","_hideWhenDetached","_sticky","contentRef","position","setPosition","updatePosition","triggerRect","contentRect","viewport","top","left","handleResize","TooltipProvider","_delayDuration","_skipDelayDuration","_defaultOpen","Tooltip","memo"],"mappings":"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","file":"chunk-Z7WEJ5IQ.cjs","sourcesContent":["import React, { useState, useRef, useEffect, useCallback } from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { memo } from \"../../lib/memo\";\n\n// Tooltip variants\nconst tooltipVariants = cva(\n \"absolute z-50 px-3 py-2 text-sm font-medium rounded-md shadow-lg transition-opacity duration-200\",\n {\n variants: {\n variant: {\n default: \"bg-popover text-popover-foreground border border-border\",\n light: \"bg-popover text-popover-foreground border border-border\",\n dark: \"bg-popover text-popover-foreground border border-border\",\n success: \"bg-success text-success-foreground\",\n warning: \"bg-warning text-warning-foreground\",\n error: \"bg-destructive text-destructive-foreground\",\n info: \"bg-info text-info-foreground\",\n },\n size: {\n sm: \"text-xs px-2 py-1\",\n md: \"text-sm px-3 py-2\",\n lg: \"text-base px-4 py-3\",\n },\n placement: {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n \"left-start\": \"right-full top-0 mr-2\",\n \"left-end\": \"right-full bottom-0 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n \"right-start\": \"left-full top-0 ml-2\",\n \"right-end\": \"left-full bottom-0 ml-2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"md\",\n placement: \"top\",\n },\n },\n);\n\nconst arrowVariants = cva(\"absolute w-2 h-2 rotate-45\", {\n variants: {\n variant: {\n default: \"bg-popover border border-border\",\n light: \"bg-popover border border-border\",\n dark: \"bg-popover border border-border\",\n success: \"bg-success-500\",\n warning: \"bg-warning-500\",\n error: \"bg-destructive\",\n info: \"bg-info-500\",\n },\n placement: {\n top: \"top-full left-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"top-start\": \"top-full left-4 -translate-y-1/2\",\n \"top-end\": \"top-full right-4 -translate-y-1/2\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 translate-y-1/2\",\n \"bottom-start\": \"bottom-full left-4 translate-y-1/2\",\n \"bottom-end\": \"bottom-full right-4 translate-y-1/2\",\n left: \"left-full top-1/2 -translate-x-1/2 -translate-y-1/2\",\n \"left-start\": \"left-full top-4 -translate-x-1/2\",\n \"left-end\": \"left-full bottom-4 -translate-x-1/2\",\n right: \"right-full top-1/2 translate-x-1/2 -translate-y-1/2\",\n \"right-start\": \"right-full top-4 translate-x-1/2\",\n \"right-end\": \"right-full bottom-4 translate-x-1/2\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n placement: \"top\",\n },\n});\n\n// Types\nexport interface TooltipProps extends VariantProps<typeof tooltipVariants> {\n children: React.ReactNode;\n /**\n * The tooltip body, for the shorthand form:\n * `<Tooltip content=\"...\"> <button /></Tooltip>`.\n *\n * Optional, because `TooltipTrigger` and `TooltipContent` are exported and\n * composing them is the other supported form - and the one the docs show. It\n * was required, which meant the composed form did not type-check at all.\n */\n content?: React.ReactNode;\n trigger?: \"hover\" | \"click\" | \"focus\" | \"manual\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n delayDuration?: number;\n skipDelayDuration?: number;\n disabled?: boolean;\n className?: string;\n contentClassName?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n closeOnBlur?: boolean;\n}\n\nexport interface TooltipContentProps extends VariantProps<\n typeof tooltipVariants\n> {\n children: React.ReactNode;\n className?: string;\n sideOffset?: number;\n alignOffset?: number;\n avoidCollisions?: boolean;\n collisionBoundary?: Element | null;\n collisionPadding?: number;\n hideWhenDetached?: boolean;\n sticky?: \"partial\" | \"always\";\n updatePositionDeps?: React.DependencyList;\n}\n\nexport interface TooltipTriggerProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n asChild?: boolean;\n className?: string;\n}\n\n// Tooltip Context\ninterface TooltipContextType {\n open: boolean;\n setOpen: (open: boolean) => void;\n trigger: \"hover\" | \"click\" | \"focus\" | \"manual\";\n delayDuration: number;\n skipDelayDuration: number;\n openNow: () => void;\n closeNow: () => void;\n openWithDelay: () => void;\n closeWithDelay: () => void;\n toggleWithDelay: () => void;\n toggleNow: () => void;\n closeOnBlur: boolean;\n}\n\nconst TooltipContext = React.createContext<TooltipContextType | undefined>(\n undefined,\n);\n\nconst useTooltipContext = () => {\n const context = React.useContext(TooltipContext);\n if (!context) {\n throw new Error(\"Tooltip components must be used within a Tooltip\");\n }\n return context;\n};\n\n// Main Tooltip Component\nconst TooltipComponent = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n content,\n trigger = \"hover\",\n open: controlledOpen,\n onOpenChange,\n delayDuration = 700,\n skipDelayDuration = 300,\n disabled = false,\n className,\n contentClassName,\n sideOffset = 4,\n alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached = false,\n sticky = \"partial\",\n updatePositionDeps,\n closeOnBlur = true,\n ...props\n },\n ref,\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const delayTimerRef = useRef<number | ReturnType<typeof setTimeout> | null>(\n null,\n );\n const skipDelayTimerRef = useRef<\n number | ReturnType<typeof setTimeout> | null\n >(null);\n\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (newOpen: boolean) => {\n if (disabled) return;\n\n if (isControlled) {\n onOpenChange?.(newOpen);\n } else {\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen); // notify i uncontrolled\n }\n },\n [disabled, isControlled, onOpenChange],\n );\n\n // --- Tooltip open/close/toggle helpers ---\n const clearTimers = useCallback(() => {\n if (delayTimerRef.current != null) {\n clearTimeout(delayTimerRef.current);\n delayTimerRef.current = null;\n }\n if (skipDelayTimerRef.current != null) {\n clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = null;\n }\n }, []);\n\n const openNow = useCallback(() => {\n clearTimers();\n setOpen(true);\n }, [clearTimers, setOpen]);\n\n const closeNow = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n const openWithDelay = useCallback(() => {\n clearTimers();\n if (disabled) return;\n if (delayDuration > 0) {\n delayTimerRef.current = window.setTimeout(() => {\n setOpen(true);\n }, delayDuration);\n } else {\n setOpen(true);\n }\n }, [clearTimers, disabled, delayDuration, setOpen]);\n\n const closeWithDelay = useCallback(() => {\n clearTimers();\n if (skipDelayDuration > 0) {\n skipDelayTimerRef.current = window.setTimeout(() => {\n setOpen(false);\n }, skipDelayDuration);\n } else {\n setOpen(false);\n }\n }, [clearTimers, skipDelayDuration, setOpen]);\n\n const toggleWithDelay = useCallback(() => {\n if (open) {\n closeWithDelay();\n } else {\n openWithDelay();\n }\n }, [open, openWithDelay, closeWithDelay]);\n\n const toggleNow = useCallback(() => {\n if (open) closeNow();\n else openNow();\n }, [open, openNow, closeNow]);\n\n // Cleanup timers on unmount\n useEffect(() => {\n return () => {\n clearTimers();\n };\n }, [clearTimers]);\n\n const contextValue: TooltipContextType = {\n open,\n setOpen,\n trigger,\n delayDuration,\n skipDelayDuration,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleWithDelay,\n toggleNow,\n closeOnBlur,\n };\n\n // Only render the TooltipContent when open is true (and no pending close timer),\n // to help guard against duplicate tooltips in StrictMode/rapid toggles.\n //\n // `content !== undefined` matters for the composed form. Without it, opening\n // a `<Tooltip><TooltipTrigger /><TooltipContent /></Tooltip>` rendered this\n // slot too, with `undefined` inside - a second, empty bubble next to the real\n // one. The shorthand and the composed form are now mutually exclusive, which\n // is what they always looked like from the outside.\n const shouldRenderContent = open === true && content !== undefined;\n\n return (\n <TooltipContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\"relative inline-block\", className)}\n data-open={open}\n {...props}\n >\n {children}\n {shouldRenderContent ? (\n <TooltipContent\n className={contentClassName || \"\"}\n sideOffset={sideOffset}\n alignOffset={alignOffset}\n avoidCollisions={avoidCollisions}\n collisionBoundary={collisionBoundary || null}\n collisionPadding={collisionPadding}\n hideWhenDetached={hideWhenDetached}\n sticky={sticky}\n updatePositionDeps={updatePositionDeps || []}\n variant={props.variant}\n size={props.size}\n placement={props.placement}\n >\n {content}\n </TooltipContent>\n ) : null}\n </div>\n </TooltipContext.Provider>\n );\n },\n);\n\nTooltipComponent.displayName = \"Tooltip\";\n\n// Note: Tooltip memoization and subcomponent attachment happens at end of file\n\n// Tooltip Trigger Component\nexport const TooltipTrigger = React.forwardRef<\n HTMLElement,\n TooltipTriggerProps\n>(({ children, asChild = true, className, ...props }, ref) => {\n const {\n trigger,\n openNow,\n closeNow,\n openWithDelay,\n closeWithDelay,\n toggleNow,\n closeOnBlur,\n } = useTooltipContext();\n const triggerRef = useRef<HTMLElement>(null);\n\n const triggerProps = {\n ref: (node: HTMLElement) => {\n (triggerRef as React.MutableRefObject<HTMLElement | null>).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLElement | null>).current = node;\n }\n },\n className: cn(className),\n \"data-tooltip-trigger\": true,\n onMouseEnter: (e: React.MouseEvent<HTMLElement>) => {\n // Call external handler first\n props.onMouseEnter?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") {\n openWithDelay();\n }\n },\n onMouseLeave: (e: React.MouseEvent<HTMLElement>) => {\n props.onMouseLeave?.(e as React.MouseEvent<HTMLElement>);\n if (trigger === \"hover\") closeWithDelay();\n },\n onPointerEnter: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerEnter?.(e);\n if (trigger === \"hover\") openWithDelay();\n },\n onPointerLeave: (e: React.PointerEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onPointerLeave?.(e);\n if (trigger === \"hover\") closeWithDelay();\n },\n onClick: (e: React.MouseEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onClick?.(e);\n if (trigger === \"click\") toggleNow();\n },\n onFocus: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onFocus?.(e);\n if (trigger === \"focus\") openNow();\n },\n onBlur: (e: React.FocusEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onBlur?.(e);\n if (closeOnBlur) closeNow();\n },\n onKeyDown: (e: React.KeyboardEvent) => {\n // @ts-expect-error - Event handler type compatibility\n props.onKeyDown?.(e);\n if (e.key === \"Escape\") closeNow();\n },\n };\n\n if (asChild && React.isValidElement(children)) {\n // eslint-disable-next-line react-hooks/refs -- cloneElement merges triggerProps (incl. ref) onto the child; the ref is not read here\n return React.cloneElement(children, {\n ...(children.props || {}),\n ...triggerProps,\n });\n }\n\n return (\n <span\n {...triggerProps}\n tabIndex={trigger === \"focus\" ? 0 : undefined}\n role={trigger === \"click\" ? \"button\" : undefined}\n >\n {children}\n </span>\n );\n});\n\nTooltipTrigger.displayName = \"TooltipTrigger\";\n\n// Tooltip Content Component\nexport const TooltipContent = React.forwardRef<\n HTMLDivElement,\n TooltipContentProps\n>(\n (\n {\n children,\n variant = \"default\",\n size = \"md\",\n placement = \"top\",\n className,\n sideOffset = 4,\n alignOffset: _alignOffset = 0,\n avoidCollisions = true,\n collisionBoundary: _collisionBoundary,\n collisionPadding = 8,\n hideWhenDetached: _hideWhenDetached = false,\n sticky: _sticky = \"partial\",\n updatePositionDeps,\n ...props\n },\n ref,\n ) => {\n // Read the context directly rather than through useTooltipContext: that\n // throws without a provider, and TooltipContent was usable standalone before\n // this. Absent a Tooltip parent there is nothing to open it, so treat it as\n // shown - which is also what it did previously.\n const open = React.useContext(TooltipContext)?.open ?? true;\n const contentRef = useRef<HTMLDivElement>(null);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n\n const updatePosition = useCallback(() => {\n if (!contentRef.current) return;\n\n const content = contentRef.current;\n const trigger = content.parentElement?.querySelector(\n \"[data-tooltip-trigger]\",\n ) as HTMLElement;\n\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate position based on placement\n switch (placement) {\n case \"top\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"top-start\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.left;\n break;\n case \"top-end\":\n top = triggerRect.top - contentRect.height - sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"bottom\":\n top = triggerRect.bottom + sideOffset;\n left =\n triggerRect.left + triggerRect.width / 2 - contentRect.width / 2;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.left;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + sideOffset;\n left = triggerRect.right - contentRect.width;\n break;\n case \"left\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-start\":\n top = triggerRect.top;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"left-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.left - contentRect.width - sideOffset;\n break;\n case \"right\":\n top =\n triggerRect.top + triggerRect.height / 2 - contentRect.height / 2;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-start\":\n top = triggerRect.top;\n left = triggerRect.right + sideOffset;\n break;\n case \"right-end\":\n top = triggerRect.bottom - contentRect.height;\n left = triggerRect.right + sideOffset;\n break;\n }\n\n // Apply collision detection if enabled\n if (avoidCollisions) {\n // Horizontal collision detection\n if (left < collisionPadding) {\n left = collisionPadding;\n } else if (\n left + contentRect.width >\n viewport.width - collisionPadding\n ) {\n left = viewport.width - contentRect.width - collisionPadding;\n }\n\n // Vertical collision detection\n if (top < collisionPadding) {\n top = collisionPadding;\n } else if (\n top + contentRect.height >\n viewport.height - collisionPadding\n ) {\n top = viewport.height - contentRect.height - collisionPadding;\n }\n }\n\n setPosition({ top, left });\n }, [placement, sideOffset, avoidCollisions, collisionPadding]);\n\n React.useLayoutEffect(() => {\n updatePosition();\n\n const handleResize = () => updatePosition();\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleResize);\n };\n // is a dependency: the box is measured to place it, and measuring\n // it while closed gave a stale position on the first show.\n }, [updatePosition, updatePositionDeps, open]);\n\n return (\n <div\n ref={(node) => {\n (\n contentRef as React.MutableRefObject<HTMLDivElement | null>\n ).current = node;\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref) {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current =\n node;\n }\n }}\n role=\"tooltip\"\n data-tooltip-instance=\"nostromo\"\n data-state={open ? \"open\" : \"closed\"}\n aria-hidden={open ? undefined : true}\n className={cn(\n tooltipVariants({ variant, size, placement }),\n // The content never read the open state. `data-open` was written on the\n // wrapper and nothing - no CSS, no conditional render - ever acted on\n // it, so the tooltip was permanently visible, sitting on top of its own\n // trigger. Bound to opacity rather than unmounted so the\n // `transition-opacity` the variants already declare still runs.\n open ? \"opacity-100\" : \"pointer-events-none opacity-0\",\n className,\n )}\n style={{\n position: \"fixed\",\n top: position.top,\n left: position.left,\n zIndex: 50,\n }}\n {...props}\n >\n {children}\n <div className={cn(arrowVariants({ variant, placement }))} />\n </div>\n );\n },\n);\n\nTooltipContent.displayName = \"TooltipContent\";\n\n// Tooltip Provider for global configuration\nexport interface TooltipProviderProps {\n children: React.ReactNode;\n delayDuration?: number;\n skipDelayDuration?: number;\n defaultOpen?: boolean;\n}\n\nexport const TooltipProvider: React.FC<TooltipProviderProps> = ({\n children,\n delayDuration: _delayDuration = 700,\n skipDelayDuration: _skipDelayDuration = 300,\n defaultOpen: _defaultOpen = false,\n}) => {\n return <div data-tooltip-provider>{children}</div>;\n};\n\n// Memoize Tooltip for performance optimization (after all subcomponents are defined)\nconst Tooltip = memo(TooltipComponent) as typeof TooltipComponent & {\n Trigger: typeof TooltipTrigger;\n Content: typeof TooltipContent;\n Provider: typeof TooltipProvider;\n};\n\n// Attach subcomponents to Tooltip for compound component pattern\nTooltip.Trigger = TooltipTrigger;\nTooltip.Content = TooltipContent;\nTooltip.Provider = TooltipProvider;\n\n// Export variants and Tooltip for external use\nexport { Tooltip, tooltipVariants, arrowVariants };\n"]}
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const alertVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const alertTitleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const alertVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const alertTitleVariants: (props?: class_variance_authority_types.ClassProp | undefined) => string;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const badgeVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "secondary" | "outline" | "destructive" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
/**
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const badgeVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "secondary" | "outline" | "destructive" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
/**
|
|
@@ -7,7 +7,7 @@ declare const breadcrumbVariants: (props?: ({
|
|
|
7
7
|
separator?: "default" | "slash" | "arrow" | "dot" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const breadcrumbItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "link" | "current" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
declare const breadcrumbSeparatorVariants: (props?: ({
|
|
13
13
|
variant?: "default" | "compact" | null | undefined;
|
|
@@ -7,7 +7,7 @@ declare const breadcrumbVariants: (props?: ({
|
|
|
7
7
|
separator?: "default" | "slash" | "arrow" | "dot" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const breadcrumbItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "link" | "current" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
declare const breadcrumbSeparatorVariants: (props?: ({
|
|
13
13
|
variant?: "default" | "compact" | null | undefined;
|
|
@@ -3,9 +3,9 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const buttonVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" | "link" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | "xl" | "icon" | null | undefined;
|
|
8
|
-
state?: "
|
|
8
|
+
state?: "default" | "loading" | "success" | "error" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
11
11
|
/**
|
|
@@ -3,9 +3,9 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const buttonVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "secondary" | "outline" | "ghost" | "destructive" | "subtle" | "link" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | "xl" | "icon" | null | undefined;
|
|
8
|
-
state?: "
|
|
8
|
+
state?: "default" | "loading" | "success" | "error" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
11
11
|
/**
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const checkboxVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof checkboxVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const checkboxVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof checkboxVariants> {
|
|
@@ -8,7 +8,7 @@ declare const dialogVariants: (props?: ({
|
|
|
8
8
|
animation?: "default" | "none" | "scale" | "slide" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
declare const backdropVariants: (props?: ({
|
|
11
|
-
variant?: "
|
|
11
|
+
variant?: "default" | "subtle" | "strong" | "colored" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
13
13
|
interface DialogProps {
|
|
14
14
|
open?: boolean;
|
|
@@ -8,7 +8,7 @@ declare const dialogVariants: (props?: ({
|
|
|
8
8
|
animation?: "default" | "none" | "scale" | "slide" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
declare const backdropVariants: (props?: ({
|
|
11
|
-
variant?: "
|
|
11
|
+
variant?: "default" | "subtle" | "strong" | "colored" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
13
13
|
interface DialogProps {
|
|
14
14
|
open?: boolean;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const errorMessageVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "subtle" | "strong" | "inline" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof errorMessageVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const errorMessageVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "subtle" | "strong" | "inline" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface ErrorMessageProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof errorMessageVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const helperTextVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface HelperTextProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof helperTextVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const helperTextVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface HelperTextProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof helperTextVariants> {
|
|
@@ -6,8 +6,8 @@ declare const iconMap: Record<string, React__default.ElementType>;
|
|
|
6
6
|
type IconName = keyof typeof iconMap;
|
|
7
7
|
declare const iconVariants: (props?: ({
|
|
8
8
|
size?: "sm" | "lg" | "xl" | "xs" | "md" | "2xl" | "3xl" | null | undefined;
|
|
9
|
-
weight?: "
|
|
10
|
-
color?: "
|
|
9
|
+
weight?: "light" | "fill" | "bold" | "thin" | "regular" | "duotone" | null | undefined;
|
|
10
|
+
color?: "secondary" | "success" | "error" | "current" | "warning" | "muted" | "primary" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
interface IconProps extends Omit<React__default.HTMLAttributes<SVGSVGElement>, "color">, VariantProps<typeof iconVariants> {
|
|
13
13
|
name: IconName;
|
|
@@ -6,8 +6,8 @@ declare const iconMap: Record<string, React__default.ElementType>;
|
|
|
6
6
|
type IconName = keyof typeof iconMap;
|
|
7
7
|
declare const iconVariants: (props?: ({
|
|
8
8
|
size?: "sm" | "lg" | "xl" | "xs" | "md" | "2xl" | "3xl" | null | undefined;
|
|
9
|
-
weight?: "
|
|
10
|
-
color?: "
|
|
9
|
+
weight?: "light" | "fill" | "bold" | "thin" | "regular" | "duotone" | null | undefined;
|
|
10
|
+
color?: "secondary" | "success" | "error" | "current" | "warning" | "muted" | "primary" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
interface IconProps extends Omit<React__default.HTMLAttributes<SVGSVGElement>, "color">, VariantProps<typeof iconVariants> {
|
|
13
13
|
name: IconName;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const inputVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "subtle" | "success" | "error" | null | undefined;
|
|
7
7
|
inputSize?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const inputVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "subtle" | "success" | "error" | null | undefined;
|
|
7
7
|
inputSize?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "size">, VariantProps<typeof inputVariants> {
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const labelVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | "muted" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
weight?: "bold" | "normal" | "medium" | "semibold" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -3,7 +3,7 @@ import * as React from 'react';
|
|
|
3
3
|
import { VariantProps } from 'class-variance-authority';
|
|
4
4
|
|
|
5
5
|
declare const labelVariants: (props?: ({
|
|
6
|
-
variant?: "
|
|
6
|
+
variant?: "default" | "success" | "error" | "warning" | "info" | "muted" | null | undefined;
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
weight?: "bold" | "normal" | "medium" | "semibold" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
@@ -7,7 +7,7 @@ declare const paginationVariants: (props?: ({
|
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const paginationItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "outline" | "ghost" | "link" | null | undefined;
|
|
11
11
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
13
13
|
interface PaginationProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof paginationVariants> {
|
|
@@ -7,7 +7,7 @@ declare const paginationVariants: (props?: ({
|
|
|
7
7
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const paginationItemVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "outline" | "ghost" | "link" | null | undefined;
|
|
11
11
|
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
13
13
|
interface PaginationProps extends React.HTMLAttributes<HTMLElement>, VariantProps<typeof paginationVariants> {
|
|
@@ -4,15 +4,15 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
4
4
|
|
|
5
5
|
declare const progressVariants: (props?: ({
|
|
6
6
|
size?: "sm" | "lg" | "xl" | "md" | null | undefined;
|
|
7
|
-
variant?: "
|
|
7
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const progressBarVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
11
11
|
animated?: boolean | null | undefined;
|
|
12
12
|
glow?: boolean | null | undefined;
|
|
13
13
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
14
14
|
declare const progressLabelVariants: (props?: ({
|
|
15
|
-
variant?: "
|
|
15
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
16
16
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
17
17
|
interface ProgressProps extends React__default.HTMLAttributes<HTMLDivElement>, VariantProps<typeof progressVariants> {
|
|
18
18
|
value: number;
|
|
@@ -4,15 +4,15 @@ import { VariantProps } from 'class-variance-authority';
|
|
|
4
4
|
|
|
5
5
|
declare const progressVariants: (props?: ({
|
|
6
6
|
size?: "sm" | "lg" | "xl" | "md" | null | undefined;
|
|
7
|
-
variant?: "
|
|
7
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
8
8
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
9
9
|
declare const progressBarVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
11
11
|
animated?: boolean | null | undefined;
|
|
12
12
|
glow?: boolean | null | undefined;
|
|
13
13
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
14
14
|
declare const progressLabelVariants: (props?: ({
|
|
15
|
-
variant?: "
|
|
15
|
+
variant?: "default" | "success" | "error" | "warning" | "alien" | "primary" | "energy" | "health" | null | undefined;
|
|
16
16
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
17
17
|
interface ProgressProps extends React__default.HTMLAttributes<HTMLDivElement>, VariantProps<typeof progressVariants> {
|
|
18
18
|
value: number;
|
|
@@ -6,7 +6,7 @@ declare const radioGroupVariants: (props?: ({
|
|
|
6
6
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
7
7
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
8
|
declare const radioItemVariants: (props?: ({
|
|
9
|
-
variant?: "
|
|
9
|
+
variant?: "default" | "success" | "error" | null | undefined;
|
|
10
10
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof radioGroupVariants> {
|
|
@@ -6,7 +6,7 @@ declare const radioGroupVariants: (props?: ({
|
|
|
6
6
|
orientation?: "horizontal" | "vertical" | null | undefined;
|
|
7
7
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
8
8
|
declare const radioItemVariants: (props?: ({
|
|
9
|
-
variant?: "
|
|
9
|
+
variant?: "default" | "success" | "error" | null | undefined;
|
|
10
10
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
11
11
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
12
12
|
interface RadioGroupProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof radioGroupVariants> {
|
|
@@ -4,14 +4,14 @@ import * as SelectPrimitive from '@radix-ui/react-select';
|
|
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
|
5
5
|
|
|
6
6
|
declare const selectTriggerVariants: (props?: ({
|
|
7
|
-
variant?: "
|
|
7
|
+
variant?: "default" | "outline" | "ghost" | "success" | "error" | null | undefined;
|
|
8
8
|
size?: "default" | "sm" | "lg" | null | undefined;
|
|
9
9
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
10
10
|
declare const selectContentVariants: (props?: ({
|
|
11
|
-
variant?: "
|
|
11
|
+
variant?: "default" | "outline" | "ghost" | "success" | "error" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
13
13
|
declare const selectItemVariants: (props?: ({
|
|
14
|
-
variant?: "
|
|
14
|
+
variant?: "default" | "success" | "error" | "highlight" | null | undefined;
|
|
15
15
|
} & class_variance_authority_types.ClassProp) | undefined) => string;
|
|
16
16
|
interface SelectProps extends React.ComponentPropsWithoutRef<typeof SelectPrimitive.Root> {
|
|
17
17
|
}
|