@xploreu/components 0.4.26 → 0.4.28

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 (64) hide show
  1. package/dist/chunk-2URFXFQC.js +2 -0
  2. package/dist/chunk-2URFXFQC.js.map +1 -0
  3. package/dist/{chunk-RJ2SAHLO.js → chunk-6OC5NZB6.js} +2 -2
  4. package/dist/{chunk-RJ2SAHLO.js.map → chunk-6OC5NZB6.js.map} +1 -1
  5. package/dist/chunk-APGPUUGM.js +2 -0
  6. package/dist/chunk-APGPUUGM.js.map +1 -0
  7. package/dist/chunk-CDHMNEJ5.js +2 -0
  8. package/dist/chunk-CDHMNEJ5.js.map +1 -0
  9. package/dist/{chunk-QUSWZDB5.js → chunk-GRQYQEGS.js} +2 -2
  10. package/dist/{chunk-QUSWZDB5.js.map → chunk-GRQYQEGS.js.map} +1 -1
  11. package/dist/chunk-HHG7BSWN.js +2 -0
  12. package/dist/chunk-HHG7BSWN.js.map +1 -0
  13. package/dist/{chunk-W6CEQOB6.js → chunk-IT4LPPTN.js} +2 -2
  14. package/dist/{chunk-W6CEQOB6.js.map → chunk-IT4LPPTN.js.map} +1 -1
  15. package/dist/chunk-IZQFTYJD.js +2 -0
  16. package/dist/chunk-IZQFTYJD.js.map +1 -0
  17. package/dist/{chunk-VNU37GJC.js → chunk-JYFVQ5NY.js} +2 -2
  18. package/dist/{chunk-VNU37GJC.js.map → chunk-JYFVQ5NY.js.map} +1 -1
  19. package/dist/chunk-ON7PUZWI.js +2 -0
  20. package/dist/chunk-ON7PUZWI.js.map +1 -0
  21. package/dist/{chunk-V2D72N26.js → chunk-VODPMAOM.js} +2 -2
  22. package/dist/{chunk-V2D72N26.js.map → chunk-VODPMAOM.js.map} +1 -1
  23. package/dist/{chunk-O2V2JJ2V.js → chunk-WV5OCKQK.js} +2 -2
  24. package/dist/{chunk-O2V2JJ2V.js.map → chunk-WV5OCKQK.js.map} +1 -1
  25. package/dist/{chunk-H2BHLGW2.js → chunk-YB74L6RO.js} +2 -2
  26. package/dist/{chunk-H2BHLGW2.js.map → chunk-YB74L6RO.js.map} +1 -1
  27. package/dist/composites/combobox-chip-outside.js +1 -1
  28. package/dist/composites/combobox-chip.js +1 -1
  29. package/dist/composites/combobox-simple.js +1 -1
  30. package/dist/composites/filter-combobox.d.ts +3 -15
  31. package/dist/composites/filter-combobox.js +1 -1
  32. package/dist/composites/index.d.ts +1 -1
  33. package/dist/composites/index.js +1 -1
  34. package/dist/composites/index.js.map +1 -1
  35. package/dist/composites/phone-input.js +1 -1
  36. package/dist/effects/highlight.d.ts +13 -13
  37. package/dist/effects/highlight.js +1 -1
  38. package/dist/effects/index.js +1 -1
  39. package/dist/primitives/combobox.d.ts +3 -1
  40. package/dist/primitives/combobox.js +1 -1
  41. package/dist/primitives/index.d.ts +1 -1
  42. package/dist/primitives/index.js +1 -1
  43. package/dist/primitives/menu.js +1 -1
  44. package/dist/primitives/tabs.js +1 -1
  45. package/dist/ui/combobox.d.ts +4 -2
  46. package/dist/ui/combobox.js +1 -1
  47. package/dist/ui/index.js +1 -1
  48. package/dist/ui/menu.js +1 -1
  49. package/dist/ui/pagination.js +1 -1
  50. package/dist/ui/tabs.d.ts +1 -1
  51. package/dist/ui/tabs.js +1 -1
  52. package/package.json +1 -1
  53. package/dist/chunk-2XZRLJCN.js +0 -2
  54. package/dist/chunk-2XZRLJCN.js.map +0 -1
  55. package/dist/chunk-3SPYZO2Y.js +0 -2
  56. package/dist/chunk-3SPYZO2Y.js.map +0 -1
  57. package/dist/chunk-DFAATW5A.js +0 -2
  58. package/dist/chunk-DFAATW5A.js.map +0 -1
  59. package/dist/chunk-EO656DPM.js +0 -2
  60. package/dist/chunk-EO656DPM.js.map +0 -1
  61. package/dist/chunk-PHP3T7ZS.js +0 -2
  62. package/dist/chunk-PHP3T7ZS.js.map +0 -1
  63. package/dist/chunk-TZ44HGOL.js +0 -2
  64. package/dist/chunk-TZ44HGOL.js.map +0 -1
@@ -0,0 +1,2 @@
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,"data-slot":"motion-highlight-container",style:{position:"relative",zIndex:1},className:r?.containerClassName,children:[jsx(AnimatePresence,{initial:false,mode:"wait",children:l&&jsx(motion.div,{"data-slot":"motion-highlight",animate:{top:l.top,left:l.left,width:l.width,height:l.height,opacity:1},initial:{top:l.top,left:l.left,width:l.width,height:l.height,opacity:0},exit:{opacity:0,transition:{...u,delay:(u?.delay??0)+(E??0)/1e3}},transition:u,style:{position:"absolute",zIndex:0,...N},className:cn(U,A)})}),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,{layoutId:`transition-background-${x}`,"data-slot":"motion-highlight",style:{position:"absolute",zIndex:0,...S,...V},className:cn(C,u),transition:h,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0,transition:{...h,delay:(h?.delay??0)+(F??k??0)/1e3}},...o})}),jsx($,{"data-slot":"motion-highlight-item",style:{position:"relative",zIndex:1},className:y,...o,children:d})]})):e.cloneElement(i,{ref:a,...J(i,{...o,"data-slot":"motion-highlight-item"}),...g}):D?jsxs($,{ref:t,"data-slot":"motion-highlight-item-container",className:cn(s==="children"&&"relative",y),...o,...z,...g,children:[s==="children"&&jsx(AnimatePresence,{initial:false,mode:"wait",children:v&&!L&&jsx(motion.div,{layoutId:`transition-background-${x}`,"data-slot":"motion-highlight",style:{position:"absolute",zIndex:0,...S,...V},className:cn(C,u),transition:h,initial:{opacity:0},animate:{opacity:1},exit:{opacity:0,transition:{...h,delay:(h?.delay??0)+(F??k??0)/1e3}},...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-2URFXFQC.js.map
2
+ //# sourceMappingURL=chunk-2URFXFQC.js.map
@@ -0,0 +1 @@
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-2URFXFQC.js","sourcesContent":["'use client';\r\n\r\nimport * as React from 'react';\r\nimport { AnimatePresence, motion, type Transition } 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 data-slot=\"motion-highlight-container\"\r\n style={{ position: 'relative', zIndex: 1 }}\r\n className={(props as ParentModeHighlightProps)?.containerClassName}\r\n >\r\n <AnimatePresence initial={false} mode=\"wait\">\r\n {boundsState && (\r\n <motion.div\r\n data-slot=\"motion-highlight\"\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 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 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 transition={transition}\r\n style={{ position: 'absolute', zIndex: 0, ...style }}\r\n className={cn(className, activeClassNameState)}\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 key={index} className={props?.itemsClassName}>\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 initial={false} mode=\"wait\">\r\n {isActive && !isDisabled && (\r\n <motion.div\r\n layoutId={`transition-background-${contextId}`}\r\n data-slot=\"motion-highlight\"\r\n style={{\r\n position: 'absolute',\r\n zIndex: 0,\r\n ...contextStyle,\r\n ...style,\r\n }}\r\n className={cn(contextClassName, activeClassName)}\r\n transition={itemTransition}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\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 {...dataAttributes}\r\n />\r\n )}\r\n </AnimatePresence>\r\n\r\n <Component\r\n data-slot=\"motion-highlight-item\"\r\n style={{ position: 'relative', zIndex: 1 }}\r\n className={className}\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 data-slot=\"motion-highlight-item-container\"\r\n className={cn(mode === 'children' && 'relative', className)}\r\n {...dataAttributes}\r\n {...props}\r\n {...commonHandlers}\r\n >\r\n {mode === 'children' && (\r\n <AnimatePresence initial={false} mode=\"wait\">\r\n {isActive && !isDisabled && (\r\n <motion.div\r\n layoutId={`transition-background-${contextId}`}\r\n data-slot=\"motion-highlight\"\r\n style={{\r\n position: 'absolute',\r\n zIndex: 0,\r\n ...contextStyle,\r\n ...style,\r\n }}\r\n className={cn(contextClassName, activeClassName)}\r\n transition={itemTransition}\r\n initial={{ opacity: 0 }}\r\n animate={{ opacity: 1 }}\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 {...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 useHighlight,\r\n type HighlightProps,\r\n type HighlightItemProps,\r\n};"]}
@@ -1,2 +1,2 @@
1
- import {a}from'./chunk-ZVME3JB3.js';import {b as b$1,c}from'./chunk-2XZRLJCN.js';import*as n from'react';import {Tabs}from'@base-ui/react/tabs';import {AnimatePresence,motion}from'motion/react';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsx}from'react/jsx-runtime';var[v,b]=getStrictContext("TabsContext");function M(t){let[a,s]=useControlledState({value:t.value,defaultValue:t.defaultValue,onChange:t.onValueChange});return jsx(v,{value:{value:a,setValue:s},children:jsx(Tabs.Root,{"data-slot":"tabs",...t,onValueChange:s})})}function V({transition:t={type:"spring",stiffness:200,damping:25},...a}){let{value:s}=b();return jsx(b$1,{"data-slot":"tabs-highlight",controlledItems:true,value:s,transition:t,click:false,...a})}function k(t){return jsx(Tabs.List,{"data-slot":"tabs-list",...t})}function F(t){return jsx(c,{"data-slot":"tabs-highlight-item",...t})}function O(t){return jsx(Tabs.Tab,{"data-slot":"tabs-tab",...t})}function w({value:t,keepMounted:a,transition:s={duration:.5,ease:"easeInOut"},...i}){return jsx(AnimatePresence,{mode:"wait",children:jsx(Tabs.Panel,{render:jsx(motion.div,{"data-slot":"tabs-panel",layout:true,layoutDependency:t,initial:{opacity:0,filter:"blur(4px)"},animate:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(4px)"},transition:s,...i}),keepMounted:a,value:t})})}var P={type:"spring",stiffness:200,damping:30};function H(t){return !t.mode||t.mode==="auto-height"}function D(t){let{value:a$1}=b();if(H(t)){let{children:h,transition:m=P,...y}=t;return jsx(a,{"data-slot":"tabs-panels",deps:[a$1],transition:m,...y,children:jsx(n.Fragment,{children:h},a$1)})}let{children:s,style:i,transition:T=P,...g}=t;return jsx(motion.div,{"data-slot":"tabs-panels",layout:"size",layoutDependency:a$1,transition:{layout:T},style:{overflow:"hidden",...i},...g,children:jsx(n.Fragment,{children:s},a$1)})}export{M as a,V as b,k as c,F as d,O as e,w as f,D as g};//# sourceMappingURL=chunk-RJ2SAHLO.js.map
2
- //# sourceMappingURL=chunk-RJ2SAHLO.js.map
1
+ import {a}from'./chunk-ZVME3JB3.js';import {b as b$1,c}from'./chunk-2URFXFQC.js';import*as n from'react';import {Tabs}from'@base-ui/react/tabs';import {AnimatePresence,motion}from'motion/react';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsx}from'react/jsx-runtime';var[v,b]=getStrictContext("TabsContext");function M(t){let[a,s]=useControlledState({value:t.value,defaultValue:t.defaultValue,onChange:t.onValueChange});return jsx(v,{value:{value:a,setValue:s},children:jsx(Tabs.Root,{"data-slot":"tabs",...t,onValueChange:s})})}function V({transition:t={type:"spring",stiffness:200,damping:25},...a}){let{value:s}=b();return jsx(b$1,{"data-slot":"tabs-highlight",controlledItems:true,value:s,transition:t,click:false,...a})}function k(t){return jsx(Tabs.List,{"data-slot":"tabs-list",...t})}function F(t){return jsx(c,{"data-slot":"tabs-highlight-item",...t})}function O(t){return jsx(Tabs.Tab,{"data-slot":"tabs-tab",...t})}function w({value:t,keepMounted:a,transition:s={duration:.5,ease:"easeInOut"},...i}){return jsx(AnimatePresence,{mode:"wait",children:jsx(Tabs.Panel,{render:jsx(motion.div,{"data-slot":"tabs-panel",layout:true,layoutDependency:t,initial:{opacity:0,filter:"blur(4px)"},animate:{opacity:1,filter:"blur(0px)"},exit:{opacity:0,filter:"blur(4px)"},transition:s,...i}),keepMounted:a,value:t})})}var P={type:"spring",stiffness:200,damping:30};function H(t){return !t.mode||t.mode==="auto-height"}function D(t){let{value:a$1}=b();if(H(t)){let{children:h,transition:m=P,...y}=t;return jsx(a,{"data-slot":"tabs-panels",deps:[a$1],transition:m,...y,children:jsx(n.Fragment,{children:h},a$1)})}let{children:s,style:i,transition:T=P,...g}=t;return jsx(motion.div,{"data-slot":"tabs-panels",layout:"size",layoutDependency:a$1,transition:{layout:T},style:{overflow:"hidden",...i},...g,children:jsx(n.Fragment,{children:s},a$1)})}export{M as a,V as b,k as c,F as d,O as e,w as f,D as g};//# sourceMappingURL=chunk-6OC5NZB6.js.map
2
+ //# sourceMappingURL=chunk-6OC5NZB6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/primitives/tabs.tsx"],"names":["TabsProvider","useTabs","getStrictContext","Tabs","props","value","setValue","useControlledState","jsx","TabsPrimitive","TabsHighlight","transition","Highlight","TabsList","TabsHighlightItem","HighlightItem","TabsTab","TabsPanel","keepMounted","AnimatePresence","motion","defaultTransition","isAutoMode","TabsPanels","children","autoProps","AutoHeight","style","layoutProps"],"mappings":"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","file":"chunk-RJ2SAHLO.js","sourcesContent":["'use client';\r\n\r\nimport * as React from 'react';\r\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\r\nimport {\r\n motion,\r\n AnimatePresence,\r\n type HTMLMotionProps,\r\n type Transition,\r\n} from 'motion/react';\r\n\r\nimport {\r\n Highlight,\r\n HighlightItem,\r\n type HighlightProps,\r\n type HighlightItemProps,\r\n} from \"../effects/highlight\"\r\nimport { getStrictContext } from \"@xploreu/lib/get-strict-context\";\r\nimport { useControlledState } from '@xploreu/hooks/use-controlled-state';\r\nimport {\r\n AutoHeight,\r\n type AutoHeightProps,\r\n} from '../effects/auto-height';\r\n\r\ntype TabsContextType = {\r\n value: string | undefined;\r\n setValue: TabsProps['onValueChange'];\r\n};\r\n\r\nconst [TabsProvider, useTabs] =\r\n getStrictContext<TabsContextType>('TabsContext');\r\n\r\ntype TabsProps = React.ComponentProps<typeof TabsPrimitive.Root>;\r\n\r\nfunction Tabs(props: TabsProps) {\r\n const [value, setValue] = useControlledState({\r\n value: props.value,\r\n defaultValue: props.defaultValue,\r\n onChange: props.onValueChange,\r\n });\r\n\r\n return (\r\n <TabsProvider value={{ value, setValue }}>\r\n <TabsPrimitive.Root\r\n data-slot=\"tabs\"\r\n {...props}\r\n onValueChange={setValue}\r\n />\r\n </TabsProvider>\r\n );\r\n}\r\n\r\ntype TabsHighlightProps = Omit<HighlightProps, 'controlledItems' | 'value'>;\r\n\r\nfunction TabsHighlight({\r\n transition = { type: 'spring', stiffness: 200, damping: 25 },\r\n ...props\r\n}: TabsHighlightProps) {\r\n const { value } = useTabs();\r\n\r\n return (\r\n <Highlight\r\n data-slot=\"tabs-highlight\"\r\n controlledItems\r\n value={value}\r\n transition={transition}\r\n click={false}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype TabsListProps = React.ComponentProps<typeof TabsPrimitive.List>;\r\n\r\nfunction TabsList(props: TabsListProps) {\r\n return <TabsPrimitive.List data-slot=\"tabs-list\" {...props} />;\r\n}\r\n\r\ntype TabsHighlightItemProps = HighlightItemProps & {\r\n value: string;\r\n};\r\n\r\nfunction TabsHighlightItem(props: TabsHighlightItemProps) {\r\n return <HighlightItem data-slot=\"tabs-highlight-item\" {...props} />;\r\n}\r\n\r\ntype TabsTabProps = React.ComponentProps<typeof TabsPrimitive.Tab>;\r\n\r\nfunction TabsTab(props: TabsTabProps) {\r\n return <TabsPrimitive.Tab data-slot=\"tabs-tab\" {...props} />;\r\n}\r\n\r\ntype TabsPanelProps = React.ComponentProps<typeof TabsPrimitive.Panel> &\r\n HTMLMotionProps<'div'>;\r\n\r\nfunction TabsPanel({\r\n value,\r\n keepMounted,\r\n transition = { duration: 0.5, ease: 'easeInOut' },\r\n ...props\r\n}: TabsPanelProps) {\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <TabsPrimitive.Panel\r\n render={\r\n <motion.div\r\n data-slot=\"tabs-panel\"\r\n layout\r\n layoutDependency={value}\r\n initial={{ opacity: 0, filter: 'blur(4px)' }}\r\n animate={{ opacity: 1, filter: 'blur(0px)' }}\r\n exit={{ opacity: 0, filter: 'blur(4px)' }}\r\n transition={transition}\r\n {...props}\r\n />\r\n }\r\n keepMounted={keepMounted}\r\n value={value}\r\n />\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\ntype TabsPanelsAutoProps = Omit<AutoHeightProps, 'children'> & {\r\n mode?: 'auto-height';\r\n children: React.ReactNode;\r\n transition?: Transition;\r\n};\r\n\r\ntype TabsPanelsLayoutProps = Omit<HTMLMotionProps<'div'>, 'children'> & {\r\n mode: 'layout';\r\n children: React.ReactNode;\r\n transition?: Transition;\r\n};\r\n\r\ntype TabsPanelsProps = TabsPanelsAutoProps | TabsPanelsLayoutProps;\r\n\r\nconst defaultTransition: Transition = {\r\n type: 'spring',\r\n stiffness: 200,\r\n damping: 30,\r\n};\r\n\r\nfunction isAutoMode(props: TabsPanelsProps): props is TabsPanelsAutoProps {\r\n return !props.mode || props.mode === 'auto-height';\r\n}\r\n\r\nfunction TabsPanels(props: TabsPanelsProps) {\r\n const { value } = useTabs();\r\n\r\n if (isAutoMode(props)) {\r\n const { children, transition = defaultTransition, ...autoProps } = props;\r\n\r\n return (\r\n <AutoHeight\r\n data-slot=\"tabs-panels\"\r\n deps={[value]}\r\n transition={transition}\r\n {...autoProps}\r\n >\r\n <React.Fragment key={value}>{children}</React.Fragment>\r\n </AutoHeight>\r\n );\r\n }\r\n\r\n const {\r\n children,\r\n style,\r\n transition = defaultTransition,\r\n ...layoutProps\r\n } = props;\r\n\r\n return (\r\n <motion.div\r\n data-slot=\"tabs-panels\"\r\n layout=\"size\"\r\n layoutDependency={value}\r\n transition={{ layout: transition }}\r\n style={{ overflow: 'hidden', ...style }}\r\n {...layoutProps}\r\n >\r\n <React.Fragment key={value}>{children}</React.Fragment>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport {\r\n Tabs,\r\n TabsHighlight,\r\n TabsHighlightItem,\r\n TabsList,\r\n TabsTab,\r\n TabsPanel,\r\n TabsPanels,\r\n type TabsProps,\r\n type TabsHighlightProps,\r\n type TabsHighlightItemProps,\r\n type TabsListProps,\r\n type TabsTabProps,\r\n type TabsPanelProps,\r\n type TabsPanelsProps,\r\n};"]}
1
+ {"version":3,"sources":["../src/primitives/tabs.tsx"],"names":["TabsProvider","useTabs","getStrictContext","Tabs","props","value","setValue","useControlledState","jsx","TabsPrimitive","TabsHighlight","transition","Highlight","TabsList","TabsHighlightItem","HighlightItem","TabsTab","TabsPanel","keepMounted","AnimatePresence","motion","defaultTransition","isAutoMode","TabsPanels","children","autoProps","AutoHeight","style","layoutProps"],"mappings":"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","file":"chunk-6OC5NZB6.js","sourcesContent":["'use client';\r\n\r\nimport * as React from 'react';\r\nimport { Tabs as TabsPrimitive } from '@base-ui/react/tabs';\r\nimport {\r\n motion,\r\n AnimatePresence,\r\n type HTMLMotionProps,\r\n type Transition,\r\n} from 'motion/react';\r\n\r\nimport {\r\n Highlight,\r\n HighlightItem,\r\n type HighlightProps,\r\n type HighlightItemProps,\r\n} from \"../effects/highlight\"\r\nimport { getStrictContext } from \"@xploreu/lib/get-strict-context\";\r\nimport { useControlledState } from '@xploreu/hooks/use-controlled-state';\r\nimport {\r\n AutoHeight,\r\n type AutoHeightProps,\r\n} from '../effects/auto-height';\r\n\r\ntype TabsContextType = {\r\n value: string | undefined;\r\n setValue: TabsProps['onValueChange'];\r\n};\r\n\r\nconst [TabsProvider, useTabs] =\r\n getStrictContext<TabsContextType>('TabsContext');\r\n\r\ntype TabsProps = React.ComponentProps<typeof TabsPrimitive.Root>;\r\n\r\nfunction Tabs(props: TabsProps) {\r\n const [value, setValue] = useControlledState({\r\n value: props.value,\r\n defaultValue: props.defaultValue,\r\n onChange: props.onValueChange,\r\n });\r\n\r\n return (\r\n <TabsProvider value={{ value, setValue }}>\r\n <TabsPrimitive.Root\r\n data-slot=\"tabs\"\r\n {...props}\r\n onValueChange={setValue}\r\n />\r\n </TabsProvider>\r\n );\r\n}\r\n\r\ntype TabsHighlightProps = Omit<HighlightProps, 'controlledItems' | 'value'>;\r\n\r\nfunction TabsHighlight({\r\n transition = { type: 'spring', stiffness: 200, damping: 25 },\r\n ...props\r\n}: TabsHighlightProps) {\r\n const { value } = useTabs();\r\n\r\n return (\r\n <Highlight\r\n data-slot=\"tabs-highlight\"\r\n controlledItems\r\n value={value}\r\n transition={transition}\r\n click={false}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype TabsListProps = React.ComponentProps<typeof TabsPrimitive.List>;\r\n\r\nfunction TabsList(props: TabsListProps) {\r\n return <TabsPrimitive.List data-slot=\"tabs-list\" {...props} />;\r\n}\r\n\r\ntype TabsHighlightItemProps = HighlightItemProps & {\r\n value: string;\r\n};\r\n\r\nfunction TabsHighlightItem(props: TabsHighlightItemProps) {\r\n return <HighlightItem data-slot=\"tabs-highlight-item\" {...props} />;\r\n}\r\n\r\ntype TabsTabProps = React.ComponentProps<typeof TabsPrimitive.Tab>;\r\n\r\nfunction TabsTab(props: TabsTabProps) {\r\n return <TabsPrimitive.Tab data-slot=\"tabs-tab\" {...props} />;\r\n}\r\n\r\ntype TabsPanelProps = React.ComponentProps<typeof TabsPrimitive.Panel> &\r\n HTMLMotionProps<'div'>;\r\n\r\nfunction TabsPanel({\r\n value,\r\n keepMounted,\r\n transition = { duration: 0.5, ease: 'easeInOut' },\r\n ...props\r\n}: TabsPanelProps) {\r\n return (\r\n <AnimatePresence mode=\"wait\">\r\n <TabsPrimitive.Panel\r\n render={\r\n <motion.div\r\n data-slot=\"tabs-panel\"\r\n layout\r\n layoutDependency={value}\r\n initial={{ opacity: 0, filter: 'blur(4px)' }}\r\n animate={{ opacity: 1, filter: 'blur(0px)' }}\r\n exit={{ opacity: 0, filter: 'blur(4px)' }}\r\n transition={transition}\r\n {...props}\r\n />\r\n }\r\n keepMounted={keepMounted}\r\n value={value}\r\n />\r\n </AnimatePresence>\r\n );\r\n}\r\n\r\ntype TabsPanelsAutoProps = Omit<AutoHeightProps, 'children'> & {\r\n mode?: 'auto-height';\r\n children: React.ReactNode;\r\n transition?: Transition;\r\n};\r\n\r\ntype TabsPanelsLayoutProps = Omit<HTMLMotionProps<'div'>, 'children'> & {\r\n mode: 'layout';\r\n children: React.ReactNode;\r\n transition?: Transition;\r\n};\r\n\r\ntype TabsPanelsProps = TabsPanelsAutoProps | TabsPanelsLayoutProps;\r\n\r\nconst defaultTransition: Transition = {\r\n type: 'spring',\r\n stiffness: 200,\r\n damping: 30,\r\n};\r\n\r\nfunction isAutoMode(props: TabsPanelsProps): props is TabsPanelsAutoProps {\r\n return !props.mode || props.mode === 'auto-height';\r\n}\r\n\r\nfunction TabsPanels(props: TabsPanelsProps) {\r\n const { value } = useTabs();\r\n\r\n if (isAutoMode(props)) {\r\n const { children, transition = defaultTransition, ...autoProps } = props;\r\n\r\n return (\r\n <AutoHeight\r\n data-slot=\"tabs-panels\"\r\n deps={[value]}\r\n transition={transition}\r\n {...autoProps}\r\n >\r\n <React.Fragment key={value}>{children}</React.Fragment>\r\n </AutoHeight>\r\n );\r\n }\r\n\r\n const {\r\n children,\r\n style,\r\n transition = defaultTransition,\r\n ...layoutProps\r\n } = props;\r\n\r\n return (\r\n <motion.div\r\n data-slot=\"tabs-panels\"\r\n layout=\"size\"\r\n layoutDependency={value}\r\n transition={{ layout: transition }}\r\n style={{ overflow: 'hidden', ...style }}\r\n {...layoutProps}\r\n >\r\n <React.Fragment key={value}>{children}</React.Fragment>\r\n </motion.div>\r\n );\r\n}\r\n\r\nexport {\r\n Tabs,\r\n TabsHighlight,\r\n TabsHighlightItem,\r\n TabsList,\r\n TabsTab,\r\n TabsPanel,\r\n TabsPanels,\r\n type TabsProps,\r\n type TabsHighlightProps,\r\n type TabsHighlightItemProps,\r\n type TabsListProps,\r\n type TabsTabProps,\r\n type TabsPanelProps,\r\n type TabsPanelsProps,\r\n};"]}
@@ -0,0 +1,2 @@
1
+ import {a,b,c as c$1,d,e,g,f as f$1}from'./chunk-6OC5NZB6.js';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs}from'react/jsx-runtime';function c({className:t,variant:a$1="default",...i}){return jsx(a,{className:cn("group/tabs flex flex-col gap-2",t),"data-variant":a$1,...i})}function m({className:t,highlightClassName:a,...i}){return jsx(b,{className:cn("absolute z-0","group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid","group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary","group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]","group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]","group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary","group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md","group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary",a),children:jsx(c$1,{className:cn("inline-flex w-fit items-center justify-center","group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary","group-data-[variant=underline]/tabs:gap-7","group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6","group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6","group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs","group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary","group-data-[variant=filter]/tabs:gap-2",t),...i})})}function f({className:t,count:a,children:i,...s}){return jsx(d,{value:s.value,className:"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none",children:jsxs(e,{className:cn("group/tabs-trigger data-[active=true]:text-text-brand-tertiary-alt focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4","group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white","group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary","group-data-[variant=attract]/tabs:h-auto group-data-[variant=attract]/tabs:py-3 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-2 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-2","group-data-[variant=topbar]/tabs:h-auto group-data-[variant=topbar]/tabs:py-4 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-2 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-2","group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary","group-data-[variant=solid]/tabs:h-9 group-data-[variant=solid]/tabs:px-3.5 group-data-[variant=solid]/tabs:py-2 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand","group-data-[variant=filter]/tabs:h-9 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-4 group-data-[variant=filter]/tabs:[&_svg]:text-fg-quaternary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary",t),...s,children:[i,a!==void 0&&a!==0&&a!=="0"&&jsx("span",{className:cn("inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300","group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid","group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand","group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand"),children:a})]})})}function y(t){return jsx(g,{...t})}function P({className:t,...a}){return jsx(f$1,{className:cn("flex-1 outline-none",t),...a})}export{c as a,m as b,f as c,y as d,P as e};//# sourceMappingURL=chunk-APGPUUGM.js.map
2
+ //# sourceMappingURL=chunk-APGPUUGM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/tabs.tsx"],"names":["Tabs","className","variant","props","jsx","cn","TabsList","highlightClassName","TabsHighlight","TabsTab","count","children","TabsHighlightItem","jsxs","TabsPanels","TabsPanel"],"mappings":"wIAoBA,SAASA,EAAK,CAAE,SAAA,CAAAC,EAAW,OAAA,CAAAC,GAAAA,CAAU,UAAW,GAAGC,CAAM,EAAc,CACrE,OACEC,GAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWK,EAAAA,CAAG,iCAAkCJ,CAAS,CAAA,CACzD,eAAcC,GAAAA,CACb,GAAGC,EACN,CAEJ,CAMA,SAASG,CAAAA,CAAS,CAAE,UAAAL,CAAAA,CAAW,kBAAA,CAAAM,EAAoB,GAAGJ,CAAM,CAAA,CAAkB,CAC5E,OACEC,GAAAA,CAACI,CAAAA,CAAA,CACC,SAAA,CAAWH,EAAAA,CACT,eACA,8IAAA,CACA,8OAAA,CACA,8WACA,iQAAA,CACA,sSAAA,CACA,oMACA,kPAAA,CACAE,CACF,EAEA,QAAA,CAAAH,GAAAA,CAACE,IAAA,CACC,SAAA,CAAWD,GACT,+CAAA,CACA,gRAAA,CACA,4CACA,8QAAA,CACA,wQAAA,CACA,mUACA,yQAAA,CACA,wCAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EACN,CAAA,CACF,CAEJ,CAMA,SAASM,CAAAA,CAAQ,CAAE,SAAA,CAAAR,CAAAA,CAAW,MAAAS,CAAAA,CAAO,QAAA,CAAAC,CAAAA,CAAU,GAAGR,CAAM,CAAA,CAAiB,CACvE,OACEC,GAAAA,CAACQ,CAAAA,CAAA,CAA2B,KAAA,CAAOT,CAAAA,CAAM,MAAO,SAAA,CAAU,gOAAA,CACxD,SAAAU,IAAAA,CAACJ,CAAAA,CAAA,CACC,SAAA,CAAWJ,EAAAA,CACT,0gBAEA,oTAAA,CAEA,wJAAA,CAEA,ihBAAA,CAEA,ggBAAA,CAEA,+oBAEA,6YAAA,CAEA,w3BAAA,CACAJ,CACF,CAAA,CACC,GAAGE,EAEH,QAAA,CAAA,CAAAQ,CAAAA,CACAD,IAAU,MAAA,EAAaA,CAAAA,GAAU,GAAKA,CAAAA,GAAU,GAAA,EAC/CN,IAAC,MAAA,CAAA,CACC,SAAA,CAAWC,GACT,yIAAA,CAEA,4SAAA,CAEA,gTAAA,CAEA,wSAAA,CAEA,qSAEA,miBAAA,CAEA,oSAAA,CAEA,gHACF,CAAA,CAEC,QAAA,CAAAK,EACH,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CAIA,SAASI,EAAWX,CAAAA,CAAwB,CAC1C,OAAOC,GAAAA,CAACU,CAAAA,CAAA,CAAqB,GAAGX,CAAAA,CAAO,CACzC,CAIA,SAASY,EAAU,CAAE,SAAA,CAAAd,EAAW,GAAGE,CAAM,EAAmB,CAC1D,OACEC,IAACW,GAAAA,CAAA,CACC,UAAWV,EAAAA,CAAG,qBAAA,CAAuBJ,CAAS,CAAA,CAC7C,GAAGE,EACN,CAEJ","file":"chunk-APGPUUGM.js","sourcesContent":["import {\r\n Tabs as TabsPrimitive,\r\n TabsList as TabsListPrimitive,\r\n TabsTab as TabsTabPrimitive,\r\n TabsPanel as TabsPanelPrimitive,\r\n TabsPanels as TabsPanelsPrimitive,\r\n TabsHighlight as TabsHighlightPrimitive,\r\n TabsHighlightItem as TabsHighlightItemPrimitive,\r\n type TabsProps as TabsPrimitiveProps,\r\n type TabsListProps as TabsListPrimitiveProps,\r\n type TabsTabProps as TabsTabPrimitiveProps,\r\n type TabsPanelProps as TabsPanelPrimitiveProps,\r\n type TabsPanelsProps as TabsPanelsPrimitiveProps,\r\n} from '../primitives/tabs';\r\nimport { cn } from '@xploreu/lib/cn';\r\n\r\ntype TabsProps = TabsPrimitiveProps & {\r\n variant?: \"default\" | \"underline\" | \"attract\" | \"topbar\" | \"segment\" | \"solid\" | \"filter\";\r\n};\r\n\r\nfunction Tabs({ className, variant = \"default\", ...props }: TabsProps) {\r\n return (\r\n <TabsPrimitive\r\n className={cn('group/tabs flex flex-col gap-2', className)}\r\n data-variant={variant}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype TabsListProps = TabsListPrimitiveProps & {\r\n highlightClassName?: string;\r\n};\r\n\r\nfunction TabsList({ className, highlightClassName, ...props }: TabsListProps) {\r\n return (\r\n <TabsHighlightPrimitive\r\n className={cn(\r\n \"absolute z-0\",\r\n \"group-data-[variant=default]/tabs:inset-0 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:bg-bg-primary-solid\",\r\n \"group-data-[variant=underline]/tabs:bottom-0 group-data-[variant=underline]/tabs:h-0.5 group-data-[variant=underline]/tabs:w-full group-data-[variant=underline]/tabs:rounded-none group-data-[variant=underline]/tabs:bg-fg-brand-secondary\",\r\n \"group-data-[variant=attract]/tabs:bottom-0 group-data-[variant=attract]/tabs:h-[3px] group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:rounded-t-full group-data-[variant=attract]/tabs:bg-gradient-to-r group-data-[variant=attract]/tabs:from-[var(--color-brand-light-500)] group-data-[variant=attract]/tabs:to-[var(--color-brand-light-700)]\",\r\n \"group-data-[variant=topbar]/tabs:bottom-0 group-data-[variant=topbar]/tabs:h-[3px] group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:rounded-t-full group-data-[variant=topbar]/tabs:bg-[linear-gradient(90deg,#2F7EF0_0%,#FA0805_100%)]\",\r\n \"group-data-[variant=segment]/tabs:inset-0 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:bg-bg-brand-primary group-data-[variant=segment]/tabs:data-[value=declined]:bg-bg-error-primary group-data-[variant=segment]/tabs:data-[value=rejected]:bg-bg-error-primary\",\r\n \"group-data-[variant=solid]/tabs:inset-0 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:bg-gradient-buttons-gradient-blue group-data-[variant=solid]/tabs:shadow-xp-md\",\r\n \"group-data-[variant=filter]/tabs:inset-0 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-brand group-data-[variant=filter]/tabs:bg-bg-brand-primary\",\r\n highlightClassName\r\n )}\r\n >\r\n <TabsListPrimitive\r\n className={cn(\r\n \"inline-flex w-fit items-center justify-center\",\r\n \"group-data-[variant=default]/tabs:bg-bg-tertiary group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:p-0.5 group-data-[variant=default]/tabs:gap-1 group-data-[variant=default]/tabs:border group-data-[variant=default]/tabs:border-border-primary\",\r\n \"group-data-[variant=underline]/tabs:gap-7\",\r\n \"group-data-[variant=attract]/tabs:w-full group-data-[variant=attract]/tabs:justify-start group-data-[variant=attract]/tabs:gap-6 group-data-[variant=attract]/tabs:border-b group-data-[variant=attract]/tabs:border-border-secondary group-data-[variant=attract]/tabs:px-6\",\r\n \"group-data-[variant=topbar]/tabs:w-full group-data-[variant=topbar]/tabs:justify-start group-data-[variant=topbar]/tabs:gap-6 group-data-[variant=topbar]/tabs:border-b group-data-[variant=topbar]/tabs:border-border-secondary group-data-[variant=topbar]/tabs:px-6\",\r\n \"group-data-[variant=segment]/tabs:bg-bg-primary group-data-[variant=segment]/tabs:rounded-[10px] group-data-[variant=segment]/tabs:p-0.5 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:border group-data-[variant=segment]/tabs:border-border-primary group-data-[variant=segment]/tabs:shadow-xp-xs\",\r\n \"group-data-[variant=solid]/tabs:bg-bg-primary group-data-[variant=solid]/tabs:rounded-[10px] group-data-[variant=solid]/tabs:p-0.5 group-data-[variant=solid]/tabs:gap-0.5 group-data-[variant=solid]/tabs:border group-data-[variant=solid]/tabs:border-border-primary\",\r\n \"group-data-[variant=filter]/tabs:gap-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n </TabsHighlightPrimitive>\r\n );\r\n}\r\n\r\ntype TabsTabProps = TabsTabPrimitiveProps & {\r\n count?: number | string;\r\n};\r\n\r\nfunction TabsTab({ className, count, children, ...props }: TabsTabProps) {\r\n return (\r\n <TabsHighlightItemPrimitive value={props.value} className=\"flex-1 group-data-[variant=attract]/tabs:flex-none group-data-[variant=topbar]/tabs:flex-none group-data-[variant=segment]/tabs:flex-none group-data-[variant=solid]/tabs:flex-none group-data-[variant=filter]/tabs:flex-none\">\r\n <TabsTabPrimitive\r\n className={cn(\r\n \"group/tabs-trigger data-[active=true]:text-text-brand-tertiary-alt focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring text-text-primary inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md w-full text-label-semibold-2 whitespace-nowrap transition-colors duration-300 ease-in-out focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:px-3 group-data-[variant=default]/tabs:py-2 group-data-[variant=default]/tabs:rounded-lg group-data-[variant=default]/tabs:text-text-quaternary hover:group-data-[variant=default]/tabs:text-text-secondary group-data-[variant=default]/tabs:data-[active=true]:text-text-white\",\r\n // underline variant\r\n \"group-data-[variant=underline]/tabs:h-8.5 group-data-[variant=underline]/tabs:px-3 hover:group-data-[variant=underline]/tabs:text-text-brand-secondary\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:h-auto group-data-[variant=attract]/tabs:py-3 group-data-[variant=attract]/tabs:px-0 group-data-[variant=attract]/tabs:gap-2 group-data-[variant=attract]/tabs:rounded-none group-data-[variant=attract]/tabs:text-label-medium-2 group-data-[variant=attract]/tabs:text-text-quaternary hover:group-data-[variant=attract]/tabs:text-text-secondary group-data-[variant=attract]/tabs:data-[active=true]:text-text-brand-tertiary group-data-[variant=attract]/tabs:data-[active=true]:text-label-semibold-2\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:h-auto group-data-[variant=topbar]/tabs:py-4 group-data-[variant=topbar]/tabs:px-0 group-data-[variant=topbar]/tabs:gap-2 group-data-[variant=topbar]/tabs:rounded-none group-data-[variant=topbar]/tabs:text-body-regular-2 group-data-[variant=topbar]/tabs:text-text-quaternary hover:group-data-[variant=topbar]/tabs:text-text-secondary group-data-[variant=topbar]/tabs:data-[active=true]:text-text-primary group-data-[variant=topbar]/tabs:data-[active=true]:text-label-semibold-2\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:h-9 group-data-[variant=segment]/tabs:px-3 group-data-[variant=segment]/tabs:py-2 group-data-[variant=segment]/tabs:gap-1 group-data-[variant=segment]/tabs:rounded-lg group-data-[variant=segment]/tabs:text-label-semibold-3 group-data-[variant=segment]/tabs:text-text-quaternary hover:group-data-[variant=segment]/tabs:text-text-secondary group-data-[variant=segment]/tabs:data-[active=true]:text-text-brand-secondary-alt group-data-[variant=segment]/tabs:data-[active=true]:data-[value=declined]:text-text-error-primary group-data-[variant=segment]/tabs:data-[active=true]:data-[value=rejected]:text-text-error-primary\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:h-9 group-data-[variant=solid]/tabs:px-3.5 group-data-[variant=solid]/tabs:py-2 group-data-[variant=solid]/tabs:rounded-lg group-data-[variant=solid]/tabs:text-label-semibold-3 group-data-[variant=solid]/tabs:text-text-tertiary hover:group-data-[variant=solid]/tabs:text-text-secondary group-data-[variant=solid]/tabs:data-[active=true]:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:h-9 group-data-[variant=filter]/tabs:px-3 group-data-[variant=filter]/tabs:gap-2 group-data-[variant=filter]/tabs:rounded-xp-card-base group-data-[variant=filter]/tabs:border group-data-[variant=filter]/tabs:border-border-primary group-data-[variant=filter]/tabs:bg-transparent group-data-[variant=filter]/tabs:text-body-medium-3 group-data-[variant=filter]/tabs:text-text-secondary hover:group-data-[variant=filter]/tabs:bg-bg-primary-hover group-data-[variant=filter]/tabs:data-[active=true]:border-transparent group-data-[variant=filter]/tabs:data-[active=true]:text-text-brand-secondary hover:group-data-[variant=filter]/tabs:data-[active=true]:bg-transparent group-data-[variant=filter]/tabs:[&_svg]:size-4 group-data-[variant=filter]/tabs:[&_svg]:text-fg-quaternary group-data-[variant=filter]/tabs:data-[active=true]:[&_svg]:text-fg-brand-primary\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n {count !== undefined && count !== 0 && count !== \"0\" && (\r\n <span\r\n className={cn(\r\n \"inline-flex items-center justify-center rounded-xp-card-base-xs px-0.5 py-px min-w-4 text-label-medium-4 transition-colors duration-300\",\r\n // default variant\r\n \"group-data-[variant=default]/tabs:bg-bg-quaternary group-data-[variant=default]/tabs:text-text-quaternary group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=default]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // underline & other variants\r\n \"group-data-[variant=underline]/tabs:bg-bg-quaternary group-data-[variant=underline]/tabs:text-text-quaternary group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=underline]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // attract variant\r\n \"group-data-[variant=attract]/tabs:bg-bg-quaternary group-data-[variant=attract]/tabs:text-text-quaternary group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=attract]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // topbar variant\r\n \"group-data-[variant=topbar]/tabs:bg-bg-quaternary group-data-[variant=topbar]/tabs:text-text-quaternary group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=topbar]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // segment variant\r\n \"group-data-[variant=segment]/tabs:bg-bg-quaternary group-data-[variant=segment]/tabs:text-text-quaternary group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-brand-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:text-text-white group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=declined]/tabs-trigger:bg-bg-error-solid group-data-[variant=segment]/tabs:group-data-[active=true]/tabs-trigger:group-data-[value=rejected]/tabs-trigger:bg-bg-error-solid\",\r\n // solid variant\r\n \"group-data-[variant=solid]/tabs:bg-bg-quaternary group-data-[variant=solid]/tabs:text-text-quaternary group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:bg-bg-secondary-solid group-data-[variant=solid]/tabs:group-data-[active=true]/tabs-trigger:text-text-primary-on-brand\",\r\n // filter variant\r\n \"group-data-[variant=filter]/tabs:bg-bg-brand-solid group-data-[variant=filter]/tabs:text-text-primary-on-brand\",\r\n )}\r\n >\r\n {count}\r\n </span>\r\n )}\r\n </TabsTabPrimitive>\r\n </TabsHighlightItemPrimitive>\r\n );\r\n}\r\n\r\ntype TabsPanelsProps = TabsPanelsPrimitiveProps;\r\n\r\nfunction TabsPanels(props: TabsPanelsProps) {\r\n return <TabsPanelsPrimitive {...props} />;\r\n}\r\n\r\ntype TabsPanelProps = TabsPanelPrimitiveProps;\r\n\r\nfunction TabsPanel({ className, ...props }: TabsPanelProps) {\r\n return (\r\n <TabsPanelPrimitive\r\n className={cn('flex-1 outline-none', className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n Tabs,\r\n TabsList,\r\n TabsTab,\r\n TabsPanels,\r\n TabsPanel,\r\n type TabsProps,\r\n type TabsListProps,\r\n type TabsTabProps,\r\n type TabsPanelsProps,\r\n type TabsPanelProps,\r\n};"]}
@@ -0,0 +1,2 @@
1
+ import {a,b,m,e,q,s,w,x,H}from'./chunk-IZQFTYJD.js';import'react';import {ChevronDownIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function X({multiple:m$1,items:s$1,placeholder:t="Select",icon:d,container:T,isPending:F,className:M,triggerClassName:k,contentClassName:A,disabled:R,infiniteScroll:x$1,filter:c,...o}){let r=m$1===true,L=o.showTitle??r,g=o.showSearch??r,[n,C]=useControlledState({value:o?.value,defaultValue:o?.defaultValue,onChange:o.onValueChange}),[$,q$1]=useControlledState({value:o?.inputValue?.toString(),defaultValue:o?.defaultInputValue?.toString(),onChange:o?.onInputValueChange}),u=Array.isArray(n)?n:n?[n]:[],a$1=u.length>0,z=u.length,B=a$1?r?`${t} (${z})`:u[0]?.label??t:r?`All ${t}`:t,D=()=>{C(null);};return jsxs(a,{items:s$1,multiple:m$1,value:n,onValueChange:C,inputValue:$,onInputValueChange:q$1,filter:c===null||!g?null:c,isItemEqualToValue:(l,p)=>l.value===p.value,disabled:R,...o,children:[jsxs(b,{className:cn("group flex h-9 w-fit max-w-[220px] items-center gap-2 rounded-xp-card-base border bg-bg-primary px-3 text-body-medium-3 transition-colors","border-border-primary text-text-secondary hover:bg-bg-primary-hover",a$1&&"border-border-brand bg-bg-brand-primary text-text-brand-secondary hover:bg-bg-brand-primary-hover-alt","disabled:pointer-events-none disabled:opacity-50","data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary",k,M),children:[d&&jsx("span",{className:cn("size-4 shrink-0 group-data-[popup-open]:text-fg-brand-primary",a$1?"text-fg-brand-primary":"text-fg-quaternary"),children:d}),jsx("span",{className:"truncate",children:B}),jsx(ChevronDownIcon,{className:cn("size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180 group-data-[popup-open]:text-fg-brand-primary",a$1?"text-fg-brand-primary":"text-fg-quaternary")})]}),jsx(m,{container:T,className:cn("w-72",A),align:"start",sideOffset:8,children:jsxs("div",{className:"flex flex-col",children:[L&&jsxs("div",{className:"flex items-center justify-between p-3 border-b border-border-primary",children:[jsx("span",{className:"text-label-semibold-3 text-text-primary",children:t}),jsx("button",{type:"button",disabled:!a$1,onClick:D,className:cn("text-label-semibold-3 transition-colors",a$1?"cursor-pointer text-text-error-primary hover:text-text-error-primary-hover":"cursor-not-allowed text-text-disabled"),children:"Clear All"})]}),g&&jsx(e,{placeholder:`Search ${t.toLowerCase()}...`}),jsx(q,{status:F||s$1===void 0?"pending":s$1?.length===0?"empty":null}),jsx(s,{children:(l,p,E)=>jsxs(Fragment,{children:[jsx(w,{indicator:r?"checkbox":void 0,value:l,children:jsx(x,{children:l.label})},l.value),p===E-1&&!!x$1&&jsx(H,{...x$1})]})})]})})]})}export{X as a};//# sourceMappingURL=chunk-CDHMNEJ5.js.map
2
+ //# sourceMappingURL=chunk-CDHMNEJ5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/composites/filter-combobox.tsx"],"names":["FilterCombobox","multiple","items","placeholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","infiniteScroll","filter","props","isMultiple","showTitle","showSearch","value","setValue","useControlledState","inputValue","setInputValue","valueArray","hasValue","count","triggerLabel","handleClear","jsxs","Combobox","a","b","ComboboxTrigger","cn","jsx","ChevronDownIcon","ComboboxPopup","ComboboxInput","ComboboxStatus","ComboboxList","item","index","length","Fragment","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"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","file":"chunk-CDHMNEJ5.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { ComboboxItem, ComboboxItemTitle, type ComboboxProps } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type FilterComboboxItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\ntype FilterComboboxValueType<Value extends FilterComboboxItem, Multiple extends boolean | undefined> = Multiple extends true ? Value[] : Value;\r\n\r\ntype BaseProps = {\r\n items: FilterComboboxItem[] | undefined\r\n placeholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n showTitle?: boolean\r\n showSearch?: boolean\r\n}\r\n\r\nexport type FilterComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxProps<Value, Multiple> & BaseProps\r\n\r\n// ─── Component ───\r\n\r\nfunction FilterCombobox<Value extends FilterComboboxItem, Multiple extends boolean | undefined = false>({\r\n multiple,\r\n items,\r\n placeholder = \"Select\",\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n infiniteScroll,\r\n filter,\r\n ...props\r\n}: FilterComboboxProps<Value, Multiple>) {\r\n const isMultiple = multiple === true\r\n const showTitle = props.showTitle ?? isMultiple\r\n const showSearch = props.showSearch ?? isMultiple\r\n\r\n const [value, setValue] = useControlledState<FilterComboboxValueType<Value, Multiple> | null>({\r\n value: props?.value,\r\n defaultValue: props?.defaultValue,\r\n onChange: props.onValueChange as (\r\n value: FilterComboboxValueType<Value, Multiple> | null\r\n ) => void\r\n })\r\n\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n // Normalize value to array for label & clear logic\r\n const valueArray = Array.isArray(value) ? value : value ? [value] : []\r\n const hasValue = valueArray.length > 0\r\n const count = valueArray.length\r\n\r\n const triggerLabel = !hasValue\r\n ? isMultiple\r\n ? `All ${placeholder}`\r\n : placeholder\r\n : isMultiple\r\n ? `${placeholder} (${count})`\r\n : valueArray[0]?.label ?? placeholder\r\n\r\n const handleClear = () => {\r\n setValue(null)\r\n }\r\n\r\n return (\r\n <Combobox\r\n items={items}\r\n multiple={multiple}\r\n value={value}\r\n onValueChange={setValue}\r\n inputValue={inputValue}\r\n onInputValueChange={setInputValue}\r\n filter={filter === null || !showSearch ? null : filter}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n {...props}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n \"group flex h-9 w-fit max-w-[220px] items-center gap-2 rounded-xp-card-base border bg-bg-primary px-3 text-body-medium-3 transition-colors\",\r\n \"border-border-primary text-text-secondary hover:bg-bg-primary-hover\",\r\n hasValue && \"border-border-brand bg-bg-brand-primary text-text-brand-secondary hover:bg-bg-brand-primary-hover-alt\",\r\n \"disabled:pointer-events-none disabled:opacity-50\",\r\n \"data-[popup-open]:border-border-brand data-[popup-open]:bg-bg-brand-primary data-[popup-open]:text-text-brand-secondary\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span\r\n className={cn(\r\n \"size-4 shrink-0 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n >\r\n {icon}\r\n </span>\r\n )}\r\n <span className=\"truncate\">{triggerLabel}</span>\r\n <ChevronDownIcon\r\n className={cn(\r\n \"size-4 shrink-0 transition-transform group-data-[popup-open]:rotate-180 group-data-[popup-open]:text-fg-brand-primary\",\r\n hasValue ? \"text-fg-brand-primary\" : \"text-fg-quaternary\"\r\n )}\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n <div className=\"flex flex-col\">\r\n {showTitle && (\r\n <div className=\"flex items-center justify-between p-3 border-b border-border-primary\">\r\n <span className=\"text-label-semibold-3 text-text-primary\">{placeholder}</span>\r\n <button\r\n type=\"button\"\r\n disabled={!hasValue}\r\n onClick={handleClear}\r\n className={cn(\r\n \"text-label-semibold-3 transition-colors\",\r\n hasValue\r\n ? \"cursor-pointer text-text-error-primary hover:text-text-error-primary-hover\"\r\n : \"cursor-not-allowed text-text-disabled\"\r\n )}\r\n >\r\n Clear All\r\n </button>\r\n </div>\r\n )}\r\n\r\n {showSearch && (\r\n <ComboboxInput placeholder={`Search ${placeholder.toLowerCase()}...`} />\r\n )}\r\n\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : (items)?.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {(item, index, length) => (\r\n <>\r\n <ComboboxItem\r\n indicator={isMultiple ? \"checkbox\" : undefined}\r\n key={item.value}\r\n value={item}\r\n >\r\n <ComboboxItemTitle>{item.label}</ComboboxItemTitle>\r\n </ComboboxItem>\r\n {index === length - 1 && !!infiniteScroll && (\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n )}\r\n </>\r\n )}\r\n </ComboboxList>\r\n </div>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { FilterCombobox }\r\n"]}
@@ -1,2 +1,2 @@
1
- import {a,b,i,m,q,s,w,x,H}from'./chunk-EO656DPM.js';import {a as a$1}from'./chunk-JH6RZ3QH.js';import'react';import {ChevronDownIcon}from'lucide-react';import'class-variance-authority';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function B({items:t,value:f,defaultValue:g,onValueChange:d,placeholder:I="Select",icon:l,container:S,isPending:y,className:P,triggerClassName:V,contentClassName:v,disabled:N,size:h="md",infiniteScroll:R}){return jsxs(a,{items:t,value:f,defaultValue:g,onValueChange:d,isItemEqualToValue:(e,T)=>e.value===T.value,disabled:N,children:[jsxs(b,{className:cn(a$1({size:h}),"group flex cursor-pointer items-center gap-2 pr-3 text-left",V,P),children:[l&&jsx("span",{className:"size-4.5 shrink-0 text-fg-quaternary",children:l}),jsx("span",{className:"flex-1 truncate",children:jsx(i,{children:e=>jsx("span",{className:e?"text-text-primary":"text-text-placeholder",children:e?.label??I})})}),jsx(ChevronDownIcon,{className:"size-4 shrink-0 text-fg-quaternary transition-transform group-data-[popup-open]:rotate-180"})]}),jsxs(m,{container:S,className:cn("w-72",v),align:"start",sideOffset:8,children:[jsx(q,{status:y||t===void 0?"pending":t.length===0?"empty":null}),jsxs(s,{children:[t?.map(e=>jsx(w,{value:e,children:jsx(x,{children:e.label})},e.value)),jsx(H,{...R})]})]})]})}export{B as a};//# sourceMappingURL=chunk-QUSWZDB5.js.map
2
- //# sourceMappingURL=chunk-QUSWZDB5.js.map
1
+ import {a,b,i,m,q,s,w,x,H}from'./chunk-IZQFTYJD.js';import {a as a$1}from'./chunk-JH6RZ3QH.js';import'react';import {ChevronDownIcon}from'lucide-react';import'class-variance-authority';import {cn}from'@xploreu/lib/cn';import {jsxs,jsx}from'react/jsx-runtime';function B({items:t,value:f,defaultValue:g,onValueChange:d,placeholder:I="Select",icon:l,container:S,isPending:y,className:P,triggerClassName:V,contentClassName:v,disabled:N,size:h="md",infiniteScroll:R}){return jsxs(a,{items:t,value:f,defaultValue:g,onValueChange:d,isItemEqualToValue:(e,T)=>e.value===T.value,disabled:N,children:[jsxs(b,{className:cn(a$1({size:h}),"group flex cursor-pointer items-center gap-2 pr-3 text-left",V,P),children:[l&&jsx("span",{className:"size-4.5 shrink-0 text-fg-quaternary",children:l}),jsx("span",{className:"flex-1 truncate",children:jsx(i,{children:e=>jsx("span",{className:e?"text-text-primary":"text-text-placeholder",children:e?.label??I})})}),jsx(ChevronDownIcon,{className:"size-4 shrink-0 text-fg-quaternary transition-transform group-data-[popup-open]:rotate-180"})]}),jsxs(m,{container:S,className:cn("w-72",v),align:"start",sideOffset:8,children:[jsx(q,{status:y||t===void 0?"pending":t.length===0?"empty":null}),jsxs(s,{children:[t?.map(e=>jsx(w,{value:e,children:jsx(x,{children:e.label})},e.value)),jsx(H,{...R})]})]})]})}export{B as a};//# sourceMappingURL=chunk-GRQYQEGS.js.map
2
+ //# sourceMappingURL=chunk-GRQYQEGS.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/composites/combobox-simple.tsx"],"names":["ComboboxSimple","items","value","defaultValue","onValueChange","placeholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","size","infiniteScroll","jsxs","Combobox","a","b","ComboboxTrigger","cn","inputVariants","jsx","ComboboxValue","item","ChevronDownIcon","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"mQA8CA,SAASA,CAAAA,CAAe,CACtB,KAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,YAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CAAc,QAAA,CACd,KAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,gBAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,IAAA,CAAAC,EAAO,IAAA,CACP,cAAA,CAAAC,CACF,CAAA,CAAwB,CACtB,OACEC,IAAAA,CAACC,CAAAA,CAAA,CACC,KAAA,CAAOf,CAAAA,CACP,MAAOC,CAAAA,CACP,YAAA,CAAcC,EACd,aAAA,CAAeC,CAAAA,CACf,mBAAoB,CAACa,CAAAA,CAAGC,IAAMD,CAAAA,CAAE,KAAA,GAAUC,EAAE,KAAA,CAC5C,QAAA,CAAUN,EAEV,QAAA,CAAA,CAAAG,IAAAA,CAACI,EAAA,CACC,SAAA,CAAWC,GACTC,GAAAA,CAAc,CAAE,KAAAR,CAAK,CAAC,EACtB,6DAAA,CACAH,CAAAA,CACAD,CACF,CAAA,CAEC,QAAA,CAAA,CAAAH,CAAAA,EACCgB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAwC,QAAA,CAAAhB,CAAAA,CAAK,EAE/DgB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,iBAAA,CACd,QAAA,CAAAA,IAACC,CAAAA,CAAA,CACE,SAACC,CAAAA,EACAF,GAAAA,CAAC,QAAK,SAAA,CAAWE,CAAAA,CAAO,oBAAsB,uBAAA,CAC3C,QAAA,CAAAA,GAAM,KAAA,EAASnB,CAAAA,CAClB,EAEJ,CAAA,CACF,CAAA,CACAiB,IAACG,eAAAA,CAAA,CACC,UAAU,4FAAA,CACZ,CAAA,CAAA,CACF,EAEAV,IAAAA,CAACW,CAAAA,CAAA,CACC,SAAA,CAAWnB,CAAAA,CACX,UAAWa,EAAAA,CAAG,MAAA,CAAQT,CAAgB,CAAA,CACtC,KAAA,CAAM,QACN,UAAA,CAAY,CAAA,CAEZ,UAAAW,GAAAA,CAACK,CAAAA,CAAA,CACC,MAAA,CACEnB,CAAAA,EAAaP,IAAU,MAAA,CACnB,SAAA,CACAA,EAAM,MAAA,GAAW,CAAA,CACf,QACA,IAAA,CAEV,CAAA,CACAc,KAACa,CAAAA,CAAA,CACE,UAAA3B,CAAAA,EAAO,GAAA,CAAKuB,GACXF,GAAAA,CAACO,CAAAA,CAAA,CAA8B,KAAA,CAAOL,CAAAA,CACpC,SAAAF,GAAAA,CAACQ,CAAAA,CAAA,CACE,QAAA,CAAAN,CAAAA,CAAK,MACR,CAAA,CAAA,CAHiBA,CAAAA,CAAK,KAIxB,CACD,CAAA,CACDF,IAACS,CAAAA,CAAA,CAAwB,GAAGjB,CAAAA,CAAgB,CAAA,CAAA,CAC9C,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ","file":"chunk-QUSWZDB5.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { inputVariants } from \"../ui/input\"\r\nimport { ComboboxItem, ComboboxItemTitle } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type ComboboxSimpleItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\nexport type ComboboxSimpleProps = {\r\n items: ComboboxSimpleItem[] | undefined\r\n value?: ComboboxSimpleItem | null\r\n defaultValue?: ComboboxSimpleItem | null\r\n onValueChange?: (value: ComboboxSimpleItem | null) => void\r\n placeholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n size?: VariantProps<typeof inputVariants>[\"size\"]\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n}\r\n\r\n// ─── Component ───\r\n\r\nfunction ComboboxSimple({\r\n items,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n placeholder = \"Select\",\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n size = \"md\",\r\n infiniteScroll,\r\n}: ComboboxSimpleProps) {\r\n return (\r\n <Combobox\r\n items={items}\r\n value={value}\r\n defaultValue={defaultValue}\r\n onValueChange={onValueChange}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n inputVariants({ size }),\r\n \"group flex cursor-pointer items-center gap-2 pr-3 text-left\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span className=\"size-4.5 shrink-0 text-fg-quaternary\">{icon}</span>\r\n )}\r\n <span className=\"flex-1 truncate\">\r\n <ComboboxValue>\r\n {(item) => (\r\n <span className={item ? \"text-text-primary\" : \"text-text-placeholder\"}>\r\n {item?.label ?? placeholder}\r\n </span>\r\n )}\r\n </ComboboxValue>\r\n </span>\r\n <ChevronDownIcon\r\n className=\"size-4 shrink-0 text-fg-quaternary transition-transform group-data-[popup-open]:rotate-180\"\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem key={item.value} value={item}>\r\n <ComboboxItemTitle>\r\n {item.label}\r\n </ComboboxItemTitle>\r\n </ComboboxItem>\r\n ))}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxSimple }\r\n"]}
1
+ {"version":3,"sources":["../src/composites/combobox-simple.tsx"],"names":["ComboboxSimple","items","value","defaultValue","onValueChange","placeholder","icon","container","isPending","className","triggerClassName","contentClassName","disabled","size","infiniteScroll","jsxs","Combobox","a","b","ComboboxTrigger","cn","inputVariants","jsx","ComboboxValue","item","ChevronDownIcon","ComboboxPopup","ComboboxStatus","ComboboxList","ComboboxItem","ComboboxItemTitle","ComboboxInfiniteScroll"],"mappings":"mQA8CA,SAASA,CAAAA,CAAe,CACtB,KAAA,CAAAC,CAAAA,CACA,MAAAC,CAAAA,CACA,YAAA,CAAAC,EACA,aAAA,CAAAC,CAAAA,CACA,YAAAC,CAAAA,CAAc,QAAA,CACd,KAAAC,CAAAA,CACA,SAAA,CAAAC,EACA,SAAA,CAAAC,CAAAA,CACA,UAAAC,CAAAA,CACA,gBAAA,CAAAC,EACA,gBAAA,CAAAC,CAAAA,CACA,SAAAC,CAAAA,CACA,IAAA,CAAAC,EAAO,IAAA,CACP,cAAA,CAAAC,CACF,CAAA,CAAwB,CACtB,OACEC,IAAAA,CAACC,CAAAA,CAAA,CACC,KAAA,CAAOf,CAAAA,CACP,MAAOC,CAAAA,CACP,YAAA,CAAcC,EACd,aAAA,CAAeC,CAAAA,CACf,mBAAoB,CAACa,CAAAA,CAAGC,IAAMD,CAAAA,CAAE,KAAA,GAAUC,EAAE,KAAA,CAC5C,QAAA,CAAUN,EAEV,QAAA,CAAA,CAAAG,IAAAA,CAACI,EAAA,CACC,SAAA,CAAWC,GACTC,GAAAA,CAAc,CAAE,KAAAR,CAAK,CAAC,EACtB,6DAAA,CACAH,CAAAA,CACAD,CACF,CAAA,CAEC,QAAA,CAAA,CAAAH,CAAAA,EACCgB,GAAAA,CAAC,MAAA,CAAA,CAAK,SAAA,CAAU,uCAAwC,QAAA,CAAAhB,CAAAA,CAAK,EAE/DgB,GAAAA,CAAC,MAAA,CAAA,CAAK,UAAU,iBAAA,CACd,QAAA,CAAAA,IAACC,CAAAA,CAAA,CACE,SAACC,CAAAA,EACAF,GAAAA,CAAC,QAAK,SAAA,CAAWE,CAAAA,CAAO,oBAAsB,uBAAA,CAC3C,QAAA,CAAAA,GAAM,KAAA,EAASnB,CAAAA,CAClB,EAEJ,CAAA,CACF,CAAA,CACAiB,IAACG,eAAAA,CAAA,CACC,UAAU,4FAAA,CACZ,CAAA,CAAA,CACF,EAEAV,IAAAA,CAACW,CAAAA,CAAA,CACC,SAAA,CAAWnB,CAAAA,CACX,UAAWa,EAAAA,CAAG,MAAA,CAAQT,CAAgB,CAAA,CACtC,KAAA,CAAM,QACN,UAAA,CAAY,CAAA,CAEZ,UAAAW,GAAAA,CAACK,CAAAA,CAAA,CACC,MAAA,CACEnB,CAAAA,EAAaP,IAAU,MAAA,CACnB,SAAA,CACAA,EAAM,MAAA,GAAW,CAAA,CACf,QACA,IAAA,CAEV,CAAA,CACAc,KAACa,CAAAA,CAAA,CACE,UAAA3B,CAAAA,EAAO,GAAA,CAAKuB,GACXF,GAAAA,CAACO,CAAAA,CAAA,CAA8B,KAAA,CAAOL,CAAAA,CACpC,SAAAF,GAAAA,CAACQ,CAAAA,CAAA,CACE,QAAA,CAAAN,CAAAA,CAAK,MACR,CAAA,CAAA,CAHiBA,CAAAA,CAAK,KAIxB,CACD,CAAA,CACDF,IAACS,CAAAA,CAAA,CAAwB,GAAGjB,CAAAA,CAAgB,CAAA,CAAA,CAC9C,CAAA,CAAA,CACF,CAAA,CAAA,CACF,CAEJ","file":"chunk-GRQYQEGS.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\nimport { ChevronDownIcon } from \"lucide-react\"\r\nimport { type VariantProps } from \"class-variance-authority\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport { inputVariants } from \"../ui/input\"\r\nimport { ComboboxItem, ComboboxItemTitle } from \"../ui/combobox\"\r\nimport {\r\n Combobox,\r\n ComboboxInfiniteScroll,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxPortal,\r\n ComboboxStatus,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"../ui/combobox\"\r\n\r\n// ─── Types ───\r\n\r\nexport type ComboboxSimpleItem = {\r\n label: string\r\n value: string\r\n}\r\n\r\nexport type ComboboxSimpleProps = {\r\n items: ComboboxSimpleItem[] | undefined\r\n value?: ComboboxSimpleItem | null\r\n defaultValue?: ComboboxSimpleItem | null\r\n onValueChange?: (value: ComboboxSimpleItem | null) => void\r\n placeholder?: string\r\n icon?: React.ReactNode\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n isPending?: boolean\r\n className?: string\r\n triggerClassName?: string\r\n contentClassName?: string\r\n disabled?: boolean\r\n size?: VariantProps<typeof inputVariants>[\"size\"]\r\n infiniteScroll?: React.ComponentProps<typeof ComboboxInfiniteScroll>\r\n}\r\n\r\n// ─── Component ───\r\n\r\nfunction ComboboxSimple({\r\n items,\r\n value,\r\n defaultValue,\r\n onValueChange,\r\n placeholder = \"Select\",\r\n icon,\r\n container,\r\n isPending,\r\n className,\r\n triggerClassName,\r\n contentClassName,\r\n disabled,\r\n size = \"md\",\r\n infiniteScroll,\r\n}: ComboboxSimpleProps) {\r\n return (\r\n <Combobox\r\n items={items}\r\n value={value}\r\n defaultValue={defaultValue}\r\n onValueChange={onValueChange}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n disabled={disabled}\r\n >\r\n <ComboboxTrigger\r\n className={cn(\r\n inputVariants({ size }),\r\n \"group flex cursor-pointer items-center gap-2 pr-3 text-left\",\r\n triggerClassName,\r\n className\r\n )}\r\n >\r\n {icon && (\r\n <span className=\"size-4.5 shrink-0 text-fg-quaternary\">{icon}</span>\r\n )}\r\n <span className=\"flex-1 truncate\">\r\n <ComboboxValue>\r\n {(item) => (\r\n <span className={item ? \"text-text-primary\" : \"text-text-placeholder\"}>\r\n {item?.label ?? placeholder}\r\n </span>\r\n )}\r\n </ComboboxValue>\r\n </span>\r\n <ChevronDownIcon\r\n className=\"size-4 shrink-0 text-fg-quaternary transition-transform group-data-[popup-open]:rotate-180\"\r\n />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup\r\n container={container}\r\n className={cn(\"w-72\", contentClassName)}\r\n align=\"start\"\r\n sideOffset={8}\r\n >\r\n <ComboboxStatus\r\n status={\r\n isPending || items === undefined\r\n ? \"pending\"\r\n : items.length === 0\r\n ? \"empty\"\r\n : null\r\n }\r\n />\r\n <ComboboxList>\r\n {items?.map((item) => (\r\n <ComboboxItem key={item.value} value={item}>\r\n <ComboboxItemTitle>\r\n {item.label}\r\n </ComboboxItemTitle>\r\n </ComboboxItem>\r\n ))}\r\n <ComboboxInfiniteScroll {...infiniteScroll} />\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n )\r\n}\r\n\r\nexport { ComboboxSimple }\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {b,c as c$1}from'./chunk-2URFXFQC.js';import*as x from'react';import {Combobox}from'@base-ui/react/combobox';import {AnimatePresence,motion}from'motion/react';import {useControlledState}from'@xploreu/hooks/use-controlled-state';import {useDataState}from'@xploreu/hooks/use-data-state';import {getStrictContext}from'@xploreu/lib/get-strict-context';import {jsx}from'react/jsx-runtime';var [V,L]=getStrictContext("ComboboxContext"),[H,c]=getStrictContext("ComboboxActiveValueContext");function M({behavior:o="default",...b}){let[i,p]=useControlledState({value:b?.open,defaultValue:b?.defaultOpen,onChange:b?.onOpenChange}),[a,m]=useControlledState({value:b?.inputValue?.toString(),defaultValue:b?.defaultInputValue?.toString(),onChange:b?.onInputValueChange}),[n,h]=x.useState(null),g=(s,r)=>{if(r.reason==="input-clear")return r.cancel();m(s,r);},d=(s,r)=>{let y=r.trigger?.dataset;if(o==="chip-outside"&&(r.reason==="trigger-press"&&y?.slot==="combobox-clear-input"&&!s||r.reason==="item-press"))return r.cancel();p(s,r);};return jsx(H,{value:{highlightedValue:n,setHighlightedValue:h},children:jsx(V,{value:{open:i,setOpen:p,inputValue:a,setInputValue:m},children:jsx(Combobox.Root,{"data-slot":"combobox",...b,onInputValueChange:g,onOpenChange:d})})})}function k(o){return jsx(Combobox.Trigger,{"data-slot":"combobox-trigger",...o})}function E(o){return jsx(Combobox.Label,{"data-slot":"combobox-label",...o})}function O(o){return jsx(Combobox.InputGroup,{"data-slot":"combobox-input-group",...o})}function B(o){return jsx(Combobox.Input,{"data-slot":"combobox-input",...o})}function F(o){return jsx(Combobox.Icon,{"data-slot":"combobox-icon",...o})}function q(o){return jsx(Combobox.Clear,{"data-slot":"combobox-clear",...o})}function z(o){return jsx(Combobox.Value,{"data-slot":"combobox-value",...o})}function J(o){return jsx(Combobox.Chips,{"data-slot":"combobox-chips",...o})}function K(o){return jsx(Combobox.Chip,{"data-slot":"combobox-chip",...o})}function N(o){return jsx(Combobox.ChipRemove,{"data-slot":"combobox-chip-remove",...o})}function Q(o){let{open:b}=L();return jsx(AnimatePresence,{children:b&&jsx(Combobox.Portal,{"data-slot":"combobox-portal",keepMounted:true,...o})})}function U(o){return jsx(Combobox.Positioner,{"data-slot":"combobox-positioner",...o})}function W({initialFocus:o,finalFocus:b,transition:i={type:"spring",stiffness:300,damping:25},...p}){return jsx(Combobox.Popup,{finalFocus:b,initialFocus:o,render:jsx(motion.div,{animate:{opacity:1,scale:1},"data-slot":"combobox-popup",exit:{opacity:0,scale:.5},initial:{opacity:0,scale:.5},transition:i,...p},"combobox-popup")})}function X(o){return jsx(Combobox.Backdrop,{"data-slot":"combobox-backdrop",...o})}function Y(o){return jsx(Combobox.Status,{"data-slot":"combobox-status",...o})}function Z(o){return jsx(Combobox.Empty,{"data-slot":"combobox-empty",...o})}function _(o){return jsx(Combobox.List,{"data-slot":"combobox-list",...o})}function $({transition:o={type:"spring",stiffness:350,damping:35},...b$1}){let{highlightedValue:i}=c();return jsx(b,{"data-slot":"combobox-highlight",click:false,controlledItems:true,transition:o,value:i,...b$1})}function j(o){return jsx(c$1,{"data-slot":"combobox-highlight-item",...o})}function D(o){return jsx(Combobox.Row,{"data-slot":"combobox-row",...o})}function oo(o){let{highlightedValue:b,setHighlightedValue:i}=c(),[,p]=useDataState("highlighted",void 0,a=>{let m=p.current,n=m?.dataset.value||m?.id||null;n&&(a===true?i(n):b===n&&i(null));});return jsx(Combobox.Item,{ref:p,"data-slot":"combobox-item",...o})}function to(o){return jsx(Combobox.ItemIndicator,{"data-slot":"combobox-item-indicator",...o})}function eo(o){return jsx(Combobox.Separator,{"data-slot":"combobox-separator",...o})}function bo(o){return jsx(Combobox.Group,{"data-slot":"combobox-group",...o})}function ro(o){return jsx(Combobox.GroupLabel,{"data-slot":"combobox-group-label",...o})}function io(o){return jsx(Combobox.Collection,{"data-slot":"combobox-collection",...o})}function po(o){return jsx(Combobox.Arrow,{"data-slot":"combobox-arrow",...o})}var mo=Combobox.useFilteredItems,no=Combobox.useFilter;export{bo as A,ro as B,io as C,po as D,mo as E,no as F,L as a,c as b,M as c,k as d,E as e,O as f,B as g,F as h,q as i,z as j,J as k,K as l,N as m,Q as n,U as o,W as p,X as q,Y as r,Z as s,_ as t,$ as u,j as v,D as w,oo as x,to as y,eo as z};//# sourceMappingURL=chunk-HHG7BSWN.js.map
2
+ //# sourceMappingURL=chunk-HHG7BSWN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/primitives/combobox.tsx"],"names":["ComboboxProvider","useCombobox","getStrictContext","ComboboxActiveValueProvider","useComboboxActiveValue","Combobox","behavior","props","open","setOpen","useControlledState","inputValue","setInputValue","highlightedValue","setHighlightedValue","handleInputValueChange","eventDetails","handleOpenChange","dataSet","jsx","ComboboxPrimitive","ComboboxTrigger","ComboboxLabel","ComboboxInputGroup","ComboboxInput","ComboboxIcon","ComboboxClear","ComboboxValue","ComboboxChips","ComboboxChip","ComboboxChipRemove","ComboboxPortal","AnimatePresence","ComboboxPositioner","ComboboxPopup","initialFocus","finalFocus","transition","motion","ComboboxBackdrop","ComboboxStatus","ComboboxEmpty","ComboboxList","ComboboxHighlight","Highlight","ComboboxHighlightItem","HighlightItem","ComboboxRow","ComboboxItem","highlightedRef","useDataState","value","el","v","ComboboxItemIndicator","ComboboxSeparator","ComboboxGroup","ComboboxGroupLabel","ComboboxCollection","ComboboxArrow","useFilteredItems","useFilter"],"mappings":"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","file":"chunk-HHG7BSWN.js","sourcesContent":["\"use client\"\r\n\r\nimport * as React from \"react\"\r\n\r\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react/combobox\"\r\nimport {\r\n AnimatePresence,\r\n type HTMLMotionProps,\r\n motion\r\n} from \"motion/react\"\r\n\r\nimport {\r\n Highlight,\r\n HighlightItem,\r\n type HighlightItemProps,\r\n type HighlightProps,\r\n} from \"../effects/highlight\"\r\nimport { useControlledState } from \"@xploreu/hooks/use-controlled-state\"\r\nimport { useDataState } from \"@xploreu/hooks/use-data-state\"\r\nimport { getStrictContext } from \"@xploreu/lib/get-strict-context\"\r\n\r\ntype ComboboxContextType = {\r\n open: boolean;\r\n setOpen: (open: boolean, eventDetails: ComboboxPrimitive.Root.ChangeEventDetails) => void;\r\n inputValue: string;\r\n setInputValue: (inputValue: string, eventDetails: ComboboxPrimitive.Root.ChangeEventDetails) => void;\r\n}\r\n\r\ntype ComboboxActiveValueContextType = {\r\n highlightedValue: string | null;\r\n setHighlightedValue: (value: string | null) => void;\r\n}\r\n\r\nconst [ComboboxProvider, useCombobox] =\r\n getStrictContext<ComboboxContextType>(\"ComboboxContext\")\r\n\r\nconst [ComboboxActiveValueProvider, useComboboxActiveValue] =\r\n getStrictContext<ComboboxActiveValueContextType>(\"ComboboxActiveValueContext\")\r\n\r\ntype ComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxPrimitive.Root.Props<Value, Multiple> & {\r\n behavior?: \"default\" | \"chip-outside\";\r\n}\r\n\r\nfunction Combobox<Value, Multiple extends boolean | undefined = false>({\r\n behavior = \"default\",\r\n ...props\r\n}: ComboboxProps<Value, Multiple>) {\r\n const [open, setOpen] = useControlledState({\r\n value: props?.open,\r\n defaultValue: props?.defaultOpen,\r\n onChange: props?.onOpenChange,\r\n })\r\n\r\n const [inputValue, setInputValue] = useControlledState({\r\n value: props?.inputValue?.toString(),\r\n defaultValue: props?.defaultInputValue?.toString(),\r\n onChange: props?.onInputValueChange,\r\n })\r\n\r\n const [highlightedValue, setHighlightedValue] = React.useState<string | null>(null)\r\n\r\n const handleInputValueChange: ComboboxProps<Value, Multiple>[\"onInputValueChange\"] = (inputValue, eventDetails) => {\r\n // if the input is cleared, we want to cancel the event to prevent resetting the input value.\r\n if (eventDetails.reason === \"input-clear\") return eventDetails.cancel()\r\n\r\n setInputValue(inputValue, eventDetails)\r\n }\r\n\r\n const handleOpenChange: ComboboxProps<Value, Multiple>[\"onOpenChange\"] = (open, eventDetails) => {\r\n const dataSet = (eventDetails.trigger as HTMLElement)?.dataset\r\n\r\n if (behavior === \"chip-outside\") {\r\n if (\r\n eventDetails.reason === \"trigger-press\" &&\r\n dataSet?.slot === \"combobox-clear-input\" &&\r\n !open\r\n ) {\r\n return eventDetails.cancel()\r\n }\r\n\r\n if (eventDetails.reason === \"item-press\") {\r\n return eventDetails.cancel()\r\n }\r\n }\r\n\r\n setOpen(open, eventDetails)\r\n }\r\n\r\n return (\r\n <ComboboxActiveValueProvider value={{ highlightedValue, setHighlightedValue }}>\r\n <ComboboxProvider value={{ open, setOpen, inputValue, setInputValue }}>\r\n <ComboboxPrimitive.Root\r\n data-slot=\"combobox\"\r\n {...props}\r\n onInputValueChange={handleInputValueChange}\r\n onOpenChange={handleOpenChange}\r\n />\r\n </ComboboxProvider>\r\n </ComboboxActiveValueProvider>\r\n )\r\n}\r\n\r\ntype ComboboxTriggerProps = ComboboxPrimitive.Trigger.Props\r\n\r\nfunction ComboboxTrigger(props: ComboboxTriggerProps) {\r\n return <ComboboxPrimitive.Trigger\r\n data-slot=\"combobox-trigger\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxLabelProps = ComboboxPrimitive.Label.Props\r\n\r\nfunction ComboboxLabel(props: ComboboxLabelProps) {\r\n return <ComboboxPrimitive.Label\r\n data-slot=\"combobox-label\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxInputGroupProps = ComboboxPrimitive.InputGroup.Props\r\n\r\nfunction ComboboxInputGroup(props: ComboboxInputGroupProps) {\r\n return <ComboboxPrimitive.InputGroup\r\n data-slot=\"combobox-input-group\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxInputProps = ComboboxPrimitive.Input.Props\r\n\r\nfunction ComboboxInput(props: ComboboxInputProps) {\r\n return <ComboboxPrimitive.Input\r\n data-slot=\"combobox-input\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxIconProps = ComboboxPrimitive.Icon.Props\r\n\r\nfunction ComboboxIcon(props: ComboboxIconProps) {\r\n return <ComboboxPrimitive.Icon\r\n data-slot=\"combobox-icon\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxClearProps = ComboboxPrimitive.Clear.Props\r\n\r\nfunction ComboboxClear(props: ComboboxClearProps) {\r\n return <ComboboxPrimitive.Clear\r\n data-slot=\"combobox-clear\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxValueProps = ComboboxPrimitive.Value.Props\r\n\r\nfunction ComboboxValue(props: ComboboxValueProps) {\r\n return <ComboboxPrimitive.Value\r\n data-slot=\"combobox-value\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxChipsProps = ComboboxPrimitive.Chips.Props\r\n\r\nfunction ComboboxChips(props: ComboboxChipsProps) {\r\n return <ComboboxPrimitive.Chips\r\n data-slot=\"combobox-chips\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxChipProps = ComboboxPrimitive.Chip.Props\r\n\r\nfunction ComboboxChip(props: ComboboxChipProps) {\r\n return <ComboboxPrimitive.Chip\r\n data-slot=\"combobox-chip\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxChipRemoveProps = ComboboxPrimitive.ChipRemove.Props\r\n\r\nfunction ComboboxChipRemove(props: ComboboxChipRemoveProps) {\r\n return <ComboboxPrimitive.ChipRemove\r\n data-slot=\"combobox-chip-remove\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxPortalProps = Omit<\r\n ComboboxPrimitive.Portal.Props,\r\n \"keepMounted\"\r\n>\r\n\r\nfunction ComboboxPortal(props: ComboboxPortalProps) {\r\n const { open } = useCombobox()\r\n\r\n return (\r\n <AnimatePresence>\r\n {open && (\r\n <ComboboxPrimitive.Portal\r\n data-slot=\"combobox-portal\"\r\n keepMounted\r\n {...props}\r\n />\r\n )}\r\n </AnimatePresence>\r\n )\r\n}\r\n\r\ntype ComboboxPositionerProps = ComboboxPrimitive.Positioner.Props\r\n\r\nfunction ComboboxPositioner(props: ComboboxPositionerProps) {\r\n return (\r\n <ComboboxPrimitive.Positioner\r\n data-slot=\"combobox-positioner\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxPopupProps = Omit<\r\n ComboboxPrimitive.Popup.Props,\r\n \"render\"\r\n> &\r\n HTMLMotionProps<\"div\">\r\n\r\nfunction ComboboxPopup({\r\n initialFocus,\r\n finalFocus,\r\n transition = { type: \"spring\", stiffness: 300, damping: 25 },\r\n ...props\r\n}: ComboboxPopupProps) {\r\n return (\r\n <ComboboxPrimitive.Popup\r\n finalFocus={finalFocus}\r\n initialFocus={initialFocus}\r\n render={\r\n <motion.div\r\n key=\"combobox-popup\"\r\n animate={{ opacity: 1, scale: 1 }}\r\n data-slot=\"combobox-popup\"\r\n exit={{ opacity: 0, scale: 0.5 }}\r\n initial={{ opacity: 0, scale: 0.5 }}\r\n transition={transition}\r\n {...props}\r\n />\r\n }\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxBackdropProps = ComboboxPrimitive.Backdrop.Props\r\n\r\nfunction ComboboxBackdrop(props: ComboboxBackdropProps) {\r\n return <ComboboxPrimitive.Backdrop\r\n data-slot=\"combobox-backdrop\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxStatusProps = ComboboxPrimitive.Status.Props\r\n\r\nfunction ComboboxStatus(props: ComboboxStatusProps) {\r\n return <ComboboxPrimitive.Status\r\n data-slot=\"combobox-status\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxEmptyProps = ComboboxPrimitive.Empty.Props\r\n\r\nfunction ComboboxEmpty(props: ComboboxEmptyProps) {\r\n return <ComboboxPrimitive.Empty\r\n data-slot=\"combobox-empty\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxListProps = ComboboxPrimitive.List.Props\r\n\r\nfunction ComboboxList(props: ComboboxListProps) {\r\n return <ComboboxPrimitive.List\r\n data-slot=\"combobox-list\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxHighlightProps = Omit<\r\n HighlightProps,\r\n \"controlledItems\" | \"enabled\" | \"hover\"\r\n>\r\n\r\nfunction ComboboxHighlight({\r\n transition = { type: 'spring', stiffness: 350, damping: 35 },\r\n ...props\r\n}: ComboboxHighlightProps) {\r\n const { highlightedValue } = useComboboxActiveValue();\r\n\r\n return (\r\n <Highlight\r\n data-slot=\"combobox-highlight\"\r\n click={false}\r\n controlledItems\r\n transition={transition}\r\n value={highlightedValue}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\ntype ComboboxHighlightItemProps = HighlightItemProps\r\n\r\nfunction ComboboxHighlightItem(props: ComboboxHighlightItemProps) {\r\n return (\r\n <HighlightItem\r\n data-slot=\"combobox-highlight-item\"\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxRowProps = ComboboxPrimitive.Row.Props\r\n\r\nfunction ComboboxRow(props: ComboboxRowProps) {\r\n return <ComboboxPrimitive.Row\r\n data-slot=\"combobox-row\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxItemProps = ComboboxPrimitive.Item.Props\r\n\r\nfunction ComboboxItem(props: ComboboxItemProps) {\r\n const { highlightedValue, setHighlightedValue } = useComboboxActiveValue()\r\n const [, highlightedRef] = useDataState<HTMLDivElement>(\r\n \"highlighted\",\r\n undefined,\r\n (value) => {\r\n const el = highlightedRef.current\r\n const v = el?.dataset.value || el?.id || null\r\n if (!v) return\r\n\r\n if (value === true) {\r\n setHighlightedValue(v)\r\n } else if (highlightedValue === v) {\r\n setHighlightedValue(null)\r\n }\r\n },\r\n )\r\n\r\n return <ComboboxPrimitive.Item\r\n ref={highlightedRef}\r\n data-slot=\"combobox-item\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxItemIndicatorProps = ComboboxPrimitive.ItemIndicator.Props\r\n\r\nfunction ComboboxItemIndicator(props: ComboboxItemIndicatorProps) {\r\n return <ComboboxPrimitive.ItemIndicator\r\n data-slot=\"combobox-item-indicator\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxSeparatorProps = ComboboxPrimitive.Separator.Props\r\n\r\nfunction ComboboxSeparator(props: ComboboxSeparatorProps) {\r\n return <ComboboxPrimitive.Separator\r\n data-slot=\"combobox-separator\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxGroupProps = ComboboxPrimitive.Group.Props\r\n\r\nfunction ComboboxGroup(props: ComboboxGroupProps) {\r\n return <ComboboxPrimitive.Group\r\n data-slot=\"combobox-group\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxGroupLabelProps = ComboboxPrimitive.GroupLabel.Props\r\n\r\nfunction ComboboxGroupLabel(props: ComboboxGroupLabelProps) {\r\n return <ComboboxPrimitive.GroupLabel\r\n data-slot=\"combobox-group-label\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxCollectionProps = ComboboxPrimitive.Collection.Props\r\n\r\nfunction ComboboxCollection(props: ComboboxCollectionProps) {\r\n return <ComboboxPrimitive.Collection\r\n data-slot=\"combobox-collection\"\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxArrowProps = ComboboxPrimitive.Arrow.Props\r\n\r\nfunction ComboboxArrow(props: ComboboxArrowProps) {\r\n return <ComboboxPrimitive.Arrow\r\n data-slot=\"combobox-arrow\"\r\n {...props}\r\n />\r\n}\r\n\r\nconst useFilteredItems = ComboboxPrimitive.useFilteredItems\r\n\r\nconst useFilter = ComboboxPrimitive.useFilter\r\n\r\nexport {\r\n Combobox,\r\n type ComboboxActiveValueContextType,\r\n ComboboxArrow,\r\n type ComboboxArrowProps,\r\n ComboboxBackdrop,\r\n type ComboboxBackdropProps,\r\n ComboboxChip,\r\n type ComboboxChipProps,\r\n ComboboxChipRemove,\r\n type ComboboxChipRemoveProps,\r\n ComboboxChips,\r\n type ComboboxChipsProps,\r\n ComboboxClear,\r\n type ComboboxClearProps,\r\n ComboboxCollection,\r\n type ComboboxCollectionProps,\r\n type ComboboxContextType,\r\n ComboboxEmpty,\r\n type ComboboxEmptyProps,\r\n ComboboxGroup,\r\n ComboboxGroupLabel,\r\n type ComboboxGroupLabelProps,\r\n type ComboboxGroupProps,\r\n ComboboxHighlight,\r\n ComboboxHighlightItem,\r\n type ComboboxHighlightItemProps,\r\n type ComboboxHighlightProps,\r\n ComboboxIcon,\r\n type ComboboxIconProps,\r\n ComboboxInput,\r\n ComboboxInputGroup,\r\n type ComboboxInputGroupProps,\r\n type ComboboxInputProps,\r\n ComboboxItem,\r\n ComboboxItemIndicator,\r\n type ComboboxItemIndicatorProps,\r\n type ComboboxItemProps,\r\n ComboboxLabel,\r\n type ComboboxLabelProps,\r\n ComboboxList,\r\n type ComboboxListProps,\r\n ComboboxPopup,\r\n type ComboboxPopupProps,\r\n ComboboxPortal,\r\n type ComboboxPortalProps,\r\n ComboboxPositioner,\r\n type ComboboxPositionerProps,\r\n type ComboboxProps,\r\n ComboboxRow,\r\n type ComboboxRowProps,\r\n ComboboxSeparator,\r\n type ComboboxSeparatorProps,\r\n ComboboxStatus,\r\n type ComboboxStatusProps,\r\n ComboboxTrigger,\r\n type ComboboxTriggerProps,\r\n ComboboxValue,\r\n type ComboboxValueProps,\r\n useCombobox,\r\n useComboboxActiveValue,\r\n useFilteredItems,\r\n useFilter,\r\n}"]}
@@ -1,2 +1,2 @@
1
- import {a,b,i,m,s,w}from'./chunk-EO656DPM.js';import*as l from'react';import {ChevronDownIcon,ChevronLeftIcon,ChevronRightIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function j({page:r,pageSize:a$1,total:i$1,onPageChange:b$1,onPageSizeChange:n,pageSizeOptions:m$1=[10,20,50,100],showPageSize:c=true,showRange:d=true,className:C,...N}){let u=Math.max(1,Math.ceil(i$1/a$1)),h=i$1===0?0:(r-1)*a$1+1,P=Math.min(r*a$1,i$1),s$1=l.useMemo(()=>m$1.map(e=>({label:String(e),value:e})),[m$1]),I=l.useMemo(()=>s$1.find(e=>e.value===a$1)??s$1[0],[s$1,a$1]);return jsxs("div",{className:cn("flex w-full flex-col-reverse gap-3 mt-4 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary pt-3 text-body-regular-2 text-text-secondary",C),"data-slot":"pagination",...N,children:[jsxs("div",{className:"flex items-center gap-2",children:[c&&n&&jsxs(Fragment,{children:[jsx("span",{className:"text-label-regular-3 text-text-tertiary",children:"Rows per page"}),jsxs(a,{items:s$1,value:I,onValueChange:e=>{e&&n&&n(e.value);},isItemEqualToValue:(e,w)=>e.value===w.value,children:[jsxs(b,{className:"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary","aria-label":"Rows per page",children:[jsx(i,{children:e=>e?e.label:String(a$1)}),jsx(ChevronDownIcon,{className:"size-3.5 text-text-tertiary"})]}),jsx(m,{className:"w-24",children:jsx(s,{children:s$1.map(e=>jsx(w,{value:e,children:e.label},e.value))})})]})]}),c&&d&&jsx("span",{className:"text-text-tertiary",children:"\xB7"}),d&&jsxs("span",{className:"text-label-regular-3 text-text-tertiary",children:[h,"\u2013",P," of ",i$1]})]}),jsxs("div",{className:"flex items-center gap-1",children:[jsx("button",{type:"button",disabled:r<=1,onClick:()=>b$1(r-1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Previous page",children:jsx(ChevronLeftIcon,{className:"size-4"})}),jsxs("span",{className:"px-2 text-label-semibold-3 text-text-primary",children:["Page ",r," / ",u]}),jsx("button",{type:"button",disabled:r>=u,onClick:()=>b$1(r+1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Next page",children:jsx(ChevronRightIcon,{className:"size-4"})})]})]})}export{j as a};//# sourceMappingURL=chunk-W6CEQOB6.js.map
2
- //# sourceMappingURL=chunk-W6CEQOB6.js.map
1
+ import {a,b,i,m,s,w}from'./chunk-IZQFTYJD.js';import*as l from'react';import {ChevronDownIcon,ChevronLeftIcon,ChevronRightIcon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsxs,Fragment,jsx}from'react/jsx-runtime';function j({page:r,pageSize:a$1,total:i$1,onPageChange:b$1,onPageSizeChange:n,pageSizeOptions:m$1=[10,20,50,100],showPageSize:c=true,showRange:d=true,className:C,...N}){let u=Math.max(1,Math.ceil(i$1/a$1)),h=i$1===0?0:(r-1)*a$1+1,P=Math.min(r*a$1,i$1),s$1=l.useMemo(()=>m$1.map(e=>({label:String(e),value:e})),[m$1]),I=l.useMemo(()=>s$1.find(e=>e.value===a$1)??s$1[0],[s$1,a$1]);return jsxs("div",{className:cn("flex w-full flex-col-reverse gap-3 mt-4 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary pt-3 text-body-regular-2 text-text-secondary",C),"data-slot":"pagination",...N,children:[jsxs("div",{className:"flex items-center gap-2",children:[c&&n&&jsxs(Fragment,{children:[jsx("span",{className:"text-label-regular-3 text-text-tertiary",children:"Rows per page"}),jsxs(a,{items:s$1,value:I,onValueChange:e=>{e&&n&&n(e.value);},isItemEqualToValue:(e,w)=>e.value===w.value,children:[jsxs(b,{className:"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary","aria-label":"Rows per page",children:[jsx(i,{children:e=>e?e.label:String(a$1)}),jsx(ChevronDownIcon,{className:"size-3.5 text-text-tertiary"})]}),jsx(m,{className:"w-24",children:jsx(s,{children:s$1.map(e=>jsx(w,{value:e,children:e.label},e.value))})})]})]}),c&&d&&jsx("span",{className:"text-text-tertiary",children:"\xB7"}),d&&jsxs("span",{className:"text-label-regular-3 text-text-tertiary",children:[h,"\u2013",P," of ",i$1]})]}),jsxs("div",{className:"flex items-center gap-1",children:[jsx("button",{type:"button",disabled:r<=1,onClick:()=>b$1(r-1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Previous page",children:jsx(ChevronLeftIcon,{className:"size-4"})}),jsxs("span",{className:"px-2 text-label-semibold-3 text-text-primary",children:["Page ",r," / ",u]}),jsx("button",{type:"button",disabled:r>=u,onClick:()=>b$1(r+1),className:"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40","aria-label":"Next page",children:jsx(ChevronRightIcon,{className:"size-4"})})]})]})}export{j as a};//# sourceMappingURL=chunk-IT4LPPTN.js.map
2
+ //# sourceMappingURL=chunk-IT4LPPTN.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/ui/pagination.tsx"],"names":["Pagination","page","pageSize","total","onPageChange","onPageSizeChange","pageSizeOptions","showPageSize","showRange","className","props","totalPages","startItem","endItem","items","opt","selectedItem","item","jsxs","cn","Fragment","jsx","Combobox","a","b","ComboboxTrigger","ComboboxValue","val","ChevronDownIcon","ComboboxPopup","ComboboxList","ComboboxItem","ChevronLeftIcon","ChevronRightIcon"],"mappings":"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","file":"chunk-W6CEQOB6.js","sourcesContent":["import * as React from \"react\"\r\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport {\r\n Combobox,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"./combobox\"\r\n\r\nexport interface PaginationProps extends React.ComponentProps<\"div\"> {\r\n page: number\r\n pageSize: number\r\n total: number\r\n onPageChange: (page: number) => void\r\n onPageSizeChange?: (pageSize: number) => void\r\n pageSizeOptions?: number[]\r\n showPageSize?: boolean\r\n showRange?: boolean\r\n}\r\n\r\ntype PageSizeOptionItem = {\r\n label: string\r\n value: number\r\n}\r\n\r\nexport function Pagination({\r\n page,\r\n pageSize,\r\n total,\r\n onPageChange,\r\n onPageSizeChange,\r\n pageSizeOptions = [10, 20, 50, 100],\r\n showPageSize = true,\r\n showRange = true,\r\n className,\r\n ...props\r\n}: PaginationProps) {\r\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\r\n const startItem = total === 0 ? 0 : (page - 1) * pageSize + 1\r\n const endItem = Math.min(page * pageSize, total)\r\n\r\n const items: PageSizeOptionItem[] = React.useMemo(\r\n () => pageSizeOptions.map((opt) => ({ label: String(opt), value: opt })),\r\n [pageSizeOptions]\r\n )\r\n\r\n const selectedItem = React.useMemo(\r\n () => items.find((item) => item.value === pageSize) ?? items[0],\r\n [items, pageSize]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex w-full flex-col-reverse gap-3 mt-4 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary pt-3 text-body-regular-2 text-text-secondary\",\r\n className\r\n )}\r\n data-slot=\"pagination\"\r\n {...props}\r\n >\r\n {/* Left: Rows per page & range */}\r\n <div className=\"flex items-center gap-2\">\r\n {showPageSize && onPageSizeChange && (\r\n <>\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n Rows per page\r\n </span>\r\n <Combobox<PageSizeOptionItem>\r\n items={items}\r\n value={selectedItem}\r\n onValueChange={(item) => {\r\n if (item && onPageSizeChange) {\r\n onPageSizeChange(item.value)\r\n }\r\n }}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n >\r\n <ComboboxTrigger\r\n className=\"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary\"\r\n aria-label=\"Rows per page\"\r\n >\r\n <ComboboxValue>\r\n {(val) => (val ? val.label : String(pageSize))}\r\n </ComboboxValue>\r\n <ChevronDownIcon className=\"size-3.5 text-text-tertiary\" />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup className=\"w-24\">\r\n <ComboboxList>\r\n {items.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={item}\r\n >\r\n {item.label}\r\n </ComboboxItem>\r\n ))}\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n </>\r\n )}\r\n\r\n {showPageSize && showRange && (\r\n <span className=\"text-text-tertiary\">·</span>\r\n )}\r\n\r\n {showRange && (\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n {startItem}–{endItem} of {total}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Right: Page controls */}\r\n <div className=\"flex items-center gap-1\">\r\n <button\r\n type=\"button\"\r\n disabled={page <= 1}\r\n onClick={() => onPageChange(page - 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Previous page\"\r\n >\r\n <ChevronLeftIcon className=\"size-4\" />\r\n </button>\r\n\r\n <span className=\"px-2 text-label-semibold-3 text-text-primary\">\r\n Page {page} / {totalPages}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n disabled={page >= totalPages}\r\n onClick={() => onPageChange(page + 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Next page\"\r\n >\r\n <ChevronRightIcon className=\"size-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"]}
1
+ {"version":3,"sources":["../src/ui/pagination.tsx"],"names":["Pagination","page","pageSize","total","onPageChange","onPageSizeChange","pageSizeOptions","showPageSize","showRange","className","props","totalPages","startItem","endItem","items","opt","selectedItem","item","jsxs","cn","Fragment","jsx","Combobox","a","b","ComboboxTrigger","ComboboxValue","val","ChevronDownIcon","ComboboxPopup","ComboboxList","ComboboxItem","ChevronLeftIcon","ChevronRightIcon"],"mappings":"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","file":"chunk-IT4LPPTN.js","sourcesContent":["import * as React from \"react\"\r\nimport { ChevronDownIcon, ChevronLeftIcon, ChevronRightIcon } from \"lucide-react\"\r\n\r\nimport { cn } from \"@xploreu/lib/cn\"\r\nimport {\r\n Combobox,\r\n ComboboxItem,\r\n ComboboxList,\r\n ComboboxPopup,\r\n ComboboxTrigger,\r\n ComboboxValue,\r\n} from \"./combobox\"\r\n\r\nexport interface PaginationProps extends React.ComponentProps<\"div\"> {\r\n page: number\r\n pageSize: number\r\n total: number\r\n onPageChange: (page: number) => void\r\n onPageSizeChange?: (pageSize: number) => void\r\n pageSizeOptions?: number[]\r\n showPageSize?: boolean\r\n showRange?: boolean\r\n}\r\n\r\ntype PageSizeOptionItem = {\r\n label: string\r\n value: number\r\n}\r\n\r\nexport function Pagination({\r\n page,\r\n pageSize,\r\n total,\r\n onPageChange,\r\n onPageSizeChange,\r\n pageSizeOptions = [10, 20, 50, 100],\r\n showPageSize = true,\r\n showRange = true,\r\n className,\r\n ...props\r\n}: PaginationProps) {\r\n const totalPages = Math.max(1, Math.ceil(total / pageSize))\r\n const startItem = total === 0 ? 0 : (page - 1) * pageSize + 1\r\n const endItem = Math.min(page * pageSize, total)\r\n\r\n const items: PageSizeOptionItem[] = React.useMemo(\r\n () => pageSizeOptions.map((opt) => ({ label: String(opt), value: opt })),\r\n [pageSizeOptions]\r\n )\r\n\r\n const selectedItem = React.useMemo(\r\n () => items.find((item) => item.value === pageSize) ?? items[0],\r\n [items, pageSize]\r\n )\r\n\r\n return (\r\n <div\r\n className={cn(\r\n \"flex w-full flex-col-reverse gap-3 mt-4 sm:flex-row sm:items-center sm:justify-between border-t border-border-primary pt-3 text-body-regular-2 text-text-secondary\",\r\n className\r\n )}\r\n data-slot=\"pagination\"\r\n {...props}\r\n >\r\n {/* Left: Rows per page & range */}\r\n <div className=\"flex items-center gap-2\">\r\n {showPageSize && onPageSizeChange && (\r\n <>\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n Rows per page\r\n </span>\r\n <Combobox<PageSizeOptionItem>\r\n items={items}\r\n value={selectedItem}\r\n onValueChange={(item) => {\r\n if (item && onPageSizeChange) {\r\n onPageSizeChange(item.value)\r\n }\r\n }}\r\n isItemEqualToValue={(a, b) => a.value === b.value}\r\n >\r\n <ComboboxTrigger\r\n className=\"h-8 gap-2 rounded-lg border border-border-primary bg-bg-primary px-3 text-label-semibold-3 text-text-primary hover:bg-bg-secondary focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-border-brand-primary\"\r\n aria-label=\"Rows per page\"\r\n >\r\n <ComboboxValue>\r\n {(val) => (val ? val.label : String(pageSize))}\r\n </ComboboxValue>\r\n <ChevronDownIcon className=\"size-3.5 text-text-tertiary\" />\r\n </ComboboxTrigger>\r\n\r\n <ComboboxPopup className=\"w-24\">\r\n <ComboboxList>\r\n {items.map((item) => (\r\n <ComboboxItem\r\n key={item.value}\r\n value={item}\r\n >\r\n {item.label}\r\n </ComboboxItem>\r\n ))}\r\n </ComboboxList>\r\n </ComboboxPopup>\r\n </Combobox>\r\n </>\r\n )}\r\n\r\n {showPageSize && showRange && (\r\n <span className=\"text-text-tertiary\">·</span>\r\n )}\r\n\r\n {showRange && (\r\n <span className=\"text-label-regular-3 text-text-tertiary\">\r\n {startItem}–{endItem} of {total}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Right: Page controls */}\r\n <div className=\"flex items-center gap-1\">\r\n <button\r\n type=\"button\"\r\n disabled={page <= 1}\r\n onClick={() => onPageChange(page - 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Previous page\"\r\n >\r\n <ChevronLeftIcon className=\"size-4\" />\r\n </button>\r\n\r\n <span className=\"px-2 text-label-semibold-3 text-text-primary\">\r\n Page {page} / {totalPages}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n disabled={page >= totalPages}\r\n onClick={() => onPageChange(page + 1)}\r\n className=\"inline-flex size-8 cursor-pointer items-center justify-center rounded-lg border border-border-primary bg-bg-primary text-text-secondary transition-colors hover:bg-bg-secondary hover:text-text-primary disabled:cursor-not-allowed disabled:opacity-40\"\r\n aria-label=\"Next page\"\r\n >\r\n <ChevronRightIcon className=\"size-4\" />\r\n </button>\r\n </div>\r\n </div>\r\n )\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ import {c,d,e,f,g,a,h,i,j,k,l,m,n,o,p,q,r,s,E,t,u,v,w,x,y,z,A,B,C,D}from'./chunk-HHG7BSWN.js';import {a as a$3}from'./chunk-TED2PUK6.js';import {b}from'./chunk-JH6RZ3QH.js';import {a as a$1}from'./chunk-7P4PFMCM.js';import {a as a$2}from'./chunk-XG3W7QMP.js';import {b as b$2,c as c$1,d as d$1}from'./chunk-BES6JPWQ.js';import {b as b$1,e as e$1}from'./chunk-JLZNZFOO.js';import'react';import {SearchIcon,XIcon,Loader2Icon,CheckCircle2Icon}from'lucide-react';import {cn}from'@xploreu/lib/cn';import {jsx,jsxs,Fragment}from'react/jsx-runtime';function No(o){return jsx(c,{...o})}function bo(o){let{className:t,...r}=o;return jsx(d,{className:cn("group/combobox-trigger flex items-center gap-2",t),...r})}function wo(o){let{className:t,...r}=o;return jsx(e,{className:cn("text-label-semibold-2 text-text-secondary",t),...r})}function ko(o){let{className:t,...r}=o;return jsx(f,{className:cn("flex w-full items-center gap-2",t),...r})}function Lo({className:o,wrapperClassName:t,...r}){return jsx("div",{className:cn("p-3 border-b border-border-primary",t),children:jsx(g,{className:o,render:jsx(b,{size:"sm",startContent:jsx(SearchIcon,{})}),...r})})}function Ro({className:o,displayValueKey:t={label:"label",value:"value"},placeholder:r="Search and Select Company",inputProps:m,...i}){let{inputValue:s,setInputValue:p}=a(),{className:n,startContent:x,...to}=m||{};return jsx("div",{className:cn("flex flex-col gap-2",o),children:jsxs(mo,{onMouseDown:C=>C.preventBaseUIHandler(),className:"flex-col",children:[jsx(g,{render:jsx(b,{className:cn("h-9 text-body-regular-3 pl-9 pr-7",n),endContent:jsx(bo,{nativeButton:false,render:jsx(XIcon,{className:"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer","data-hidden":!s,"data-slot":"combobox-clear-input",onClick:C=>{p("",{reason:"none",event:C.nativeEvent,cancel:()=>{},allowPropagation:()=>{},isCanceled:false,isPropagationAllowed:true,trigger:void 0});}})}),placeholder:r,startContent:x??jsx(SearchIcon,{className:"!size-4 !text-fg-tertiary-hover"}),...to}),...i}),jsx(io,{children:C=>C?.map(y=>jsxs(so,{children:[y?.[t.label]||"",jsx(po,{})]},y?.[t.value]||""))})]})})}function So(o){let{className:t,...r}=o;return jsx(h,{className:cn("text-text-secondary",t),...r})}function Go(o){return jsx(i,{render:jsx(XIcon,{}),...o})}function io(o){return jsx(j,{...o})}function mo({className:o,...t}){return jsx(k,{className:cn("flex flex-wrap gap-2",o),...t})}function so({className:o,...t}){return jsx(b$1,{className:cn("ring-1 ring-border-brand text-body-medium-3",o),color:"brand",render:jsx(l,{...t}),size:"lg"})}function po({className:o,...t}){return jsx(e$1,{className:cn("text-fg-quaternary",o),render:jsx(m,{...t})})}function Ao({className:o$1,align:t="start",sideOffset:r=4,container:m,initialFocus:i,finalFocus:s,style:p$1,children:n$1,...x}){return jsx(n,{container:m,children:jsx(o,{align:t,className:"isolate z-50",sideOffset:r,...x,children:jsx(p,{className:cn("group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden",o$1),finalFocus:s,initialFocus:i,style:p$1,children:jsx(ao,{children:n$1})})})})}function Ho(o){return jsx(n,{...o})}function Vo(o$1){return jsx(o,{...o$1})}function To(o){let{className:t,...r}=o;return jsx(q,{className:cn("bg-black/30",t),...r})}function zo({className:o,status:t,...r$1}){let{inputValue:m}=a(),i=m?.toString().trim(),p=t==="empty"&&i?`No matches for "${i}".`:t==="empty"&&!i?"No results.":t==="pending"?jsxs(Fragment,{children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Searching..."})]}):null;return jsx(r,{className:cn("px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",!p&&"hidden",o),...r$1,children:p})}function Bo({className:o,...t}){return jsx(s,{className:cn("px-3 py-2 text-body-regular-2 text-text-secondary",o),...t})}function Eo({className:o,children:t$1,...r}){let m=E();return jsx(a$1,{size:"sm",viewportRender:jsx(t,{className:cn("max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] flex flex-col p-1 focus-visible:outline-none data-[empty]:hidden",o),...r,children:typeof t$1=="function"?(i,s)=>t$1(i,s,m.length):t$1})})}function ao(o){let{className:t,...r}=o;return jsx(u,{className:cn("absolute inset-0 bg-bg-primary-hover",t),...r})}function no(o){return jsx(v,{...o})}function Fo(o){let{className:t,...r}=o;return jsx(w,{className:cn("group/combobox-row",t),...r})}function Mo({className:o,children:t,indicator:r="check-circle",...m}){let{disabled:i}=m;return jsx(no,{activeClassName:"bg-bg-primary-hover rounded-md",disabled:i,children:jsxs(x,{"data-indicator":r,className:cn("group/combobox-item relative grid grid-cols-[auto_1fr] items-center gap-x-2 my-px p-xp-md cursor-default outline-none select-none [[data-indicator=check-circle][data-selected]]:pr-8 data-[indicator=checkbox]:pl-8",o),...m,children:[t,jsx(xo,{className:"absolute group-data-[indicator=check-circle]/combobox-item:right-2 group-data-[indicator=checkbox]/combobox-item:left-2",keepMounted:r==="checkbox",render:(s,p)=>jsxs("span",{...s,children:[r==="check-circle"&&jsx(CheckCircle2Icon,{className:"size-4 text-fg-brand-primary shrink-0"}),r==="checkbox"&&jsx(a$2,{checked:p.selected})]})})]})})}function Do({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-title",className:cn("col-start-2 text-body-medium-3 text-text-primary truncate row-span-2 group-has-[[data-slot=combobox-item-description]]/combobox-item:row-span-1",o),...t})}function Oo({className:o,...t}){return jsx("span",{"data-slot":"combobox-item-description",className:cn("col-start-2 text-body-regular-3 text-text-secondary truncate",o),...t})}function qo({className:o,...t}){return jsx("div",{"data-slot":"combobox-item-icon",className:cn("row-span-2 col-start-1 flex items-center justify-center size-6 rounded-md bg-bg-brand-solid text-fg-white shrink-0 [&_svg]:size-3.5",o),...t})}function _o({src:o,imageSrc:t,className:r,avatarClassName:m,imageAlt:i,fallbackText:s,children:p,...n}){let x=o??t;return jsx("div",{"data-slot":"combobox-item-avatar",className:cn("row-span-2 col-start-1 size-6 rounded-full overflow-hidden shrink-0",r),children:jsxs(b$2,{className:cn("size-full shrink-0",m),...n,children:[jsx(c$1,{alt:i,src:x}),jsx(d$1,{className:"flex aspect-square size-full items-center justify-center bg-bg-tertiary text-label-semibold-2 text-text-quaternary",children:s??p})]})})}function xo(o){return jsx(y,{...o})}function jo(o){let{className:t,...r}=o;return jsx(z,{className:cn("my-1 h-px bg-border-primary",t),...r})}function Uo(o){let{className:t,...r}=o;return jsx(A,{className:cn("py-1",t),...r})}function Xo(o){let{className:t,...r}=o;return jsx(B,{className:cn("px-3 py-1 text-body-semibold-sm text-text-secondary",t),...r})}function $o(o){return jsx(C,{...o})}function Jo(o){let{className:t,...r}=o;return jsx(D,{className:cn("fill-bg-primary",t),...r})}function Ko({hasMore:o,threshold:t=.5,...r}){return jsx(a$3,{hasMore:o,threshold:t,...r,children:o&&jsxs("div",{className:"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2",children:[jsx(Loader2Icon,{className:"animate-spin size-4"}),jsx("span",{children:"Loading more..."})]})})}export{_o as A,xo as B,jo as C,Uo as D,Xo as E,$o as F,Jo as G,Ko as H,No as a,bo as b,wo as c,ko as d,Lo as e,Ro as f,So as g,Go as h,io as i,mo as j,so as k,po as l,Ao as m,Ho as n,Vo as o,To as p,zo as q,Bo as r,Eo as s,ao as t,no as u,Fo as v,Mo as w,Do as x,Oo as y,qo as z};//# sourceMappingURL=chunk-IZQFTYJD.js.map
2
+ //# sourceMappingURL=chunk-IZQFTYJD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/ui/combobox.tsx"],"names":["Combobox","props","jsx","ComboboxTrigger","className","rest","cn","ComboboxLabel","ComboboxInputGroup","ComboboxInput","wrapperClassName","Input","SearchIcon","ComboboxInputFilter","displayValueKey","placeholder","inputProps","inputValue","setInputValue","useCombobox","inputClassName","startContent","restInputProps","jsxs","ComboboxChips","e","XIcon","event","ComboboxValue","value","item","ComboboxChip","ComboboxChipRemove","ComboboxIcon","ComboboxClear","Badge","BadgeButton","ComboboxPopup","align","sideOffset","container","initialFocus","finalFocus","style","children","ComboboxPortal","ComboboxPositioner","ComboboxHighlight","ComboboxBackdrop","ComboboxStatus","status","trimmedInputValue","text","Fragment","Loader2Icon","ComboboxEmpty","ComboboxList","items","useFilteredItems","ScrollArea","index","ComboboxHighlightItem","ComboboxRow","ComboboxItem","indicator","disabled","ComboboxItemIndicator","state","CheckCircle2Icon","Checkbox","ComboboxItemTitle","ComboboxItemDescription","ComboboxItemIcon","ComboboxItemAvatar","src","imageSrc","avatarClassName","imageAlt","fallbackText","finalSrc","Avatar","AvatarImage","AvatarFallback","ComboboxSeparator","ComboboxGroup","ComboboxGroupLabel","ComboboxCollection","ComboboxArrow","ComboboxInfiniteScroll","hasMore","threshold","InfiniteScroll"],"mappings":"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","file":"chunk-IZQFTYJD.js","sourcesContent":["import * as React from \"react\"\r\n\r\nimport {\r\n CheckCircle2Icon,\r\n Loader2Icon,\r\n SearchIcon,\r\n XIcon\r\n} from \"lucide-react\"\r\n\r\nimport {\r\n Combobox as ComboboxPrimitive,\r\n ComboboxArrow as ComboboxArrowPrimitive,\r\n type ComboboxArrowProps as ComboboxArrowPrimitiveProps,\r\n ComboboxBackdrop as ComboboxBackdropPrimitive,\r\n type ComboboxBackdropProps as ComboboxBackdropPrimitiveProps,\r\n ComboboxChip as ComboboxChipPrimitive,\r\n type ComboboxChipProps as ComboboxChipPrimitiveProps,\r\n ComboboxChipRemove as ComboboxChipRemovePrimitive,\r\n type ComboboxChipRemoveProps as ComboboxChipRemovePrimitiveProps,\r\n ComboboxChips as ComboboxChipsPrimitive,\r\n type ComboboxChipsProps as ComboboxChipsPrimitiveProps,\r\n ComboboxClear as ComboboxClearPrimitive,\r\n type ComboboxClearProps as ComboboxClearPrimitiveProps,\r\n ComboboxCollection as ComboboxCollectionPrimitive,\r\n type ComboboxCollectionProps as ComboboxCollectionPrimitiveProps,\r\n ComboboxEmpty as ComboboxEmptyPrimitive,\r\n type ComboboxEmptyProps as ComboboxEmptyPrimitiveProps,\r\n ComboboxGroup as ComboboxGroupPrimitive,\r\n ComboboxGroupLabel as ComboboxGroupLabelPrimitive,\r\n type ComboboxGroupLabelProps as ComboboxGroupLabelPrimitiveProps,\r\n type ComboboxGroupProps as ComboboxGroupPrimitiveProps,\r\n ComboboxHighlight as ComboboxHighlightPrimitive,\r\n ComboboxHighlightItem as ComboboxHighlightItemPrimitive,\r\n type ComboboxHighlightItemProps as ComboboxHighlightItemPrimitiveProps,\r\n type ComboboxHighlightProps as ComboboxHighlightPrimitiveProps,\r\n ComboboxIcon as ComboboxIconPrimitive,\r\n type ComboboxIconProps as ComboboxIconPrimitiveProps,\r\n ComboboxInput as ComboboxInputPrimitive,\r\n ComboboxInputGroup as ComboboxInputGroupPrimitive,\r\n type ComboboxInputGroupProps as ComboboxInputGroupPrimitiveProps,\r\n type ComboboxInputProps as ComboboxInputPrimitiveProps,\r\n ComboboxItem as ComboboxItemPrimitive,\r\n ComboboxItemIndicator as ComboboxItemIndicatorPrimitive,\r\n type ComboboxItemIndicatorProps as ComboboxItemIndicatorPrimitiveProps,\r\n type ComboboxItemProps as ComboboxItemPrimitiveProps,\r\n ComboboxLabel as ComboboxLabelPrimitive,\r\n type ComboboxLabelProps as ComboboxLabelPrimitiveProps,\r\n ComboboxList as ComboboxListPrimitive,\r\n type ComboboxListProps as ComboboxListPrimitiveProps,\r\n ComboboxPopup as ComboboxPopupPrimitive,\r\n type ComboboxPopupProps as ComboboxPopupPrimitiveProps,\r\n ComboboxPortal as ComboboxPortalPrimitive,\r\n type ComboboxPortalProps as ComboboxPortalPrimitiveProps,\r\n ComboboxPositioner as ComboboxPositionerPrimitive,\r\n type ComboboxPositionerProps as ComboboxPositionerPrimitiveProps,\r\n type ComboboxProps as ComboboxPrimitiveProps,\r\n ComboboxRow as ComboboxRowPrimitive,\r\n type ComboboxRowProps as ComboboxRowPrimitiveProps,\r\n ComboboxSeparator as ComboboxSeparatorPrimitive,\r\n type ComboboxSeparatorProps as ComboboxSeparatorPrimitiveProps,\r\n ComboboxStatus as ComboboxStatusPrimitive,\r\n type ComboboxStatusProps as ComboboxStatusPrimitiveProps,\r\n ComboboxTrigger as ComboboxTriggerPrimitive,\r\n type ComboboxTriggerProps as ComboboxTriggerPrimitiveProps,\r\n ComboboxValue as ComboboxValuePrimitive,\r\n type ComboboxValueProps as ComboboxValuePrimitiveProps,\r\n useCombobox,\r\n useFilteredItems,\r\n} from \"../primitives/combobox\"\r\nimport { cn } from \"@xploreu/lib/cn\"\r\n\r\nimport { ScrollArea } from \"./scroll-area\"\r\nimport { Badge, BadgeButton } from \"./badge\"\r\nimport { InfiniteScroll } from \"./infinite-scroll\"\r\nimport { Input } from \"./input\"\r\nimport { Checkbox } from \"./checkbox\"\r\nimport { Avatar, AvatarFallback, AvatarImage } from \"./avatar\"\r\n\r\ntype ComboboxProps<Value, Multiple extends boolean | undefined = false> = ComboboxPrimitiveProps<Value, Multiple>\r\n\r\nfunction Combobox<Value, Multiple extends boolean | undefined = false>(props: ComboboxProps<Value, Multiple>) {\r\n return (\r\n <ComboboxPrimitive {...props} />\r\n )\r\n}\r\n\r\ntype ComboboxTriggerProps = ComboboxTriggerPrimitiveProps\r\n\r\nfunction ComboboxTrigger(props: ComboboxTriggerProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxTriggerPrimitive\r\n className={cn(\r\n \"group/combobox-trigger flex items-center gap-2\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxLabelProps = ComboboxLabelPrimitiveProps\r\n\r\nfunction ComboboxLabel(props: ComboboxLabelProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxLabelPrimitive\r\n className={cn(\r\n \"text-label-semibold-2 text-text-secondary\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxInputGroupProps = ComboboxInputGroupPrimitiveProps\r\n\r\nfunction ComboboxInputGroup(props: ComboboxInputGroupProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxInputGroupPrimitive\r\n className={cn(\r\n \"flex w-full items-center gap-2\",\r\n className,\r\n )}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxInputProps = ComboboxInputPrimitiveProps & {\r\n wrapperClassName?: string\r\n}\r\n\r\nfunction ComboboxInput({\r\n className,\r\n wrapperClassName,\r\n ...props\r\n}: ComboboxInputProps) {\r\n\r\n return (\r\n <div className={cn(\"p-3 border-b border-border-primary\", wrapperClassName)}>\r\n <ComboboxInputPrimitive\r\n className={className}\r\n render={<Input size=\"sm\" startContent={<SearchIcon />} />}\r\n {...props}\r\n />\r\n </div>\r\n )\r\n}\r\n\r\nfunction ComboboxInputFilter({\r\n className,\r\n displayValueKey = { label: \"label\", value: \"value\" },\r\n placeholder = \"Search and Select Company\",\r\n inputProps,\r\n ...props\r\n}: ComboboxInputProps & {\r\n displayValueKey?: {\r\n label: string\r\n value: string\r\n }\r\n placeholder?: string\r\n inputProps?: React.ComponentProps<typeof Input>\r\n}) {\r\n const { inputValue, setInputValue } = useCombobox()\r\n const { className: inputClassName, startContent, ...restInputProps } = inputProps || {}\r\n\r\n return (\r\n <div className={cn(\"flex flex-col gap-2\", className)}>\r\n <ComboboxChips\r\n onMouseDown={(e) => e.preventBaseUIHandler()}\r\n className=\"flex-col\"\r\n >\r\n <ComboboxInputPrimitive\r\n render={\r\n <Input\r\n className={cn(\"h-9 text-body-regular-3 pl-9 pr-7\", inputClassName)}\r\n endContent={\r\n <ComboboxTrigger\r\n nativeButton={false}\r\n render={(\r\n <XIcon\r\n className=\"!size-5 !right-1.5 data-[hidden=true]:opacity-0 opacity-100 transition-opacity duration-300 cursor-pointer\"\r\n data-hidden={!inputValue}\r\n data-slot=\"combobox-clear-input\"\r\n onClick={(event) => {\r\n setInputValue(\"\", {\r\n reason: \"none\",\r\n event: event.nativeEvent,\r\n cancel: () => { },\r\n allowPropagation: () => { },\r\n isCanceled: false,\r\n isPropagationAllowed: true,\r\n trigger: undefined,\r\n })\r\n }}\r\n />\r\n )}\r\n />\r\n }\r\n placeholder={placeholder}\r\n startContent={startContent ?? <SearchIcon className=\"!size-4 !text-fg-tertiary-hover\" />}\r\n {...restInputProps}\r\n />\r\n }\r\n {...props}\r\n />\r\n <ComboboxValue>\r\n {/* eslint-disable-next-line @typescript-eslint/no-explicit-any */}\r\n {(value) => value?.map((item: any) => (\r\n <ComboboxChip key={item?.[displayValueKey.value] || \"\"}>\r\n {item?.[displayValueKey.label] || \"\"}\r\n <ComboboxChipRemove />\r\n </ComboboxChip>\r\n ))}\r\n </ComboboxValue>\r\n </ComboboxChips>\r\n </div>\r\n )\r\n}\r\n\r\ntype ComboboxIconProps = ComboboxIconPrimitiveProps\r\n\r\nfunction ComboboxIcon(props: ComboboxIconProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxIconPrimitive\r\n className={cn(\"text-text-secondary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxClearProps = ComboboxClearPrimitiveProps\r\n\r\nfunction ComboboxClear(props: ComboboxClearProps) {\r\n\r\n return (\r\n <ComboboxClearPrimitive\r\n render={<XIcon />}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxValueProps = ComboboxValuePrimitiveProps\r\n\r\nfunction ComboboxValue(props: ComboboxValueProps) {\r\n return <ComboboxValuePrimitive {...props} />\r\n}\r\n\r\ntype ComboboxChipsProps = ComboboxChipsPrimitiveProps\r\n\r\nfunction ComboboxChips({\r\n className,\r\n ...props\r\n}: ComboboxChipsProps) {\r\n return <ComboboxChipsPrimitive\r\n className={cn(\"flex flex-wrap gap-2\", className)}\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxChipProps = ComboboxChipPrimitiveProps\r\n\r\nfunction ComboboxChip({\r\n className,\r\n ...props\r\n}: ComboboxChipProps) {\r\n return (\r\n <Badge\r\n className={cn(\"ring-1 ring-border-brand text-body-medium-3\", className)}\r\n color=\"brand\"\r\n render={(\r\n <ComboboxChipPrimitive\r\n {...props}\r\n />\r\n )}\r\n size=\"lg\"\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxChipRemoveProps = ComboboxChipRemovePrimitiveProps\r\n\r\nfunction ComboboxChipRemove({\r\n className,\r\n ...props\r\n}: ComboboxChipRemoveProps) {\r\n return (\r\n <BadgeButton\r\n className={cn(\"text-fg-quaternary\", className)}\r\n render={(\r\n <ComboboxChipRemovePrimitive\r\n {...props}\r\n />\r\n )}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxPopupProps = ComboboxPositionerPrimitiveProps &\r\n ComboboxPopupPrimitiveProps & {\r\n container?: React.ComponentProps<typeof ComboboxPortal>[\"container\"]\r\n }\r\n\r\nfunction ComboboxPopup({\r\n className,\r\n align = \"start\",\r\n sideOffset = 4,\r\n container,\r\n initialFocus,\r\n finalFocus,\r\n style,\r\n children,\r\n ...props\r\n}: ComboboxPopupProps) {\r\n return (\r\n <ComboboxPortalPrimitive container={container}>\r\n <ComboboxPositionerPrimitive\r\n align={align}\r\n className=\"isolate z-50\"\r\n sideOffset={sideOffset}\r\n {...props}\r\n >\r\n <ComboboxPopupPrimitive\r\n className={cn(\r\n \"group/combobox-popup bg-bg-primary text-text-primary max-h-(--available-height) w-72 max-w-(--available-width) origin-(--transform-origin) rounded-md border border-border-primary shadow-md outline-hidden\",\r\n className,\r\n )}\r\n finalFocus={finalFocus}\r\n initialFocus={initialFocus}\r\n style={style}\r\n >\r\n <ComboboxHighlight>\r\n {children}\r\n </ComboboxHighlight>\r\n </ComboboxPopupPrimitive>\r\n </ComboboxPositionerPrimitive>\r\n </ComboboxPortalPrimitive>\r\n )\r\n}\r\n\r\ntype ComboboxPortalProps = ComboboxPortalPrimitiveProps\r\n\r\nfunction ComboboxPortal(props: ComboboxPortalProps) {\r\n return <ComboboxPortalPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxPositionerProps = ComboboxPositionerPrimitiveProps\r\n\r\nfunction ComboboxPositioner(props: ComboboxPositionerProps) {\r\n return <ComboboxPositionerPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxBackdropProps = ComboboxBackdropPrimitiveProps\r\n\r\nfunction ComboboxBackdrop(props: ComboboxBackdropProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxBackdropPrimitive\r\n className={cn(\"bg-black/30\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxStatusProps = ComboboxStatusPrimitiveProps\r\n\r\nfunction ComboboxStatus({\r\n className,\r\n status,\r\n ...props\r\n}: Omit<ComboboxStatusProps, \"children\"> & {\r\n status?: \"empty\" | \"pending\" | null\r\n}) {\r\n const { inputValue } = useCombobox()\r\n\r\n const trimmedInputValue = inputValue?.toString().trim()\r\n\r\n const getText = () => {\r\n if (status === \"empty\" && trimmedInputValue)\r\n return `No matches for \"${trimmedInputValue}\".`\r\n\r\n if (status === \"empty\" && !trimmedInputValue)\r\n return \"No results.\"\r\n\r\n if (status === \"pending\")\r\n return (\r\n <>\r\n <Loader2Icon className=\"animate-spin size-4\" />\r\n <span>\r\n Searching...\r\n </span>\r\n </>\r\n )\r\n\r\n return null\r\n }\r\n\r\n const text = getText()\r\n\r\n return (\r\n <ComboboxStatusPrimitive\r\n className={cn(\r\n \"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2\",\r\n !text && \"hidden\",\r\n className\r\n )}\r\n {...props}\r\n >\r\n {text}\r\n </ComboboxStatusPrimitive>\r\n )\r\n}\r\n\r\ntype ComboboxLoadingProps = React.ComponentProps<\"div\">\r\n\r\ntype ComboboxEmptyProps = ComboboxEmptyPrimitiveProps\r\n\r\nfunction ComboboxEmpty({ className, ...props }: ComboboxEmptyProps) {\r\n return <ComboboxEmptyPrimitive\r\n className={cn(\"px-3 py-2 text-body-regular-2 text-text-secondary\", className)}\r\n {...props}\r\n />\r\n}\r\n\r\ntype ComboboxListProps = Omit<ComboboxListPrimitiveProps, \"children\"> & {\r\n children: React.ReactNode | ((item: any, index: number, itemsLength: number) => React.ReactNode)\r\n}\r\n\r\nfunction ComboboxList({\r\n className,\r\n children,\r\n ...props\r\n}: ComboboxListProps) {\r\n const items = useFilteredItems()\r\n\r\n return (\r\n <ScrollArea\r\n size=\"sm\"\r\n viewportRender={(\r\n <ComboboxListPrimitive\r\n className={cn(\"max-h-[min(calc(--spacing(72)---spacing(9)),calc(var(--available-height)---spacing(9)))] flex flex-col p-1 focus-visible:outline-none data-[empty]:hidden\", className)}\r\n {...props}\r\n >\r\n {\r\n typeof children === \"function\"\r\n ? (item, index) => (\r\n children(item, index, items.length)\r\n )\r\n : children\r\n }\r\n </ComboboxListPrimitive>\r\n )}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxHighlightProps = ComboboxHighlightPrimitiveProps\r\n\r\nfunction ComboboxHighlight(props: ComboboxHighlightProps) {\r\n const { className, ...rest } = props\r\n\r\n return (\r\n <ComboboxHighlightPrimitive\r\n className={cn(\"absolute inset-0 bg-bg-primary-hover\", className)}\r\n {...rest}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxHighlightItemProps = ComboboxHighlightItemPrimitiveProps\r\n\r\nfunction ComboboxHighlightItem(props: ComboboxHighlightItemProps) {\r\n return <ComboboxHighlightItemPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxRowProps = ComboboxRowPrimitiveProps\r\n\r\nfunction ComboboxRow(props: ComboboxRowProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxRowPrimitive\r\n className={cn(\"group/combobox-row\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxItemProps = ComboboxItemPrimitiveProps & {\r\n indicator?: \"check-circle\" | \"checkbox\"\r\n}\r\n\r\nfunction ComboboxItem({\r\n className,\r\n children,\r\n indicator = \"check-circle\",\r\n ...props\r\n}: ComboboxItemProps) {\r\n const { disabled } = props\r\n\r\n return (\r\n <ComboboxHighlightItem\r\n activeClassName=\"bg-bg-primary-hover rounded-md\"\r\n disabled={disabled}\r\n >\r\n <ComboboxItemPrimitive\r\n data-indicator={indicator}\r\n className={cn(\r\n \"group/combobox-item relative grid grid-cols-[auto_1fr] items-center gap-x-2 my-px p-xp-md cursor-default outline-none select-none [[data-indicator=check-circle][data-selected]]:pr-8 data-[indicator=checkbox]:pl-8\",\r\n className,\r\n )}\r\n {...props}\r\n >\r\n {children}\r\n <ComboboxItemIndicator\r\n className=\"absolute group-data-[indicator=check-circle]/combobox-item:right-2 group-data-[indicator=checkbox]/combobox-item:left-2\"\r\n keepMounted={indicator === \"checkbox\"}\r\n render={(props, state) => (\r\n <span {...props}>\r\n {indicator === \"check-circle\" && (\r\n <CheckCircle2Icon className=\"size-4 text-fg-brand-primary shrink-0\" />\r\n )}\r\n\r\n {indicator === \"checkbox\" && (\r\n <Checkbox checked={state.selected} />\r\n )}\r\n </span>\r\n )}\r\n />\r\n </ComboboxItemPrimitive>\r\n </ComboboxHighlightItem>\r\n )\r\n}\r\n\r\ntype ComboboxItemTitleProps = React.ComponentProps<\"span\">\r\n\r\nfunction ComboboxItemTitle({\r\n className,\r\n ...props\r\n}: ComboboxItemTitleProps) {\r\n return (\r\n <span\r\n data-slot=\"combobox-item-title\"\r\n className={cn(\r\n \"col-start-2 text-body-medium-3 text-text-primary truncate row-span-2 group-has-[[data-slot=combobox-item-description]]/combobox-item:row-span-1\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxItemDescriptionProps = React.ComponentProps<\"span\">\r\n\r\nfunction ComboboxItemDescription({\r\n className,\r\n ...props\r\n}: ComboboxItemDescriptionProps) {\r\n return (\r\n <span\r\n data-slot=\"combobox-item-description\"\r\n className={cn(\r\n \"col-start-2 text-body-regular-3 text-text-secondary truncate\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\nfunction ComboboxItemIcon({ className, ...props }: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot=\"combobox-item-icon\"\r\n className={cn(\r\n \"row-span-2 col-start-1 flex items-center justify-center size-6 rounded-md bg-bg-brand-solid text-fg-white shrink-0 [&_svg]:size-3.5\",\r\n className\r\n )}\r\n {...props}\r\n />\r\n )\r\n}\r\n\r\ntype ComboboxItemAvatarProps = React.ComponentProps<typeof Avatar> & {\r\n src?: string\r\n imageSrc?: string\r\n imageAlt?: string\r\n avatarClassName?: string\r\n fallbackText?: string\r\n}\r\n\r\nfunction ComboboxItemAvatar({\r\n src,\r\n imageSrc,\r\n className,\r\n avatarClassName,\r\n imageAlt,\r\n fallbackText,\r\n children,\r\n ...props\r\n}: ComboboxItemAvatarProps) {\r\n const finalSrc = src ?? imageSrc\r\n\r\n return (\r\n <div\r\n data-slot=\"combobox-item-avatar\"\r\n className={cn(\r\n \"row-span-2 col-start-1 size-6 rounded-full overflow-hidden shrink-0\",\r\n className\r\n )}\r\n >\r\n <Avatar\r\n className={cn(\"size-full shrink-0\", avatarClassName)}\r\n {...props}\r\n >\r\n <AvatarImage alt={imageAlt} src={finalSrc} />\r\n <AvatarFallback className=\"flex aspect-square size-full items-center justify-center bg-bg-tertiary text-label-semibold-2 text-text-quaternary\">\r\n {fallbackText ?? children}\r\n </AvatarFallback>\r\n </Avatar>\r\n </div>\r\n )\r\n}\r\n\r\ntype ComboboxItemIndicatorProps = ComboboxItemIndicatorPrimitiveProps\r\n\r\nfunction ComboboxItemIndicator(props: ComboboxItemIndicatorProps) {\r\n return (\r\n <ComboboxItemIndicatorPrimitive {...props} />\r\n )\r\n}\r\n\r\ntype ComboboxSeparatorProps = ComboboxSeparatorPrimitiveProps\r\n\r\nfunction ComboboxSeparator(props: ComboboxSeparatorProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxSeparatorPrimitive\r\n className={cn(\"my-1 h-px bg-border-primary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxGroupProps = ComboboxGroupPrimitiveProps\r\n\r\nfunction ComboboxGroup(props: ComboboxGroupProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxGroupPrimitive\r\n className={cn(\"py-1\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxGroupLabelProps = ComboboxGroupLabelPrimitiveProps\r\n\r\nfunction ComboboxGroupLabel(props: ComboboxGroupLabelProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxGroupLabelPrimitive\r\n className={cn(\"px-3 py-1 text-body-semibold-sm text-text-secondary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\ntype ComboboxCollectionProps = ComboboxCollectionPrimitiveProps\r\n\r\nfunction ComboboxCollection(props: ComboboxCollectionProps) {\r\n return <ComboboxCollectionPrimitive {...props} />\r\n}\r\n\r\ntype ComboboxArrowProps = ComboboxArrowPrimitiveProps\r\n\r\nfunction ComboboxArrow(props: ComboboxArrowProps) {\r\n const { className, ...rest } = props\r\n\r\n return <ComboboxArrowPrimitive\r\n className={cn(\"fill-bg-primary\", className)}\r\n {...rest}\r\n />\r\n}\r\n\r\nfunction ComboboxInfiniteScroll({\r\n hasMore,\r\n threshold = 0.5,\r\n ...props\r\n}: Omit<React.ComponentProps<typeof InfiniteScroll>, \"children\">) {\r\n return (\r\n <InfiniteScroll\r\n hasMore={hasMore}\r\n threshold={threshold}\r\n {...props}\r\n >\r\n {hasMore && (\r\n <div className=\"px-2 py-2.5 text-body-regular-2 text-text-disabled flex items-center gap-2\">\r\n <Loader2Icon className=\"animate-spin size-4\" />\r\n <span>\r\n Loading more...\r\n </span>\r\n </div>\r\n )}\r\n </InfiniteScroll>\r\n )\r\n}\r\n\r\nexport {\r\n Combobox,\r\n ComboboxArrow,\r\n type ComboboxArrowProps,\r\n ComboboxBackdrop,\r\n type ComboboxBackdropProps,\r\n ComboboxChip,\r\n type ComboboxChipProps,\r\n ComboboxChipRemove,\r\n type ComboboxChipRemoveProps,\r\n ComboboxChips,\r\n type ComboboxChipsProps,\r\n ComboboxClear,\r\n type ComboboxClearProps,\r\n ComboboxCollection,\r\n type ComboboxCollectionProps,\r\n ComboboxPopup,\r\n type ComboboxPopupProps,\r\n ComboboxEmpty,\r\n type ComboboxEmptyProps,\r\n ComboboxGroup,\r\n ComboboxGroupLabel,\r\n type ComboboxGroupLabelProps,\r\n type ComboboxGroupProps,\r\n ComboboxHighlight,\r\n ComboboxHighlightItem,\r\n type ComboboxHighlightItemProps,\r\n type ComboboxHighlightProps,\r\n ComboboxIcon,\r\n type ComboboxIconProps,\r\n ComboboxInfiniteScroll,\r\n ComboboxInput,\r\n ComboboxInputFilter,\r\n ComboboxInputGroup,\r\n type ComboboxInputGroupProps,\r\n type ComboboxInputProps,\r\n ComboboxItem,\r\n ComboboxItemTitle,\r\n type ComboboxItemTitleProps,\r\n ComboboxItemDescription,\r\n type ComboboxItemDescriptionProps,\r\n ComboboxItemIcon,\r\n ComboboxItemAvatar,\r\n type ComboboxItemAvatarProps,\r\n ComboboxItemIndicator,\r\n type ComboboxItemIndicatorProps,\r\n type ComboboxItemProps,\r\n ComboboxLabel,\r\n type ComboboxLabelProps,\r\n ComboboxList,\r\n type ComboboxListProps,\r\n type ComboboxLoadingProps,\r\n ComboboxPortal,\r\n type ComboboxPortalProps,\r\n ComboboxPositioner,\r\n type ComboboxPositionerProps,\r\n type ComboboxProps,\r\n ComboboxRow,\r\n type ComboboxRowProps,\r\n ComboboxSeparator,\r\n type ComboboxSeparatorProps,\r\n ComboboxStatus,\r\n type ComboboxStatusProps,\r\n ComboboxTrigger,\r\n type ComboboxTriggerProps,\r\n ComboboxValue,\r\n type ComboboxValueProps\r\n}"]}