@tribepad/themis 1.6.4 → 1.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/dist/elements/AlertDialog/index.js +1 -1
- package/dist/elements/AlertDialog/index.js.map +1 -1
- package/dist/elements/AlertDialog/index.mjs +1 -1
- package/dist/elements/AlertDialog/index.mjs.map +1 -1
- package/dist/elements/ColorPicker/index.js +1 -1
- package/dist/elements/ColorPicker/index.js.map +1 -1
- package/dist/elements/ColorPicker/index.mjs +1 -1
- package/dist/elements/ColorPicker/index.mjs.map +1 -1
- package/dist/elements/Combobox/index.js +1 -1
- package/dist/elements/Combobox/index.js.map +1 -1
- package/dist/elements/Combobox/index.mjs +1 -1
- package/dist/elements/Combobox/index.mjs.map +1 -1
- package/dist/elements/DatePicker/index.js +1 -1
- package/dist/elements/DatePicker/index.js.map +1 -1
- package/dist/elements/DatePicker/index.mjs +1 -1
- package/dist/elements/DatePicker/index.mjs.map +1 -1
- package/dist/elements/FileField/index.js +1 -1
- package/dist/elements/FileField/index.js.map +1 -1
- package/dist/elements/FileField/index.mjs +1 -1
- package/dist/elements/FileField/index.mjs.map +1 -1
- package/dist/elements/Filters/index.js +1 -1
- package/dist/elements/Filters/index.js.map +1 -1
- package/dist/elements/Filters/index.mjs +1 -1
- package/dist/elements/Filters/index.mjs.map +1 -1
- package/dist/elements/Modal/Modal.d.ts +2 -2
- package/dist/elements/Modal/Modal.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.styles.d.ts +25 -0
- package/dist/elements/Modal/Modal.styles.d.ts.map +1 -1
- package/dist/elements/Modal/Modal.types.d.ts +27 -0
- package/dist/elements/Modal/Modal.types.d.ts.map +1 -1
- package/dist/elements/Modal/index.d.ts +3 -3
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +1 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Modal/index.mjs +1 -1
- package/dist/elements/Modal/index.mjs.map +1 -1
- package/dist/elements/NumberField/index.js +1 -1
- package/dist/elements/NumberField/index.js.map +1 -1
- package/dist/elements/NumberField/index.mjs +1 -1
- package/dist/elements/NumberField/index.mjs.map +1 -1
- package/dist/elements/PasswordField/index.js +1 -1
- package/dist/elements/PasswordField/index.js.map +1 -1
- package/dist/elements/PasswordField/index.mjs +1 -1
- package/dist/elements/PasswordField/index.mjs.map +1 -1
- package/dist/elements/Resizable/index.js +1 -1
- package/dist/elements/Resizable/index.js.map +1 -1
- package/dist/elements/Resizable/index.mjs +1 -1
- package/dist/elements/Resizable/index.mjs.map +1 -1
- package/dist/elements/SearchField/index.js +1 -1
- package/dist/elements/SearchField/index.js.map +1 -1
- package/dist/elements/SearchField/index.mjs +1 -1
- package/dist/elements/SearchField/index.mjs.map +1 -1
- package/dist/elements/Select/index.js +1 -1
- package/dist/elements/Select/index.js.map +1 -1
- package/dist/elements/Select/index.mjs +1 -1
- package/dist/elements/Select/index.mjs.map +1 -1
- package/dist/elements/Sidebar/index.js +1 -1
- package/dist/elements/Sidebar/index.js.map +1 -1
- package/dist/elements/Sidebar/index.mjs +1 -1
- package/dist/elements/Sidebar/index.mjs.map +1 -1
- package/dist/elements/Table/index.js +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/index.mjs +1 -1
- package/dist/elements/Table/index.mjs.map +1 -1
- package/dist/elements/TextField/index.js +1 -1
- package/dist/elements/TextField/index.js.map +1 -1
- package/dist/elements/TextField/index.mjs +1 -1
- package/dist/elements/TextField/index.mjs.map +1 -1
- package/dist/elements/TimeField/index.js +1 -1
- package/dist/elements/TimeField/index.js.map +1 -1
- package/dist/elements/TimeField/index.mjs +1 -1
- package/dist/elements/TimeField/index.mjs.map +1 -1
- package/dist/elements/Wizard/index.js +1 -1
- package/dist/elements/Wizard/index.js.map +1 -1
- package/dist/elements/Wizard/index.mjs +1 -1
- package/dist/elements/Wizard/index.mjs.map +1 -1
- package/dist/elements/index.js +1 -1
- package/dist/elements/index.js.map +1 -1
- package/dist/elements/index.mjs +1 -1
- package/dist/elements/index.mjs.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/styles/animations.css +32 -0
- package/dist/styles/index.js +1 -1
- package/dist/styles/index.js.map +1 -1
- package/dist/styles/index.mjs +1 -1
- package/dist/styles/index.mjs.map +1 -1
- package/dist/styles/shared-variants.d.ts +17 -0
- package/dist/styles/shared-variants.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/elements/Modal/Modal.stories.tsx +106 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {createContext,memo,forwardRef,useId,useState,useCallback,useMemo,useRef,useEffect,Children,useContext,isValidElement,cloneElement}from'react';import {FocusScope}from'react-aria';import {Loader2,Zap,Search,X,ChevronsUpDown,CheckSquare,Check,SlidersHorizontal,ChevronDown}from'lucide-react';import {Button,Label,Input,Text,FieldError,TextField,Switch,RadioGroup,CheckboxGroup,ComboBox,Popover,ListBox,SelectValue,ListBoxItem,Radio,Checkbox,Select,Header,ListBoxSection,DialogTrigger,Dialog}from'react-aria-components';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';function m(...e){return twMerge(clsx(e))}var te="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var Z="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",re="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",ae="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",Xe="disabled:pointer-events-none disabled:opacity-50",wt=`${te} ${me} ${Z} ${re} ${ae}`;var Ze={sm:"text-xs",default:"text-sm",lg:"text-base"};var Te={sm:"h-9",default:"h-10",lg:"h-11"},D={sm:`${Te.sm} px-2 text-xs`,default:`${Te.default} px-3 text-sm`,lg:`${Te.lg} px-4 text-base`},K="min-h-[44px] flex items-center";var Ke=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),Qe=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Bt=createContext(null);Bt.displayName="ButtonGroupContext";function Dt(){return useContext(Bt)}var Ot=createContext(null);Ot.displayName="ButtonGroupItemContext";function Gt(){return useContext(Ot)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Mt=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var _=memo(forwardRef(({className:e,buttonVisualClassName:t,variant:r,size:a,visualSize:n,fullWidth:s,loading:d=false,loadingText:i="Loading...",shortcut:u,children:p,isDisabled:f,paywall:l=false,paywallRedirect:o,paywallDescription:c,onPress:b,...g},y)=>{let h=useId(),C=Dt(),N=Gt(),v=r??C?.variant??"default",E=a??C?.size,w=f??C?.isDisabled??false,T=C?.orientation==="vertical",F=s||T,M=N?Mt({orientation:C?.orientation??"horizontal",position:N.position}):"",k=n??E??"default";return process.env.NODE_ENV!=="production"&&(k==="dot"||k==="icon")&&!g["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:y,isDisabled:w||d||void 0,"aria-disabled":l?true:void 0,"aria-describedby":l?h:void 0,onPress:x=>{if(l){o&&window.open(o,"_blank","noopener,noreferrer");return}b?.(x);},className:m(Ke({fullWidth:F,inVerticalGroup:T}),e),...g,children:x=>jsxs("span",{className:m(Qe({variant:v,visualSize:k,paywall:l,fullWidth:F}),M,t,me,"",re,ae),"data-pressed":x.isPressed||void 0,children:[d&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:i})]}),!d&&p,l&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),l&&jsxs("span",{id:h,className:"sr-only",children:["Premium feature: ",c||"Upgrade required to access this feature"]}),x.isFocusVisible&&u&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:u})]})})}));_.displayName="Button";var Ht=()=>jsxs("svg",{"data-testid":"password-toggle-icon-show",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]}),zt=()=>jsxs("svg",{"data-testid":"password-toggle-icon-hide",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M10.5 5.5l-5 5"}),jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]});var rt=cva("flex w-full rounded-md border bg-[var(--content-background)] px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",{variants:{size:{sm:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.lg} py-3`},state:{default:"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",error:"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",success:"border-[var(--success-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--success-ring)] focus-visible:ring-offset-2",disabled:"cursor-not-allowed opacity-50",readonly:"cursor-default bg-[var(--content-background)] opacity-70"}},defaultVariants:{size:"default",state:"default"}}),at=cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),ot=cva("text-sm text-[var(--content-foreground)]"),Ut=cva("text-sm text-[var(--destructive-background)] font-medium"),nt=cva("text-sm text-[var(--success-foreground)] font-medium");function Wt({expandOnFocus:e,collapsedWidth:t,value:r,defaultValue:a,userOnFocus:n,userOnBlur:s}){let[d,i]=useState(false),u=useCallback(l=>{e&&i(true),n?.(l);},[e,n]),p=useCallback(l=>{e&&l.target.value===""&&i(false),s?.(l);},[e,s]),f=useMemo(()=>e?d||(r!==void 0?r!=="":a!==void 0&&a!=="")?"100%":t:void 0,[e,d,r,a,t]);return {handleFocus:u,handleBlur:p,inputWidth:f}}function Yt({disableCopyPaste:e}){let[t,r]=useState(false),[a,n]=useState("");useEffect(()=>{e&&typeof process<"u"&&process.env.NODE_ENV==="development"&&console.warn("[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers.");},[e]);let s=useCallback(d=>{e&&(d.preventDefault(),r(true),n("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{r(false),n("");},250));},[e]);return {isShaking:t,screenReaderMessage:a,handlePaste:s}}function qt({type:e,showPasswordToggle:t}){let[r,a]=useState(false),n=useCallback(()=>{a(d=>!d);},[]),s=useMemo(()=>e==="password"&&t&&r?"text":e,[e,t,r]);return {showPassword:r,actualType:s,handlePasswordToggle:n}}var Aa=forwardRef(({className:e,state:t="default",children:r,...a},n)=>jsx(Label,{ref:n,className:m(at({state:t}),e),...a,children:r}));Aa.displayName="TextFieldLabel";var wa=forwardRef(({className:e,size:t="default",state:r="default",...a},n)=>jsx(Input,{ref:n,className:m(rt({size:t,state:r}),Xe,e),...a}));wa.displayName="TextFieldInput";var ka=forwardRef(({className:e,children:t,...r},a)=>jsx(Text,{ref:a,slot:"description",className:m(ot(),e),...r,children:t}));ka.displayName="TextFieldDescription";var Qt=forwardRef(({className:e,children:t,...r},a)=>jsx(FieldError,{ref:a,...r,className:m(Ut(),e),children:t}));Qt.displayName="TextFieldError";var La=forwardRef(({className:e,children:t,...r},a)=>jsx(Text,{ref:a,slot:"description",className:m(nt(),e),...r,children:t}));La.displayName="TextFieldSuccess";var st=forwardRef(({className:e,size:t="default",label:r,labelHint:a,description:n,errorMessage:s,successMessage:d,type:i="text",isRequired:u=false,isReadOnly:p=false,isDisabled:f=false,isInvalid:l=false,isValid:o=false,id:c,autoComplete:b,disableCopyPaste:g=false,pattern:y,patternDescription:h,expandOnFocus:C=false,collapsedWidth:N="200px",prefix:v,suffix:E,prefixSize:w=16,suffixSize:T=16,showPasswordToggle:F,isIconHidden:M=false,onSubmit:k,onClear:P,value:B,defaultValue:x,onFocus:R,onBlur:V,...G},We)=>{let Ee=useId(),ra=useId(),aa=c||ra,{handleFocus:oa,handleBlur:na,inputWidth:ia}=Wt({expandOnFocus:C,collapsedWidth:N,value:B,defaultValue:x,userOnFocus:R,userOnBlur:V}),{isShaking:sa,screenReaderMessage:Et,handlePaste:la}=Yt({disableCopyPaste:g}),{showPassword:Ye,actualType:da,handlePasswordToggle:Rt}=qt({type:i,showPasswordToggle:F}),j=i==="search",[ca,Tt]=useState(x??""),fe=B!==void 0,Y=fe?B:ca,ua=useCallback(L=>{fe||Tt(L),G.onChange?.(L);},[fe,G]),Re=useCallback(()=>{fe||Tt(""),G.onChange?.(""),P?.();},[fe,G,P]),pa=useCallback(L=>{L.key==="Enter"&&k&&k(Y),L.key==="Escape"&&Y&&(L.preventDefault(),Re());},[Y,k,Re]),fa=useMemo(()=>f?"disabled":p?"readonly":l?"error":o?"success":"default",[f,p,l,o]),ma=useMemo(()=>f?"disabled":"default",[f]),Ft=useMemo(()=>n&&h?`${n} ${h}`:n||h,[n,h]),ee=useMemo(()=>j&&!M&&!v?jsx(Search,{className:t==="sm"?"h-3.5 w-3.5":t==="lg"?"h-5 w-5":"h-4 w-4"}):v,[j,M,v,t]),Pt=useMemo(()=>{let L={left:12,right:12};if(ee){let qe=typeof ee=="string"?ee.length*8+16:w+16;L.left=qe;}if(i==="password"&&F)L.right=32;else if(j&&Y)L.right=44;else if(E){let qe=typeof E=="string"?E.length*8+16:T+16;L.right=qe;}return L},[ee,v,E,w,T,i,F,j,Y]),It=useMemo(()=>i==="password"&&F?jsx(_,{variant:"ghost",visualSize:"icon",onPress:Rt,"aria-label":Ye?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:Ye?jsx(zt,{}):jsx(Ht,{})}):j&&Y?jsx(_,{variant:"ghost",visualSize:"icon",onPress:Re,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsx(X,{className:t==="sm"?"h-3 w-3":t==="lg"?"h-5 w-5":"h-4 w-4"})}):E,[i,F,Ye,E,Rt,j,Y,t,Re]),At=i==="password"&&F||j&&!!Y;return jsxs(TextField,{ref:We,className:m("flex flex-col gap-1.5",e),isRequired:u,isReadOnly:p,isDisabled:f,isInvalid:l,value:j?Y:B,defaultValue:j?void 0:x,onChange:j?ua:void 0,...G,children:[r&&jsxs(Label,{className:m(at({state:ma}),a&&"flex items-baseline justify-between"),children:[jsxs("span",{children:[r,u&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsx("strong",{children:"*"})})]}),a&&jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),Ft&&jsx(Text,{slot:"description",className:m(ot()),children:Ft}),jsxs("div",{className:m(K,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:ia},onClick:L=>{L.target===L.currentTarget&&L.currentTarget.querySelector("input")?.focus();},children:[ee&&jsx("div",{"data-testid":"textfield-prefix",className:"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]","aria-hidden":"true",children:ee}),jsx(Input,{type:da,id:aa,className:m(rt({size:t,state:fa}),Xe,sa&&"shake"),style:{width:"100%",paddingLeft:`${Pt.left}px`,paddingRight:`${Pt.right}px`},autoComplete:b,pattern:y,onPaste:la,onFocus:oa,onBlur:na,onKeyDown:j?pa:void 0,"aria-required":u?"true":void 0,"aria-readonly":p?"true":void 0,"aria-errormessage":l&&s?Ee:void 0}),It&&jsx("div",{"data-testid":"textfield-suffix",className:m("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",At?"":"pointer-events-none"),"aria-hidden":At?void 0:"true",children:It})]}),o&&d&&!l&&jsx(Text,{slot:"description",className:m(nt()),children:d}),l&&s&&jsx(Qt,{id:Ee,children:s}),Et&&jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Et})]})});st.displayName="TextField";var we=forwardRef(({label:e,description:t,errorMessage:r,"aria-label":a,"aria-labelledby":n,...s},d)=>(process.env.NODE_ENV!=="production"&&!e&&!a&&!n&&console.warn("[SearchField] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsx(st,{ref:d,type:"search",label:e,description:r?void 0:t,errorMessage:r,isInvalid:!!r,"aria-label":e?void 0:a,"aria-labelledby":n,...s})));we.displayName="SearchField";function Jt(e,t){return !(e===false||t)}var er="(prefers-reduced-motion: reduce)";function Ga(){return typeof window>"u"?false:window.matchMedia(er).matches}function tr(){let[e,t]=useState(Ga);return useEffect(()=>{let r=window.matchMedia(er);t(r.matches);let a=n=>{t(n.matches);};return r.addEventListener("change",a),()=>r.removeEventListener("change",a)},[]),e}var ge;function ja(){return ge!==void 0?Promise.resolve(ge):import('motion').then(e=>(ge=e.animate,ge)).catch(()=>(ge=null,null))}var Wa={stiffness:500,damping:30},ar=cva("inline-flex shrink-0 cursor-pointer items-center justify-center min-h-[44px] min-w-[44px] disabled:cursor-not-allowed disabled:opacity-50 data-[readonly]:cursor-default",{variants:{},defaultVariants:{}}),or=cva("relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{variant:{default:"bg-[var(--border)] data-[selected]:bg-[var(--primary)]",destructive:"bg-[var(--border)] data-[selected]:bg-[var(--destructive-background)]"},size:{sm:"h-6 w-10",default:"h-7 w-12",lg:"h-8 w-14"}},defaultVariants:{variant:"default",size:"default"}}),nr=cva("pointer-events-none absolute left-0.5 rounded-full bg-[var(--content-background)] ring-0",{variants:{size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},animated:{false:"transition-transform data-[selected]:translate-x-full",true:""}},defaultVariants:{size:"default",animated:false}}),Le=memo(forwardRef(({className:e,variant:t,size:r,label:a,description:n,isDisabled:s,isReadOnly:d,animated:i,springConfig:u=Wa,onChange:p,...f},l)=>{let o=tr(),c=Jt(i,o),b=useRef(null),g=useRef(false),y=useRef(null),h=useRef(null);useEffect(()=>{c&&ja().then(v=>{if(v&&(y.current=v,g.current=true,b.current)){let E=b.current.hasAttribute("data-selected");b.current.style.transform=E?"translateX(100%)":"translateX(0)";}});},[c]);let C=useCallback(v=>{p?.(v),c&&g.current&&y.current&&b.current&&(h.current?.stop(),h.current=y.current(b.current,{x:v?"100%":"0%"},{type:"spring",stiffness:u.stiffness,damping:u.damping}));},[c,u.stiffness,u.damping,p]),N=c;return jsx(Switch,{ref:l,isDisabled:s,isReadOnly:d,onChange:C,className:v=>m("group inline-flex items-center gap-2",s&&"cursor-not-allowed opacity-50",e),...f,children:v=>jsxs(Fragment,{children:[jsx("div",{className:m(ar()),"data-selected":v.isSelected||void 0,"data-readonly":d||void 0,children:jsx("div",{className:m(or({variant:t,size:r}),wt),"data-selected":v.isSelected||void 0,children:jsx("div",{ref:b,className:m(nr({size:r,animated:N})),"data-selected":v.isSelected||void 0})})}),(a||n)&&jsxs("div",{className:"flex flex-col",children:[a&&jsx("span",{className:"text-sm font-medium text-[var(--content-foreground)]",children:a}),n&&jsx("span",{className:"text-xs text-[var(--menu-muted)]",children:n})]})]})})}));Le.displayName="Switch";var ir=createContext({variant:"default",size:"default",isInvalid:false}),ao=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),oo=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isInvalid:false}}),no=cva("flex-shrink-0 rounded-full border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),io=cva(["rounded-full transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"bg-[var(--primary)]",destructive:"bg-[var(--destructive-background)]"},size:{sm:"h-2 w-2",default:"h-2.5 w-2.5",lg:"h-3 w-3"}},defaultVariants:{variant:"default",size:"default"}});function sr({children:e,className:t}){return jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}sr.displayName="Radio.Label";function lr({children:e,className:t}){return jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}lr.displayName="Radio.Description";function so({value:e,isDisabled:t,children:r,className:a}){let{variant:n,size:s,isInvalid:d}=useContext(ir);return jsx(Radio,{value:e,isDisabled:t,className:i=>m(oo({variant:n,size:s,isDisabled:i.isDisabled,isInvalid:d}),a),children:i=>jsxs(Fragment,{children:[jsx("div",{className:no({variant:n,size:s}),"data-selected":i.isSelected||void 0,children:jsx("div",{className:io({variant:n,size:s}),"data-selected":i.isSelected||void 0})}),jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var le=Object.assign(so,{Label:sr,Description:lr});le.displayName="Radio";var ve=forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:N,id:v,"aria-label":E,"aria-labelledby":w,"aria-describedby":T,"data-testid":F,...M}=t,k=useId(),P=v??k,B=`${P}-label`,x=`${P}-description`,R=`${P}-error`,V=[];T&&V.push(T),n&&V.push(x),l&&s&&V.push(R);let G=V.length>0?V.join(" "):void 0;return jsx(ir.Provider,{value:{variant:c,size:b,isInvalid:l},children:jsxs(RadioGroup,{ref:r,id:P,name:g,value:d??void 0,defaultValue:i??void 0,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,orientation:o,onChange:y,onFocusChange:h,"aria-label":E,"aria-labelledby":a?B:w,"aria-describedby":G,"data-testid":F,"data-orientation":o,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxs(Label,{id:B,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsx(Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsx("div",{className:ao({orientation:o}),children:N}),l&&s&&jsx(FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsx("span",{role:"alert",children:s})})]})})});ve.displayName="RadioGroup";var cr=createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),ur=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),pr=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),fr=cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),mr=cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function br({className:e,...t}){return jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsx("polyline",{points:"20 6 9 17 4 12"})})}function xr({children:e,className:t}){return jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}xr.displayName="Checkbox.Label";function gr({children:e,className:t}){return jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}gr.displayName="Checkbox.Description";function yo({value:e,isDisabled:t,children:r,className:a,selectedIcon:n}){let{variant:s,size:d,isInvalid:i,isDisabled:u,isReadOnly:p}=useContext(cr),f=t||u,l=o=>{let c=m(mr({variant:s,size:d})),b=o||void 0;if(n){if(isValidElement(n)){let g=n;return cloneElement(g,{className:m(c,g.props.className),"data-selected":b})}return jsx("span",{className:c,"data-selected":b,children:n})}return jsx(br,{className:c,"data-selected":b})};return jsx(Checkbox,{value:e,isDisabled:f,className:o=>m(pr({variant:s,size:d,isDisabled:o.isDisabled,isReadOnly:p,isInvalid:i}),a),children:o=>jsxs(Fragment,{children:[jsx("div",{className:fr({variant:s,size:d}),"data-selected":o.isSelected||void 0,children:l(o.isSelected)}),jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var De=Object.assign(yo,{Label:xr,Description:gr});De.displayName="Checkbox";function dr(e,t){if(!e)return e;let r=[...new Set(e)];return process.env.NODE_ENV!=="production"&&r.length!==e.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${e.join(", ")}], Deduplicated: [${r.join(", ")}]. Duplicate values are automatically removed.`),r}var Oe=forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:N,id:v,"aria-label":E,"aria-labelledby":w,"aria-describedby":T,"data-testid":F,...M}=t,k=useId(),P=v??k,B=`${P}-label`,x=`${P}-description`,R=`${P}-error`,V=[];T&&V.push(T),n&&V.push(x),l&&s&&V.push(R);let G=V.length>0?V.join(" "):void 0,We=dr(d,"CheckboxGroup"),Ee=dr(i,"CheckboxGroup");return jsx(cr.Provider,{value:{variant:c,size:b,isInvalid:l,isDisabled:u,isReadOnly:p},children:jsxs(CheckboxGroup,{ref:r,id:P,name:g,value:We,defaultValue:Ee,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,onChange:y,onFocusChange:h,"aria-label":E,"aria-labelledby":a?B:w,"aria-describedby":G,"aria-orientation":o,"aria-required":f||void 0,"aria-invalid":l||void 0,"data-testid":F,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxs(Label,{id:B,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsx(Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsx("div",{className:ur({orientation:o}),children:N}),l&&s&&jsx(FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsx("span",{role:"alert",children:s})})]})})});Oe.displayName="CheckboxGroup";var vr=cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),hr=cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),Sr=cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:Ze},defaultVariants:{size:"default"}}),yr=cva(["flex items-center w-full rounded-md border","bg-[var(--input-background)] text-[var(--content-foreground)]","border-[var(--input-border)]","transition-colors duration-[var(--transition-fast)]","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","data-[invalid]:border-[var(--destructive-background)]"],{variants:{size:{sm:`${D.sm} gap-1`,default:`${D.default} gap-2`,lg:`${D.lg} gap-2`}},defaultVariants:{size:"default"}}),Cr=cva(["flex items-center justify-center shrink-0","text-[var(--muted-foreground)]","hover:text-[var(--text-primary)]","transition-colors","focus:outline-none"],{variants:{size:{sm:"h-4 w-4 min-h-[44px] min-w-[44px]",default:"h-5 w-5 min-h-[44px] min-w-[44px]",lg:"h-6 w-6 min-h-[44px] min-w-[44px]"}},defaultVariants:{size:"default"}}),Nr=cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"]),Vr=cva("p-1 outline-none max-h-[300px] overflow-auto"),Er=cva(["flex items-center gap-2 w-full rounded-sm px-2 py-1.5","text-[var(--content-foreground)]","cursor-pointer outline-none","data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]","data-[selected]:font-medium","data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed"],{variants:{size:{sm:"text-xs min-h-[44px]",default:"text-sm min-h-[44px]",lg:"text-base min-h-[44px]"}},defaultVariants:{size:"default"}});cva("pt-1");cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]");var Fr=cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),Pr=cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var Ge=forwardRef(({className:e,size:t="default",label:r,description:a,errorMessage:n,isRequired:s,isDisabled:d,isReadOnly:i,placeholder:u,name:p,allowsCustomValue:f=false,menuTrigger:l="input",defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,children:C,"aria-label":N,"aria-labelledby":v,"data-testid":E,...w},T)=>(process.env.NODE_ENV!=="production"&&!r&&!N&&!v&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxs(ComboBox,{ref:T,className:m(vr({size:t}),e),isRequired:s,isDisabled:d,isReadOnly:i,name:p,allowsCustomValue:f,menuTrigger:l,defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,"aria-label":r?void 0:N,"aria-labelledby":v,"data-testid":E,...w,children:[r&&jsxs(Label,{className:hr({size:t}),children:[r,s&&jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxs("div",{className:m(K,yr({size:t})),children:[jsx(Input,{className:Sr({size:t}),placeholder:u}),jsx(Button,{className:Cr({size:t}),children:jsx(ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),a&&!n&&jsx(Text,{slot:"description",className:Fr({size:t}),children:a}),n&&jsx(Text,{slot:"errorMessage",className:Pr({size:t}),children:n}),jsx(Popover,{className:Nr(),children:jsx(ListBox,{className:Vr(),children:C})})]})));Ge.displayName="Combobox";function Se({children:e,className:t,textValue:r,...a}){let n=r||(typeof e=="string"?e:void 0);return jsx(ListBoxItem,{className:m(Er({size:"default"}),t),textValue:n,...a,children:({isSelected:s})=>jsxs(Fragment,{children:[jsx("span",{className:"flex-1",children:e}),s&&jsx(Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}Se.displayName="ComboboxItem";var wr=cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${D.sm} pr-1`,default:`${D.default} pr-1.5`,lg:`${D.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),kr=cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${D.sm} py-1`,default:`${D.default} py-2`,lg:`${D.lg} py-3`}},defaultVariants:{size:"default"}}),Lr=cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),_r=cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),Br=cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Qo=Array.from({length:3}).map((e,t)=>jsx("div",{className:"h-11 px-4 py-2",children:jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${t}`));function Mr({ariaSelectProps:e,triggerContent:t,triggerRef:r,label:a,description:n,isRequired:s,isDisabled:d,isLoading:i,errorMessage:u,size:p,emptyStateMessage:f,childCount:l,children:o}){let c=useId(),b=useId(),g=useId(),y=!!u;return jsxs(Select,{...e,isInvalid:y,children:[jsxs(Label,{id:c,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,s&&jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsx(Text,{id:b,slot:"description",className:"text-sm text-[var(--menu-muted)] mt-1",children:n}),jsx("div",{className:K,children:jsxs(Button,{ref:r,className:wr({size:p,isInvalid:y}),"aria-labelledby":c,"aria-describedby":n?b:u?g:void 0,"data-loading":i,...s&&{"aria-required":"true"},...i&&{"aria-busy":"true"},...(d||i)&&{"aria-disabled":"true"},children:[t,i?jsx(Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsx(ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsx(FieldError,{id:g,className:Br({size:p}),children:({validationErrors:h})=>{let C=u||h.join(" ");return C?jsx(Fragment,{children:C}):null}}),jsx(Popover,{className:Lr({size:p}),children:jsxs(ListBox,{className:"outline-none",children:[i&&l>0&&Qo,!i&&jsxs(Fragment,{children:[o,l===0&&jsx(ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsx("span",{role:"status",children:f||"No options available"})})]})]})})]})}var Hr=forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,isOpen:s,isDisabled:d=false,isRequired:i=false,disabledKeys:u,validate:p,validationBehavior:f="aria",errorMessage:l,isLoading:o=false,emptyStateMessage:c,name:b,size:g="default",onChange:y,onOpenChange:h,className:C,children:N,...v},E)=>{let w=Children.count(N);return w>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:T=>{y&&y(T);},placeholder:t,disabledKeys:u,isOpen:s,onOpenChange:h,isDisabled:d||o,isRequired:i,name:b,validate:p,validationBehavior:f,className:C,...v},triggerContent:jsx(SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:E,label:e,description:r,isRequired:i,isDisabled:d,isLoading:o,errorMessage:l,size:g,emptyStateMessage:c,childCount:w,children:N})});Hr.displayName="Select";var zr=forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,selectionMode:s="multiple",isOpen:d,isDisabled:i=false,isRequired:u=false,disabledKeys:p,validate:f,validationBehavior:l="aria",errorMessage:o,isLoading:c=false,emptyStateMessage:b,name:g,size:y="default",onChange:h,onOpenChange:C,className:N,children:v,...E},w)=>{let T=Children.count(v);T>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let F=useMemo(()=>{let k=new Map,P=B=>{Children.forEach(B,x=>{if(isValidElement(x)){let R=x;if(R.type===Me||R.props?.value){let V=R.props.value,G=R.props.children;V&&typeof G=="string"&&k.set(V,G);}R.props?.children&&P(R.props.children);}});};return P(v),k},[v]),M=useMemo(()=>!a||!Array.isArray(a)||a.length===0?t||"":a.length<=2?a.map(P=>F.get(P)||P).join(", "):`${a.length} items selected`,[a,F,t]);return jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:k=>{h&&h(k);},selectionMode:"multiple",disabledKeys:p,isOpen:d,onOpenChange:C,isDisabled:i||c,isRequired:u,name:g,validate:f,validationBehavior:l,className:N,...E},triggerContent:jsx("span",{className:"flex-1 text-left truncate",children:M}),triggerRef:w,label:e,description:r,isRequired:u,isDisabled:i,isLoading:c,errorMessage:o,size:y,emptyStateMessage:b,childCount:T,children:v})});zr.displayName="MultiSelect";var Me=memo(function({children:t,textValue:r,value:a,isDisabled:n=false,className:s,...d}){if(!r&&typeof t!="string"){let i="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(i);console.warn(i);}return jsx(ListBoxItem,{id:a,textValue:r||(typeof t=="string"?t:void 0),className:`${kr({size:"default"})} ${s||""}`,isDisabled:n,...d,children:({isSelected:i,selectionMode:u,isDisabled:p})=>jsxs(Fragment,{children:[u==="multiple"?jsx(CheckSquare,{className:`absolute left-2 h-4 w-4 ${i?"visible":"invisible"}`,"aria-hidden":"true"}):i&&jsx(Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:t})]})})});Me.displayName="SelectItem";function mt({children:e,className:t,...r}){return jsx(ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${t||""}`,...r,children:e})}mt.displayName="SelectSection";function bt({children:e,className:t,...r}){return jsx(Header,{className:`${_r({size:"default"})} ${t||""}`,...r,children:e})}bt.displayName="SelectHeader";var Ce=Object.assign(Hr,{Item:Me,Section:mt,Header:bt});Object.assign(zr,{Item:Me,Section:mt,Header:bt});var Ur=cva(["relative inline-flex items-center justify-center","min-h-[44px] min-w-[44px]","focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","focus-visible:ring-offset-[var(--page-background)]","disabled:pointer-events-none","disabled:opacity-50"],{variants:{},defaultVariants:{}}),jr=cva(["inline-flex items-center justify-center","gap-1","rounded-full","font-medium","whitespace-nowrap","transition-colors"],{variants:{variant:{primary:["bg-[var(--primary-action)]","text-[var(--primary-action-foreground)]","hover:bg-[var(--primary-action)]/90","data-[pressed]:bg-[var(--primary-action)]/80"],accent:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"],destructive:["bg-[var(--destructive-background)]","text-[var(--destructive-foreground)]","hover:bg-[var(--destructive-background)]/90","data-[pressed]:bg-[var(--destructive-background)]/80"],content:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"]},size:{sm:"h-5 px-2 text-xs",default:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"}},defaultVariants:{variant:"primary",size:"default"}});var an={sm:"[&_svg]:h-2.5 [&_svg]:w-2.5",default:"[&_svg]:h-3 [&_svg]:w-3",lg:"[&_svg]:h-3.5 [&_svg]:w-3.5"},ce=memo(forwardRef(({className:e,variant:t="primary",size:r="default",children:a,icon:n,iconPosition:s="start",count:d,onPress:i,isDisabled:u,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b},g)=>{let y=m(jr({variant:t,size:r}),an[r],e),v=[!!n,d!==void 0,!!a].filter(Boolean).length>1,E=()=>jsxs(Fragment,{children:[n&&s==="start"&&jsx("span",{className:"shrink-0","aria-hidden":"true",children:n}),a&&(v?jsx("span",{children:a}):a),d!==void 0&&jsx("span",{className:"font-mono tabular-nums",children:d}),n&&s==="end"&&jsx("span",{className:"shrink-0","aria-hidden":"true",children:n})]});return i?jsx(Button,{ref:g,isDisabled:u,onPress:i,className:Ur(),id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:w=>jsx("span",{className:m(y,me,"",re,ae),"data-pressed":w.isPressed||void 0,children:E()})}):jsx("span",{ref:g,className:y,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:E()})}));ce.displayName="Badge";var xt=cva(["flex flex-wrap items-center gap-2"]),Ne=cva(["inline-flex items-center gap-2"]),gt=cva(["min-w-[14rem] max-w-[20rem] rounded-md border border-[var(--border)]","bg-[var(--content-background)] p-2 shadow-md","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),vt=cva(["flex items-center justify-between gap-2 px-1 pb-2 mb-1","border-b border-[var(--border)]"]),ht=cva(["flex items-center gap-2"],{variants:{scrollable:{true:"flex-nowrap overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&>*]:flex-none",false:"flex-wrap"}},defaultVariants:{scrollable:false}}),Wr=cva(["fixed inset-0 z-[80] bg-[rgb(23_23_23_/_0.42)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),Yr=cva(["fixed inset-x-0 bottom-0 z-[81] flex max-h-[88vh] flex-col","rounded-t-3xl border-t border-[var(--border)] bg-[var(--content-background)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:slide-in-from-bottom","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:slide-out-to-bottom"]),qr=cva(["flex items-center justify-between gap-2 px-5 py-3 border-b border-[var(--border)] flex-none"]),Xr=cva(["flex flex-col gap-5 overflow-auto p-5 flex-1","[&>*]:w-full"]),Zr=cva(["flex items-center justify-between gap-3 px-5 pt-3 flex-none","pb-[calc(0.75rem+env(safe-area-inset-bottom))] border-t border-[var(--border)]"]),Kr=cva(["mx-auto mt-2.5 mb-0.5 h-1.5 w-10 flex-none rounded-full bg-[var(--border)]"]),sn=cva(["inline-flex items-center gap-1.5 min-h-[44px] px-3 rounded-full","border border-[var(--border)] bg-[var(--accent-background)]","text-sm text-[var(--content-foreground)]","hover:bg-[var(--accent)] motion-safe:transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","cursor-pointer"]);function Ve({label:e,badge:t,isActive:r=false,children:a,doneLabel:n,align:s="start",className:d}){let i=t!=null&&t!=="";return jsxs(DialogTrigger,{children:[jsxs(_,{variant:r?"secondary":"outline",className:m(Ne(),d),children:[jsx("span",{children:e}),i&&jsx(ce,{size:"sm",children:String(t)}),jsx(ChevronDown,{"aria-hidden":"true",className:"h-4 w-4 opacity-60"})]}),jsx(Popover,{isNonModal:true,placement:s==="end"?"bottom end":"bottom start",className:gt(),children:jsx(Dialog,{"aria-label":e,className:"outline-none",children:({close:u})=>jsxs(Fragment,{children:[n&&jsxs("div",{className:vt(),children:[jsx("span",{className:"text-xs font-bold uppercase tracking-wide text-[var(--menu-muted)]",children:e}),jsx(_,{variant:"link",onPress:u,children:n})]}),typeof a=="function"?a(u):a]})})})]})}function xn(e,t){typeof e=="function"?e(t):e&&(e.current=t);}var $e=forwardRef(({chips:e,onRemove:t,onClearAll:r,clearAllLabel:a,removeChipLabel:n,scrollable:s=false,"aria-label":d="Active filters",className:i,"data-testid":u="applied-filters"},p)=>{let f=useRef(null);if(e.length===0)return null;let l='button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])',o=(c,b)=>{let g=f.current;if(e.length<=1&&g){let h=g.previousElementSibling;((h?.matches(l)?h:h?.querySelector(l))??g).focus(),t(c);return}t(c),requestAnimationFrame(()=>{let h=f.current;if(!h)return;let C=h.querySelectorAll("[data-chip]");C.length>0?C[Math.min(b,C.length-1)]?.focus():h.focus();});};return jsxs("div",{ref:c=>{f.current=c,xn(p,c);},role:"region","aria-label":d,tabIndex:-1,className:m(ht({scrollable:s}),"outline-none",i),"data-testid":u,children:[e.map((c,b)=>jsxs(_,{variant:"outline","data-chip":true,"aria-label":n(`${c.group?`${c.group} `:""}${c.label}`),onPress:()=>o(c,b),children:[c.group&&jsx("span",{className:"text-xs font-bold uppercase tracking-wide opacity-60",children:c.group}),jsx("span",{className:"font-semibold",children:c.label}),jsx(X,{"aria-hidden":"true",className:"h-3.5 w-3.5 opacity-60"})]},c.id)),e.length>1&&jsx(_,{variant:"link",onPress:()=>{r(),requestAnimationFrame(()=>f.current?.focus());},children:a})]})});$e.displayName="AppliedFilters";var Ue=createContext(null);function W(e){let t=useContext(Ue);if(!t)throw new Error(`<${e}> must be rendered inside <Filters>.`);return t}var ea=forwardRef(({values:e,onChange:t,labels:r,narrow:a=false,children:n,"aria-label":s="Filters",className:d,"data-testid":i="filters"},u)=>{let p=useRef(new Map),[f,l]=useState(0),o=useRef(e);o.current=e;let c=useCallback((x,R)=>{t({...o.current,[x]:R});},[t]),b=useCallback(x=>t(x),[t]),g=useCallback((x,R)=>{R?p.current.set(x,R):p.current.delete(x),l(V=>V+1);},[]),y=useMemo(()=>({values:e,narrow:a,setValue:c,replaceValues:b,labels:r,registry:p,registryVersion:f,syncControl:g}),[e,a,c,b,r,f,g]),h=useMemo(()=>{let x=0;for(let[R,V]of p.current)V.isActive(e[R])&&(x+=1);return x},[e,f]),C=()=>{let x={...o.current};for(let[R,V]of p.current)x[R]=V.clearedValue;b(x);},[N,v]=useState(false),E=useRef(null),w=useRef(null),T=useRef(null),F=useCallback(()=>{v(false),requestAnimationFrame(()=>E.current?.focus());},[]);useEffect(()=>{if(!N)return;w.current?.querySelector('button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])')?.focus();},[N]),useEffect(()=>{if(!N)return;let x=V=>{let G=V.target;T.current&&T.current.contains(G)&&F();},R=V=>{V.key==="Escape"&&(V.preventDefault(),F());};return document.addEventListener("pointerdown",x,true),document.addEventListener("keydown",R),()=>{document.removeEventListener("pointerdown",x,true),document.removeEventListener("keydown",R);}},[N,F]);let M=Children.toArray(n),k=x=>isValidElement(x)&&x.type===ta,P=M.filter(k),B=M.filter(x=>!k(x));return a?jsx(Ue.Provider,{value:y,children:jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsx("div",{children:jsxs(_,{ref:E,variant:"outline",className:Ne(),"aria-haspopup":"dialog","aria-expanded":N,onPress:()=>v(true),children:[jsx(SlidersHorizontal,{"aria-hidden":"true",className:"h-4 w-4"}),jsx("span",{children:r.filtersButton??s}),h>0&&jsx(ce,{size:"sm",children:String(h)})]})}),N&&jsx("div",{ref:T,className:Wr(),"aria-hidden":"true"}),jsx(FocusScope,{contain:N,restoreFocus:true,children:jsxs("div",{ref:w,role:"dialog","aria-modal":N||void 0,"aria-label":s,className:N?Yr():"hidden",children:[jsx("span",{className:Kr(),"aria-hidden":"true"}),jsxs("div",{className:qr(),children:[jsx("span",{className:"text-lg font-semibold",children:r.filtersButton??s}),jsx(_,{variant:"ghost",visualSize:"icon","aria-label":r.close??"Close",onPress:F,children:jsx(X,{"aria-hidden":"true"})})]}),jsx("div",{className:Xr(),children:B}),jsxs("div",{className:Zr(),children:[jsx(_,{variant:"link",onPress:C,children:r.clearAll??r.clear}),jsx(_,{variant:"default",onPress:F,children:r.done})]})]})}),P]})}):jsx(Ue.Provider,{value:y,children:jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsx("div",{className:xt(),children:B}),P]})})});ea.displayName="Filters";function pe(e,t){let{syncControl:r}=W("Filter control");useEffect(()=>(r(e,t),()=>r(e,null)),[e,t,r]);}function Ct(e){return e.map(t=>`${t.value}\0${t.label}`).join("")}function Nt(e,t){return e.find(r=>r.value===t)?.label??t}function En({name:e,label:t,placeholder:r,chipGroup:a,className:n}){let{values:s,setValue:d}=W("FilterSearch"),i=typeof s[e]=="string"?s[e]:"",u=useMemo(()=>({name:e,clearedValue:"",isActive:p=>typeof p=="string"&&p.trim()!=="",toChips:p=>typeof p=="string"&&p.trim()!==""?[{id:e,key:e,label:`\u201C${p}\u201D`,group:a??t}]:[]}),[e,t,a]);return pe(e,u),jsx(we,{"aria-label":t,placeholder:r,value:i,onChange:p=>d(e,p),onClear:()=>d(e,""),className:m("min-w-[14rem]",n)})}function Rn({name:e,label:t,className:r}){let{values:a,setValue:n}=W("FilterToggle"),s=a[e]===true,d=useMemo(()=>({name:e,clearedValue:false,isActive:i=>i===true,toChips:i=>i===true?[{id:e,key:e,label:t}]:[]}),[e,t]);return pe(e,d),jsx(Le,{label:t,isSelected:s,onChange:i=>n(e,!!i),className:r})}var St="__all__";function Tn({name:e,label:t,options:r,allLabel:a,className:n}){let{values:s,setValue:d,narrow:i}=W("FilterSelect"),u=typeof s[e]=="string"?s[e]:"",p=Ct(r),f=useMemo(()=>({name:e,clearedValue:"",isActive:l=>typeof l=="string"&&l!=="",toChips:l=>typeof l=="string"&&l!==""?[{id:e,key:e,label:Nt(r,l),group:t}]:[]}),[e,t,p]);return pe(e,f),i?jsxs(Ce,{label:t,value:u===""?St:u,onChange:l=>{let o=Array.isArray(l)?l[0]:l;d(e,!o||o===St?"":o);},className:n,children:[jsx(Ce.Item,{value:St,children:a??"All"}),r.map(l=>jsx(Ce.Item,{value:l.value,children:l.label},l.value))]}):jsx(Ve,{label:t,isActive:u!=="",className:n,children:l=>jsxs(ve,{"aria-label":t,value:u,onChange:o=>{d(e,o),l();},children:[jsx(le,{value:"",children:a??"All"}),r.map(o=>jsx(le,{value:o.value,children:o.label},o.value))]})})}function Fn({name:e,label:t,presets:r,className:a}){let{values:n,setValue:s,narrow:d}=W("FilterWithin"),i=r[0]?.value??"",u=typeof n[e]=="string"?n[e]:i,p=Ct(r),f=useMemo(()=>({name:e,clearedValue:i,isActive:o=>typeof o=="string"&&o!==i,toChips:o=>typeof o=="string"&&o!==i?[{id:e,key:e,label:Nt(r,o),group:t}]:[]}),[e,t,i,p]);pe(e,f);let l=o=>jsx(ve,{label:d?t:void 0,"aria-label":d?void 0:t,value:u,onChange:c=>{s(e,c),o?.();},className:d?a:void 0,children:r.map(c=>jsx(le,{value:c.value,children:c.label},c.value))});return d?l():jsx(Ve,{label:t,isActive:u!==i,className:a,children:o=>l(o)})}function Pn({name:e,label:t,options:r,className:a}){let{values:n,setValue:s,labels:d,narrow:i}=W("FilterMulti"),u=Array.isArray(n[e])?n[e]:[],p=Ct(r),f=useMemo(()=>({name:e,clearedValue:[],isActive:o=>Array.isArray(o)&&o.length>0,toChips:o=>Array.isArray(o)?o.map(c=>({id:`${e}:${c}`,key:e,optionValue:c,label:Nt(r,c),group:t})):[]}),[e,t,p]);pe(e,f);let l=jsx(Oe,{label:i?t:void 0,"aria-label":i?void 0:t,value:u,onChange:o=>s(e,o),className:i?a:void 0,children:r.map(o=>jsx(De,{value:o.value,children:o.label},o.value))});return i?l:jsxs(Ve,{label:t,badge:u.length||null,isActive:u.length>0,doneLabel:d.done,className:a,children:[l,u.length>0&&jsx("div",{className:"pt-1",children:jsx(_,{variant:"link",onPress:()=>s(e,[]),children:d.clear})})]})}function In({name:e,label:t,options:r,onSearch:a,isLoading:n,placeholder:s,className:d}){let{values:i,setValue:u}=W("FilterCombobox"),p=typeof i[e]=="string"?i[e]:"",f=useRef(new Map);for(let o of r)f.current.set(o.value,o.label);let l=useMemo(()=>({name:e,clearedValue:"",isActive:o=>typeof o=="string"&&o!=="",toChips:o=>typeof o=="string"&&o!==""?[{id:e,key:e,label:f.current.get(o)??o,group:t}]:[]}),[e,t]);return pe(e,l),jsx(Ge,{"aria-label":t,placeholder:s,selectedKey:p||null,onSelectionChange:o=>u(e,o==null?"":String(o)),onInputChange:a,className:m("min-w-[14rem]",d),children:r.length===0&&n?jsx(Se,{id:"__loading",isDisabled:true,children:"Loading\u2026"}):r.map(o=>jsx(Se,{id:o.value,children:o.label},o.value))})}function ta({clearAllLabel:e,removeChipLabel:t,"aria-label":r,className:a,"data-testid":n}){let{values:s,setValue:d,replaceValues:i,registry:u,narrow:p}=W("FilterChips"),f=[];for(let[c,b]of u.current)f.push(...b.toChips(s[c]));return jsx($e,{chips:f,onRemove:c=>{if(c.optionValue!==void 0){let b=s[c.key],g=Array.isArray(b)?b:[];d(c.key,g.filter(y=>y!==c.optionValue));}else {let b=u.current.get(c.key);d(c.key,b?b.clearedValue:"");}},onClearAll:()=>{let c={...s};for(let[b,g]of u.current)c[b]=g.clearedValue;i(c);},clearAllLabel:e,removeChipLabel:t,scrollable:p,"aria-label":r,className:a,"data-testid":n})}var An=z.object({value:z.string(),label:z.string()});export{$e as AppliedFilters,ta as FilterChips,In as FilterCombobox,Pn as FilterMulti,An as FilterOptionSchema,Ve as FilterPopover,En as FilterSearch,Tn as FilterSelect,Rn as FilterToggle,Fn as FilterWithin,ea as Filters,ht as appliedFiltersVariants,sn as filterChipVariants,Ne as filterPillVariants,vt as filterPopoverHeaderVariants,gt as filterPopoverVariants,xt as filtersBarVariants,W as useFiltersContext};//# sourceMappingURL=index.mjs.map
|
|
2
|
+
import {createContext,memo,forwardRef,useId,useState,useCallback,useMemo,useRef,useEffect,Children,useContext,isValidElement,cloneElement}from'react';import {FocusScope}from'react-aria';import {Loader2,Zap,Search,X,ChevronsUpDown,CheckSquare,Check,SlidersHorizontal,ChevronDown}from'lucide-react';import {Button,Label,Input,Text,FieldError,TextField,Switch,RadioGroup,CheckboxGroup,ComboBox,Popover,ListBox,SelectValue,ListBoxItem,Radio,Checkbox,Select,Header,ListBoxSection,DialogTrigger,Dialog}from'react-aria-components';import {clsx}from'clsx';import {twMerge}from'tailwind-merge';import {cva}from'class-variance-authority';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {z}from'zod';function m(...e){return twMerge(clsx(e))}var te="data-[focus-visible]:ring-2 data-[focus-visible]:ring-[var(--themis-ring)] data-[focus-visible]:ring-offset-2",me="data-[pressed]:scale-[0.97]";var Z="hc:data-[focus-visible]:outline hc:data-[focus-visible]:outline-4 hc:data-[focus-visible]:outline-offset-2 hc:data-[focus-visible]:outline-foreground",re="hc:data-[hovered]:outline hc:data-[hovered]:outline-2 hc:data-[hovered]:outline-foreground",ae="hc:data-[pressed]:outline hc:data-[pressed]:outline-2 hc:data-[pressed]:outline-offset-1 hc:data-[pressed]:outline-foreground",Xe="disabled:pointer-events-none disabled:opacity-50",wt=`${te} ${me} ${Z} ${re} ${ae}`;var Ze={sm:"text-xs",default:"text-sm",lg:"text-base"};var Te={sm:"h-9",default:"h-10",lg:"h-11"},B={sm:`${Te.sm} px-2 text-xs`,default:`${Te.default} px-3 text-sm`,lg:`${Te.lg} px-4 text-base`},K="min-h-[44px] flex items-center";var Ke=cva("inline-flex justify-center min-h-[44px] min-w-[44px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-50",{variants:{fullWidth:{true:"w-full",false:""},inVerticalGroup:{true:"items-stretch",false:"items-center"}},defaultVariants:{fullWidth:false,inVerticalGroup:false}}),Qe=cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-normal ring-offset-background motion-safe:transition-transform motion-safe:duration-200 motion-safe:[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)] motion-reduce:transition-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 relative cursor-pointer",{variants:{variant:{default:"bg-[var(--primary-action)] text-[var(--primary-action-foreground)] shadow-md hover:bg-[var(--primary-action-hover)] hover:-translate-y-1",destructive:"bg-[var(--destructive-background)] text-[var(--destructive-foreground)] hover:bg-[var(--destructive-background-hover,var(--destructive-background))] motion-safe:hover:btn-warn-shake",outline:"border border-[var(--input-border)] bg-[var(--page-background)] hover:bg-[var(--input-border)]",secondary:"bg-[var(--secondary)] text-[var(--secondary-foreground)] hover:bg-[var(--secondary-hover,var(--secondary))]",ghost:"hover:bg-[var(--accent)] hover:text-[var(--accent-foreground)]",link:"text-[var(--text-link)] underline underline-offset-4 hover:bg-[var(--accent)] hover:text-[var(--text-link-hover)]"},fullWidth:{true:"w-full",false:""},visualSize:{default:"h-10 px-4 py-2",sm:"h-9 rounded-md px-3 text-xs",lg:"h-11 rounded-md px-6 text-base",icon:"h-10 w-10",dot:"h-5 w-5 rounded-full p-0 min-h-0 min-w-0"},paywall:{true:"!bg-[var(--paywall)] !text-[var(--paywall-foreground)] hover:!bg-[var(--paywall)]/90 !cursor-not-allowed !border-transparent",false:""}},defaultVariants:{variant:"default",visualSize:"default",paywall:false}});var Dt=createContext(null);Dt.displayName="ButtonGroupContext";function Bt(){return useContext(Dt)}var Ot=createContext(null);Ot.displayName="ButtonGroupItemContext";function Gt(){return useContext(Ot)}cva("inline-flex items-center gap-0",{variants:{orientation:{horizontal:"flex-row",vertical:"flex-col w-full"}},defaultVariants:{orientation:"horizontal"}});var Mt=cva("",{variants:{orientation:{horizontal:"min-w-[44px]",vertical:"flex min-h-[44px]"},position:{first:"",middle:"",last:"",only:""}},compoundVariants:[{orientation:"horizontal",position:"first",className:"rounded-r-none border-r-0"},{orientation:"horizontal",position:"middle",className:"rounded-none border-r-0"},{orientation:"horizontal",position:"last",className:"rounded-l-none"},{orientation:"vertical",position:"first",className:"rounded-b-none border-b-0"},{orientation:"vertical",position:"middle",className:"rounded-none border-b-0"},{orientation:"vertical",position:"last",className:"rounded-t-none"}],defaultVariants:{orientation:"horizontal",position:"only"}});cva("bg-[var(--border)]",{variants:{orientation:{horizontal:"w-px h-6 mx-1",vertical:"h-px w-full my-1"}},defaultVariants:{orientation:"horizontal"}});var _=memo(forwardRef(({className:e,buttonVisualClassName:t,variant:r,size:a,visualSize:n,fullWidth:s,loading:d=false,loadingText:i="Loading...",shortcut:u,children:p,isDisabled:f,paywall:l=false,paywallRedirect:o,paywallDescription:c,onPress:b,...g},y)=>{let h=useId(),C=Bt(),E=Gt(),v=r??C?.variant??"default",V=a??C?.size,w=f??C?.isDisabled??false,T=C?.orientation==="vertical",I=s||T,M=E?Mt({orientation:C?.orientation??"horizontal",position:E.position}):"",k=n??V??"default";return process.env.NODE_ENV!=="production"&&(k==="dot"||k==="icon")&&!g["aria-label"]&&!p&&console.warn('[Button] visualSize="dot" or "icon" requires aria-label when no visible text is provided (WCAG 1.1.1)'),jsx(Button,{ref:y,isDisabled:w||d||void 0,"aria-disabled":l?true:void 0,"aria-describedby":l?h:void 0,onPress:x=>{if(l){o&&window.open(o,"_blank","noopener,noreferrer");return}b?.(x);},className:m(Ke({fullWidth:I,inVerticalGroup:T}),e),...g,children:x=>jsxs("span",{className:m(Qe({variant:v,visualSize:k,paywall:l,fullWidth:I}),M,t,me,"",re,ae),"data-pressed":x.isPressed||void 0,children:[d&&jsxs(Fragment,{children:[jsx(Loader2,{className:"motion-safe:animate-spin","aria-hidden":"true"}),jsx("span",{className:"sr-only","aria-live":"polite",children:i})]}),!d&&p,l&&jsx(Zap,{"data-testid":"zap-icon","aria-hidden":"true",className:"ml-1"}),l&&jsxs("span",{id:h,className:"sr-only",children:["Premium feature: ",c||"Upgrade required to access this feature"]}),x.isFocusVisible&&u&&jsx("kbd",{className:"ml-auto hidden text-xs opacity-60 lg:inline",children:u})]})})}));_.displayName="Button";var Ht=()=>jsxs("svg",{"data-testid":"password-toggle-icon-show",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M1 8s3-5 7-5 7 5 7 5-3 5-7 5-7-5-7-5z"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]}),zt=()=>jsxs("svg",{"data-testid":"password-toggle-icon-hide",width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[jsx("path",{d:"M10.5 5.5l-5 5"}),jsx("path",{d:"M1 8s3-5 7-5c1.5 0 2.8.6 4 1.5M15 8s-1.5 2.5-4 4"}),jsx("path",{d:"M3 13l2-2m7-7l2-2"}),jsx("circle",{cx:"8",cy:"8",r:"2"})]});var rt=cva("flex w-full rounded-md border bg-[var(--content-background)] px-3 py-2 text-sm ring-offset-[var(--content-background)] file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--content-foreground)] placeholder:text-[var(--menu-muted)] transition-all duration-200",{variants:{size:{sm:`${B.sm} py-1`,default:`${B.default} py-2`,lg:`${B.lg} py-3`},state:{default:"border-[var(--input-border)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2",error:"border-[var(--destructive-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--destructive-background)] focus-visible:ring-offset-2",success:"border-[var(--success-background)] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--success-ring)] focus-visible:ring-offset-2",disabled:"cursor-not-allowed opacity-50",readonly:"cursor-default bg-[var(--content-background)] opacity-70"}},defaultVariants:{size:"default",state:"default"}}),at=cva("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70",{variants:{state:{default:"text-[var(--content-foreground)]",disabled:"opacity-50 cursor-not-allowed"}},defaultVariants:{state:"default"}}),ot=cva("text-sm text-[var(--content-foreground)]"),$t=cva("text-sm text-[var(--destructive-background)] font-medium"),nt=cva("text-sm text-[var(--success-foreground)] font-medium");function Wt({expandOnFocus:e,collapsedWidth:t,value:r,defaultValue:a,userOnFocus:n,userOnBlur:s}){let[d,i]=useState(false),u=useCallback(l=>{e&&i(true),n?.(l);},[e,n]),p=useCallback(l=>{e&&l.target.value===""&&i(false),s?.(l);},[e,s]),f=useMemo(()=>e?d||(r!==void 0?r!=="":a!==void 0&&a!=="")?"100%":t:void 0,[e,d,r,a,t]);return {handleFocus:u,handleBlur:p,inputWidth:f}}function Yt({disableCopyPaste:e}){let[t,r]=useState(false),[a,n]=useState("");useEffect(()=>{e&&typeof process<"u"&&process.env.NODE_ENV==="development"&&console.warn("[TextField] Copy/paste prevention should only be used for security-critical fields like password confirmation. This feature can break assistive technology workflows and password managers.");},[e]);let s=useCallback(d=>{e&&(d.preventDefault(),r(true),n("Pasting is not allowed in this field. Please type your entry."),setTimeout(()=>{r(false),n("");},250));},[e]);return {isShaking:t,screenReaderMessage:a,handlePaste:s}}function qt({type:e,showPasswordToggle:t}){let[r,a]=useState(false),n=useCallback(()=>{a(d=>!d);},[]),s=useMemo(()=>e==="password"&&t&&r?"text":e,[e,t,r]);return {showPassword:r,actualType:s,handlePasswordToggle:n}}var Aa=forwardRef(({className:e,state:t="default",children:r,...a},n)=>jsx(Label,{ref:n,className:m(at({state:t}),e),...a,children:r}));Aa.displayName="TextFieldLabel";var wa=forwardRef(({className:e,size:t="default",state:r="default",...a},n)=>jsx(Input,{ref:n,className:m(rt({size:t,state:r}),Xe,e),...a}));wa.displayName="TextFieldInput";var ka=forwardRef(({className:e,children:t,...r},a)=>jsx(Text,{ref:a,slot:"description",className:m(ot(),e),...r,children:t}));ka.displayName="TextFieldDescription";var Qt=forwardRef(({className:e,children:t,...r},a)=>jsx(FieldError,{ref:a,...r,className:m($t(),e),children:t}));Qt.displayName="TextFieldError";var La=forwardRef(({className:e,children:t,...r},a)=>jsx(Text,{ref:a,slot:"description",className:m(nt(),e),...r,children:t}));La.displayName="TextFieldSuccess";var st=forwardRef(({className:e,size:t="default",label:r,labelHint:a,description:n,errorMessage:s,successMessage:d,type:i="text",isRequired:u=false,isReadOnly:p=false,isDisabled:f=false,isInvalid:l=false,isValid:o=false,id:c,autoComplete:b,disableCopyPaste:g=false,pattern:y,patternDescription:h,expandOnFocus:C=false,collapsedWidth:E="200px",prefix:v,suffix:V,prefixSize:w=16,suffixSize:T=16,showPasswordToggle:I,isIconHidden:M=false,onSubmit:k,onClear:F,value:D,defaultValue:x,onFocus:R,onBlur:N,...G},We)=>{let Ve=useId(),ra=useId(),aa=c||ra,{handleFocus:oa,handleBlur:na,inputWidth:ia}=Wt({expandOnFocus:C,collapsedWidth:E,value:D,defaultValue:x,userOnFocus:R,userOnBlur:N}),{isShaking:sa,screenReaderMessage:Vt,handlePaste:la}=Yt({disableCopyPaste:g}),{showPassword:Ye,actualType:da,handlePasswordToggle:Rt}=qt({type:i,showPasswordToggle:I}),j=i==="search",[ca,Tt]=useState(x??""),fe=D!==void 0,Y=fe?D:ca,ua=useCallback(L=>{fe||Tt(L),G.onChange?.(L);},[fe,G]),Re=useCallback(()=>{fe||Tt(""),G.onChange?.(""),F?.();},[fe,G,F]),pa=useCallback(L=>{L.key==="Enter"&&k&&k(Y),L.key==="Escape"&&Y&&(L.preventDefault(),Re());},[Y,k,Re]),fa=useMemo(()=>f?"disabled":p?"readonly":l?"error":o?"success":"default",[f,p,l,o]),ma=useMemo(()=>f?"disabled":"default",[f]),It=useMemo(()=>n&&h?`${n} ${h}`:n||h,[n,h]),ee=useMemo(()=>j&&!M&&!v?jsx(Search,{className:t==="sm"?"h-3.5 w-3.5":t==="lg"?"h-5 w-5":"h-4 w-4"}):v,[j,M,v,t]),Ft=useMemo(()=>{let L={left:12,right:12};if(ee){let qe=typeof ee=="string"?ee.length*8+16:w+16;L.left=qe;}if(i==="password"&&I)L.right=32;else if(j&&Y)L.right=44;else if(V){let qe=typeof V=="string"?V.length*8+16:T+16;L.right=qe;}return L},[ee,v,V,w,T,i,I,j,Y]),Pt=useMemo(()=>i==="password"&&I?jsx(_,{variant:"ghost",visualSize:"icon",onPress:Rt,"aria-label":Ye?"Hide password":"Show password",className:"!min-h-0 !min-w-0 h-8 w-8",children:Ye?jsx(zt,{}):jsx(Ht,{})}):j&&Y?jsx(_,{variant:"ghost",visualSize:"icon",onPress:Re,"aria-label":"Clear search",className:"!min-h-0 !min-w-0 h-8 w-8",children:jsx(X,{className:t==="sm"?"h-3 w-3":t==="lg"?"h-5 w-5":"h-4 w-4"})}):V,[i,I,Ye,V,Rt,j,Y,t,Re]),At=i==="password"&&I||j&&!!Y;return jsxs(TextField,{ref:We,className:m("flex flex-col gap-1.5",e),isRequired:u,isReadOnly:p,isDisabled:f,isInvalid:l,value:j?Y:D,defaultValue:j?void 0:x,onChange:j?ua:void 0,...G,children:[r&&jsxs(Label,{className:m(at({state:ma}),a&&"flex items-baseline justify-between"),children:[jsxs("span",{children:[r,u&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:jsx("strong",{children:"*"})})]}),a&&jsx("span",{className:"text-xs font-normal text-[var(--muted-foreground)]",children:a})]}),It&&jsx(Text,{slot:"description",className:m(ot()),children:It}),jsxs("div",{className:m(K,"relative cursor-text motion-safe:transition-colors motion-safe:duration-200"),style:{width:ia},onClick:L=>{L.target===L.currentTarget&&L.currentTarget.querySelector("input")?.focus();},children:[ee&&jsx("div",{"data-testid":"textfield-prefix",className:"absolute left-3 flex items-center justify-center pointer-events-none text-[var(--content-foreground)]","aria-hidden":"true",children:ee}),jsx(Input,{type:da,id:aa,className:m(rt({size:t,state:fa}),Xe,sa&&"shake"),style:{width:"100%",paddingLeft:`${Ft.left}px`,paddingRight:`${Ft.right}px`},autoComplete:b,pattern:y,onPaste:la,onFocus:oa,onBlur:na,onKeyDown:j?pa:void 0,"aria-required":u?"true":void 0,"aria-readonly":p?"true":void 0,"aria-errormessage":l&&s?Ve:void 0}),Pt&&jsx("div",{"data-testid":"textfield-suffix",className:m("absolute right-3 flex items-center justify-center text-[var(--content-foreground)]",At?"":"pointer-events-none"),"aria-hidden":At?void 0:"true",children:Pt})]}),o&&d&&!l&&jsx(Text,{slot:"description",className:m(nt()),children:d}),l&&s&&jsx(Qt,{id:Ve,children:s}),Vt&&jsx("div",{className:"sr-only",role:"status","aria-live":"polite","aria-atomic":"true",children:Vt})]})});st.displayName="TextField";var we=forwardRef(({label:e,description:t,errorMessage:r,"aria-label":a,"aria-labelledby":n,...s},d)=>(process.env.NODE_ENV!=="production"&&!e&&!a&&!n&&console.warn("[SearchField] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsx(st,{ref:d,type:"search",label:e,description:r?void 0:t,errorMessage:r,isInvalid:!!r,"aria-label":e?void 0:a,"aria-labelledby":n,...s})));we.displayName="SearchField";function Jt(e,t){return !(e===false||t)}var er="(prefers-reduced-motion: reduce)";function Ga(){return typeof window>"u"?false:window.matchMedia(er).matches}function tr(){let[e,t]=useState(Ga);return useEffect(()=>{let r=window.matchMedia(er);t(r.matches);let a=n=>{t(n.matches);};return r.addEventListener("change",a),()=>r.removeEventListener("change",a)},[]),e}var ge;function ja(){return ge!==void 0?Promise.resolve(ge):import('motion').then(e=>(ge=e.animate,ge)).catch(()=>(ge=null,null))}var Wa={stiffness:500,damping:30},ar=cva("inline-flex shrink-0 cursor-pointer items-center justify-center min-h-[44px] min-w-[44px] disabled:cursor-not-allowed disabled:opacity-50 data-[readonly]:cursor-default",{variants:{},defaultVariants:{}}),or=cva("relative inline-flex shrink-0 items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2 focus-visible:ring-offset-background",{variants:{variant:{default:"bg-[var(--border)] data-[selected]:bg-[var(--primary)]",destructive:"bg-[var(--border)] data-[selected]:bg-[var(--destructive-background)]"},size:{sm:"h-6 w-10",default:"h-7 w-12",lg:"h-8 w-14"}},defaultVariants:{variant:"default",size:"default"}}),nr=cva("pointer-events-none absolute left-0.5 rounded-full bg-[var(--content-background)] ring-0",{variants:{size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"},animated:{false:"transition-transform data-[selected]:translate-x-full",true:""}},defaultVariants:{size:"default",animated:false}}),Le=memo(forwardRef(({className:e,variant:t,size:r,label:a,description:n,isDisabled:s,isReadOnly:d,animated:i,springConfig:u=Wa,onChange:p,...f},l)=>{let o=tr(),c=Jt(i,o),b=useRef(null),g=useRef(false),y=useRef(null),h=useRef(null);useEffect(()=>{c&&ja().then(v=>{if(v&&(y.current=v,g.current=true,b.current)){let V=b.current.hasAttribute("data-selected");b.current.style.transform=V?"translateX(100%)":"translateX(0)";}});},[c]);let C=useCallback(v=>{p?.(v),c&&g.current&&y.current&&b.current&&(h.current?.stop(),h.current=y.current(b.current,{x:v?"100%":"0%"},{type:"spring",stiffness:u.stiffness,damping:u.damping}));},[c,u.stiffness,u.damping,p]),E=c;return jsx(Switch,{ref:l,isDisabled:s,isReadOnly:d,onChange:C,className:v=>m("group inline-flex items-center gap-2",s&&"cursor-not-allowed opacity-50",e),...f,children:v=>jsxs(Fragment,{children:[jsx("div",{className:m(ar()),"data-selected":v.isSelected||void 0,"data-readonly":d||void 0,children:jsx("div",{className:m(or({variant:t,size:r}),wt),"data-selected":v.isSelected||void 0,children:jsx("div",{ref:b,className:m(nr({size:r,animated:E})),"data-selected":v.isSelected||void 0})})}),(a||n)&&jsxs("div",{className:"flex flex-col",children:[a&&jsx("span",{className:"text-sm font-medium text-[var(--content-foreground)]",children:a}),n&&jsx("span",{className:"text-xs text-[var(--menu-muted)]",children:n})]})]})})}));Le.displayName="Switch";var ir=createContext({variant:"default",size:"default",isInvalid:false}),ao=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),oo=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isInvalid:false}}),no=cva("flex-shrink-0 rounded-full border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),io=cva(["rounded-full transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"bg-[var(--primary)]",destructive:"bg-[var(--destructive-background)]"},size:{sm:"h-2 w-2",default:"h-2.5 w-2.5",lg:"h-3 w-3"}},defaultVariants:{variant:"default",size:"default"}});function sr({children:e,className:t}){return jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}sr.displayName="Radio.Label";function lr({children:e,className:t}){return jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}lr.displayName="Radio.Description";function so({value:e,isDisabled:t,children:r,className:a}){let{variant:n,size:s,isInvalid:d}=useContext(ir);return jsx(Radio,{value:e,isDisabled:t,className:i=>m(oo({variant:n,size:s,isDisabled:i.isDisabled,isInvalid:d}),a),children:i=>jsxs(Fragment,{children:[jsx("div",{className:no({variant:n,size:s}),"data-selected":i.isSelected||void 0,children:jsx("div",{className:io({variant:n,size:s}),"data-selected":i.isSelected||void 0})}),jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var le=Object.assign(so,{Label:sr,Description:lr});le.displayName="Radio";var ve=forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:E,id:v,"aria-label":V,"aria-labelledby":w,"aria-describedby":T,"data-testid":I,...M}=t,k=useId(),F=v??k,D=`${F}-label`,x=`${F}-description`,R=`${F}-error`,N=[];T&&N.push(T),n&&N.push(x),l&&s&&N.push(R);let G=N.length>0?N.join(" "):void 0;return jsx(ir.Provider,{value:{variant:c,size:b,isInvalid:l},children:jsxs(RadioGroup,{ref:r,id:F,name:g,value:d??void 0,defaultValue:i??void 0,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,orientation:o,onChange:y,onFocusChange:h,"aria-label":V,"aria-labelledby":a?D:w,"aria-describedby":G,"data-testid":I,"data-orientation":o,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxs(Label,{id:D,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsx(Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsx("div",{className:ao({orientation:o}),children:E}),l&&s&&jsx(FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsx("span",{role:"alert",children:s})})]})})});ve.displayName="RadioGroup";var cr=createContext({variant:"default",size:"default",isInvalid:false,isDisabled:false,isReadOnly:false}),ur=cva("flex",{variants:{orientation:{vertical:"flex-col gap-2",horizontal:"flex-row flex-wrap gap-2"}},defaultVariants:{orientation:"vertical"}}),pr=cva(["flex items-center gap-3 rounded-md border cursor-pointer","transition-colors duration-200","rtl:flex-row-reverse",te,Z].join(" "),{variants:{variant:{default:["border-[var(--border)]","data-[hovered]:bg-[var(--accent)]/10","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]/10"].join(" "),destructive:["border-[var(--border)]","data-[hovered]:bg-[var(--destructive-background)]/10","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]/10"].join(" ")},size:{sm:"min-h-[44px] py-2 px-3 text-sm",default:"min-h-[48px] py-3 px-4 text-sm",lg:"min-h-[56px] py-4 px-5 text-base"},isDisabled:{true:"opacity-50 cursor-not-allowed",false:""},isReadOnly:{true:"cursor-default",false:""},isInvalid:{true:"border-[var(--destructive-background)]",false:""}},defaultVariants:{variant:"default",size:"default",isDisabled:false,isReadOnly:false,isInvalid:false}}),fr=cva("flex-shrink-0 rounded-sm border-2 flex items-center justify-center transition-colors duration-200",{variants:{variant:{default:["border-[var(--border)]","data-[selected]:border-[var(--primary)]","data-[selected]:bg-[var(--primary)]"].join(" "),destructive:["border-[var(--border)]","data-[selected]:border-[var(--destructive-background)]","data-[selected]:bg-[var(--destructive-background)]"].join(" ")},size:{sm:"h-4 w-4",default:"h-5 w-5",lg:"h-6 w-6"}},defaultVariants:{variant:"default",size:"default"}}),mr=cva(["transition-transform duration-200","[transition-timing-function:cubic-bezier(0.34,1.56,0.64,1)]","motion-reduce:transition-none","scale-0 data-[selected]:scale-100"].join(" "),{variants:{variant:{default:"text-[var(--primary-foreground)]",destructive:"text-[var(--destructive-foreground)]"},size:{sm:"h-3 w-3",default:"h-3.5 w-3.5",lg:"h-4 w-4"}},defaultVariants:{variant:"default",size:"default"}});function br({className:e,...t}){return jsx("svg",{className:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:3,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...t,children:jsx("polyline",{points:"20 6 9 17 4 12"})})}function xr({children:e,className:t}){return jsx("span",{className:m("font-medium text-[var(--content-foreground)]",t),children:e})}xr.displayName="Checkbox.Label";function gr({children:e,className:t}){return jsx("span",{className:m("text-sm text-[var(--menu-muted)]",t),children:e})}gr.displayName="Checkbox.Description";function yo({value:e,isDisabled:t,children:r,className:a,selectedIcon:n}){let{variant:s,size:d,isInvalid:i,isDisabled:u,isReadOnly:p}=useContext(cr),f=t||u,l=o=>{let c=m(mr({variant:s,size:d})),b=o||void 0;if(n){if(isValidElement(n)){let g=n;return cloneElement(g,{className:m(c,g.props.className),"data-selected":b})}return jsx("span",{className:c,"data-selected":b,children:n})}return jsx(br,{className:c,"data-selected":b})};return jsx(Checkbox,{value:e,isDisabled:f,className:o=>m(pr({variant:s,size:d,isDisabled:o.isDisabled,isReadOnly:p,isInvalid:i}),a),children:o=>jsxs(Fragment,{children:[jsx("div",{className:fr({variant:s,size:d}),"data-selected":o.isSelected||void 0,children:l(o.isSelected)}),jsx("div",{className:"flex-1 flex flex-col",children:r})]})})}var Be=Object.assign(yo,{Label:xr,Description:gr});Be.displayName="Checkbox";function dr(e,t){if(!e)return e;let r=[...new Set(e)];return process.env.NODE_ENV!=="production"&&r.length!==e.length&&console.warn(`[${t}] Received duplicate values in value/defaultValue prop. Original: [${e.join(", ")}], Deduplicated: [${r.join(", ")}]. Duplicate values are automatically removed.`),r}var Oe=forwardRef(function(t,r){let{label:a,description:n,errorMessage:s,value:d,defaultValue:i,isDisabled:u=false,isReadOnly:p=false,isRequired:f=false,isInvalid:l=false,orientation:o="vertical",variant:c="default",size:b="default",name:g,onChange:y,onFocusChange:h,className:C,children:E,id:v,"aria-label":V,"aria-labelledby":w,"aria-describedby":T,"data-testid":I,...M}=t,k=useId(),F=v??k,D=`${F}-label`,x=`${F}-description`,R=`${F}-error`,N=[];T&&N.push(T),n&&N.push(x),l&&s&&N.push(R);let G=N.length>0?N.join(" "):void 0,We=dr(d,"CheckboxGroup"),Ve=dr(i,"CheckboxGroup");return jsx(cr.Provider,{value:{variant:c,size:b,isInvalid:l,isDisabled:u,isReadOnly:p},children:jsxs(CheckboxGroup,{ref:r,id:F,name:g,value:We,defaultValue:Ve,isDisabled:u,isReadOnly:p,isRequired:f,isInvalid:l,onChange:y,onFocusChange:h,"aria-label":V,"aria-labelledby":a?D:w,"aria-describedby":G,"aria-orientation":o,"aria-required":f||void 0,"aria-invalid":l||void 0,"data-testid":I,className:m("flex flex-col gap-1.5",C),...M,children:[a&&jsxs(Label,{id:D,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,f&&jsx("span",{className:"ml-1 text-[var(--destructive-background)]","aria-hidden":"true",children:"*"})]}),n&&jsx(Text,{id:x,slot:"description",className:"text-sm text-[var(--menu-muted)]",children:n}),jsx("div",{className:ur({orientation:o}),children:E}),l&&s&&jsx(FieldError,{id:R,className:"text-sm text-[var(--destructive-background)]",children:jsx("span",{role:"alert",children:s})})]})})});Oe.displayName="CheckboxGroup";var vr=cva("group flex flex-col gap-1.5 w-full",{variants:{size:{sm:"",default:"",lg:""}},defaultVariants:{size:"default"}}),hr=cva("text-[var(--text-primary)] font-medium",{variants:{size:{sm:"text-xs",default:"text-sm",lg:"text-base"}},defaultVariants:{size:"default"}}),Sr=cva(["flex-1 bg-transparent outline-none","placeholder:text-[var(--muted-foreground)]","disabled:cursor-not-allowed"],{variants:{size:Ze},defaultVariants:{size:"default"}}),yr=cva(["flex items-center w-full rounded-md border","bg-[var(--input-background)] text-[var(--content-foreground)]","border-[var(--input-border)]","transition-colors duration-[var(--transition-fast)]","focus-within:ring-2 focus-within:ring-[var(--ring)] focus-within:ring-offset-[var(--ring-offset)]","data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50","data-[invalid]:border-[var(--destructive-background)]"],{variants:{size:{sm:`${B.sm} gap-1`,default:`${B.default} gap-2`,lg:`${B.lg} gap-2`}},defaultVariants:{size:"default"}}),Cr=cva(["flex items-center justify-center shrink-0","text-[var(--muted-foreground)]","hover:text-[var(--text-primary)]","transition-colors","focus:outline-none"],{variants:{size:{sm:"h-4 w-4 min-h-[44px] min-w-[44px]",default:"h-5 w-5 min-h-[44px] min-w-[44px]",lg:"h-6 w-6 min-h-[44px] min-w-[44px]"}},defaultVariants:{size:"default"}}),Er=cva(["w-[var(--trigger-width)] overflow-auto","rounded-md border border-[var(--border)]","bg-[var(--content-background)] text-[var(--content-foreground)]","data-[entering]:motion-safe:animate-in data-[entering]:motion-safe:fade-in-0","data-[exiting]:motion-safe:animate-out data-[exiting]:motion-safe:fade-out-0"]),Nr=cva("p-1 outline-none max-h-[300px] overflow-auto"),Vr=cva(["flex items-center gap-2 w-full rounded-sm px-2 py-1.5","text-[var(--content-foreground)]","cursor-pointer outline-none","data-[focused]:bg-[var(--accent-background)] data-[focused]:text-[var(--accent-foreground)]","data-[selected]:font-medium","data-[disabled]:opacity-50 data-[disabled]:cursor-not-allowed"],{variants:{size:{sm:"text-xs min-h-[44px]",default:"text-sm min-h-[44px]",lg:"text-base min-h-[44px]"}},defaultVariants:{size:"default"}});cva("pt-1");cva("px-2 py-1.5 text-xs font-semibold text-[var(--muted-foreground)]");var Ir=cva("text-[var(--muted-foreground)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}}),Fr=cva("text-[var(--destructive-background)]",{variants:{size:{sm:"text-xs",default:"text-xs",lg:"text-sm"}},defaultVariants:{size:"default"}});var Ge=forwardRef(({className:e,size:t="default",label:r,description:a,errorMessage:n,isRequired:s,isDisabled:d,isReadOnly:i,placeholder:u,name:p,allowsCustomValue:f=false,menuTrigger:l="input",defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,children:C,"aria-label":E,"aria-labelledby":v,"data-testid":V,...w},T)=>(process.env.NODE_ENV!=="production"&&!r&&!E&&!v&&console.warn("[Combobox] Either label, aria-label, or aria-labelledby is required for accessibility (WCAG 1.1.1)"),jsxs(ComboBox,{ref:T,className:m(vr({size:t}),e),isRequired:s,isDisabled:d,isReadOnly:i,name:p,allowsCustomValue:f,menuTrigger:l,defaultInputValue:o,inputValue:c,defaultSelectedKey:b,selectedKey:g,onInputChange:y,onSelectionChange:h,"aria-label":r?void 0:E,"aria-labelledby":v,"data-testid":V,...w,children:[r&&jsxs(Label,{className:hr({size:t}),children:[r,s&&jsx("span",{className:"text-[var(--destructive-background)] ml-1","aria-hidden":"true",children:"*"})]}),jsxs("div",{className:m(K,yr({size:t})),children:[jsx(Input,{className:Sr({size:t}),placeholder:u}),jsx(Button,{className:Cr({size:t}),children:jsx(ChevronsUpDown,{className:"h-full w-full","aria-hidden":"true"})})]}),a&&!n&&jsx(Text,{slot:"description",className:Ir({size:t}),children:a}),n&&jsx(Text,{slot:"errorMessage",className:Fr({size:t}),children:n}),jsx(Popover,{className:Er(),children:jsx(ListBox,{className:Nr(),children:C})})]})));Ge.displayName="Combobox";function Se({children:e,className:t,textValue:r,...a}){let n=r||(typeof e=="string"?e:void 0);return jsx(ListBoxItem,{className:m(Vr({size:"default"}),t),textValue:n,...a,children:({isSelected:s})=>jsxs(Fragment,{children:[jsx("span",{className:"flex-1",children:e}),s&&jsx(Check,{className:"h-4 w-4 shrink-0 text-[var(--primary)]","aria-hidden":"true"})]})})}Se.displayName="ComboboxItem";var wr=cva(["flex","w-full","items-center","justify-between","gap-2","rounded-md","border","bg-[var(--content-background)]","text-[var(--content-foreground)]","transition-colors","duration-200","outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","hover:bg-[var(--accent)]/10","disabled:cursor-not-allowed","disabled:opacity-50","data-[loading=true]:cursor-wait","truncate"],{variants:{size:{sm:`${B.sm} pr-1`,default:`${B.default} pr-1.5`,lg:`${B.lg} pr-2`},isInvalid:{true:"border-[var(--destructive-background)]",false:"border-[var(--input-border)] hover:border-[var(--input-border)]/80"}},defaultVariants:{size:"default",isInvalid:false}}),kr=cva(["relative","flex","w-full","cursor-pointer","select-none","items-center","rounded-sm","outline-none","transition-colors","pl-8","pr-2","hover:bg-[var(--accent)]","hover:text-[var(--accent-foreground)]","focus:bg-[var(--accent)]","focus:text-[var(--accent-foreground)]","data-[selected=true]:bg-[var(--accent)]","data-[selected=true]:text-[var(--accent-foreground)]","data-[disabled=true]:pointer-events-none","data-[disabled=true]:opacity-50","data-[disabled=true]:text-[var(--menu-muted)]"],{variants:{size:{sm:`${B.sm} py-1`,default:`${B.default} py-2`,lg:`${B.lg} py-3`}},defaultVariants:{size:"default"}}),Lr=cva(["z-50","w-[--trigger-width]","rounded-md","border","border-[var(--menu-border)]","bg-[var(--menu-background)]","text-[var(--menu-foreground)]","outline-none","overflow-auto","data-[entering]:animate-in","data-[entering]:fade-in-0","data-[entering]:zoom-in-95","data-[exiting]:animate-out","data-[exiting]:fade-out-0","data-[exiting]:zoom-out-95"],{variants:{size:{sm:"max-h-[200px] p-1",default:"max-h-[300px] p-1",lg:"max-h-[400px] p-1"}},defaultVariants:{size:"default"}}),_r=cva(["px-2","py-1.5","text-xs","font-semibold","text-[var(--menu-muted)]","uppercase","tracking-wider"],{variants:{size:{sm:"px-2 py-1 text-[10px]",default:"px-2 py-1 text-xs",lg:"px-2 py-1.5 text-xs"}},defaultVariants:{size:"default"}}),Dr=cva(["flex","items-center","gap-1.5","text-sm","font-medium","text-[var(--destructive-background)]","mt-1"],{variants:{size:{sm:"text-xs mt-1",default:"text-sm mt-1",lg:"text-base mt-1"}},defaultVariants:{size:"default"}});var Qo=Array.from({length:3}).map((e,t)=>jsx("div",{className:"h-11 px-4 py-2",children:jsx("div",{className:"h-4 bg-[var(--accent-background)] rounded animate-pulse"})},`skeleton-${t}`));function Mr({ariaSelectProps:e,triggerContent:t,triggerRef:r,label:a,description:n,isRequired:s,isDisabled:d,isLoading:i,errorMessage:u,size:p,emptyStateMessage:f,childCount:l,children:o}){let c=useId(),b=useId(),g=useId(),y=!!u;return jsxs(Select,{...e,isInvalid:y,children:[jsxs(Label,{id:c,className:"text-sm font-medium text-[var(--content-foreground)]",children:[a,s&&jsx("span",{className:"text-[var(--destructive-background)] ml-1",children:"*"})]}),n&&jsx(Text,{id:b,slot:"description",className:"text-sm text-[var(--menu-muted)] mt-1",children:n}),jsx("div",{className:K,children:jsxs(Button,{ref:r,className:wr({size:p,isInvalid:y}),"aria-labelledby":c,"aria-describedby":n?b:u?g:void 0,"data-loading":i,...s&&{"aria-required":"true"},...i&&{"aria-busy":"true"},...(d||i)&&{"aria-disabled":"true"},children:[t,i?jsx(Loader2,{className:"ml-auto h-4 w-4 shrink-0 animate-spin text-[var(--menu-muted)]","aria-hidden":"true"}):jsx(ChevronDown,{className:"ml-auto h-4 w-4 shrink-0 text-[var(--menu-muted)]","aria-hidden":"true"})]})}),jsx(FieldError,{id:g,className:Dr({size:p}),children:({validationErrors:h})=>{let C=u||h.join(" ");return C?jsx(Fragment,{children:C}):null}}),jsx(Popover,{className:Lr({size:p}),children:jsxs(ListBox,{className:"outline-none",children:[i&&l>0&&Qo,!i&&jsxs(Fragment,{children:[o,l===0&&jsx(ListBoxItem,{id:"__empty__",textValue:"empty",isDisabled:true,className:"py-6 text-center text-sm text-[var(--menu-muted)] cursor-default pointer-events-none",children:jsx("span",{role:"status",children:f||"No options available"})})]})]})})]})}var Hr=forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,isOpen:s,isDisabled:d=false,isRequired:i=false,disabledKeys:u,validate:p,validationBehavior:f="aria",errorMessage:l,isLoading:o=false,emptyStateMessage:c,name:b,size:g="default",onChange:y,onOpenChange:h,className:C,children:E,...v},V)=>{let w=Children.count(E);return w>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance."),jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:T=>{y&&y(T);},placeholder:t,disabledKeys:u,isOpen:s,onOpenChange:h,isDisabled:d||o,isRequired:i,name:b,validate:p,validationBehavior:f,className:C,...v},triggerContent:jsx(SelectValue,{className:"flex-1 text-left truncate"}),triggerRef:V,label:e,description:r,isRequired:i,isDisabled:d,isLoading:o,errorMessage:l,size:g,emptyStateMessage:c,childCount:w,children:E})});Hr.displayName="Select";var zr=forwardRef(({label:e,placeholder:t,description:r,value:a,defaultValue:n,selectionMode:s="multiple",isOpen:d,isDisabled:i=false,isRequired:u=false,disabledKeys:p,validate:f,validationBehavior:l="aria",errorMessage:o,isLoading:c=false,emptyStateMessage:b,name:g,size:y="default",onChange:h,onOpenChange:C,className:E,children:v,...V},w)=>{let T=Children.count(v);T>1e3&&console.warn("Select has >1000 items. Consider using Autocomplete component for better performance.");let I=useMemo(()=>{let k=new Map,F=D=>{Children.forEach(D,x=>{if(isValidElement(x)){let R=x;if(R.type===Me||R.props?.value){let N=R.props.value,G=R.props.children;N&&typeof G=="string"&&k.set(N,G);}R.props?.children&&F(R.props.children);}});};return F(v),k},[v]),M=useMemo(()=>!a||!Array.isArray(a)||a.length===0?t||"":a.length<=2?a.map(F=>I.get(F)||F).join(", "):`${a.length} items selected`,[a,I,t]);return jsx(Mr,{ariaSelectProps:{value:a,defaultValue:n,onChange:k=>{h&&h(k);},selectionMode:"multiple",disabledKeys:p,isOpen:d,onOpenChange:C,isDisabled:i||c,isRequired:u,name:g,validate:f,validationBehavior:l,className:E,...V},triggerContent:jsx("span",{className:"flex-1 text-left truncate",children:M}),triggerRef:w,label:e,description:r,isRequired:u,isDisabled:i,isLoading:c,errorMessage:o,size:y,emptyStateMessage:b,childCount:T,children:v})});zr.displayName="MultiSelect";var Me=memo(function({children:t,textValue:r,value:a,isDisabled:n=false,className:s,...d}){if(!r&&typeof t!="string"){let i="Select.Item with custom children requires textValue prop for accessibility";if(process.env.NODE_ENV==="development")throw new Error(i);console.warn(i);}return jsx(ListBoxItem,{id:a,textValue:r||(typeof t=="string"?t:void 0),className:`${kr({size:"default"})} ${s||""}`,isDisabled:n,...d,children:({isSelected:i,selectionMode:u,isDisabled:p})=>jsxs(Fragment,{children:[u==="multiple"?jsx(CheckSquare,{className:`absolute left-2 h-4 w-4 ${i?"visible":"invisible"}`,"aria-hidden":"true"}):i&&jsx(Check,{className:"absolute left-2 h-4 w-4","aria-hidden":"true"}),jsx("span",{className:p?"text-[var(--menu-muted)]":"",children:t})]})})});Me.displayName="SelectItem";function mt({children:e,className:t,...r}){return jsx(ListBoxSection,{className:`border-t border-[var(--border)] first:border-t-0 ${t||""}`,...r,children:e})}mt.displayName="SelectSection";function bt({children:e,className:t,...r}){return jsx(Header,{className:`${_r({size:"default"})} ${t||""}`,...r,children:e})}bt.displayName="SelectHeader";var Ce=Object.assign(Hr,{Item:Me,Section:mt,Header:bt});Object.assign(zr,{Item:Me,Section:mt,Header:bt});var $r=cva(["relative inline-flex items-center justify-center","min-h-[44px] min-w-[44px]","focus-visible:outline-none","focus-visible:ring-2","focus-visible:ring-[var(--ring)]","focus-visible:ring-offset-2","focus-visible:ring-offset-[var(--page-background)]","disabled:pointer-events-none","disabled:opacity-50"],{variants:{},defaultVariants:{}}),jr=cva(["inline-flex items-center justify-center","gap-1","rounded-full","font-medium","whitespace-nowrap","transition-colors"],{variants:{variant:{primary:["bg-[var(--primary-action)]","text-[var(--primary-action-foreground)]","hover:bg-[var(--primary-action)]/90","data-[pressed]:bg-[var(--primary-action)]/80"],accent:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"],destructive:["bg-[var(--destructive-background)]","text-[var(--destructive-foreground)]","hover:bg-[var(--destructive-background)]/90","data-[pressed]:bg-[var(--destructive-background)]/80"],content:["bg-[var(--accent-background)]","text-[var(--accent-foreground)]","hover:bg-[var(--accent-background)]/90","data-[pressed]:bg-[var(--accent-background)]/80"]},size:{sm:"h-5 px-2 text-xs",default:"h-6 px-2.5 text-xs",lg:"h-7 px-3 text-sm"}},defaultVariants:{variant:"primary",size:"default"}});var an={sm:"[&_svg]:h-2.5 [&_svg]:w-2.5",default:"[&_svg]:h-3 [&_svg]:w-3",lg:"[&_svg]:h-3.5 [&_svg]:w-3.5"},ce=memo(forwardRef(({className:e,variant:t="primary",size:r="default",children:a,icon:n,iconPosition:s="start",count:d,onPress:i,isDisabled:u,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b},g)=>{let y=m(jr({variant:t,size:r}),an[r],e),v=[!!n,d!==void 0,!!a].filter(Boolean).length>1,V=()=>jsxs(Fragment,{children:[n&&s==="start"&&jsx("span",{className:"shrink-0","aria-hidden":"true",children:n}),a&&(v?jsx("span",{children:a}):a),d!==void 0&&jsx("span",{className:"font-mono tabular-nums",children:d}),n&&s==="end"&&jsx("span",{className:"shrink-0","aria-hidden":"true",children:n})]});return i?jsx(Button,{ref:g,isDisabled:u,onPress:i,className:$r(),id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:w=>jsx("span",{className:m(y,me,"",re,ae),"data-pressed":w.isPressed||void 0,children:V()})}):jsx("span",{ref:g,className:y,id:p,"aria-label":f,"aria-labelledby":l,"aria-describedby":o,"data-testid":c,...b,children:V()})}));ce.displayName="Badge";var xt=cva(["flex flex-wrap items-center gap-2"]),Ee=cva(["inline-flex items-center gap-2"]),gt=cva(["min-w-[14rem] max-w-[20rem] rounded-md border border-[var(--border)]","bg-[var(--content-background)] p-2 shadow-md","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),vt=cva(["flex items-center justify-between gap-2 px-1 pb-2 mb-1","border-b border-[var(--border)]"]),ht=cva(["flex items-center gap-2"],{variants:{scrollable:{true:"flex-nowrap overflow-x-auto [scrollbar-width:none] [&::-webkit-scrollbar]:hidden [&>*]:flex-none",false:"flex-wrap"}},defaultVariants:{scrollable:false}}),Wr=cva(["fixed inset-0 z-[80] bg-[rgb(23_23_23_/_0.42)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:fade-in-0","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:fade-out-0"]),Yr=cva(["fixed inset-x-0 bottom-0 z-[81] flex max-h-[88vh] flex-col","rounded-t-3xl border-t border-[var(--border)] bg-[var(--content-background)]","motion-safe:data-[entering]:animate-in motion-safe:data-[entering]:slide-in-from-bottom","motion-safe:data-[exiting]:animate-out motion-safe:data-[exiting]:slide-out-to-bottom"]),qr=cva(["flex items-center justify-between gap-2 px-5 py-3 border-b border-[var(--border)] flex-none"]),Xr=cva(["flex flex-col gap-5 overflow-auto p-5 flex-1","[&>*]:w-full"]),Zr=cva(["flex items-center justify-between gap-3 px-5 pt-3 flex-none","pb-[calc(0.75rem+env(safe-area-inset-bottom))] border-t border-[var(--border)]"]),Kr=cva(["mx-auto mt-2.5 mb-0.5 h-1.5 w-10 flex-none rounded-full bg-[var(--border)]"]),sn=cva(["inline-flex items-center gap-1.5 min-h-[44px] px-3 rounded-full","border border-[var(--border)] bg-[var(--accent-background)]","text-sm text-[var(--content-foreground)]","hover:bg-[var(--accent)] motion-safe:transition-colors","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:ring-offset-2","cursor-pointer"]);function Ne({label:e,badge:t,isActive:r=false,children:a,doneLabel:n,align:s="start",className:d}){let i=t!=null&&t!=="";return jsxs(DialogTrigger,{children:[jsxs(_,{variant:r?"secondary":"outline",className:m(Ee(),d),children:[jsx("span",{children:e}),i&&jsx(ce,{size:"sm",children:String(t)}),jsx(ChevronDown,{"aria-hidden":"true",className:"h-4 w-4 opacity-60"})]}),jsx(Popover,{isNonModal:true,placement:s==="end"?"bottom end":"bottom start",className:gt(),children:jsx(Dialog,{"aria-label":e,className:"outline-none",children:({close:u})=>jsxs(Fragment,{children:[n&&jsxs("div",{className:vt(),children:[jsx("span",{className:"text-xs font-bold uppercase tracking-wide text-[var(--menu-muted)]",children:e}),jsx(_,{variant:"link",onPress:u,children:n})]}),typeof a=="function"?a(u):a]})})})]})}function xn(e,t){typeof e=="function"?e(t):e&&(e.current=t);}var Ue=forwardRef(({chips:e,onRemove:t,onClearAll:r,clearAllLabel:a,removeChipLabel:n,scrollable:s=false,"aria-label":d="Active filters",className:i,"data-testid":u="applied-filters"},p)=>{let f=useRef(null);if(e.length===0)return null;let l='button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])',o=(c,b)=>{let g=f.current;if(e.length<=1&&g){let h=g.previousElementSibling;((h?.matches(l)?h:h?.querySelector(l))??g).focus(),t(c);return}t(c),requestAnimationFrame(()=>{let h=f.current;if(!h)return;let C=h.querySelectorAll("[data-chip]");C.length>0?C[Math.min(b,C.length-1)]?.focus():h.focus();});};return jsxs("div",{ref:c=>{f.current=c,xn(p,c);},role:"region","aria-label":d,tabIndex:-1,className:m(ht({scrollable:s}),"outline-none",i),"data-testid":u,children:[e.map((c,b)=>jsxs(_,{variant:"outline","data-chip":true,"aria-label":n(`${c.group?`${c.group} `:""}${c.label}`),onPress:()=>o(c,b),children:[c.group&&jsx("span",{className:"text-xs font-bold uppercase tracking-wide opacity-60",children:c.group}),jsx("span",{className:"font-semibold",children:c.label}),jsx(X,{"aria-hidden":"true",className:"h-3.5 w-3.5 opacity-60"})]},c.id)),e.length>1&&jsx(_,{variant:"link",onPress:()=>{r(),requestAnimationFrame(()=>f.current?.focus());},children:a})]})});Ue.displayName="AppliedFilters";var $e=createContext(null);function W(e){let t=useContext($e);if(!t)throw new Error(`<${e}> must be rendered inside <Filters>.`);return t}var ea=forwardRef(({values:e,onChange:t,labels:r,narrow:a=false,children:n,"aria-label":s="Filters",className:d,"data-testid":i="filters"},u)=>{let p=useRef(new Map),[f,l]=useState(0),o=useRef(e);o.current=e;let c=useCallback((x,R)=>{t({...o.current,[x]:R});},[t]),b=useCallback(x=>t(x),[t]),g=useCallback((x,R)=>{R?p.current.set(x,R):p.current.delete(x),l(N=>N+1);},[]),y=useMemo(()=>({values:e,narrow:a,setValue:c,replaceValues:b,labels:r,registry:p,registryVersion:f,syncControl:g}),[e,a,c,b,r,f,g]),h=useMemo(()=>{let x=0;for(let[R,N]of p.current)N.isActive(e[R])&&(x+=1);return x},[e,f]),C=()=>{let x={...o.current};for(let[R,N]of p.current)x[R]=N.clearedValue;b(x);},[E,v]=useState(false),V=useRef(null),w=useRef(null),T=useRef(null),I=useCallback(()=>{v(false),requestAnimationFrame(()=>V.current?.focus());},[]);useEffect(()=>{if(!E)return;w.current?.querySelector('button,a[href],input,select,textarea,[tabindex]:not([tabindex="-1"])')?.focus();},[E]),useEffect(()=>{if(!E)return;let x=N=>{let G=N.target;T.current&&T.current.contains(G)&&I();},R=N=>{N.key==="Escape"&&(N.preventDefault(),I());};return document.addEventListener("pointerdown",x,true),document.addEventListener("keydown",R),()=>{document.removeEventListener("pointerdown",x,true),document.removeEventListener("keydown",R);}},[E,I]);let M=Children.toArray(n),k=x=>isValidElement(x)&&x.type===ta,F=M.filter(k),D=M.filter(x=>!k(x));return a?jsx($e.Provider,{value:y,children:jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsx("div",{children:jsxs(_,{ref:V,variant:"outline",className:Ee(),"aria-haspopup":"dialog","aria-expanded":E,onPress:()=>v(true),children:[jsx(SlidersHorizontal,{"aria-hidden":"true",className:"h-4 w-4"}),jsx("span",{children:r.filtersButton??s}),h>0&&jsx(ce,{size:"sm",children:String(h)})]})}),E&&jsx("div",{ref:T,className:Wr(),"aria-hidden":"true"}),jsx(FocusScope,{contain:E,restoreFocus:true,children:jsxs("div",{ref:w,role:"dialog","aria-modal":E||void 0,"aria-label":s,className:E?Yr():"hidden",children:[jsx("span",{className:Kr(),"aria-hidden":"true"}),jsxs("div",{className:qr(),children:[jsx("span",{className:"text-lg font-semibold",children:r.filtersButton??s}),jsx(_,{variant:"ghost",visualSize:"icon","aria-label":r.close??"Close",onPress:I,children:jsx(X,{"aria-hidden":"true"})})]}),jsx("div",{className:Xr(),children:D}),jsxs("div",{className:Zr(),children:[jsx(_,{variant:"link",onPress:C,children:r.clearAll??r.clear}),jsx(_,{variant:"default",onPress:I,children:r.done})]})]})}),F]})}):jsx($e.Provider,{value:y,children:jsxs("div",{ref:u,role:"region","aria-label":s,className:m("flex flex-col gap-3",d),"data-testid":i,children:[jsx("div",{className:xt(),children:D}),F]})})});ea.displayName="Filters";function pe(e,t){let{syncControl:r}=W("Filter control");useEffect(()=>(r(e,t),()=>r(e,null)),[e,t,r]);}function Ct(e){return e.map(t=>`${t.value}\0${t.label}`).join("")}function Et(e,t){return e.find(r=>r.value===t)?.label??t}function Vn({name:e,label:t,placeholder:r,chipGroup:a,className:n}){let{values:s,setValue:d}=W("FilterSearch"),i=typeof s[e]=="string"?s[e]:"",u=useMemo(()=>({name:e,clearedValue:"",isActive:p=>typeof p=="string"&&p.trim()!=="",toChips:p=>typeof p=="string"&&p.trim()!==""?[{id:e,key:e,label:`\u201C${p}\u201D`,group:a??t}]:[]}),[e,t,a]);return pe(e,u),jsx(we,{"aria-label":t,placeholder:r,value:i,onChange:p=>d(e,p),onClear:()=>d(e,""),className:m("min-w-[14rem]",n)})}function Rn({name:e,label:t,className:r}){let{values:a,setValue:n}=W("FilterToggle"),s=a[e]===true,d=useMemo(()=>({name:e,clearedValue:false,isActive:i=>i===true,toChips:i=>i===true?[{id:e,key:e,label:t}]:[]}),[e,t]);return pe(e,d),jsx(Le,{label:t,isSelected:s,onChange:i=>n(e,!!i),className:r})}var St="__all__";function Tn({name:e,label:t,options:r,allLabel:a,className:n}){let{values:s,setValue:d,narrow:i}=W("FilterSelect"),u=typeof s[e]=="string"?s[e]:"",p=Ct(r),f=useMemo(()=>({name:e,clearedValue:"",isActive:l=>typeof l=="string"&&l!=="",toChips:l=>typeof l=="string"&&l!==""?[{id:e,key:e,label:Et(r,l),group:t}]:[]}),[e,t,p]);return pe(e,f),i?jsxs(Ce,{label:t,value:u===""?St:u,onChange:l=>{let o=Array.isArray(l)?l[0]:l;d(e,!o||o===St?"":o);},className:n,children:[jsx(Ce.Item,{value:St,children:a??"All"}),r.map(l=>jsx(Ce.Item,{value:l.value,children:l.label},l.value))]}):jsx(Ne,{label:t,isActive:u!=="",className:n,children:l=>jsxs(ve,{"aria-label":t,value:u,onChange:o=>{d(e,o),l();},children:[jsx(le,{value:"",children:a??"All"}),r.map(o=>jsx(le,{value:o.value,children:o.label},o.value))]})})}function In({name:e,label:t,presets:r,className:a}){let{values:n,setValue:s,narrow:d}=W("FilterWithin"),i=r[0]?.value??"",u=typeof n[e]=="string"?n[e]:i,p=Ct(r),f=useMemo(()=>({name:e,clearedValue:i,isActive:o=>typeof o=="string"&&o!==i,toChips:o=>typeof o=="string"&&o!==i?[{id:e,key:e,label:Et(r,o),group:t}]:[]}),[e,t,i,p]);pe(e,f);let l=o=>jsx(ve,{label:d?t:void 0,"aria-label":d?void 0:t,value:u,onChange:c=>{s(e,c),o?.();},className:d?a:void 0,children:r.map(c=>jsx(le,{value:c.value,children:c.label},c.value))});return d?l():jsx(Ne,{label:t,isActive:u!==i,className:a,children:o=>l(o)})}function Fn({name:e,label:t,options:r,className:a}){let{values:n,setValue:s,labels:d,narrow:i}=W("FilterMulti"),u=Array.isArray(n[e])?n[e]:[],p=Ct(r),f=useMemo(()=>({name:e,clearedValue:[],isActive:o=>Array.isArray(o)&&o.length>0,toChips:o=>Array.isArray(o)?o.map(c=>({id:`${e}:${c}`,key:e,optionValue:c,label:Et(r,c),group:t})):[]}),[e,t,p]);pe(e,f);let l=jsx(Oe,{label:i?t:void 0,"aria-label":i?void 0:t,value:u,onChange:o=>s(e,o),className:i?a:void 0,children:r.map(o=>jsx(Be,{value:o.value,children:o.label},o.value))});return i?l:jsxs(Ne,{label:t,badge:u.length||null,isActive:u.length>0,doneLabel:d.done,className:a,children:[l,u.length>0&&jsx("div",{className:"pt-1",children:jsx(_,{variant:"link",onPress:()=>s(e,[]),children:d.clear})})]})}function Pn({name:e,label:t,options:r,onSearch:a,isLoading:n,placeholder:s,className:d}){let{values:i,setValue:u}=W("FilterCombobox"),p=typeof i[e]=="string"?i[e]:"",f=useRef(new Map);for(let o of r)f.current.set(o.value,o.label);let l=useMemo(()=>({name:e,clearedValue:"",isActive:o=>typeof o=="string"&&o!=="",toChips:o=>typeof o=="string"&&o!==""?[{id:e,key:e,label:f.current.get(o)??o,group:t}]:[]}),[e,t]);return pe(e,l),jsx(Ge,{"aria-label":t,placeholder:s,selectedKey:p||null,onSelectionChange:o=>u(e,o==null?"":String(o)),onInputChange:a,className:m("min-w-[14rem]",d),children:r.length===0&&n?jsx(Se,{id:"__loading",isDisabled:true,children:"Loading\u2026"}):r.map(o=>jsx(Se,{id:o.value,children:o.label},o.value))})}function ta({clearAllLabel:e,removeChipLabel:t,"aria-label":r,className:a,"data-testid":n}){let{values:s,setValue:d,replaceValues:i,registry:u,narrow:p}=W("FilterChips"),f=[];for(let[c,b]of u.current)f.push(...b.toChips(s[c]));return jsx(Ue,{chips:f,onRemove:c=>{if(c.optionValue!==void 0){let b=s[c.key],g=Array.isArray(b)?b:[];d(c.key,g.filter(y=>y!==c.optionValue));}else {let b=u.current.get(c.key);d(c.key,b?b.clearedValue:"");}},onClearAll:()=>{let c={...s};for(let[b,g]of u.current)c[b]=g.clearedValue;i(c);},clearAllLabel:e,removeChipLabel:t,scrollable:p,"aria-label":r,className:a,"data-testid":n})}var An=z.object({value:z.string(),label:z.string()});export{Ue as AppliedFilters,ta as FilterChips,Pn as FilterCombobox,Fn as FilterMulti,An as FilterOptionSchema,Ne as FilterPopover,Vn as FilterSearch,Tn as FilterSelect,Rn as FilterToggle,In as FilterWithin,ea as Filters,ht as appliedFiltersVariants,sn as filterChipVariants,Ee as filterPillVariants,vt as filterPopoverHeaderVariants,gt as filterPopoverVariants,xt as filtersBarVariants,W as useFiltersContext};//# sourceMappingURL=index.mjs.map
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|