@compa11y/react 0.1.3 → 0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as React$1 from 'react';
2
2
  import React__default, { ReactNode, InputHTMLAttributes, ButtonHTMLAttributes, TextareaHTMLAttributes } from 'react';
3
- import { FocusTrapOptions, AnnouncerOptions, KeyboardHandlers } from '@compa11y/core';
3
+ import { FocusTrapOptions, AnnouncerOptions, KeyboardHandlers, FocusNeighborOptions, FocusReturnOptions } from '@compa11y/core';
4
4
  export { announce, announceAssertive, announceError, announcePolite, announceProgress, announceStatus, aria, buildAriaProps, checks, createComponentWarnings, hasAccessibleName, isAndroid, isBrowser, isIOS, isMac, mergeAriaIds, prefersDarkMode, prefersHighContrast, prefersReducedMotion, setWarningHandler, warn } from '@compa11y/core';
5
5
  export { DialogCompound as Dialog, DialogActions, DialogActionsProps, Dialog as DialogBase, DialogClose, DialogCloseProps, DialogContent, DialogContentProps, DialogContextValue, DialogDescription, DialogDescriptionProps, DialogProps, DialogTitle, DialogTitleProps, DialogTrigger, DialogTriggerProps, useDialogContext } from './components/dialog/index.js';
6
6
  export { ActionMenuCompound as ActionMenu, ActionMenu as ActionMenuBase, ActionMenuContent, ActionMenuContentProps, ActionMenuContextValue, ActionMenuItem, ActionMenuItemProps, ActionMenuLabel, ActionMenuLabelProps, ActionMenuProps, ActionMenuSeparator, ActionMenuSeparatorProps, ActionMenuTrigger, ActionMenuTriggerProps, useActionMenuContext } from './components/menu/index.js';
@@ -358,6 +358,28 @@ declare function useRovingTabindexMap<T extends string>(ids: T[], options?: Omit
358
358
  previous: () => void;
359
359
  };
360
360
 
361
+ /**
362
+ * Hook that provides a ref and methods to find/focus the nearest
363
+ * focusable neighbor of the referenced element.
364
+ *
365
+ * Useful when the element is about to be removed or disabled.
366
+ */
367
+ declare function useFocusNeighbor<T extends HTMLElement = HTMLElement>(options?: FocusNeighborOptions): {
368
+ ref: React$1.RefObject<T>;
369
+ getNeighbor: () => HTMLElement | null;
370
+ focusNeighbor: () => void;
371
+ };
372
+ /**
373
+ * Hook that remembers an element and can restore focus to it later.
374
+ * If the saved element is no longer focusable (disabled, removed),
375
+ * focus moves to its nearest neighbor instead.
376
+ */
377
+ declare function useFocusReturn(): {
378
+ save: (element?: HTMLElement) => void;
379
+ returnFocus: (options?: FocusReturnOptions) => void;
380
+ clear: () => void;
381
+ };
382
+
361
383
  interface SelectOption {
362
384
  value: string;
363
385
  label: string;
@@ -960,6 +982,8 @@ interface InputContextValue {
960
982
  value: string;
961
983
  setValue: (value: string) => void;
962
984
  hasError: boolean;
985
+ hasHint: boolean;
986
+ setHasHint: (hasHint: boolean) => void;
963
987
  disabled: boolean;
964
988
  readOnly: boolean;
965
989
  required: boolean;
@@ -1111,6 +1135,8 @@ interface TextareaContextValue {
1111
1135
  value: string;
1112
1136
  setValue: (value: string) => void;
1113
1137
  hasError: boolean;
1138
+ hasHint: boolean;
1139
+ setHasHint: (value: boolean) => void;
1114
1140
  disabled: boolean;
1115
1141
  readOnly: boolean;
1116
1142
  required: boolean;
@@ -1156,4 +1182,4 @@ declare const TextareaCompound: React$1.ForwardRefExoticComponent<TextareaProps
1156
1182
  Error: React$1.ForwardRefExoticComponent<TextareaErrorProps & React$1.RefAttributes<HTMLDivElement>>;
1157
1183
  };
1158
1184
 
1159
- export { Button, type ButtonProps, CheckboxCompound as Checkbox, Checkbox as CheckboxBase, CheckboxGroup, type CheckboxGroupContextValue, type CheckboxGroupProps, CheckboxIndicator, type CheckboxIndicatorProps, type CheckboxProps, InputCompound as Input, Input as InputBase, type InputContextValue, InputError, type InputErrorProps, InputField, type InputFieldProps, InputHint, type InputHintProps, InputLabel, type InputLabelProps, type InputProps, ListboxCompound as Listbox, Listbox as ListboxBase, type ListboxContextValue, ListboxGroup, type ListboxGroupProps, ListboxOption, type ListboxOptionProps, type ListboxProps, Radio, RadioGroupCompound as RadioGroup, RadioGroup as RadioGroupBase, type RadioGroupContextValue, type RadioGroupProps, type RadioProps, type RovingTabindexItem, SelectCompound as Select, Select as SelectBase, SelectListbox, type SelectListboxProps, SelectOptionItem, type SelectOptionProps, type SelectOption as SelectOptionType, type SelectProps, SelectTrigger, type SelectTriggerProps, Switch, type SwitchProps, TextareaCompound as Textarea, Textarea as TextareaBase, type TextareaContextValue, TextareaError, type TextareaErrorProps, TextareaField, type TextareaFieldProps, TextareaHint, type TextareaHintProps, TextareaLabel, type TextareaLabelProps, type TextareaProps, type UseFocusTrapOptions, type UseRovingTabindexOptions, useAnnounceLoading, useAnnounceOnChange, useAnnouncer, useCheckboxGroupContext, useFocusControl, useFocusManager, useFocusTrap, useFocusTrapControls, useFocusVisible, useFocusWithin, useGridKeyboard, useId, useIdScope, useIds, useInputContext, useKeyPressed, useKeyboard, useListboxContext, useMenuKeyboard, useRadioGroupContext, useRovingTabindex, useRovingTabindexMap, useTabsKeyboard, useTextareaContext, useTypeAhead };
1185
+ export { Button, type ButtonProps, CheckboxCompound as Checkbox, Checkbox as CheckboxBase, CheckboxGroup, type CheckboxGroupContextValue, type CheckboxGroupProps, CheckboxIndicator, type CheckboxIndicatorProps, type CheckboxProps, InputCompound as Input, Input as InputBase, type InputContextValue, InputError, type InputErrorProps, InputField, type InputFieldProps, InputHint, type InputHintProps, InputLabel, type InputLabelProps, type InputProps, ListboxCompound as Listbox, Listbox as ListboxBase, type ListboxContextValue, ListboxGroup, type ListboxGroupProps, ListboxOption, type ListboxOptionProps, type ListboxProps, Radio, RadioGroupCompound as RadioGroup, RadioGroup as RadioGroupBase, type RadioGroupContextValue, type RadioGroupProps, type RadioProps, type RovingTabindexItem, SelectCompound as Select, Select as SelectBase, SelectListbox, type SelectListboxProps, SelectOptionItem, type SelectOptionProps, type SelectOption as SelectOptionType, type SelectProps, SelectTrigger, type SelectTriggerProps, Switch, type SwitchProps, TextareaCompound as Textarea, Textarea as TextareaBase, type TextareaContextValue, TextareaError, type TextareaErrorProps, TextareaField, type TextareaFieldProps, TextareaHint, type TextareaHintProps, TextareaLabel, type TextareaLabelProps, type TextareaProps, type UseFocusTrapOptions, type UseRovingTabindexOptions, useAnnounceLoading, useAnnounceOnChange, useAnnouncer, useCheckboxGroupContext, useFocusControl, useFocusManager, useFocusNeighbor, useFocusReturn, useFocusTrap, useFocusTrapControls, useFocusVisible, useFocusWithin, useGridKeyboard, useId, useIdScope, useIds, useInputContext, useKeyPressed, useKeyboard, useListboxContext, useMenuKeyboard, useRadioGroupContext, useRovingTabindex, useRovingTabindexMap, useTabsKeyboard, useTextareaContext, useTypeAhead };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export{k as Dialog,j as DialogActions,d as DialogBase,h as DialogClose,i as DialogContent,g as DialogDescription,f as DialogTitle,e as DialogTrigger,c as useDialogContext,a as useFocusTrap,b as useFocusTrapControls}from'./chunk-ZB3SYGHE.js';export{i as ActionMenu,c as ActionMenuBase,e as ActionMenuContent,f as ActionMenuItem,h as ActionMenuLabel,g as ActionMenuSeparator,d as ActionMenuTrigger,a as useActionMenuContext}from'./chunk-GITBIGD4.js';export{d as Tab,c as TabList,e as TabPanel,f as Tabs,b as TabsBase,a as useTabsContext}from'./chunk-SB6ASQ36.js';export{b as ToastProvider,c as ToastViewport,a as useToast,d as useToastHelpers}from'./chunk-XEJXACWE.js';export{e as Combobox,a as ComboboxBase,b as ComboboxInput,c as ComboboxListbox,d as ComboboxOption}from'./chunk-HEA4NAOM.js';import {a}from'./chunk-MD4AVTLT.js';export{c as useAnnounceLoading,b as useAnnounceOnChange,a as useAnnouncer}from'./chunk-MD4AVTLT.js';import {e,a as a$1}from'./chunk-VMM4K2K4.js';export{d as useGridKeyboard,f as useKeyPressed,a as useKeyboard,b as useMenuKeyboard,c as useTabsKeyboard,e as useTypeAhead}from'./chunk-VMM4K2K4.js';import {a as a$2}from'./chunk-IZ7LLPPV.js';export{a as useId,c as useIdScope,b as useIds}from'./chunk-IZ7LLPPV.js';import {createContext,forwardRef,useCallback,useRef,useState,useEffect,useLayoutEffect,useMemo,useContext,Children}from'react';import {createComponentWarnings,initFocusVisible,isFocusVisible,focusWithVisibleRing}from'@compa11y/core';export{announce,announceAssertive,announceError,announcePolite,announceProgress,announceStatus,aria,buildAriaProps,checks,createComponentWarnings,hasAccessibleName,isAndroid,isBrowser,isIOS,isMac,mergeAriaIds,prefersDarkMode,prefersHighContrast,prefersReducedMotion,setWarningHandler,warn}from'@compa11y/core';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function te(){let[x,t]=useState(false);useEffect(()=>initFocusVisible(),[]);let c=useCallback(()=>{t(isFocusVisible());},[]),r=useCallback(()=>{t(false);},[]);return {isFocusVisible:x,focusProps:{onFocus:c,onBlur:r}}}function Ot(x={}){let{autoFocus:t=false,restoreFocus:c=false,focusVisible:r=true}=x,e=useCallback(n=>{n&&t&&requestAnimationFrame(()=>{r?focusWithVisibleRing(n):n.focus();});},[t,r]);return useEffect(()=>{if(!c)return;let n=document.activeElement;return ()=>{n&&n.focus&&n.focus();}},[c]),e}function At(){let x=useCallback(c=>{},[]),t=useCallback(c=>{let r=x;r.current&&(c?.visible?focusWithVisibleRing(r.current):r.current.focus());},[]);return {ref:x,focus:t}}function Vt(){let[x,t]=useState(false),c=useCallback(n=>{},[]),r=useCallback(()=>{t(true);},[]),e=useCallback(n=>{let i=n.currentTarget,l=n.relatedTarget;(!l||!i.contains(l))&&t(false);},[]);return {ref:c,hasFocus:x,focusWithinProps:{onFocus:r,onBlur:e}}}function Qe(x){let{itemCount:t,initialIndex:c=0,wrap:r=true,orientation:e="both",onChange:n}=x,[i,l]=useState(c),o=useRef([]);useEffect(()=>{i>=t&&l(Math.max(0,t-1));},[t,i]);let a=useCallback(b=>{let f=b;f<0?f=r?t-1:0:f>=t&&(f=r?0:t-1),l(f),n?.(f),o.current[f]?.focus();},[t,r,n]),p=useCallback((b,f)=>{let m=false;switch(b.key){case "ArrowRight":(e==="horizontal"||e==="both")&&(a(f+1),m=true);break;case "ArrowLeft":(e==="horizontal"||e==="both")&&(a(f-1),m=true);break;case "ArrowDown":(e==="vertical"||e==="both")&&(a(f+1),m=true);break;case "ArrowUp":(e==="vertical"||e==="both")&&(a(f-1),m=true);break;case "Home":a(0),m=true;break;case "End":a(t-1),m=true;break}m&&(b.preventDefault(),b.stopPropagation());},[e,a,t]),s=useCallback(b=>({ref:f=>{o.current[b]=f;},tabIndex:b===i?0:-1,onKeyDown:f=>p(f,b),onFocus:()=>{b!==i&&(l(b),n?.(b));}}),[i,p,n]);return {activeIndex:i,setActiveIndex:a,getItemProps:s,first:()=>a(0),last:()=>a(t-1),next:()=>a(i+1),previous:()=>a(i-1)}}function Nt(x,t={}){let c=Qe({...t,itemCount:x.length}),r=useCallback(n=>{let i=x.indexOf(n);if(i===-1)throw new Error(`Unknown item ID: ${n}`);return c.getItemProps(i)},[x,c]),e=x[c.activeIndex];return {...c,activeId:e,getItemProps:r,setActiveId:n=>{let i=x.indexOf(n);i!==-1&&c.setActiveIndex(i);}}}var nn=createComponentWarnings("Select"),Gt=createContext(null);function nt(){let x=useContext(Gt);if(!x)throw new Error("Select compound components must be used within a Select component");return x}function Dt(x,t,c){let r=x.length,e=t+c;e<0&&(e=r-1),e>=r&&(e=0);let n=e;for(;x[e]?.disabled;)if(e+=c,e<0&&(e=r-1),e>=r&&(e=0),e===n)return -1;return e}function Bt(x){return x.findIndex(t=>!t.disabled)}function zt(x){for(let t=x.length-1;t>=0;t--)if(!x[t]?.disabled)return t;return -1}function at({options:x,value:t,defaultValue:c,onValueChange:r,disabled:e=false,placeholder:n="Select an option...","aria-label":i,"aria-labelledby":l,children:o}){let[a,p]=useState(c??null),[s,b]=useState(false),[f,m]=useState(-1),u=useRef(null),T=t!==void 0?t:a,C=a$2("select-trigger"),S=a$2("select-listbox"),R=a$2("select-option"),d=useCallback(P=>{t===void 0&&p(P),r?.(P);},[t,r]),y=useCallback(P=>`${R}-${P}`,[R]),w=useCallback(P=>{d(P.value),b(false),m(-1),u.current?.focus();},[d]);useEffect(()=>{!i&&!l&&nn.warning("Select has no accessible label.","Add aria-label or aria-labelledby prop.");},[i,l]);let E={selectedValue:T,setSelectedValue:d,isOpen:s,setIsOpen:b,highlightedIndex:f,setHighlightedIndex:m,options:x,triggerId:C,listboxId:S,getOptionId:y,onSelect:w,triggerRef:u,placeholder:n,disabled:e};return jsx(Gt.Provider,{value:E,children:jsx("div",{"data-compa11y-select":true,"data-disabled":e||void 0,children:o})})}var rt=forwardRef(function({onKeyDown:t,onClick:c,onBlur:r,...e$1},n){let{selectedValue:i,isOpen:l,setIsOpen:o,highlightedIndex:a$2,setHighlightedIndex:p,options:s,triggerId:b,listboxId:f,getOptionId:m,onSelect:u,triggerRef:T,placeholder:C,disabled:S}=nt(),{announce:R}=a(),d=e(s.map(h=>h.label),h=>{let F=s.findIndex(H=>H.label===h&&!H.disabled);F>=0&&(l||o(true),p(F));},{disabled:S}),y=useCallback((h=false)=>{o(true);let F=s.findIndex(H=>H.value===i);F>=0?p(F):p(h?zt(s):Bt(s));},[s,i,o,p]),w=a$1({ArrowDown:()=>{if(!l)y();else {let h=Dt(s,a$2,1);h>=0&&p(h);}},ArrowUp:()=>{if(!l)y(true);else {let h=Dt(s,a$2,-1);h>=0&&p(h);}},Enter:()=>{if(l&&a$2>=0){let h=s[a$2];h&&!h.disabled&&(u(h),R(`${h.label} selected`));}else l||y();}," ":()=>{if(l&&a$2>=0){let h=s[a$2];h&&!h.disabled&&(u(h),R(`${h.label} selected`));}else l||y();},Escape:()=>{l&&(o(false),p(-1));},Home:()=>{l&&p(Bt(s));},End:()=>{l&&p(zt(s));},Tab:()=>(l&&(o(false),p(-1)),false)},{preventDefault:true,stopPropagation:false}),E=h=>{t?.(h),h.defaultPrevented||w.onKeyDown(h),h.defaultPrevented||d.onKeyDown(h);},P=h=>{c?.(h),!h.defaultPrevented&&!S&&(l?(o(false),p(-1)):y());},O=h=>{r?.(h),setTimeout(()=>{o(false),p(-1);},150);},N=l&&a$2>=0?m(a$2):void 0,A=s.find(h=>h.value===i),$=A?.label??C,g=useCallback(h=>{T.current=h,typeof n=="function"?n(h):n&&(n.current=h);},[n,T]);return jsxs("button",{ref:g,id:b,type:"button",role:"combobox","aria-expanded":l,"aria-controls":f,"aria-haspopup":"listbox","aria-activedescendant":N,disabled:S,onKeyDown:E,onClick:P,onBlur:O,"data-compa11y-select-trigger":true,"data-placeholder":!A||void 0,...e$1,children:[jsx("span",{"data-compa11y-select-value":true,children:$}),jsx("span",{"aria-hidden":"true","data-compa11y-select-chevron":true,children:"\u25BC"})]})}),it=forwardRef(function({children:t,style:c,...r},e){let{isOpen:n,options:i,listboxId:l,triggerId:o}=nt(),{announce:a$1}=a(),p=useRef(null),[s,b]=useState("bottom");useEffect(()=>{n&&a$1(`${i.length} option${i.length===1?"":"s"} available`);},[n,i.length,a$1]),useLayoutEffect(()=>{if(n&&p.current){let C=p.current.getBoundingClientRect(),R=window.innerHeight-C.top,d=C.top,y=Math.min(C.height,200);R<y+50&&d>R?b("top"):b("bottom");}},[n]);let f=T=>{T.preventDefault();},m=useCallback(T=>{p.current=T,typeof e=="function"?e(T):e&&(e.current=T);},[e]);return n?jsx("ul",{ref:m,id:l,role:"listbox","aria-labelledby":o,style:{...c,...s==="top"?{bottom:"100%",top:"auto",marginBottom:"4px",marginTop:0}:{}},onMouseDown:f,"data-compa11y-select-listbox":true,"data-position":s,...r,children:t??i.map((T,C)=>jsx(ke,{option:T,index:C},T.value))}):null}),ke=forwardRef(function({option:t,index:c,onClick:r,onMouseEnter:e,...n},i){let{selectedValue:l,highlightedIndex:o,setHighlightedIndex:a$1,getOptionId:p,onSelect:s}=nt(),{announce:b}=a(),f=useRef(null),m=l===t.value,u=o===c,T=p(c);useEffect(()=>{u&&f.current&&f.current.scrollIntoView({block:"nearest",behavior:"smooth"});},[u]);let C=d=>{r?.(d),!d.defaultPrevented&&!t.disabled&&(s(t),b(`${t.label} selected`));},S=d=>{e?.(d),t.disabled||a$1(c);},R=useCallback(d=>{f.current=d,typeof i=="function"?i(d):i&&(i.current=d);},[i]);return jsxs("li",{ref:R,id:T,role:"option","aria-selected":m,"aria-disabled":t.disabled,"data-highlighted":u,"data-selected":m,"data-disabled":t.disabled,onClick:C,onMouseEnter:S,"data-compa11y-select-option":true,...n,children:[jsx("span",{"data-compa11y-select-option-text":true,children:t.label}),m&&jsx("span",{"aria-hidden":"true","data-compa11y-select-check":true,children:"\u2713"})]})}),$t=Object.assign(at,{Trigger:rt,Listbox:it,Option:ke});var Wt=createComponentWarnings("Checkbox"),cn=()=>jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",style:{display:"block"},children:jsx("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),un=()=>jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",style:{display:"block"},children:jsx("path",{d:"M3 6H9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}),Ut=createContext(null);function ct(){return useContext(Ut)}var we=forwardRef(function({value:t,defaultValue:c=[],onValueChange:r,disabled:e=false,legend:n,error:i,orientation:l="vertical",name:o,unstyled:a=false,className:p="",children:s,"aria-label":b,"aria-labelledby":f},m){let u=a$2("checkbox-group"),T=o||u,C=a$2("checkbox-group-error"),[S,R]=useState(c),d=t!==void 0,y=d?t:S;useEffect(()=>{!n&&!b&&!f&&Wt.warning("CheckboxGroup has no accessible label. Screen readers need this to identify the group.",'Add legend="...", aria-label="...", or aria-labelledby="..."');},[n,b,f]);let w=useCallback((g,h)=>{let F=d?t:S,H=h?[...F,g]:F.filter(D=>D!==g);d||R(H),r?.(H);},[d,t,S,r]),E={name:T,value:y,disabled:e,unstyled:a,onCheckboxChange:w},P=!!i,O={border:"none",margin:0,padding:0,minWidth:0},N=a?{padding:0,marginBottom:"0.5rem"}:{padding:0,marginBottom:"0.5rem",fontWeight:600},A={display:"flex",flexDirection:l==="horizontal"?"row":"column",flexWrap:l==="horizontal"?"wrap":void 0,gap:"var(--compa11y-checkbox-group-gap, 0.75rem)"},$=a?{marginTop:"0.25rem"}:{color:"var(--compa11y-checkbox-group-error-color, #ef4444)",fontSize:"0.8125rem",marginTop:"0.25rem"};return jsx(Ut.Provider,{value:E,children:jsxs("fieldset",{ref:m,className:p,"aria-label":b,"aria-labelledby":f,"aria-describedby":P?C:void 0,disabled:e,"data-compa11y-checkbox-group":"","data-orientation":l,"data-disabled":e?"true":void 0,style:O,children:[n&&jsx("legend",{"data-compa11y-checkbox-group-legend":"",style:N,children:n}),jsx("div",{style:A,children:s}),P&&jsx("div",{id:C,role:"alert","data-compa11y-checkbox-group-error":"",style:$,children:i})]})})});we.displayName="CheckboxGroup";var He=forwardRef(function({checked:t,defaultChecked:c=false,onCheckedChange:r,indeterminate:e=false,label:n,hint:i,error:l,disabled:o=false,value:a$1,required:p=false,unstyled:s,className:b="",size:f="md",name:m,"aria-label":u,"aria-labelledby":T,"aria-describedby":C,onClick:S,onFocus:R,onBlur:d,...y},w){let E=ct(),P=a$2("checkbox"),O=`${P}-input`,N=`${P}-label`,A=`${P}-hint`,$=`${P}-error`,{announce:g}=a(),{isFocusVisible:h,focusProps:F}=te(),H=E!==null,D=H&&E.disabled||o,z=s??(H?E.unstyled:false),I=H?E.name:m,[U,q]=useState(c),W=H?E.value.includes(a$1||""):t!==void 0?t:U,K=useRef(null),V=useCallback(ce=>{K.current=ce,typeof w=="function"?w(ce):w&&(w.current=ce);},[w]);useEffect(()=>{K.current&&(K.current.indeterminate=e);},[e]),useEffect(()=>{!n&&!u&&!T&&Wt.warning("Checkbox has no accessible label. Screen readers need this to identify the checkbox.",'Add label="...", aria-label="...", or aria-labelledby="..."');},[n,u,T]);let j=useCallback(ce=>{let Le=ce.target.checked;H?E.onCheckboxChange(a$1||"",Le):(t===void 0&&q(Le),r?.(Le)),g(`${typeof n=="string"?n:u||"Checkbox"} ${Le?"checked":"unchecked"}`);},[H,E,a$1,t,r,n,u,g]),X=useCallback(ce=>{F.onFocus(),R?.(ce);},[F,R]),J=useCallback(ce=>{F.onBlur(),d?.(ce);},[F,d]),_=!!n,ee=!!i,oe=!!l,ne=[];C&&ne.push(C),ee&&ne.push(A),oe&&ne.push($);let v=ne.length?ne.join(" "):void 0,M={sm:{box:16},md:{box:20},lg:{box:24}}[f],L={display:"inline-flex",alignItems:"flex-start",gap:"0.5rem",cursor:D?"not-allowed":"pointer",userSelect:"none",...D&&!z?{opacity:.5}:{}},G={position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},Re={position:"absolute",opacity:0,width:"100%",height:"100%",margin:0,cursor:"inherit",zIndex:1},xe=z?{}:{width:M.box,height:M.box,minWidth:24,minHeight:24,border:W||e?"var(--compa11y-checkbox-checked-border, 2px solid #0066cc)":"var(--compa11y-checkbox-border, 2px solid #666)",borderRadius:"var(--compa11y-checkbox-radius, 3px)",background:W||e?"var(--compa11y-checkbox-checked-bg, #0066cc)":"var(--compa11y-checkbox-bg, white)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s ease",pointerEvents:"none",color:"var(--compa11y-checkbox-check-color, white)",...h?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}},po={display:"flex",flexDirection:"column",gap:"0.125rem",paddingTop:"0.125rem"},bo=z?{cursor:"inherit"}:{cursor:"inherit",color:"var(--compa11y-checkbox-label-color, inherit)"},fo=z?{}:{color:"var(--compa11y-checkbox-hint-color, #666)",fontSize:"0.8125rem"},mo=z?{}:{color:"var(--compa11y-checkbox-error-color, #ef4444)",fontSize:"0.8125rem"};return jsxs("div",{className:b,"data-compa11y-checkbox":"","data-checked":W?"true":"false","data-indeterminate":e?"true":void 0,"data-disabled":D?"true":void 0,"data-size":f,style:L,children:[jsxs("div",{style:G,children:[jsx("input",{ref:V,type:"checkbox",id:O,name:I,value:a$1,checked:W,onChange:j,onClick:S,onFocus:X,onBlur:J,disabled:D,required:p,"aria-required":p||void 0,"aria-invalid":oe||void 0,"aria-label":!_&&!T?u:void 0,"aria-labelledby":T||(_?N:void 0),"aria-describedby":v,"aria-checked":e?"mixed":W,tabIndex:D?-1:0,style:Re,...y}),!z&&jsxs("div",{"data-compa11y-checkbox-indicator":"","aria-hidden":"true",style:xe,children:[W&&!e&&jsx(cn,{}),e&&jsx(un,{})]})]}),(_||ee||oe)&&jsxs("div",{style:po,children:[_&&jsxs("label",{htmlFor:O,id:N,"data-compa11y-checkbox-label":"",style:bo,children:[n,p&&jsx("span",{"aria-hidden":"true",style:{color:"var(--compa11y-checkbox-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),ee&&jsx("div",{id:A,"data-compa11y-checkbox-hint":"",style:fo,children:i}),oe&&jsx("div",{id:$,role:"alert","data-compa11y-checkbox-error":"",style:mo,children:l})]})]})});He.displayName="Checkbox";var Fe=forwardRef(function({children:t,className:c},r){return jsx("div",{ref:r,className:c,"data-compa11y-checkbox-indicator":"","aria-hidden":"true",children:t})});Fe.displayName="CheckboxIndicator";var qt=Object.assign(He,{Group:we,Indicator:Fe});var mn=createComponentWarnings("RadioGroup"),pt=createContext(null);function bt(){let x=useContext(pt);if(!x)throw new Error("[Compa11y RadioGroup]: Radio must be used within a RadioGroup.");return x}var Oe=forwardRef(function({value:t,defaultValue:c,onValueChange:r,disabled:e=false,discoverable:n=true,required:i=false,orientation:l="vertical",name:o,legend:a,hint:p,error:s,unstyled:b=false,className:f="",children:m,"aria-label":u,"aria-labelledby":T},C){let S=a$2("radiogroup"),R=o||S,d=a$2("radiogroup-hint"),y=a$2("radiogroup-error"),[w,E]=useState(c??null),P=t!==void 0,O=P?t:w,N=useRef(new Map);useEffect(()=>{!a&&!u&&!T&&mn.warning("RadioGroup has no accessible label. Screen readers need this to identify the group.",'Add legend="...", aria-label="...", or aria-labelledby="..."');},[a,u,T]);let A=useCallback(V=>{e||(P||E(V),r?.(V));},[e,P,r]),$=useCallback((V,j)=>{N.current.set(V,j);},[]),g=useCallback(V=>{N.current.delete(V);},[]),h=useCallback((V,j)=>{N.current.set(V,j);},[]),F=useCallback(()=>{let V=[];return N.current.forEach((j,X)=>{!j&&!e&&V.push(X);}),V},[e]),H=useRef(null),D=C||H,z=useCallback(V=>{let j=F();if(j.length===0)return;let X=O?j.indexOf(O):-1,J;switch(V){case "next":J=X<0?0:(X+1)%j.length;break;case "prev":J=X<0?j.length-1:(X-1+j.length)%j.length;break;case "first":J=0;break;case "last":J=j.length-1;break}let _=j[J];if(_!==void 0){A(_);let ee=typeof D=="object"&&D?D.current:null;ee&&ee.querySelector(`input[type="radio"][value="${CSS.escape(_)}"]`)?.focus();}},[F,O,A,D]),I=a$1({ArrowDown:()=>z("next"),ArrowRight:()=>z("next"),ArrowUp:()=>z("prev"),ArrowLeft:()=>z("prev"),Home:()=>z("first"),End:()=>z("last")},{preventDefault:true,stopPropagation:true,disabled:e}),U={name:R,value:O??null,disabled:e,discoverable:n,required:i,unstyled:b,orientation:l,onValueChange:A,registerRadio:$,unregisterRadio:g,updateRadioDisabled:h},q=[];p&&q.push(d),s&&q.push(y);let W=q.length>0?q.join(" "):void 0,K=jsxs(Fragment,{children:[jsx("div",{style:b?{display:"flex",flexDirection:l==="horizontal"?"row":"column"}:{display:"flex",flexDirection:l==="horizontal"?"row":"column",gap:"var(--compa11y-radio-gap, 0.75rem)"},children:m}),p&&jsx("div",{id:d,style:b?{}:{color:"var(--compa11y-radio-group-hint-color, #666)",fontSize:"0.8125rem",marginTop:"0.25rem"},children:p}),s&&jsx("div",{id:y,role:"alert",style:b?{}:{color:"var(--compa11y-radio-group-error-color, #ef4444)",fontSize:"0.8125rem",marginTop:"0.25rem"},children:s})]});return a?jsx(pt.Provider,{value:U,children:jsxs("fieldset",{ref:D,role:"radiogroup","aria-label":u,"aria-labelledby":T,"aria-orientation":l,"aria-required":i||void 0,"aria-disabled":e||void 0,"aria-invalid":s?true:void 0,"aria-describedby":W,className:`compa11y-radiogroup ${f}`.trim(),"data-compa11y-radiogroup":"","data-orientation":l,"data-disabled":e?"true":void 0,"data-error":s?"true":void 0,onKeyDown:I.onKeyDown,style:b?{border:"none",margin:0,padding:0,minWidth:0}:{border:"none",margin:0,padding:0,minWidth:0},children:[jsxs("legend",{style:b?{}:{padding:0,marginBottom:"var(--compa11y-radio-group-legend-gap, 0.5rem)",fontWeight:"var(--compa11y-radio-group-legend-weight, 600)",color:"var(--compa11y-radio-group-legend-color, inherit)",fontSize:"var(--compa11y-radio-group-legend-size, 1rem)"},children:[a,i&&!b&&jsxs("span",{"aria-hidden":"true",style:{color:"var(--compa11y-radio-group-required-color, #ef4444)",marginLeft:"0.125rem"},children:[" ","*"]})]}),K]})}):jsx(pt.Provider,{value:U,children:jsx("div",{ref:D,role:"radiogroup","aria-label":u,"aria-labelledby":T,"aria-orientation":l,"aria-required":i||void 0,"aria-disabled":e||void 0,"aria-invalid":s?true:void 0,"aria-describedby":W,className:`compa11y-radiogroup ${f}`.trim(),"data-compa11y-radiogroup":"","data-orientation":l,"data-disabled":e?"true":void 0,"data-error":s?"true":void 0,onKeyDown:I.onKeyDown,children:K})})});Oe.displayName="RadioGroup";var Ae=forwardRef(function({value:t,disabled:c=false,discoverable:r,label:e,hint:n,unstyled:i,className:l="",children:o,"aria-label":a$1},p){let s=bt(),b=a$2("radio"),f=a$2("radio-hint"),m=s.disabled||c,u=r??s.discoverable,T=i??s.unstyled,C=s.value===t,{announce:S}=a(),{isFocusVisible:R,focusProps:d}=te(),y=useRef(null),w=useCallback(I=>{y.current=I,typeof p=="function"?p(I):p&&(p.current=I);},[p]);useEffect(()=>(s.registerRadio(t,m),()=>s.unregisterRadio(t)),[t]),useEffect(()=>{s.updateRadioDisabled(t,m);},[m,t]);let E=useCallback(I=>{if(m){I.preventDefault();return}s.onValueChange(t),S(`${e||(typeof o=="string"?o:null)||t} selected`,{politeness:"polite"});},[m,s,t,e,o,S]),P=useCallback(I=>{m&&I.preventDefault();},[m]),O=useCallback(I=>{d.onFocus(),!C&&!m&&s.onValueChange(t);},[d,C,m,s,t]),N=useCallback(()=>{d.onBlur();},[d]),A=!!(o||e),$=o||e,g=`${b}-label`,h=!!n,F=(()=>{if(s.value!==null)return false;let I=Array.from(y.current?.closest('[role="radiogroup"]')?.querySelectorAll('input[type="radio"]')??[]);for(let U of I){let q=U;if(!q.disabled&&q.getAttribute("aria-disabled")!=="true")return q.value===t}return false})(),H=m&&!u?-1:C||s.value===null&&F?0:-1,D=m&&!u,z=h?f:void 0;return jsxs("label",{htmlFor:b,className:`compa11y-radio-wrapper ${l}`.trim(),"data-compa11y-radio":"","data-value":t,"data-checked":C?"true":"false","data-disabled":m?"true":void 0,style:T?{display:"inline-flex",alignItems:"flex-start",cursor:m?"not-allowed":"pointer",gap:"0.5rem"}:{display:"inline-flex",alignItems:"flex-start",gap:"var(--compa11y-radio-gap, 0.5rem)",cursor:m?"not-allowed":"pointer",userSelect:"none",opacity:m?.5:1},children:[jsxs("div",{style:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:[jsx("input",{ref:w,type:"radio",id:b,name:s.name,value:t,checked:C,onChange:E,onClick:P,onFocus:O,onBlur:N,disabled:D,tabIndex:H,"aria-disabled":m?"true":void 0,"aria-label":A?void 0:a$1,"aria-labelledby":A?g:void 0,"aria-describedby":z,required:s.required,className:"compa11y-radio-input",style:{position:"absolute",opacity:0,width:"var(--compa11y-radio-size, 1.25rem)",height:"var(--compa11y-radio-size, 1.25rem)",margin:0,cursor:m?"not-allowed":"pointer"}}),!T&&jsx("div",{className:"compa11y-radio-circle",style:{width:"var(--compa11y-radio-size, 1.25rem)",height:"var(--compa11y-radio-size, 1.25rem)",minWidth:"24px",minHeight:"24px",border:C?"var(--compa11y-radio-checked-border, 2px solid #0066cc)":"var(--compa11y-radio-border, 2px solid #666)",borderRadius:"50%",background:C?"var(--compa11y-radio-checked-bg, #0066cc)":"var(--compa11y-radio-bg, white)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s ease",pointerEvents:"none",...R?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}},children:jsx("div",{"aria-hidden":"true",style:{width:"var(--compa11y-radio-dot-size, 0.5rem)",height:"var(--compa11y-radio-dot-size, 0.5rem)",borderRadius:"50%",background:"var(--compa11y-radio-dot-color, white)",opacity:C?1:0,transform:C?"scale(1)":"scale(0)",transition:"all 0.15s ease"}})})]}),(A||h)&&jsxs("div",{style:T?{}:{display:"flex",flexDirection:"column",gap:"0.125rem",paddingTop:"0.125rem"},children:[A&&jsx("span",{id:g,className:"compa11y-radio-label",style:T?{}:{color:"var(--compa11y-radio-label-color, inherit)",fontSize:"var(--compa11y-radio-label-size, 1rem)"},children:$}),h&&jsx("span",{id:f,className:"compa11y-radio-hint",style:T?{}:{color:"var(--compa11y-radio-hint-color, #666)",fontSize:"var(--compa11y-radio-hint-size, 0.8125rem)"},children:n})]})]})});Ae.displayName="Radio";var Yt=Object.assign(Oe,{Radio:Ae});var Tn=createComponentWarnings("Switch"),mt=forwardRef(function({checked:t,defaultChecked:c=false,onCheckedChange:r,label:e,disabled:n=false,unstyled:i=false,className:l,size:o="md","aria-label":a$3,"aria-labelledby":p,onClick:s,...b},f){let u=`${a$2("switch")}-label`,{announce:T}=a(),[C,S]=useState(c),R=t!==void 0,d=R?t:C;useEffect(()=>{!e&&!a$3&&!p&&Tn.warning("Switch has no accessible label. Screen readers need this to identify the switch.",'Add label="Description", aria-label="...", or aria-labelledby="..."');},[e,a$3,p]);let y=useCallback(()=>{if(n)return;let I=!d;R||S(I),r?.(I),T(`${e||a$3||"Switch"} ${I?"on":"off"}`);},[d,n,R,r,e,a$3,T]),w=useCallback(I=>{s?.(I),I.defaultPrevented||y();},[s,y]),E=a$1({" ":()=>{y();},Enter:()=>{y();}},{preventDefault:true}),P=I=>{b.onKeyDown?.(I),I.defaultPrevented||E.onKeyDown(I);},O=a$3,N=p||(e?u:void 0),A={display:"inline-flex",alignItems:"center"},g={sm:{width:32,height:18,thumb:14,translate:14},md:{width:44,height:24,thumb:20,translate:20},lg:{width:56,height:30,thumb:26,translate:26}}[o],h={position:"relative",display:"inline-flex",alignItems:"center",flexShrink:0,width:g.width,height:g.height,border:"none",padding:2,cursor:n?"not-allowed":"pointer"},F=i?{}:{backgroundColor:d?"#0066cc":"#d1d5db",borderRadius:g.height/2,transition:"background-color 0.2s ease",opacity:n?.5:1},H={position:"absolute",left:2,width:g.thumb,height:g.thumb,pointerEvents:"none",transform:d?`translateX(${g.translate}px)`:"translateX(0)"},D=i?{}:{backgroundColor:"white",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",transition:"transform 0.2s ease"},z=i?{marginLeft:8,userSelect:"none",cursor:n?"not-allowed":"pointer"}:{marginLeft:8,userSelect:"none",cursor:n?"not-allowed":"pointer",opacity:n?.5:1};return jsxs("div",{style:A,"data-compa11y-switch-wrapper":true,"data-size":o,children:[jsx("button",{ref:f,type:"button",role:"switch","aria-checked":d,"aria-label":O,"aria-labelledby":N,disabled:n,onClick:w,onKeyDown:P,className:l,style:{...h,...F},tabIndex:n?-1:0,"data-compa11y-switch":true,"data-checked":d,"data-disabled":n||void 0,"data-size":o,...b,onFocus:I=>{i||(I.currentTarget.style.outline="2px solid #0066cc",I.currentTarget.style.outlineOffset="2px"),b.onFocus?.(I);},onBlur:I=>{i||(I.currentTarget.style.outline="none"),b.onBlur?.(I);},children:jsx("span",{style:{...H,...D},"data-compa11y-switch-thumb":true,"aria-hidden":"true"})}),e&&jsx("label",{id:u,onClick:n?void 0:()=>y(),style:z,"data-compa11y-switch-label":true,children:e})]})});mt.displayName="Switch";var In=createComponentWarnings("Listbox"),Qt=createContext(null);function De(){let x=useContext(Qt);if(!x)throw new Error("[Compa11y Listbox]: Option/Group must be used within a Listbox.");return x}var eo=createContext({groupDisabled:false}),Be=forwardRef(function({value:t,defaultValue:c,onValueChange:r,multiple:e$1=false,disabled:n=false,discoverable:i=true,orientation:l="vertical",unstyled:o=false,className:a$3="",children:p,"aria-label":s,"aria-labelledby":b},f){let m=a$2("listbox"),{announce:u}=a(),[T,C]=useState(()=>c??(e$1?[]:"")),S=t!==void 0,R=S?t:T,d=useMemo(()=>e$1?new Set(Array.isArray(R)?R:[]):new Set(R?[String(R)]:[]),[R,e$1]),[y,w]=useState(null),E=useRef(new Map),[P,O]=useState(0),N=useCallback((v,k,M)=>{E.current.set(v,{disabled:k,label:M}),O(L=>L+1);},[]),A=useCallback(v=>{E.current.delete(v),O(k=>k+1);},[]),$=useCallback((v,k)=>{let M=E.current.get(v);M&&E.current.set(v,{...M,disabled:k});},[]),g=useMemo(()=>{let v=[];return E.current.forEach((k,M)=>{!k.disabled&&!n&&v.push(M);}),v},[P,n]);useEffect(()=>{!s&&!b&&In.warning("Listbox has no accessible label. Screen readers need this.",'Add aria-label="..." or aria-labelledby="..."');},[s,b]);let h=useCallback(v=>d.has(v),[d]),F=useCallback(v=>{if(n)return;let k=E.current.get(v);if(k?.disabled)return;let M,L=k?.label||v;if(e$1){let G=new Set(d);G.has(v)?(G.delete(v),u(`${L} deselected`,{politeness:"polite"})):(G.add(v),u(`${L} selected`,{politeness:"polite"})),M=Array.from(G);}else M=v,u(`${L} selected`,{politeness:"polite"});S||C(M),r?.(M);},[n,e$1,d,S,r,u]),H=useCallback(v=>{if(g.length===0)return;let k=y?g.indexOf(y):-1,M;switch(v){case "next":M=k<0?0:Math.min(k+1,g.length-1);break;case "prev":M=k<0?g.length-1:Math.max(k-1,0);break;case "first":M=0;break;case "last":M=g.length-1;break}let L=g[M];if(L!==void 0)if(w(L),e$1){let Re=E.current.get(L)?.label||L,xe=d.has(L);u(`${Re}${xe?", selected":""}`,{politeness:"polite"});}else {let Re=E.current.get(L)?.label||L,xe=L;S||C(xe),r?.(xe),u(`${Re} selected`,{politeness:"polite"});}},[g,y,e$1,S,r,u,d]),D=useCallback(()=>{y&&e$1&&F(y);},[y,e$1,F]),z=useCallback(()=>{if(!e$1||!y)return;let v=g.indexOf(y);if(v<0)return;let k=g.slice(0,v+1),M=new Set(d);k.forEach(G=>M.add(G));let L=Array.from(M);S||C(L),r?.(L),w(g[0]??null),u(`${k.length} items selected`,{politeness:"polite"});},[e$1,y,g,d,S,r,u]),I=useCallback(()=>{if(!e$1||!y)return;let v=g.indexOf(y);if(v<0)return;let k=g.slice(v),M=new Set(d);k.forEach(G=>M.add(G));let L=Array.from(M);S||C(L),r?.(L),w(g[g.length-1]??null),u(`${k.length} items selected`,{politeness:"polite"});},[e$1,y,g,d,S,r,u]),U=useCallback(()=>{if(!e$1)return;let v=g.every(M=>d.has(M)),k;v?(k=[],u("All deselected",{politeness:"polite"})):(k=[...g],u("All selected",{politeness:"polite"})),S||C(k),r?.(k);},[e$1,g,d,S,r,u]),q=useMemo(()=>{let v={ArrowDown:()=>H("next"),ArrowUp:()=>H("prev"),Home:()=>H("first"),End:()=>H("last")};return e$1&&(v[" "]=()=>D(),v["Shift+ArrowDown"]=()=>{H("next"),setTimeout(()=>D(),0);},v["Shift+ArrowUp"]=()=>{H("prev"),setTimeout(()=>D(),0);},v["Ctrl+Shift+Home"]=()=>z(),v["Ctrl+Shift+End"]=()=>I(),v["Ctrl+a"]=()=>U(),v["Meta+a"]=()=>U()),v},[e$1,H,D,z,I,U]),W=a$1(q,{preventDefault:true,stopPropagation:true,disabled:n}),K=useMemo(()=>Array.from(E.current.values()).map(v=>v.label),[P]),V=e(K,v=>{for(let[k,M]of E.current.entries())if(M.label===v&&!M.disabled){if(w(k),!e$1){let L=k;S||C(L),r?.(L),u(`${v} selected`,{politeness:"polite"});}break}},{disabled:n}),j=useCallback(v=>{W.onKeyDown(v),v.defaultPrevented||V.onKeyDown(v);},[W,V]),X=useCallback(()=>{if(!y){if(!e$1&&R&&typeof R=="string"){w(R);return}if(e$1&&Array.isArray(R)&&R.length>0){w(R[0]??null);return}g.length>0&&w(g[0]??null);}},[y,e$1,R,g]),J=useCallback(()=>{},[]),_=useRef(null);useEffect(()=>{y&&_.current&&_.current.querySelector(`[data-value="${CSS.escape(y)}"]`)?.scrollIntoView({block:"nearest"});},[y]);let ee=useMemo(()=>({multiple:e$1,disabled:n,discoverable:i,unstyled:o,orientation:l,selectedValues:d,focusedValue:y,onSelect:F,onFocusOption:w,registerOption:N,unregisterOption:A,updateOptionDisabled:$,isSelected:h,listboxId:m}),[e$1,n,i,o,l,d,y,F,N,A,$,h,m]),oe=useCallback(v=>{_.current=v,typeof f=="function"?f(v):f&&(f.current=v);},[f]),ne=y?`${m}-option-${y}`:void 0;return jsx(Qt.Provider,{value:ee,children:jsx("div",{ref:oe,role:"listbox","aria-label":s,"aria-labelledby":b,"aria-orientation":l,"aria-multiselectable":e$1||void 0,"aria-disabled":n||void 0,"aria-activedescendant":ne,tabIndex:n&&!i?-1:0,className:`compa11y-listbox ${a$3}`.trim(),"data-compa11y-listbox":"","data-orientation":l,"data-disabled":n?"true":void 0,"data-multiple":e$1?"true":void 0,onKeyDown:j,onFocus:X,onBlur:J,style:o?{}:{width:"var(--compa11y-listbox-width, 250px)",maxHeight:"var(--compa11y-listbox-max-height, 300px)",overflowY:"auto",border:"var(--compa11y-listbox-border, 1px solid #e0e0e0)",borderRadius:"var(--compa11y-listbox-radius, 4px)",background:"var(--compa11y-listbox-bg, white)",padding:"var(--compa11y-listbox-padding, 0.25rem 0)",...n?{opacity:"var(--compa11y-listbox-disabled-opacity, 0.5)",cursor:"not-allowed"}:{}},children:p})})});Be.displayName="Listbox";var ze=forwardRef(function({value:t,disabled:c=false,discoverable:r,unstyled:e,className:n="",children:i,"aria-label":l},o){let a=De(),{groupDisabled:p}=useContext(eo),s=a.disabled||p||c,b=e??a.unstyled,f=a.isSelected(t),m=a.focusedValue===t,u=`${a.listboxId}-option-${t}`,T=useRef(""),C=useRef(null),S=useCallback(d=>{C.current=d,typeof o=="function"?o(d):o&&(o.current=d);},[o]);useEffect(()=>{let d=typeof i=="string"?i:C.current?.textContent?.trim()||t;return T.current=d,a.registerOption(t,s,d),()=>a.unregisterOption(t)},[t]),useEffect(()=>{a.updateOptionDisabled(t,s);},[s,t]);let R=useCallback(d=>{if(s){d.preventDefault();return}a.onFocusOption(t),a.onSelect(t);},[s,a,t]);return jsxs("div",{ref:S,id:u,role:"option","aria-selected":f,"aria-disabled":s||void 0,"aria-label":l,className:`compa11y-listbox-option ${n}`.trim(),"data-compa11y-listbox-option":"","data-value":t,"data-selected":f?"true":"false","data-focused":m?"true":"false","data-disabled":s?"true":void 0,onClick:R,style:b?{cursor:s?"not-allowed":"pointer"}:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--compa11y-listbox-option-padding, 0.5rem 0.75rem)",cursor:s?"not-allowed":"pointer",userSelect:"none",transition:"background 0.1s ease",background:m?f?"var(--compa11y-listbox-option-selected-hover-bg, #cce0ff)":"var(--compa11y-listbox-option-hover-bg, #f5f5f5)":f?"var(--compa11y-listbox-option-selected-bg, #e6f0ff)":"transparent",fontWeight:f?500:"normal",opacity:s?.5:1},children:[jsx("span",{style:{flex:1},children:i}),f&&!b&&jsx("span",{"aria-hidden":"true",style:{fontSize:"0.875rem",color:"var(--compa11y-listbox-check-color, #0066cc)",marginLeft:"0.5rem"},children:"\u2713"})]})});ze.displayName="ListboxOption";var Ge=forwardRef(function({label:t,disabled:c=false,unstyled:r,className:e="",children:n},i){let l=De(),o=r??l.unstyled,a=a$2("listbox-group"),p=useMemo(()=>({groupDisabled:l.disabled||c}),[l.disabled,c]);return jsx(eo.Provider,{value:p,children:jsxs("div",{ref:i,role:"group","aria-labelledby":a,"aria-disabled":c||void 0,className:`compa11y-listbox-group ${e}`.trim(),"data-compa11y-listbox-group":"","data-disabled":c?"true":void 0,style:o?{}:{opacity:c?.5:1},children:[jsx("div",{id:a,role:"presentation",style:o?{}:{padding:"var(--compa11y-listbox-group-label-padding, 0.5rem 0.75rem 0.25rem)",fontSize:"var(--compa11y-listbox-group-label-size, 0.75rem)",fontWeight:600,color:"var(--compa11y-listbox-group-label-color, #666)",textTransform:"uppercase",letterSpacing:"0.05em"},children:t}),n]})})});Ge.displayName="ListboxGroup";var to=Object.assign(Be,{Option:ze,Group:Ge});var ro=createContext(null);function Te(){let x=useContext(ro);if(!x)throw new Error("[Compa11y Input]: Input sub-components (Input.Label, Input.Field, etc.) must be used within <Input>.");return x}var $e=forwardRef(function({children:t,className:c},r){let e=Te();return jsxs("label",{ref:r,id:e.labelId,htmlFor:e.fieldId,"data-compa11y-input-label":"",className:c,style:e.unstyled?{}:{display:"block",color:e.disabled?"var(--compa11y-input-disabled-color, #999)":"var(--compa11y-input-label-color, inherit)",fontSize:"var(--compa11y-input-label-size, 0.875rem)",fontWeight:"var(--compa11y-input-label-weight, 500)"},children:[t,e.required&&jsx("span",{"data-compa11y-input-required":"","aria-hidden":"true",style:e.unstyled?{}:{color:"var(--compa11y-input-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]})});$e.displayName="InputLabel";var Ke=forwardRef(function({type:t="text",onFocus:c,onBlur:r,className:e,style:n,...i},l){let o=Te(),a=useRef(null),p=useCallback(u=>{a.current=u,typeof l=="function"?l(u):l&&(l.current=u);},[l]),s=useCallback(u=>{o.setValue(u.target.value);},[o.setValue]),b=useCallback(u=>{o.focusProps.onFocus(),c?.(u);},[o.focusProps,c]),f=useCallback(u=>{o.focusProps.onBlur(),r?.(u);},[o.focusProps,r]),m=[];return m.push(o.hintId),o.hasError&&m.push(o.errorId),jsx("input",{ref:p,id:o.fieldId,type:t,value:o.value,onChange:s,onFocus:b,onBlur:f,disabled:o.disabled,readOnly:o.readOnly,"aria-describedby":m.join(" ")||void 0,"aria-invalid":o.hasError?"true":void 0,"aria-required":o.required?"true":void 0,"data-compa11y-input-field":"",className:e,style:o.unstyled?n:{width:"100%",padding:"var(--compa11y-input-padding, 0.5rem 0.75rem)",border:o.hasError?"1px solid var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border, 1px solid #ccc)",borderRadius:"var(--compa11y-input-radius, 4px)",fontSize:"var(--compa11y-input-font-size, 0.875rem)",fontFamily:"inherit",background:o.disabled?"var(--compa11y-input-disabled-bg, #f5f5f5)":o.readOnly?"var(--compa11y-input-readonly-bg, #f9f9f9)":"var(--compa11y-input-bg, white)",color:"inherit",cursor:o.disabled?"not-allowed":void 0,opacity:o.disabled?"var(--compa11y-input-disabled-opacity, 0.7)":void 0,...o.isFocusVisible&&!o.disabled?{outline:o.hasError?"2px solid var(--compa11y-input-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:o.hasError?"var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border-focus, #0066cc)"}:{},...n},...i})});Ke.displayName="InputField";var je=forwardRef(function({children:t,className:c},r){let e=Te();return jsx("div",{ref:r,id:e.hintId,"data-compa11y-input-hint":"",className:c,style:e.unstyled?{}:{color:"var(--compa11y-input-hint-color, #666)",fontSize:"var(--compa11y-input-hint-size, 0.8125rem)"},children:t})});je.displayName="InputHint";var We=forwardRef(function({children:t,className:c},r){let e=Te();return t?jsx("div",{ref:r,id:e.errorId,role:"alert","data-compa11y-input-error":"",className:c,style:e.unstyled?{}:{color:"var(--compa11y-input-error-color, #ef4444)",fontSize:"var(--compa11y-input-error-size, 0.8125rem)"},children:t}):null});We.displayName="InputError";var Ue=forwardRef(function({value:t,defaultValue:c="",onValueChange:r,type:e="text",label:n,hint:i,error:l,required:o=false,disabled:a=false,readOnly:p=false,"aria-label":s,"aria-labelledby":b,placeholder:f,name:m,autoComplete:u,maxLength:T,minLength:C,pattern:S,inputMode:R,id:d,unstyled:y=false,className:w,onFocus:E,onBlur:P,children:O},N){let A=a$2("input"),$=d||A,g=`${$}-field`,h=`${$}-label`,F=`${$}-hint`,H=`${$}-error`,[D,z]=useState(c),I=t!==void 0,U=I?t:D,q=useCallback(G=>{I||z(G),r?.(G);},[I,r]),{isFocusVisible:W,focusProps:K}=te();useEffect(()=>{process.env.NODE_ENV!=="production"&&!(Children.count(O)>0)&&!n&&!s&&!b&&console.warn("[Compa11y Input]: Input has no accessible label. Screen readers need this to identify the input. Use label prop, aria-label, or aria-labelledby.");},[O,n,s,b]);let V=!!l,j=Children.count(O)>0,X={fieldId:g,labelId:h,hintId:F,errorId:H,value:U,setValue:q,hasError:V,disabled:a,readOnly:p,required:o,isFocusVisible:W,focusProps:K,unstyled:y},J={"data-compa11y-input":"","data-error":V?"true":"false","data-disabled":a?"true":"false","data-required":o?"true":"false","data-readonly":p?"true":"false"},_=y?{}:{display:"flex",flexDirection:"column",gap:"0.25rem"};if(j)return jsx(ro.Provider,{value:X,children:jsx("div",{...J,className:w,style:_,children:O})});let ee=useRef(null),oe=useCallback(G=>{ee.current=G,typeof N=="function"?N(G):N&&(N.current=G);},[N]),ne=useCallback(G=>{q(G.target.value);},[q]),v=useCallback(G=>{K.onFocus(),E?.(G);},[K,E]),k=useCallback(G=>{K.onBlur(),P?.(G);},[K,P]),M=[];i&&M.push(F),V&&M.push(H);let L=M.length>0?M.join(" "):void 0;return jsxs("div",{...J,className:w,style:_,children:[n&&jsxs("label",{id:h,htmlFor:g,"data-compa11y-input-label":"",style:y?{}:{display:"block",color:a?"var(--compa11y-input-disabled-color, #999)":"var(--compa11y-input-label-color, inherit)",fontSize:"var(--compa11y-input-label-size, 0.875rem)",fontWeight:"var(--compa11y-input-label-weight, 500)"},children:[n,o&&jsx("span",{"data-compa11y-input-required":"","aria-hidden":"true",style:y?{}:{color:"var(--compa11y-input-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),jsx("input",{ref:oe,id:g,type:e,value:U,onChange:ne,onFocus:v,onBlur:k,disabled:a,readOnly:p,required:o,placeholder:f,name:m,autoComplete:u,maxLength:T,minLength:C,pattern:S,inputMode:R,"aria-label":n?void 0:s,"aria-labelledby":!n&&b?b:n?h:void 0,"aria-describedby":L,"aria-invalid":V?"true":void 0,"aria-required":o?"true":void 0,"data-compa11y-input-field":"",style:y?{}:{width:"100%",padding:"var(--compa11y-input-padding, 0.5rem 0.75rem)",border:V?"1px solid var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border, 1px solid #ccc)",borderRadius:"var(--compa11y-input-radius, 4px)",fontSize:"var(--compa11y-input-font-size, 0.875rem)",fontFamily:"inherit",background:a?"var(--compa11y-input-disabled-bg, #f5f5f5)":p?"var(--compa11y-input-readonly-bg, #f9f9f9)":"var(--compa11y-input-bg, white)",color:"inherit",cursor:a?"not-allowed":void 0,opacity:a?"var(--compa11y-input-disabled-opacity, 0.7)":void 0,...W&&!a?{outline:V?"2px solid var(--compa11y-input-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:V?"var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border-focus, #0066cc)"}:{}}}),i&&jsx("div",{id:F,"data-compa11y-input-hint":"",style:y?{}:{color:"var(--compa11y-input-hint-color, #666)",fontSize:"var(--compa11y-input-hint-size, 0.8125rem)"},children:i}),V&&jsx("div",{id:H,role:"alert","data-compa11y-input-error":"",style:y?{}:{color:"var(--compa11y-input-error-color, #ef4444)",fontSize:"var(--compa11y-input-error-size, 0.8125rem)"},children:l})]})});Ue.displayName="Input";var io=Object.assign(Ue,{Label:$e,Field:Ke,Hint:je,Error:We});var Hn={primary:{background:"var(--compa11y-button-primary-bg, #0066cc)",color:"var(--compa11y-button-primary-color, white)",border:"var(--compa11y-button-primary-border, 1px solid #0066cc)"},secondary:{background:"var(--compa11y-button-secondary-bg, white)",color:"var(--compa11y-button-secondary-color, #333)",border:"var(--compa11y-button-secondary-border, 1px solid #ccc)"},danger:{background:"var(--compa11y-button-danger-bg, #ef4444)",color:"var(--compa11y-button-danger-color, white)",border:"var(--compa11y-button-danger-border, 1px solid #ef4444)"},outline:{background:"var(--compa11y-button-outline-bg, transparent)",color:"var(--compa11y-button-outline-color, #0066cc)",border:"var(--compa11y-button-outline-border, 1px solid #0066cc)"},ghost:{background:"var(--compa11y-button-ghost-bg, transparent)",color:"var(--compa11y-button-ghost-color, #333)",border:"var(--compa11y-button-ghost-border, 1px solid transparent)"}},Fn={sm:{padding:"var(--compa11y-button-padding-sm, 0.25rem 0.5rem)",fontSize:"var(--compa11y-button-font-size-sm, 0.75rem)"},md:{padding:"var(--compa11y-button-padding-md, 0.5rem 1rem)",fontSize:"var(--compa11y-button-font-size-md, 0.875rem)"},lg:{padding:"var(--compa11y-button-padding-lg, 0.75rem 1.5rem)",fontSize:"var(--compa11y-button-font-size-lg, 1rem)"}},ht=forwardRef(function({variant:t="secondary",size:c="md",type:r="button",disabled:e=false,discoverable:n=false,loading:i=false,unstyled:l=false,"aria-label":o,className:a,style:p,onClick:s,onFocus:b,onBlur:f,children:m,...u},T){let C=a$2("button"),S=useRef(null),R=useCallback(g=>{S.current=g,typeof T=="function"?T(g):T&&(T.current=g);},[T]),{isFocusVisible:d,focusProps:y}=te();useEffect(()=>{process.env.NODE_ENV!=="production"&&!m&&!o&&!u["aria-labelledby"]&&console.warn("[Compa11y Button]: Button has no accessible label. Screen readers need this to identify the button. Add text content, aria-label, or aria-labelledby.");},[m,o,u["aria-labelledby"]]);let w=e&&!n,E=e||i,P=useCallback(g=>{if(E){g.preventDefault();return}s?.(g);},[E,s]),O=useCallback(g=>{y.onFocus(),b?.(g);},[y,b]),N=useCallback(g=>{y.onBlur(),f?.(g);},[y,f]),A={"data-compa11y-button":"","data-variant":t,"data-size":c,"data-disabled":e?"true":"false","data-loading":i?"true":"false"},$=l?{}:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"0.5rem",borderRadius:"var(--compa11y-button-radius, 4px)",fontFamily:"inherit",fontWeight:"var(--compa11y-button-font-weight, 500)",lineHeight:"1.5",cursor:E?"not-allowed":"pointer",opacity:e?"var(--compa11y-button-disabled-opacity, 0.5)":void 0,transition:"background-color 0.15s ease, border-color 0.15s ease",...Hn[t],...Fn[c],...d&&!w?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}};return jsxs("button",{ref:R,id:C,type:r,disabled:w,tabIndex:e&&!n?void 0:0,"aria-disabled":E?"true":void 0,"aria-busy":i?"true":void 0,"aria-label":o,onClick:P,onFocus:O,onBlur:N,className:a,style:{...$,...p},...A,...u,children:[i&&jsx("span",{"data-compa11y-button-spinner":"","aria-hidden":"true",style:l?{}:{display:"inline-block",width:"1em",height:"1em",border:"2px solid currentColor",borderRightColor:"transparent",borderRadius:"50%",animation:"compa11y-spin 0.6s linear infinite"}}),m]})});ht.displayName="Button";var co=createContext(null);function Ce(){let x=useContext(co);if(!x)throw new Error("[Compa11y Textarea]: Textarea sub-components (Textarea.Label, Textarea.Field, etc.) must be used within <Textarea>.");return x}var _e=forwardRef(function({children:t,className:c},r){let e=Ce();return jsxs("label",{ref:r,id:e.labelId,htmlFor:e.fieldId,"data-compa11y-textarea-label":"",className:c,style:e.unstyled?{}:{display:"block",color:e.disabled?"var(--compa11y-textarea-disabled-color, #999)":"var(--compa11y-textarea-label-color, inherit)",fontSize:"var(--compa11y-textarea-label-size, 0.875rem)",fontWeight:"var(--compa11y-textarea-label-weight, 500)"},children:[t,e.required&&jsx("span",{"data-compa11y-textarea-required":"","aria-hidden":"true",style:e.unstyled?{}:{color:"var(--compa11y-textarea-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]})});_e.displayName="TextareaLabel";var Ye=forwardRef(function({onFocus:t,onBlur:c,className:r,style:e,rows:n,...i},l){let o=Ce(),a=useRef(null),p=useCallback(u=>{a.current=u,typeof l=="function"?l(u):l&&(l.current=u);},[l]),s=useCallback(u=>{o.setValue(u.target.value);},[o.setValue]),b=useCallback(u=>{o.focusProps.onFocus(),t?.(u);},[o.focusProps,t]),f=useCallback(u=>{o.focusProps.onBlur(),c?.(u);},[o.focusProps,c]),m=[];return m.push(o.hintId),o.hasError&&m.push(o.errorId),jsx("textarea",{ref:p,id:o.fieldId,rows:n??o.rows,value:o.value,onChange:s,onFocus:b,onBlur:f,disabled:o.disabled,readOnly:o.readOnly,"aria-describedby":m.join(" ")||void 0,"aria-invalid":o.hasError?"true":void 0,"aria-required":o.required?"true":void 0,"data-compa11y-textarea-field":"",className:r,style:o.unstyled?e:{width:"100%",padding:"var(--compa11y-textarea-padding, 0.5rem 0.75rem)",border:o.hasError?"1px solid var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border, 1px solid #ccc)",borderRadius:"var(--compa11y-textarea-radius, 4px)",fontSize:"var(--compa11y-textarea-font-size, 0.875rem)",fontFamily:"inherit",lineHeight:"1.5",resize:o.resize,background:o.disabled?"var(--compa11y-textarea-disabled-bg, #f5f5f5)":o.readOnly?"var(--compa11y-textarea-readonly-bg, #f9f9f9)":"var(--compa11y-textarea-bg, white)",color:"inherit",cursor:o.disabled?"not-allowed":void 0,opacity:o.disabled?"var(--compa11y-textarea-disabled-opacity, 0.7)":void 0,...o.isFocusVisible&&!o.disabled?{outline:o.hasError?"2px solid var(--compa11y-textarea-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:o.hasError?"var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border-focus, #0066cc)"}:{},...e},...i})});Ye.displayName="TextareaField";var Xe=forwardRef(function({children:t,className:c},r){let e=Ce();return jsx("div",{ref:r,id:e.hintId,"data-compa11y-textarea-hint":"",className:c,style:e.unstyled?{}:{color:"var(--compa11y-textarea-hint-color, #666)",fontSize:"var(--compa11y-textarea-hint-size, 0.8125rem)"},children:t})});Xe.displayName="TextareaHint";var Je=forwardRef(function({children:t,className:c},r){let e=Ce();return t?jsx("div",{ref:r,id:e.errorId,role:"alert","data-compa11y-textarea-error":"",className:c,style:e.unstyled?{}:{color:"var(--compa11y-textarea-error-color, #ef4444)",fontSize:"var(--compa11y-textarea-error-size, 0.8125rem)"},children:t}):null});Je.displayName="TextareaError";var Ze=forwardRef(function({value:t,defaultValue:c="",onValueChange:r,rows:e=3,resize:n="vertical",label:i,hint:l,error:o,required:a=false,disabled:p=false,readOnly:s=false,"aria-label":b,"aria-labelledby":f,placeholder:m,name:u,autoComplete:T,maxLength:C,minLength:S,id:R,unstyled:d=false,className:y,onFocus:w,onBlur:E,children:P},O){let N=a$2("textarea"),A=R||N,$=`${A}-field`,g=`${A}-label`,h=`${A}-hint`,F=`${A}-error`,[H,D]=useState(c),z=t!==void 0,I=z?t:H,U=useCallback(L=>{z||D(L),r?.(L);},[z,r]),{isFocusVisible:q,focusProps:W}=te();useEffect(()=>{process.env.NODE_ENV!=="production"&&!(Children.count(P)>0)&&!i&&!b&&!f&&console.warn("[Compa11y Textarea]: Textarea has no accessible label. Screen readers need this to identify the textarea. Use label prop, aria-label, or aria-labelledby.");},[P,i,b,f]);let K=!!o,V=Children.count(P)>0,j={fieldId:$,labelId:g,hintId:h,errorId:F,value:I,setValue:U,hasError:K,disabled:p,readOnly:s,required:a,rows:e,resize:n,isFocusVisible:q,focusProps:W,unstyled:d},X={"data-compa11y-textarea":"","data-error":K?"true":"false","data-disabled":p?"true":"false","data-required":a?"true":"false","data-readonly":s?"true":"false"},J=d?{}:{display:"flex",flexDirection:"column",gap:"0.25rem"};if(V)return jsx(co.Provider,{value:j,children:jsx("div",{...X,className:y,style:J,children:P})});let _=useRef(null),ee=useCallback(L=>{_.current=L,typeof O=="function"?O(L):O&&(O.current=L);},[O]),oe=useCallback(L=>{U(L.target.value);},[U]),ne=useCallback(L=>{W.onFocus(),w?.(L);},[W,w]),v=useCallback(L=>{W.onBlur(),E?.(L);},[W,E]),k=[];l&&k.push(h),K&&k.push(F);let M=k.length>0?k.join(" "):void 0;return jsxs("div",{...X,className:y,style:J,children:[i&&jsxs("label",{id:g,htmlFor:$,"data-compa11y-textarea-label":"",style:d?{}:{display:"block",color:p?"var(--compa11y-textarea-disabled-color, #999)":"var(--compa11y-textarea-label-color, inherit)",fontSize:"var(--compa11y-textarea-label-size, 0.875rem)",fontWeight:"var(--compa11y-textarea-label-weight, 500)"},children:[i,a&&jsx("span",{"data-compa11y-textarea-required":"","aria-hidden":"true",style:d?{}:{color:"var(--compa11y-textarea-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),jsx("textarea",{ref:ee,id:$,rows:e,value:I,onChange:oe,onFocus:ne,onBlur:v,disabled:p,readOnly:s,required:a,placeholder:m,name:u,autoComplete:T,maxLength:C,minLength:S,"aria-label":i?void 0:b,"aria-labelledby":!i&&f?f:i?g:void 0,"aria-describedby":M,"aria-invalid":K?"true":void 0,"aria-required":a?"true":void 0,"data-compa11y-textarea-field":"",style:d?{}:{width:"100%",padding:"var(--compa11y-textarea-padding, 0.5rem 0.75rem)",border:K?"1px solid var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border, 1px solid #ccc)",borderRadius:"var(--compa11y-textarea-radius, 4px)",fontSize:"var(--compa11y-textarea-font-size, 0.875rem)",fontFamily:"inherit",lineHeight:"1.5",resize:n,background:p?"var(--compa11y-textarea-disabled-bg, #f5f5f5)":s?"var(--compa11y-textarea-readonly-bg, #f9f9f9)":"var(--compa11y-textarea-bg, white)",color:"inherit",cursor:p?"not-allowed":void 0,opacity:p?"var(--compa11y-textarea-disabled-opacity, 0.7)":void 0,...q&&!p?{outline:K?"2px solid var(--compa11y-textarea-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:K?"var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border-focus, #0066cc)"}:{}}}),l&&jsx("div",{id:h,"data-compa11y-textarea-hint":"",style:d?{}:{color:"var(--compa11y-textarea-hint-color, #666)",fontSize:"var(--compa11y-textarea-hint-size, 0.8125rem)"},children:l}),K&&jsx("div",{id:F,role:"alert","data-compa11y-textarea-error":"",style:d?{}:{color:"var(--compa11y-textarea-error-color, #ef4444)",fontSize:"var(--compa11y-textarea-error-size, 0.8125rem)"},children:o})]})});Ze.displayName="Textarea";var uo=Object.assign(Ze,{Label:_e,Field:Ye,Hint:Xe,Error:Je});export{ht as Button,qt as Checkbox,He as CheckboxBase,we as CheckboxGroup,Fe as CheckboxIndicator,io as Input,Ue as InputBase,We as InputError,Ke as InputField,je as InputHint,$e as InputLabel,to as Listbox,Be as ListboxBase,Ge as ListboxGroup,ze as ListboxOption,Ae as Radio,Yt as RadioGroup,Oe as RadioGroupBase,$t as Select,at as SelectBase,it as SelectListbox,ke as SelectOptionItem,rt as SelectTrigger,mt as Switch,uo as Textarea,Ze as TextareaBase,Je as TextareaError,Ye as TextareaField,Xe as TextareaHint,_e as TextareaLabel,ct as useCheckboxGroupContext,At as useFocusControl,Ot as useFocusManager,te as useFocusVisible,Vt as useFocusWithin,Te as useInputContext,De as useListboxContext,bt as useRadioGroupContext,Qe as useRovingTabindex,Nt as useRovingTabindexMap,Ce as useTextareaContext};
1
+ export{k as Dialog,j as DialogActions,d as DialogBase,h as DialogClose,i as DialogContent,g as DialogDescription,f as DialogTitle,e as DialogTrigger,c as useDialogContext,a as useFocusTrap,b as useFocusTrapControls}from'./chunk-32AW37KT.js';export{i as ActionMenu,c as ActionMenuBase,e as ActionMenuContent,f as ActionMenuItem,h as ActionMenuLabel,g as ActionMenuSeparator,d as ActionMenuTrigger,a as useActionMenuContext}from'./chunk-QOY5G3EC.js';export{d as Tab,c as TabList,e as TabPanel,f as Tabs,b as TabsBase,a as useTabsContext}from'./chunk-L6H47IF4.js';export{b as ToastProvider,c as ToastViewport,a as useToast,d as useToastHelpers}from'./chunk-IFZVKAUZ.js';export{e as Combobox,a as ComboboxBase,b as ComboboxInput,c as ComboboxListbox,d as ComboboxOption}from'./chunk-HEA4NAOM.js';import {a}from'./chunk-MD4AVTLT.js';export{c as useAnnounceLoading,b as useAnnounceOnChange,a as useAnnouncer}from'./chunk-MD4AVTLT.js';import {e,a as a$1}from'./chunk-VMM4K2K4.js';export{d as useGridKeyboard,f as useKeyPressed,a as useKeyboard,b as useMenuKeyboard,c as useTabsKeyboard,e as useTypeAhead}from'./chunk-VMM4K2K4.js';import {a as a$2}from'./chunk-IZ7LLPPV.js';export{a as useId,c as useIdScope,b as useIds}from'./chunk-IZ7LLPPV.js';import {createContext,forwardRef,useCallback,useRef,useState,useEffect,useLayoutEffect,useMemo,useContext,Children}from'react';import {createComponentWarnings,initFocusVisible,isFocusVisible,focusWithVisibleRing,findFocusNeighbor,createFocusReturn}from'@compa11y/core';export{announce,announceAssertive,announceError,announcePolite,announceProgress,announceStatus,aria,buildAriaProps,checks,createComponentWarnings,hasAccessibleName,isAndroid,isBrowser,isIOS,isMac,mergeAriaIds,prefersDarkMode,prefersHighContrast,prefersReducedMotion,setWarningHandler,warn}from'@compa11y/core';import {jsxs,jsx,Fragment}from'react/jsx-runtime';function oe(){let[d,t]=useState(false);useEffect(()=>initFocusVisible(),[]);let l=useCallback(()=>{t(isFocusVisible());},[]),r=useCallback(()=>{t(false);},[]);return {isFocusVisible:d,focusProps:{onFocus:l,onBlur:r}}}function Vt(d={}){let{autoFocus:t=false,restoreFocus:l=false,focusVisible:r=true}=d,e=useCallback(n=>{n&&t&&requestAnimationFrame(()=>{r?focusWithVisibleRing(n):n.focus();});},[t,r]);return useEffect(()=>{if(!l)return;let n=document.activeElement;return ()=>{n&&n.focus&&n.focus();}},[l]),e}function Dt(){let d=useCallback(l=>{},[]),t=useCallback(l=>{let r=d;r.current&&(l?.visible?focusWithVisibleRing(r.current):r.current.focus());},[]);return {ref:d,focus:t}}function Bt(){let[d,t]=useState(false),l=useCallback(n=>{},[]),r=useCallback(()=>{t(true);},[]),e=useCallback(n=>{let i=n.currentTarget,c=n.relatedTarget;(!c||!i.contains(c))&&t(false);},[]);return {ref:l,hasFocus:d,focusWithinProps:{onFocus:r,onBlur:e}}}function tt(d){let{itemCount:t,initialIndex:l=0,wrap:r=true,orientation:e="both",onChange:n}=d,[i,c]=useState(l),o=useRef([]);useEffect(()=>{i>=t&&c(Math.max(0,t-1));},[t,i]);let a=useCallback(f=>{let m=f;m<0?m=r?t-1:0:m>=t&&(m=r?0:t-1),c(m),n?.(m),o.current[m]?.focus();},[t,r,n]),b=useCallback((f,m)=>{let x=false;switch(f.key){case "ArrowRight":(e==="horizontal"||e==="both")&&(a(m+1),x=true);break;case "ArrowLeft":(e==="horizontal"||e==="both")&&(a(m-1),x=true);break;case "ArrowDown":(e==="vertical"||e==="both")&&(a(m+1),x=true);break;case "ArrowUp":(e==="vertical"||e==="both")&&(a(m-1),x=true);break;case "Home":a(0),x=true;break;case "End":a(t-1),x=true;break}x&&(f.preventDefault(),f.stopPropagation());},[e,a,t]),s=useCallback(f=>({ref:m=>{o.current[f]=m;},tabIndex:f===i?0:-1,onKeyDown:m=>b(m,f),onFocus:()=>{f!==i&&(c(f),n?.(f));}}),[i,b,n]);return {activeIndex:i,setActiveIndex:a,getItemProps:s,first:()=>a(0),last:()=>a(t-1),next:()=>a(i+1),previous:()=>a(i-1)}}function zt(d,t={}){let l=tt({...t,itemCount:d.length}),r=useCallback(n=>{let i=d.indexOf(n);if(i===-1)throw new Error(`Unknown item ID: ${n}`);return l.getItemProps(i)},[d,l]),e=d[l.activeIndex];return {...l,activeId:e,getItemProps:r,setActiveId:n=>{let i=d.indexOf(n);i!==-1&&l.setActiveIndex(i);}}}function Gt(d){let t=useRef(null),l=useRef(d);l.current=d;let r=useCallback(()=>t.current?findFocusNeighbor(t.current,l.current):null,[]),e=useCallback(()=>{r()?.focus();},[r]);return {ref:t,getNeighbor:r,focusNeighbor:e}}function $t(){let d=useRef(createFocusReturn()),t=useCallback(e=>{d.current.save(e);},[]),l=useCallback(e=>{d.current.return(e);},[]),r=useCallback(()=>{d.current.clear();},[]);return {save:t,returnFocus:l,clear:r}}var fn=createComponentWarnings("Select"),Ut=createContext(null);function it(){let d=useContext(Ut);if(!d)throw new Error("Select compound components must be used within a Select component");return d}function Kt(d,t,l){let r=d.length,e=t+l;e<0&&(e=r-1),e>=r&&(e=0);let n=e;for(;d[e]?.disabled;)if(e+=l,e<0&&(e=r-1),e>=r&&(e=0),e===n)return -1;return e}function jt(d){return d.findIndex(t=>!t.disabled)}function Wt(d){for(let t=d.length-1;t>=0;t--)if(!d[t]?.disabled)return t;return -1}function st({options:d,value:t,defaultValue:l,onValueChange:r,disabled:e=false,placeholder:n="Select an option...","aria-label":i,"aria-labelledby":c,children:o}){let[a,b]=useState(l??null),[s,f]=useState(false),[m,x]=useState(-1),u=useRef(null),T=t!==void 0?t:a,C=a$2("select-trigger"),I=a$2("select-listbox"),E=a$2("select-option"),p=useCallback(P=>{t===void 0&&b(P),r?.(P);},[t,r]),y=useCallback(P=>`${E}-${P}`,[E]),H=useCallback(P=>{p(P.value),f(false),x(-1),u.current?.focus();},[p]);useEffect(()=>{!i&&!c&&fn.warning("Select has no accessible label.","Add aria-label or aria-labelledby prop.");},[i,c]);let R={selectedValue:T,setSelectedValue:p,isOpen:s,setIsOpen:f,highlightedIndex:m,setHighlightedIndex:x,options:d,triggerId:C,listboxId:I,getOptionId:y,onSelect:H,triggerRef:u,placeholder:n,disabled:e};return jsx(Ut.Provider,{value:R,children:jsx("div",{"data-compa11y-select":true,"data-disabled":e||void 0,children:o})})}var lt=forwardRef(function({onKeyDown:t,onClick:l,onBlur:r,...e$1},n){let{selectedValue:i,isOpen:c,setIsOpen:o,highlightedIndex:a$2,setHighlightedIndex:b,options:s,triggerId:f,listboxId:m,getOptionId:x,onSelect:u,triggerRef:T,placeholder:C,disabled:I}=it(),{announce:E}=a(),p=e(s.map(h=>h.label),h=>{let M=s.findIndex(F=>F.label===h&&!F.disabled);M>=0&&(c||o(true),b(M));},{disabled:I}),y=useCallback((h=false)=>{o(true);let M=s.findIndex(F=>F.value===i);M>=0?b(M):b(h?Wt(s):jt(s));},[s,i,o,b]),H=a$1({ArrowDown:()=>{if(!c)y();else {let h=Kt(s,a$2,1);h>=0&&b(h);}},ArrowUp:()=>{if(!c)y(true);else {let h=Kt(s,a$2,-1);h>=0&&b(h);}},Enter:()=>{if(c&&a$2>=0){let h=s[a$2];h&&!h.disabled&&(u(h),E(`${h.label} selected`));}else c||y();},Space:()=>{if(c&&a$2>=0){let h=s[a$2];h&&!h.disabled&&(u(h),E(`${h.label} selected`));}else c||y();},Escape:()=>{c&&(o(false),b(-1));},Home:()=>{c&&b(jt(s));},End:()=>{c&&b(Wt(s));},Tab:()=>(c&&(o(false),b(-1)),false)},{preventDefault:true,stopPropagation:false}),R=h=>{t?.(h),h.defaultPrevented||H.onKeyDown(h),h.defaultPrevented||p.onKeyDown(h);},P=h=>{l?.(h),!h.defaultPrevented&&!I&&(c?(o(false),b(-1)):y());},O=h=>{r?.(h),setTimeout(()=>{o(false),b(-1);},150);},N=c&&a$2>=0?x(a$2):void 0,A=s.find(h=>h.value===i),$=A?.label??C,g=useCallback(h=>{T.current=h,typeof n=="function"?n(h):n&&(n.current=h);},[n,T]);return jsxs("button",{ref:g,id:f,type:"button",role:"combobox","aria-expanded":c,"aria-controls":m,"aria-haspopup":"listbox","aria-activedescendant":N,disabled:I,onKeyDown:R,onClick:P,onBlur:O,"data-compa11y-select-trigger":true,"data-placeholder":!A||void 0,...e$1,children:[jsx("span",{"data-compa11y-select-value":true,children:$}),jsx("span",{"aria-hidden":"true","data-compa11y-select-chevron":true,children:"\u25BC"})]})}),ct=forwardRef(function({children:t,style:l,...r},e){let{isOpen:n,options:i,listboxId:c,triggerId:o}=it(),{announce:a$1}=a(),b=useRef(null),[s,f]=useState("bottom");useEffect(()=>{n&&a$1(`${i.length} option${i.length===1?"":"s"} available`);},[n,i.length,a$1]),useLayoutEffect(()=>{if(n&&b.current){let C=b.current.getBoundingClientRect(),E=window.innerHeight-C.top,p=C.top,y=Math.min(C.height,200);E<y+50&&p>E?f("top"):f("bottom");}},[n]);let m=T=>{T.preventDefault();},x=useCallback(T=>{b.current=T,typeof e=="function"?e(T):e&&(e.current=T);},[e]);return n?jsx("ul",{ref:x,id:c,role:"listbox","aria-labelledby":o,style:{...l,...s==="top"?{bottom:"100%",top:"auto",marginBottom:"4px",marginTop:0}:{}},onMouseDown:m,"data-compa11y-select-listbox":true,"data-position":s,...r,children:t??i.map((T,C)=>jsx(we,{option:T,index:C},T.value))}):null}),we=forwardRef(function({option:t,index:l,onClick:r,onMouseEnter:e,...n},i){let{selectedValue:c,highlightedIndex:o,setHighlightedIndex:a$1,getOptionId:b,onSelect:s}=it(),{announce:f}=a(),m=useRef(null),x=c===t.value,u=o===l,T=b(l);useEffect(()=>{u&&m.current&&m.current.scrollIntoView({block:"nearest",behavior:"smooth"});},[u]);let C=p=>{r?.(p),!p.defaultPrevented&&!t.disabled&&(s(t),f(`${t.label} selected`));},I=p=>{e?.(p),t.disabled||a$1(l);},E=useCallback(p=>{m.current=p,typeof i=="function"?i(p):i&&(i.current=p);},[i]);return jsxs("li",{ref:E,id:T,role:"option","aria-selected":x,"aria-disabled":t.disabled,"data-highlighted":u,"data-selected":x,"data-disabled":t.disabled,onClick:C,onMouseEnter:I,"data-compa11y-select-option":true,...n,children:[jsx("span",{"data-compa11y-select-option-text":true,children:t.label}),x&&jsx("span",{"aria-hidden":"true","data-compa11y-select-check":true,children:"\u2713"})]})}),qt=Object.assign(st,{Trigger:lt,Listbox:ct,Option:we});var Xt=createComponentWarnings("Checkbox"),hn=()=>jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",style:{display:"block"},children:jsx("path",{d:"M2.5 6L5 8.5L9.5 3.5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})}),vn=()=>jsx("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true",style:{display:"block"},children:jsx("path",{d:"M3 6H9",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})}),Zt=createContext(null);function pt(){return useContext(Zt)}var Fe=forwardRef(function({value:t,defaultValue:l=[],onValueChange:r,disabled:e=false,legend:n,error:i,orientation:c="vertical",name:o,unstyled:a=false,className:b="",children:s,"aria-label":f,"aria-labelledby":m},x){let u=a$2("checkbox-group"),T=o||u,C=a$2("checkbox-group-error"),[I,E]=useState(l),p=t!==void 0,y=p?t:I;useEffect(()=>{!n&&!f&&!m&&Xt.warning("CheckboxGroup has no accessible label. Screen readers need this to identify the group.",'Add legend="...", aria-label="...", or aria-labelledby="..."');},[n,f,m]);let H=useCallback((g,h)=>{let M=p?t:I,F=h?[...M,g]:M.filter(K=>K!==g);p||E(F),r?.(F);},[p,t,I,r]),R={name:T,value:y,disabled:e,unstyled:a,onCheckboxChange:H},P=!!i,O={border:"none",margin:0,padding:0,minWidth:0},N=a?{padding:0,marginBottom:"0.5rem"}:{padding:0,marginBottom:"0.5rem",fontWeight:600},A={display:"flex",flexDirection:c==="horizontal"?"row":"column",flexWrap:c==="horizontal"?"wrap":void 0,gap:"var(--compa11y-checkbox-group-gap, 0.75rem)"},$=a?{marginTop:"0.25rem"}:{color:"var(--compa11y-checkbox-group-error-color, #ef4444)",fontSize:"0.8125rem",marginTop:"0.25rem"};return jsx(Zt.Provider,{value:R,children:jsxs("fieldset",{ref:x,className:b,"aria-label":f,"aria-labelledby":m,"aria-describedby":P?C:void 0,disabled:e,"data-compa11y-checkbox-group":"","data-orientation":c,"data-disabled":e?"true":void 0,style:O,children:[n&&jsx("legend",{"data-compa11y-checkbox-group-legend":"",style:N,children:n}),jsx("div",{style:A,children:s}),P&&jsx("div",{id:C,role:"alert","data-compa11y-checkbox-group-error":"",style:$,children:i})]})})});Fe.displayName="CheckboxGroup";var Oe=forwardRef(function({checked:t,defaultChecked:l=false,onCheckedChange:r,indeterminate:e=false,label:n,hint:i,error:c,disabled:o=false,value:a$1,required:b=false,unstyled:s,className:f="",size:m="md",name:x,"aria-label":u,"aria-labelledby":T,"aria-describedby":C,onClick:I,onFocus:E,onBlur:p,...y},H){let R=pt(),P=a$2("checkbox"),O=`${P}-input`,N=`${P}-label`,A=`${P}-hint`,$=`${P}-error`,{announce:g}=a(),{isFocusVisible:h,focusProps:M}=oe(),F=R!==null,K=F&&R.disabled||o,D=s??(F?R.unstyled:false),B=F?R.name:x,[q,w]=useState(l),U=F?R.value.includes(a$1||""):t!==void 0?t:q,j=useRef(null),W=useCallback(ue=>{j.current=ue,typeof H=="function"?H(ue):H&&(H.current=ue);},[H]);useEffect(()=>{j.current&&(j.current.indeterminate=e);},[e]),useEffect(()=>{!n&&!u&&!T&&Xt.warning("Checkbox has no accessible label. Screen readers need this to identify the checkbox.",'Add label="...", aria-label="...", or aria-labelledby="..."');},[n,u,T]);let z=useCallback(ue=>{let Me=ue.target.checked;F?R.onCheckboxChange(a$1||"",Me):(t===void 0&&w(Me),r?.(Me)),g(`${typeof n=="string"?n:u||"Checkbox"} ${Me?"checked":"unchecked"}`);},[F,R,a$1,t,r,n,u,g]),Z=useCallback(ue=>{M.onFocus(),E?.(ue);},[M,E]),ne=useCallback(ue=>{M.onBlur(),p?.(ue);},[M,p]),J=!!n,Q=!!i,re=!!c,Y=[];C&&Y.push(C),Q&&Y.push(A),re&&Y.push($);let be=Y.length?Y.join(" "):void 0,S={sm:{box:16},md:{box:20},lg:{box:24}}[m],L={display:"inline-flex",alignItems:"flex-start",gap:"0.5rem",cursor:K?"not-allowed":"pointer",userSelect:"none",...K&&!D?{opacity:.5}:{}},k={position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},V={position:"absolute",opacity:0,width:"100%",height:"100%",margin:0,cursor:"inherit",zIndex:1},_=D?{}:{width:S.box,height:S.box,minWidth:24,minHeight:24,border:U||e?"var(--compa11y-checkbox-checked-border, 2px solid #0066cc)":"var(--compa11y-checkbox-border, 2px solid #666)",borderRadius:"var(--compa11y-checkbox-radius, 3px)",background:U||e?"var(--compa11y-checkbox-checked-bg, #0066cc)":"var(--compa11y-checkbox-bg, white)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s ease",pointerEvents:"none",color:"var(--compa11y-checkbox-check-color, white)",...h?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}},ge={display:"flex",flexDirection:"column",gap:"0.125rem",paddingTop:"0.125rem"},To=D?{cursor:"inherit"}:{cursor:"inherit",color:"var(--compa11y-checkbox-label-color, inherit)"},Co=D?{}:{color:"var(--compa11y-checkbox-hint-color, #666)",fontSize:"0.8125rem"},Ro=D?{}:{color:"var(--compa11y-checkbox-error-color, #ef4444)",fontSize:"0.8125rem"};return jsxs("div",{className:f,"data-compa11y-checkbox":"","data-checked":U?"true":"false","data-indeterminate":e?"true":void 0,"data-disabled":K?"true":void 0,"data-size":m,style:L,children:[jsxs("div",{style:k,children:[jsx("input",{ref:W,type:"checkbox",id:O,name:B,value:a$1,checked:U,onChange:z,onClick:I,onFocus:Z,onBlur:ne,disabled:K,required:b,"aria-required":b||void 0,"aria-invalid":re||void 0,"aria-label":!J&&!T?u:void 0,"aria-labelledby":T||(J?N:void 0),"aria-describedby":be,"aria-checked":e?"mixed":U,tabIndex:K?-1:0,style:V,...y}),!D&&jsxs("div",{"data-compa11y-checkbox-indicator":"","aria-hidden":"true",style:_,children:[U&&!e&&jsx(hn,{}),e&&jsx(vn,{})]})]}),(J||Q||re)&&jsxs("div",{style:ge,children:[J&&jsxs("label",{htmlFor:O,id:N,"data-compa11y-checkbox-label":"",style:To,children:[n,b&&jsx("span",{"aria-hidden":"true",style:{color:"var(--compa11y-checkbox-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),Q&&jsx("div",{id:A,"data-compa11y-checkbox-hint":"",style:Co,children:i}),re&&jsx("div",{id:$,role:"alert","data-compa11y-checkbox-error":"",style:Ro,children:c})]})]})});Oe.displayName="Checkbox";var Ae=forwardRef(function({children:t,className:l},r){return jsx("div",{ref:r,className:l,"data-compa11y-checkbox-indicator":"","aria-hidden":"true",children:t})});Ae.displayName="CheckboxIndicator";var Jt=Object.assign(Oe,{Group:Fe,Indicator:Ae});var En=createComponentWarnings("RadioGroup"),mt=createContext(null);function xt(){let d=useContext(mt);if(!d)throw new Error("[Compa11y RadioGroup]: Radio must be used within a RadioGroup.");return d}var Ne=forwardRef(function({value:t,defaultValue:l,onValueChange:r,disabled:e=false,discoverable:n=true,required:i=false,orientation:c="vertical",name:o,legend:a,hint:b,error:s,unstyled:f=false,className:m="",children:x,"aria-label":u,"aria-labelledby":T},C){let I=a$2("radiogroup"),E=o||I,p=a$2("radiogroup-hint"),y=a$2("radiogroup-error"),[H,R]=useState(l??null),P=t!==void 0,O=P?t:H,N=useRef(new Map);useEffect(()=>{!a&&!u&&!T&&En.warning("RadioGroup has no accessible label. Screen readers need this to identify the group.",'Add legend="...", aria-label="...", or aria-labelledby="..."');},[a,u,T]);let A=useCallback(W=>{e||(P||R(W),r?.(W));},[e,P,r]),$=useCallback((W,z)=>{N.current.set(W,z);},[]),g=useCallback(W=>{N.current.delete(W);},[]),h=useCallback((W,z)=>{N.current.set(W,z);},[]),M=useCallback(()=>{let W=[];return N.current.forEach((z,Z)=>{!z&&!e&&W.push(Z);}),W},[e]),F=useRef(null),K=C||F,D=useCallback(W=>{let z=M();if(z.length===0)return;let Z=O?z.indexOf(O):-1,ne;switch(W){case "next":ne=Z<0?0:(Z+1)%z.length;break;case "prev":ne=Z<0?z.length-1:(Z-1+z.length)%z.length;break;case "first":ne=0;break;case "last":ne=z.length-1;break}let J=z[ne];if(J!==void 0){A(J);let Q=typeof K=="object"&&K?K.current:null;Q&&Q.querySelector(`input[type="radio"][value="${CSS.escape(J)}"]`)?.focus();}},[M,O,A,K]),B=a$1({ArrowDown:()=>D("next"),ArrowRight:()=>D("next"),ArrowUp:()=>D("prev"),ArrowLeft:()=>D("prev"),Home:()=>D("first"),End:()=>D("last")},{preventDefault:true,stopPropagation:true,disabled:e}),q={name:E,value:O??null,disabled:e,discoverable:n,required:i,unstyled:f,orientation:c,onValueChange:A,registerRadio:$,unregisterRadio:g,updateRadioDisabled:h},w=[];b&&w.push(p),s&&w.push(y);let U=w.length>0?w.join(" "):void 0,j=jsxs(Fragment,{children:[jsx("div",{style:f?{display:"flex",flexDirection:c==="horizontal"?"row":"column"}:{display:"flex",flexDirection:c==="horizontal"?"row":"column",gap:"var(--compa11y-radio-gap, 0.75rem)"},children:x}),b&&jsx("div",{id:p,style:f?{}:{color:"var(--compa11y-radio-group-hint-color, #666)",fontSize:"0.8125rem",marginTop:"0.25rem"},children:b}),s&&jsx("div",{id:y,role:"alert",style:f?{}:{color:"var(--compa11y-radio-group-error-color, #ef4444)",fontSize:"0.8125rem",marginTop:"0.25rem"},children:s})]});return a?jsx(mt.Provider,{value:q,children:jsxs("fieldset",{ref:K,role:"radiogroup","aria-label":u,"aria-labelledby":T,"aria-orientation":c,"aria-required":i||void 0,"aria-disabled":e||void 0,"aria-invalid":s?true:void 0,"aria-describedby":U,className:`compa11y-radiogroup ${m}`.trim(),"data-compa11y-radiogroup":"","data-orientation":c,"data-disabled":e?"true":void 0,"data-error":s?"true":void 0,onKeyDown:B.onKeyDown,style:f?{border:"none",margin:0,padding:0,minWidth:0}:{border:"none",margin:0,padding:0,minWidth:0},children:[jsxs("legend",{style:f?{}:{padding:0,marginBottom:"var(--compa11y-radio-group-legend-gap, 0.5rem)",fontWeight:"var(--compa11y-radio-group-legend-weight, 600)",color:"var(--compa11y-radio-group-legend-color, inherit)",fontSize:"var(--compa11y-radio-group-legend-size, 1rem)"},children:[a,i&&!f&&jsxs("span",{"aria-hidden":"true",style:{color:"var(--compa11y-radio-group-required-color, #ef4444)",marginLeft:"0.125rem"},children:[" ","*"]})]}),j]})}):jsx(mt.Provider,{value:q,children:jsx("div",{ref:K,role:"radiogroup","aria-label":u,"aria-labelledby":T,"aria-orientation":c,"aria-required":i||void 0,"aria-disabled":e||void 0,"aria-invalid":s?true:void 0,"aria-describedby":U,className:`compa11y-radiogroup ${m}`.trim(),"data-compa11y-radiogroup":"","data-orientation":c,"data-disabled":e?"true":void 0,"data-error":s?"true":void 0,onKeyDown:B.onKeyDown,children:j})})});Ne.displayName="RadioGroup";var Ve=forwardRef(function({value:t,disabled:l=false,discoverable:r,label:e,hint:n,unstyled:i,className:c="",children:o,"aria-label":a$1},b){let s=xt(),f=a$2("radio"),m=a$2("radio-hint"),x=s.disabled||l,u=r??s.discoverable,T=i??s.unstyled,C=s.value===t,{announce:I}=a(),{isFocusVisible:E,focusProps:p}=oe(),y=useRef(null),H=useCallback(B=>{y.current=B,typeof b=="function"?b(B):b&&(b.current=B);},[b]);useEffect(()=>(s.registerRadio(t,x),()=>s.unregisterRadio(t)),[t]),useEffect(()=>{s.updateRadioDisabled(t,x);},[x,t]);let R=useCallback(B=>{if(x){B.preventDefault();return}s.onValueChange(t),I(`${e||(typeof o=="string"?o:null)||t} selected`,{politeness:"polite"});},[x,s,t,e,o,I]),P=useCallback(B=>{x&&B.preventDefault();},[x]),O=useCallback(B=>{p.onFocus(),!C&&!x&&s.onValueChange(t);},[p,C,x,s,t]),N=useCallback(()=>{p.onBlur();},[p]),A=!!(o||e),$=o||e,g=`${f}-label`,h=!!n,M=(()=>{if(s.value!==null)return false;let B=Array.from(y.current?.closest('[role="radiogroup"]')?.querySelectorAll('input[type="radio"]')??[]);for(let q of B){let w=q;if(!w.disabled&&w.getAttribute("aria-disabled")!=="true")return w.value===t}return false})(),F=x&&!u?-1:C||s.value===null&&M?0:-1,K=x&&!u,D=h?m:void 0;return jsxs("label",{htmlFor:f,className:`compa11y-radio-wrapper ${c}`.trim(),"data-compa11y-radio":"","data-value":t,"data-checked":C?"true":"false","data-disabled":x?"true":void 0,style:T?{display:"inline-flex",alignItems:"flex-start",cursor:x?"not-allowed":"pointer",gap:"0.5rem"}:{display:"inline-flex",alignItems:"flex-start",gap:"var(--compa11y-radio-gap, 0.5rem)",cursor:x?"not-allowed":"pointer",userSelect:"none",opacity:x?.5:1},children:[jsxs("div",{style:{position:"relative",display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},children:[jsx("input",{ref:H,type:"radio",id:f,name:s.name,value:t,checked:C,onChange:R,onClick:P,onFocus:O,onBlur:N,disabled:K,tabIndex:F,"aria-disabled":x?"true":void 0,"aria-label":A?void 0:a$1,"aria-labelledby":A?g:void 0,"aria-describedby":D,required:s.required,className:"compa11y-radio-input",style:{position:"absolute",opacity:0,width:"var(--compa11y-radio-size, 1.25rem)",height:"var(--compa11y-radio-size, 1.25rem)",margin:0,cursor:x?"not-allowed":"pointer"}}),!T&&jsx("div",{className:"compa11y-radio-circle",style:{width:"var(--compa11y-radio-size, 1.25rem)",height:"var(--compa11y-radio-size, 1.25rem)",minWidth:"24px",minHeight:"24px",border:C?"var(--compa11y-radio-checked-border, 2px solid #0066cc)":"var(--compa11y-radio-border, 2px solid #666)",borderRadius:"50%",background:C?"var(--compa11y-radio-checked-bg, #0066cc)":"var(--compa11y-radio-bg, white)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,transition:"all 0.15s ease",pointerEvents:"none",...E?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}},children:jsx("div",{"aria-hidden":"true",style:{width:"var(--compa11y-radio-dot-size, 0.5rem)",height:"var(--compa11y-radio-dot-size, 0.5rem)",borderRadius:"50%",background:"var(--compa11y-radio-dot-color, white)",opacity:C?1:0,transform:C?"scale(1)":"scale(0)",transition:"all 0.15s ease"}})})]}),(A||h)&&jsxs("div",{style:T?{}:{display:"flex",flexDirection:"column",gap:"0.125rem",paddingTop:"0.125rem"},children:[A&&jsx("span",{id:g,className:"compa11y-radio-label",style:T?{}:{color:"var(--compa11y-radio-label-color, inherit)",fontSize:"var(--compa11y-radio-label-size, 1rem)"},children:$}),h&&jsx("span",{id:m,className:"compa11y-radio-hint",style:T?{}:{color:"var(--compa11y-radio-hint-color, #666)",fontSize:"var(--compa11y-radio-hint-size, 0.8125rem)"},children:n})]})]})});Ve.displayName="Radio";var eo=Object.assign(Ne,{Radio:Ve});var kn=createComponentWarnings("Switch"),gt=forwardRef(function({checked:t,defaultChecked:l=false,onCheckedChange:r,label:e,disabled:n=false,unstyled:i=false,className:c,size:o="md","aria-label":a$3,"aria-labelledby":b,onClick:s,...f},m){let u=`${a$2("switch")}-label`,{announce:T}=a(),{isFocusVisible:C,focusProps:I}=oe(),[E,p]=useState(l),y=t!==void 0,H=y?t:E;useEffect(()=>{!e&&!a$3&&!b&&kn.warning("Switch has no accessible label. Screen readers need this to identify the switch.",'Add label="Description", aria-label="...", or aria-labelledby="..."');},[e,a$3,b]);let R=useCallback(()=>{if(n)return;let w=!H;y||p(w),r?.(w),T(`${e||a$3||"Switch"} ${w?"on":"off"}`);},[H,n,y,r,e,a$3,T]),P=useCallback(w=>{s?.(w),w.defaultPrevented||R();},[s,R]),O=a$1({Space:()=>{R();},Enter:()=>{R();}},{preventDefault:true}),N=w=>{f.onKeyDown?.(w),w.defaultPrevented||O.onKeyDown(w);},A=a$3,$=b||(e?u:void 0),g={display:"inline-flex",alignItems:"center"},M={sm:{width:32,height:18,thumb:14,translate:14},md:{width:44,height:24,thumb:20,translate:20},lg:{width:56,height:30,thumb:26,translate:26}}[o],F={position:"relative",display:"inline-flex",alignItems:"center",flexShrink:0,width:M.width,height:M.height,border:"none",padding:2,cursor:n?"not-allowed":"pointer"},K=i?{}:{backgroundColor:H?"#0066cc":"#d1d5db",borderRadius:M.height/2,transition:"background-color 0.2s ease",opacity:n?.5:1},D={position:"absolute",left:2,width:M.thumb,height:M.thumb,pointerEvents:"none",transform:H?`translateX(${M.translate}px)`:"translateX(0)"},B=i?{}:{backgroundColor:"white",borderRadius:"50%",boxShadow:"0 1px 3px rgba(0, 0, 0, 0.2)",transition:"transform 0.2s ease"},q=i?{marginLeft:8,userSelect:"none",cursor:n?"not-allowed":"pointer"}:{marginLeft:8,userSelect:"none",cursor:n?"not-allowed":"pointer",opacity:n?.5:1};return jsxs("div",{style:g,"data-compa11y-switch-wrapper":true,"data-size":o,children:[jsx("button",{ref:m,type:"button",role:"switch","aria-checked":H,"aria-label":A,"aria-labelledby":$,disabled:n,onClick:P,onKeyDown:N,className:c,style:{...F,...K,...!i&&C&&!n?{outline:"2px solid #0066cc",outlineOffset:"2px"}:{outline:"none"}},tabIndex:n?-1:0,"data-compa11y-switch":true,"data-checked":H,"data-disabled":n||void 0,"data-size":o,...f,onFocus:w=>{I.onFocus(),f.onFocus?.(w);},onBlur:w=>{I.onBlur(),f.onBlur?.(w);},children:jsx("span",{style:{...D,...B},"data-compa11y-switch-thumb":true,"aria-hidden":"true"})}),e&&jsx("label",{id:u,onClick:n?void 0:()=>R(),style:q,"data-compa11y-switch-label":true,children:e})]})});gt.displayName="Switch";var On=createComponentWarnings("Listbox"),ro=createContext(null);function ze(){let d=useContext(ro);if(!d)throw new Error("[Compa11y Listbox]: Option/Group must be used within a Listbox.");return d}var ao=createContext({groupDisabled:false}),Ge=forwardRef(function({value:t,defaultValue:l,onValueChange:r,multiple:e$1=false,disabled:n=false,discoverable:i=true,orientation:c="vertical",unstyled:o=false,className:a$3="",children:b,"aria-label":s,"aria-labelledby":f},m){let x=a$2("listbox"),{announce:u}=a(),[T,C]=useState(()=>l??(e$1?[]:"")),I=t!==void 0,E=I?t:T,p=useMemo(()=>e$1?new Set(Array.isArray(E)?E:[]):new Set(E?[String(E)]:[]),[E,e$1]),[y,H]=useState(null),R=useRef(new Map),[P,O]=useState(0),N=useCallback((v,S,L)=>{R.current.set(v,{disabled:S,label:L}),O(k=>k+1);},[]),A=useCallback(v=>{R.current.delete(v),O(S=>S+1);},[]),$=useCallback((v,S)=>{let L=R.current.get(v);L&&R.current.set(v,{...L,disabled:S});},[]),g=useMemo(()=>{let v=[];return R.current.forEach((S,L)=>{!S.disabled&&!n&&v.push(L);}),v},[P,n]);useEffect(()=>{!s&&!f&&On.warning("Listbox has no accessible label. Screen readers need this.",'Add aria-label="..." or aria-labelledby="..."');},[s,f]);let h=useCallback(v=>p.has(v),[p]),M=useCallback(v=>{if(n)return;let S=R.current.get(v);if(S?.disabled)return;let L,k=S?.label||v;if(e$1){let V=new Set(p);V.has(v)?(V.delete(v),u(`${k} deselected`,{politeness:"polite"})):(V.add(v),u(`${k} selected`,{politeness:"polite"})),L=Array.from(V);}else L=v,u(`${k} selected`,{politeness:"polite"});I||C(L),r?.(L);},[n,e$1,p,I,r,u]),F=useCallback(v=>{if(g.length===0)return;let S=y?g.indexOf(y):-1,L;switch(v){case "next":L=S<0?0:Math.min(S+1,g.length-1);break;case "prev":L=S<0?g.length-1:Math.max(S-1,0);break;case "first":L=0;break;case "last":L=g.length-1;break}let k=g[L];if(k!==void 0)if(H(k),e$1){let _=R.current.get(k)?.label||k,ge=p.has(k);u(`${_}${ge?", selected":""}`,{politeness:"polite"});}else {let _=R.current.get(k)?.label||k,ge=k;I||C(ge),r?.(ge),u(`${_} selected`,{politeness:"polite"});}},[g,y,e$1,I,r,u,p]),K=useCallback(()=>{y&&e$1&&M(y);},[y,e$1,M]),D=useCallback(v=>{if(g.length===0)return;let S=y?g.indexOf(y):-1,L;v==="next"?L=S<0?0:Math.min(S+1,g.length-1):L=S<0?g.length-1:Math.max(S-1,0);let k=g[L];k!==void 0&&(H(k),M(k));},[g,y,M]),B=useCallback(()=>{if(!e$1||!y)return;let v=g.indexOf(y);if(v<0)return;let S=g.slice(0,v+1),L=new Set(p);S.forEach(V=>L.add(V));let k=Array.from(L);I||C(k),r?.(k),H(g[0]??null),u(`${S.length} items selected`,{politeness:"polite"});},[e$1,y,g,p,I,r,u]),q=useCallback(()=>{if(!e$1||!y)return;let v=g.indexOf(y);if(v<0)return;let S=g.slice(v),L=new Set(p);S.forEach(V=>L.add(V));let k=Array.from(L);I||C(k),r?.(k),H(g[g.length-1]??null),u(`${S.length} items selected`,{politeness:"polite"});},[e$1,y,g,p,I,r,u]),w=useCallback(()=>{if(!e$1)return;let v=g.every(L=>p.has(L)),S;v?(S=[],u("All deselected",{politeness:"polite"})):(S=[...g],u("All selected",{politeness:"polite"})),I||C(S),r?.(S);},[e$1,g,p,I,r,u]),U=useMemo(()=>{let v={ArrowDown:()=>F("next"),ArrowUp:()=>F("prev"),Home:()=>F("first"),End:()=>F("last")};return e$1&&(v.Space=()=>K(),v["Shift+ArrowDown"]=()=>D("next"),v["Shift+ArrowUp"]=()=>D("prev"),v["Ctrl+Shift+Home"]=()=>B(),v["Ctrl+Shift+End"]=()=>q(),v["Ctrl+a"]=()=>w(),v["Meta+a"]=()=>w()),v},[e$1,F,K,D,B,q,w]),j=a$1(U,{preventDefault:true,stopPropagation:true,disabled:n}),W=useMemo(()=>Array.from(R.current.values()).map(v=>v.label),[P]),z=e(W,v=>{for(let[S,L]of R.current.entries())if(L.label===v&&!L.disabled){if(H(S),!e$1){let k=S;I||C(k),r?.(k),u(`${v} selected`,{politeness:"polite"});}break}},{disabled:n}),Z=useCallback(v=>{j.onKeyDown(v),v.defaultPrevented||z.onKeyDown(v);},[j,z]),ne=useCallback(()=>{if(!y){if(!e$1&&E&&typeof E=="string"){H(E);return}if(e$1&&Array.isArray(E)&&E.length>0){H(E[0]??null);return}g.length>0&&H(g[0]??null);}},[y,e$1,E,g]),J=useCallback(()=>{},[]),Q=useRef(null);useEffect(()=>{y&&Q.current&&Q.current.querySelector(`[data-value="${CSS.escape(y)}"]`)?.scrollIntoView({block:"nearest"});},[y]);let re=useMemo(()=>({multiple:e$1,disabled:n,discoverable:i,unstyled:o,orientation:c,selectedValues:p,focusedValue:y,onSelect:M,onFocusOption:H,registerOption:N,unregisterOption:A,updateOptionDisabled:$,isSelected:h,listboxId:x}),[e$1,n,i,o,c,p,y,M,N,A,$,h,x]),Y=useCallback(v=>{Q.current=v,typeof m=="function"?m(v):m&&(m.current=v);},[m]),be=y?`${x}-option-${y}`:void 0;return jsx(ro.Provider,{value:re,children:jsx("div",{ref:Y,role:"listbox","aria-label":s,"aria-labelledby":f,"aria-orientation":c,"aria-multiselectable":e$1||void 0,"aria-disabled":n||void 0,"aria-activedescendant":be,tabIndex:n&&!i?-1:0,className:`compa11y-listbox ${a$3}`.trim(),"data-compa11y-listbox":"","data-orientation":c,"data-disabled":n?"true":void 0,"data-multiple":e$1?"true":void 0,onKeyDown:Z,onFocus:ne,onBlur:J,style:o?{}:{width:"var(--compa11y-listbox-width, 250px)",maxHeight:"var(--compa11y-listbox-max-height, 300px)",overflowY:"auto",border:"var(--compa11y-listbox-border, 1px solid #e0e0e0)",borderRadius:"var(--compa11y-listbox-radius, 4px)",background:"var(--compa11y-listbox-bg, white)",padding:"var(--compa11y-listbox-padding, 0.25rem 0)",...n?{opacity:"var(--compa11y-listbox-disabled-opacity, 0.5)",cursor:"not-allowed"}:{}},children:b})})});Ge.displayName="Listbox";var $e=forwardRef(function({value:t,disabled:l=false,discoverable:r,unstyled:e,className:n="",children:i,"aria-label":c},o){let a=ze(),{groupDisabled:b}=useContext(ao),s=a.disabled||b||l,f=e??a.unstyled,m=a.isSelected(t),x=a.focusedValue===t,u=`${a.listboxId}-option-${t}`,T=useRef(""),C=useRef(null),I=useCallback(p=>{C.current=p,typeof o=="function"?o(p):o&&(o.current=p);},[o]);useEffect(()=>{let p=typeof i=="string"?i:C.current?.textContent?.trim()||t;return T.current=p,a.registerOption(t,s,p),()=>a.unregisterOption(t)},[t]),useEffect(()=>{a.updateOptionDisabled(t,s);},[s,t]);let E=useCallback(p=>{if(s){p.preventDefault();return}a.onFocusOption(t),a.onSelect(t);},[s,a,t]);return jsxs("div",{ref:I,id:u,role:"option","aria-selected":m,"aria-disabled":s||void 0,"aria-label":c,className:`compa11y-listbox-option ${n}`.trim(),"data-compa11y-listbox-option":"","data-value":t,"data-selected":m?"true":"false","data-focused":x?"true":"false","data-disabled":s?"true":void 0,onClick:E,style:f?{cursor:s?"not-allowed":"pointer"}:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"var(--compa11y-listbox-option-padding, 0.5rem 0.75rem)",cursor:s?"not-allowed":"pointer",userSelect:"none",transition:"background 0.1s ease",background:x?m?"var(--compa11y-listbox-option-selected-hover-bg, #cce0ff)":"var(--compa11y-listbox-option-hover-bg, #f5f5f5)":m?"var(--compa11y-listbox-option-selected-bg, #e6f0ff)":"transparent",fontWeight:m?500:"normal",opacity:s?.5:1},children:[jsx("span",{style:{flex:1},children:i}),m&&!f&&jsx("span",{"aria-hidden":"true",style:{fontSize:"0.875rem",color:"var(--compa11y-listbox-check-color, #0066cc)",marginLeft:"0.5rem"},children:"\u2713"})]})});$e.displayName="ListboxOption";var Ke=forwardRef(function({label:t,disabled:l=false,unstyled:r,className:e="",children:n},i){let c=ze(),o=r??c.unstyled,a=a$2("listbox-group"),b=useMemo(()=>({groupDisabled:c.disabled||l}),[c.disabled,l]);return jsx(ao.Provider,{value:b,children:jsxs("div",{ref:i,role:"group","aria-labelledby":a,"aria-disabled":l||void 0,className:`compa11y-listbox-group ${e}`.trim(),"data-compa11y-listbox-group":"","data-disabled":l?"true":void 0,style:o?{}:{opacity:l?.5:1},children:[jsx("div",{id:a,role:"presentation",style:o?{}:{padding:"var(--compa11y-listbox-group-label-padding, 0.5rem 0.75rem 0.25rem)",fontSize:"var(--compa11y-listbox-group-label-size, 0.75rem)",fontWeight:600,color:"var(--compa11y-listbox-group-label-color, #666)",textTransform:"uppercase",letterSpacing:"0.05em"},children:t}),n]})})});Ke.displayName="ListboxGroup";var io=Object.assign(Ge,{Option:$e,Group:Ke});var bo=createContext(null);function Re(){let d=useContext(bo);if(!d)throw new Error("[Compa11y Input]: Input sub-components (Input.Label, Input.Field, etc.) must be used within <Input>.");return d}var je=forwardRef(function({children:t,className:l},r){let e=Re();return jsxs("label",{ref:r,id:e.labelId,htmlFor:e.fieldId,"data-compa11y-input-label":"",className:l,style:e.unstyled?{}:{display:"block",color:e.disabled?"var(--compa11y-input-disabled-color, #999)":"var(--compa11y-input-label-color, inherit)",fontSize:"var(--compa11y-input-label-size, 0.875rem)",fontWeight:"var(--compa11y-input-label-weight, 500)"},children:[t,e.required&&jsx("span",{"data-compa11y-input-required":"","aria-hidden":"true",style:e.unstyled?{}:{color:"var(--compa11y-input-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]})});je.displayName="InputLabel";var We=forwardRef(function({type:t="text",onFocus:l,onBlur:r,className:e,style:n,...i},c){let o=Re(),a=useRef(null),b=useCallback(u=>{a.current=u,typeof c=="function"?c(u):c&&(c.current=u);},[c]),s=useCallback(u=>{o.setValue(u.target.value);},[o.setValue]),f=useCallback(u=>{o.focusProps.onFocus(),l?.(u);},[o.focusProps,l]),m=useCallback(u=>{o.focusProps.onBlur(),r?.(u);},[o.focusProps,r]),x=[];return o.hasHint&&x.push(o.hintId),o.hasError&&x.push(o.errorId),jsx("input",{ref:b,id:o.fieldId,type:t,value:o.value,onChange:s,onFocus:f,onBlur:m,disabled:o.disabled,readOnly:o.readOnly,"aria-describedby":x.join(" ")||void 0,"aria-invalid":o.hasError?"true":void 0,"aria-required":o.required?"true":void 0,"data-compa11y-input-field":"",className:e,style:o.unstyled?n:{width:"100%",padding:"var(--compa11y-input-padding, 0.5rem 0.75rem)",border:o.hasError?"1px solid var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border, 1px solid #ccc)",borderRadius:"var(--compa11y-input-radius, 4px)",fontSize:"var(--compa11y-input-font-size, 0.875rem)",fontFamily:"inherit",background:o.disabled?"var(--compa11y-input-disabled-bg, #f5f5f5)":o.readOnly?"var(--compa11y-input-readonly-bg, #f9f9f9)":"var(--compa11y-input-bg, white)",color:"inherit",cursor:o.disabled?"not-allowed":void 0,opacity:o.disabled?"var(--compa11y-input-disabled-opacity, 0.7)":void 0,...o.isFocusVisible&&!o.disabled?{outline:o.hasError?"2px solid var(--compa11y-input-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:o.hasError?"var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border-focus, #0066cc)"}:{},...n},...i})});We.displayName="InputField";var Ue=forwardRef(function({children:t,className:l},r){let e=Re();return useEffect(()=>(e.setHasHint(true),()=>e.setHasHint(false)),[]),jsx("div",{ref:r,id:e.hintId,"data-compa11y-input-hint":"",className:l,style:e.unstyled?{}:{color:"var(--compa11y-input-hint-color, #666)",fontSize:"var(--compa11y-input-hint-size, 0.8125rem)"},children:t})});Ue.displayName="InputHint";var qe=forwardRef(function({children:t,className:l},r){let e=Re();return t?jsx("div",{ref:r,id:e.errorId,role:"alert","data-compa11y-input-error":"",className:l,style:e.unstyled?{}:{color:"var(--compa11y-input-error-color, #ef4444)",fontSize:"var(--compa11y-input-error-size, 0.8125rem)"},children:t}):null});qe.displayName="InputError";var _e=forwardRef(function({value:t,defaultValue:l="",onValueChange:r,type:e="text",label:n,hint:i,error:c,required:o=false,disabled:a=false,readOnly:b=false,"aria-label":s,"aria-labelledby":f,placeholder:m,name:x,autoComplete:u,maxLength:T,minLength:C,pattern:I,inputMode:E,id:p,unstyled:y=false,className:H,onFocus:R,onBlur:P,children:O},N){let A=a$2("input"),$=p||A,g=`${$}-field`,h=`${$}-label`,M=`${$}-hint`,F=`${$}-error`,[K,D]=useState(l),B=t!==void 0,q=B?t:K,[w,U]=useState(false),j=useCallback(_=>{B||D(_),r?.(_);},[B,r]),{isFocusVisible:W,focusProps:z}=oe(),Z=useRef(null),ne=useCallback(_=>{Z.current=_,typeof N=="function"?N(_):N&&(N.current=_);},[N]),J=useCallback(_=>{j(_.target.value);},[j]),Q=useCallback(_=>{z.onFocus(),R?.(_);},[z,R]),re=useCallback(_=>{z.onBlur(),P?.(_);},[z,P]);useEffect(()=>{process.env.NODE_ENV!=="production"&&!(Children.count(O)>0)&&!n&&!s&&!f&&console.warn("[Compa11y Input]: Input has no accessible label. Screen readers need this to identify the input. Use label prop, aria-label, or aria-labelledby.");},[O,n,s,f]);let Y=!!c,be=Children.count(O)>0,v={fieldId:g,labelId:h,hintId:M,errorId:F,value:q,setValue:j,hasError:Y,hasHint:be?w:!!i,setHasHint:U,disabled:a,readOnly:b,required:o,isFocusVisible:W,focusProps:z,unstyled:y},S={"data-compa11y-input":"","data-error":Y?"true":"false","data-disabled":a?"true":"false","data-required":o?"true":"false","data-readonly":b?"true":"false"},L=y?{}:{display:"flex",flexDirection:"column",gap:"0.25rem"};if(be)return jsx(bo.Provider,{value:v,children:jsx("div",{...S,className:H,style:L,children:O})});let k=[];i&&k.push(M),Y&&k.push(F);let V=k.length>0?k.join(" "):void 0;return jsxs("div",{...S,className:H,style:L,children:[n&&jsxs("label",{id:h,htmlFor:g,"data-compa11y-input-label":"",style:y?{}:{display:"block",color:a?"var(--compa11y-input-disabled-color, #999)":"var(--compa11y-input-label-color, inherit)",fontSize:"var(--compa11y-input-label-size, 0.875rem)",fontWeight:"var(--compa11y-input-label-weight, 500)"},children:[n,o&&jsx("span",{"data-compa11y-input-required":"","aria-hidden":"true",style:y?{}:{color:"var(--compa11y-input-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),jsx("input",{ref:ne,id:g,type:e,value:q,onChange:J,onFocus:Q,onBlur:re,disabled:a,readOnly:b,required:o,placeholder:m,name:x,autoComplete:u,maxLength:T,minLength:C,pattern:I,inputMode:E,"aria-label":n?void 0:s,"aria-labelledby":!n&&f?f:n?h:void 0,"aria-describedby":V,"aria-invalid":Y?"true":void 0,"aria-required":o?"true":void 0,"data-compa11y-input-field":"",style:y?{}:{width:"100%",padding:"var(--compa11y-input-padding, 0.5rem 0.75rem)",border:Y?"1px solid var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border, 1px solid #ccc)",borderRadius:"var(--compa11y-input-radius, 4px)",fontSize:"var(--compa11y-input-font-size, 0.875rem)",fontFamily:"inherit",background:a?"var(--compa11y-input-disabled-bg, #f5f5f5)":b?"var(--compa11y-input-readonly-bg, #f9f9f9)":"var(--compa11y-input-bg, white)",color:"inherit",cursor:a?"not-allowed":void 0,opacity:a?"var(--compa11y-input-disabled-opacity, 0.7)":void 0,...W&&!a?{outline:Y?"2px solid var(--compa11y-input-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:Y?"var(--compa11y-input-border-error, #ef4444)":"var(--compa11y-input-border-focus, #0066cc)"}:{}}}),i&&jsx("div",{id:M,"data-compa11y-input-hint":"",style:y?{}:{color:"var(--compa11y-input-hint-color, #666)",fontSize:"var(--compa11y-input-hint-size, 0.8125rem)"},children:i}),Y&&jsx("div",{id:F,role:"alert","data-compa11y-input-error":"",style:y?{}:{color:"var(--compa11y-input-error-color, #ef4444)",fontSize:"var(--compa11y-input-error-size, 0.8125rem)"},children:c})]})});_e.displayName="Input";var fo=Object.assign(_e,{Label:je,Field:We,Hint:Ue,Error:qe});var zn={primary:{background:"var(--compa11y-button-primary-bg, #0066cc)",color:"var(--compa11y-button-primary-color, white)",border:"var(--compa11y-button-primary-border, 1px solid #0066cc)"},secondary:{background:"var(--compa11y-button-secondary-bg, white)",color:"var(--compa11y-button-secondary-color, #333)",border:"var(--compa11y-button-secondary-border, 1px solid #ccc)"},danger:{background:"var(--compa11y-button-danger-bg, #ef4444)",color:"var(--compa11y-button-danger-color, white)",border:"var(--compa11y-button-danger-border, 1px solid #ef4444)"},outline:{background:"var(--compa11y-button-outline-bg, transparent)",color:"var(--compa11y-button-outline-color, #0066cc)",border:"var(--compa11y-button-outline-border, 1px solid #0066cc)"},ghost:{background:"var(--compa11y-button-ghost-bg, transparent)",color:"var(--compa11y-button-ghost-color, #333)",border:"var(--compa11y-button-ghost-border, 1px solid transparent)"}},Gn={sm:{padding:"var(--compa11y-button-padding-sm, 0.25rem 0.5rem)",fontSize:"var(--compa11y-button-font-size-sm, 0.75rem)"},md:{padding:"var(--compa11y-button-padding-md, 0.5rem 1rem)",fontSize:"var(--compa11y-button-font-size-md, 0.875rem)"},lg:{padding:"var(--compa11y-button-padding-lg, 0.75rem 1.5rem)",fontSize:"var(--compa11y-button-font-size-lg, 1rem)"}},Ct=forwardRef(function({variant:t="secondary",size:l="md",type:r="button",disabled:e=false,discoverable:n=false,loading:i=false,unstyled:c=false,"aria-label":o,className:a,style:b,onClick:s,onFocus:f,onBlur:m,children:x,...u},T){let C=a$2("button"),I=useRef(null),E=useCallback(g=>{I.current=g,typeof T=="function"?T(g):T&&(T.current=g);},[T]),{isFocusVisible:p,focusProps:y}=oe();useEffect(()=>{process.env.NODE_ENV!=="production"&&!x&&!o&&!u["aria-labelledby"]&&console.warn("[Compa11y Button]: Button has no accessible label. Screen readers need this to identify the button. Add text content, aria-label, or aria-labelledby.");},[x,o,u["aria-labelledby"]]);let H=e&&!n,R=e||i,P=useCallback(g=>{if(R){g.preventDefault();return}s?.(g);},[R,s]),O=useCallback(g=>{y.onFocus(),f?.(g);},[y,f]),N=useCallback(g=>{y.onBlur(),m?.(g);},[y,m]),A={"data-compa11y-button":"","data-variant":t,"data-size":l,"data-disabled":e?"true":"false","data-loading":i?"true":"false"},$=c?{}:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:"0.5rem",borderRadius:"var(--compa11y-button-radius, 4px)",fontFamily:"inherit",fontWeight:"var(--compa11y-button-font-weight, 500)",lineHeight:"1.5",cursor:R?"not-allowed":"pointer",opacity:e?"var(--compa11y-button-disabled-opacity, 0.5)":void 0,transition:"background-color 0.15s ease, border-color 0.15s ease",...zn[t],...Gn[l],...p&&!H?{outline:"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"2px"}:{}};return jsxs("button",{ref:E,id:C,type:r,disabled:H,tabIndex:e&&!n?void 0:0,"aria-disabled":R?"true":void 0,"aria-busy":i?"true":void 0,"aria-label":o,onClick:P,onFocus:O,onBlur:N,className:a,style:{...$,...b},...A,...u,children:[i&&jsx("span",{"data-compa11y-button-spinner":"","aria-hidden":"true",style:c?{}:{display:"inline-block",width:"1em",height:"1em",border:"2px solid currentColor",borderRightColor:"transparent",borderRadius:"50%",animation:"compa11y-spin 0.6s linear infinite"}}),x]})});Ct.displayName="Button";var ho=createContext(null);function Ie(){let d=useContext(ho);if(!d)throw new Error("[Compa11y Textarea]: Textarea sub-components (Textarea.Label, Textarea.Field, etc.) must be used within <Textarea>.");return d}var Xe=forwardRef(function({children:t,className:l},r){let e=Ie();return jsxs("label",{ref:r,id:e.labelId,htmlFor:e.fieldId,"data-compa11y-textarea-label":"",className:l,style:e.unstyled?{}:{display:"block",color:e.disabled?"var(--compa11y-textarea-disabled-color, #999)":"var(--compa11y-textarea-label-color, inherit)",fontSize:"var(--compa11y-textarea-label-size, 0.875rem)",fontWeight:"var(--compa11y-textarea-label-weight, 500)"},children:[t,e.required&&jsx("span",{"data-compa11y-textarea-required":"","aria-hidden":"true",style:e.unstyled?{}:{color:"var(--compa11y-textarea-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]})});Xe.displayName="TextareaLabel";var Ze=forwardRef(function({onFocus:t,onBlur:l,className:r,style:e,rows:n,...i},c){let o=Ie(),a=useRef(null),b=useCallback(u=>{a.current=u,typeof c=="function"?c(u):c&&(c.current=u);},[c]),s=useCallback(u=>{o.setValue(u.target.value);},[o.setValue]),f=useCallback(u=>{o.focusProps.onFocus(),t?.(u);},[o.focusProps,t]),m=useCallback(u=>{o.focusProps.onBlur(),l?.(u);},[o.focusProps,l]),x=[];return o.hasHint&&x.push(o.hintId),o.hasError&&x.push(o.errorId),jsx("textarea",{ref:b,id:o.fieldId,rows:n??o.rows,value:o.value,onChange:s,onFocus:f,onBlur:m,disabled:o.disabled,readOnly:o.readOnly,"aria-describedby":x.join(" ")||void 0,"aria-invalid":o.hasError?"true":void 0,"aria-required":o.required?"true":void 0,"data-compa11y-textarea-field":"",className:r,style:o.unstyled?e:{width:"100%",padding:"var(--compa11y-textarea-padding, 0.5rem 0.75rem)",border:o.hasError?"1px solid var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border, 1px solid #ccc)",borderRadius:"var(--compa11y-textarea-radius, 4px)",fontSize:"var(--compa11y-textarea-font-size, 0.875rem)",fontFamily:"inherit",lineHeight:"1.5",resize:o.resize,background:o.disabled?"var(--compa11y-textarea-disabled-bg, #f5f5f5)":o.readOnly?"var(--compa11y-textarea-readonly-bg, #f9f9f9)":"var(--compa11y-textarea-bg, white)",color:"inherit",cursor:o.disabled?"not-allowed":void 0,opacity:o.disabled?"var(--compa11y-textarea-disabled-opacity, 0.7)":void 0,...o.isFocusVisible&&!o.disabled?{outline:o.hasError?"2px solid var(--compa11y-textarea-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:o.hasError?"var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border-focus, #0066cc)"}:{},...e},...i})});Ze.displayName="TextareaField";var Je=forwardRef(function({children:t,className:l},r){let e=Ie();return useEffect(()=>(e.setHasHint(true),()=>e.setHasHint(false)),[]),jsx("div",{ref:r,id:e.hintId,"data-compa11y-textarea-hint":"",className:l,style:e.unstyled?{}:{color:"var(--compa11y-textarea-hint-color, #666)",fontSize:"var(--compa11y-textarea-hint-size, 0.8125rem)"},children:t})});Je.displayName="TextareaHint";var Qe=forwardRef(function({children:t,className:l},r){let e=Ie();return t?jsx("div",{ref:r,id:e.errorId,role:"alert","data-compa11y-textarea-error":"",className:l,style:e.unstyled?{}:{color:"var(--compa11y-textarea-error-color, #ef4444)",fontSize:"var(--compa11y-textarea-error-size, 0.8125rem)"},children:t}):null});Qe.displayName="TextareaError";var et=forwardRef(function({value:t,defaultValue:l="",onValueChange:r,rows:e=3,resize:n="vertical",label:i,hint:c,error:o,required:a=false,disabled:b=false,readOnly:s=false,"aria-label":f,"aria-labelledby":m,placeholder:x,name:u,autoComplete:T,maxLength:C,minLength:I,id:E,unstyled:p=false,className:y,onFocus:H,onBlur:R,children:P},O){let N=a$2("textarea"),A=E||N,$=`${A}-field`,g=`${A}-label`,h=`${A}-hint`,M=`${A}-error`,[F,K]=useState(l),D=t!==void 0,B=D?t:F,q=useCallback(V=>{D||K(V),r?.(V);},[D,r]),{isFocusVisible:w,focusProps:U}=oe();useEffect(()=>{process.env.NODE_ENV!=="production"&&!(Children.count(P)>0)&&!i&&!f&&!m&&console.warn("[Compa11y Textarea]: Textarea has no accessible label. Screen readers need this to identify the textarea. Use label prop, aria-label, or aria-labelledby.");},[P,i,f,m]);let j=!!o,[W,z]=useState(false),Z=Children.count(P)>0,ne={fieldId:$,labelId:g,hintId:h,errorId:M,value:B,setValue:q,hasError:j,hasHint:Z?W:!!c,setHasHint:z,disabled:b,readOnly:s,required:a,rows:e,resize:n,isFocusVisible:w,focusProps:U,unstyled:p},J={"data-compa11y-textarea":"","data-error":j?"true":"false","data-disabled":b?"true":"false","data-required":a?"true":"false","data-readonly":s?"true":"false"},Q=p?{}:{display:"flex",flexDirection:"column",gap:"0.25rem"},re=useRef(null),Y=useCallback(V=>{re.current=V,typeof O=="function"?O(V):O&&(O.current=V);},[O]),be=useCallback(V=>{q(V.target.value);},[q]),v=useCallback(V=>{U.onFocus(),H?.(V);},[U,H]),S=useCallback(V=>{U.onBlur(),R?.(V);},[U,R]);if(Z)return jsx(ho.Provider,{value:ne,children:jsx("div",{...J,className:y,style:Q,children:P})});let L=[];c&&L.push(h),j&&L.push(M);let k=L.length>0?L.join(" "):void 0;return jsxs("div",{...J,className:y,style:Q,children:[i&&jsxs("label",{id:g,htmlFor:$,"data-compa11y-textarea-label":"",style:p?{}:{display:"block",color:b?"var(--compa11y-textarea-disabled-color, #999)":"var(--compa11y-textarea-label-color, inherit)",fontSize:"var(--compa11y-textarea-label-size, 0.875rem)",fontWeight:"var(--compa11y-textarea-label-weight, 500)"},children:[i,a&&jsx("span",{"data-compa11y-textarea-required":"","aria-hidden":"true",style:p?{}:{color:"var(--compa11y-textarea-required-color, #ef4444)",marginLeft:"0.125rem"},children:"*"})]}),jsx("textarea",{ref:Y,id:$,rows:e,value:B,onChange:be,onFocus:v,onBlur:S,disabled:b,readOnly:s,required:a,placeholder:x,name:u,autoComplete:T,maxLength:C,minLength:I,"aria-label":i?void 0:f,"aria-labelledby":!i&&m?m:i?g:void 0,"aria-describedby":k,"aria-invalid":j?"true":void 0,"aria-required":a?"true":void 0,"data-compa11y-textarea-field":"",style:p?{}:{width:"100%",padding:"var(--compa11y-textarea-padding, 0.5rem 0.75rem)",border:j?"1px solid var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border, 1px solid #ccc)",borderRadius:"var(--compa11y-textarea-radius, 4px)",fontSize:"var(--compa11y-textarea-font-size, 0.875rem)",fontFamily:"inherit",lineHeight:"1.5",resize:n,background:b?"var(--compa11y-textarea-disabled-bg, #f5f5f5)":s?"var(--compa11y-textarea-readonly-bg, #f9f9f9)":"var(--compa11y-textarea-bg, white)",color:"inherit",cursor:b?"not-allowed":void 0,opacity:b?"var(--compa11y-textarea-disabled-opacity, 0.7)":void 0,...w&&!b?{outline:j?"2px solid var(--compa11y-textarea-border-error, #ef4444)":"2px solid var(--compa11y-focus-color, #0066cc)",outlineOffset:"-1px",borderColor:j?"var(--compa11y-textarea-border-error, #ef4444)":"var(--compa11y-textarea-border-focus, #0066cc)"}:{}}}),c&&jsx("div",{id:h,"data-compa11y-textarea-hint":"",style:p?{}:{color:"var(--compa11y-textarea-hint-color, #666)",fontSize:"var(--compa11y-textarea-hint-size, 0.8125rem)"},children:c}),j&&jsx("div",{id:M,role:"alert","data-compa11y-textarea-error":"",style:p?{}:{color:"var(--compa11y-textarea-error-color, #ef4444)",fontSize:"var(--compa11y-textarea-error-size, 0.8125rem)"},children:o})]})});et.displayName="Textarea";var vo=Object.assign(et,{Label:Xe,Field:Ze,Hint:Je,Error:Qe});export{Ct as Button,Jt as Checkbox,Oe as CheckboxBase,Fe as CheckboxGroup,Ae as CheckboxIndicator,fo as Input,_e as InputBase,qe as InputError,We as InputField,Ue as InputHint,je as InputLabel,io as Listbox,Ge as ListboxBase,Ke as ListboxGroup,$e as ListboxOption,Ve as Radio,eo as RadioGroup,Ne as RadioGroupBase,qt as Select,st as SelectBase,ct as SelectListbox,we as SelectOptionItem,lt as SelectTrigger,gt as Switch,vo as Textarea,et as TextareaBase,Qe as TextareaError,Ze as TextareaField,Je as TextareaHint,Xe as TextareaLabel,pt as useCheckboxGroupContext,Dt as useFocusControl,Vt as useFocusManager,Gt as useFocusNeighbor,$t as useFocusReturn,oe as useFocusVisible,Bt as useFocusWithin,Re as useInputContext,ze as useListboxContext,xt as useRadioGroupContext,tt as useRovingTabindex,zt as useRovingTabindexMap,Ie as useTextareaContext};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compa11y/react",
3
- "version": "0.1.3",
3
+ "version": "0.1.6",
4
4
  "description": "Accessible React components that just work",
5
5
  "author": "Ivan Trajkovski",
6
6
  "license": "MIT",
@@ -11,7 +11,7 @@
11
11
  "main": "./dist/index.js",
12
12
  "module": "./dist/index.mjs",
13
13
  "types": "./dist/index.d.ts",
14
- "homepage": "https://github.com/trajkovskiivan/compa11y#readme",
14
+ "homepage": "https://compa11y.org",
15
15
  "bugs": {
16
16
  "url": "https://github.com/trajkovskiivan/compa11y/issues"
17
17
  },
@@ -93,7 +93,7 @@
93
93
  "LICENSE"
94
94
  ],
95
95
  "dependencies": {
96
- "@compa11y/core": "0.1.3"
96
+ "@compa11y/core": "0.1.6"
97
97
  },
98
98
  "peerDependencies": {
99
99
  "react": ">=18.0.0",
@@ -1 +0,0 @@
1
- 'use strict';var chunkAJ7JSWUT_cjs=require('./chunk-AJ7JSWUT.cjs'),chunkMAR6RBHF_cjs=require('./chunk-MAR6RBHF.cjs'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var V=react.createContext(null);function S(){let M=react.useContext(V);if(!M)throw new Error("ActionMenu compound components must be used within an ActionMenu component");return M}var D=V.Provider;function O({defaultOpen:M=false,open:u,onOpenChange:e,children:f,unstyled:h=false}){let[d,i]=react.useState(M),c=u??d,[x,a]=react.useState(-1),r=react.useRef([]),p=react.useRef(null),m=chunkMAR6RBHF_cjs.a("action-menu"),y=chunkMAR6RBHF_cjs.a("action-menu-trigger"),n=react.useCallback(o=>{u===void 0&&i(o),e?.(o),o||a(-1);},[u,e]),l=react.useCallback(()=>n(true),[n]),g=react.useCallback(()=>n(false),[n]),s=react.useCallback(()=>n(!c),[n,c]),E=react.useCallback(o=>{let v=r.current.length;return r.current.push(o),v},[]),R=react.useCallback(o=>{let v=r.current.indexOf(o);v>-1&&r.current.splice(v,1);},[]),P=react.useCallback(()=>r.current.length,[]),t=react.useCallback(o=>{p.current?.(o),g();},[g]);return jsxRuntime.jsx(D,{value:{isOpen:c,open:l,close:g,toggle:s,highlightedIndex:x,setHighlightedIndex:a,menuId:m,triggerId:y,registerItem:E,unregisterItem:R,getItemCount:P,selectItem:t,unstyled:h},children:jsxRuntime.jsx("div",{style:{position:"relative",display:"inline-block"},"data-compa11y-action-menu":true,children:f})})}var B=react.forwardRef(function({children:u,onClick:e,onKeyDown:f,...h},d){let{isOpen:i,toggle:c,open:x,close:a,triggerId:r,menuId:p,setHighlightedIndex:m,getItemCount:y}=S(),n=s=>{e?.(s),s.defaultPrevented||c();},l=chunkAJ7JSWUT_cjs.a({ArrowDown:()=>{i||x(),m(0);},ArrowUp:()=>{i||x(),m(y()-1);},Enter:()=>c(),Space:()=>c(),Escape:()=>a()},{preventDefault:true});return jsxRuntime.jsx("button",{ref:d,id:r,type:"button",tabIndex:0,"aria-haspopup":"menu","aria-expanded":i,"aria-controls":i?p:void 0,onClick:n,onKeyDown:s=>{f?.(s),s.defaultPrevented||l.onKeyDown(s);},"data-compa11y-action-menu-trigger":true,...h,children:u})}),N=react.forwardRef(function({children:u,onKeyDown:e,style:f,...h},d){let{isOpen:i,close:c,menuId:x,triggerId:a,highlightedIndex:r,setHighlightedIndex:p,getItemCount:m,unstyled:y}=S(),n=react.useRef(null),l=()=>{if(r>=0&&n.current){let A=n.current.querySelectorAll('[role="menuitem"]')[r];A&&A.getAttribute("aria-disabled")!=="true"&&A.click();}},g=chunkAJ7JSWUT_cjs.a({ArrowDown:()=>{let t=m();p((r+1)%t);},ArrowUp:()=>{let t=m();p((r-1+t)%t);},Home:()=>p(0),End:()=>p(m()-1),Enter:()=>l(),Space:()=>l(),Escape:()=>c(),Tab:()=>(c(),false)},{preventDefault:true}),s=t=>{e?.(t),t.defaultPrevented||g.onKeyDown(t);};if(react.useEffect(()=>{i&&n.current&&n.current.focus();},[i]),react.useEffect(()=>{if(!i)return;let t=A=>{let o=A.target,v=n.current,k=document.getElementById(a);v&&!v.contains(o)&&k&&!k.contains(o)&&c();};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[i,c,a]),!i)return null;let P={...{position:"absolute",top:"100%",left:0,marginTop:"4px",zIndex:1e3},...y?{}:{minWidth:"160px",backgroundColor:"white",border:"1px solid #e0e0e0",borderRadius:"4px",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",padding:"4px 0"}};return jsxRuntime.jsx("div",{ref:t=>{n.current=t,typeof d=="function"?d(t):d&&(d.current=t);},id:x,role:"menu","aria-labelledby":a,tabIndex:-1,onKeyDown:s,style:{...P,...f},"data-compa11y-action-menu-content":true,...h,children:u})}),U=react.forwardRef(function({children:u,disabled:e=false,onSelect:f,onClick:h,onMouseEnter:d,style:i,...c},x){let{registerItem:a,unregisterItem:r,highlightedIndex:p,setHighlightedIndex:m,close:y,unstyled:n}=S(),l=chunkMAR6RBHF_cjs.a("action-menu-item"),g=react.useRef(-1);react.useEffect(()=>(e||(g.current=a(l)),()=>{e||r(l);}),[l,e,a,r]);let s=g.current===p,E=o=>{h?.(o),!o.defaultPrevented&&!e&&(f?.(),y());},R=o=>{d?.(o),e||m(g.current);},A={...{cursor:e?"not-allowed":"pointer",opacity:e?.5:1},...n?{}:{padding:"8px 16px",backgroundColor:s?"#f0f0f0":"transparent"}};return jsxRuntime.jsx("div",{ref:x,id:l,role:"menuitem",tabIndex:-1,"aria-disabled":e,"data-highlighted":s,"data-disabled":e,onClick:E,onMouseEnter:R,style:{...A,...i},"data-compa11y-action-menu-item":true,...c,children:u})}),j=react.forwardRef(function(u,e){return jsxRuntime.jsx("div",{ref:e,role:"separator","data-compa11y-action-menu-separator":true,...u})}),q=react.forwardRef(function({children:u,...e},f){return jsxRuntime.jsx("div",{ref:f,role:"presentation","data-compa11y-action-menu-label":true,...e,children:u})}),F=Object.assign(O,{Trigger:B,Content:N,Item:U,Separator:j,Label:q});exports.a=S;exports.b=D;exports.c=O;exports.d=B;exports.e=N;exports.f=U;exports.g=j;exports.h=q;exports.i=F;
@@ -1 +0,0 @@
1
- 'use strict';var react=require('react'),reactDom=require('react-dom'),core=require('@compa11y/core'),jsxRuntime=require('react/jsx-runtime');var g=react.createContext(null);function y(){let t=react.useContext(g);if(!t)throw new Error("useToast must be used within a ToastProvider");return t}function D({children:t,duration:e=5e3,maxToasts:r=5}){let[T,s]=react.useState([]),n=react.useRef(0),d=react.useCallback(o=>{let i=`toast-${++n.current}`,p={...o,id:i,duration:o.duration??e};s(b=>[...b,p].slice(-r));let c=o.title?`${o.title}. ${o.description||""}`:o.description||"";return o.type==="error"?core.announceAssertive(c):core.announce(c,{politeness:"polite"}),i},[e,r]),u=react.useCallback(o=>{s(i=>i.filter(p=>p.id!==o));},[]),a=react.useCallback((o,i)=>{s(p=>p.map(c=>c.id===o?{...c,...i}:c));},[]);return jsxRuntime.jsx(g.Provider,{value:{toasts:T,addToast:d,removeToast:u,updateToast:a},children:t})}var V={"top-left":{top:0,left:0},"top-center":{top:0,left:"50%",transform:"translateX(-50%)"},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-center":{bottom:0,left:"50%",transform:"translateX(-50%)"},"bottom-right":{bottom:0,right:0}},M=react.forwardRef(function({position:e="bottom-right",label:r="Notifications",style:T,children:s,...n},d){let{toasts:u,removeToast:a}=y(),o=jsxRuntime.jsxs("div",{ref:d,role:"region","aria-label":r,"aria-live":"polite","aria-relevant":"additions removals",tabIndex:-1,style:{position:"fixed",zIndex:9999,padding:"1rem",display:"flex",flexDirection:"column",gap:"0.5rem",...V[e],...T},"data-compa11y-toast-viewport":true,"data-position":e,...n,children:[u.map(i=>jsxRuntime.jsx(k,{toast:i,onClose:()=>a(i.id)},i.id)),s]});return reactDom.createPortal(o,document.body)});function k({toast:t,onClose:e}){let[r,T]=react.useState(true),[,s]=react.useState(false),n=react.useRef(null),d=react.useRef(t.duration||5e3),u=react.useRef(Date.now()),a=react.useCallback(()=>{t.duration!==0&&(u.current=Date.now(),n.current=setTimeout(()=>{T(false),setTimeout(e,200);},d.current));},[t.duration,e]),o=react.useCallback(()=>{n.current&&(clearTimeout(n.current),d.current-=Date.now()-u.current);},[]);return react.useEffect(()=>(a(),()=>{n.current&&clearTimeout(n.current);}),[a]),jsxRuntime.jsxs("div",{role:"alert","aria-atomic":"true",tabIndex:0,onMouseEnter:()=>{s(true),o();},onMouseLeave:()=>{s(false),a();},onKeyDown:b=>{b.key==="Escape"&&e();},"data-type":t.type,"data-visible":r,"data-compa11y-toast":true,children:[t.title&&jsxRuntime.jsx("div",{"data-compa11y-toast-title":true,children:t.title}),t.description&&jsxRuntime.jsx("div",{"data-compa11y-toast-description":true,children:t.description}),t.action&&jsxRuntime.jsx("button",{type:"button",tabIndex:0,onClick:()=>{t.action?.onClick(),e();},"data-compa11y-toast-action":true,children:t.action.label}),jsxRuntime.jsx("button",{type:"button",tabIndex:0,"aria-label":"Dismiss",onClick:e,"data-compa11y-toast-close":true,children:"\xD7"})]})}function L(){let{addToast:t}=y();return {toast:t,success:(e,r)=>t({type:"success",title:e,description:r}),error:(e,r)=>t({type:"error",title:e,description:r}),warning:(e,r)=>t({type:"warning",title:e,description:r}),info:(e,r)=>t({type:"info",title:e,description:r})}}exports.a=y;exports.b=D;exports.c=M;exports.d=L;
@@ -1 +0,0 @@
1
- 'use strict';var chunkJS3UD7KS_cjs=require('./chunk-JS3UD7KS.cjs'),chunkAJ7JSWUT_cjs=require('./chunk-AJ7JSWUT.cjs'),chunkMAR6RBHF_cjs=require('./chunk-MAR6RBHF.cjs'),S=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var S__default=/*#__PURE__*/_interopDefault(S);var E=S.createContext(null);function g(){let m=S.useContext(E);if(!m)throw new Error("Tabs compound components must be used within a Tabs component");return m}var w=E.Provider;var H=S.forwardRef(function({defaultValue:e="",value:t,onValueChange:d,orientation:T="horizontal",activationMode:f="automatic",children:a,...i},r){let[l,c]=S.useState(e),n=t??l,b=S.useRef([]),x=chunkMAR6RBHF_cjs.a("tabs"),u=S.useCallback(p=>{t===void 0&&c(p),d?.(p);},[t,d]),o=S.useCallback(p=>{b.current.includes(p)||b.current.push(p);},[]),v=S.useCallback(p=>{let y=b.current.indexOf(p);y>-1&&b.current.splice(y,1);},[]),s=S.useCallback(()=>[...b.current],[]);return jsxRuntime.jsx(w,{value:{selectedValue:n,setSelectedValue:u,baseId:x,orientation:T,activationMode:f,registerTab:o,unregisterTab:v,getTabValues:s},children:jsxRuntime.jsx("div",{ref:r,"data-orientation":T,"data-compa11y-tabs":true,...i,children:a})})}),D=S.forwardRef(function({children:e,"aria-label":t,onKeyDown:d,...T},f){let{orientation:a,selectedValue:i,setSelectedValue:r,getTabValues:l,activationMode:c}=g(),n=S.useCallback(u=>{let o=l();if(o.length===0)return;let v=o.indexOf(i),s;switch(u){case "next":s=(v+1)%o.length;break;case "previous":s=(v-1+o.length)%o.length;break;case "first":s=0;break;case "last":s=o.length-1;break}let L=o[s];L&&(document.querySelector(`[data-compa11y-tab][data-value="${L}"]`)?.focus(),c==="automatic"&&r(L));},[l,i,r,c]),b=chunkAJ7JSWUT_cjs.a({ArrowRight:()=>{a==="horizontal"&&n("next");},ArrowLeft:()=>{a==="horizontal"&&n("previous");},ArrowDown:()=>{a==="vertical"&&n("next");},ArrowUp:()=>{a==="vertical"&&n("previous");},Home:()=>n("first"),End:()=>n("last")},{preventDefault:true});return jsxRuntime.jsx("div",{ref:f,role:"tablist","aria-label":t,"aria-orientation":a,onKeyDown:u=>{d?.(u),u.defaultPrevented||b.onKeyDown(u);},"data-compa11y-tablist":true,...T,children:e})}),I=S.forwardRef(function({value:e,disabled:t=false,children:d,onClick:T,...f},a){let{selectedValue:i,setSelectedValue:r,baseId:l,registerTab:c,unregisterTab:n}=g(),{announce:b}=chunkJS3UD7KS_cjs.a();S__default.default.useEffect(()=>(c(e),()=>n(e)),[e,c,n]);let x=i===e,u=`${l}-tab-${e}`,o=`${l}-panel-${e}`;return jsxRuntime.jsx("button",{ref:a,type:"button",role:"tab",id:u,"aria-selected":x,"aria-controls":o,"aria-disabled":t,tabIndex:x?0:-1,onClick:s=>{T?.(s),!s.defaultPrevented&&!t&&(r(e),b(`${e} tab selected`));},disabled:t,"data-selected":x,"data-disabled":t,"data-value":e,"data-compa11y-tab":true,...f,children:d})}),$=S.forwardRef(function({value:e,forceMount:t=false,children:d,...T},f){let{selectedValue:a,baseId:i}=g(),r=a===e,l=`${i}-tab-${e}`,c=`${i}-panel-${e}`;return !r&&!t?null:jsxRuntime.jsx("div",{ref:f,role:"tabpanel",id:c,"aria-labelledby":l,tabIndex:0,hidden:!r,"data-selected":r,"data-compa11y-tabpanel":true,...T,children:d})}),B=Object.assign(H,{List:D,Tab:I,Panel:$});exports.a=g;exports.b=H;exports.c=D;exports.d=I;exports.e=$;exports.f=B;
@@ -1 +0,0 @@
1
- 'use strict';var chunkJS3UD7KS_cjs=require('./chunk-JS3UD7KS.cjs'),chunkMAR6RBHF_cjs=require('./chunk-MAR6RBHF.cjs'),react=require('react'),reactDom=require('react-dom'),core=require('@compa11y/core'),jsxRuntime=require('react/jsx-runtime');function A(o={}){let{active:t=true,...e}=o,a=react.useRef(null),i=react.useRef(null);return react.useEffect(()=>{let n=a.current;if(n)return i.current=core.createFocusTrap(n,e),t&&i.current.activate(),()=>{i.current?.destroy(),i.current=null;}},[e.initialFocus,e.returnFocus,e.clickOutsideDeactivates,e.escapeDeactivates,e.onDeactivate]),react.useEffect(()=>{i.current&&(t?i.current.activate():i.current.deactivate());},[t]),a}function oe(o={}){let t=react.useRef(null),e=react.useRef(null),a=react.useCallback(()=>{let l=t.current;l&&(e.current||(e.current=core.createFocusTrap(l,o)),e.current.activate());},[o]),i=react.useCallback(()=>{e.current?.deactivate();},[]),n=react.useCallback(()=>{e.current?.pause();},[]),r=react.useCallback(()=>{e.current?.unpause();},[]);return react.useEffect(()=>()=>{e.current?.destroy(),e.current=null;},[]),{ref:t,activate:a,deactivate:i,pause:n,unpause:r,isActive:()=>e.current?.isActive()??false,isPaused:()=>e.current?.isPaused()??false}}var F=react.createContext(null);function p(){let o=react.useContext(F);if(!o)throw new Error("Dialog compound components must be used within a Dialog component");return o}var I=F.Provider;var Y=core.createComponentWarnings("Dialog");function N({open:o,onOpenChange:t,children:e,className:a,initialFocus:i,closeOnOutsideClick:n=true,closeOnEscape:r=true,container:l,"aria-label":u,"aria-labelledby":f,unstyled:y=false}){let v=chunkMAR6RBHF_cjs.a("dialog"),x=chunkMAR6RBHF_cjs.a("dialog-title"),C=chunkMAR6RBHF_cjs.a("dialog-desc"),[c,R]=react.useState(false),[P,H]=react.useState(false),h=react.useCallback(()=>{t(false);},[t]);react.useEffect(()=>{o&&!c&&!u&&!f&&Y.warning("Dialog has no accessible title. Add a DialogTitle or aria-label prop.",'Use <Dialog.Title> or provide aria-label="..."');},[o,c,u,f]);let E={isOpen:o,close:h,dialogId:v,titleId:x,descriptionId:C,hasTitle:c,hasDescription:P,setHasTitle:R,setHasDescription:H};if(!o)return null;let O=jsxRuntime.jsx(I,{value:E,children:jsxRuntime.jsx(Z,{className:a,closeOnOutsideClick:n,closeOnEscape:r,initialFocus:i,ariaLabel:u,ariaLabelledBy:f,unstyled:y,children:e})}),L=l??document.body;return reactDom.createPortal(O,L)}function Z({children:o,className:t,closeOnOutsideClick:e,closeOnEscape:a,initialFocus:i,ariaLabel:n,ariaLabelledBy:r,unstyled:l}){let{close:u,dialogId:f,titleId:y,descriptionId:v,hasTitle:x,hasDescription:C}=p(),{announce:c}=chunkJS3UD7KS_cjs.a(),R=A({active:true,initialFocus:i?.current??void 0,escapeDeactivates:a,clickOutsideDeactivates:false,onDeactivate:u});react.useEffect(()=>(c("Dialog opened",{politeness:"polite"}),()=>{c("Dialog closed",{politeness:"polite"});}),[c]),react.useEffect(()=>{let d=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=d;}},[]);let P=d=>{e&&d.target===d.currentTarget&&u();},H=r??(x?y:void 0),h=C?v:void 0,E=d=>{d.stopPropagation();},q={...{position:"fixed",inset:0,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999},...l?{}:{backgroundColor:"rgba(0, 0, 0, 0.5)"}};return jsxRuntime.jsx("div",{className:t,style:q,onClick:P,"data-compa11y-dialog-overlay":true,children:jsxRuntime.jsx("div",{ref:R,id:f,role:"dialog","aria-modal":"true","aria-label":n,"aria-labelledby":H,"aria-describedby":h,onClick:E,style:l?{}:{backgroundColor:"white",borderRadius:"8px",padding:"1.5rem",minWidth:"300px",maxWidth:"500px",boxShadow:"0 10px 25px rgba(0, 0, 0, 0.2)"},"data-compa11y-dialog":true,children:o})})}var B=react.forwardRef(function({children:t,...e},a){return jsxRuntime.jsx("button",{ref:a,type:"button",tabIndex:0,"data-compa11y-dialog-trigger":true,...e,children:t})}),V=react.forwardRef(function({as:t="h2",children:e,...a},i){let{titleId:n,setHasTitle:r}=p();return react.useEffect(()=>(r(true),()=>r(false)),[r]),jsxRuntime.jsx(t,{ref:i,id:n,"data-compa11y-dialog-title":true,...a,children:e})}),j=react.forwardRef(function({children:t,...e},a){let{descriptionId:i,setHasDescription:n}=p();return react.useEffect(()=>(n(true),()=>n(false)),[n]),jsxRuntime.jsx("p",{ref:a,id:i,"data-compa11y-dialog-description":true,...e,children:t})}),U=react.forwardRef(function({children:t,onClick:e,...a},i){let{close:n}=p();return jsxRuntime.jsx("button",{ref:i,type:"button",tabIndex:0,onClick:l=>{e?.(l),l.defaultPrevented||n();},"aria-label":t?void 0:"Close dialog","data-compa11y-dialog-close":true,...a,children:t??"\xD7"})}),W=react.forwardRef(function({children:t,...e},a){return jsxRuntime.jsx("div",{ref:a,"data-compa11y-dialog-content":true,...e,children:t})}),z=react.forwardRef(function({children:t,...e},a){return jsxRuntime.jsx("div",{ref:a,"data-compa11y-dialog-actions":true,...e,children:t})}),_=Object.assign(N,{Trigger:B,Title:V,Description:j,Close:U,Content:W,Actions:z});exports.a=A;exports.b=oe;exports.c=p;exports.d=N;exports.e=B;exports.f=V;exports.g=j;exports.h=U;exports.i=W;exports.j=z;exports.k=_;
@@ -1 +0,0 @@
1
- import {a}from'./chunk-VMM4K2K4.js';import {a as a$1}from'./chunk-IZ7LLPPV.js';import {createContext,forwardRef,useRef,useEffect,useContext,useState,useCallback}from'react';import {jsx}from'react/jsx-runtime';var V=createContext(null);function S(){let M=useContext(V);if(!M)throw new Error("ActionMenu compound components must be used within an ActionMenu component");return M}var D=V.Provider;function O({defaultOpen:M=false,open:u,onOpenChange:e,children:f,unstyled:h=false}){let[d,i]=useState(M),c=u??d,[x,a]=useState(-1),r=useRef([]),p=useRef(null),m=a$1("action-menu"),y=a$1("action-menu-trigger"),n=useCallback(o=>{u===void 0&&i(o),e?.(o),o||a(-1);},[u,e]),l=useCallback(()=>n(true),[n]),g=useCallback(()=>n(false),[n]),s=useCallback(()=>n(!c),[n,c]),E=useCallback(o=>{let v=r.current.length;return r.current.push(o),v},[]),R=useCallback(o=>{let v=r.current.indexOf(o);v>-1&&r.current.splice(v,1);},[]),P=useCallback(()=>r.current.length,[]),t=useCallback(o=>{p.current?.(o),g();},[g]);return jsx(D,{value:{isOpen:c,open:l,close:g,toggle:s,highlightedIndex:x,setHighlightedIndex:a,menuId:m,triggerId:y,registerItem:E,unregisterItem:R,getItemCount:P,selectItem:t,unstyled:h},children:jsx("div",{style:{position:"relative",display:"inline-block"},"data-compa11y-action-menu":true,children:f})})}var B=forwardRef(function({children:u,onClick:e,onKeyDown:f,...h},d){let{isOpen:i,toggle:c,open:x,close:a$1,triggerId:r,menuId:p,setHighlightedIndex:m,getItemCount:y}=S(),n=s=>{e?.(s),s.defaultPrevented||c();},l=a({ArrowDown:()=>{i||x(),m(0);},ArrowUp:()=>{i||x(),m(y()-1);},Enter:()=>c(),Space:()=>c(),Escape:()=>a$1()},{preventDefault:true});return jsx("button",{ref:d,id:r,type:"button",tabIndex:0,"aria-haspopup":"menu","aria-expanded":i,"aria-controls":i?p:void 0,onClick:n,onKeyDown:s=>{f?.(s),s.defaultPrevented||l.onKeyDown(s);},"data-compa11y-action-menu-trigger":true,...h,children:u})}),N=forwardRef(function({children:u,onKeyDown:e,style:f,...h},d){let{isOpen:i,close:c,menuId:x,triggerId:a$1,highlightedIndex:r,setHighlightedIndex:p,getItemCount:m,unstyled:y}=S(),n=useRef(null),l=()=>{if(r>=0&&n.current){let A=n.current.querySelectorAll('[role="menuitem"]')[r];A&&A.getAttribute("aria-disabled")!=="true"&&A.click();}},g=a({ArrowDown:()=>{let t=m();p((r+1)%t);},ArrowUp:()=>{let t=m();p((r-1+t)%t);},Home:()=>p(0),End:()=>p(m()-1),Enter:()=>l(),Space:()=>l(),Escape:()=>c(),Tab:()=>(c(),false)},{preventDefault:true}),s=t=>{e?.(t),t.defaultPrevented||g.onKeyDown(t);};if(useEffect(()=>{i&&n.current&&n.current.focus();},[i]),useEffect(()=>{if(!i)return;let t=A=>{let o=A.target,v=n.current,k=document.getElementById(a$1);v&&!v.contains(o)&&k&&!k.contains(o)&&c();};return document.addEventListener("mousedown",t),()=>document.removeEventListener("mousedown",t)},[i,c,a$1]),!i)return null;let P={...{position:"absolute",top:"100%",left:0,marginTop:"4px",zIndex:1e3},...y?{}:{minWidth:"160px",backgroundColor:"white",border:"1px solid #e0e0e0",borderRadius:"4px",boxShadow:"0 4px 6px rgba(0, 0, 0, 0.1)",padding:"4px 0"}};return jsx("div",{ref:t=>{n.current=t,typeof d=="function"?d(t):d&&(d.current=t);},id:x,role:"menu","aria-labelledby":a$1,tabIndex:-1,onKeyDown:s,style:{...P,...f},"data-compa11y-action-menu-content":true,...h,children:u})}),U=forwardRef(function({children:u,disabled:e=false,onSelect:f,onClick:h,onMouseEnter:d,style:i,...c},x){let{registerItem:a,unregisterItem:r,highlightedIndex:p,setHighlightedIndex:m,close:y,unstyled:n}=S(),l=a$1("action-menu-item"),g=useRef(-1);useEffect(()=>(e||(g.current=a(l)),()=>{e||r(l);}),[l,e,a,r]);let s=g.current===p,E=o=>{h?.(o),!o.defaultPrevented&&!e&&(f?.(),y());},R=o=>{d?.(o),e||m(g.current);},A={...{cursor:e?"not-allowed":"pointer",opacity:e?.5:1},...n?{}:{padding:"8px 16px",backgroundColor:s?"#f0f0f0":"transparent"}};return jsx("div",{ref:x,id:l,role:"menuitem",tabIndex:-1,"aria-disabled":e,"data-highlighted":s,"data-disabled":e,onClick:E,onMouseEnter:R,style:{...A,...i},"data-compa11y-action-menu-item":true,...c,children:u})}),j=forwardRef(function(u,e){return jsx("div",{ref:e,role:"separator","data-compa11y-action-menu-separator":true,...u})}),q=forwardRef(function({children:u,...e},f){return jsx("div",{ref:f,role:"presentation","data-compa11y-action-menu-label":true,...e,children:u})}),F=Object.assign(O,{Trigger:B,Content:N,Item:U,Separator:j,Label:q});export{S as a,D as b,O as c,B as d,N as e,U as f,j as g,q as h,F as i};
@@ -1 +0,0 @@
1
- import {a as a$2}from'./chunk-MD4AVTLT.js';import {a as a$1}from'./chunk-VMM4K2K4.js';import {a}from'./chunk-IZ7LLPPV.js';import S,{createContext,forwardRef,useState,useRef,useCallback,useContext}from'react';import {jsx}from'react/jsx-runtime';var E=createContext(null);function g(){let m=useContext(E);if(!m)throw new Error("Tabs compound components must be used within a Tabs component");return m}var w=E.Provider;var H=forwardRef(function({defaultValue:e="",value:t,onValueChange:d,orientation:T="horizontal",activationMode:f="automatic",children:a$1,...i},r){let[l,c]=useState(e),n=t??l,b=useRef([]),x=a("tabs"),u=useCallback(p=>{t===void 0&&c(p),d?.(p);},[t,d]),o=useCallback(p=>{b.current.includes(p)||b.current.push(p);},[]),v=useCallback(p=>{let y=b.current.indexOf(p);y>-1&&b.current.splice(y,1);},[]),s=useCallback(()=>[...b.current],[]);return jsx(w,{value:{selectedValue:n,setSelectedValue:u,baseId:x,orientation:T,activationMode:f,registerTab:o,unregisterTab:v,getTabValues:s},children:jsx("div",{ref:r,"data-orientation":T,"data-compa11y-tabs":true,...i,children:a$1})})}),D=forwardRef(function({children:e,"aria-label":t,onKeyDown:d,...T},f){let{orientation:a,selectedValue:i,setSelectedValue:r,getTabValues:l,activationMode:c}=g(),n=useCallback(u=>{let o=l();if(o.length===0)return;let v=o.indexOf(i),s;switch(u){case "next":s=(v+1)%o.length;break;case "previous":s=(v-1+o.length)%o.length;break;case "first":s=0;break;case "last":s=o.length-1;break}let L=o[s];L&&(document.querySelector(`[data-compa11y-tab][data-value="${L}"]`)?.focus(),c==="automatic"&&r(L));},[l,i,r,c]),b=a$1({ArrowRight:()=>{a==="horizontal"&&n("next");},ArrowLeft:()=>{a==="horizontal"&&n("previous");},ArrowDown:()=>{a==="vertical"&&n("next");},ArrowUp:()=>{a==="vertical"&&n("previous");},Home:()=>n("first"),End:()=>n("last")},{preventDefault:true});return jsx("div",{ref:f,role:"tablist","aria-label":t,"aria-orientation":a,onKeyDown:u=>{d?.(u),u.defaultPrevented||b.onKeyDown(u);},"data-compa11y-tablist":true,...T,children:e})}),I=forwardRef(function({value:e,disabled:t=false,children:d,onClick:T,...f},a){let{selectedValue:i,setSelectedValue:r,baseId:l,registerTab:c,unregisterTab:n}=g(),{announce:b}=a$2();S.useEffect(()=>(c(e),()=>n(e)),[e,c,n]);let x=i===e,u=`${l}-tab-${e}`,o=`${l}-panel-${e}`;return jsx("button",{ref:a,type:"button",role:"tab",id:u,"aria-selected":x,"aria-controls":o,"aria-disabled":t,tabIndex:x?0:-1,onClick:s=>{T?.(s),!s.defaultPrevented&&!t&&(r(e),b(`${e} tab selected`));},disabled:t,"data-selected":x,"data-disabled":t,"data-value":e,"data-compa11y-tab":true,...f,children:d})}),$=forwardRef(function({value:e,forceMount:t=false,children:d,...T},f){let{selectedValue:a,baseId:i}=g(),r=a===e,l=`${i}-tab-${e}`,c=`${i}-panel-${e}`;return !r&&!t?null:jsx("div",{ref:f,role:"tabpanel",id:c,"aria-labelledby":l,tabIndex:0,hidden:!r,"data-selected":r,"data-compa11y-tabpanel":true,...T,children:d})}),B=Object.assign(H,{List:D,Tab:I,Panel:$});export{g as a,H as b,D as c,I as d,$ as e,B as f};
@@ -1 +0,0 @@
1
- import {createContext,forwardRef,useState,useRef,useCallback,useEffect,useContext}from'react';import {createPortal}from'react-dom';import {announceAssertive,announce}from'@compa11y/core';import {jsxs,jsx}from'react/jsx-runtime';var g=createContext(null);function y(){let t=useContext(g);if(!t)throw new Error("useToast must be used within a ToastProvider");return t}function D({children:t,duration:e=5e3,maxToasts:r=5}){let[T,s]=useState([]),n=useRef(0),d=useCallback(o=>{let i=`toast-${++n.current}`,p={...o,id:i,duration:o.duration??e};s(b=>[...b,p].slice(-r));let c=o.title?`${o.title}. ${o.description||""}`:o.description||"";return o.type==="error"?announceAssertive(c):announce(c,{politeness:"polite"}),i},[e,r]),u=useCallback(o=>{s(i=>i.filter(p=>p.id!==o));},[]),a=useCallback((o,i)=>{s(p=>p.map(c=>c.id===o?{...c,...i}:c));},[]);return jsx(g.Provider,{value:{toasts:T,addToast:d,removeToast:u,updateToast:a},children:t})}var V={"top-left":{top:0,left:0},"top-center":{top:0,left:"50%",transform:"translateX(-50%)"},"top-right":{top:0,right:0},"bottom-left":{bottom:0,left:0},"bottom-center":{bottom:0,left:"50%",transform:"translateX(-50%)"},"bottom-right":{bottom:0,right:0}},M=forwardRef(function({position:e="bottom-right",label:r="Notifications",style:T,children:s,...n},d){let{toasts:u,removeToast:a}=y(),o=jsxs("div",{ref:d,role:"region","aria-label":r,"aria-live":"polite","aria-relevant":"additions removals",tabIndex:-1,style:{position:"fixed",zIndex:9999,padding:"1rem",display:"flex",flexDirection:"column",gap:"0.5rem",...V[e],...T},"data-compa11y-toast-viewport":true,"data-position":e,...n,children:[u.map(i=>jsx(k,{toast:i,onClose:()=>a(i.id)},i.id)),s]});return createPortal(o,document.body)});function k({toast:t,onClose:e}){let[r,T]=useState(true),[,s]=useState(false),n=useRef(null),d=useRef(t.duration||5e3),u=useRef(Date.now()),a=useCallback(()=>{t.duration!==0&&(u.current=Date.now(),n.current=setTimeout(()=>{T(false),setTimeout(e,200);},d.current));},[t.duration,e]),o=useCallback(()=>{n.current&&(clearTimeout(n.current),d.current-=Date.now()-u.current);},[]);return useEffect(()=>(a(),()=>{n.current&&clearTimeout(n.current);}),[a]),jsxs("div",{role:"alert","aria-atomic":"true",tabIndex:0,onMouseEnter:()=>{s(true),o();},onMouseLeave:()=>{s(false),a();},onKeyDown:b=>{b.key==="Escape"&&e();},"data-type":t.type,"data-visible":r,"data-compa11y-toast":true,children:[t.title&&jsx("div",{"data-compa11y-toast-title":true,children:t.title}),t.description&&jsx("div",{"data-compa11y-toast-description":true,children:t.description}),t.action&&jsx("button",{type:"button",tabIndex:0,onClick:()=>{t.action?.onClick(),e();},"data-compa11y-toast-action":true,children:t.action.label}),jsx("button",{type:"button",tabIndex:0,"aria-label":"Dismiss",onClick:e,"data-compa11y-toast-close":true,children:"\xD7"})]})}function L(){let{addToast:t}=y();return {toast:t,success:(e,r)=>t({type:"success",title:e,description:r}),error:(e,r)=>t({type:"error",title:e,description:r}),warning:(e,r)=>t({type:"warning",title:e,description:r}),info:(e,r)=>t({type:"info",title:e,description:r})}}export{y as a,D as b,M as c,L as d};
@@ -1 +0,0 @@
1
- import {a as a$1}from'./chunk-MD4AVTLT.js';import {a}from'./chunk-IZ7LLPPV.js';import {createContext,forwardRef,useEffect,useContext,useState,useCallback,useRef}from'react';import {createPortal}from'react-dom';import {createComponentWarnings,createFocusTrap}from'@compa11y/core';import {jsx}from'react/jsx-runtime';function A(o={}){let{active:t=true,...e}=o,a=useRef(null),i=useRef(null);return useEffect(()=>{let n=a.current;if(n)return i.current=createFocusTrap(n,e),t&&i.current.activate(),()=>{i.current?.destroy(),i.current=null;}},[e.initialFocus,e.returnFocus,e.clickOutsideDeactivates,e.escapeDeactivates,e.onDeactivate]),useEffect(()=>{i.current&&(t?i.current.activate():i.current.deactivate());},[t]),a}function oe(o={}){let t=useRef(null),e=useRef(null),a=useCallback(()=>{let l=t.current;l&&(e.current||(e.current=createFocusTrap(l,o)),e.current.activate());},[o]),i=useCallback(()=>{e.current?.deactivate();},[]),n=useCallback(()=>{e.current?.pause();},[]),r=useCallback(()=>{e.current?.unpause();},[]);return useEffect(()=>()=>{e.current?.destroy(),e.current=null;},[]),{ref:t,activate:a,deactivate:i,pause:n,unpause:r,isActive:()=>e.current?.isActive()??false,isPaused:()=>e.current?.isPaused()??false}}var F=createContext(null);function p(){let o=useContext(F);if(!o)throw new Error("Dialog compound components must be used within a Dialog component");return o}var I=F.Provider;var Y=createComponentWarnings("Dialog");function N({open:o,onOpenChange:t,children:e,className:a$1,initialFocus:i,closeOnOutsideClick:n=true,closeOnEscape:r=true,container:l,"aria-label":u,"aria-labelledby":f,unstyled:y=false}){let v=a("dialog"),x=a("dialog-title"),C=a("dialog-desc"),[c,R]=useState(false),[P,H]=useState(false),h=useCallback(()=>{t(false);},[t]);useEffect(()=>{o&&!c&&!u&&!f&&Y.warning("Dialog has no accessible title. Add a DialogTitle or aria-label prop.",'Use <Dialog.Title> or provide aria-label="..."');},[o,c,u,f]);let E={isOpen:o,close:h,dialogId:v,titleId:x,descriptionId:C,hasTitle:c,hasDescription:P,setHasTitle:R,setHasDescription:H};if(!o)return null;let O=jsx(I,{value:E,children:jsx(Z,{className:a$1,closeOnOutsideClick:n,closeOnEscape:r,initialFocus:i,ariaLabel:u,ariaLabelledBy:f,unstyled:y,children:e})}),L=l??document.body;return createPortal(O,L)}function Z({children:o,className:t,closeOnOutsideClick:e,closeOnEscape:a,initialFocus:i,ariaLabel:n,ariaLabelledBy:r,unstyled:l}){let{close:u,dialogId:f,titleId:y,descriptionId:v,hasTitle:x,hasDescription:C}=p(),{announce:c}=a$1(),R=A({active:true,initialFocus:i?.current??void 0,escapeDeactivates:a,clickOutsideDeactivates:false,onDeactivate:u});useEffect(()=>(c("Dialog opened",{politeness:"polite"}),()=>{c("Dialog closed",{politeness:"polite"});}),[c]),useEffect(()=>{let d=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=d;}},[]);let P=d=>{e&&d.target===d.currentTarget&&u();},H=r??(x?y:void 0),h=C?v:void 0,E=d=>{d.stopPropagation();},q={...{position:"fixed",inset:0,display:"flex",alignItems:"center",justifyContent:"center",zIndex:9999},...l?{}:{backgroundColor:"rgba(0, 0, 0, 0.5)"}};return jsx("div",{className:t,style:q,onClick:P,"data-compa11y-dialog-overlay":true,children:jsx("div",{ref:R,id:f,role:"dialog","aria-modal":"true","aria-label":n,"aria-labelledby":H,"aria-describedby":h,onClick:E,style:l?{}:{backgroundColor:"white",borderRadius:"8px",padding:"1.5rem",minWidth:"300px",maxWidth:"500px",boxShadow:"0 10px 25px rgba(0, 0, 0, 0.2)"},"data-compa11y-dialog":true,children:o})})}var B=forwardRef(function({children:t,...e},a){return jsx("button",{ref:a,type:"button",tabIndex:0,"data-compa11y-dialog-trigger":true,...e,children:t})}),V=forwardRef(function({as:t="h2",children:e,...a},i){let{titleId:n,setHasTitle:r}=p();return useEffect(()=>(r(true),()=>r(false)),[r]),jsx(t,{ref:i,id:n,"data-compa11y-dialog-title":true,...a,children:e})}),j=forwardRef(function({children:t,...e},a){let{descriptionId:i,setHasDescription:n}=p();return useEffect(()=>(n(true),()=>n(false)),[n]),jsx("p",{ref:a,id:i,"data-compa11y-dialog-description":true,...e,children:t})}),U=forwardRef(function({children:t,onClick:e,...a},i){let{close:n}=p();return jsx("button",{ref:i,type:"button",tabIndex:0,onClick:l=>{e?.(l),l.defaultPrevented||n();},"aria-label":t?void 0:"Close dialog","data-compa11y-dialog-close":true,...a,children:t??"\xD7"})}),W=forwardRef(function({children:t,...e},a){return jsx("div",{ref:a,"data-compa11y-dialog-content":true,...e,children:t})}),z=forwardRef(function({children:t,...e},a){return jsx("div",{ref:a,"data-compa11y-dialog-actions":true,...e,children:t})}),_=Object.assign(N,{Trigger:B,Title:V,Description:j,Close:U,Content:W,Actions:z});export{A as a,oe as b,p as c,N as d,B as e,V as f,j as g,U as h,W as i,z as j,_ as k};