@xploreu/components 0.4.13 → 0.4.15

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.
Files changed (77) hide show
  1. package/dist/chunk-2XZRLJCN.js +2 -0
  2. package/dist/chunk-2XZRLJCN.js.map +1 -0
  3. package/dist/{chunk-ZZWSZRER.js → chunk-3VMZENNL.js} +2 -2
  4. package/dist/{chunk-ZZWSZRER.js.map → chunk-3VMZENNL.js.map} +1 -1
  5. package/dist/{chunk-7WQRDDWL.js → chunk-6AKSAK5F.js} +2 -2
  6. package/dist/{chunk-7WQRDDWL.js.map → chunk-6AKSAK5F.js.map} +1 -1
  7. package/dist/chunk-AVJU2H5V.js +2 -0
  8. package/dist/{chunk-ITR3T6UB.js.map → chunk-AVJU2H5V.js.map} +1 -1
  9. package/dist/chunk-BTVE2DOC.js +2 -0
  10. package/dist/chunk-BTVE2DOC.js.map +1 -0
  11. package/dist/chunk-COJ4DWGS.js +2 -0
  12. package/dist/chunk-COJ4DWGS.js.map +1 -0
  13. package/dist/{chunk-SFMNEY3D.js → chunk-FB6VMMUL.js} +2 -2
  14. package/dist/{chunk-SFMNEY3D.js.map → chunk-FB6VMMUL.js.map} +1 -1
  15. package/dist/{chunk-7YSKM6DP.js → chunk-GJZZ55GE.js} +2 -2
  16. package/dist/{chunk-7YSKM6DP.js.map → chunk-GJZZ55GE.js.map} +1 -1
  17. package/dist/{chunk-C3FYXQCF.js → chunk-JILBFCPY.js} +2 -2
  18. package/dist/{chunk-C3FYXQCF.js.map → chunk-JILBFCPY.js.map} +1 -1
  19. package/dist/chunk-JLZNZFOO.js +2 -0
  20. package/dist/chunk-JLZNZFOO.js.map +1 -0
  21. package/dist/{chunk-FDXCGFD2.js → chunk-M73NAM5U.js} +2 -2
  22. package/dist/{chunk-FDXCGFD2.js.map → chunk-M73NAM5U.js.map} +1 -1
  23. package/dist/{chunk-RSLKHDFJ.js → chunk-NBRMYO6B.js} +2 -2
  24. package/dist/{chunk-RSLKHDFJ.js.map → chunk-NBRMYO6B.js.map} +1 -1
  25. package/dist/chunk-PU426AFH.js +2 -0
  26. package/dist/chunk-PU426AFH.js.map +1 -0
  27. package/dist/{chunk-KKE76CHJ.js → chunk-QX6F73UK.js} +2 -2
  28. package/dist/{chunk-KKE76CHJ.js.map → chunk-QX6F73UK.js.map} +1 -1
  29. package/dist/{chunk-MMCL4HWD.js → chunk-RJ2SAHLO.js} +2 -2
  30. package/dist/{chunk-MMCL4HWD.js.map → chunk-RJ2SAHLO.js.map} +1 -1
  31. package/dist/{chunk-DNO5M44I.js → chunk-TG3TM7XY.js} +2 -2
  32. package/dist/{chunk-DNO5M44I.js.map → chunk-TG3TM7XY.js.map} +1 -1
  33. package/dist/{chunk-RCA6JRHN.js → chunk-V2D72N26.js} +2 -2
  34. package/dist/{chunk-RCA6JRHN.js.map → chunk-V2D72N26.js.map} +1 -1
  35. package/dist/{chunk-WCAQIMAH.js → chunk-VE5SIEG4.js} +2 -2
  36. package/dist/{chunk-WCAQIMAH.js.map → chunk-VE5SIEG4.js.map} +1 -1
  37. package/dist/{chunk-JP737TCG.js → chunk-VNU37GJC.js} +2 -2
  38. package/dist/{chunk-JP737TCG.js.map → chunk-VNU37GJC.js.map} +1 -1
  39. package/dist/composites/combobox-chip-outside.js +1 -1
  40. package/dist/composites/combobox-chip.js +1 -1
  41. package/dist/composites/combobox-simple.js +1 -1
  42. package/dist/composites/filter-combobox.js +1 -1
  43. package/dist/composites/index.js +1 -1
  44. package/dist/composites/phone-input.js +1 -1
  45. package/dist/composites/profile-avatar.d.ts +1 -1
  46. package/dist/composites/profile-avatar.js +1 -1
  47. package/dist/effects/highlight.js +1 -1
  48. package/dist/effects/index.js +1 -1
  49. package/dist/primitives/combobox.js +1 -1
  50. package/dist/primitives/index.js +1 -1
  51. package/dist/primitives/menu.js +1 -1
  52. package/dist/primitives/tabs.js +1 -1
  53. package/dist/ui/badge.d.ts +16 -6
  54. package/dist/ui/badge.js +1 -1
  55. package/dist/ui/combobox.js +1 -1
  56. package/dist/ui/date-multiple-picker.js +1 -1
  57. package/dist/ui/index.d.ts +28 -5
  58. package/dist/ui/index.js +1 -1
  59. package/dist/ui/menu.js +1 -1
  60. package/dist/ui/pagination.js +1 -1
  61. package/dist/ui/table.js +1 -1
  62. package/dist/ui/tabs.d.ts +1 -1
  63. package/dist/ui/tabs.js +1 -1
  64. package/dist/ui/tooltip.d.ts +1 -1
  65. package/dist/ui/tooltip.js +1 -1
  66. package/package.json +1 -1
  67. package/dist/chunk-AGTMOMFO.js +0 -2
  68. package/dist/chunk-AGTMOMFO.js.map +0 -1
  69. package/dist/chunk-DZKJRP4J.js +0 -2
  70. package/dist/chunk-DZKJRP4J.js.map +0 -1
  71. package/dist/chunk-ITR3T6UB.js +0 -2
  72. package/dist/chunk-KYD4ATTG.js +0 -2
  73. package/dist/chunk-KYD4ATTG.js.map +0 -1
  74. package/dist/chunk-P2DJG2OD.js +0 -2
  75. package/dist/chunk-P2DJG2OD.js.map +0 -1
  76. package/dist/chunk-ZP4ZPH65.js +0 -2
  77. package/dist/chunk-ZP4ZPH65.js.map +0 -1
@@ -1,2 +0,0 @@
1
- import {a as a$3}from'./chunk-WWCXHCNU.js';import {a as a$1,b,c}from'./chunk-NGSCUYDU.js';import {b as b$1}from'./chunk-VNAMAKPG.js';import {a as a$2}from'./chunk-T7HRX3EC.js';import {b as b$2,c as c$1}from'./chunk-DZKJRP4J.js';import*as a from'react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {format}from'date-fns';import {ChevronDown}from'lucide-react';import'react-day-picker';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function Z({className:P,value:M,onValueChange:i,defaultValue:N,required:d,disabled:p,placeholder:k="Pick dates",disabledDates:w,dateFormat:j="LLL dd, y",chipDateFormat:S="d MMM",maxVisible:l,...B}){let R=a.useCallback(e=>{d?e?.length&&i?.(e):i?.(e);},[i,d]),[t,u]=useControlledState({value:M,defaultValue:N,onChange:R}),[z,F]=a.useState(t?.[0]||new Date),[O,T]=a.useState(false),s=!!t?.length,m=a.useMemo(()=>t?[...t].sort((e,n)=>e.getTime()-n.getTime()):[],[t]),V=a.useCallback(e=>{let n=t?.filter(L=>L.getTime()!==e.getTime());d&&!n?.length||u(n);},[t,u,d]),I=l!==void 0?m.slice(0,l):m,b$3=l!==void 0?m.length-l:0;return jsxs("div",{className:"flex flex-col gap-2 w-full",children:[jsxs(a$1,{open:p?false:O,onOpenChange:T,children:[jsx(b,{className:"w-full",render:jsxs(b$1,{className:cn("group h-9 w-full justify-between rounded-xp-card-base border px-3 text-body-medium-3 transition-colors","border-border-primary bg-bg-primary text-text-secondary hover:bg-bg-primary-hover",s&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary","disabled:pointer-events-none disabled:opacity-50",P),variant:null,size:null,disabled:p,children:[jsxs("span",{className:"flex min-w-0 items-center gap-2",children:[jsx(a$2,{className:cn("size-4 shrink-0",s?"text-fg-brand-primary":"text-fg-quaternary")}),jsx("span",{className:"truncate",children:s?`${t.length} ${t.length===1?"date":"dates"} selected`:k})]}),jsx(ChevronDown,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180",s?"text-fg-brand-primary":"text-fg-quaternary")})]})}),jsx(c,{className:"w-auto border-0 rounded-[20px] p-xp-none bg-transparent",style:{background:"linear-gradient(180deg, rgba(46, 51, 90, 0) 0%, rgba(28, 27, 51, 0.04) 100%), radial-gradient(146.13% 118.42% at 50% -15.5%, rgba(255, 255, 255, 0.25) 0%, rgba(255, 255, 255, 0) 99.59%)",backdropFilter:"blur(20px)",boxShadow:"0px 30px 60px 0px #0000001A"},children:jsx(a$3,{autoFocus:true,disabled:w,mode:"multiple",month:z,selected:t,onMonthChange:F,onSelect:e=>{d&&!e?.length||u(e);},...B})})]}),s&&jsxs("div",{className:"flex flex-wrap gap-2",children:[I.map(e=>jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:[format(e,S),!p&&jsx(c$1,{className:"text-fg-quaternary",onClick:n=>{n.stopPropagation(),V(e);}})]},e.toISOString())),b$3>0&&jsxs(b$2,{color:"brand",size:"lg",className:"ring-1 ring-border-brand text-body-medium-3",children:["+",b$3]})]})]})}export{Z as a};//# sourceMappingURL=chunk-ITR3T6UB.js.map
2
- //# sourceMappingURL=chunk-ITR3T6UB.js.map
@@ -1,2 +0,0 @@
1
- import*as e from'react';import {AnimatePresence,motion}from'motion/react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';var ee={top:0,left:0,width:0,height:0},Z=e.createContext(void 0);function te(){let f=e.useContext(Z);if(!f)throw new Error("useHighlight must be used within a HighlightProvider");return f}function se({ref:f,...r}){let{as:d="div",children:c,value:H,defaultValue:y,onValueChange:V,className:U,style:N,transition:u={type:"spring",stiffness:350,damping:35},hover:F=false,click:_=true,enabled:b=true,controlledItems:z,disabled:W=false,exitDelay:E=200,mode:p="children"}=r,s=e.useRef(null);e.useImperativeHandle(f,()=>s.current);let T=r?.boundsOffset??ee,w=T.top??0,I=T.left??0,D=T.width??0,C=T.height??0,S=e.useRef({top:w,left:I,width:D,height:C});e.useEffect(()=>{S.current={top:w,left:I,width:D,height:C};},[w,I,D,C]);let[P,x]=e.useState(H??y??null),[l,k]=e.useState(null),[A,q]=e.useState(""),$=t=>{x(a=>a!==t?(V?.(t),t):a);},i=e.useRef(void 0);e.useEffect(()=>{i.current=t=>{if(!s.current)return;let a=s.current.getBoundingClientRect(),o=S.current,g={top:t.top-a.top+o.top,left:t.left-a.left+o.left,width:t.width+o.width,height:t.height+o.height};k(n=>n&&n.top===g.top&&n.left===g.left&&n.width===g.width&&n.height===g.height?n:g);};});let R=t=>{i.current?.(t);},v=e.useCallback(()=>{k(t=>t===null?t:null);},[]);e.useEffect(()=>{H!==void 0?x(H):y!==void 0&&x(y);},[H,y]);let L=e.useId();e.useEffect(()=>{if(p!=="parent")return;let t=s.current;if(!t)return;let a=()=>{if(!P)return;let o=t.querySelector(`[data-value="${P}"][data-highlight="true"]`);o&&i.current?.(o.getBoundingClientRect());};return t.addEventListener("scroll",a,{passive:true}),()=>t.removeEventListener("scroll",a)},[p,P]);let h=t=>p==="parent"?jsxs(d,{ref:s,className:r?.containerClassName,"data-slot":"motion-highlight-container",style:{position:"relative",zIndex:1},children:[jsx(AnimatePresence,{initial:false,mode:"wait",children:l&&jsx(motion.div,{animate:{top:l.top,left:l.left,width:l.width,height:l.height,opacity:1},className:cn(U,A),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...u,delay:(u?.delay??0)+(E??0)/1e3}},initial:{top:l.top,left:l.left,width:l.width,height:l.height,opacity:0},style:{position:"absolute",zIndex:0,...N},transition:u})}),t]}):t;return jsx(Z.Provider,{value:{mode:p,activeValue:P,setActiveValue:$,id:L,hover:F,click:_,className:U,style:N,transition:u,disabled:W,enabled:b,exitDelay:E,setBounds:R,clearBounds:v,activeClassName:A,setActiveClassName:q,forceUpdateBounds:r?.forceUpdateBounds},children:b?h(z?c:e.Children.map(c,(t,a)=>jsx(ne,{className:r?.itemsClassName,children:t},a))):c})}function J(f,r){return Object.keys(r).reduce((d,c)=>(f.props[c]===void 0&&(d[c]=r[c]),d),{})}function ne({ref:f,as:r,children:d,id:c,value:H,className:y,style:V,transition:U,disabled:N=false,activeClassName:u,exitDelay:F,asChild:_=false,forceUpdateBounds:b,...z}){let W=e.useId(),{activeValue:E,setActiveValue:p,mode:s,setBounds:j,clearBounds:T,hover:w,click:I,enabled:D,className:C,style:S,transition:P,id:x,disabled:l,exitDelay:k,forceUpdateBounds:A,setActiveClassName:q}=te(),$=r??"div",i=d,R=c??H??i.props?.["data-value"]??i.props?.id??W,v=E===R,L=N===void 0?l:N,h=U??P,t=e.useRef(null);e.useImperativeHandle(f,()=>t.current);let a=e.useCallback(n=>{t.current=n;},[]);if(e.useEffect(()=>{if(s!=="parent")return;let n,M=null,Y=b===true||A&&b!==false,G=()=>{if(!t.current)return;let B=t.current.getBoundingClientRect();if(Y){if(M&&M.top===B.top&&M.left===B.left&&M.width===B.width&&M.height===B.height){n=requestAnimationFrame(G);return}M=B,n=requestAnimationFrame(G);}j(B);};if(v?(G(),q(u??"")):E||T(),Y)return ()=>cancelAnimationFrame(n)},[s,v,E,j,T,u,q,b,A]),!e.isValidElement(d))return d;let o={"data-active":v?"true":"false","aria-selected":v,"data-disabled":L,"data-value":R,"data-highlight":true},g=w?{onMouseEnter:n=>{p(R),i.props.onMouseEnter?.(n);},onMouseLeave:n=>{p(null),i.props.onMouseLeave?.(n);}}:I?{onClick:n=>{p(R),i.props.onClick?.(n);}}:{};return _?s==="children"?e.cloneElement(i,{key:R,ref:a,className:cn("relative",i.props.className),...J(i,{...o,"data-slot":"motion-highlight-item-container"}),...g,...z},jsxs(Fragment,{children:[jsx(AnimatePresence,{initial:false,mode:"wait",children:v&&!L&&jsx(motion.div,{animate:{opacity:1},className:cn(C,u),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...h,delay:(h?.delay??0)+(F??k??0)/1e3}},initial:{opacity:0},layoutId:`transition-background-${x}`,style:{position:"absolute",zIndex:0,...S,...V},transition:h,...o})}),jsx($,{className:y,"data-slot":"motion-highlight-item",style:{position:"relative",zIndex:1},...o,children:d})]})):e.cloneElement(i,{ref:a,...J(i,{...o,"data-slot":"motion-highlight-item"}),...g}):D?jsxs($,{ref:t,className:cn(s==="children"&&"relative",y),"data-slot":"motion-highlight-item-container",...o,...z,...g,children:[s==="children"&&jsx(AnimatePresence,{initial:false,mode:"wait",children:v&&!L&&jsx(motion.div,{animate:{opacity:1},className:cn(C,u),"data-slot":"motion-highlight",exit:{opacity:0,transition:{...h,delay:(h?.delay??0)+(F??k??0)/1e3}},initial:{opacity:0},layoutId:`transition-background-${x}`,style:{position:"absolute",zIndex:0,...S,...V},transition:h,...o})}),e.cloneElement(i,{style:{position:"relative",zIndex:1},className:i.props.className,...J(i,{...o,"data-slot":"motion-highlight-item"})})]},R):d}export{te as a,se as b,ne as c};//# sourceMappingURL=chunk-KYD4ATTG.js.map
2
- //# sourceMappingURL=chunk-KYD4ATTG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/effects/highlight.tsx"],"names":["DEFAULT_BOUNDS_OFFSET","HighlightContext","useHighlight","context","Highlight","ref","props","Component","children","value","defaultValue","onValueChange","className","style","transition","hover","click","enabled","controlledItems","disabled","exitDelay","mode","localRef","boundsOffset","boundsOffsetTop","boundsOffsetLeft","boundsOffsetWidth","boundsOffsetHeight","boundsOffsetRef","activeValue","setActiveValue","boundsState","setBoundsState","activeClassNameState","setActiveClassNameState","safeSetActiveValue","id","prev","safeSetBoundsRef","bounds","containerRect","offset","newBounds","safeSetBounds","clearBounds","container","onScroll","activeEl","render","jsxs","jsx","AnimatePresence","motion","cn","child","index","HighlightItem","getNonOverridingDataAttributes","element","dataAttributes","acc","key","as","activeClassName","asChild","forceUpdateBounds","itemId","setBounds","contextClassName","contextStyle","contextTransition","contextId","contextDisabled","contextExitDelay","contextForceUpdateBounds","setActiveClassName","childValue","isActive","isDisabled","itemTransition","refCallback","node","rafId","previousBounds","shouldUpdateBounds","updateBounds","commonHandlers","e","Fragment"],"mappings":"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","file":"chunk-KYD4ATTG.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport {\r\n AnimatePresence,\r\n motion,\r\n type Transition\r\n} from \"motion/react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\ntype HighlightMode = \"children\" | \"parent\"\r\n\r\ntype Bounds = {\r\n top: number;\r\n left: number;\r\n width: number;\r\n height: number;\r\n}\r\n\r\nconst DEFAULT_BOUNDS_OFFSET: Bounds = {\r\n top: 0,\r\n left: 0,\r\n width: 0,\r\n height: 0,\r\n}\r\n\r\ntype HighlightContextType<T extends string> = {\r\n as?: keyof HTMLElementTagNameMap;\r\n mode: HighlightMode;\r\n activeValue: T | null;\r\n setActiveValue: (value: T | null) => void;\r\n setBounds: (bounds: DOMRect) => void;\r\n clearBounds: () => void;\r\n id: string;\r\n hover: boolean;\r\n click: boolean;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n activeClassName?: string;\r\n setActiveClassName: (className: string) => void;\r\n transition?: Transition;\r\n disabled?: boolean;\r\n enabled?: boolean;\r\n exitDelay?: number;\r\n forceUpdateBounds?: boolean;\r\n}\r\n\r\nconst HighlightContext = React.createContext<\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n HighlightContextType<any> | undefined\r\n>(undefined)\r\n\r\nfunction useHighlight<T extends string>(): HighlightContextType<T> {\r\n const context = React.useContext(HighlightContext)\r\n if (!context) {\r\n throw new Error(\"useHighlight must be used within a HighlightProvider\")\r\n }\r\n return context as unknown as HighlightContextType<T>\r\n}\r\n\r\ntype BaseHighlightProps<T extends React.ElementType = \"div\"> = {\r\n as?: T;\r\n ref?: React.Ref<HTMLDivElement>;\r\n mode?: HighlightMode;\r\n value?: string | null;\r\n defaultValue?: string | null;\r\n onValueChange?: (value: string | null) => void;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n transition?: Transition;\r\n hover?: boolean;\r\n click?: boolean;\r\n disabled?: boolean;\r\n enabled?: boolean;\r\n exitDelay?: number;\r\n}\r\n\r\ntype ParentModeHighlightProps = {\r\n boundsOffset?: Partial<Bounds>;\r\n containerClassName?: string;\r\n forceUpdateBounds?: boolean;\r\n}\r\n\r\ntype ControlledParentModeHighlightProps<T extends React.ElementType = \"div\"> =\r\n BaseHighlightProps<T> &\r\n ParentModeHighlightProps & {\r\n mode: \"parent\";\r\n controlledItems: true;\r\n children: React.ReactNode;\r\n }\r\n\r\ntype ControlledChildrenModeHighlightProps<T extends React.ElementType = \"div\"> =\r\n BaseHighlightProps<T> & {\r\n mode?: \"children\" | undefined;\r\n controlledItems: true;\r\n children: React.ReactNode;\r\n }\r\n\r\ntype UncontrolledParentModeHighlightProps<T extends React.ElementType = \"div\"> =\r\n BaseHighlightProps<T> &\r\n ParentModeHighlightProps & {\r\n mode: \"parent\";\r\n controlledItems?: false;\r\n itemsClassName?: string;\r\n children: React.ReactElement | React.ReactElement[];\r\n }\r\n\r\ntype UncontrolledChildrenModeHighlightProps<\r\n T extends React.ElementType = \"div\",\r\n> = BaseHighlightProps<T> & {\r\n mode?: \"children\";\r\n controlledItems?: false;\r\n itemsClassName?: string;\r\n children: React.ReactElement | React.ReactElement[];\r\n}\r\n\r\ntype HighlightProps<T extends React.ElementType = \"div\"> =\r\n | ControlledParentModeHighlightProps<T>\r\n | ControlledChildrenModeHighlightProps<T>\r\n | UncontrolledParentModeHighlightProps<T>\r\n | UncontrolledChildrenModeHighlightProps<T>\r\n\r\nfunction Highlight<T extends React.ElementType = \"div\">({\r\n ref,\r\n ...props\r\n}: HighlightProps<T>) {\r\n const {\r\n as: Component = \"div\",\r\n children,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n className,\r\n style,\r\n transition = { type: \"spring\", stiffness: 350, damping: 35 },\r\n hover = false,\r\n click = true,\r\n enabled = true,\r\n controlledItems,\r\n disabled = false,\r\n exitDelay = 200,\r\n mode = \"children\",\r\n } = props\r\n\r\n const localRef = React.useRef<HTMLDivElement>(null)\r\n React.useImperativeHandle(ref, () => localRef.current as HTMLDivElement)\r\n\r\n const propsBoundsOffset = (props as ParentModeHighlightProps)?.boundsOffset\r\n const boundsOffset = propsBoundsOffset ?? DEFAULT_BOUNDS_OFFSET\r\n const boundsOffsetTop = boundsOffset.top ?? 0\r\n const boundsOffsetLeft = boundsOffset.left ?? 0\r\n const boundsOffsetWidth = boundsOffset.width ?? 0\r\n const boundsOffsetHeight = boundsOffset.height ?? 0\r\n\r\n const boundsOffsetRef = React.useRef({\r\n top: boundsOffsetTop,\r\n left: boundsOffsetLeft,\r\n width: boundsOffsetWidth,\r\n height: boundsOffsetHeight,\r\n })\r\n\r\n React.useEffect(() => {\r\n boundsOffsetRef.current = {\r\n top: boundsOffsetTop,\r\n left: boundsOffsetLeft,\r\n width: boundsOffsetWidth,\r\n height: boundsOffsetHeight,\r\n }\r\n }, [\r\n boundsOffsetTop,\r\n boundsOffsetLeft,\r\n boundsOffsetWidth,\r\n boundsOffsetHeight,\r\n ])\r\n\r\n const [activeValue, setActiveValue] = React.useState<string | null>(\r\n value ?? defaultValue ?? null,\r\n )\r\n const [boundsState, setBoundsState] = React.useState<Bounds | null>(null)\r\n const [activeClassNameState, setActiveClassNameState] =\r\n React.useState<string>(\"\")\r\n\r\n const safeSetActiveValue = (id: string | null) => {\r\n setActiveValue((prev) => {\r\n if (prev !== id) {\r\n onValueChange?.(id)\r\n return id\r\n }\r\n return prev\r\n })\r\n }\r\n\r\n const safeSetBoundsRef = React.useRef<\r\n ((bounds: DOMRect) => void) | undefined\r\n >(undefined)\r\n\r\n React.useEffect(() => {\r\n safeSetBoundsRef.current = (bounds: DOMRect) => {\r\n if (!localRef.current) return\r\n\r\n const containerRect = localRef.current.getBoundingClientRect()\r\n const offset = boundsOffsetRef.current\r\n const newBounds: Bounds = {\r\n top: bounds.top - containerRect.top + offset.top,\r\n left: bounds.left - containerRect.left + offset.left,\r\n width: bounds.width + offset.width,\r\n height: bounds.height + offset.height,\r\n }\r\n\r\n setBoundsState((prev) => {\r\n if (\r\n prev &&\r\n prev.top === newBounds.top &&\r\n prev.left === newBounds.left &&\r\n prev.width === newBounds.width &&\r\n prev.height === newBounds.height\r\n ) {\r\n return prev\r\n }\r\n return newBounds\r\n })\r\n }\r\n })\r\n\r\n const safeSetBounds = (bounds: DOMRect) => {\r\n safeSetBoundsRef.current?.(bounds)\r\n }\r\n\r\n const clearBounds = React.useCallback(() => {\r\n setBoundsState((prev) => (prev === null ? prev : null))\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (value !== undefined) setActiveValue(value)\r\n else if (defaultValue !== undefined) setActiveValue(defaultValue)\r\n }, [value, defaultValue])\r\n\r\n const id = React.useId()\r\n\r\n React.useEffect(() => {\r\n if (mode !== \"parent\") return\r\n const container = localRef.current\r\n if (!container) return\r\n\r\n const onScroll = () => {\r\n if (!activeValue) return\r\n const activeEl = container.querySelector<HTMLElement>(\r\n `[data-value=\"${activeValue}\"][data-highlight=\"true\"]`,\r\n )\r\n if (activeEl)\r\n safeSetBoundsRef.current?.(activeEl.getBoundingClientRect())\r\n }\r\n\r\n container.addEventListener(\"scroll\", onScroll, { passive: true })\r\n return () => container.removeEventListener(\"scroll\", onScroll)\r\n }, [mode, activeValue])\r\n\r\n const render = (children: React.ReactNode) => {\r\n if (mode === \"parent\") {\r\n return (\r\n <Component\r\n ref={localRef}\r\n className={(props as ParentModeHighlightProps)?.containerClassName}\r\n data-slot=\"motion-highlight-container\"\r\n style={{ position: \"relative\", zIndex: 1 }}\r\n >\r\n <AnimatePresence\r\n initial={false}\r\n mode=\"wait\"\r\n >\r\n {boundsState && (\r\n <motion.div\r\n animate={{\r\n top: boundsState.top,\r\n left: boundsState.left,\r\n width: boundsState.width,\r\n height: boundsState.height,\r\n opacity: 1,\r\n }}\r\n className={cn(className, activeClassNameState)}\r\n data-slot=\"motion-highlight\"\r\n exit={{\r\n opacity: 0,\r\n transition: {\r\n ...transition,\r\n delay: (transition?.delay ?? 0) + (exitDelay ?? 0) / 1000,\r\n },\r\n }}\r\n initial={{\r\n top: boundsState.top,\r\n left: boundsState.left,\r\n width: boundsState.width,\r\n height: boundsState.height,\r\n opacity: 0,\r\n }}\r\n style={{ position: \"absolute\", zIndex: 0, ...style }}\r\n transition={transition}\r\n />\r\n )}\r\n </AnimatePresence>\r\n {children}\r\n </Component>\r\n )\r\n }\r\n\r\n return children\r\n }\r\n\r\n return (\r\n <HighlightContext.Provider\r\n value={{\r\n mode,\r\n activeValue,\r\n setActiveValue: safeSetActiveValue,\r\n id,\r\n hover,\r\n click,\r\n className,\r\n style,\r\n transition,\r\n disabled,\r\n enabled,\r\n exitDelay,\r\n setBounds: safeSetBounds,\r\n clearBounds,\r\n activeClassName: activeClassNameState,\r\n setActiveClassName: setActiveClassNameState,\r\n forceUpdateBounds: (props as ParentModeHighlightProps)\r\n ?.forceUpdateBounds,\r\n }}\r\n >\r\n {enabled\r\n ? controlledItems\r\n ? render(children)\r\n : render(\r\n React.Children.map(children, (child, index) => (\r\n <HighlightItem\r\n key={index}\r\n className={props?.itemsClassName}\r\n >\r\n {child}\r\n </HighlightItem>\r\n )),\r\n )\r\n : children}\r\n </HighlightContext.Provider>\r\n )\r\n}\r\n\r\nfunction getNonOverridingDataAttributes(\r\n element: React.ReactElement,\r\n dataAttributes: Record<string, unknown>,\r\n): Record<string, unknown> {\r\n return Object.keys(dataAttributes).reduce<Record<string, unknown>>(\r\n (acc, key) => {\r\n if ((element.props as Record<string, unknown>)[key] === undefined) {\r\n acc[key] = dataAttributes[key]\r\n }\r\n return acc\r\n },\r\n {},\r\n )\r\n}\r\n\r\ntype ExtendedChildProps = React.ComponentProps<\"div\"> & {\r\n id?: string;\r\n ref?: React.Ref<HTMLElement>;\r\n \"data-active\"?: string;\r\n \"data-value\"?: string;\r\n \"data-disabled\"?: boolean;\r\n \"data-highlight\"?: boolean;\r\n \"data-slot\"?: string;\r\n}\r\n\r\ntype HighlightItemProps<T extends React.ElementType = \"div\"> =\r\n React.ComponentProps<T> & {\r\n as?: T;\r\n children: React.ReactElement;\r\n id?: string;\r\n value?: string;\r\n className?: string;\r\n style?: React.CSSProperties;\r\n transition?: Transition;\r\n activeClassName?: string;\r\n disabled?: boolean;\r\n exitDelay?: number;\r\n asChild?: boolean;\r\n forceUpdateBounds?: boolean;\r\n }\r\n\r\nfunction HighlightItem<T extends React.ElementType>({\r\n ref,\r\n as,\r\n children,\r\n id,\r\n value,\r\n className,\r\n style,\r\n transition,\r\n disabled = false,\r\n activeClassName,\r\n exitDelay,\r\n asChild = false,\r\n forceUpdateBounds,\r\n ...props\r\n}: HighlightItemProps<T>) {\r\n const itemId = React.useId()\r\n const {\r\n activeValue,\r\n setActiveValue,\r\n mode,\r\n setBounds,\r\n clearBounds,\r\n hover,\r\n click,\r\n enabled,\r\n className: contextClassName,\r\n style: contextStyle,\r\n transition: contextTransition,\r\n id: contextId,\r\n disabled: contextDisabled,\r\n exitDelay: contextExitDelay,\r\n forceUpdateBounds: contextForceUpdateBounds,\r\n setActiveClassName,\r\n } = useHighlight()\r\n\r\n const Component = as ?? \"div\"\r\n const element = children as React.ReactElement<ExtendedChildProps>\r\n const childValue =\r\n id ?? value ?? element.props?.[\"data-value\"] ?? element.props?.id ?? itemId\r\n const isActive = activeValue === childValue\r\n const isDisabled = disabled === undefined ? contextDisabled : disabled\r\n const itemTransition = transition ?? contextTransition\r\n\r\n const localRef = React.useRef<HTMLDivElement>(null)\r\n React.useImperativeHandle(ref, () => localRef.current as HTMLDivElement)\r\n\r\n const refCallback = React.useCallback((node: HTMLElement | null) => {\r\n localRef.current = node as HTMLDivElement\r\n }, [])\r\n\r\n React.useEffect(() => {\r\n if (mode !== \"parent\") return\r\n let rafId: number\r\n let previousBounds: Bounds | null = null\r\n const shouldUpdateBounds =\r\n forceUpdateBounds === true ||\r\n (contextForceUpdateBounds && forceUpdateBounds !== false)\r\n\r\n const updateBounds = () => {\r\n if (!localRef.current) return\r\n\r\n const bounds = localRef.current.getBoundingClientRect()\r\n\r\n if (shouldUpdateBounds) {\r\n if (\r\n previousBounds &&\r\n previousBounds.top === bounds.top &&\r\n previousBounds.left === bounds.left &&\r\n previousBounds.width === bounds.width &&\r\n previousBounds.height === bounds.height\r\n ) {\r\n rafId = requestAnimationFrame(updateBounds)\r\n return\r\n }\r\n previousBounds = bounds\r\n rafId = requestAnimationFrame(updateBounds)\r\n }\r\n\r\n setBounds(bounds)\r\n }\r\n\r\n if (isActive) {\r\n updateBounds()\r\n setActiveClassName(activeClassName ?? \"\")\r\n } else if (!activeValue) clearBounds()\r\n\r\n if (shouldUpdateBounds) return () => cancelAnimationFrame(rafId)\r\n }, [\r\n mode,\r\n isActive,\r\n activeValue,\r\n setBounds,\r\n clearBounds,\r\n activeClassName,\r\n setActiveClassName,\r\n forceUpdateBounds,\r\n contextForceUpdateBounds,\r\n ])\r\n\r\n if (!React.isValidElement(children)) return children\r\n\r\n const dataAttributes = {\r\n \"data-active\": isActive ? \"true\" : \"false\",\r\n \"aria-selected\": isActive,\r\n \"data-disabled\": isDisabled,\r\n \"data-value\": childValue,\r\n \"data-highlight\": true,\r\n }\r\n\r\n const commonHandlers = hover\r\n ? {\r\n onMouseEnter: (e: React.MouseEvent<HTMLDivElement>) => {\r\n setActiveValue(childValue)\r\n element.props.onMouseEnter?.(e)\r\n },\r\n onMouseLeave: (e: React.MouseEvent<HTMLDivElement>) => {\r\n setActiveValue(null)\r\n element.props.onMouseLeave?.(e)\r\n },\r\n }\r\n : click\r\n ? {\r\n onClick: (e: React.MouseEvent<HTMLDivElement>) => {\r\n setActiveValue(childValue)\r\n element.props.onClick?.(e)\r\n },\r\n }\r\n : {}\r\n\r\n if (asChild) {\r\n if (mode === \"children\") {\r\n return React.cloneElement(\r\n element,\r\n {\r\n key: childValue,\r\n ref: refCallback,\r\n className: cn(\"relative\", element.props.className),\r\n ...getNonOverridingDataAttributes(element, {\r\n ...dataAttributes,\r\n \"data-slot\": \"motion-highlight-item-container\",\r\n }),\r\n ...commonHandlers,\r\n ...props,\r\n },\r\n <>\r\n <AnimatePresence\r\n initial={false}\r\n mode=\"wait\"\r\n >\r\n {isActive && !isDisabled && (\r\n <motion.div\r\n animate={{ opacity: 1 }}\r\n className={cn(contextClassName, activeClassName)}\r\n data-slot=\"motion-highlight\"\r\n exit={{\r\n opacity: 0,\r\n transition: {\r\n ...itemTransition,\r\n delay:\r\n (itemTransition?.delay ?? 0) +\r\n (exitDelay ?? contextExitDelay ?? 0) / 1000,\r\n },\r\n }}\r\n initial={{ opacity: 0 }}\r\n layoutId={`transition-background-${contextId}`}\r\n style={{\r\n position: \"absolute\",\r\n zIndex: 0,\r\n ...contextStyle,\r\n ...style,\r\n }}\r\n transition={itemTransition}\r\n {...dataAttributes}\r\n />\r\n )}\r\n </AnimatePresence>\r\n\r\n <Component\r\n className={className}\r\n data-slot=\"motion-highlight-item\"\r\n style={{ position: \"relative\", zIndex: 1 }}\r\n {...dataAttributes}\r\n >\r\n {children}\r\n </Component>\r\n </>,\r\n )\r\n }\r\n\r\n return React.cloneElement(element, {\r\n ref: refCallback,\r\n ...getNonOverridingDataAttributes(element, {\r\n ...dataAttributes,\r\n \"data-slot\": \"motion-highlight-item\",\r\n }),\r\n ...commonHandlers,\r\n })\r\n }\r\n\r\n return enabled ? (\r\n <Component\r\n key={childValue}\r\n ref={localRef}\r\n className={cn(mode === \"children\" && \"relative\", className)}\r\n data-slot=\"motion-highlight-item-container\"\r\n {...dataAttributes}\r\n {...props}\r\n {...commonHandlers}\r\n >\r\n {mode === \"children\" && (\r\n <AnimatePresence\r\n initial={false}\r\n mode=\"wait\"\r\n >\r\n {isActive && !isDisabled && (\r\n <motion.div\r\n animate={{ opacity: 1 }}\r\n className={cn(contextClassName, activeClassName)}\r\n data-slot=\"motion-highlight\"\r\n exit={{\r\n opacity: 0,\r\n transition: {\r\n ...itemTransition,\r\n delay:\r\n (itemTransition?.delay ?? 0) +\r\n (exitDelay ?? contextExitDelay ?? 0) / 1000,\r\n },\r\n }}\r\n initial={{ opacity: 0 }}\r\n layoutId={`transition-background-${contextId}`}\r\n style={{\r\n position: \"absolute\",\r\n zIndex: 0,\r\n ...contextStyle,\r\n ...style,\r\n }}\r\n transition={itemTransition}\r\n {...dataAttributes}\r\n />\r\n )}\r\n </AnimatePresence>\r\n )}\r\n\r\n {React.cloneElement(element, {\r\n style: { position: \"relative\", zIndex: 1 },\r\n className: element.props.className,\r\n ...getNonOverridingDataAttributes(element, {\r\n ...dataAttributes,\r\n \"data-slot\": \"motion-highlight-item\",\r\n }),\r\n })}\r\n </Component>\r\n ) : (\r\n children\r\n )\r\n}\r\n\r\nexport {\r\n Highlight,\r\n HighlightItem,\r\n type HighlightItemProps,\r\n type HighlightProps,\r\n useHighlight,\r\n}"]}
@@ -1,2 +0,0 @@
1
- import {a,b as b$1,c,d as d$1,e,f as f$1}from'./chunk-P6Y4P5QT.js';import'react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function d(o){return jsx(a,{...o})}function v(o){return jsx(b$1,{...o})}function x(o){return jsx(c,{...o})}function f({sideOffset:o=8,...t}){return jsx(d$1,{sideOffset:o,...t})}function b({className:o,children:t,withArrow:T=true,...a}){return jsxs(e,{className:cn("z-50 w-fit text-balance rounded-xp-tooltip bg-bg-primary-solid px-xp-lg py-xp-md text-body-regular-3 text-text-white",o),...a,children:[t,T&&jsx(f$1,{className:"z-50 size-2.5 rotate-45 rounded-xp-card-base-xxs bg-bg-primary-solid fill-primary data-[side=bottom]:-top-[5px] data-[side=top]:-bottom-[5px] data-[side=right]:-left-[5px] data-[side=left]:-right-[5px]"})]})}export{d as a,v as b,x as c,f as d,b as e};//# sourceMappingURL=chunk-P2DJG2OD.js.map
2
- //# sourceMappingURL=chunk-P2DJG2OD.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/ui/tooltip.tsx"],"names":["Tooltip","props","jsx","TooltipTrigger","TooltipPortal","TooltipPositioner","sideOffset","TooltipPopup","className","children","withArrow","jsxs","cn","TooltipArrow"],"mappings":"2JAoBA,SAASA,EAAQC,CAAAA,CAAqB,CACpC,OAAOC,GAAAA,CAACF,CAAAA,CAAA,CAAkB,GAAGC,CAAAA,CAAO,CACtC,CAIA,SAASE,CAAAA,CAAeF,EAA4B,CAClD,OAAOC,IAACC,GAAAA,CAAA,CAAyB,GAAGF,CAAAA,CAAO,CAC7C,CAIA,SAASG,CAAAA,CAAcH,CAAAA,CAA2B,CAChD,OAAOC,GAAAA,CAACE,EAAA,CAAwB,GAAGH,EAAO,CAC5C,CAIA,SAASI,CAAAA,CAAkB,CAAE,UAAA,CAAAC,EAAa,CAAA,CAAG,GAAGL,CAAM,CAAA,CAA2B,CAC/E,OAAOC,GAAAA,CAACG,GAAAA,CAAA,CAA2B,UAAA,CAAYC,CAAAA,CAAa,GAAGL,EAAO,CACxE,CAMA,SAASM,CAAAA,CAAa,CACpB,UAAAC,CAAAA,CACA,QAAA,CAAAC,CAAAA,CACA,SAAA,CAAAC,CAAAA,CAAY,IAAA,CACZ,GAAGT,CACL,CAAA,CAAsB,CACpB,OACEU,IAAAA,CAACJ,EAAA,CACC,SAAA,CAAWK,EAAAA,CACT,sHAAA,CACAJ,CACF,CAAA,CACC,GAAGP,CAAAA,CAEH,QAAA,CAAA,CAAAQ,EACAC,CAAAA,EACCR,GAAAA,CAACW,IAAA,CAAsB,SAAA,CAAU,2MAAA,CAA4M,CAAA,CAAA,CAEjP,CAEJ","file":"chunk-P2DJG2OD.js","sourcesContent":["import * as React from 'react';\r\n\r\nimport {\r\n Tooltip as TooltipPrimitive,\r\n TooltipTrigger as TooltipTriggerPrimitive,\r\n TooltipPortal as TooltipPortalPrimitive,\r\n TooltipPositioner as TooltipPositionerPrimitive,\r\n TooltipPopup as TooltipPopupPrimitive,\r\n TooltipArrow as TooltipArrowPrimitive,\r\n type TooltipProps as TooltipPrimitiveProps,\r\n type TooltipTriggerProps as TooltipTriggerPrimitiveProps,\r\n type TooltipPortalProps as TooltipPortalPrimitiveProps,\r\n type TooltipPositionerProps as TooltipPositionerPrimitiveProps,\r\n type TooltipPopupProps as TooltipPopupPrimitiveProps,\r\n type TooltipArrowProps as TooltipArrowPrimitiveProps,\r\n} from '../primitives/tooltip';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype TooltipProps = TooltipPrimitiveProps;\r\n\r\nfunction Tooltip(props: TooltipProps) {\r\n return <TooltipPrimitive {...props} />;\r\n}\r\n\r\ntype TooltipTriggerProps = TooltipTriggerPrimitiveProps;\r\n\r\nfunction TooltipTrigger(props: TooltipTriggerProps) {\r\n return <TooltipTriggerPrimitive {...props} />;\r\n}\r\n\r\ntype TooltipPortalProps = TooltipPortalPrimitiveProps;\r\n\r\nfunction TooltipPortal(props: TooltipPortalProps) {\r\n return <TooltipPortalPrimitive {...props} />;\r\n}\r\n\r\ntype TooltipPositionerProps = TooltipPositionerPrimitiveProps;\r\n\r\nfunction TooltipPositioner({ sideOffset = 8, ...props }: TooltipPositionerProps) {\r\n return <TooltipPositionerPrimitive sideOffset={sideOffset} {...props} />;\r\n}\r\n\r\ntype TooltipPopupProps = TooltipPopupPrimitiveProps & {\r\n withArrow?: boolean;\r\n};\r\n\r\nfunction TooltipPopup({\r\n className,\r\n children,\r\n withArrow = true,\r\n ...props\r\n}: TooltipPopupProps) {\r\n return (\r\n <TooltipPopupPrimitive\r\n className={cn(\r\n 'z-50 w-fit text-balance rounded-xp-tooltip bg-bg-primary-solid px-xp-lg py-xp-md text-body-regular-3 text-text-white',\r\n className\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {withArrow && (\r\n <TooltipArrowPrimitive className=\"z-50 size-2.5 rotate-45 rounded-xp-card-base-xxs bg-bg-primary-solid fill-primary data-[side=bottom]:-top-[5px] data-[side=top]:-bottom-[5px] data-[side=right]:-left-[5px] data-[side=left]:-right-[5px]\" />\r\n )}\r\n </TooltipPopupPrimitive>\r\n );\r\n}\r\n\r\nexport {\r\n Tooltip,\r\n TooltipTrigger,\r\n TooltipPortal,\r\n TooltipPositioner,\r\n TooltipPopup,\r\n type TooltipProps,\r\n type TooltipTriggerProps,\r\n type TooltipPortalProps,\r\n type TooltipPositionerProps,\r\n type TooltipPopupProps,\r\n};\r\n"]}
@@ -1,2 +0,0 @@
1
- //# sourceMappingURL=chunk-ZP4ZPH65.js.map
2
- //# sourceMappingURL=chunk-ZP4ZPH65.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-ZP4ZPH65.js"}