@stokelp/ui 1.6.4 → 1.7.0
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/components/box/Box.d.ts +8 -0
- package/dist/components/box/index.d.ts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/ui.cjs +3 -3
- package/dist/ui.cjs.map +1 -1
- package/dist/ui.js +29 -25
- package/dist/ui.js.map +1 -1
- package/package.json +1 -1
package/dist/ui.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.cjs","sources":["../src/utils/slots.tsx","../src/components/accordion/Accordion.tsx","../src/components/button/Button.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/drawer/Drawer.tsx","../src/components/form/FormControl.tsx","../src/components/form/FormLabel.tsx","../src/components/form/FormHelperText.tsx","../src/components/heading/Heading.tsx","../src/components/switch/Switch.tsx","../src/components/text/Text.tsx","../src/components/textarea/Textarea.tsx","../src/components/tabs/Tabs.tsx","../src/shared/ConditionalWrapper.tsx","../src/components/select/Select.tsx","../src/components/input/Input.tsx","../src/components/input/InputAddon.tsx","../src/components/input/InputGroup.tsx","../src/theme/breakpoints.ts","../src/theme/conditions.ts","../src/theme/containers.ts","../src/theme/keyframes.ts","../src/theme/recipes/button.ts","../src/theme/recipes/heading.ts","../../../node_modules/@zag-js/anatomy/dist/index.mjs","../../../node_modules/@zag-js/accordion/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/utils/dist/index.mjs","../../../node_modules/@zag-js/accordion/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/accordion/dist/index.mjs","../../../node_modules/@zag-js/checkbox/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/checkbox/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/checkbox/dist/index.mjs","../../../node_modules/@zag-js/dialog/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/dialog/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/dialog/dist/index.mjs","../../../node_modules/@zag-js/select/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/select/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/select/dist/index.mjs","../../../node_modules/@ark-ui/anatomy/dist/select/index.js","../../../node_modules/@zag-js/switch/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/switch/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/switch/dist/index.mjs","../../../node_modules/@zag-js/tabs/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/tabs/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/tabs/dist/index.mjs","../src/theme/recipes/switch.ts","../src/theme/recipes/text.ts","../src/theme/recipes/input.ts","../src/theme/recipes/textarea.ts","../src/theme/recipes/form/control.ts","../src/theme/recipes/form/helper-text.ts","../src/theme/recipes/drawer.ts","../src/theme/recipes/accordion.ts","../src/theme/recipes/form/label.ts","../src/theme/recipes/checkbox.ts","../src/theme/recipes/tabs.ts","../src/theme/recipes/select.ts","../src/theme/recipes/input-addon.ts","../src/theme/recipes/input-group.ts","../src/theme/recipes/index.ts","../src/theme/semantic-tokens/colors.ts","../src/theme/semantic-tokens/index.ts","../src/theme/text-styles.ts","../src/theme/tokens/animations.ts","../src/theme/tokens/aspect-ratios.ts","../src/theme/tokens/blurs.ts","../src/theme/tokens/borders.ts","../src/theme/tokens/colors.ts","../src/theme/tokens/durations.ts","../src/theme/tokens/easings.ts","../src/theme/tokens/radii.ts","../src/theme/tokens/shadows.ts","../src/theme/tokens/sizes.ts","../src/theme/tokens/spacing.ts","../../../node_modules/@pandacss/shared/dist/index.mjs","../src/theme/tokens/typography.ts","../src/theme/tokens/z-index.ts","../src/theme/tokens/index.ts","../src/theme/utilities.ts","../src/preset.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n'use client'\n\nimport {\n type ComponentProps,\n createContext,\n createElement,\n type ElementType,\n forwardRef,\n type JSX,\n useContext,\n} from 'react'\n\ntype GenericProps = Record<string, unknown>\ntype StyleRecipe = {\n (props?: GenericProps): Record<string, string>\n splitVariantProps: (props: GenericProps) => any\n}\ntype StyleSlot<R extends StyleRecipe> = keyof ReturnType<R>\ntype StyleSlotRecipe<R extends StyleRecipe> = Record<StyleSlot<R>, string>\ntype StyleVariantProps<R extends StyleRecipe> = Parameters<R>[0]\ntype CombineProps<T, U> = Omit<T, keyof U> & U\n\nconst cx = (...args: Array<string | undefined>) => args.filter(Boolean).join(' ')\n\nexport interface ComponentVariants<T extends ElementType, R extends StyleRecipe> {\n (props: CombineProps<ComponentProps<T>, StyleVariantProps<R>>): JSX.Element\n}\n\ntype Options = {\n dataAttr?: boolean\n}\n\ntype WithOptions<Props extends GenericProps> = {\n defaultProps?: Partial<Props>\n}\n\nexport const createStyleContext = <R extends StyleRecipe>(recipe: R, options?: Options) => {\n const StyleContext = createContext<StyleSlotRecipe<R> | null>(null)\n\n const withProvider = <T extends ElementType>(\n Component: T,\n slot?: StyleSlot<R>,\n providerOptions?: WithOptions<ComponentProps<T>>,\n ): ComponentVariants<T, R> => {\n const StyledComponent = forwardRef((props: ComponentProps<T>, ref) => {\n const [variantProps, otherProps] = recipe.splitVariantProps({\n ...props,\n ...providerOptions?.defaultProps,\n })\n const slotStyles = recipe(variantProps) as StyleSlotRecipe<R>\n const dataAttr = options?.dataAttr ?? false\n\n return (\n <StyleContext.Provider value={slotStyles}>\n <Component\n ref={ref}\n {...(dataAttr && { 'data-recipe-slot': slot ?? '' })}\n {...otherProps}\n className={cx(slotStyles[slot ?? ''], otherProps.className)}\n />\n </StyleContext.Provider>\n )\n })\n return StyledComponent as unknown as ComponentVariants<T, R>\n }\n\n const withContext = <T extends ElementType>(\n Component: T,\n slot?: StyleSlot<R>,\n contextOptions?: WithOptions<ComponentProps<T>>,\n ): T => {\n if (!slot) return Component\n const StyledComponent = forwardRef((props: ComponentProps<T>, ref) => {\n const slotStyles = useContext(StyleContext)\n const dataAttr = options?.dataAttr ?? false\n\n return createElement(Component, {\n ...(dataAttr && { 'data-recipe-slot': slot ?? '' }),\n ...props,\n ...contextOptions?.defaultProps,\n className: cx(slotStyles?.[slot ?? ''], props.className),\n ref,\n })\n })\n return StyledComponent as unknown as T\n }\n\n return {\n withContext,\n withProvider,\n }\n}\n","import { Accordion as ArkAccordion } from '@ark-ui/react'\nimport type { ComponentProps } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { accordion } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots'\n\nconst { withProvider, withContext } = createStyleContext(accordion)\n\nexport const Accordion = withProvider(styled(ArkAccordion.Root), 'root')\nexport const AccordionItem = withContext(styled(ArkAccordion.Item), 'item')\nexport const AccordionItemContent = withContext(styled(ArkAccordion.ItemContent), 'itemContent')\nexport const AccordionItemIndicator = withContext(styled(ArkAccordion.ItemIndicator), 'itemIndicator', {\n defaultProps: {\n children: (\n <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.94 6.03L8 9.08333L11.06 6.03L12 6.97L8 10.97L4 6.97L4.94 6.03Z\" fill=\"currentColor\" />\n </svg>\n ),\n },\n})\nexport const AccordionItemTrigger = withContext(styled(ArkAccordion.ItemTrigger), 'itemTrigger')\n\nexport interface AccordionProps extends ComponentProps<typeof Accordion> {}\nexport interface AccordionItemProps extends ComponentProps<typeof AccordionItem> {}\nexport interface AccordionItemContentProps extends ComponentProps<typeof AccordionItemContent> {}\nexport interface AccordionItemIndicatorProps extends ComponentProps<typeof AccordionItemIndicator> {}\nexport interface AccordionItemTriggerProps extends ComponentProps<typeof AccordionItemTrigger> {}\n","import { styled } from '@stokelp/styled-system/jsx'\nimport { button } from '@stokelp/styled-system/recipes'\nimport type { ComponentProps } from 'react'\n\nexport const Button = styled('button', button)\nexport interface ButtonProps extends ComponentProps<typeof Button> {}\n","import { Checkbox as ArkCheckbox, type CheckboxRootProps } from '@ark-ui/react'\nimport { forwardRef, type ReactNode } from 'react'\nimport { css, cx } from '@stokelp/styled-system/css'\nimport { splitCssProps } from '@stokelp/styled-system/jsx'\nimport { checkbox, type CheckboxVariantProps } from '@stokelp/styled-system/recipes'\nimport type { Assign, JsxStyleProps } from '@stokelp/styled-system/types'\n\nexport interface CheckboxProps extends Assign<JsxStyleProps, CheckboxRootProps>, CheckboxVariantProps {\n children?: ReactNode\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>((props, ref) => {\n const [variantProps, checkboxProps] = checkbox.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(checkboxProps)\n const { children, className, ...rootProps } = localProps\n const styles = checkbox(variantProps)\n\n return (\n <ArkCheckbox.Root ref={ref} className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n <ArkCheckbox.Control className={styles.control}>\n <ArkCheckbox.Indicator>\n <CheckIcon />\n </ArkCheckbox.Indicator>\n <ArkCheckbox.Indicator indeterminate>\n <MinusIcon />\n </ArkCheckbox.Indicator>\n </ArkCheckbox.Control>\n {children && <ArkCheckbox.Label className={styles.label}>{children}</ArkCheckbox.Label>}\n <ArkCheckbox.HiddenInput />\n </ArkCheckbox.Root>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Check Icon</title>\n <path\n d=\"M4.39754 8.43751L2.31254 6.35251L1.60254 7.05751L4.39754 9.85251L10.3975 3.85251L9.69254 3.14751L4.39754 8.43751Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nconst MinusIcon = () => (\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Minus Icon</title>\n <path d=\"M3 6H9V7H3V6Z\" fill=\"white\" />\n </svg>\n)\n","import { Portal } from '@ark-ui/react'\nimport { Dialog as ArkDrawer } from '@ark-ui/react'\nimport { ark } from '@ark-ui/react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { drawer } from '@stokelp/styled-system/recipes'\nimport type { ComponentProps, ComponentPropsWithoutRef, ElementRef } from 'react'\nimport { forwardRef } from 'react'\n\nimport { createStyleContext } from '~/utils/slots'\nimport { Button } from '~/components/button'\n\nconst { withProvider, withContext } = createStyleContext(drawer)\n\nexport const Drawer = withProvider(ArkDrawer.Root, undefined, {\n defaultProps: {\n unmountOnExit: true,\n lazyMount: true,\n },\n})\nexport const DrawerBody = withContext(styled(ark.main), 'body')\nexport const DrawerCloseTrigger = withContext(styled(ArkDrawer.CloseTrigger), 'closeTrigger')\nexport const DrawerFooter = withContext(styled(ark.footer), 'footer')\n\ntype HeaderProps = ComponentPropsWithoutRef<typeof ark.header> & {\n showCloseTrigger?: boolean\n}\n\nconst Header = forwardRef<ElementRef<typeof ark.header>, HeaderProps>(\n ({ children, showCloseTrigger = true, ...props }, ref) => (\n <ark.header {...props} ref={ref}>\n {children}\n {showCloseTrigger && (\n <DrawerCloseTrigger asChild>\n <Button ml=\"auto\" p=\"space-8\" variant=\"tertiary\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6666 4.27331L11.7266 3.33331L7.99998 7.05998L4.27331 3.33331L3.33331 4.27331L7.05998 7.99998L3.33331 11.7266L4.27331 12.6666L7.99998 8.93998L11.7266 12.6666L12.6666 11.7266L8.93998 7.99998L12.6666 4.27331Z\"\n fill=\"currentColor\"\n />\n </svg>\n </Button>\n </DrawerCloseTrigger>\n )}\n </ark.header>\n ),\n)\nHeader.displayName = 'DrawerHeader'\n\nexport const DrawerHeader = withContext(Header, 'header')\nexport const DrawerTitle = withContext(styled(ArkDrawer.Title), 'title')\nexport const DrawerTrigger = withContext(styled(ArkDrawer.Trigger), 'trigger')\n\nconst DrawerPositioner = withContext(styled(ArkDrawer.Positioner), 'positioner')\nconst DrawerBackdrop = withContext(styled(ArkDrawer.Backdrop), 'backdrop')\n\nconst Content = forwardRef<ElementRef<typeof ArkDrawer.Content>, ComponentPropsWithoutRef<typeof ArkDrawer.Content>>(\n ({ children, ...props }, ref) => (\n <Portal>\n <DrawerBackdrop />\n <DrawerPositioner>\n <ArkDrawer.Content ref={ref} {...props}>\n {children}\n </ArkDrawer.Content>\n </DrawerPositioner>\n </Portal>\n ),\n)\nContent.displayName = ArkDrawer.Content.displayName\n\nexport const DrawerContent = withContext(styled(Content), 'content')\n\nexport interface DrawerProps extends ComponentProps<typeof Drawer> {}\nexport interface DrawerBackdropProps extends ComponentProps<typeof DrawerBackdrop> {}\nexport interface DrawerBodyProps extends ComponentProps<typeof DrawerBody> {}\nexport interface DrawerCloseTriggerProps extends ComponentProps<typeof DrawerCloseTrigger> {}\nexport interface DrawerContentProps extends ComponentProps<typeof DrawerContent> {}\nexport interface DrawerFooterProps extends ComponentProps<typeof DrawerFooter> {}\nexport interface DrawerHeaderProps extends ComponentProps<typeof DrawerHeader> {}\nexport interface DrawerPositionerProps extends ComponentProps<typeof DrawerPositioner> {}\nexport interface DrawerTitleProps extends ComponentProps<typeof DrawerTitle> {}\nexport interface DrawerTriggerProps extends ComponentProps<typeof DrawerTrigger> {}\n","import type { ComponentProps, FC } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { formControl } from '@stokelp/styled-system/recipes'\n\nconst StyledFormControl = styled('div', formControl, {\n defaultProps: {\n role: 'group',\n },\n})\n\nexport interface FormControlProps extends ComponentProps<typeof StyledFormControl> {\n isInvalid?: boolean\n isRequired?: boolean\n}\n\nexport const FormControl: FC<FormControlProps> = ({ isInvalid, isRequired, ...props }) => {\n const invalidProps = {\n ...(isInvalid ? { 'aria-invalid': true } : {}),\n ...(isRequired ? { 'aria-required': true } : {}),\n }\n\n return <StyledFormControl {...invalidProps} {...props} />\n}\n","import type { ComponentProps, FC, ReactNode } from 'react'\n\nimport { splitCssProps, styled } from '@stokelp/styled-system/jsx'\nimport { formLabel } from '@stokelp/styled-system/recipes'\nimport { css, cx } from '@stokelp/styled-system/css'\n\nconst StyledFormLabel = styled('label', formLabel)\n\nexport interface FormLabelProps extends ComponentProps<typeof StyledFormLabel> {\n addon?: ReactNode\n}\n\nexport const FormLabel: FC<FormLabelProps> = props => {\n const [variantProps, labelProps] = formLabel.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(labelProps)\n const { children, className, addon, ...rootProps } = localProps\n const styles = formLabel(variantProps)\n\n return (\n <StyledFormLabel className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n {children}\n {addon ? <styled.span className={styles.addon}>{addon}</styled.span> : null}\n </StyledFormLabel>\n )\n}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { formHelperText } from '@stokelp/styled-system/recipes'\n\nexport const FormHelperText = styled('p', formHelperText, {\n dataAttr: true,\n})\n\nexport interface FormHelperTextProps extends ComponentProps<typeof FormHelperText> {}\n","import { type HTMLStyledProps, styled, type StyledComponent } from '@stokelp/styled-system/jsx'\nimport { heading, type HeadingVariantProps } from '@stokelp/styled-system/recipes'\nimport { useMemo } from 'react'\n\ntype As = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\nexport type HeadingProps = {\n as?: As\n} & HeadingVariantProps &\n HTMLStyledProps<As>\n\nexport const Heading = (props: HeadingProps) => {\n const { as = 'h2', ...localProps } = props\n const Dynamic = useMemo(() => styled(as, heading) as StyledComponent<As>, [as])\n\n return <Dynamic size={as} {...localProps} />\n}\n","import { Switch as ArkSwitch, type SwitchRootProps } from '@ark-ui/react'\nimport { css, cx } from '@stokelp/styled-system/css'\nimport { splitCssProps } from '@stokelp/styled-system/jsx'\nimport { switchRecipe, type SwitchRecipeVariantProps } from '@stokelp/styled-system/recipes'\nimport type { Assign, JsxStyleProps } from '@stokelp/styled-system/types'\nimport { forwardRef, type ReactNode } from 'react'\n\nexport interface SwitchProps extends Assign<JsxStyleProps, SwitchRootProps>, SwitchRecipeVariantProps {\n children?: ReactNode\n}\n\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>((props, ref) => {\n const [variantProps, switchProps] = switchRecipe.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(switchProps)\n const { children, className, ...rootProps } = localProps\n const styles = switchRecipe(variantProps)\n\n return (\n <ArkSwitch.Root ref={ref} className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n <ArkSwitch.Control className={styles.control}>\n <ArkSwitch.Thumb className={styles.thumb} />\n </ArkSwitch.Control>\n {children ? <ArkSwitch.Label className={styles.label}>{children}</ArkSwitch.Label> : null}\n <ArkSwitch.HiddenInput />\n </ArkSwitch.Root>\n )\n})\n\nSwitch.displayName = 'Switch'\n","import { styled } from '@stokelp/styled-system/jsx'\nimport { text, type TextVariantProps } from '@stokelp/styled-system/recipes'\nimport { type HTMLStyledProps, type StyledComponent } from '@stokelp/styled-system/types'\nimport { useMemo } from 'react'\n\ntype As = 'p' | 'span' | 'div' | 'label' | 'pre'\n\nexport type TextProps = {\n as?: As\n} & TextVariantProps &\n HTMLStyledProps<As>\n\nexport const Text = (props: TextProps) => {\n const { as = 'p', ...localProps } = props\n const Dynamic = useMemo(() => styled(as, text) as StyledComponent<As>, [as])\n\n return <Dynamic {...localProps} />\n}\n","import { ark } from '@ark-ui/react'\nimport type { ComponentProps } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { textarea } from '@stokelp/styled-system/recipes'\n\nexport const Textarea = styled(ark.textarea, textarea)\nexport interface TextareaProps extends ComponentProps<typeof Textarea> {}\n","import { Tabs as ArkTab } from '@ark-ui/react'\nimport { ComponentProps, type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { tabs } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots.tsx'\n\nconst { withProvider, withContext } = createStyleContext(tabs)\n\nexport const Tabs = withProvider(styled(ArkTab.Root), 'root', {\n defaultProps: {\n lazyMount: true,\n },\n})\nexport const TabsContent = withContext(styled(ArkTab.Content), 'content')\nexport const TabsTrigger = withContext(styled(ArkTab.Trigger), 'trigger')\n\nconst TabsIndicator = withContext(styled(ArkTab.Indicator), 'indicator')\n\nconst List = forwardRef<ElementRef<typeof ArkTab.List>, ComponentPropsWithoutRef<typeof ArkTab.List>>(\n ({ children, ...props }, ref) => (\n <ArkTab.List ref={ref} {...props}>\n {children}\n <TabsIndicator />\n </ArkTab.List>\n ),\n)\nList.displayName = ArkTab.List.displayName\n\nexport const TabsList = withContext(styled(List), 'list')\n\nexport interface TabsProps extends ComponentProps<typeof Tabs> {}\nexport interface TabsContentProps extends ComponentProps<typeof TabsContent> {}\nexport interface TabsIndicatorProps extends ComponentProps<typeof TabsIndicator> {}\nexport interface TabsListProps extends ComponentProps<typeof TabsList> {}\nexport interface TabsTriggerProps extends ComponentProps<typeof TabsTrigger> {}\n","import type { FC, ReactElement, ReactNode } from 'react'\n\nexport interface ConditionalWrapperProps {\n readonly when: boolean\n readonly children: ReactNode\n readonly wrapper: (children: ReactNode) => ReactNode\n}\n\nexport const ConditionalWrapper: FC<ConditionalWrapperProps> = ({ children, when, wrapper }) =>\n when === true ? (wrapper(children) as ReactElement) : (children as ReactElement)\n","import { Portal } from '@ark-ui/react'\nimport type { FC } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { Select as ArkSelect, type SelectRootProps } from '@ark-ui/react'\n\nimport { select } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots'\n\nimport { ConditionalWrapper } from '~/shared/ConditionalWrapper'\nimport { Text } from '~/components'\nimport { HTMLStyledProps, RecipeVariantProps } from '@stokelp/styled-system/types'\n\nconst { withProvider, withContext } = createStyleContext(select)\n\nconst Root = withProvider(styled(ArkSelect.Root), 'root', {\n defaultProps: {\n loopFocus: true,\n },\n})\n\nconst ClearTrigger = withContext(styled(ArkSelect.ClearTrigger), 'clearTrigger')\nconst Content = withContext(styled(ArkSelect.Content), 'content')\nconst Control = withContext(styled(ArkSelect.Control), 'control')\nconst Indicator = withContext(styled(ArkSelect.Indicator), 'indicator')\nconst Item = withContext(styled(ArkSelect.Item), 'item')\nconst ItemIndicator = withContext(styled(ArkSelect.ItemIndicator), 'itemIndicator')\nconst ItemText = withContext(styled(ArkSelect.ItemText), 'itemText')\nconst Positioner = withContext(styled(ArkSelect.Positioner), 'positioner')\nconst Trigger = withContext(styled(ArkSelect.Trigger), 'trigger')\nconst ValueText = withContext(styled(ArkSelect.ValueText), 'valueText')\n\nexport type SelectItem = { value: string; label: string; disabled?: boolean }\n\nexport type SelectProps = Omit<SelectRootProps<string | object>, 'items'> & {\n items: SelectItem[]\n emptyLabel?: string\n placeholder?: string\n usePortal?: boolean\n} & HTMLStyledProps<'div'> &\n RecipeVariantProps<typeof select>\n\nexport const Select: FC<SelectProps> = ({\n items,\n placeholder,\n emptyLabel,\n usePortal = true,\n positioning,\n ...props\n}) => {\n return (\n <Root\n lazyMount\n unmountOnExit\n items={items}\n positioning={{ sameWidth: true, gutter: 0, ...positioning }}\n data-recipe=\"select\"\n {...props}\n >\n <Control>\n <Trigger>\n <ValueText truncate placeholder={placeholder} />\n <ClearTrigger asChild>\n <styled.svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.99996 1.66669C5.39163 1.66669 1.66663 5.39169 1.66663 10C1.66663 14.6084 5.39163 18.3334 9.99996 18.3334C14.6083 18.3334 18.3333 14.6084 18.3333 10C18.3333 5.39169 14.6083 1.66669 9.99996 1.66669ZM9.99996 16.6667C6.32496 16.6667 3.33329 13.675 3.33329 10C3.33329 6.32502 6.32496 3.33335 9.99996 3.33335C13.675 3.33335 16.6666 6.32502 16.6666 10C16.6666 13.675 13.675 16.6667 9.99996 16.6667ZM12.9916 5.83335L9.99996 8.82502L7.00829 5.83335L5.83329 7.00835L8.82496 10L5.83329 12.9917L7.00829 14.1667L9.99996 11.175L12.9916 14.1667L14.1666 12.9917L11.175 10L14.1666 7.00835L12.9916 5.83335Z\"\n fill=\"currentColor\"\n />\n </styled.svg>\n </ClearTrigger>\n <Indicator asChild>\n <styled.svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.41 8.29498L12 12.875L16.59 8.29498L18 9.70498L12 15.705L6 9.70498L7.41 8.29498Z\"\n fill=\"currentColor\"\n />\n </styled.svg>\n </Indicator>\n </Trigger>\n </Control>\n <ConditionalWrapper when={usePortal} wrapper={children => <Portal>{children}</Portal>}>\n <Positioner>\n <Content>\n {items.length === 0 ? (\n <Text px=\"space-8\" textAlign=\"center\">\n {emptyLabel ?? 'Aucun résultat'}\n </Text>\n ) : (\n items.map(item => (\n <Item key={item.value} item={item}>\n <ItemText truncate>{item.label}</ItemText>\n {props.multiple ? <ItemIndicator>✓</ItemIndicator> : null}\n </Item>\n ))\n )}\n </Content>\n </Positioner>\n </ConditionalWrapper>\n <ArkSelect.HiddenSelect />\n </Root>\n )\n}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { input } from '@stokelp/styled-system/recipes'\n\nexport const Input = styled('input', input, {\n dataAttr: true,\n})\n\nexport interface InputProps extends ComponentProps<typeof Input> {}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { inputAddon } from '@stokelp/styled-system/recipes'\n\nexport const InputAddon = styled('div', inputAddon, {\n dataAttr: true,\n})\n\nexport interface InputAddonProps extends ComponentProps<typeof InputAddon> {}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { inputGroup } from '@stokelp/styled-system/recipes'\n\nexport const InputGroup = styled('div', inputGroup)\n\nexport interface InputGroupProps extends ComponentProps<typeof InputGroup> {}\n","export const breakpoints = {\n xl: '1536px',\n lg: '1200px',\n md: '900px',\n sm: '600px',\n} as const\n","export const conditions = {\n extend: {\n checked: '&:where(:checked, [data-checked], [aria-checked=true], [data-state=checked])',\n closed: '&:where([data-state=closed])',\n collapsed: '&:where([aria-collapsed=true], [data-collapsed], [data-state=\"collapsed\"])',\n current: '&:is([data-current])',\n focus: `&:where(:focus, [data-focus], [data-focused])`,\n groupHover: '[role=group]:where(:hover, [data-hover]) &',\n hidden: '&:where([hidden])',\n highlighted: '&:where([data-highlighted])',\n hover: `&:where(:hover, [data-hover], [data-hovered])`,\n indeterminate: '&:where(:indeterminate, [data-indeterminate], [aria-checked=mixed], [data-state=indeterminate])',\n invalid: '&:where(:invalid, [data-invalid], [aria-invalid=true])',\n open: '&:where([open], [data-state=open])',\n placeholderShown: '&:where(:placeholder-shown, [data-placeholder-shown])',\n today: '&:where([data-today])',\n underValue: '&:where([data-state=\"under-value\"])',\n },\n}\n","export const containerSizes = {\n '2xl': '672px',\n '3xl': '768px',\n '4xl': '896px',\n '5xl': '1024px',\n '6xl': '1152px',\n '7xl': '1280px',\n '8xl': '1440px',\n lg: '512px',\n md: '448px',\n sm: '384px',\n xl: '576px',\n xs: '320px',\n} as const\n","import { defineKeyframes } from '@pandacss/dev'\n\nexport const keyframes = defineKeyframes({\n blob: {\n '0%': {\n rotate: '0deg',\n },\n '100%': {\n rotate: '359deg',\n },\n },\n bounce: {\n '0%, 100%': {\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n transform: 'translateY(-25%)',\n },\n '50%': {\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n transform: 'none',\n },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n fadeIn: {\n '0%': { opacity: '0', transform: 'translateY(-4px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n fadeInFromRight: {\n '0%': { opacity: '0', transform: 'translateX(100%)' },\n '100%': { opacity: '1', transform: 'translateX(0)' },\n },\n fadeInSkew: {\n '0%': { opacity: '0', transform: 'translateY(-4px) rotateX(-1deg) scale(0.95)', transformStyle: 'preserve-3d' },\n '100%': { opacity: '1', transform: 'translateY(0) rotateX(0) scale(1)', transformStyle: 'preserve-3d' },\n },\n fadeOut: {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(-4px)' },\n },\n fadeOutFromRight: {\n '0%': { opacity: '1', transform: 'translateX(0)' },\n '100%': { opacity: '0', transform: 'translateX(100%)' },\n },\n fadeOutSkew: {\n '0%': { opacity: '1', transform: 'translateY(0) rotateX(0) scale(1)', transformStyle: 'preserve-3d' },\n '100%': { opacity: '0', transform: 'translateY(-4px) rotateX(-1deg) scale(0.95)', transformStyle: 'preserve-3d' },\n },\n ping: {\n '75%, 100%': {\n opacity: '0',\n transform: 'scale(2)',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n 'skeleton-pulse': {\n '50%': { opacity: '0.5' },\n },\n 'slide-in': {\n '0%': { opacity: '0', transform: 'translateY(64px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-left': {\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(0%)' },\n },\n 'slide-in-modal': {\n '0%': { opacity: '0', transform: 'translateY(64px) scale(0.9)' },\n '100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n },\n 'slide-in-right': {\n '0%': { transform: 'translateX(100%)' },\n '100%': { transform: 'translateX(0%)' },\n },\n 'slide-out': {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(64px)' },\n },\n 'slide-out-left': {\n '0%': { transform: 'translateX(0%)' },\n '100%': { transform: 'translateX(-100%)' },\n },\n 'slide-out-modal': {\n '0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n '100%': { opacity: '0', transform: 'translateY(64px) scale(0.9)' },\n },\n\n 'slide-out-right': {\n '0%': { transform: 'translateX(0%)' },\n '100%': { transform: 'translateX(100%)' },\n },\n slideInFromBottom: {\n '0%': { opacity: '0', transform: 'translateY(4px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n slideOutToBottom: {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(4px)' },\n },\n 'collapse-in': {\n '0%': { height: '0px' },\n '100%': { height: 'var(--height)' },\n },\n 'collapse-out': {\n '0%': { height: 'var(--height)' },\n '100%': { height: '0px' },\n },\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const buttonRecipe = defineRecipe({\n base: {\n _focusVisible: {\n ring: '2px solid {colors.primary.200}',\n ringOffset: 'space-2',\n },\n alignItems: 'center',\n cursor: {\n _disabled: 'not-allowed',\n base: 'pointer',\n },\n opacity: {\n _disabled: 0.32,\n },\n display: 'flex',\n flexDirection: 'row',\n gap: 'space-4',\n justifyContent: 'center',\n transition: 'color, background-color, border-color, opacity',\n transitionDuration: 'fast',\n fontWeight: 'bold',\n fontFamily: 'satoshi',\n },\n className: 'button',\n defaultVariants: {\n size: 'lg',\n variant: 'primary',\n severity: 'none',\n },\n description: 'The styles for the Button component',\n jsx: ['Button'],\n variants: {\n size: {\n lg: {\n borderRadius: 'radius-60',\n px: 'space-20',\n py: 'space-8',\n textStyle: 'body.lg',\n },\n md: {\n borderRadius: 'radius-60',\n px: 'space-16',\n py: 'space-6',\n textStyle: 'body.md',\n },\n sm: {\n borderRadius: 'radius-60',\n px: 'space-12',\n py: 'space-4',\n textStyle: 'body.sm',\n },\n },\n variant: {\n primary: {\n bg: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n _active: 'primary.800',\n _hover: 'primary.600',\n base: 'primary.500',\n },\n color: 'white',\n },\n secondary: {\n bg: {\n _disabled: {\n _hover: 'white',\n _active: 'white',\n base: 'white',\n },\n _active: 'primary.600',\n _hover: 'primary.500',\n base: 'white',\n },\n boxShadow: 'inset 0 0 0 1px {colors.primary.500}',\n color: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n base: 'primary.500',\n _hover: 'white',\n _active: 'white',\n },\n },\n tertiary: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'primary.200',\n _hover: 'primary.100',\n base: 'transparent',\n },\n color: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n base: 'primary.500',\n _hover: 'primary.600',\n _active: 'primary.600',\n },\n },\n },\n severity: {\n none: {},\n danger: {},\n },\n },\n compoundVariants: [\n {\n variant: 'primary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n _active: 'error.800',\n _hover: 'error.700',\n base: 'error.500',\n },\n },\n },\n {\n variant: 'secondary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'error.700',\n _hover: 'error.500',\n base: 'transparent',\n },\n boxShadow: {\n base: 'inset 0 0 0 1px {colors.error.500}',\n _active: 'inset 0 0 0 1px {colors.error.700}',\n },\n color: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n base: 'error.500',\n _hover: 'white',\n _active: 'white',\n },\n },\n },\n {\n variant: 'tertiary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'error.200',\n _hover: 'error.100',\n base: 'transparent',\n },\n color: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n base: 'error.500',\n _hover: 'error.700',\n _active: 'error.700',\n },\n },\n },\n ],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const headingRecipe = defineRecipe({\n className: 'heading',\n defaultVariants: {\n size: 'h2',\n },\n jsx: ['Heading'],\n base: {\n fontFamily: 'cabinet',\n color: 'text.heading',\n },\n variants: {\n italic: {\n true: {\n fontStyle: 'italic',\n },\n },\n underline: {\n true: {\n textDecoration: 'underline',\n },\n },\n size: {\n h1: { textStyle: 'heading.h1' },\n h2: { textStyle: 'heading.h2' },\n h3: { textStyle: 'heading.h3' },\n h4: { textStyle: 'heading.h4' },\n h5: { textStyle: 'heading.h5' },\n h6: { textStyle: 'heading.h6' },\n },\n },\n})\n","// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n parts: (...values) => {\n if (isEmpty(parts)) {\n return createAnatomy(name, values);\n }\n throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n },\n extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n rename: (newName) => createAnatomy(newName, parts),\n keys: () => parts,\n build: () => [...new Set(parts)].reduce(\n (prev, part) => Object.assign(prev, {\n [part]: {\n selector: [\n `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n ].join(\", \"),\n attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n }\n }),\n {}\n )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\nexport {\n createAnatomy\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/array.ts\nfunction toArray(v) {\n if (!v)\n return [];\n return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, item) => v.filter((t) => t !== item);\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar addOrRemove = (v, item) => {\n if (has(v, item))\n return remove(v, item);\n return add(v, item);\n};\nfunction clear(v) {\n while (v.length > 0)\n v.pop();\n return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n const next2 = idx + step;\n const len = v.length;\n const last2 = len - 1;\n if (idx === -1)\n return step > 0 ? 0 : last2;\n if (next2 < 0)\n return loop ? last2 : 0;\n if (next2 >= len)\n return loop ? 0 : idx > len ? len : idx;\n return next2;\n}\nfunction next(v, idx, opts = {}) {\n return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n return v[prevIndex(v, index, opts)];\n}\nvar chunk = (v, size) => {\n const res = [];\n return v.reduce((rows, value, index) => {\n if (index % size === 0)\n rows.push([value]);\n else\n last(rows)?.push(value);\n return rows;\n }, res);\n};\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isEqual = (a, b) => {\n if (Object.is(a, b))\n return true;\n if (a == null && b != null || a != null && b == null)\n return false;\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b);\n }\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString();\n }\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString();\n }\n if (!(typeof a === \"object\") || !(typeof b === \"object\"))\n return false;\n const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n const length = keys.length;\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i]);\n if (!hasKey)\n return false;\n }\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n if (!isEqual(a[key], b[key]))\n return false;\n }\n return true;\n};\n\n// src/functions.ts\nvar runIfFn = (v, ...a) => {\n const res = typeof v === \"function\" ? v(...a) : v;\n return res ?? void 0;\n};\nvar cast = (v) => v;\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n fns.forEach(function(fn) {\n fn?.(...a);\n });\n};\nvar uuid = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n return id.toString(36);\n };\n})();\nfunction match(key, record, ...args) {\n if (key in record) {\n const fn = record[key];\n return typeof fn === \"function\" ? fn(...args) : fn;\n }\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n Error.captureStackTrace?.(error, match);\n throw error;\n}\nvar tryCatch = (fn, fallback) => {\n try {\n return fn();\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch);\n }\n return fallback?.();\n }\n};\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObject = (v) => !(v == null || typeof v !== \"object\" || isArray(v));\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\n// src/object.ts\nfunction compact(obj) {\n if (!isPlainObject(obj) || obj === void 0) {\n return obj;\n }\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n const filtered = {};\n for (const key of keys) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = compact(value);\n }\n }\n return filtered;\n}\nfunction json(value) {\n return JSON.parse(JSON.stringify(value));\n}\nvar isPlainObject = (value) => {\n return value && typeof value === \"object\" && value.constructor === Object;\n};\nfunction pick(obj, keys) {\n const filtered = {};\n for (const key of keys) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\n// src/split-props.ts\nfunction splitProps(props, keys) {\n const rest = {};\n const result = {};\n const keySet = new Set(keys);\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key];\n } else {\n rest[key] = props[key];\n }\n }\n return [result, rest];\n}\nvar createSplitProps = (keys) => {\n return function split(props) {\n return splitProps(props, keys);\n };\n};\n\n// src/warning.ts\nfunction warn(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m);\n }\n}\nfunction invariant(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m);\n }\n}\nexport {\n add,\n addOrRemove,\n callAll,\n cast,\n chunk,\n clear,\n compact,\n createSplitProps,\n first,\n fromLength,\n has,\n hasProp,\n invariant,\n isArray,\n isBoolean,\n isDev,\n isEmpty,\n isEqual,\n isFunction,\n isNull,\n isNumber,\n isObject,\n isString,\n json,\n last,\n match,\n next,\n nextIndex,\n noop,\n pick,\n prev,\n prevIndex,\n remove,\n removeAt,\n runIfFn,\n splitProps,\n toArray,\n tryCatch,\n uuid,\n warn\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/accordion.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"accordion\").parts(\"root\", \"item\", \"itemTrigger\", \"itemContent\", \"itemIndicator\");\nvar parts = anatomy.build();\n\n// src/accordion.connect.ts\nimport { getEventKey } from \"@zag-js/dom-event\";\nimport { dataAttr, isSafari } from \"@zag-js/dom-query\";\n\n// src/accordion.dom.ts\nimport { nextById, prevById, queryAll, createScope } from \"@zag-js/dom-query\";\nimport { first, last } from \"@zag-js/utils\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `accordion:${ctx.id}`,\n getItemId: (ctx, value) => ctx.ids?.item?.(value) ?? `accordion:${ctx.id}:item:${value}`,\n getItemContentId: (ctx, value) => ctx.ids?.content?.(value) ?? `accordion:${ctx.id}:content:${value}`,\n getItemTriggerId: (ctx, value) => ctx.ids?.trigger?.(value) ?? `accordion:${ctx.id}:trigger:${value}`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getTriggers: (ctx) => {\n const ownerId = CSS.escape(dom.getRootId(ctx));\n const selector = `[aria-controls][data-ownedby='${ownerId}']:not([disabled])`;\n return queryAll(dom.getRootEl(ctx), selector);\n },\n getFirstTriggerEl: (ctx) => first(dom.getTriggers(ctx)),\n getLastTriggerEl: (ctx) => last(dom.getTriggers(ctx)),\n getNextTriggerEl: (ctx, id) => nextById(dom.getTriggers(ctx), dom.getItemTriggerId(ctx, id)),\n getPrevTriggerEl: (ctx, id) => prevById(dom.getTriggers(ctx), dom.getItemTriggerId(ctx, id))\n});\n\n// src/accordion.connect.ts\nfunction connect(state, send, normalize) {\n const focusedValue = state.context.focusedValue;\n const value = state.context.value;\n const multiple = state.context.multiple;\n function setValue(value2) {\n let nextValue = value2;\n if (multiple && nextValue.length > 1) {\n nextValue = [nextValue[0]];\n }\n send({ type: \"VALUE.SET\", value: nextValue });\n }\n function getItemState(props2) {\n return {\n expanded: value.includes(props2.value),\n focused: focusedValue === props2.value,\n disabled: Boolean(props2.disabled ?? state.context.disabled)\n };\n }\n return {\n focusedValue,\n value,\n setValue,\n getItemState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-orientation\": state.context.orientation\n }),\n getItemProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.item.attrs,\n dir: state.context.dir,\n id: dom.getItemId(state.context, props2.value),\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(itemState.focused),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemContentProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemContent.attrs,\n dir: state.context.dir,\n role: \"region\",\n id: dom.getItemContentId(state.context, props2.value),\n \"aria-labelledby\": dom.getItemTriggerId(state.context, props2.value),\n hidden: !itemState.expanded,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-focus\": dataAttr(itemState.focused),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemIndicator.attrs,\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-focus\": dataAttr(itemState.focused),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemTriggerProps(props2) {\n const { value: value2 } = props2;\n const itemState = getItemState(props2);\n return normalize.button({\n ...parts.itemTrigger.attrs,\n type: \"button\",\n dir: state.context.dir,\n id: dom.getItemTriggerId(state.context, value2),\n \"aria-controls\": dom.getItemContentId(state.context, value2),\n \"aria-expanded\": itemState.expanded,\n disabled: itemState.disabled,\n \"data-orientation\": state.context.orientation,\n \"aria-disabled\": itemState.disabled,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-ownedby\": dom.getRootId(state.context),\n onFocus() {\n if (itemState.disabled)\n return;\n send({ type: \"TRIGGER.FOCUS\", value: value2 });\n },\n onBlur() {\n if (itemState.disabled)\n return;\n send(\"TRIGGER.BLUR\");\n },\n onClick(event) {\n if (itemState.disabled)\n return;\n if (isSafari()) {\n event.currentTarget.focus();\n }\n send({ type: \"TRIGGER.CLICK\", value: value2 });\n },\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n if (itemState.disabled)\n return;\n const keyMap = {\n ArrowDown() {\n if (state.context.isHorizontal)\n return;\n send({ type: \"GOTO.NEXT\", value: value2 });\n },\n ArrowUp() {\n if (state.context.isHorizontal)\n return;\n send({ type: \"GOTO.PREV\", value: value2 });\n },\n ArrowRight() {\n if (!state.context.isHorizontal)\n return;\n send({ type: \"GOTO.NEXT\", value: value2 });\n },\n ArrowLeft() {\n if (!state.context.isHorizontal)\n return;\n send({ type: \"GOTO.PREV\", value: value2 });\n },\n Home() {\n send({ type: \"GOTO.FIRST\", value: value2 });\n },\n End() {\n send({ type: \"GOTO.LAST\", value: value2 });\n }\n };\n const key = getEventKey(event, {\n dir: state.context.dir,\n orientation: state.context.orientation\n });\n const exec = keyMap[key];\n if (exec) {\n exec(event);\n event.preventDefault();\n }\n }\n });\n }\n };\n}\n\n// src/accordion.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { add, compact, isEqual, remove, warn } from \"@zag-js/utils\";\nvar { and, not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"accordion\",\n initial: \"idle\",\n context: {\n focusedValue: null,\n value: [],\n collapsible: false,\n multiple: false,\n orientation: \"vertical\",\n ...ctx\n },\n watch: {\n value: \"coarseValue\",\n multiple: \"coarseValue\"\n },\n created: \"coarseValue\",\n computed: {\n isHorizontal: (ctx2) => ctx2.orientation === \"horizontal\"\n },\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"]\n }\n },\n states: {\n idle: {\n on: {\n \"TRIGGER.FOCUS\": {\n target: \"focused\",\n actions: \"setFocusedValue\"\n }\n }\n },\n focused: {\n on: {\n \"GOTO.NEXT\": {\n actions: \"focusNextTrigger\"\n },\n \"GOTO.PREV\": {\n actions: \"focusPrevTrigger\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: and(\"isExpanded\", \"canToggle\"),\n actions: [\"collapse\"]\n },\n {\n guard: not(\"isExpanded\"),\n actions: [\"expand\"]\n }\n ],\n \"GOTO.FIRST\": {\n actions: \"focusFirstTrigger\"\n },\n \"GOTO.LAST\": {\n actions: \"focusLastTrigger\"\n },\n \"TRIGGER.BLUR\": {\n target: \"idle\",\n actions: \"clearFocusedValue\"\n }\n }\n }\n }\n },\n {\n guards: {\n canToggle: (ctx2) => !!ctx2.collapsible || !!ctx2.multiple,\n isExpanded: (ctx2, evt) => ctx2.value.includes(evt.value)\n },\n actions: {\n collapse(ctx2, evt) {\n const next = ctx2.multiple ? remove(ctx2.value, evt.value) : [];\n set.value(ctx2, ctx2.multiple ? next : []);\n },\n expand(ctx2, evt) {\n const next = ctx2.multiple ? add(ctx2.value, evt.value) : [evt.value];\n set.value(ctx2, next);\n },\n focusFirstTrigger(ctx2) {\n dom.getFirstTriggerEl(ctx2)?.focus();\n },\n focusLastTrigger(ctx2) {\n dom.getLastTriggerEl(ctx2)?.focus();\n },\n focusNextTrigger(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getNextTriggerEl(ctx2, ctx2.focusedValue);\n triggerEl?.focus();\n },\n focusPrevTrigger(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getPrevTriggerEl(ctx2, ctx2.focusedValue);\n triggerEl?.focus();\n },\n setFocusedValue(ctx2, evt) {\n set.focusedValue(ctx2, evt.value);\n },\n clearFocusedValue(ctx2) {\n set.focusedValue(ctx2, null);\n },\n setValue(ctx2, evt) {\n set.value(ctx2, evt.value);\n },\n coarseValue(ctx2) {\n if (!ctx2.multiple && ctx2.value.length > 1) {\n warn(`The value of accordion should be a single value when multiple is false.`);\n ctx2.value = [ctx2.value[0]];\n }\n }\n }\n }\n );\n}\nvar invoke = {\n change(ctx) {\n ctx.onValueChange?.({ value: Array.from(ctx.value) });\n },\n focusChange(ctx) {\n ctx.onFocusChange?.({ value: ctx.focusedValue });\n }\n};\nvar set = {\n value(ctx, value) {\n if (isEqual(ctx.value, value))\n return;\n ctx.value = value;\n invoke.change(ctx);\n },\n focusedValue(ctx, value) {\n if (isEqual(ctx.focusedValue, value))\n return;\n ctx.focusedValue = value;\n invoke.focusChange(ctx);\n }\n};\n\n// src/accordion.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"collapsible\",\n \"dir\",\n \"disabled\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"multiple\",\n \"onFocusChange\",\n \"onValueChange\",\n \"orientation\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\nexport {\n anatomy,\n connect,\n itemProps,\n machine,\n props,\n splitItemProps,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/checkbox.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"checkbox\").parts(\"root\", \"label\", \"control\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/checkbox.connect.ts\nimport { dataAttr, visuallyHiddenStyle } from \"@zag-js/dom-query\";\n\n// src/checkbox.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `checkbox:${ctx.id}`,\n getLabelId: (ctx) => ctx.ids?.label ?? `checkbox:${ctx.id}:label`,\n getControlId: (ctx) => ctx.ids?.control ?? `checkbox:${ctx.id}:control`,\n getHiddenInputId: (ctx) => ctx.ids?.hiddenInput ?? `checkbox:${ctx.id}:hidden`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx))\n});\n\n// src/checkbox.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const focused = !disabled && state.context.focused;\n const checked = state.context.isChecked;\n const indeterminate = state.context.isIndeterminate;\n const readOnly = state.context.readOnly;\n const dataAttrs = {\n \"data-active\": dataAttr(state.context.active),\n \"data-focus\": dataAttr(focused),\n \"data-readonly\": dataAttr(readOnly),\n \"data-hover\": dataAttr(state.context.hovered),\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": indeterminate ? \"indeterminate\" : state.context.checked ? \"checked\" : \"unchecked\",\n \"data-invalid\": dataAttr(state.context.invalid)\n };\n return {\n checked,\n disabled,\n indeterminate,\n focused,\n checkedState: state.context.checked,\n setChecked(checked2) {\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n },\n toggleChecked() {\n send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n },\n rootProps: normalize.label({\n ...parts.root.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onPointerMove() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n },\n onPointerLeave() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n },\n onClick(event) {\n if (event.target === dom.getHiddenInputEl(state.context)) {\n event.stopPropagation();\n }\n }\n }),\n labelProps: normalize.element({\n ...parts.label.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context)\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"aria-hidden\": true\n }),\n indicatorProps: normalize.element({\n ...parts.indicator.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n hidden: !indeterminate && !state.context.checked\n }),\n hiddenInputProps: normalize.input({\n id: dom.getHiddenInputId(state.context),\n type: \"checkbox\",\n required: state.context.required,\n defaultChecked: checked,\n disabled,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"aria-invalid\": state.context.invalid,\n name: state.context.name,\n form: state.context.form,\n value: state.context.value,\n style: visuallyHiddenStyle,\n onChange(event) {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n const checked2 = event.currentTarget.checked;\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n }\n })\n };\n}\n\n// src/checkbox.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackFocusVisible, trackPress } from \"@zag-js/dom-event\";\nimport { dispatchInputCheckedEvent, trackFormControl } from \"@zag-js/form-utils\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"checkbox\",\n initial: \"ready\",\n context: {\n checked: false,\n value: \"on\",\n disabled: false,\n ...ctx,\n fieldsetDisabled: false\n },\n watch: {\n disabled: \"removeFocusIfNeeded\",\n checked: \"syncInputElement\"\n },\n activities: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n on: {\n \"CHECKED.TOGGLE\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"toggleChecked\"]\n }\n ],\n \"CHECKED.SET\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"setChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"setChecked\"]\n }\n ],\n \"CONTEXT.SET\": {\n actions: [\"setContext\"]\n }\n },\n computed: {\n isIndeterminate: (ctx2) => isIndeterminate(ctx2.checked),\n isChecked: (ctx2) => isChecked(ctx2.checked),\n isDisabled: (ctx2) => !!ctx2.disabled || ctx2.fieldsetDisabled\n },\n states: {\n ready: {}\n }\n },\n {\n guards: {\n isTrusted: (_ctx, evt) => !!evt.isTrusted\n },\n activities: {\n trackPressEvent(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackPress({\n pointerNode: dom.getRootEl(ctx2),\n keyboardNode: dom.getHiddenInputEl(ctx2),\n isValidKey: (event) => event.key === \" \",\n onPress: () => ctx2.active = false,\n onPressStart: () => ctx2.active = true,\n onPressEnd: () => ctx2.active = false\n });\n },\n trackFocusVisible(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackFocusVisible(dom.getHiddenInputEl(ctx2), {\n onFocus: () => ctx2.focused = true,\n onBlur: () => ctx2.focused = false\n });\n },\n trackFormControlState(ctx2, _evt, { send, initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n send({ type: \"CHECKED.SET\", checked: !!initialContext.checked });\n }\n });\n }\n },\n actions: {\n setContext(ctx2, evt) {\n Object.assign(ctx2, evt.context);\n },\n syncInputElement(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n if (!inputEl)\n return;\n inputEl.checked = ctx2.isChecked;\n inputEl.indeterminate = ctx2.isIndeterminate;\n },\n removeFocusIfNeeded(ctx2) {\n if (ctx2.disabled && ctx2.focused) {\n ctx2.focused = false;\n }\n },\n setChecked(ctx2, evt) {\n set.checked(ctx2, evt.checked);\n },\n toggleChecked(ctx2) {\n const checked = isIndeterminate(ctx2.checked) ? true : !ctx2.checked;\n set.checked(ctx2, checked);\n },\n dispatchChangeEvent(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n dispatchInputCheckedEvent(inputEl, { checked: isChecked(ctx2.checked) });\n }\n }\n }\n );\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction isChecked(checked) {\n return isIndeterminate(checked) ? false : !!checked;\n}\nvar invoke = {\n change: (ctx) => {\n ctx.onCheckedChange?.({ checked: ctx.checked });\n }\n};\nvar set = {\n checked: (ctx, checked) => {\n if (isEqual(ctx.checked, checked))\n return;\n ctx.checked = checked;\n invoke.change(ctx);\n }\n};\n\n// src/checkbox.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"checked\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"name\",\n \"onCheckedChange\",\n \"readOnly\",\n \"required\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/dialog.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"dialog\").parts(\n \"trigger\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/dialog.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getPositionerId: (ctx) => ctx.ids?.positioner ?? `dialog:${ctx.id}:positioner`,\n getBackdropId: (ctx) => ctx.ids?.backdrop ?? `dialog:${ctx.id}:backdrop`,\n getContentId: (ctx) => ctx.ids?.content ?? `dialog:${ctx.id}:content`,\n getTriggerId: (ctx) => ctx.ids?.trigger ?? `dialog:${ctx.id}:trigger`,\n getTitleId: (ctx) => ctx.ids?.title ?? `dialog:${ctx.id}:title`,\n getDescriptionId: (ctx) => ctx.ids?.description ?? `dialog:${ctx.id}:description`,\n getCloseTriggerId: (ctx) => ctx.ids?.closeTrigger ?? `dialog:${ctx.id}:close`,\n getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getPositionerEl: (ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getBackdropEl: (ctx) => dom.getById(ctx, dom.getBackdropId(ctx)),\n getTriggerEl: (ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getTitleEl: (ctx) => dom.getById(ctx, dom.getTitleId(ctx)),\n getDescriptionEl: (ctx) => dom.getById(ctx, dom.getDescriptionId(ctx)),\n getCloseTriggerEl: (ctx) => dom.getById(ctx, dom.getCloseTriggerId(ctx))\n});\n\n// src/dialog.connect.ts\nfunction connect(state, send, normalize) {\n const ariaLabel = state.context[\"aria-label\"];\n const open = state.matches(\"open\");\n const rendered = state.context.renderedElements;\n return {\n open,\n setOpen(nextOpen) {\n if (nextOpen === open)\n return;\n send(nextOpen ? \"OPEN\" : \"CLOSE\");\n },\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n dir: state.context.dir,\n id: dom.getTriggerId(state.context),\n \"aria-haspopup\": \"dialog\",\n type: \"button\",\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": dom.getContentId(state.context),\n onClick(event) {\n if (event.defaultPrevented)\n return;\n send(\"TOGGLE\");\n }\n }),\n backdropProps: normalize.element({\n ...parts.backdrop.attrs,\n dir: state.context.dir,\n hidden: !open,\n id: dom.getBackdropId(state.context),\n \"data-state\": open ? \"open\" : \"closed\"\n }),\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n dir: state.context.dir,\n id: dom.getPositionerId(state.context),\n style: {\n pointerEvents: open ? void 0 : \"none\"\n }\n }),\n contentProps: normalize.element({\n ...parts.content.attrs,\n dir: state.context.dir,\n role: state.context.role,\n hidden: !open,\n id: dom.getContentId(state.context),\n tabIndex: -1,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-modal\": true,\n \"aria-label\": ariaLabel || void 0,\n \"aria-labelledby\": ariaLabel || !rendered.title ? void 0 : dom.getTitleId(state.context),\n \"aria-describedby\": rendered.description ? dom.getDescriptionId(state.context) : void 0\n }),\n titleProps: normalize.element({\n ...parts.title.attrs,\n dir: state.context.dir,\n id: dom.getTitleId(state.context)\n }),\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n dir: state.context.dir,\n id: dom.getDescriptionId(state.context)\n }),\n closeTriggerProps: normalize.button({\n ...parts.closeTrigger.attrs,\n dir: state.context.dir,\n id: dom.getCloseTriggerId(state.context),\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented)\n return;\n event.stopPropagation();\n send(\"CLOSE\");\n }\n })\n };\n}\n\n// src/dialog.machine.ts\nimport { ariaHidden } from \"@zag-js/aria-hidden\";\nimport { createMachine } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getInitialFocus, nextTick, raf } from \"@zag-js/dom-query\";\nimport { preventBodyScroll } from \"@zag-js/remove-scroll\";\nimport { compact } from \"@zag-js/utils\";\nimport { createFocusTrap } from \"focus-trap\";\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"dialog\",\n initial: ctx.open ? \"open\" : \"closed\",\n context: {\n role: \"dialog\",\n renderedElements: {\n title: true,\n description: true\n },\n modal: true,\n trapFocus: true,\n preventScroll: true,\n closeOnInteractOutside: true,\n closeOnEscape: true,\n restoreFocus: true,\n ...ctx\n },\n created: [\"checkInitialFocusEl\"],\n watch: {\n open: [\"toggleVisibility\"]\n },\n states: {\n open: {\n entry: [\"checkRenderedElements\", \"syncZIndex\"],\n activities: [\"trackDismissableElement\", \"trapFocus\", \"preventScroll\", \"hideContentBelow\"],\n on: {\n \"CONTROLLED.CLOSE\": {\n target: \"closed\",\n actions: [\"setFinalFocus\"]\n },\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n },\n closed: {\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ]\n }\n }\n }\n },\n {\n guards: {\n isOpenControlled: (ctx2) => !!ctx2[\"open.controlled\"]\n },\n activities: {\n trackDismissableElement(ctx2, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx2);\n return trackDismissableElement(getContentEl, {\n defer: true,\n pointerBlocking: ctx2.modal,\n exclude: [dom.getTriggerEl(ctx2)],\n onInteractOutside(event) {\n ctx2.onInteractOutside?.(event);\n if (!ctx2.closeOnInteractOutside || ctx2.role === \"alertdialog\") {\n event.preventDefault();\n }\n },\n persistentElements: ctx2.persistentElements,\n onFocusOutside: ctx2.onFocusOutside,\n onPointerDownOutside: ctx2.onPointerDownOutside,\n onEscapeKeyDown(event) {\n ctx2.onEscapeKeyDown?.(event);\n if (!ctx2.closeOnEscape) {\n event.preventDefault();\n } else {\n send({ type: \"CLOSE\", src: \"escape-key\" });\n }\n },\n onDismiss() {\n send({ type: \"CLOSE\", src: \"interact-outside\" });\n }\n });\n },\n preventScroll(ctx2) {\n if (!ctx2.preventScroll)\n return;\n return preventBodyScroll(dom.getDoc(ctx2));\n },\n trapFocus(ctx2) {\n if (!ctx2.trapFocus || !ctx2.modal)\n return;\n let trap;\n const cleanup = nextTick(() => {\n const contentEl = dom.getContentEl(ctx2);\n if (!contentEl)\n return;\n trap = createFocusTrap(contentEl, {\n document: dom.getDoc(ctx2),\n escapeDeactivates: false,\n preventScroll: true,\n returnFocusOnDeactivate: false,\n fallbackFocus: contentEl,\n allowOutsideClick: true,\n initialFocus: getInitialFocus(contentEl, ctx2.initialFocusEl)\n });\n try {\n trap.activate();\n } catch {\n }\n });\n return () => {\n trap?.deactivate();\n cleanup();\n };\n },\n hideContentBelow(ctx2) {\n if (!ctx2.modal)\n return;\n const getElements = () => [dom.getContentEl(ctx2)];\n return ariaHidden(getElements, { defer: true });\n }\n },\n actions: {\n checkInitialFocusEl(ctx2) {\n if (!ctx2.initialFocusEl && ctx2.role === \"alertdialog\") {\n ctx2.initialFocusEl = () => dom.getCloseTriggerEl(ctx2);\n }\n },\n checkRenderedElements(ctx2) {\n raf(() => {\n ctx2.renderedElements.title = !!dom.getTitleEl(ctx2);\n ctx2.renderedElements.description = !!dom.getDescriptionEl(ctx2);\n });\n },\n syncZIndex(ctx2) {\n raf(() => {\n const contentEl = dom.getContentEl(ctx2);\n if (!contentEl)\n return;\n const win = dom.getWin(ctx2);\n const styles = win.getComputedStyle(contentEl);\n const elems = [dom.getPositionerEl(ctx2), dom.getBackdropEl(ctx2)];\n elems.forEach((node) => {\n node?.style.setProperty(\"--z-index\", styles.zIndex);\n });\n });\n },\n invokeOnClose(ctx2) {\n ctx2.onOpenChange?.({ open: false });\n },\n invokeOnOpen(ctx2) {\n ctx2.onOpenChange?.({ open: true });\n },\n toggleVisibility(ctx2, evt, { send }) {\n send({ type: ctx2.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt });\n },\n setFinalFocus(ctx2) {\n if (!ctx2.restoreFocus)\n return;\n queueMicrotask(() => {\n const el = ctx2.finalFocusEl?.() ?? dom.getTriggerEl(ctx2);\n el?.focus({ preventScroll: true });\n });\n }\n }\n }\n );\n}\n\n// src/dialog.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"aria-label\",\n \"closeOnEscape\",\n \"closeOnInteractOutside\",\n \"dir\",\n \"finalFocusEl\",\n \"getRootNode\",\n \"getRootNode\",\n \"id\",\n \"id\",\n \"ids\",\n \"initialFocusEl\",\n \"modal\",\n \"onEscapeKeyDown\",\n \"onFocusOutside\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"open.controlled\",\n \"open\",\n \"persistentElements\",\n \"preventScroll\",\n \"restoreFocus\",\n \"role\",\n \"trapFocus\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/select.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"select\").parts(\n \"label\",\n \"positioner\",\n \"trigger\",\n \"indicator\",\n \"clearTrigger\",\n \"item\",\n \"itemText\",\n \"itemIndicator\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"content\",\n \"root\",\n \"control\"\n);\nvar parts = anatomy.build();\n\n// src/select.collection.ts\nimport { Collection } from \"@zag-js/collection\";\nimport { ref } from \"@zag-js/core\";\nvar collection = (options) => {\n return ref(new Collection(options));\n};\ncollection.empty = () => {\n return ref(new Collection({ items: [] }));\n};\n\n// src/select.connect.ts\nimport { getEventKey, getNativeEvent, isLeftClick } from \"@zag-js/dom-event\";\nimport {\n ariaAttr,\n dataAttr,\n getByTypeahead,\n isEditableElement,\n isSelfTarget,\n isValidTabEvent,\n visuallyHiddenStyle\n} from \"@zag-js/dom-query\";\nimport { getPlacementStyles } from \"@zag-js/popper\";\n\n// src/select.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `select:${ctx.id}`,\n getContentId: (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`,\n getTriggerId: (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`,\n getClearTriggerId: (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`,\n getLabelId: (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`,\n getControlId: (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`,\n getItemId: (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`,\n getHiddenSelectId: (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`,\n getPositionerId: (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`,\n getItemGroupId: (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`,\n getItemGroupLabelId: (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`,\n getHiddenSelectEl: (ctx) => dom.getById(ctx, dom.getHiddenSelectId(ctx)),\n getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getControlEl: (ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getTriggerEl: (ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getClearTriggerEl: (ctx) => dom.getById(ctx, dom.getClearTriggerId(ctx)),\n getPositionerEl: (ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getHighlightedOptionEl(ctx) {\n if (!ctx.highlightedValue)\n return null;\n return dom.getById(ctx, dom.getItemId(ctx, ctx.highlightedValue));\n }\n});\n\n// src/select.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const invalid = state.context.invalid;\n const readOnly = state.context.readOnly;\n const interactive = state.context.isInteractive;\n const composite = state.context.composite;\n const open = state.hasTag(\"open\");\n const focused = state.matches(\"focused\");\n const highlightedValue = state.context.highlightedValue;\n const highlightedItem = state.context.highlightedItem;\n const selectedItems = state.context.selectedItems;\n const isTypingAhead = state.context.isTypingAhead;\n const ariaActiveDescendant = highlightedValue ? dom.getItemId(state.context, highlightedValue) : void 0;\n function getItemState(props2) {\n const _disabled = state.context.collection.isItemDisabled(props2.item);\n const value = state.context.collection.itemToValue(props2.item);\n return {\n value,\n disabled: Boolean(disabled || _disabled),\n highlighted: highlightedValue === value,\n selected: state.context.value.includes(value)\n };\n }\n const popperStyles = getPlacementStyles({\n ...state.context.positioning,\n placement: state.context.currentPlacement\n });\n return {\n open,\n focused,\n empty: state.context.value.length === 0,\n highlightedItem,\n highlightedValue,\n selectedItems,\n hasSelectedItems: state.context.hasSelectedItems,\n value: state.context.value,\n valueAsString: state.context.valueAsString,\n collection: state.context.collection,\n setCollection(collection2) {\n send({ type: \"COLLECTION.SET\", value: collection2 });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n focus() {\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n },\n setOpen(nextOpen) {\n if (nextOpen === open)\n return;\n send(nextOpen ? \"OPEN\" : \"CLOSE\");\n },\n selectValue(value) {\n send({ type: \"ITEM.SELECT\", value });\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value });\n },\n highlightValue(value) {\n send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n },\n clearValue(value) {\n if (value) {\n send({ type: \"ITEM.CLEAR\", value });\n } else {\n send({ type: \"VALUE.CLEAR\" });\n }\n },\n getItemState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n labelProps: normalize.label({\n dir: state.context.dir,\n id: dom.getLabelId(state.context),\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: dom.getHiddenSelectId(state.context),\n onClick(event) {\n if (event.defaultPrevented)\n return;\n if (disabled)\n return;\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n }\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid)\n }),\n triggerProps: normalize.button({\n id: dom.getTriggerId(state.context),\n disabled,\n dir: state.context.dir,\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": dom.getContentId(state.context),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-invalid\": invalid,\n \"aria-labelledby\": dom.getLabelId(state.context),\n ...parts.trigger.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n \"data-placement\": state.context.currentPlacement,\n \"data-placeholder-shown\": dataAttr(!state.context.hasSelectedItems),\n onPointerDown(event) {\n if (!isLeftClick(event))\n return;\n if (!interactive)\n return;\n event.currentTarget.dataset.pointerType = event.pointerType;\n if (disabled || event.pointerType === \"touch\")\n return;\n send({ type: \"TRIGGER.CLICK\" });\n },\n onClick(event) {\n if (!interactive || event.button)\n return;\n if (event.currentTarget.dataset.pointerType === \"touch\") {\n send({ type: \"TRIGGER.CLICK\" });\n }\n },\n onFocus() {\n send(\"TRIGGER.FOCUS\");\n },\n onBlur() {\n send(\"TRIGGER.BLUR\");\n },\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n if (!interactive)\n return;\n const keyMap = {\n ArrowUp() {\n send({ type: \"TRIGGER.ARROW_UP\" });\n },\n ArrowDown(event2) {\n send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n },\n ArrowLeft() {\n send({ type: \"TRIGGER.ARROW_LEFT\" });\n },\n ArrowRight() {\n send({ type: \"TRIGGER.ARROW_RIGHT\" });\n },\n Home() {\n send({ type: \"TRIGGER.HOME\" });\n },\n End() {\n send({ type: \"TRIGGER.END\" });\n },\n Enter() {\n send({ type: \"TRIGGER.ENTER\" });\n },\n Space(event2) {\n if (isTypingAhead) {\n send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n } else {\n send({ type: \"TRIGGER.ENTER\" });\n }\n }\n };\n const exec = keyMap[getEventKey(event, state.context)];\n if (exec) {\n exec(event);\n event.preventDefault();\n return;\n }\n if (getByTypeahead.isValidEvent(event)) {\n send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n event.preventDefault();\n }\n }\n }),\n indicatorProps: normalize.element({\n ...parts.indicator.attrs,\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n getItemProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n id: dom.getItemId(state.context, itemState.value),\n role: \"option\",\n ...parts.item.attrs,\n dir: state.context.dir,\n \"data-value\": itemState.value,\n \"aria-selected\": itemState.selected,\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"data-highlighted\": dataAttr(itemState.highlighted),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"aria-disabled\": ariaAttr(itemState.disabled),\n onPointerMove(event) {\n if (itemState.disabled || event.pointerType !== \"mouse\")\n return;\n if (itemState.value === state.context.highlightedValue)\n return;\n send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n },\n onPointerUp() {\n if (itemState.disabled)\n return;\n send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n },\n onPointerLeave(event) {\n if (itemState.disabled)\n return;\n if (props2.persistFocus)\n return;\n if (event.pointerType !== \"mouse\")\n return;\n const isArrowKey = [\"CONTENT.ARROW_UP\", \"CONTENT.ARROW_DOWN\"].includes(state.event.type);\n if (isArrowKey)\n return;\n send({ type: \"ITEM.POINTER_LEAVE\" });\n },\n onTouchEnd(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n },\n getItemTextProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemText.attrs,\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-highlighted\": dataAttr(itemState.highlighted)\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n \"aria-hidden\": true,\n ...parts.itemIndicator.attrs,\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n hidden: !itemState.selected\n });\n },\n getItemGroupLabelProps(props2) {\n const { htmlFor } = props2;\n return normalize.element({\n ...parts.itemGroupLabel.attrs,\n id: dom.getItemGroupLabelId(state.context, htmlFor),\n role: \"group\",\n dir: state.context.dir\n });\n },\n getItemGroupProps(props2) {\n const { id } = props2;\n return normalize.element({\n ...parts.itemGroup.attrs,\n \"data-disabled\": dataAttr(disabled),\n id: dom.getItemGroupId(state.context, id),\n \"aria-labelledby\": dom.getItemGroupLabelId(state.context, id),\n dir: state.context.dir\n });\n },\n clearTriggerProps: normalize.button({\n ...parts.clearTrigger.attrs,\n id: dom.getClearTriggerId(state.context),\n type: \"button\",\n \"aria-label\": \"Clear value\",\n disabled,\n hidden: !state.context.hasSelectedItems,\n dir: state.context.dir,\n onClick(event) {\n if (event.defaultPrevented)\n return;\n send(\"VALUE.CLEAR\");\n }\n }),\n hiddenSelectProps: normalize.select({\n name: state.context.name,\n form: state.context.form,\n disabled,\n multiple: state.context.multiple,\n \"aria-hidden\": true,\n id: dom.getHiddenSelectId(state.context),\n defaultValue: state.context.multiple ? state.context.value : state.context.value[0],\n style: visuallyHiddenStyle,\n tabIndex: -1,\n // Some browser extensions will focus the hidden select.\n // Let's forward the focus to the trigger.\n onFocus() {\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n },\n \"aria-labelledby\": dom.getLabelId(state.context)\n }),\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n dir: state.context.dir,\n id: dom.getPositionerId(state.context),\n style: popperStyles.floating\n }),\n contentProps: normalize.element({\n hidden: !open,\n dir: state.context.dir,\n id: dom.getContentId(state.context),\n role: composite ? \"listbox\" : \"dialog\",\n ...parts.content.attrs,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-placement\": state.context.currentPlacement,\n \"data-activedescendant\": ariaActiveDescendant,\n \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n \"aria-multiselectable\": state.context.multiple && composite ? true : void 0,\n \"aria-labelledby\": dom.getLabelId(state.context),\n tabIndex: 0,\n onKeyDown(event) {\n const evt = getNativeEvent(event);\n if (!interactive)\n return;\n if (!isSelfTarget(evt))\n return;\n if (event.key === \"Tab\") {\n const valid = isValidTabEvent(event);\n if (!valid) {\n event.preventDefault();\n return;\n }\n }\n const keyMap = {\n ArrowUp() {\n send({ type: \"CONTENT.ARROW_UP\" });\n },\n ArrowDown() {\n send({ type: \"CONTENT.ARROW_DOWN\" });\n },\n Home() {\n send({ type: \"CONTENT.HOME\" });\n },\n End() {\n send({ type: \"CONTENT.END\" });\n },\n Enter() {\n send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n },\n Space(event2) {\n if (isTypingAhead) {\n send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n } else {\n keyMap.Enter?.(event2);\n }\n }\n };\n const exec = keyMap[getEventKey(event)];\n if (exec) {\n exec(event);\n event.preventDefault();\n return;\n }\n if (isEditableElement(event.target)) {\n return;\n }\n if (getByTypeahead.isValidEvent(event)) {\n send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n event.preventDefault();\n }\n }\n }),\n listProps: normalize.element({\n tabIndex: 0,\n role: !composite ? \"listbox\" : void 0,\n \"aria-labelledby\": dom.getTriggerId(state.context),\n \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n \"aria-multiselectable\": !composite && state.context.multiple ? true : void 0\n })\n };\n}\n\n// src/select.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getByTypeahead as getByTypeahead2, getInitialFocus, observeAttributes, raf, scrollIntoView } from \"@zag-js/dom-query\";\nimport { trackFormControl } from \"@zag-js/form-utils\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { addOrRemove, compact, isEqual } from \"@zag-js/utils\";\nvar { and, not, or } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"select\",\n context: {\n value: [],\n highlightedValue: null,\n loopFocus: false,\n closeOnSelect: true,\n disabled: false,\n composite: true,\n ...ctx,\n highlightedItem: null,\n selectedItems: [],\n valueAsString: \"\",\n collection: ctx.collection ?? collection.empty(),\n typeahead: getByTypeahead2.defaultOptions,\n fieldsetDisabled: false,\n restoreFocus: true,\n positioning: {\n placement: \"bottom-start\",\n gutter: 8,\n ...ctx.positioning\n }\n },\n computed: {\n hasSelectedItems: (ctx2) => ctx2.value.length > 0,\n isTypingAhead: (ctx2) => ctx2.typeahead.keysSoFar !== \"\",\n isDisabled: (ctx2) => !!ctx2.disabled || ctx2.fieldsetDisabled,\n isInteractive: (ctx2) => !(ctx2.isDisabled || ctx2.readOnly)\n },\n initial: ctx.open ? \"open\" : \"idle\",\n created: [\"syncInitialValues\"],\n entry: [\"syncSelectElement\"],\n watch: {\n open: [\"toggleVisibility\"],\n value: [\"syncSelectedItems\", \"syncSelectElement\"],\n highlightedValue: [\"syncHighlightedItem\"]\n },\n on: {\n \"HIGHLIGHTED_VALUE.SET\": {\n actions: [\"setHighlightedItem\"]\n },\n \"ITEM.SELECT\": {\n actions: [\"selectItem\"]\n },\n \"ITEM.CLEAR\": {\n actions: [\"clearItem\"]\n },\n \"VALUE.SET\": {\n actions: [\"setSelectedItems\"]\n },\n \"VALUE.CLEAR\": {\n actions: [\"clearSelectedItems\"]\n },\n \"COLLECTION.SET\": {\n actions: [\"setCollection\"]\n }\n },\n activities: [\"trackFormControlState\"],\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isTriggerClickEvent\",\n target: \"open\",\n actions: [\"highlightFirstSelectedItem\"]\n },\n {\n target: \"open\"\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n }\n ],\n \"TRIGGER.FOCUS\": {\n target: \"focused\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ]\n }\n },\n focused: {\n tags: [\"closed\"],\n entry: [\"setFinalFocus\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isTriggerClickEvent\",\n target: \"open\",\n actions: [\"highlightFirstSelectedItem\"]\n },\n {\n guard: \"isTriggerArrowUpEvent\",\n target: \"open\",\n actions: [\"highlightComputedLastItem\"]\n },\n {\n guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n target: \"open\",\n actions: [\"highlightComputedFirstItem\"]\n },\n {\n target: \"open\"\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"TRIGGER.BLUR\": {\n target: \"idle\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n }\n ],\n \"TRIGGER.ENTER\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedFirstItem\"]\n }\n ],\n \"TRIGGER.ARROW_UP\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedLastItem\"]\n }\n ],\n \"TRIGGER.ARROW_DOWN\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedFirstItem\"]\n }\n ],\n \"TRIGGER.ARROW_LEFT\": [\n {\n guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n actions: [\"selectPreviousItem\"]\n },\n {\n guard: not(\"multiple\"),\n actions: [\"selectLastItem\"]\n }\n ],\n \"TRIGGER.ARROW_RIGHT\": [\n {\n guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n actions: [\"selectNextItem\"]\n },\n {\n guard: not(\"multiple\"),\n actions: [\"selectFirstItem\"]\n }\n ],\n \"TRIGGER.HOME\": {\n guard: not(\"multiple\"),\n actions: [\"selectFirstItem\"]\n },\n \"TRIGGER.END\": {\n guard: not(\"multiple\"),\n actions: [\"selectLastItem\"]\n },\n \"TRIGGER.TYPEAHEAD\": {\n guard: not(\"multiple\"),\n actions: [\"selectMatchingItem\"]\n }\n }\n },\n open: {\n tags: [\"open\"],\n entry: [\"setInitialFocus\"],\n exit: [\"scrollContentToTop\"],\n activities: [\"trackDismissableElement\", \"computePlacement\", \"scrollToHighlightedItem\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"clearHighlightedItem\"]\n },\n {\n target: \"idle\",\n actions: [\"clearHighlightedItem\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"ITEM.CLICK\": [\n {\n guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"clearHighlightedItem\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"CONTENT.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"shouldRestoreFocus\", \"isOpenControlled\"),\n actions: [\"invokeOnClose\"]\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"CONTENT.HOME\": {\n actions: [\"highlightFirstItem\"]\n },\n \"CONTENT.END\": {\n actions: [\"highlightLastItem\"]\n },\n \"CONTENT.ARROW_DOWN\": [\n {\n guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n actions: [\"highlightFirstItem\"]\n },\n {\n guard: \"hasHighlightedItem\",\n actions: [\"highlightNextItem\"]\n },\n {\n actions: [\"highlightFirstItem\"]\n }\n ],\n \"CONTENT.ARROW_UP\": [\n {\n guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n actions: [\"highlightLastItem\"]\n },\n {\n guard: \"hasHighlightedItem\",\n actions: [\"highlightPreviousItem\"]\n },\n {\n actions: [\"highlightLastItem\"]\n }\n ],\n \"CONTENT.TYPEAHEAD\": {\n actions: [\"highlightMatchingItem\"]\n },\n \"ITEM.POINTER_MOVE\": {\n actions: [\"highlightItem\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedItem\"]\n },\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n }\n }\n }\n },\n {\n guards: {\n loop: (ctx2) => !!ctx2.loopFocus,\n multiple: (ctx2) => !!ctx2.multiple,\n hasSelectedItems: (ctx2) => !!ctx2.hasSelectedItems,\n hasHighlightedItem: (ctx2) => ctx2.highlightedValue != null,\n isFirstItemHighlighted: (ctx2) => ctx2.highlightedValue === ctx2.collection.first(),\n isLastItemHighlighted: (ctx2) => ctx2.highlightedValue === ctx2.collection.last(),\n closeOnSelect: (ctx2, evt) => {\n if (ctx2.multiple)\n return false;\n return !!(evt.closeOnSelect ?? ctx2.closeOnSelect);\n },\n shouldRestoreFocus: (ctx2) => !!ctx2.restoreFocus,\n // guard assertions (for controlled mode)\n isOpenControlled: (ctx2) => !!ctx2[\"open.controlled\"],\n isTriggerClickEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.CLICK\",\n isTriggerEnterEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ENTER\",\n isTriggerArrowUpEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n isTriggerArrowDownEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n },\n activities: {\n trackFormControlState(ctx2, _evt, { initialContext }) {\n return trackFormControl(dom.getHiddenSelectEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n set.selectedItems(ctx2, initialContext.value);\n }\n });\n },\n trackDismissableElement(ctx2, _evt, { send }) {\n const contentEl = () => dom.getContentEl(ctx2);\n return trackDismissableElement(contentEl, {\n defer: true,\n exclude: [dom.getTriggerEl(ctx2), dom.getClearTriggerEl(ctx2)],\n onFocusOutside: ctx2.onFocusOutside,\n onPointerDownOutside: ctx2.onPointerDownOutside,\n onInteractOutside(event) {\n ctx2.onInteractOutside?.(event);\n ctx2.restoreFocus = !event.detail.focusable;\n },\n onDismiss() {\n send({ type: \"CONTENT.INTERACT_OUTSIDE\" });\n }\n });\n },\n computePlacement(ctx2) {\n ctx2.currentPlacement = ctx2.positioning.placement;\n const triggerEl = () => dom.getTriggerEl(ctx2);\n const positionerEl = () => dom.getPositionerEl(ctx2);\n return getPlacement(triggerEl, positionerEl, {\n defer: true,\n ...ctx2.positioning,\n onComplete(data) {\n ctx2.currentPlacement = data.placement;\n }\n });\n },\n scrollToHighlightedItem(ctx2, _evt, { getState }) {\n const exec = (immediate) => {\n const state = getState();\n if (state.event.type.includes(\"POINTER\"))\n return;\n const optionEl = dom.getHighlightedOptionEl(ctx2);\n const contentEl2 = dom.getContentEl(ctx2);\n if (ctx2.scrollToIndexFn) {\n const highlightedIndex = ctx2.collection.indexOf(ctx2.highlightedValue);\n ctx2.scrollToIndexFn({ index: highlightedIndex, immediate });\n return;\n }\n scrollIntoView(optionEl, { rootEl: contentEl2, block: \"nearest\" });\n };\n raf(() => exec(true));\n const contentEl = () => dom.getContentEl(ctx2);\n return observeAttributes(contentEl, {\n defer: true,\n attributes: [\"data-activedescendant\"],\n callback() {\n exec(false);\n }\n });\n }\n },\n actions: {\n reposition(ctx2, evt) {\n const positionerEl = () => dom.getPositionerEl(ctx2);\n getPlacement(dom.getTriggerEl(ctx2), positionerEl, {\n ...ctx2.positioning,\n ...evt.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n ctx2.currentPlacement = data.placement;\n }\n });\n },\n toggleVisibility(ctx2, evt, { send }) {\n send({ type: ctx2.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt });\n },\n highlightPreviousItem(ctx2) {\n if (ctx2.highlightedValue == null)\n return;\n const value = ctx2.collection.prev(ctx2.highlightedValue);\n set.highlightedItem(ctx2, value);\n },\n highlightNextItem(ctx2) {\n if (ctx2.highlightedValue == null)\n return;\n const value = ctx2.collection.next(ctx2.highlightedValue);\n set.highlightedItem(ctx2, value);\n },\n highlightFirstItem(ctx2) {\n const value = ctx2.collection.first();\n set.highlightedItem(ctx2, value);\n },\n highlightLastItem(ctx2) {\n const value = ctx2.collection.last();\n set.highlightedItem(ctx2, value);\n },\n setInitialFocus(ctx2) {\n raf(() => {\n const element = getInitialFocus(dom.getContentEl(ctx2));\n element?.focus();\n });\n },\n setFinalFocus(ctx2) {\n raf(() => {\n dom.getTriggerEl(ctx2)?.focus({ preventScroll: true });\n });\n },\n selectHighlightedItem(ctx2, evt) {\n const value = evt.value ?? ctx2.highlightedValue;\n if (value == null)\n return;\n set.selectedItem(ctx2, value);\n },\n highlightComputedFirstItem(ctx2) {\n const value = ctx2.hasSelectedItems ? ctx2.collection.sort(ctx2.value)[0] : ctx2.collection.first();\n set.highlightedItem(ctx2, value);\n },\n highlightComputedLastItem(ctx2) {\n const value = ctx2.hasSelectedItems ? ctx2.collection.sort(ctx2.value)[0] : ctx2.collection.last();\n set.highlightedItem(ctx2, value);\n },\n highlightFirstSelectedItem(ctx2) {\n if (!ctx2.hasSelectedItems)\n return;\n const [value] = ctx2.collection.sort(ctx2.value);\n set.highlightedItem(ctx2, value);\n },\n highlightItem(ctx2, evt) {\n set.highlightedItem(ctx2, evt.value);\n },\n highlightMatchingItem(ctx2, evt) {\n const value = ctx2.collection.search(evt.key, {\n state: ctx2.typeahead,\n currentValue: ctx2.highlightedValue\n });\n if (value == null)\n return;\n set.highlightedItem(ctx2, value);\n },\n setHighlightedItem(ctx2, evt) {\n set.highlightedItem(ctx2, evt.value);\n },\n clearHighlightedItem(ctx2) {\n set.highlightedItem(ctx2, null, true);\n },\n selectItem(ctx2, evt) {\n set.selectedItem(ctx2, evt.value);\n },\n clearItem(ctx2, evt) {\n const value = ctx2.value.filter((v) => v !== evt.value);\n set.selectedItems(ctx2, value);\n },\n setSelectedItems(ctx2, evt) {\n set.selectedItems(ctx2, evt.value);\n },\n clearSelectedItems(ctx2) {\n set.selectedItems(ctx2, []);\n },\n selectPreviousItem(ctx2) {\n const value = ctx2.collection.prev(ctx2.value[0]);\n set.selectedItem(ctx2, value);\n },\n selectNextItem(ctx2) {\n const value = ctx2.collection.next(ctx2.value[0]);\n set.selectedItem(ctx2, value);\n },\n selectFirstItem(ctx2) {\n const value = ctx2.collection.first();\n set.selectedItem(ctx2, value);\n },\n selectLastItem(ctx2) {\n const value = ctx2.collection.last();\n set.selectedItem(ctx2, value);\n },\n selectMatchingItem(ctx2, evt) {\n const value = ctx2.collection.search(evt.key, {\n state: ctx2.typeahead,\n currentValue: ctx2.value[0]\n });\n if (value == null)\n return;\n set.selectedItem(ctx2, value);\n },\n scrollContentToTop(ctx2) {\n if (ctx2.scrollToIndexFn) {\n ctx2.scrollToIndexFn({ index: 0, immediate: true });\n } else {\n dom.getContentEl(ctx2)?.scrollTo(0, 0);\n }\n },\n invokeOnOpen(ctx2) {\n ctx2.onOpenChange?.({ open: true });\n },\n invokeOnClose(ctx2) {\n ctx2.onOpenChange?.({ open: false });\n },\n syncSelectElement(ctx2) {\n const selectEl = dom.getHiddenSelectEl(ctx2);\n if (!selectEl)\n return;\n if (ctx2.value.length === 0 && !ctx2.multiple) {\n selectEl.selectedIndex = -1;\n return;\n }\n for (const option of selectEl.options) {\n option.selected = ctx2.value.includes(option.value);\n }\n },\n setCollection(ctx2, evt) {\n ctx2.collection = evt.value;\n },\n syncInitialValues(ctx2) {\n const selectedItems = ctx2.collection.items(ctx2.value);\n const valueAsString = ctx2.collection.itemsToString(selectedItems);\n ctx2.highlightedItem = ctx2.collection.item(ctx2.highlightedValue);\n ctx2.selectedItems = selectedItems;\n ctx2.valueAsString = valueAsString;\n },\n syncSelectedItems(ctx2) {\n sync.valueChange(ctx2);\n },\n syncHighlightedItem(ctx2) {\n sync.highlightChange(ctx2);\n }\n }\n }\n );\n}\nfunction dispatchChangeEvent(ctx) {\n raf(() => {\n const node = dom.getHiddenSelectEl(ctx);\n if (!node)\n return;\n const win = dom.getWin(ctx);\n const changeEvent = new win.Event(\"change\", { bubbles: true, composed: true });\n node.dispatchEvent(changeEvent);\n });\n}\nvar sync = {\n valueChange: (ctx) => {\n const prevSelectedItems = ctx.selectedItems;\n ctx.selectedItems = ctx.value.map((v) => {\n const foundItem = prevSelectedItems.find((item) => ctx.collection.itemToValue(item) === v);\n if (foundItem)\n return foundItem;\n return ctx.collection.item(v);\n });\n ctx.valueAsString = ctx.collection.itemsToString(ctx.selectedItems);\n },\n highlightChange: (ctx) => {\n ctx.highlightedItem = ctx.collection.item(ctx.highlightedValue);\n }\n};\nvar invoke = {\n valueChange: (ctx) => {\n sync.valueChange(ctx);\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n items: Array.from(ctx.selectedItems)\n });\n dispatchChangeEvent(ctx);\n },\n highlightChange: (ctx) => {\n sync.highlightChange(ctx);\n ctx.onHighlightChange?.({\n highlightedValue: ctx.highlightedValue,\n highlightedItem: ctx.highlightedItem,\n highlightedIndex: ctx.collection.indexOf(ctx.highlightedValue)\n });\n }\n};\nvar set = {\n selectedItem: (ctx, value, force = false) => {\n if (isEqual(ctx.value, value))\n return;\n if (value == null && !force)\n return;\n if (value == null && force) {\n ctx.value = [];\n invoke.valueChange(ctx);\n return;\n }\n ctx.value = ctx.multiple ? addOrRemove(ctx.value, value) : [value];\n invoke.valueChange(ctx);\n },\n selectedItems: (ctx, value) => {\n if (isEqual(ctx.value, value))\n return;\n ctx.value = value;\n invoke.valueChange(ctx);\n },\n highlightedItem: (ctx, value, force = false) => {\n if (isEqual(ctx.highlightedValue, value))\n return;\n if (value == null && !force)\n return;\n ctx.highlightedValue = value ?? null;\n invoke.highlightChange(ctx);\n }\n};\n\n// src/select.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"closeOnSelect\",\n \"collection\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"highlightedValue\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"loopFocus\",\n \"multiple\",\n \"name\",\n \"onFocusOutside\",\n \"onHighlightChange\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"onValueChange\",\n \"open.controlled\",\n \"open\",\n \"composite\",\n \"positioning\",\n \"readOnly\",\n \"scrollToIndexFn\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nexport {\n anatomy,\n collection,\n connect,\n itemGroupLabelProps,\n itemGroupProps,\n itemProps,\n machine,\n props,\n splitItemGroupLabelProps,\n splitItemGroupProps,\n splitItemProps,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","import { anatomy as anatomy$1 } from '@zag-js/select';\n\nconst anatomy = anatomy$1.extendWith(\"valueText\");\n\nexport { anatomy };\n","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/switch.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"switch\").parts(\"root\", \"label\", \"control\", \"thumb\");\nvar parts = anatomy.build();\n\n// src/switch.connect.ts\nimport { dataAttr, visuallyHiddenStyle } from \"@zag-js/dom-query\";\n\n// src/switch.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `switch:${ctx.id}`,\n getLabelId: (ctx) => ctx.ids?.label ?? `switch:${ctx.id}:label`,\n getThumbId: (ctx) => ctx.ids?.thumb ?? `switch:${ctx.id}:thumb`,\n getControlId: (ctx) => ctx.ids?.control ?? `switch:${ctx.id}:control`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getHiddenInputId: (ctx) => ctx.ids?.input ?? `switch:${ctx.id}:input`,\n getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx))\n});\n\n// src/switch.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const focused = !disabled && state.context.focused;\n const checked = state.context.checked;\n const readOnly = state.context.readOnly;\n const dataAttrs = {\n \"data-active\": dataAttr(state.context.active),\n \"data-focus\": dataAttr(focused),\n \"data-readonly\": dataAttr(readOnly),\n \"data-hover\": dataAttr(state.context.hovered),\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": state.context.checked ? \"checked\" : \"unchecked\",\n \"data-invalid\": dataAttr(state.context.invalid)\n };\n return {\n checked,\n disabled,\n focused,\n setChecked(checked2) {\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n },\n toggleChecked() {\n send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n },\n rootProps: normalize.label({\n ...parts.root.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onPointerMove() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n },\n onPointerLeave() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n },\n onClick(event) {\n if (event.target === dom.getHiddenInputEl(state.context)) {\n event.stopPropagation();\n }\n }\n }),\n labelProps: normalize.element({\n ...parts.label.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context)\n }),\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getThumbId(state.context),\n \"aria-hidden\": true\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"aria-hidden\": true\n }),\n hiddenInputProps: normalize.input({\n id: dom.getHiddenInputId(state.context),\n type: \"checkbox\",\n required: state.context.required,\n defaultChecked: checked,\n disabled,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"aria-invalid\": state.context.invalid,\n name: state.context.name,\n form: state.context.form,\n value: state.context.value,\n style: visuallyHiddenStyle,\n onChange(event) {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n const checked2 = event.currentTarget.checked;\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n }\n })\n };\n}\n\n// src/switch.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackFocusVisible, trackPress } from \"@zag-js/dom-event\";\nimport { dispatchInputCheckedEvent, trackFormControl } from \"@zag-js/form-utils\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"switch\",\n initial: \"ready\",\n context: {\n checked: false,\n label: \"switch\",\n value: \"on\",\n disabled: false,\n ...ctx,\n fieldsetDisabled: false\n },\n computed: {\n isDisabled: (ctx2) => ctx2.disabled || ctx2.fieldsetDisabled\n },\n watch: {\n disabled: \"removeFocusIfNeeded\",\n checked: \"syncInputElement\"\n },\n activities: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n on: {\n \"CHECKED.TOGGLE\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"toggleChecked\"]\n }\n ],\n \"CHECKED.SET\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"setChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"setChecked\"]\n }\n ],\n \"CONTEXT.SET\": {\n actions: [\"setContext\"]\n }\n },\n states: {\n ready: {}\n }\n },\n {\n guards: {\n isTrusted: (_ctx, evt) => !!evt.isTrusted\n },\n activities: {\n trackPressEvent(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackPress({\n pointerNode: dom.getRootEl(ctx2),\n keyboardNode: dom.getHiddenInputEl(ctx2),\n isValidKey: (event) => event.key === \" \",\n onPress: () => ctx2.active = false,\n onPressStart: () => ctx2.active = true,\n onPressEnd: () => ctx2.active = false\n });\n },\n trackFocusVisible(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackFocusVisible(dom.getHiddenInputEl(ctx2), {\n onFocus: () => ctx2.focused = true,\n onBlur: () => ctx2.focused = false\n });\n },\n trackFormControlState(ctx2, _evt, { send, initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n send({ type: \"CHECKED.SET\", checked: !!initialContext.checked, src: \"form-reset\" });\n }\n });\n }\n },\n actions: {\n setContext(ctx2, evt) {\n Object.assign(ctx2, evt.context);\n },\n syncInputElement(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n if (!inputEl)\n return;\n inputEl.checked = !!ctx2.checked;\n },\n removeFocusIfNeeded(ctx2) {\n if (ctx2.disabled && ctx2.focused) {\n ctx2.focused = false;\n }\n },\n setChecked(ctx2, evt) {\n set.checked(ctx2, evt.checked);\n },\n toggleChecked(ctx2, _evt) {\n set.checked(ctx2, !ctx2.checked);\n },\n dispatchChangeEvent(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n dispatchInputCheckedEvent(inputEl, { checked: ctx2.checked });\n }\n }\n }\n );\n}\nvar invoke = {\n change: (ctx) => {\n ctx.onCheckedChange?.({ checked: ctx.checked });\n }\n};\nvar set = {\n checked: (ctx, checked) => {\n if (isEqual(ctx.checked, checked))\n return;\n ctx.checked = checked;\n invoke.change(ctx);\n }\n};\n\n// src/switch.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"checked\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"label\",\n \"name\",\n \"onCheckedChange\",\n \"readOnly\",\n \"required\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/tabs.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"tabs\").parts(\"root\", \"list\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/tabs.connect.ts\nimport { getEventKey, getNativeEvent } from \"@zag-js/dom-event\";\nimport { dataAttr, isSafari, isSelfTarget } from \"@zag-js/dom-query\";\n\n// src/tabs.dom.ts\nimport { createScope, itemById, nextById, prevById, queryAll } from \"@zag-js/dom-query\";\nimport { first, last } from \"@zag-js/utils\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `tabs:${ctx.id}`,\n getListId: (ctx) => ctx.ids?.list ?? `tabs:${ctx.id}:list`,\n getContentId: (ctx, id) => ctx.ids?.content ?? `tabs:${ctx.id}:content-${id}`,\n getTriggerId: (ctx, id) => ctx.ids?.trigger ?? `tabs:${ctx.id}:trigger-${id}`,\n getIndicatorId: (ctx) => ctx.ids?.indicator ?? `tabs:${ctx.id}:indicator`,\n getListEl: (ctx) => dom.getById(ctx, dom.getListId(ctx)),\n getContentEl: (ctx, id) => dom.getById(ctx, dom.getContentId(ctx, id)),\n getTriggerEl: (ctx, id) => dom.getById(ctx, dom.getTriggerId(ctx, id)),\n getIndicatorEl: (ctx) => dom.getById(ctx, dom.getIndicatorId(ctx)),\n getElements: (ctx) => {\n const ownerId = CSS.escape(dom.getListId(ctx));\n const selector = `[role=tab][data-ownedby='${ownerId}']:not([disabled])`;\n return queryAll(dom.getListEl(ctx), selector);\n },\n getFirstTriggerEl: (ctx) => first(dom.getElements(ctx)),\n getLastTriggerEl: (ctx) => last(dom.getElements(ctx)),\n getNextTriggerEl: (ctx, id) => nextById(dom.getElements(ctx), dom.getTriggerId(ctx, id), ctx.loopFocus),\n getPrevTriggerEl: (ctx, id) => prevById(dom.getElements(ctx), dom.getTriggerId(ctx, id), ctx.loopFocus),\n getSelectedContentEl: (ctx) => {\n if (!ctx.value)\n return;\n return dom.getContentEl(ctx, ctx.value);\n },\n getSelectedTriggerEl: (ctx) => {\n if (!ctx.value)\n return;\n return dom.getTriggerEl(ctx, ctx.value);\n },\n getOffsetRect: (el) => {\n return {\n left: el?.offsetLeft ?? 0,\n top: el?.offsetTop ?? 0,\n width: el?.offsetWidth ?? 0,\n height: el?.offsetHeight ?? 0\n };\n },\n getRectById: (ctx, id) => {\n const tab = itemById(dom.getElements(ctx), dom.getTriggerId(ctx, id));\n return dom.resolveRect(dom.getOffsetRect(tab));\n },\n resolveRect: (rect) => ({\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n left: `${rect.left}px`,\n top: `${rect.top}px`\n })\n});\n\n// src/tabs.connect.ts\nfunction connect(state, send, normalize) {\n const translations = state.context.translations;\n const focused = state.matches(\"focused\");\n const isVertical = state.context.orientation === \"vertical\";\n const isHorizontal = state.context.orientation === \"horizontal\";\n const composite = state.context.composite;\n const indicator = state.context.indicatorState;\n function getTriggerState(props2) {\n return {\n selected: state.context.value === props2.value,\n focused: state.context.focusedValue === props2.value,\n disabled: !!props2.disabled\n };\n }\n return {\n value: state.context.value,\n focusedValue: state.context.focusedValue,\n setValue(value) {\n send({ type: \"SET_VALUE\", value });\n },\n clearValue() {\n send({ type: \"CLEAR_VALUE\" });\n },\n setIndicatorRect(value) {\n const id = dom.getTriggerId(state.context, value);\n send({ type: \"SET_INDICATOR_RECT\", id });\n },\n syncTabIndex() {\n send(\"SYNC_TAB_INDEX\");\n },\n selectNext(fromValue) {\n send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectNext\" });\n send({ type: \"ARROW_NEXT\", src: \"selectNext\" });\n },\n selectPrev(fromValue) {\n send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectPrev\" });\n send({ type: \"ARROW_PREV\", src: \"selectPrev\" });\n },\n focus() {\n dom.getSelectedTriggerEl(state.context)?.focus();\n },\n getTriggerState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n id: dom.getRootId(state.context),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n dir: state.context.dir\n }),\n listProps: normalize.element({\n ...parts.list.attrs,\n id: dom.getListId(state.context),\n role: \"tablist\",\n dir: state.context.dir,\n \"data-focus\": dataAttr(focused),\n \"aria-orientation\": state.context.orientation,\n \"data-orientation\": state.context.orientation,\n \"aria-label\": translations?.listLabel,\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n const evt = getNativeEvent(event);\n if (!isSelfTarget(evt))\n return;\n if (evt.isComposing)\n return;\n const keyMap = {\n ArrowDown() {\n if (isHorizontal)\n return;\n send({ type: \"ARROW_NEXT\", key: \"ArrowDown\" });\n },\n ArrowUp() {\n if (isHorizontal)\n return;\n send({ type: \"ARROW_PREV\", key: \"ArrowUp\" });\n },\n ArrowLeft() {\n if (isVertical)\n return;\n send({ type: \"ARROW_PREV\", key: \"ArrowLeft\" });\n },\n ArrowRight() {\n if (isVertical)\n return;\n send({ type: \"ARROW_NEXT\", key: \"ArrowRight\" });\n },\n Home() {\n send(\"HOME\");\n },\n End() {\n send(\"END\");\n },\n Enter() {\n send({ type: \"ENTER\" });\n }\n };\n let key = getEventKey(event, state.context);\n const exec = keyMap[key];\n if (exec) {\n event.preventDefault();\n exec(event);\n }\n }\n }),\n getTriggerProps(props2) {\n const { value, disabled } = props2;\n const triggerState = getTriggerState(props2);\n return normalize.button({\n ...parts.trigger.attrs,\n role: \"tab\",\n type: \"button\",\n disabled,\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-disabled\": dataAttr(disabled),\n \"aria-disabled\": disabled,\n \"data-value\": value,\n \"aria-selected\": triggerState.selected,\n \"data-selected\": dataAttr(triggerState.selected),\n \"data-focus\": dataAttr(triggerState.focused),\n \"aria-controls\": triggerState.selected ? dom.getContentId(state.context, value) : void 0,\n \"data-ownedby\": dom.getListId(state.context),\n id: dom.getTriggerId(state.context, value),\n tabIndex: triggerState.selected && composite ? 0 : -1,\n onFocus() {\n send({ type: \"TAB_FOCUS\", value });\n },\n onBlur(event) {\n const target = event.relatedTarget;\n if (target?.getAttribute(\"role\") !== \"tab\") {\n send({ type: \"TAB_BLUR\" });\n }\n },\n onClick(event) {\n if (event.defaultPrevented)\n return;\n if (disabled)\n return;\n if (isSafari()) {\n event.currentTarget.focus();\n }\n send({ type: \"TAB_CLICK\", value });\n }\n });\n },\n getContentProps(props2) {\n const { value } = props2;\n const selected = state.context.value === value;\n return normalize.element({\n ...parts.content.attrs,\n dir: state.context.dir,\n id: dom.getContentId(state.context, value),\n tabIndex: composite ? 0 : -1,\n \"aria-labelledby\": dom.getTriggerId(state.context, value),\n role: \"tabpanel\",\n \"data-ownedby\": dom.getListId(state.context),\n \"data-selected\": dataAttr(selected),\n \"data-orientation\": state.context.orientation,\n hidden: !selected\n });\n },\n indicatorProps: normalize.element({\n id: dom.getIndicatorId(state.context),\n ...parts.indicator.attrs,\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n style: {\n \"--transition-property\": \"left, right, top, bottom, width, height\",\n \"--left\": indicator.rect?.left,\n \"--top\": indicator.rect?.top,\n \"--width\": indicator.rect?.width,\n \"--height\": indicator.rect?.height,\n position: \"absolute\",\n willChange: \"var(--transition-property)\",\n transitionProperty: \"var(--transition-property)\",\n transitionDuration: indicator.transition ? \"var(--transition-duration, 150ms)\" : \"0ms\",\n transitionTimingFunction: \"var(--transition-timing-function)\",\n [isHorizontal ? \"left\" : \"top\"]: isHorizontal ? \"var(--left)\" : \"var(--top)\"\n }\n })\n };\n}\n\n// src/tabs.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { clickIfLink } from \"@zag-js/dom-event\";\nimport { nextTick, raf, getFocusables } from \"@zag-js/dom-query\";\nimport { trackElementRect } from \"@zag-js/element-rect\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n initial: \"idle\",\n context: {\n dir: \"ltr\",\n orientation: \"horizontal\",\n activationMode: \"automatic\",\n value: null,\n loopFocus: true,\n composite: true,\n ...ctx,\n focusedValue: ctx.value ?? null,\n indicatorState: {\n rendered: false,\n transition: false,\n rect: { left: \"0px\", top: \"0px\", width: \"0px\", height: \"0px\" }\n }\n },\n watch: {\n value: [\"allowIndicatorTransition\", \"syncIndicatorRect\", \"syncTabIndex\", \"clickIfLink\"],\n dir: [\"syncIndicatorRect\"],\n orientation: [\"syncIndicatorRect\"]\n },\n on: {\n SET_VALUE: {\n actions: \"setValue\"\n },\n CLEAR_VALUE: {\n actions: \"clearValue\"\n },\n SET_INDICATOR_RECT: {\n actions: \"setIndicatorRect\"\n },\n SYNC_TAB_INDEX: {\n actions: \"syncTabIndex\"\n }\n },\n created: [\"syncFocusedValue\"],\n entry: [\"checkRenderedElements\", \"syncIndicatorRect\", \"syncTabIndex\"],\n exit: [\"cleanupObserver\"],\n states: {\n idle: {\n on: {\n TAB_FOCUS: {\n target: \"focused\",\n actions: \"setFocusedValue\"\n },\n TAB_CLICK: {\n target: \"focused\",\n actions: [\"setFocusedValue\", \"setValue\"]\n }\n }\n },\n focused: {\n on: {\n TAB_CLICK: {\n target: \"focused\",\n actions: [\"setFocusedValue\", \"setValue\"]\n },\n ARROW_PREV: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusPrevTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusPrevTab\"\n }\n ],\n ARROW_NEXT: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusNextTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusNextTab\"\n }\n ],\n HOME: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusFirstTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusFirstTab\"\n }\n ],\n END: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusLastTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusLastTab\"\n }\n ],\n ENTER: {\n guard: not(\"selectOnFocus\"),\n actions: \"selectFocusedTab\"\n },\n TAB_FOCUS: {\n actions: [\"setFocusedValue\"]\n },\n TAB_BLUR: {\n target: \"idle\",\n actions: \"clearFocusedValue\"\n }\n }\n }\n }\n },\n {\n guards: {\n selectOnFocus: (ctx2) => ctx2.activationMode === \"automatic\"\n },\n actions: {\n syncFocusedValue(ctx2) {\n if (ctx2.value != null && ctx2.focusedValue == null) {\n ctx2.focusedValue = ctx2.value;\n }\n },\n selectFocusedTab(ctx2) {\n raf(() => {\n set.value(ctx2, ctx2.focusedValue);\n });\n },\n setFocusedValue(ctx2, evt) {\n if (evt.value == null)\n return;\n set.focusedValue(ctx2, evt.value);\n },\n clearFocusedValue(ctx2) {\n set.focusedValue(ctx2, null);\n },\n setValue(ctx2, evt) {\n set.value(ctx2, evt.value);\n },\n clearValue(ctx2) {\n set.value(ctx2, null);\n },\n focusFirstTab(ctx2) {\n raf(() => {\n dom.getFirstTriggerEl(ctx2)?.focus();\n });\n },\n focusLastTab(ctx2) {\n raf(() => {\n dom.getLastTriggerEl(ctx2)?.focus();\n });\n },\n focusNextTab(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getNextTriggerEl(ctx2, ctx2.focusedValue);\n raf(() => {\n if (ctx2.composite) {\n triggerEl?.focus();\n } else if (triggerEl?.dataset.value != null) {\n set.focusedValue(ctx2, triggerEl.dataset.value);\n }\n });\n },\n focusPrevTab(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getPrevTriggerEl(ctx2, ctx2.focusedValue);\n raf(() => {\n if (ctx2.composite) {\n triggerEl?.focus();\n } else if (triggerEl?.dataset.value != null) {\n set.focusedValue(ctx2, triggerEl.dataset.value);\n }\n });\n },\n checkRenderedElements(ctx2) {\n ctx2.indicatorState.rendered = !!dom.getIndicatorEl(ctx2);\n },\n syncTabIndex(ctx2) {\n raf(() => {\n const contentEl = dom.getSelectedContentEl(ctx2);\n if (!contentEl)\n return;\n const focusables = getFocusables(contentEl);\n if (focusables.length > 0) {\n contentEl.removeAttribute(\"tabindex\");\n } else {\n contentEl.setAttribute(\"tabindex\", \"0\");\n }\n });\n },\n cleanupObserver(ctx2) {\n ctx2.indicatorCleanup?.();\n },\n allowIndicatorTransition(ctx2) {\n ctx2.indicatorState.transition = true;\n },\n setIndicatorRect(ctx2, evt) {\n const value = evt.id ?? ctx2.value;\n if (!ctx2.indicatorState.rendered || !value)\n return;\n const triggerEl = dom.getTriggerEl(ctx2, value);\n if (!triggerEl)\n return;\n ctx2.indicatorState.rect = dom.getRectById(ctx2, value);\n nextTick(() => {\n ctx2.indicatorState.transition = false;\n });\n },\n syncIndicatorRect(ctx2) {\n ctx2.indicatorCleanup?.();\n const value = ctx2.value;\n if (!ctx2.indicatorState.rendered || !value)\n return;\n const triggerEl = dom.getSelectedTriggerEl(ctx2);\n if (!triggerEl)\n return;\n ctx2.indicatorCleanup = trackElementRect(triggerEl, {\n getRect(el) {\n return dom.getOffsetRect(el);\n },\n onChange(rect) {\n ctx2.indicatorState.rect = dom.resolveRect(rect);\n nextTick(() => {\n ctx2.indicatorState.transition = false;\n });\n }\n });\n },\n clickIfLink(ctx2) {\n clickIfLink(dom.getSelectedTriggerEl(ctx2));\n }\n }\n }\n );\n}\nvar invoke = {\n change: (ctx) => {\n if (ctx.value == null)\n return;\n ctx.onValueChange?.({ value: ctx.value });\n },\n focusChange: (ctx) => {\n if (ctx.focusedValue == null)\n return;\n ctx.onFocusChange?.({ focusedValue: ctx.focusedValue });\n }\n};\nvar set = {\n value: (ctx, value) => {\n if (isEqual(value, ctx.value))\n return;\n ctx.value = value;\n invoke.change(ctx);\n },\n focusedValue: (ctx, value) => {\n if (isEqual(value, ctx.focusedValue))\n return;\n ctx.focusedValue = value;\n invoke.focusChange(ctx);\n }\n};\n\n// src/tabs.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"activationMode\",\n \"composite\",\n \"dir\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"loopFocus\",\n \"onFocusChange\",\n \"onValueChange\",\n \"orientation\",\n \"translations\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar triggerProps = createProps()([\"disabled\", \"value\"]);\nvar splitTriggerProps = createSplitProps(triggerProps);\nvar contentProps = createProps()([\"value\"]);\nvar splitContentProps = createSplitProps(contentProps);\nexport {\n anatomy,\n connect,\n contentProps,\n machine,\n props,\n splitContentProps,\n splitProps,\n splitTriggerProps,\n triggerProps\n};\n//# sourceMappingURL=index.mjs.map","import { switchAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const switchRecipe = defineSlotRecipe({\n base: {\n control: {\n _focus: {\n ring: '1px solid {colors.secondary.300}',\n },\n alignItems: 'center',\n background: {\n _checked: {\n base: 'primary.500',\n _disabled: 'grey.200',\n },\n base: 'grey.100',\n _hover: {\n base: 'grey.200',\n _checked: 'primary.700',\n },\n },\n borderRadius: 'full',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: '0',\n transitionDuration: 'normal',\n transitionProperty: 'background',\n transitionTimingFunction: 'default',\n },\n label: {\n fontFamily: 'satoshi',\n color: 'text',\n _disabled: {\n color: 'text.disabled',\n userSelect: 'none',\n },\n },\n root: {\n WebkitTapHighlightColor: 'transparent',\n _disabled: {\n pointerEvents: 'none',\n },\n alignItems: 'center',\n cursor: 'pointer',\n display: 'flex',\n position: 'relative',\n },\n thumb: {\n background: 'white',\n borderRadius: 'full',\n transitionDuration: 'normal',\n transitionProperty: 'transform',\n transitionTimingFunction: 'default',\n _checked: {\n transform: 'translateX(16px)',\n },\n },\n },\n className: 'switch',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Switch', 'SwitchField'],\n slots: switchAnatomy.keys(),\n variants: {\n size: {\n md: {\n control: {\n height: 'size-16',\n p: 'space-2',\n width: 'size-32',\n },\n label: {\n textStyle: 'body.md',\n },\n root: {\n gap: 'space-4',\n },\n thumb: {\n height: 'size-12',\n width: 'size-12',\n },\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const textRecipe = defineRecipe({\n className: 'text',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Text', 'AppLink'],\n staticCss: ['*'],\n base: {\n fontFamily: 'satoshi',\n color: 'text',\n },\n variants: {\n bold: {\n true: {\n fontWeight: 'bold',\n },\n },\n italic: {\n true: {\n fontStyle: 'italic',\n },\n },\n underline: {\n true: {\n textDecoration: 'underline',\n },\n },\n size: {\n lg: { textStyle: 'body.lg' },\n md: { textStyle: 'body.md' },\n sm: { textStyle: 'body.sm' },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputRecipe = defineRecipe({\n base: {\n '&[type=\"time\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n color: 'text',\n appearance: 'none',\n background: 'none',\n border: '1px solid {colors.grey.100}',\n borderRadius: 'radius-8',\n minWidth: 0,\n outline: 0,\n minHeight: '40px',\n position: 'relative',\n transitionDuration: 'normal',\n transitionProperty: 'border-color, box-shadow',\n width: 'full',\n _disabled: {\n cursor: 'not-allowed',\n color: 'grey.300',\n background: 'grey.50',\n },\n _hover: {\n borderColor: 'secondary.500',\n _disabled: {\n borderColor: 'grey.100',\n },\n },\n _focus: {\n borderColor: 'primary.500',\n },\n _placeholderShown: {\n color: 'grey.400',\n _disabled: {\n color: 'grey.100',\n },\n },\n },\n className: 'input',\n description: 'The styles for the Input component',\n jsx: ['Input'],\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n px: 'space-16',\n py: 'space-8',\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\nimport { inputRecipe } from '~/theme/recipes/input.ts'\n\nexport const textareaRecipe = defineRecipe({\n className: 'textarea',\n jsx: ['Textarea'],\n base: {\n px: 'space-16',\n py: 'space-8',\n ...inputRecipe.base,\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const formControlRecipe = defineRecipe({\n base: {\n _invalid: {\n '& [data-recipe=\"formHelperText\"]': {\n color: 'error.500',\n },\n '& input, & textarea, & [data-recipe=\"select\"] button': {\n borderColor: 'error.500!',\n },\n '& label': {\n color: 'error.500',\n },\n },\n _required: {\n '& label::after': {\n content: '\" *\"',\n color: 'error.500',\n fontWeight: 'bold',\n },\n },\n isolation: 'isolate',\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-4',\n width: 'full',\n position: 'relative',\n },\n className: 'form-control',\n description: 'The styles for the FormControl component',\n jsx: ['FormControl'],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const formHelperTextRecipe = defineRecipe({\n base: {\n color: 'grey.400',\n fontFamily: 'satoshi',\n textStyle: 'body.sm',\n },\n className: 'form-helper-text',\n description: 'The styles for the FormHelperText component',\n jsx: ['FormHelperText'],\n})\n","import { dialogAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nconst anatomy = dialogAnatomy.extendWith('header', 'body', 'footer')\n\nexport const drawerRecipe = defineSlotRecipe({\n className: 'drawer',\n slots: anatomy.keys(),\n jsx: ['Drawer'],\n base: {\n backdrop: {\n backdropFilter: 'blur(4px)',\n background: 'primary.300/20',\n height: '100vh',\n position: 'fixed',\n width: '100vw',\n zIndex: 'overlay',\n inset: 0,\n _open: {\n animation: 'backdrop-in',\n },\n _closed: {\n animation: 'backdrop-out',\n },\n },\n positioner: {\n alignItems: 'center',\n display: 'flex',\n height: '100dvh',\n position: 'fixed',\n inset: 0,\n zIndex: 'modal',\n },\n content: {\n position: 'relative',\n background: 'white',\n display: 'grid',\n gridTemplateColumns: '1fr',\n gridTemplateRows: 'auto 1fr',\n gridTemplateAreas: `\n 'header'\n 'body'\n `,\n height: 'full',\n minWidth: {\n base: 'full',\n md: '736px',\n },\n maxWidth: {\n base: 'full',\n md: '70%',\n },\n width: 'full',\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 'space-16',\n gridArea: 'header',\n px: 'space-24',\n py: 'space-16',\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n gridArea: 'body',\n overflow: 'auto',\n px: 'space-24',\n py: 'space-16',\n pb: '70px',\n },\n footer: {\n display: 'flex',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n bg: 'white/50',\n backdropFilter: 'auto',\n backdropBlur: '4px',\n justifyContent: 'flex-end',\n px: 'space-24',\n py: 'space-16',\n gap: 'space-16',\n },\n title: {\n color: 'primary.900',\n fontFamily: 'cabinet',\n textStyle: 'heading.h4',\n },\n },\n defaultVariants: {\n variant: 'right',\n },\n variants: {\n variant: {\n left: {\n positioner: {\n justifyContent: 'flex-start',\n },\n content: {\n _open: {\n animation: 'drawer-in-left',\n },\n _closed: {\n animation: 'drawer-out-left',\n },\n },\n },\n right: {\n positioner: {\n justifyContent: 'flex-end',\n },\n content: {\n _open: {\n animation: 'drawer-in-right',\n },\n _closed: {\n animation: 'drawer-out-right',\n },\n },\n },\n },\n },\n})\n","import { accordionAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const accordionRecipe = defineSlotRecipe({\n className: 'accordion',\n jsx: ['Accordion'],\n slots: accordionAnatomy.keys(),\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-8',\n },\n itemTrigger: {\n alignItems: 'center',\n color: 'primary.900',\n cursor: 'pointer',\n display: 'flex',\n fontWeight: 'bold',\n gap: 'space-4',\n justifyContent: 'space-between',\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n textAlign: 'left',\n width: 'full',\n _disabled: {\n color: 'grey.200',\n cursor: 'not-allowed',\n },\n },\n itemIndicator: {\n color: 'primary.900',\n transformOrigin: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'transform',\n transitionTimingFunction: 'default',\n _open: {\n transform: 'rotate(-180deg)',\n },\n },\n itemContent: {\n overflow: 'hidden',\n transitionProperty: 'padding-bottom, margin-top, opacity',\n transitionDuration: 'normal',\n transitionTimingFunction: 'default',\n '& [data-scope=\"accordion\"][data-part=\"root\"]': {\n gap: 'space-12!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item-trigger\"]': {\n textStyle: 'body.sm',\n border: 'none!',\n borderRadius: 'radius-0!',\n p: 'space-0!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item-content\"]': {\n px: 'space-16!',\n mt: 'space-16!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item\"]': {\n border: 'none!',\n borderRadius: 'radius-0!',\n p: 'space-12',\n pr: 'space-24!',\n pb: 'space-0!',\n },\n _open: {\n animation: 'collapse-in',\n },\n _closed: {\n animation: 'collapse-out',\n },\n },\n },\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n itemTrigger: {\n _open: {\n border: 'none',\n },\n borderRadius: 'radius-8',\n border: '1px solid {colors.primary.100}',\n padding: 'space-12',\n },\n item: {\n _open: {\n pb: 'space-12',\n borderRadius: 'radius-8',\n border: '1px solid {colors.primary.100}',\n },\n },\n itemContent: {\n _closed: {\n pb: 'space-0',\n mt: 'space-0',\n opacity: 0,\n },\n mt: 'space-4',\n pr: 'space-16',\n pl: 'space-28',\n },\n },\n },\n },\n})\n","import { defineSlotRecipe } from '@pandacss/dev'\n\nexport const formLabelRecipe = defineSlotRecipe({\n base: {\n root: { color: 'grey.400', fontFamily: 'satoshi', textStyle: 'body.sm' },\n addon: {\n ml: 'space-4',\n bg: 'primary.100',\n color: 'secondary.800',\n borderRadius: 'radius-2',\n px: 'space-2',\n },\n },\n variants: {\n variant: {\n static: {},\n absolute: {\n root: {\n position: 'absolute',\n left: 'space-12',\n top: '-space-8',\n zIndex: 1,\n bg: 'white',\n },\n },\n },\n },\n defaultVariants: { variant: 'absolute' },\n slots: ['root', 'addon'],\n className: 'form-label',\n description: 'The styles for the FormLabel component',\n jsx: ['FormLabel'],\n})\n","import { checkboxAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const checkboxRecipe = defineSlotRecipe({\n className: 'checkbox',\n slots: checkboxAnatomy.keys(),\n jsx: ['Checkbox'],\n base: {\n root: {\n alignItems: 'center',\n display: 'flex',\n cursor: {\n base: 'pointer',\n _disabled: 'not-allowed',\n },\n _disabled: {\n userSelect: 'none',\n },\n },\n label: {\n color: {\n base: 'text',\n _disabled: 'grey.300',\n },\n fontFamily: 'satoshi',\n },\n control: {\n alignItems: 'center',\n borderColor: 'grey.100',\n borderWidth: '1px',\n color: 'white',\n display: 'flex',\n bg: 'white',\n justifyContent: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'border-color, background',\n transitionTimingFunction: 'default',\n _hover: {\n borderColor: 'secondary.500',\n },\n _checked: {\n background: 'primary.500',\n borderColor: 'primary.500',\n _hover: {\n background: 'primary.500',\n },\n },\n _disabled: {\n background: 'grey.50',\n borderColor: 'grey.100',\n _checked: {\n background: 'grey.200',\n borderColor: 'grey.200',\n },\n _indeterminate: {\n background: 'grey.200',\n borderColor: 'grey.200',\n },\n },\n _invalid: {\n borderColor: 'error.500',\n _checked: {\n background: 'error.500',\n borderColor: 'error.500',\n },\n _indeterminate: {\n background: 'error.500',\n borderColor: 'error.500',\n },\n },\n _indeterminate: {\n background: 'primary.500',\n borderColor: 'primary.500',\n _hover: {\n background: 'primary.500',\n },\n },\n '&:has(+ :focus-visible)': {\n outline: '1px solid',\n outlineColor: 'secondary.300',\n _checked: {\n outlineColor: 'secondary.300',\n },\n _hover: {\n borderColor: 'grey.100',\n _checked: {\n borderColor: 'primary.500',\n background: 'primary.500',\n },\n _indeterminate: {\n borderColor: 'primary.500',\n background: 'primary.500',\n },\n },\n },\n },\n },\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n root: {\n gap: 'space-4',\n },\n control: {\n width: 'size-16',\n height: 'size-16',\n borderRadius: 'radius-4',\n '& svg': {\n width: 'size-12',\n height: 'size-12',\n },\n },\n label: {\n textStyle: 'body.md',\n },\n },\n },\n },\n})\n","import { tabsAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const tabsRecipe = defineSlotRecipe({\n className: 'tabs',\n slots: tabsAnatomy.keys(),\n base: {\n root: {\n isolation: 'isolate',\n display: 'flex',\n _horizontal: {\n flexDirection: 'column',\n },\n _vertical: {\n flexDirection: 'row',\n },\n },\n list: {\n display: 'flex',\n flexShrink: '0',\n _horizontal: {\n flexDirection: 'row',\n },\n _vertical: {\n flexDirection: 'column',\n },\n overflow: 'auto',\n position: 'relative',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n trigger: {\n alignItems: 'center',\n color: 'grey.400',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: '0',\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n gap: 'space-4',\n justifyContent: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'color, background, border-color',\n transitionTimingFunction: 'default',\n whiteSpace: 'nowrap',\n zIndex: 1,\n _disabled: {\n color: 'grey.100',\n cursor: 'not-allowed',\n _hover: {\n color: 'grey.100',\n },\n },\n _hover: {\n color: 'secondary.500',\n },\n _selected: {\n color: 'secondary.500',\n fontWeight: 'bold',\n _hover: {\n color: 'secondary.500',\n },\n },\n _vertical: {\n justifyContent: 'flex-start',\n },\n },\n },\n defaultVariants: {\n variant: 'line',\n },\n variants: {\n variant: {\n line: {\n list: {\n _horizontal: {\n boxShadow: '0 -2px 0 0 inset {colors.primary.100}',\n },\n _vertical: {\n boxShadow: '2px 0 0 0 inset {colors.primary.100}',\n },\n },\n indicator: {\n background: 'secondary.500',\n _horizontal: {\n bottom: 0,\n height: '2px',\n width: 'var(--width)',\n },\n _vertical: {\n height: 'var(--height)',\n left: 0,\n width: '2px',\n },\n },\n content: {\n pt: 'space-4',\n },\n trigger: {\n _horizontal: {\n px: 'space-24',\n pb: 'space-8',\n },\n },\n },\n },\n },\n})\n","import { selectAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const selectRecipe = defineSlotRecipe({\n base: {\n control: {\n fontFamily: 'satoshi',\n },\n valueText: {\n flex: 1,\n textAlign: 'left',\n },\n content: {\n fontFamily: 'satoshi',\n background: 'background',\n border: '1px solid {colors.primary.500}',\n borderTop: 'none',\n borderBottomLeftRadius: 'radius-8',\n borderBottomRightRadius: 'radius-8',\n display: 'flex',\n flexDirection: 'column',\n outline: 0,\n zIndex: 'modal',\n maxHeight: '180px',\n overflow: 'auto',\n },\n indicator: {\n transition: 'transform 0.15s ease-out',\n transform: {\n base: 'rotate(0deg)',\n _open: 'rotate(180deg)',\n },\n color: {\n base: 'secondary.900',\n _disabled: 'grey.300',\n },\n },\n clearTrigger: {\n color: {\n base: 'secondary.900',\n _disabled: 'grey.300',\n },\n },\n item: {\n _disabled: {\n cursor: 'not-allowed',\n },\n alignItems: 'center',\n background: {\n _disabled: {\n _hover: 'grey.100',\n base: 'grey.100',\n },\n _selected: 'primary.500',\n _highlighted: 'primary.200',\n _hover: 'primary.200',\n },\n color: {\n _disabled: {\n _hover: 'grey.300',\n base: 'grey.300',\n },\n _selected: 'white',\n },\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n transitionDuration: 'fast',\n transitionProperty: 'background, color',\n transitionTimingFunction: 'default',\n },\n itemGroupLabel: {\n textStyle: 'body.sm',\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-4',\n width: 'full',\n },\n trigger: {\n _placeholderShown: {\n color: {\n base: 'grey.400',\n _disabled: 'grey.300',\n },\n },\n _open: {\n border: '1px solid {colors.primary.500}',\n borderBottomLeftRadius: 'radius-0',\n borderBottomRightRadius: 'radius-0',\n },\n alignItems: 'center',\n appearance: 'none',\n bg: {\n _disabled: {\n base: 'grey.50',\n },\n base: 'white',\n },\n border: {\n _focusVisible: '1px solid {colors.primary.500}',\n _hover: {\n base: '1px solid {colors.secondary.500}',\n _open: '1px solid {colors.primary.500}',\n _disabled: '1px solid {colors.grey.100}',\n },\n base: '1px solid {colors.grey.100}',\n },\n borderBottomColor: {\n _open: 'grey.100',\n _hover: {\n base: 'secondary.500',\n _open: 'grey.100',\n },\n base: 'grey.100',\n },\n borderRadius: 'radius-10',\n color: {\n base: 'grey.900',\n _disabled: 'grey.300',\n },\n cursor: 'pointer',\n display: 'inline-flex',\n outline: 0,\n position: 'relative',\n width: 'full',\n },\n },\n className: 'select',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Select'],\n slots: selectAnatomy.keys(),\n variants: {\n size: {\n md: {\n item: { px: 'space-16', py: 'space-8', textStyle: 'body.md' },\n trigger: {\n gap: 'space-8',\n minH: '40px',\n minW: 'size-16',\n py: 'space-8',\n px: 'space-16',\n textStyle: 'body.md',\n },\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputAddonRecipe = defineRecipe({\n base: {\n alignItems: 'center',\n borderRadius: 'inherit',\n display: 'flex',\n p: 'space-8',\n textStyle: 'body.md',\n bg: 'transparent',\n color: 'secondary.900',\n },\n className: 'input-addon',\n description: 'The styles for the InputAddon component',\n jsx: ['InputAddon'],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputGroupRecipe = defineRecipe({\n base: {\n '& [data-recipe=\"input\"]': {\n border: {\n _disabled: 'none',\n _focusVisible: 'none',\n base: 'none',\n },\n },\n bg: 'background',\n borderWidth: '1px',\n '& [data-recipe=\"inputAddon\"]:first-child': {\n pl: 'space-16!',\n },\n '& [data-recipe=\"inputAddon\"]:last-child': {\n pr: 'space-16!',\n },\n '&:has([data-recipe=\"inputAddon\"]:first-child) input': {\n pl: 'space-0!',\n },\n '&:has([data-recipe=\"inputAddon\"]:last-child) input': {\n pr: 'space-0!',\n },\n borderColor: {\n '&:has(> [data-recipe=\"input\"]:focus-visible)': 'primary.500',\n _disabled: 'grey.100',\n _hover: 'secondary.500',\n base: 'grey.100',\n },\n borderRadius: 'radius-8',\n display: 'flex',\n flexDirection: 'row',\n outline: 'none',\n transition: 'background',\n transitionDuration: 'fast',\n width: 'full',\n },\n className: 'input-group',\n description: 'The styles for the InputGroup component',\n jsx: ['InputGroup'],\n})\n","import { buttonRecipe } from './button'\nimport { headingRecipe } from './heading'\nimport { switchRecipe } from './switch'\nimport { textRecipe } from './text'\nimport { textareaRecipe } from './textarea'\nimport { formControlRecipe } from './form/control'\nimport { formHelperTextRecipe } from './form/helper-text'\nimport { drawerRecipe } from './drawer'\nimport { accordionRecipe } from './accordion'\nimport { formLabelRecipe } from './form/label'\nimport { checkboxRecipe } from './checkbox'\nimport { tabsRecipe } from './tabs'\nimport { selectRecipe } from '~/theme/recipes/select'\nimport { inputRecipe } from './input'\nimport { inputAddonRecipe } from './input-addon'\nimport { inputGroupRecipe } from './input-group'\n\nexport const recipes = {\n button: buttonRecipe,\n heading: headingRecipe,\n switchRecipe,\n text: textRecipe,\n textarea: textareaRecipe,\n formControl: formControlRecipe,\n formHelperText: formHelperTextRecipe,\n input: inputRecipe,\n inputAddon: inputAddonRecipe,\n inputGroup: inputGroupRecipe,\n}\n\nexport const slotRecipes = {\n drawer: drawerRecipe,\n accordion: accordionRecipe,\n formLabel: formLabelRecipe,\n checkbox: checkboxRecipe,\n tabs: tabsRecipe,\n select: selectRecipe,\n}\n","import { defineSemanticTokens } from '@pandacss/dev'\n\nexport const semanticTokensColors = defineSemanticTokens.colors({\n decorative: {\n red: {\n light: { value: '#FFB5AD' },\n mid: { value: '#EA4F42' },\n dark: { value: '#752821' },\n },\n blue: {\n light: { value: '#B8FFFF' },\n mid: { value: '#54D2D2' },\n dark: { value: '#2A6969' },\n },\n yellow: {\n light: { value: '#FFFFAC' },\n mid: { value: '#FFCB00' },\n dark: { value: '#806600' },\n },\n purple: {\n light: { value: '#D1B8FF' },\n mid: { value: '#8C61FF' },\n dark: { value: '#463180' },\n },\n green: {\n light: { value: '#BEF1C7' },\n mid: { value: '#58B368' },\n dark: { value: '#2C5A34' },\n },\n brown: {\n light: { value: '#E4CEB9' },\n mid: { value: '#8F6944' },\n dark: { value: '#483522' },\n },\n },\n primary: {\n 900: { value: '{colors.purple.900}' },\n 800: { value: '{colors.purple.800}' },\n 700: { value: '{colors.purple.700}' },\n 600: { value: '{colors.purple.600}' },\n 500: { value: '{colors.purple.500}' },\n 400: { value: '{colors.purple.400}' },\n 300: { value: '{colors.purple.300}' },\n 200: { value: '{colors.purple.200}' },\n 100: { value: '{colors.purple.100}' },\n },\n secondary: {\n 900: { value: '{colors.blue.900}' },\n 800: { value: '{colors.blue.800}' },\n 700: { value: '{colors.blue.700}' },\n 600: { value: '{colors.blue.600}' },\n 500: { value: '{colors.blue.500}' },\n 400: { value: '{colors.blue.400}' },\n 300: { value: '{colors.blue.300}' },\n 200: { value: '{colors.blue.200}' },\n 100: { value: '{colors.blue.100}' },\n },\n error: {\n 900: { value: '{colors.red.900}' },\n 800: { value: '{colors.red.800}' },\n 700: { value: '{colors.red.700}' },\n 600: { value: '{colors.red.600}' },\n 500: { value: '{colors.red.500}' },\n 400: { value: '{colors.red.400}' },\n 300: { value: '{colors.red.300}' },\n 200: { value: '{colors.red.200}' },\n 100: { value: '{colors.red.100}' },\n },\n success: {\n 900: { value: '{colors.green.900}' },\n 800: { value: '{colors.green.800}' },\n 700: { value: '{colors.green.700}' },\n 600: { value: '{colors.green.600}' },\n 500: { value: '{colors.green.500}' },\n 400: { value: '{colors.green.400}' },\n 300: { value: '{colors.green.300}' },\n 200: { value: '{colors.green.200}' },\n 100: { value: '{colors.green.100}' },\n },\n warning: {\n 900: { value: '{colors.yellow.900}' },\n 800: { value: '{colors.yellow.800}' },\n 700: { value: '{colors.yellow.700}' },\n 600: { value: '{colors.yellow.600}' },\n 500: { value: '{colors.yellow.500}' },\n 400: { value: '{colors.yellow.400}' },\n 300: { value: '{colors.yellow.300}' },\n 200: { value: '{colors.yellow.200}' },\n 100: { value: '{colors.yellow.100}' },\n },\n text: {\n DEFAULT: {\n value: '{colors.grey.800}',\n },\n disabled: {\n value: '{colors.grey.300}',\n },\n heading: {\n value: '{colors.primary.900}',\n },\n },\n})\n","import { semanticTokensColors } from './colors'\n\nexport const semanticTokens = {\n colors: semanticTokensColors,\n}\n","import { defineTextStyles } from '@pandacss/dev'\n\nexport const textStyles = defineTextStyles({\n body: {\n lg: {\n value: {\n fontSize: 'body.lg',\n lineHeight: 'normal',\n },\n },\n md: {\n value: {\n fontSize: 'body.md',\n lineHeight: 'normal',\n },\n },\n sm: {\n value: {\n fontSize: 'body.sm',\n lineHeight: 'normal',\n },\n },\n },\n heading: {\n h1: {\n value: {\n fontSize: {\n base: 'heading.mobile.2xl',\n sm: 'heading.desktop.2xl',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h2: {\n value: {\n fontSize: {\n base: 'heading.mobile.lg',\n sm: 'heading.desktop.lg',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h3: {\n value: {\n fontSize: {\n base: 'heading.mobile.md',\n sm: 'heading.desktop.md',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h4: {\n value: {\n fontSize: {\n base: 'heading.mobile.sm',\n sm: 'heading.desktop.sm',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h5: {\n value: {\n fontSize: {\n base: 'heading.mobile.xs',\n sm: 'heading.desktop.xs',\n },\n fontWeight: 'black',\n lineHeight: 'normal',\n },\n },\n h6: {\n value: {\n fontSize: {\n base: 'heading.mobile.xs',\n sm: 'heading.desktop.xs',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const animations = defineTokens.animations({\n 'backdrop-in': {\n value: 'fade-in 250ms {easings.emphasized-in}',\n },\n 'backdrop-out': {\n value: 'fade-out 200ms {easings.emphasized-out}',\n },\n bounce: { value: 'bounce 1s infinite' },\n 'dialog-in': {\n value: 'slide-in-modal 400ms {easings.emphasized-in}',\n },\n 'dialog-out': {\n value: 'slide-out-modal 200ms {easings.emphasized-out}',\n },\n 'drawer-in-left': {\n value: 'slide-in-left 400ms {easings.emphasized-in}',\n },\n 'drawer-in-right': {\n value: 'slide-in-right 400ms {easings.emphasized-in}',\n },\n 'drawer-out-left': {\n value: 'slide-out-left 200ms {easings.emphasized-out}',\n },\n 'drawer-out-right': {\n value: 'slide-out-right 200ms {easings.emphasized-out}',\n },\n 'fade-in': {\n value: 'fade-in 400ms {easings.emphasized-in}',\n },\n ping: { value: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite' },\n pulse: { value: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite' },\n 'skeleton-pulse': {\n value: 'skeleton-pulse 2s {easings.pulse} infinite',\n },\n spin: { value: 'spin 1s linear infinite' },\n 'collapse-in': {\n value: 'collapse-in 150ms {easings.in}',\n },\n 'collapse-out': {\n value: 'collapse-out 150ms {easings.in-out}',\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const aspectRatios = defineTokens.borders({\n golden: { value: '1.618 / 1' },\n landscape: { value: '4 / 3' },\n portrait: { value: '3 / 4' },\n square: { value: '1 / 1' },\n ultrawide: { value: '18 / 5' },\n wide: { value: '16 / 9' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const blurs = defineTokens.blurs({\n '2xl': { value: '40px' },\n '3xl': { value: '64px' },\n base: { value: '8px' },\n lg: { value: '16px' },\n md: { value: '12px' },\n sm: { value: '4px' },\n xl: { value: '24px' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const borders = defineTokens.borders({\n border: {\n none: { value: 'none' },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const colors = defineTokens.colors({\n black: { value: '#000' },\n current: { value: 'currentColor' },\n transparent: { value: 'rgb(0 0 0 / 0)' },\n white: { value: '#fff' },\n purple: {\n 900: { value: '#0B1243' },\n 800: { value: '#0E1754' },\n 700: { value: '#111B65' },\n 600: { value: '#132075' },\n 500: { value: '#162486' },\n 400: { value: '#4350AD' },\n 300: { value: '#7981CE' },\n 200: { value: '#B6B7E8' },\n 100: { value: '#F2F2FC' },\n },\n blue: {\n 900: { value: '#1E3A76' },\n 800: { value: '#264993' },\n 700: { value: '#2D57B0' },\n 600: { value: '#3566CE' },\n 500: { value: '#3C74EB' },\n 400: { value: '#578DFF' },\n 300: { value: '#7CAAFF' },\n 200: { value: '#ACCAFF' },\n 100: { value: '#E6EEFF' },\n },\n grey: {\n 900: { value: '#252227' },\n 800: { value: '#2D2A31' },\n 700: { value: '#34323B' },\n 600: { value: '#3B3B44' },\n 500: { value: '#43454e' },\n 400: { value: '#666871' },\n 300: { value: '#898B93' },\n 200: { value: '#ADAEB4' },\n 100: { value: '#D1D2D6' },\n 50: { value: '#F5F6F6' },\n },\n red: {\n 900: { value: '#802727' },\n 800: { value: '#9F3131' },\n 700: { value: '#BF3B3B' },\n 600: { value: '#DF4444' },\n 500: { value: '#Ff4e4e' },\n 400: { value: '#FF6565' },\n 300: { value: '#FF8585' },\n 200: { value: '#FFB0B0' },\n 100: { value: '#FFE6E6' },\n },\n green: {\n 900: { value: '#24644D' },\n 800: { value: '#2C7C60' },\n 700: { value: '#359573' },\n 600: { value: '#3EAE86' },\n 500: { value: '#47c799' },\n 400: { value: '#64E0B3' },\n 300: { value: '#88F2CC' },\n 200: { value: '#B4FCE2' },\n 100: { value: '#E6FFF7' },\n },\n yellow: {\n 900: { value: '#80581C' },\n 800: { value: '#9F6D22' },\n 700: { value: '#BF8329' },\n 600: { value: '#DF9930' },\n 500: { value: '#ffaf37' },\n 400: { value: '#FFC551' },\n 300: { value: '#FFD976' },\n 200: { value: '#FFEAAC' },\n 100: { value: '#FFF9E6' },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const durations = defineTokens.durations({\n fast: { value: '150ms' },\n faster: { value: '100ms' },\n fastest: { value: '50ms' },\n normal: { value: '200ms' },\n slow: { value: '300ms' },\n slower: { value: '400ms' },\n slowest: { value: '500ms' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const easings = defineTokens.easings({\n default: { value: 'cubic-bezier(0.2, 0.0, 0, 1.0)' },\n 'ease-bounce-1': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.063, 0.098, 0.141, 0.191, 0.25, 0.316, 0.391 36.8%,\n 0.563, 0.766, 1 58.8%, 0.946, 0.908 69.1%, 0.895, 0.885, 0.879, 0.878, 0.879,\n 0.885, 0.895, 0.908 89.7%, 0.946, 1\n )`,\n },\n 'ease-bounce-2': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.063, 0.098, 0.141 15.1%, 0.25, 0.391, 0.562, 0.765,\n 1, 0.892 45.2%, 0.849, 0.815, 0.788, 0.769, 0.757, 0.753, 0.757, 0.769, 0.788,\n 0.815, 0.85, 0.892 75.2%, 1 80.2%, 0.973, 0.954, 0.943, 0.939, 0.943, 0.954,\n 0.973, 1\n )`,\n },\n 'ease-bounce-3': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.062, 0.098, 0.141 11.4%, 0.25, 0.39, 0.562, 0.764,\n 1 30.3%, 0.847 34.8%, 0.787, 0.737, 0.699, 0.672, 0.655, 0.65, 0.656, 0.672,\n 0.699, 0.738, 0.787, 0.847 61.7%, 1 66.2%, 0.946, 0.908, 0.885 74.2%, 0.879,\n 0.878, 0.879, 0.885 79.5%, 0.908, 0.946, 1 87.4%, 0.981, 0.968, 0.96, 0.957,\n 0.96, 0.968, 0.981, 1\n )`,\n },\n 'ease-bounce-4': {\n value: `linear(\n 0, 0.004, 0.016 3%, 0.062, 0.141, 0.25, 0.391, 0.562 18.2%, 1 24.3%, 0.81,\n 0.676 32.3%, 0.629, 0.595, 0.575, 0.568, 0.575, 0.595, 0.629, 0.676 48.2%,\n 0.811, 1 56.2%, 0.918, 0.86, 0.825, 0.814, 0.825, 0.86, 0.918, 1 77.2%,\n 0.94 80.6%, 0.925, 0.92, 0.925, 0.94 87.5%, 1 90.9%, 0.974, 0.965, 0.974, 1\n )`,\n },\n 'ease-bounce-5': {\n value: `linear(\n 0, 0.004, 0.016 2.5%, 0.063, 0.141, 0.25 10.1%, 0.562, 1 20.2%, 0.783, 0.627,\n 0.534 30.9%, 0.511, 0.503, 0.511, 0.534 38%, 0.627, 0.782, 1 48.7%, 0.892,\n 0.815, 0.769 56.3%, 0.757, 0.753, 0.757, 0.769 61.3%, 0.815, 0.892, 1 68.8%,\n 0.908 72.4%, 0.885, 0.878, 0.885, 0.908 79.4%, 1 83%, 0.954 85.5%, 0.943,\n 0.939, 0.943, 0.954 90.5%, 1 93%, 0.977, 0.97, 0.977, 1\n )`,\n },\n 'ease-spring-1': {\n value: `linear(\n 0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n 0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%,\n 1.001\n )`,\n },\n 'ease-spring-2': {\n value: `linear(\n 0, 0.007, 0.029 2.2%, 0.118 4.7%, 0.625 14.4%, 0.826 19%, 0.902, 0.962,\n 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%,\n 0.999 61.6%, 0.995 71.2%, 1\n )`,\n },\n 'ease-spring-3': {\n value: `linear(\n 0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017, 1.077,\n 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%,\n 1.051 39.6%, 1.017 43.1%, 0.991, 0.977 51%, 0.974 53.8%, 0.975 57.1%,\n 0.997 69.8%, 1.003 76.9%, 1\n )`,\n },\n 'ease-spring-4': {\n value: `linear(\n 0, 0.009, 0.037 1.7%, 0.153 3.6%, 0.776 10.3%, 1.001, 1.142 16%, 1.185,\n 1.209 19%, 1.215 19.9% 20.8%, 1.199, 1.165 25%, 1.056 30.3%, 1.008 33%, 0.973,\n 0.955 39.2%, 0.953 41.1%, 0.957 43.3%, 0.998 53.3%, 1.009 59.1% 63.7%,\n 0.998 78.9%, 1\n )`,\n },\n 'ease-spring-5': {\n value: `linear(\n 0, 0.01, 0.04 1.6%, 0.161 3.3%, 0.816 9.4%, 1.046, 1.189 14.4%, 1.231,\n 1.254 17%, 1.259, 1.257 18.6%, 1.236, 1.194 22.3%, 1.057 27%, 0.999 29.4%,\n 0.955 32.1%, 0.942, 0.935 34.9%, 0.933, 0.939 38.4%, 1 47.3%, 1.011,\n 1.017 52.6%, 1.016 56.4%, 1 65.2%, 0.996 70.2%, 1.001 87.2%, 1\n )`,\n },\n 'emphasized-in': { value: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)' },\n 'emphasized-out': { value: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)' },\n in: { value: 'cubic-bezier(0.4, 0, 1, 1)' },\n 'in-out': { value: 'cubic-bezier(0.4, 0, 0.2, 1)' },\n linear: { value: 'linear' },\n out: { value: 'cubic-bezier(0, 0, 0.2, 1)' },\n pulse: { value: 'cubic-bezier(0.4, 0.0, 0.6, 1.0)' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const radii = defineTokens.radii({\n 'radius-0': { value: '0px' },\n 'radius-2': { value: '2px' },\n 'radius-4': { value: '4px' },\n 'radius-6': { value: '6px' },\n 'radius-8': { value: '8px' },\n 'radius-10': { value: '10px' },\n 'radius-12': { value: '12px' },\n 'radius-16': { value: '16px' },\n 'radius-20': { value: '20px' },\n 'radius-24': { value: '24px' },\n 'radius-28': { value: '28px' },\n 'radius-32': { value: '32px' },\n 'radius-36': { value: '36px' },\n 'radius-40': { value: '40px' },\n 'radius-44': { value: '44px' },\n 'radius-48': { value: '48px' },\n 'radius-52': { value: '52px' },\n 'radius-56': { value: '56px' },\n 'radius-60': { value: '60px' },\n 'radius-64': { value: '64px' },\n full: { value: '9999px' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const shadows = defineTokens.shadows({\n '2xl': { value: '0 25px 50px -12px rgb(0 0 0 / 0.25)' },\n inner: { value: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)' },\n lg: { value: ['0 10px 15px -3px rgb(0 0 0 / 0.1)', '0 4px 6px -4px rgb(0 0 0 / 0.1)'] },\n md: { value: ['0 4px 6px -1px rgb(0 0 0 / 0.1)', '0 2px 4px -2px rgb(0 0 0 / 0.1)'] },\n sm: { value: ['0 1px 3px 0 rgb(0 0 0 / 0.1)', '0 1px 2px -1px rgb(0 0 0 / 0.1)'] },\n xl: { value: ['0 20px 25px -5px rgb(0 0 0 / 0.1)', '0 8px 10px -6px rgb(0 0 0 / 0.1)'] },\n xs: { value: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const sizes = defineTokens.sizes({\n 'size-0': {\n value: '0px',\n },\n 'size-12': {\n value: '12px',\n },\n 'size-14': {\n value: '14px',\n },\n 'size-16': {\n value: '16px',\n },\n 'size-2': {\n value: '2px',\n },\n 'size-20': {\n value: '20px',\n },\n 'size-24': {\n value: '24px',\n },\n 'size-28': {\n value: '28px',\n },\n 'size-32': {\n value: '32px',\n },\n 'size-36': {\n value: '36px',\n },\n 'size-4': {\n value: '4px',\n },\n 'size-40': {\n value: '40px',\n },\n 'size-6': {\n value: '6px',\n },\n 'size-44': {\n value: '44px',\n },\n 'size-8': {\n value: '8px',\n },\n full: { value: '100%' },\n max: { value: 'max-content' },\n 'size-48': {\n value: '48px',\n },\n fit: { value: 'fit-content' },\n 'size-52': {\n value: '52px',\n },\n min: { value: 'min-content' },\n 'size-56': {\n value: '56px',\n },\n 'size-60': {\n value: '60px',\n },\n 'size-64': {\n value: '64px',\n },\n 'size-68': {\n value: '68px',\n },\n 'size-72': {\n value: '72px',\n },\n 'size-76': {\n value: '76px',\n },\n 'size-80': {\n value: '80px',\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const spacing = defineTokens.spacing({\n 'space-0': {\n value: '0px',\n },\n 'space-12': {\n value: '12px',\n },\n 'space-10': {\n value: '10px',\n },\n 'space-14': {\n value: '14px',\n },\n 'space-16': {\n value: '16px',\n },\n 'space-18': {\n value: '18px',\n },\n 'space-2': {\n value: '2px',\n },\n 'space-20': {\n value: '20px',\n },\n 'space-24': {\n value: '24px',\n },\n 'space-28': {\n value: '28px',\n },\n 'space-32': {\n value: '32px',\n },\n 'space-36': {\n value: '36px',\n },\n 'space-4': {\n value: '4px',\n },\n 'space-40': {\n value: '40px',\n },\n 'space-6': {\n value: '6px',\n },\n 'space-44': {\n value: '44px',\n },\n 'space-8': {\n value: '8px',\n },\n 'space-48': {\n value: '48px',\n },\n 'space-52': {\n value: '52px',\n },\n 'space-56': {\n value: '56px',\n },\n 'space-60': {\n value: '60px',\n },\n 'space-64': {\n value: '64px',\n },\n 'space-68': {\n value: '68px',\n },\n 'space-72': {\n value: '72px',\n },\n 'space-76': {\n value: '76px',\n },\n 'space-80': {\n value: '80px',\n },\n})\n","// src/arbitrary-value.ts\nvar getArbitraryValue = (_value) => {\n if (!_value || typeof _value !== \"string\")\n return _value;\n const value = _value.trim();\n if (value[0] === \"[\" && value[value.length - 1] === \"]\") {\n const innerValue = value.slice(1, -1);\n let bracketCount = 0;\n for (let i = 0; i < innerValue.length; i++) {\n if (innerValue[i] === \"[\") {\n bracketCount++;\n } else if (innerValue[i] === \"]\") {\n if (bracketCount === 0) {\n return value;\n }\n bracketCount--;\n }\n }\n if (bracketCount === 0) {\n return innerValue.trim();\n }\n }\n return value;\n};\n\n// src/assert.ts\nvar isString = (v) => typeof v === \"string\";\nvar isBoolean = (v) => typeof v === \"boolean\";\nvar isFunction = (v) => typeof v === \"function\";\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\n\n// src/assign.ts\nfunction assign(target, ...sources) {\n for (const source of sources) {\n for (const key in source) {\n if (!target?.hasOwnProperty?.(key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\n\n// src/astish.ts\nvar newRule = /(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g;\nvar ruleClean = /\\/\\*[^]*?\\*\\/| +/g;\nvar ruleNewline = /\\n+/g;\nvar empty = \" \";\nvar astish = (val, tree = [{}]) => {\n if (!val)\n return tree[0];\n let block, left;\n while (block = newRule.exec(val.replace(ruleClean, \"\"))) {\n if (block[4])\n tree.shift();\n else if (block[3]) {\n left = block[3].replace(ruleNewline, empty).trim();\n tree.unshift(tree[0][left] = tree[0][left] || {});\n } else\n tree[0][block[1]] = block[2].replace(ruleNewline, empty).trim();\n }\n return tree[0];\n};\n\n// src/calc.ts\nfunction isCssVar(value) {\n return isObject(value) && \"ref\" in value;\n}\nfunction getRef(operand) {\n return isCssVar(operand) ? operand.ref : operand.toString();\n}\nvar calcRegex = /calc/g;\nvar toExpression = (operator, ...operands) => operands.map(getRef).join(` ${operator} `).replace(calcRegex, \"\");\nvar multiply = (...operands) => `calc(${toExpression(\"*\", ...operands)})`;\nvar calc = {\n negate(x) {\n const value = getRef(x);\n if (value != null && !Number.isNaN(parseFloat(value))) {\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`;\n }\n return multiply(value, -1);\n }\n};\n\n// src/memo.ts\nvar memo = (fn) => {\n const cache = /* @__PURE__ */ new Map();\n const get = (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n return get;\n};\n\n// src/camelcase-property.ts\nvar regex = /-(\\w|$)/g;\nvar callback = (_dashChar, char) => char.toUpperCase();\nvar camelCaseProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n let str = property.toLowerCase();\n str = str.startsWith(\"-ms-\") ? str.substring(1) : str;\n return str.replace(regex, callback);\n});\n\n// src/capitalize.ts\nvar capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);\nvar camelCaseRegex = /([a-z])([A-Z])/g;\nvar dashCase = (s) => s.replace(camelCaseRegex, \"$1-$2\").toLowerCase();\nvar uncapitalize = (s) => s.charAt(0).toLowerCase() + s.slice(1);\n\n// src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value2]) => value2 !== void 0));\n}\n\n// src/condition.ts\nvar isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n\n// src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0)\n name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i)\n h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n\n// src/important.ts\nvar importantRegex = /\\s*!(important)?/i;\nfunction isImportant(value) {\n return typeof value === \"string\" ? importantRegex.test(value) : false;\n}\nfunction withoutImportant(value) {\n return typeof value === \"string\" ? value.replace(importantRegex, \"\").trim() : value;\n}\nfunction withoutSpace(str) {\n return typeof str === \"string\" ? str.replaceAll(\" \", \"_\") : str;\n}\nfunction markImportant(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n const result = Array.isArray(obj) ? [] : {};\n const stack = [{ obj, result }];\n while (stack.length > 0) {\n const { obj: obj2, result: result2 } = stack.pop();\n for (const [key, value] of Object.entries(obj2)) {\n if (typeof value === \"string\" || typeof value === \"number\") {\n result2[key] = `${value} !important`;\n } else if (typeof value === \"object\" && value !== null) {\n const next = Array.isArray(value) ? [] : {};\n result2[key] = next;\n stack.push({ obj: value, result: next });\n } else {\n result2[key] = value;\n }\n }\n }\n return result;\n}\n\n// src/merge-props.ts\nfunction mergeProps(...sources) {\n const objects = sources.filter(Boolean);\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) {\n prev[key] = mergeProps(prevValue, value);\n } else {\n prev[key] = value;\n }\n });\n return prev;\n }, {});\n}\n\n// src/walk-object.ts\nvar isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObject(value) || Array.isArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop, child) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) {\n return predicate(value, path);\n }\n const next = inner(child, childPath);\n if (isNotNullish(next)) {\n result[key] = next;\n }\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj))\n return obj.map((value) => fn(value));\n if (!isObject(obj))\n return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n\n// src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce(\n (acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) {\n acc[key] = current;\n }\n return acc;\n },\n {}\n );\n}\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n return walkObject(\n styles,\n (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n },\n {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n }\n );\n}\n\n// src/classname.ts\nvar fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\nvar sanitize = (value) => typeof value === \"string\" ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\nfunction createCss(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const formatClassName = (str) => [utility.prefix, str].filter(Boolean).join(\"-\");\n const hashFn = (conditions, className) => {\n let result;\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n result = formatClassName(utility.toHash(baseArray, toHash));\n } else {\n const baseArray = [...conds.finalize(conditions), formatClassName(className)];\n result = baseArray.join(\":\");\n }\n return result;\n };\n return memo(({ base, ...styles } = {}) => {\n const styleObject = Object.assign(styles, base);\n const normalizedObject = normalizeStyleObject(styleObject, context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n const important = isImportant(value);\n if (value == null)\n return;\n const [prop, ...allConditions] = conds.shift(paths);\n const conditions = filterBaseConditions(allConditions);\n const transformed = utility.transform(prop, withoutImportant(sanitize(value)));\n let className = hashFn(conditions, transformed.className);\n if (important)\n className = `${className}!`;\n classNames.add(className);\n });\n return Array.from(classNames).join(\" \");\n });\n}\nfunction compactStyles(...styles) {\n return styles.filter((style) => isObject(style) && Object.keys(compact(style)).length > 0);\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1)\n return allStyles;\n return allStyles.map((style) => normalizeStyleObject(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n function assignCss(...styles) {\n return Object.assign({}, ...resolve(styles));\n }\n return { mergeCss: memo(mergeCss), assignCss };\n}\n\n// src/css-var.ts\nvar escRegex = /[^a-zA-Z0-9_\\u0081-\\uffff-]/g;\nfunction esc(string) {\n return `${string}`.replace(escRegex, (s) => `\\\\${s}`);\n}\nvar dashCaseRegex = /[A-Z]/g;\nfunction dashCase2(string) {\n return string.replace(dashCaseRegex, (match) => `-${match.toLowerCase()}`);\n}\nfunction cssVar(name, options = {}) {\n const { fallback = \"\", prefix = \"\", hash } = options;\n const variable = hash ? [\"-\", prefix, toHash(name)].filter(Boolean).join(\"-\") : dashCase2([\"-\", prefix, esc(name)].filter(Boolean).join(\"-\"));\n const result = {\n var: variable,\n ref: `var(${variable}${fallback ? `, ${fallback}` : \"\"})`\n };\n return result;\n}\n\n// src/deep-set.ts\nvar deepSet = (target, path, value) => {\n const isValueObject = isObject(value);\n if (!path.length && isValueObject) {\n return Object.assign(target, value);\n }\n let current = target;\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (!current[key]) {\n current[key] = {};\n }\n if (i === path.length - 1) {\n if (isValueObject && isObject(current[key])) {\n current[key] = Object.assign({ ...current[key] }, value);\n } else {\n current[key] = value;\n }\n } else {\n current = current[key];\n }\n }\n return target;\n};\n\n// src/entries.ts\nfunction fromEntries(entries2) {\n const result = {};\n entries2.forEach((kv) => {\n result[kv[0]] = kv[1];\n });\n return result;\n}\nfunction entries(obj) {\n const result = [];\n for (const key in obj) {\n result.push([key, obj[key]]);\n }\n return result;\n}\nfunction mapEntries(obj, f) {\n const result = {};\n for (const key in obj) {\n const kv = f(key, obj[key]);\n result[kv[0]] = kv[1];\n }\n return result;\n}\n\n// src/error.ts\nvar PandaError = class extends Error {\n code;\n hint;\n constructor(code, message, opts) {\n super(message);\n this.code = `ERR_PANDA_${code}`;\n this.hint = opts?.hint;\n }\n};\n\n// src/esc.ts\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|^-|[^\\x80-\\uFFFF\\w-]/g;\nvar fcssescape = function(ch, asCodePoint) {\n if (!asCodePoint)\n return \"\\\\\" + ch;\n if (ch === \"\\0\")\n return \"\\uFFFD\";\n if (ch === \"-\" && ch.length === 1)\n return \"\\\\-\";\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16);\n};\nvar esc2 = (sel) => {\n return (sel + \"\").replace(rcssescape, fcssescape);\n};\n\n// src/flatten.ts\nfunction flatten(values, stop) {\n const result = {};\n walkObject(\n values,\n (token, paths) => {\n if (token) {\n result[paths.join(\".\")] = token.value;\n }\n },\n {\n stop: stop ?? ((v) => {\n return isObject(v) && \"value\" in v;\n })\n }\n );\n return result;\n}\n\n// src/get-or-create-set.ts\nfunction getOrCreateSet(map, key) {\n let set = map.get(key);\n if (!set) {\n map.set(key, /* @__PURE__ */ new Set());\n set = map.get(key);\n }\n return set;\n}\n\n// src/hypenate-property.ts\nvar wordRegex = /([A-Z])/g;\nvar msRegex = /^ms-/;\nvar hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n\n// src/is-css-function.ts\nvar fns = [\"min\", \"max\", \"clamp\", \"calc\"];\nvar fnRegExp = new RegExp(`^(${fns.join(\"|\")})\\\\(.*\\\\)`);\nvar isCssFunction = (v) => typeof v === \"string\" && fnRegExp.test(v);\n\n// src/is-css-unit.ts\nvar lengthUnits = \"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%\";\nvar lengthUnitsPattern = `(?:${lengthUnits.split(\",\").join(\"|\")})`;\nvar lengthRegExp = new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`);\nvar isCssUnit = (v) => typeof v === \"string\" && lengthRegExp.test(v);\n\n// src/is-css-var.ts\nvar isCssVar2 = (v) => typeof v === \"string\" && /^var\\(--.+\\)$/.test(v);\n\n// src/merge-with.ts\nfunction mergeWith(target, ...sources) {\n const customizer = sources.pop();\n for (const source of sources) {\n for (const key in source) {\n const merged = customizer(target[key], source[key]);\n if (merged === void 0) {\n if (isObject(target[key]) && isObject(source[key])) {\n target[key] = mergeWith({}, target[key], source[key], customizer);\n } else {\n target[key] = source[key];\n }\n } else {\n target[key] = merged;\n }\n }\n }\n return target;\n}\n\n// src/traverse.ts\nvar isObjectOrArray = (obj) => typeof obj === \"object\" && obj !== null;\nvar defaultOptions = {\n separator: \".\",\n maxDepth: Infinity\n};\nfunction traverse(obj, callback2, options = defaultOptions) {\n const maxDepth = options.maxDepth ?? defaultOptions.maxDepth;\n const separator = options.separator ?? defaultOptions.separator;\n const stack = [{ value: obj, path: \"\", paths: [], depth: -1, parent: null, key: \"\" }];\n while (stack.length > 0) {\n const currentItem = stack.pop();\n if (currentItem.parent !== null) {\n callback2(currentItem);\n }\n if (options.stop?.(currentItem)) {\n continue;\n }\n if (isObjectOrArray(currentItem.value) && currentItem.depth < maxDepth) {\n const keys = Object.keys(currentItem.value);\n for (let i = keys.length - 1; i >= 0; i--) {\n const key = keys[i];\n const value = currentItem.value[key];\n const path = currentItem.path ? currentItem.path + separator + key : key;\n const paths = currentItem.paths.concat(key);\n stack.push({\n value,\n path,\n paths,\n depth: currentItem.depth + 1,\n parent: currentItem.value,\n key\n });\n }\n }\n }\n}\n\n// src/omit.ts\nvar omit = (obj, paths) => {\n const result = { ...obj };\n traverse(result, ({ path, parent, key }) => {\n if (paths.includes(path)) {\n delete parent[key];\n }\n });\n return result;\n};\n\n// src/pattern-fns.ts\nvar patternFns = {\n map: mapObject,\n isCssFunction,\n isCssVar: isCssVar2,\n isCssUnit\n};\nvar getPatternStyles = (pattern, styles) => {\n if (!pattern?.defaultValues)\n return styles;\n const defaults = typeof pattern.defaultValues === \"function\" ? pattern.defaultValues(styles) : pattern.defaultValues;\n return Object.assign({}, defaults, compact(styles));\n};\n\n// src/regex.ts\nvar createRegex = (item) => {\n const regex2 = item.map((item2) => typeof item2 === \"string\" ? `^${item2}$` : item2.source).join(\"|\");\n return new RegExp(regex2);\n};\n\n// src/serialize.ts\nvar stringifyJson = (config) => {\n return JSON.stringify(config, (_key, value) => {\n if (typeof value === \"function\")\n return value.toString();\n return value;\n });\n};\nvar parseJson = (config) => {\n return JSON.parse(config);\n};\n\n// src/shorthand-properties.ts\nvar shorthandProperties = {\n animation: [\n \"animationName\",\n \"animationDuration\",\n \"animationTimingFunction\",\n \"animationDelay\",\n \"animationIterationCount\",\n \"animationDirection\",\n \"animationFillMode\",\n \"animationPlayState\"\n ],\n background: [\n \"backgroundImage\",\n \"backgroundPosition\",\n \"backgroundSize\",\n \"backgroundRepeat\",\n \"backgroundAttachment\",\n \"backgroundOrigin\",\n \"backgroundClip\",\n \"backgroundColor\"\n ],\n backgroundPosition: [\"backgroundPositionX\", \"backgroundPositionY\"],\n border: [\"borderWidth\", \"borderStyle\", \"borderColor\"],\n borderBlockEnd: [\"borderBlockEndWidth\", \"borderBlockEndStyle\", \"borderBlockEndColor\"],\n borderBlockStart: [\"borderBlockStartWidth\", \"borderBlockStartStyle\", \"borderBlockStartColor\"],\n borderBottom: [\"borderBottomWidth\", \"borderBottomStyle\", \"borderBottomColor\"],\n borderColor: [\"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\"],\n borderImage: [\"borderImageSource\", \"borderImageSlice\", \"borderImageWidth\", \"borderImageOutset\", \"borderImageRepeat\"],\n borderInlineEnd: [\"borderInlineEndWidth\", \"borderInlineEndStyle\", \"borderInlineEndColor\"],\n borderInlineStart: [\"borderInlineStartWidth\", \"borderInlineStartStyle\", \"borderInlineStartColor\"],\n borderLeft: [\"borderLeftWidth\", \"borderLeftStyle\", \"borderLeftColor\"],\n borderRadius: [\"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderBottomRightRadius\", \"borderBottomLeftRadius\"],\n borderRight: [\"borderRightWidth\", \"borderRightStyle\", \"borderRightColor\"],\n borderStyle: [\"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\"],\n borderTop: [\"borderTopWidth\", \"borderTopStyle\", \"borderTopColor\"],\n borderWidth: [\"borderTopWidth\", \"borderRightWidth\", \"borderBottomWidth\", \"borderLeftWidth\"],\n columnRule: [\"columnRuleWidth\", \"columnRuleStyle\", \"columnRuleColor\"],\n columns: [\"columnWidth\", \"columnCount\"],\n container: [\"contain\", \"content\"],\n containIntrinsicSize: [\"containIntrinsicSizeInline\", \"containIntrinsicSizeBlock\"],\n cue: [\"cueBefore\", \"cueAfter\"],\n flex: [\"flexGrow\", \"flexShrink\", \"flexBasis\"],\n flexFlow: [\"flexDirection\", \"flexWrap\"],\n font: [\n \"fontStyle\",\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"lineHeight\",\n \"fontFamily\"\n ],\n fontSynthesis: [\"fontSynthesisWeight\", \"fontSynthesisStyle\", \"fontSynthesisSmallCaps\"],\n fontVariant: [\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\"\n ],\n gap: [\"columnGap\", \"rowGap\"],\n grid: [\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"gridTemplateAreas\",\n \"gridAutoColumns\",\n \"gridAutoRows\",\n \"gridAutoFlow\"\n ],\n gridArea: [\"gridRowStart\", \"gridColumnStart\", \"gridRowEnd\", \"gridColumnEnd\"],\n gridColumn: [\"gridColumnStart\", \"gridColumnEnd\"],\n gridGap: [\"gridColumnGap\", \"gridRowGap\"],\n gridRow: [\"gridRowStart\", \"gridRowEnd\"],\n gridTemplate: [\"gridTemplateColumns\", \"gridTemplateRows\", \"gridTemplateAreas\"],\n inset: [\"top\", \"right\", \"bottom\", \"left\"],\n listStyle: [\"listStyleType\", \"listStylePosition\", \"listStyleImage\"],\n margin: [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"],\n mask: [\"maskImage\", \"maskMode\", \"maskRepeat\", \"maskPosition\", \"maskClip\", \"maskOrigin\", \"maskSize\", \"maskComposite\"],\n maskBorder: [\n \"maskBorderSource\",\n \"maskBorderMode\",\n \"maskBorderSlice\",\n \"maskBorderWidth\",\n \"maskBorderOutset\",\n \"maskBorderRepeat\"\n ],\n offset: [\"offsetPosition\", \"offsetPath\", \"offsetDistance\", \"offsetRotate\", \"offsetAnchor\"],\n outline: [\"outlineWidth\", \"outlineStyle\", \"outlineColor\"],\n overflow: [\"overflowX\", \"overflowY\"],\n padding: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n pause: [\"pauseBefore\", \"pauseAfter\"],\n placeContent: [\"alignContent\", \"justifyContent\"],\n placeItems: [\"alignItems\", \"justifyItems\"],\n placeSelf: [\"alignSelf\", \"justifySelf\"],\n rest: [\"restBefore\", \"restAfter\"],\n scrollMargin: [\"scrollMarginTop\", \"scrollMarginRight\", \"scrollMarginBottom\", \"scrollMarginLeft\"],\n scrollPadding: [\"scrollPaddingTop\", \"scrollPaddingRight\", \"scrollPaddingBottom\", \"scrollPaddingLeft\"],\n scrollPaddingBlock: [\"scrollPaddingBlockStart\", \"scrollPaddingBlockEnd\"],\n scrollPaddingInline: [\"scrollPaddingInlineStart\", \"scrollPaddingInlineEnd\"],\n scrollSnapMargin: [\"scrollSnapMarginTop\", \"scrollSnapMarginRight\", \"scrollSnapMarginBottom\", \"scrollSnapMarginLeft\"],\n scrollSnapMarginBlock: [\"scrollSnapMarginBlockStart\", \"scrollSnapMarginBlockEnd\"],\n scrollSnapMarginInline: [\"scrollSnapMarginInlineStart\", \"scrollSnapMarginInlineEnd\"],\n scrollTimeline: [\"scrollTimelineSource\", \"scrollTimelineOrientation\"],\n textDecoration: [\"textDecorationLine\", \"textDecorationStyle\", \"textDecorationColor\"],\n textEmphasis: [\"textEmphasisStyle\", \"textEmphasisColor\"],\n transition: [\"transitionProperty\", \"transitionDuration\", \"transitionTimingFunction\", \"transitionDelay\"]\n};\nvar longhands = Object.values(shorthandProperties).reduce((a, b) => [...a, ...b], []);\nfunction getPropertyPriority(property) {\n if (property === \"all\")\n return 0;\n return longhands.includes(property) ? 2 : 1;\n}\n\n// src/slot.ts\nvar getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const slots = recipe.slots ?? [];\n const recipeParts = slots.map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) {\n for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) {\n recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n }\n }\n return Object.fromEntries(recipeParts);\n};\nvar getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant.css[slotName]).map((compoundVariant) => ({ ...compoundVariant, css: compoundVariant.css[slotName] }));\n\n// src/split.ts\nfunction splitBy(value, separator = \",\") {\n const result = [];\n let current = \"\";\n let depth = 0;\n for (let i = 0; i < value.length; i++) {\n const char = value[i];\n if (char === \"(\") {\n depth++;\n } else if (char === \")\") {\n depth--;\n } else if (char === separator && depth === 0) {\n result.push(current);\n current = \"\";\n continue;\n }\n current += char;\n }\n result.push(current);\n return result;\n}\nfunction splitDotPath(path) {\n return path.split(\".\").reduce((acc, curr) => {\n const last = acc[acc.length - 1];\n if (last != null && !isNaN(Number(last)) && !isNaN(Number(curr))) {\n acc[acc.length - 1] = `${last}.${curr}`;\n } else {\n acc.push(curr);\n }\n return acc;\n }, []);\n}\nfunction getNegativePath(path) {\n return path.slice(0, -1).concat(`-${path.at(-1)}`);\n}\nfunction getDotPath(obj, path, fallback) {\n if (typeof path !== \"string\")\n return fallback;\n const idx = path.indexOf(\".\");\n if (idx === -1) {\n return obj?.[path] ?? fallback;\n }\n const key = path.slice(0, idx);\n const nextPath = path.slice(idx + 1);\n const checkValue = obj?.[key]?.[nextPath];\n if (checkValue) {\n return checkValue;\n }\n return getDotPath(obj?.[key], nextPath, fallback) ?? fallback;\n}\n\n// src/split-props.ts\nfunction splitProps(props, ...keys) {\n const descriptors = Object.getOwnPropertyDescriptors(props);\n const dKeys = Object.keys(descriptors);\n const split = (k) => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (descriptors[key]) {\n Object.defineProperty(clone, key, descriptors[key]);\n delete descriptors[key];\n }\n }\n return clone;\n };\n const fn = (key) => split(Array.isArray(key) ? key : dKeys.filter(key));\n return keys.map(fn).concat(split(dKeys));\n}\n\n// src/to-json.ts\nfunction mapToJson(map) {\n const obj = {};\n map.forEach((value, key) => {\n if (value instanceof Map) {\n obj[key] = Object.fromEntries(value);\n } else {\n obj[key] = value;\n }\n });\n return obj;\n}\n\n// src/typegen.ts\nfunction unionType(values) {\n return Array.from(values).map((value) => JSON.stringify(value)).join(\" | \");\n}\n\n// src/uniq.ts\nvar uniq = (...items) => items.filter(Boolean).reduce((acc, item) => Array.from(/* @__PURE__ */ new Set([...acc, ...item])), []);\n\n// src/unit-conversion.ts\nvar BASE_FONT_SIZE = 16;\nvar UNIT_PX = \"px\";\nvar UNIT_EM = \"em\";\nvar UNIT_REM = \"rem\";\nfunction getUnit(value = \"\") {\n const DIGIT_REGEX = new RegExp(String.raw`-?\\d+(?:\\.\\d+|\\d*)`);\n const UNIT_REGEX = new RegExp(`${UNIT_PX}|${UNIT_EM}|${UNIT_REM}`);\n const unit = value.match(new RegExp(`${DIGIT_REGEX.source}(${UNIT_REGEX.source})`));\n return unit?.[1];\n}\nfunction toPx(value = \"\") {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_PX) {\n return value;\n }\n if (unit === UNIT_EM || unit === UNIT_REM) {\n return `${parseFloat(value) * BASE_FONT_SIZE}${UNIT_PX}`;\n }\n}\nfunction toEm(value = \"\", fontSize = BASE_FONT_SIZE) {\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_EM) {\n return value;\n }\n if (unit === UNIT_PX) {\n return `${parseFloat(value) / fontSize}${UNIT_EM}`;\n }\n if (unit === UNIT_REM) {\n return `${parseFloat(value) * BASE_FONT_SIZE / fontSize}${UNIT_EM}`;\n }\n}\nfunction toRem(value = \"\") {\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_REM) {\n return value;\n }\n if (unit === UNIT_EM) {\n return `${parseFloat(value)}${UNIT_REM}`;\n }\n if (unit === UNIT_PX) {\n return `${parseFloat(value) / BASE_FONT_SIZE}${UNIT_REM}`;\n }\n}\nexport {\n PandaError,\n assign,\n astish,\n calc,\n camelCaseProperty,\n capitalize,\n compact,\n createCss,\n createMergeCss,\n createRegex,\n cssVar,\n dashCase,\n deepSet,\n entries,\n esc2 as esc,\n filterBaseConditions,\n flatten,\n fromEntries,\n getArbitraryValue,\n getDotPath,\n getNegativePath,\n getOrCreateSet,\n getPatternStyles,\n getPropertyPriority,\n getSlotCompoundVariant,\n getSlotRecipes,\n getUnit,\n hypenateProperty,\n isBaseCondition,\n isBoolean,\n isCssFunction,\n isCssUnit,\n isCssVar2 as isCssVar,\n isFunction,\n isImportant,\n isObject,\n isObjectOrArray,\n isString,\n mapEntries,\n mapObject,\n mapToJson,\n markImportant,\n memo,\n mergeProps,\n mergeWith,\n normalizeStyleObject,\n omit,\n parseJson,\n patternFns,\n splitBy,\n splitDotPath,\n splitProps,\n stringifyJson,\n toEm,\n toHash,\n toPx,\n toRem,\n toResponsiveObject,\n traverse,\n uncapitalize,\n unionType,\n uniq,\n walkObject,\n withoutImportant,\n withoutSpace\n};\n","import { defineTokens } from '@pandacss/dev'\nimport { toRem } from '@pandacss/shared'\n\nexport const fontSizes = defineTokens.fontSizes({\n body: {\n lg: { value: toRem('16px')! },\n md: { value: toRem('14px')! },\n sm: { value: toRem('12px')! },\n },\n heading: {\n desktop: {\n '2xl': { value: toRem('44px')! },\n lg: { value: toRem('32px')! },\n md: { value: toRem('28px')! },\n sm: { value: toRem('22px')! },\n xs: { value: toRem('18px')! },\n },\n mobile: {\n '2xl': { value: toRem('38px')! },\n lg: { value: toRem('30px')! },\n md: { value: toRem('24px')! },\n sm: { value: toRem('22px')! },\n xs: { value: toRem('18px')! },\n },\n },\n})\n\nexport const fontWeights = defineTokens.fontWeights({\n black: { value: '900' },\n bold: { value: '700' },\n extrabold: { value: '800' },\n extralight: { value: '200' },\n light: { value: '300' },\n medium: { value: '500' },\n normal: { value: '400' },\n semibold: { value: '600' },\n thin: { value: '100' },\n})\n\nexport const letterSpacings = defineTokens.letterSpacings({\n normal: { value: '0em' },\n tight: { value: '-0.025em' },\n tighter: { value: '-0.05em' },\n wide: { value: '0.025em' },\n wider: { value: '0.05em' },\n widest: { value: '0.1em' },\n})\n\nexport const lineHeights = defineTokens.lineHeights({})\n\nexport const fonts = defineTokens.fonts({\n satoshi: { value: 'var(--font-satoshi)' },\n cabinet: { value: 'var(--font-cabinet)' },\n mono: {\n value: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n sans: {\n value: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n },\n serif: {\n value: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const zIndex = defineTokens.zIndex({\n banner: {\n value: 1200,\n },\n base: {\n value: 0,\n },\n docked: {\n value: 10,\n },\n dropdown: {\n value: 1000,\n },\n hide: {\n value: -1,\n },\n modal: {\n value: 1400,\n },\n overlay: {\n value: 1300,\n },\n popover: {\n value: 1500,\n },\n skipLink: {\n value: 1600,\n },\n sticky: {\n value: 1100,\n },\n toast: {\n value: 1700,\n },\n tooltip: {\n value: 1800,\n },\n})\n","import { animations } from './animations'\nimport { aspectRatios } from './aspect-ratios'\nimport { blurs } from './blurs'\nimport { borders } from './borders'\nimport { colors } from './colors'\nimport { durations } from './durations'\nimport { easings } from './easings'\nimport { radii } from './radii'\nimport { shadows } from './shadows'\nimport { sizes } from './sizes'\nimport { spacing } from './spacing'\nimport { fonts, fontSizes, fontWeights, letterSpacings, lineHeights } from './typography'\nimport { zIndex } from './z-index'\n\nexport const tokens = {\n animations,\n aspectRatios,\n blurs,\n borders,\n colors,\n durations,\n easings,\n fontSizes,\n fontWeights,\n fonts,\n letterSpacings,\n lineHeights,\n radii,\n shadows,\n sizes,\n spacing,\n zIndex,\n} as const\n","import type { Config } from '@pandacss/dev'\nimport { defineUtility } from '@pandacss/dev'\n\nconst boxSize = defineUtility({\n className: 'size',\n transform(value) {\n return { height: value, width: value }\n },\n values: 'sizes',\n})\n\nexport const utilities: Config['utilities'] = {\n extend: {\n boxSize,\n },\n}\n","import { definePreset } from '@pandacss/dev'\n\nimport { breakpoints } from './theme/breakpoints'\nimport { conditions } from './theme/conditions'\nimport { containerSizes } from './theme/containers'\nimport { keyframes } from './theme/keyframes'\nimport { recipes, slotRecipes } from './theme/recipes'\nimport { semanticTokens } from './theme/semantic-tokens'\nimport { textStyles } from './theme/text-styles'\nimport { tokens } from './theme/tokens'\nimport { utilities } from './theme/utilities'\n\nexport const preset = definePreset({\n staticCss: {\n recipes: '*',\n },\n theme: {\n breakpoints,\n containerSizes,\n keyframes,\n recipes,\n semanticTokens,\n slotRecipes,\n textStyles,\n tokens,\n },\n utilities,\n conditions,\n})\n"],"names":["cx","args","createStyleContext","recipe","options","StyleContext","createContext","Component","slot","contextOptions","forwardRef","props","ref","slotStyles","useContext","dataAttr","createElement","providerOptions","variantProps","otherProps","jsx","withProvider","withContext","accordion","Accordion","styled","ArkAccordion","AccordionItem","AccordionItemContent","AccordionItemIndicator","AccordionItemTrigger","Button","button","Checkbox","checkboxProps","checkbox","cssProps","localProps","splitCssProps","children","className","rootProps","styles","jsxs","ArkCheckbox","css","CheckIcon","MinusIcon","drawer","Drawer","ArkDrawer","DrawerBody","ark","DrawerCloseTrigger","DrawerFooter","Header","showCloseTrigger","DrawerHeader","DrawerTitle","DrawerTrigger","DrawerPositioner","DrawerBackdrop","Content","Portal","DrawerContent","StyledFormControl","formControl","FormControl","isInvalid","isRequired","invalidProps","StyledFormLabel","formLabel","FormLabel","labelProps","addon","FormHelperText","formHelperText","Heading","as","Dynamic","useMemo","heading","Switch","switchProps","switchRecipe","ArkSwitch","Text","text","Textarea","textarea","tabs","Tabs","ArkTab","TabsContent","TabsTrigger","TabsIndicator","List","TabsList","ConditionalWrapper","when","wrapper","select","Root","ArkSelect","ClearTrigger","Control","Indicator","Item","ItemIndicator","ItemText","Positioner","Trigger","ValueText","Select","items","placeholder","emptyLabel","usePortal","positioning","item","Input","input","InputAddon","inputAddon","InputGroup","inputGroup","breakpoints","conditions","containerSizes","keyframes","defineKeyframes","buttonRecipe","defineRecipe","headingRecipe","createAnatomy","name","parts","values","isEmpty","newName","prev","part","toKebabCase","value","v","isDocument","el","isWindow","getDocument","defaultItemToId","itemById","id","itemToId","indexOfId","nextById","loop","idx","prevById","queryAll","root","selector","createScope","methods","screen","ctx","_a","elem","valueAsString","first","last","createProps","anatomy","dom","_b","anatomy$1","tab","rect","defineSlotRecipe","switchAnatomy","textRecipe","inputRecipe","textareaRecipe","formControlRecipe","formHelperTextRecipe","dialogAnatomy","drawerRecipe","accordionRecipe","accordionAnatomy","formLabelRecipe","checkboxRecipe","checkboxAnatomy","tabsRecipe","tabsAnatomy","selectRecipe","selectAnatomy","inputAddonRecipe","inputGroupRecipe","recipes","slotRecipes","semanticTokensColors","defineSemanticTokens","semanticTokens","textStyles","defineTextStyles","animations","defineTokens","aspectRatios","blurs","borders","colors","durations","easings","radii","shadows","sizes","spacing","lengthUnits","shorthandProperties","a","b","BASE_FONT_SIZE","UNIT_PX","UNIT_EM","UNIT_REM","getUnit","DIGIT_REGEX","UNIT_REGEX","unit","toRem","fontSizes","fontWeights","letterSpacings","lineHeights","fonts","zIndex","tokens","boxSize","defineUtility","utilities","preset","definePreset"],"mappings":"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,ECRYS,GAAQT,eAAa,MAAM,CACtC,SAAU,CACR,MAAO,KACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,SAAU,CACR,MAAO,KACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,SAAU,CACR,MAAO,KACT,EACA,UAAW,CACT,MAAO,MACT,EACA,SAAU,CACR,MAAO,KACT,EACA,UAAW,CACT,MAAO,MACT,EACA,SAAU,CACR,MAAO,KACT,EACA,KAAM,CAAE,MAAO,MAAO,EACtB,IAAK,CAAE,MAAO,aAAc,EAC5B,UAAW,CACT,MAAO,MACT,EACA,IAAK,CAAE,MAAO,aAAc,EAC5B,UAAW,CACT,MAAO,MACT,EACA,IAAK,CAAE,MAAO,aAAc,EAC5B,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,EACA,UAAW,CACT,MAAO,MACT,CACF,CAAC,EC7EYU,GAAUV,eAAa,QAAQ,CAC1C,UAAW,CACT,MAAO,KACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,UAAW,CACT,MAAO,KACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,WAAY,CACV,MAAO,MACT,EACA,UAAW,CACT,MAAO,KACT,EACA,WAAY,CACV,MAAO,MACT,EACA,UAAW,CACT,MAAO,KACT,EACA,WAAY,CACV,MAAO,MACT,EACA,UAAW,CACT,MAAO,KACT,EACA,WAAY,CAC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","x_google_ignoreList":[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,74]}
|
|
1
|
+
{"version":3,"file":"ui.cjs","sources":["../src/utils/slots.tsx","../src/components/accordion/Accordion.tsx","../src/components/button/Button.tsx","../src/components/checkbox/Checkbox.tsx","../src/components/drawer/Drawer.tsx","../src/components/form/FormControl.tsx","../src/components/form/FormLabel.tsx","../src/components/form/FormHelperText.tsx","../src/components/heading/Heading.tsx","../src/components/switch/Switch.tsx","../src/components/text/Text.tsx","../src/components/textarea/Textarea.tsx","../src/components/tabs/Tabs.tsx","../src/shared/ConditionalWrapper.tsx","../src/components/select/Select.tsx","../src/components/input/Input.tsx","../src/components/input/InputAddon.tsx","../src/components/input/InputGroup.tsx","../src/components/box/Box.tsx","../src/theme/breakpoints.ts","../src/theme/conditions.ts","../src/theme/containers.ts","../src/theme/keyframes.ts","../src/theme/recipes/button.ts","../src/theme/recipes/heading.ts","../../../node_modules/@zag-js/anatomy/dist/index.mjs","../../../node_modules/@zag-js/accordion/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/utils/dist/index.mjs","../../../node_modules/@zag-js/accordion/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/accordion/dist/index.mjs","../../../node_modules/@zag-js/checkbox/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/checkbox/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/checkbox/dist/index.mjs","../../../node_modules/@zag-js/dialog/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/dialog/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/dialog/dist/index.mjs","../../../node_modules/@zag-js/select/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/select/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/select/dist/index.mjs","../../../node_modules/@ark-ui/anatomy/dist/select/index.js","../../../node_modules/@zag-js/switch/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/switch/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/switch/dist/index.mjs","../../../node_modules/@zag-js/tabs/node_modules/@zag-js/dom-query/dist/index.mjs","../../../node_modules/@zag-js/tabs/node_modules/@zag-js/types/dist/index.mjs","../../../node_modules/@zag-js/tabs/dist/index.mjs","../src/theme/recipes/switch.ts","../src/theme/recipes/text.ts","../src/theme/recipes/input.ts","../src/theme/recipes/textarea.ts","../src/theme/recipes/form/control.ts","../src/theme/recipes/form/helper-text.ts","../src/theme/recipes/drawer.ts","../src/theme/recipes/accordion.ts","../src/theme/recipes/form/label.ts","../src/theme/recipes/checkbox.ts","../src/theme/recipes/tabs.ts","../src/theme/recipes/select.ts","../src/theme/recipes/input-addon.ts","../src/theme/recipes/input-group.ts","../src/theme/recipes/index.ts","../src/theme/semantic-tokens/colors.ts","../src/theme/semantic-tokens/index.ts","../src/theme/text-styles.ts","../src/theme/tokens/animations.ts","../src/theme/tokens/aspect-ratios.ts","../src/theme/tokens/blurs.ts","../src/theme/tokens/borders.ts","../src/theme/tokens/colors.ts","../src/theme/tokens/durations.ts","../src/theme/tokens/easings.ts","../src/theme/tokens/radii.ts","../src/theme/tokens/shadows.ts","../src/theme/tokens/sizes.ts","../src/theme/tokens/spacing.ts","../../../node_modules/@pandacss/shared/dist/index.mjs","../src/theme/tokens/typography.ts","../src/theme/tokens/z-index.ts","../src/theme/tokens/index.ts","../src/theme/utilities.ts","../src/preset.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n'use client'\n\nimport {\n type ComponentProps,\n createContext,\n createElement,\n type ElementType,\n forwardRef,\n type JSX,\n useContext,\n} from 'react'\n\ntype GenericProps = Record<string, unknown>\ntype StyleRecipe = {\n (props?: GenericProps): Record<string, string>\n splitVariantProps: (props: GenericProps) => any\n}\ntype StyleSlot<R extends StyleRecipe> = keyof ReturnType<R>\ntype StyleSlotRecipe<R extends StyleRecipe> = Record<StyleSlot<R>, string>\ntype StyleVariantProps<R extends StyleRecipe> = Parameters<R>[0]\ntype CombineProps<T, U> = Omit<T, keyof U> & U\n\nconst cx = (...args: Array<string | undefined>) => args.filter(Boolean).join(' ')\n\nexport interface ComponentVariants<T extends ElementType, R extends StyleRecipe> {\n (props: CombineProps<ComponentProps<T>, StyleVariantProps<R>>): JSX.Element\n}\n\ntype Options = {\n dataAttr?: boolean\n}\n\ntype WithOptions<Props extends GenericProps> = {\n defaultProps?: Partial<Props>\n}\n\nexport const createStyleContext = <R extends StyleRecipe>(recipe: R, options?: Options) => {\n const StyleContext = createContext<StyleSlotRecipe<R> | null>(null)\n\n const withProvider = <T extends ElementType>(\n Component: T,\n slot?: StyleSlot<R>,\n providerOptions?: WithOptions<ComponentProps<T>>,\n ): ComponentVariants<T, R> => {\n const StyledComponent = forwardRef((props: ComponentProps<T>, ref) => {\n const [variantProps, otherProps] = recipe.splitVariantProps({\n ...props,\n ...providerOptions?.defaultProps,\n })\n const slotStyles = recipe(variantProps) as StyleSlotRecipe<R>\n const dataAttr = options?.dataAttr ?? false\n\n return (\n <StyleContext.Provider value={slotStyles}>\n <Component\n ref={ref}\n {...(dataAttr && { 'data-recipe-slot': slot ?? '' })}\n {...otherProps}\n className={cx(slotStyles[slot ?? ''], otherProps.className)}\n />\n </StyleContext.Provider>\n )\n })\n return StyledComponent as unknown as ComponentVariants<T, R>\n }\n\n const withContext = <T extends ElementType>(\n Component: T,\n slot?: StyleSlot<R>,\n contextOptions?: WithOptions<ComponentProps<T>>,\n ): T => {\n if (!slot) return Component\n const StyledComponent = forwardRef((props: ComponentProps<T>, ref) => {\n const slotStyles = useContext(StyleContext)\n const dataAttr = options?.dataAttr ?? false\n\n return createElement(Component, {\n ...(dataAttr && { 'data-recipe-slot': slot ?? '' }),\n ...props,\n ...contextOptions?.defaultProps,\n className: cx(slotStyles?.[slot ?? ''], props.className),\n ref,\n })\n })\n return StyledComponent as unknown as T\n }\n\n return {\n withContext,\n withProvider,\n }\n}\n","import { Accordion as ArkAccordion } from '@ark-ui/react'\nimport type { ComponentProps } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { accordion } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots'\n\nconst { withProvider, withContext } = createStyleContext(accordion)\n\nexport const Accordion = withProvider(styled(ArkAccordion.Root), 'root')\nexport const AccordionItem = withContext(styled(ArkAccordion.Item), 'item')\nexport const AccordionItemContent = withContext(styled(ArkAccordion.ItemContent), 'itemContent')\nexport const AccordionItemIndicator = withContext(styled(ArkAccordion.ItemIndicator), 'itemIndicator', {\n defaultProps: {\n children: (\n <svg width=\"16\" height=\"17\" viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M4.94 6.03L8 9.08333L11.06 6.03L12 6.97L8 10.97L4 6.97L4.94 6.03Z\" fill=\"currentColor\" />\n </svg>\n ),\n },\n})\nexport const AccordionItemTrigger = withContext(styled(ArkAccordion.ItemTrigger), 'itemTrigger')\n\nexport interface AccordionProps extends ComponentProps<typeof Accordion> {}\nexport interface AccordionItemProps extends ComponentProps<typeof AccordionItem> {}\nexport interface AccordionItemContentProps extends ComponentProps<typeof AccordionItemContent> {}\nexport interface AccordionItemIndicatorProps extends ComponentProps<typeof AccordionItemIndicator> {}\nexport interface AccordionItemTriggerProps extends ComponentProps<typeof AccordionItemTrigger> {}\n","import { styled } from '@stokelp/styled-system/jsx'\nimport { button } from '@stokelp/styled-system/recipes'\nimport type { ComponentProps } from 'react'\n\nexport const Button = styled('button', button)\nexport interface ButtonProps extends ComponentProps<typeof Button> {}\n","import { Checkbox as ArkCheckbox, type CheckboxRootProps } from '@ark-ui/react'\nimport { forwardRef, type ReactNode } from 'react'\nimport { css, cx } from '@stokelp/styled-system/css'\nimport { splitCssProps } from '@stokelp/styled-system/jsx'\nimport { checkbox, type CheckboxVariantProps } from '@stokelp/styled-system/recipes'\nimport type { Assign, JsxStyleProps } from '@stokelp/styled-system/types'\n\nexport interface CheckboxProps extends Assign<JsxStyleProps, CheckboxRootProps>, CheckboxVariantProps {\n children?: ReactNode\n}\n\nexport const Checkbox = forwardRef<HTMLLabelElement, CheckboxProps>((props, ref) => {\n const [variantProps, checkboxProps] = checkbox.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(checkboxProps)\n const { children, className, ...rootProps } = localProps\n const styles = checkbox(variantProps)\n\n return (\n <ArkCheckbox.Root ref={ref} className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n <ArkCheckbox.Control className={styles.control}>\n <ArkCheckbox.Indicator>\n <CheckIcon />\n </ArkCheckbox.Indicator>\n <ArkCheckbox.Indicator indeterminate>\n <MinusIcon />\n </ArkCheckbox.Indicator>\n </ArkCheckbox.Control>\n {children && <ArkCheckbox.Label className={styles.label}>{children}</ArkCheckbox.Label>}\n <ArkCheckbox.HiddenInput />\n </ArkCheckbox.Root>\n )\n})\n\nCheckbox.displayName = 'Checkbox'\n\nconst CheckIcon = () => (\n <svg viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Check Icon</title>\n <path\n d=\"M4.39754 8.43751L2.31254 6.35251L1.60254 7.05751L4.39754 9.85251L10.3975 3.85251L9.69254 3.14751L4.39754 8.43751Z\"\n fill=\"white\"\n />\n </svg>\n)\n\nconst MinusIcon = () => (\n <svg width=\"12\" height=\"13\" viewBox=\"0 0 12 13\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <title>Minus Icon</title>\n <path d=\"M3 6H9V7H3V6Z\" fill=\"white\" />\n </svg>\n)\n","import { Portal } from '@ark-ui/react'\nimport { Dialog as ArkDrawer } from '@ark-ui/react'\nimport { ark } from '@ark-ui/react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { drawer } from '@stokelp/styled-system/recipes'\nimport type { ComponentProps, ComponentPropsWithoutRef, ElementRef } from 'react'\nimport { forwardRef } from 'react'\n\nimport { createStyleContext } from '~/utils/slots'\nimport { Button } from '~/components/button'\n\nconst { withProvider, withContext } = createStyleContext(drawer)\n\nexport const Drawer = withProvider(ArkDrawer.Root, undefined, {\n defaultProps: {\n unmountOnExit: true,\n lazyMount: true,\n },\n})\nexport const DrawerBody = withContext(styled(ark.main), 'body')\nexport const DrawerCloseTrigger = withContext(styled(ArkDrawer.CloseTrigger), 'closeTrigger')\nexport const DrawerFooter = withContext(styled(ark.footer), 'footer')\n\ntype HeaderProps = ComponentPropsWithoutRef<typeof ark.header> & {\n showCloseTrigger?: boolean\n}\n\nconst Header = forwardRef<ElementRef<typeof ark.header>, HeaderProps>(\n ({ children, showCloseTrigger = true, ...props }, ref) => (\n <ark.header {...props} ref={ref}>\n {children}\n {showCloseTrigger && (\n <DrawerCloseTrigger asChild>\n <Button ml=\"auto\" p=\"space-8\" variant=\"tertiary\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.6666 4.27331L11.7266 3.33331L7.99998 7.05998L4.27331 3.33331L3.33331 4.27331L7.05998 7.99998L3.33331 11.7266L4.27331 12.6666L7.99998 8.93998L11.7266 12.6666L12.6666 11.7266L8.93998 7.99998L12.6666 4.27331Z\"\n fill=\"currentColor\"\n />\n </svg>\n </Button>\n </DrawerCloseTrigger>\n )}\n </ark.header>\n ),\n)\nHeader.displayName = 'DrawerHeader'\n\nexport const DrawerHeader = withContext(Header, 'header')\nexport const DrawerTitle = withContext(styled(ArkDrawer.Title), 'title')\nexport const DrawerTrigger = withContext(styled(ArkDrawer.Trigger), 'trigger')\n\nconst DrawerPositioner = withContext(styled(ArkDrawer.Positioner), 'positioner')\nconst DrawerBackdrop = withContext(styled(ArkDrawer.Backdrop), 'backdrop')\n\nconst Content = forwardRef<ElementRef<typeof ArkDrawer.Content>, ComponentPropsWithoutRef<typeof ArkDrawer.Content>>(\n ({ children, ...props }, ref) => (\n <Portal>\n <DrawerBackdrop />\n <DrawerPositioner>\n <ArkDrawer.Content ref={ref} {...props}>\n {children}\n </ArkDrawer.Content>\n </DrawerPositioner>\n </Portal>\n ),\n)\nContent.displayName = ArkDrawer.Content.displayName\n\nexport const DrawerContent = withContext(styled(Content), 'content')\n\nexport interface DrawerProps extends ComponentProps<typeof Drawer> {}\nexport interface DrawerBackdropProps extends ComponentProps<typeof DrawerBackdrop> {}\nexport interface DrawerBodyProps extends ComponentProps<typeof DrawerBody> {}\nexport interface DrawerCloseTriggerProps extends ComponentProps<typeof DrawerCloseTrigger> {}\nexport interface DrawerContentProps extends ComponentProps<typeof DrawerContent> {}\nexport interface DrawerFooterProps extends ComponentProps<typeof DrawerFooter> {}\nexport interface DrawerHeaderProps extends ComponentProps<typeof DrawerHeader> {}\nexport interface DrawerPositionerProps extends ComponentProps<typeof DrawerPositioner> {}\nexport interface DrawerTitleProps extends ComponentProps<typeof DrawerTitle> {}\nexport interface DrawerTriggerProps extends ComponentProps<typeof DrawerTrigger> {}\n","import type { ComponentProps, FC } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { formControl } from '@stokelp/styled-system/recipes'\n\nconst StyledFormControl = styled('div', formControl, {\n defaultProps: {\n role: 'group',\n },\n})\n\nexport interface FormControlProps extends ComponentProps<typeof StyledFormControl> {\n isInvalid?: boolean\n isRequired?: boolean\n}\n\nexport const FormControl: FC<FormControlProps> = ({ isInvalid, isRequired, ...props }) => {\n const invalidProps = {\n ...(isInvalid ? { 'aria-invalid': true } : {}),\n ...(isRequired ? { 'aria-required': true } : {}),\n }\n\n return <StyledFormControl {...invalidProps} {...props} />\n}\n","import type { ComponentProps, FC, ReactNode } from 'react'\n\nimport { splitCssProps, styled } from '@stokelp/styled-system/jsx'\nimport { formLabel } from '@stokelp/styled-system/recipes'\nimport { css, cx } from '@stokelp/styled-system/css'\n\nconst StyledFormLabel = styled('label', formLabel)\n\nexport interface FormLabelProps extends ComponentProps<typeof StyledFormLabel> {\n addon?: ReactNode\n}\n\nexport const FormLabel: FC<FormLabelProps> = props => {\n const [variantProps, labelProps] = formLabel.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(labelProps)\n const { children, className, addon, ...rootProps } = localProps\n const styles = formLabel(variantProps)\n\n return (\n <StyledFormLabel className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n {children}\n {addon ? <styled.span className={styles.addon}>{addon}</styled.span> : null}\n </StyledFormLabel>\n )\n}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { formHelperText } from '@stokelp/styled-system/recipes'\n\nexport const FormHelperText = styled('p', formHelperText, {\n dataAttr: true,\n})\n\nexport interface FormHelperTextProps extends ComponentProps<typeof FormHelperText> {}\n","import { type HTMLStyledProps, styled, type StyledComponent } from '@stokelp/styled-system/jsx'\nimport { heading, type HeadingVariantProps } from '@stokelp/styled-system/recipes'\nimport { useMemo } from 'react'\n\ntype As = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\nexport type HeadingProps = {\n as?: As\n} & HeadingVariantProps &\n HTMLStyledProps<As>\n\nexport const Heading = (props: HeadingProps) => {\n const { as = 'h2', ...localProps } = props\n const Dynamic = useMemo(() => styled(as, heading) as StyledComponent<As>, [as])\n\n return <Dynamic size={as} {...localProps} />\n}\n","import { Switch as ArkSwitch, type SwitchRootProps } from '@ark-ui/react'\nimport { css, cx } from '@stokelp/styled-system/css'\nimport { splitCssProps } from '@stokelp/styled-system/jsx'\nimport { switchRecipe, type SwitchRecipeVariantProps } from '@stokelp/styled-system/recipes'\nimport type { Assign, JsxStyleProps } from '@stokelp/styled-system/types'\nimport { forwardRef, type ReactNode } from 'react'\n\nexport interface SwitchProps extends Assign<JsxStyleProps, SwitchRootProps>, SwitchRecipeVariantProps {\n children?: ReactNode\n}\n\nexport const Switch = forwardRef<HTMLLabelElement, SwitchProps>((props, ref) => {\n const [variantProps, switchProps] = switchRecipe.splitVariantProps(props)\n const [cssProps, localProps] = splitCssProps(switchProps)\n const { children, className, ...rootProps } = localProps\n const styles = switchRecipe(variantProps)\n\n return (\n <ArkSwitch.Root ref={ref} className={cx(styles.root, css(cssProps), className)} {...rootProps}>\n <ArkSwitch.Control className={styles.control}>\n <ArkSwitch.Thumb className={styles.thumb} />\n </ArkSwitch.Control>\n {children ? <ArkSwitch.Label className={styles.label}>{children}</ArkSwitch.Label> : null}\n <ArkSwitch.HiddenInput />\n </ArkSwitch.Root>\n )\n})\n\nSwitch.displayName = 'Switch'\n","import { styled } from '@stokelp/styled-system/jsx'\nimport { text, type TextVariantProps } from '@stokelp/styled-system/recipes'\nimport { type HTMLStyledProps, type StyledComponent } from '@stokelp/styled-system/types'\nimport { useMemo } from 'react'\n\ntype As = 'p' | 'span' | 'div' | 'label' | 'pre'\n\nexport type TextProps = {\n as?: As\n} & TextVariantProps &\n HTMLStyledProps<As>\n\nexport const Text = (props: TextProps) => {\n const { as = 'p', ...localProps } = props\n const Dynamic = useMemo(() => styled(as, text) as StyledComponent<As>, [as])\n\n return <Dynamic {...localProps} />\n}\n","import { ark } from '@ark-ui/react'\nimport type { ComponentProps } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { textarea } from '@stokelp/styled-system/recipes'\n\nexport const Textarea = styled(ark.textarea, textarea)\nexport interface TextareaProps extends ComponentProps<typeof Textarea> {}\n","import { Tabs as ArkTab } from '@ark-ui/react'\nimport { ComponentProps, type ComponentPropsWithoutRef, type ElementRef, forwardRef } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { tabs } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots.tsx'\n\nconst { withProvider, withContext } = createStyleContext(tabs)\n\nexport const Tabs = withProvider(styled(ArkTab.Root), 'root', {\n defaultProps: {\n lazyMount: true,\n },\n})\nexport const TabsContent = withContext(styled(ArkTab.Content), 'content')\nexport const TabsTrigger = withContext(styled(ArkTab.Trigger), 'trigger')\n\nconst TabsIndicator = withContext(styled(ArkTab.Indicator), 'indicator')\n\nconst List = forwardRef<ElementRef<typeof ArkTab.List>, ComponentPropsWithoutRef<typeof ArkTab.List>>(\n ({ children, ...props }, ref) => (\n <ArkTab.List ref={ref} {...props}>\n {children}\n <TabsIndicator />\n </ArkTab.List>\n ),\n)\nList.displayName = ArkTab.List.displayName\n\nexport const TabsList = withContext(styled(List), 'list')\n\nexport interface TabsProps extends ComponentProps<typeof Tabs> {}\nexport interface TabsContentProps extends ComponentProps<typeof TabsContent> {}\nexport interface TabsIndicatorProps extends ComponentProps<typeof TabsIndicator> {}\nexport interface TabsListProps extends ComponentProps<typeof TabsList> {}\nexport interface TabsTriggerProps extends ComponentProps<typeof TabsTrigger> {}\n","import type { FC, ReactElement, ReactNode } from 'react'\n\nexport interface ConditionalWrapperProps {\n readonly when: boolean\n readonly children: ReactNode\n readonly wrapper: (children: ReactNode) => ReactNode\n}\n\nexport const ConditionalWrapper: FC<ConditionalWrapperProps> = ({ children, when, wrapper }) =>\n when === true ? (wrapper(children) as ReactElement) : (children as ReactElement)\n","import { Portal } from '@ark-ui/react'\nimport type { FC } from 'react'\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { Select as ArkSelect, type SelectRootProps } from '@ark-ui/react'\n\nimport { select } from '@stokelp/styled-system/recipes'\nimport { createStyleContext } from '~/utils/slots'\n\nimport { ConditionalWrapper } from '~/shared/ConditionalWrapper'\nimport { Text } from '~/components'\nimport { HTMLStyledProps, RecipeVariantProps } from '@stokelp/styled-system/types'\n\nconst { withProvider, withContext } = createStyleContext(select)\n\nconst Root = withProvider(styled(ArkSelect.Root), 'root', {\n defaultProps: {\n loopFocus: true,\n },\n})\n\nconst ClearTrigger = withContext(styled(ArkSelect.ClearTrigger), 'clearTrigger')\nconst Content = withContext(styled(ArkSelect.Content), 'content')\nconst Control = withContext(styled(ArkSelect.Control), 'control')\nconst Indicator = withContext(styled(ArkSelect.Indicator), 'indicator')\nconst Item = withContext(styled(ArkSelect.Item), 'item')\nconst ItemIndicator = withContext(styled(ArkSelect.ItemIndicator), 'itemIndicator')\nconst ItemText = withContext(styled(ArkSelect.ItemText), 'itemText')\nconst Positioner = withContext(styled(ArkSelect.Positioner), 'positioner')\nconst Trigger = withContext(styled(ArkSelect.Trigger), 'trigger')\nconst ValueText = withContext(styled(ArkSelect.ValueText), 'valueText')\n\nexport type SelectItem = { value: string; label: string; disabled?: boolean }\n\nexport type SelectProps = Omit<SelectRootProps<string | object>, 'items'> & {\n items: SelectItem[]\n emptyLabel?: string\n placeholder?: string\n usePortal?: boolean\n} & HTMLStyledProps<'div'> &\n RecipeVariantProps<typeof select>\n\nexport const Select: FC<SelectProps> = ({\n items,\n placeholder,\n emptyLabel,\n usePortal = true,\n positioning,\n ...props\n}) => {\n return (\n <Root\n lazyMount\n unmountOnExit\n items={items}\n positioning={{ sameWidth: true, gutter: 0, ...positioning }}\n data-recipe=\"select\"\n {...props}\n >\n <Control>\n <Trigger>\n <ValueText truncate placeholder={placeholder} />\n <ClearTrigger asChild>\n <styled.svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M9.99996 1.66669C5.39163 1.66669 1.66663 5.39169 1.66663 10C1.66663 14.6084 5.39163 18.3334 9.99996 18.3334C14.6083 18.3334 18.3333 14.6084 18.3333 10C18.3333 5.39169 14.6083 1.66669 9.99996 1.66669ZM9.99996 16.6667C6.32496 16.6667 3.33329 13.675 3.33329 10C3.33329 6.32502 6.32496 3.33335 9.99996 3.33335C13.675 3.33335 16.6666 6.32502 16.6666 10C16.6666 13.675 13.675 16.6667 9.99996 16.6667ZM12.9916 5.83335L9.99996 8.82502L7.00829 5.83335L5.83329 7.00835L8.82496 10L5.83329 12.9917L7.00829 14.1667L9.99996 11.175L12.9916 14.1667L14.1666 12.9917L11.175 10L14.1666 7.00835L12.9916 5.83335Z\"\n fill=\"currentColor\"\n />\n </styled.svg>\n </ClearTrigger>\n <Indicator asChild>\n <styled.svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M7.41 8.29498L12 12.875L16.59 8.29498L18 9.70498L12 15.705L6 9.70498L7.41 8.29498Z\"\n fill=\"currentColor\"\n />\n </styled.svg>\n </Indicator>\n </Trigger>\n </Control>\n <ConditionalWrapper when={usePortal} wrapper={children => <Portal>{children}</Portal>}>\n <Positioner>\n <Content>\n {items.length === 0 ? (\n <Text px=\"space-8\" textAlign=\"center\">\n {emptyLabel ?? 'Aucun résultat'}\n </Text>\n ) : (\n items.map(item => (\n <Item key={item.value} item={item}>\n <ItemText truncate>{item.label}</ItemText>\n {props.multiple ? <ItemIndicator>✓</ItemIndicator> : null}\n </Item>\n ))\n )}\n </Content>\n </Positioner>\n </ConditionalWrapper>\n <ArkSelect.HiddenSelect />\n </Root>\n )\n}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { input } from '@stokelp/styled-system/recipes'\n\nexport const Input = styled('input', input, {\n dataAttr: true,\n})\n\nexport interface InputProps extends ComponentProps<typeof Input> {}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { inputAddon } from '@stokelp/styled-system/recipes'\n\nexport const InputAddon = styled('div', inputAddon, {\n dataAttr: true,\n})\n\nexport interface InputAddonProps extends ComponentProps<typeof InputAddon> {}\n","import type { ComponentProps } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { inputGroup } from '@stokelp/styled-system/recipes'\n\nexport const InputGroup = styled('div', inputGroup)\n\nexport interface InputGroupProps extends ComponentProps<typeof InputGroup> {}\n","import { useMemo } from 'react'\n\nimport { styled } from '@stokelp/styled-system/jsx'\nimport { type HTMLStyledProps, type StyledComponent } from '@stokelp/styled-system/types'\n\ntype As = 'span' | 'div' | 'nav' | 'aside' | 'ul' | 'li' | 'main' | 'section' | 'header' | 'footer'\n\nexport type BoxProps = {\n as?: As\n} & HTMLStyledProps<As>\n\nexport const Box = (props: BoxProps) => {\n const { as = 'div', ...localProps } = props\n const Component = useMemo(() => styled(as) as StyledComponent<As>, [as])\n\n return <Component {...localProps} />\n}\n","export const breakpoints = {\n xl: '1536px',\n lg: '1200px',\n md: '900px',\n sm: '600px',\n} as const\n","export const conditions = {\n extend: {\n checked: '&:where(:checked, [data-checked], [aria-checked=true], [data-state=checked])',\n closed: '&:where([data-state=closed])',\n collapsed: '&:where([aria-collapsed=true], [data-collapsed], [data-state=\"collapsed\"])',\n current: '&:is([data-current])',\n focus: `&:where(:focus, [data-focus], [data-focused])`,\n groupHover: '[role=group]:where(:hover, [data-hover]) &',\n hidden: '&:where([hidden])',\n highlighted: '&:where([data-highlighted])',\n hover: `&:where(:hover, [data-hover], [data-hovered])`,\n indeterminate: '&:where(:indeterminate, [data-indeterminate], [aria-checked=mixed], [data-state=indeterminate])',\n invalid: '&:where(:invalid, [data-invalid], [aria-invalid=true])',\n open: '&:where([open], [data-state=open])',\n placeholderShown: '&:where(:placeholder-shown, [data-placeholder-shown])',\n today: '&:where([data-today])',\n underValue: '&:where([data-state=\"under-value\"])',\n },\n}\n","export const containerSizes = {\n '2xl': '672px',\n '3xl': '768px',\n '4xl': '896px',\n '5xl': '1024px',\n '6xl': '1152px',\n '7xl': '1280px',\n '8xl': '1440px',\n lg: '512px',\n md: '448px',\n sm: '384px',\n xl: '576px',\n xs: '320px',\n} as const\n","import { defineKeyframes } from '@pandacss/dev'\n\nexport const keyframes = defineKeyframes({\n blob: {\n '0%': {\n rotate: '0deg',\n },\n '100%': {\n rotate: '359deg',\n },\n },\n bounce: {\n '0%, 100%': {\n animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n transform: 'translateY(-25%)',\n },\n '50%': {\n animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n transform: 'none',\n },\n },\n 'fade-in': {\n from: { opacity: '0' },\n to: { opacity: '1' },\n },\n 'fade-out': {\n from: { opacity: '1' },\n to: { opacity: '0' },\n },\n fadeIn: {\n '0%': { opacity: '0', transform: 'translateY(-4px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n fadeInFromRight: {\n '0%': { opacity: '0', transform: 'translateX(100%)' },\n '100%': { opacity: '1', transform: 'translateX(0)' },\n },\n fadeInSkew: {\n '0%': { opacity: '0', transform: 'translateY(-4px) rotateX(-1deg) scale(0.95)', transformStyle: 'preserve-3d' },\n '100%': { opacity: '1', transform: 'translateY(0) rotateX(0) scale(1)', transformStyle: 'preserve-3d' },\n },\n fadeOut: {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(-4px)' },\n },\n fadeOutFromRight: {\n '0%': { opacity: '1', transform: 'translateX(0)' },\n '100%': { opacity: '0', transform: 'translateX(100%)' },\n },\n fadeOutSkew: {\n '0%': { opacity: '1', transform: 'translateY(0) rotateX(0) scale(1)', transformStyle: 'preserve-3d' },\n '100%': { opacity: '0', transform: 'translateY(-4px) rotateX(-1deg) scale(0.95)', transformStyle: 'preserve-3d' },\n },\n ping: {\n '75%, 100%': {\n opacity: '0',\n transform: 'scale(2)',\n },\n },\n pulse: {\n '50%': {\n opacity: '.5',\n },\n },\n 'skeleton-pulse': {\n '50%': { opacity: '0.5' },\n },\n 'slide-in': {\n '0%': { opacity: '0', transform: 'translateY(64px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n 'slide-in-left': {\n '0%': { transform: 'translateX(-100%)' },\n '100%': { transform: 'translateX(0%)' },\n },\n 'slide-in-modal': {\n '0%': { opacity: '0', transform: 'translateY(64px) scale(0.9)' },\n '100%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n },\n 'slide-in-right': {\n '0%': { transform: 'translateX(100%)' },\n '100%': { transform: 'translateX(0%)' },\n },\n 'slide-out': {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(64px)' },\n },\n 'slide-out-left': {\n '0%': { transform: 'translateX(0%)' },\n '100%': { transform: 'translateX(-100%)' },\n },\n 'slide-out-modal': {\n '0%': { opacity: '1', transform: 'translateY(0) scale(1)' },\n '100%': { opacity: '0', transform: 'translateY(64px) scale(0.9)' },\n },\n\n 'slide-out-right': {\n '0%': { transform: 'translateX(0%)' },\n '100%': { transform: 'translateX(100%)' },\n },\n slideInFromBottom: {\n '0%': { opacity: '0', transform: 'translateY(4px)' },\n '100%': { opacity: '1', transform: 'translateY(0)' },\n },\n slideOutToBottom: {\n '0%': { opacity: '1', transform: 'translateY(0)' },\n '100%': { opacity: '0', transform: 'translateY(4px)' },\n },\n 'collapse-in': {\n '0%': { height: '0px' },\n '100%': { height: 'var(--height)' },\n },\n 'collapse-out': {\n '0%': { height: 'var(--height)' },\n '100%': { height: '0px' },\n },\n spin: {\n to: {\n transform: 'rotate(360deg)',\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const buttonRecipe = defineRecipe({\n base: {\n _focusVisible: {\n ring: '2px solid {colors.primary.200}',\n ringOffset: 'space-2',\n },\n alignItems: 'center',\n cursor: {\n _disabled: 'not-allowed',\n base: 'pointer',\n },\n opacity: {\n _disabled: 0.32,\n },\n display: 'flex',\n flexDirection: 'row',\n gap: 'space-4',\n justifyContent: 'center',\n transition: 'color, background-color, border-color, opacity',\n transitionDuration: 'fast',\n fontWeight: 'bold',\n fontFamily: 'satoshi',\n },\n className: 'button',\n defaultVariants: {\n size: 'lg',\n variant: 'primary',\n severity: 'none',\n },\n description: 'The styles for the Button component',\n jsx: ['Button'],\n variants: {\n size: {\n lg: {\n borderRadius: 'radius-60',\n px: 'space-20',\n py: 'space-8',\n textStyle: 'body.lg',\n },\n md: {\n borderRadius: 'radius-60',\n px: 'space-16',\n py: 'space-6',\n textStyle: 'body.md',\n },\n sm: {\n borderRadius: 'radius-60',\n px: 'space-12',\n py: 'space-4',\n textStyle: 'body.sm',\n },\n },\n variant: {\n primary: {\n bg: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n _active: 'primary.800',\n _hover: 'primary.600',\n base: 'primary.500',\n },\n color: 'white',\n },\n secondary: {\n bg: {\n _disabled: {\n _hover: 'white',\n _active: 'white',\n base: 'white',\n },\n _active: 'primary.600',\n _hover: 'primary.500',\n base: 'white',\n },\n boxShadow: 'inset 0 0 0 1px {colors.primary.500}',\n color: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n base: 'primary.500',\n _hover: 'white',\n _active: 'white',\n },\n },\n tertiary: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'primary.200',\n _hover: 'primary.100',\n base: 'transparent',\n },\n color: {\n _disabled: {\n _hover: 'primary.500',\n _active: 'primary.500',\n base: 'primary.500',\n },\n base: 'primary.500',\n _hover: 'primary.600',\n _active: 'primary.600',\n },\n },\n },\n severity: {\n none: {},\n danger: {},\n },\n },\n compoundVariants: [\n {\n variant: 'primary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n _active: 'error.800',\n _hover: 'error.700',\n base: 'error.500',\n },\n },\n },\n {\n variant: 'secondary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'error.700',\n _hover: 'error.500',\n base: 'transparent',\n },\n boxShadow: {\n base: 'inset 0 0 0 1px {colors.error.500}',\n _active: 'inset 0 0 0 1px {colors.error.700}',\n },\n color: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n base: 'error.500',\n _hover: 'white',\n _active: 'white',\n },\n },\n },\n {\n variant: 'tertiary',\n severity: 'danger',\n css: {\n bg: {\n _disabled: {\n _hover: 'transparent',\n _active: 'transparent',\n base: 'transparent',\n },\n _active: 'error.200',\n _hover: 'error.100',\n base: 'transparent',\n },\n color: {\n _disabled: {\n _hover: 'error.500',\n _active: 'error.500',\n base: 'error.500',\n },\n base: 'error.500',\n _hover: 'error.700',\n _active: 'error.700',\n },\n },\n },\n ],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const headingRecipe = defineRecipe({\n className: 'heading',\n defaultVariants: {\n size: 'h2',\n },\n jsx: ['Heading'],\n base: {\n fontFamily: 'cabinet',\n color: 'text.heading',\n },\n variants: {\n italic: {\n true: {\n fontStyle: 'italic',\n },\n },\n underline: {\n true: {\n textDecoration: 'underline',\n },\n },\n size: {\n h1: { textStyle: 'heading.h1' },\n h2: { textStyle: 'heading.h2' },\n h3: { textStyle: 'heading.h3' },\n h4: { textStyle: 'heading.h4' },\n h5: { textStyle: 'heading.h5' },\n h6: { textStyle: 'heading.h6' },\n },\n },\n})\n","// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n parts: (...values) => {\n if (isEmpty(parts)) {\n return createAnatomy(name, values);\n }\n throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n },\n extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n rename: (newName) => createAnatomy(newName, parts),\n keys: () => parts,\n build: () => [...new Set(parts)].reduce(\n (prev, part) => Object.assign(prev, {\n [part]: {\n selector: [\n `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n ].join(\", \"),\n attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n }\n }),\n {}\n )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\nexport {\n createAnatomy\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/array.ts\nfunction toArray(v) {\n if (!v)\n return [];\n return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, item) => v.filter((t) => t !== item);\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar addOrRemove = (v, item) => {\n if (has(v, item))\n return remove(v, item);\n return add(v, item);\n};\nfunction clear(v) {\n while (v.length > 0)\n v.pop();\n return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n const next2 = idx + step;\n const len = v.length;\n const last2 = len - 1;\n if (idx === -1)\n return step > 0 ? 0 : last2;\n if (next2 < 0)\n return loop ? last2 : 0;\n if (next2 >= len)\n return loop ? 0 : idx > len ? len : idx;\n return next2;\n}\nfunction next(v, idx, opts = {}) {\n return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n return v[prevIndex(v, index, opts)];\n}\nvar chunk = (v, size) => {\n const res = [];\n return v.reduce((rows, value, index) => {\n if (index % size === 0)\n rows.push([value]);\n else\n last(rows)?.push(value);\n return rows;\n }, res);\n};\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isEqual = (a, b) => {\n if (Object.is(a, b))\n return true;\n if (a == null && b != null || a != null && b == null)\n return false;\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b);\n }\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString();\n }\n if (isArrayLike(a) && isArrayLike(b)) {\n return Array.from(a).toString() === Array.from(b).toString();\n }\n if (!(typeof a === \"object\") || !(typeof b === \"object\"))\n return false;\n const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n const length = keys.length;\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i]);\n if (!hasKey)\n return false;\n }\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n if (!isEqual(a[key], b[key]))\n return false;\n }\n return true;\n};\n\n// src/functions.ts\nvar runIfFn = (v, ...a) => {\n const res = typeof v === \"function\" ? v(...a) : v;\n return res ?? void 0;\n};\nvar cast = (v) => v;\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n fns.forEach(function(fn) {\n fn?.(...a);\n });\n};\nvar uuid = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n return id.toString(36);\n };\n})();\nfunction match(key, record, ...args) {\n if (key in record) {\n const fn = record[key];\n return typeof fn === \"function\" ? fn(...args) : fn;\n }\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n Error.captureStackTrace?.(error, match);\n throw error;\n}\nvar tryCatch = (fn, fallback) => {\n try {\n return fn();\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch);\n }\n return fallback?.();\n }\n};\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObject = (v) => !(v == null || typeof v !== \"object\" || isArray(v));\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\n\n// src/object.ts\nfunction compact(obj) {\n if (!isPlainObject(obj) || obj === void 0) {\n return obj;\n }\n const keys = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n const filtered = {};\n for (const key of keys) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = compact(value);\n }\n }\n return filtered;\n}\nfunction json(value) {\n return JSON.parse(JSON.stringify(value));\n}\nvar isPlainObject = (value) => {\n return value && typeof value === \"object\" && value.constructor === Object;\n};\nfunction pick(obj, keys) {\n const filtered = {};\n for (const key of keys) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\n// src/split-props.ts\nfunction splitProps(props, keys) {\n const rest = {};\n const result = {};\n const keySet = new Set(keys);\n for (const key in props) {\n if (keySet.has(key)) {\n result[key] = props[key];\n } else {\n rest[key] = props[key];\n }\n }\n return [result, rest];\n}\nvar createSplitProps = (keys) => {\n return function split(props) {\n return splitProps(props, keys);\n };\n};\n\n// src/warning.ts\nfunction warn(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m);\n }\n}\nfunction invariant(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m);\n }\n}\nexport {\n add,\n addOrRemove,\n callAll,\n cast,\n chunk,\n clear,\n compact,\n createSplitProps,\n first,\n fromLength,\n has,\n hasProp,\n invariant,\n isArray,\n isBoolean,\n isDev,\n isEmpty,\n isEqual,\n isFunction,\n isNull,\n isNumber,\n isObject,\n isString,\n json,\n last,\n match,\n next,\n nextIndex,\n noop,\n pick,\n prev,\n prevIndex,\n remove,\n removeAt,\n runIfFn,\n splitProps,\n toArray,\n tryCatch,\n uuid,\n warn\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/accordion.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"accordion\").parts(\"root\", \"item\", \"itemTrigger\", \"itemContent\", \"itemIndicator\");\nvar parts = anatomy.build();\n\n// src/accordion.connect.ts\nimport { getEventKey } from \"@zag-js/dom-event\";\nimport { dataAttr, isSafari } from \"@zag-js/dom-query\";\n\n// src/accordion.dom.ts\nimport { nextById, prevById, queryAll, createScope } from \"@zag-js/dom-query\";\nimport { first, last } from \"@zag-js/utils\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `accordion:${ctx.id}`,\n getItemId: (ctx, value) => ctx.ids?.item?.(value) ?? `accordion:${ctx.id}:item:${value}`,\n getItemContentId: (ctx, value) => ctx.ids?.content?.(value) ?? `accordion:${ctx.id}:content:${value}`,\n getItemTriggerId: (ctx, value) => ctx.ids?.trigger?.(value) ?? `accordion:${ctx.id}:trigger:${value}`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getTriggers: (ctx) => {\n const ownerId = CSS.escape(dom.getRootId(ctx));\n const selector = `[aria-controls][data-ownedby='${ownerId}']:not([disabled])`;\n return queryAll(dom.getRootEl(ctx), selector);\n },\n getFirstTriggerEl: (ctx) => first(dom.getTriggers(ctx)),\n getLastTriggerEl: (ctx) => last(dom.getTriggers(ctx)),\n getNextTriggerEl: (ctx, id) => nextById(dom.getTriggers(ctx), dom.getItemTriggerId(ctx, id)),\n getPrevTriggerEl: (ctx, id) => prevById(dom.getTriggers(ctx), dom.getItemTriggerId(ctx, id))\n});\n\n// src/accordion.connect.ts\nfunction connect(state, send, normalize) {\n const focusedValue = state.context.focusedValue;\n const value = state.context.value;\n const multiple = state.context.multiple;\n function setValue(value2) {\n let nextValue = value2;\n if (multiple && nextValue.length > 1) {\n nextValue = [nextValue[0]];\n }\n send({ type: \"VALUE.SET\", value: nextValue });\n }\n function getItemState(props2) {\n return {\n expanded: value.includes(props2.value),\n focused: focusedValue === props2.value,\n disabled: Boolean(props2.disabled ?? state.context.disabled)\n };\n }\n return {\n focusedValue,\n value,\n setValue,\n getItemState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-orientation\": state.context.orientation\n }),\n getItemProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.item.attrs,\n dir: state.context.dir,\n id: dom.getItemId(state.context, props2.value),\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(itemState.focused),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemContentProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemContent.attrs,\n dir: state.context.dir,\n role: \"region\",\n id: dom.getItemContentId(state.context, props2.value),\n \"aria-labelledby\": dom.getItemTriggerId(state.context, props2.value),\n hidden: !itemState.expanded,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-focus\": dataAttr(itemState.focused),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemIndicator.attrs,\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-focus\": dataAttr(itemState.focused),\n \"data-orientation\": state.context.orientation\n });\n },\n getItemTriggerProps(props2) {\n const { value: value2 } = props2;\n const itemState = getItemState(props2);\n return normalize.button({\n ...parts.itemTrigger.attrs,\n type: \"button\",\n dir: state.context.dir,\n id: dom.getItemTriggerId(state.context, value2),\n \"aria-controls\": dom.getItemContentId(state.context, value2),\n \"aria-expanded\": itemState.expanded,\n disabled: itemState.disabled,\n \"data-orientation\": state.context.orientation,\n \"aria-disabled\": itemState.disabled,\n \"data-state\": itemState.expanded ? \"open\" : \"closed\",\n \"data-ownedby\": dom.getRootId(state.context),\n onFocus() {\n if (itemState.disabled)\n return;\n send({ type: \"TRIGGER.FOCUS\", value: value2 });\n },\n onBlur() {\n if (itemState.disabled)\n return;\n send(\"TRIGGER.BLUR\");\n },\n onClick(event) {\n if (itemState.disabled)\n return;\n if (isSafari()) {\n event.currentTarget.focus();\n }\n send({ type: \"TRIGGER.CLICK\", value: value2 });\n },\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n if (itemState.disabled)\n return;\n const keyMap = {\n ArrowDown() {\n if (state.context.isHorizontal)\n return;\n send({ type: \"GOTO.NEXT\", value: value2 });\n },\n ArrowUp() {\n if (state.context.isHorizontal)\n return;\n send({ type: \"GOTO.PREV\", value: value2 });\n },\n ArrowRight() {\n if (!state.context.isHorizontal)\n return;\n send({ type: \"GOTO.NEXT\", value: value2 });\n },\n ArrowLeft() {\n if (!state.context.isHorizontal)\n return;\n send({ type: \"GOTO.PREV\", value: value2 });\n },\n Home() {\n send({ type: \"GOTO.FIRST\", value: value2 });\n },\n End() {\n send({ type: \"GOTO.LAST\", value: value2 });\n }\n };\n const key = getEventKey(event, {\n dir: state.context.dir,\n orientation: state.context.orientation\n });\n const exec = keyMap[key];\n if (exec) {\n exec(event);\n event.preventDefault();\n }\n }\n });\n }\n };\n}\n\n// src/accordion.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { add, compact, isEqual, remove, warn } from \"@zag-js/utils\";\nvar { and, not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"accordion\",\n initial: \"idle\",\n context: {\n focusedValue: null,\n value: [],\n collapsible: false,\n multiple: false,\n orientation: \"vertical\",\n ...ctx\n },\n watch: {\n value: \"coarseValue\",\n multiple: \"coarseValue\"\n },\n created: \"coarseValue\",\n computed: {\n isHorizontal: (ctx2) => ctx2.orientation === \"horizontal\"\n },\n on: {\n \"VALUE.SET\": {\n actions: [\"setValue\"]\n }\n },\n states: {\n idle: {\n on: {\n \"TRIGGER.FOCUS\": {\n target: \"focused\",\n actions: \"setFocusedValue\"\n }\n }\n },\n focused: {\n on: {\n \"GOTO.NEXT\": {\n actions: \"focusNextTrigger\"\n },\n \"GOTO.PREV\": {\n actions: \"focusPrevTrigger\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: and(\"isExpanded\", \"canToggle\"),\n actions: [\"collapse\"]\n },\n {\n guard: not(\"isExpanded\"),\n actions: [\"expand\"]\n }\n ],\n \"GOTO.FIRST\": {\n actions: \"focusFirstTrigger\"\n },\n \"GOTO.LAST\": {\n actions: \"focusLastTrigger\"\n },\n \"TRIGGER.BLUR\": {\n target: \"idle\",\n actions: \"clearFocusedValue\"\n }\n }\n }\n }\n },\n {\n guards: {\n canToggle: (ctx2) => !!ctx2.collapsible || !!ctx2.multiple,\n isExpanded: (ctx2, evt) => ctx2.value.includes(evt.value)\n },\n actions: {\n collapse(ctx2, evt) {\n const next = ctx2.multiple ? remove(ctx2.value, evt.value) : [];\n set.value(ctx2, ctx2.multiple ? next : []);\n },\n expand(ctx2, evt) {\n const next = ctx2.multiple ? add(ctx2.value, evt.value) : [evt.value];\n set.value(ctx2, next);\n },\n focusFirstTrigger(ctx2) {\n dom.getFirstTriggerEl(ctx2)?.focus();\n },\n focusLastTrigger(ctx2) {\n dom.getLastTriggerEl(ctx2)?.focus();\n },\n focusNextTrigger(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getNextTriggerEl(ctx2, ctx2.focusedValue);\n triggerEl?.focus();\n },\n focusPrevTrigger(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getPrevTriggerEl(ctx2, ctx2.focusedValue);\n triggerEl?.focus();\n },\n setFocusedValue(ctx2, evt) {\n set.focusedValue(ctx2, evt.value);\n },\n clearFocusedValue(ctx2) {\n set.focusedValue(ctx2, null);\n },\n setValue(ctx2, evt) {\n set.value(ctx2, evt.value);\n },\n coarseValue(ctx2) {\n if (!ctx2.multiple && ctx2.value.length > 1) {\n warn(`The value of accordion should be a single value when multiple is false.`);\n ctx2.value = [ctx2.value[0]];\n }\n }\n }\n }\n );\n}\nvar invoke = {\n change(ctx) {\n ctx.onValueChange?.({ value: Array.from(ctx.value) });\n },\n focusChange(ctx) {\n ctx.onFocusChange?.({ value: ctx.focusedValue });\n }\n};\nvar set = {\n value(ctx, value) {\n if (isEqual(ctx.value, value))\n return;\n ctx.value = value;\n invoke.change(ctx);\n },\n focusedValue(ctx, value) {\n if (isEqual(ctx.focusedValue, value))\n return;\n ctx.focusedValue = value;\n invoke.focusChange(ctx);\n }\n};\n\n// src/accordion.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"collapsible\",\n \"dir\",\n \"disabled\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"multiple\",\n \"onFocusChange\",\n \"onValueChange\",\n \"orientation\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"value\", \"disabled\"]);\nvar splitItemProps = createSplitProps(itemProps);\nexport {\n anatomy,\n connect,\n itemProps,\n machine,\n props,\n splitItemProps,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/checkbox.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"checkbox\").parts(\"root\", \"label\", \"control\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/checkbox.connect.ts\nimport { dataAttr, visuallyHiddenStyle } from \"@zag-js/dom-query\";\n\n// src/checkbox.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `checkbox:${ctx.id}`,\n getLabelId: (ctx) => ctx.ids?.label ?? `checkbox:${ctx.id}:label`,\n getControlId: (ctx) => ctx.ids?.control ?? `checkbox:${ctx.id}:control`,\n getHiddenInputId: (ctx) => ctx.ids?.hiddenInput ?? `checkbox:${ctx.id}:hidden`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx))\n});\n\n// src/checkbox.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const focused = !disabled && state.context.focused;\n const checked = state.context.isChecked;\n const indeterminate = state.context.isIndeterminate;\n const readOnly = state.context.readOnly;\n const dataAttrs = {\n \"data-active\": dataAttr(state.context.active),\n \"data-focus\": dataAttr(focused),\n \"data-readonly\": dataAttr(readOnly),\n \"data-hover\": dataAttr(state.context.hovered),\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": indeterminate ? \"indeterminate\" : state.context.checked ? \"checked\" : \"unchecked\",\n \"data-invalid\": dataAttr(state.context.invalid)\n };\n return {\n checked,\n disabled,\n indeterminate,\n focused,\n checkedState: state.context.checked,\n setChecked(checked2) {\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n },\n toggleChecked() {\n send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n },\n rootProps: normalize.label({\n ...parts.root.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onPointerMove() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n },\n onPointerLeave() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n },\n onClick(event) {\n if (event.target === dom.getHiddenInputEl(state.context)) {\n event.stopPropagation();\n }\n }\n }),\n labelProps: normalize.element({\n ...parts.label.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context)\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"aria-hidden\": true\n }),\n indicatorProps: normalize.element({\n ...parts.indicator.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n hidden: !indeterminate && !state.context.checked\n }),\n hiddenInputProps: normalize.input({\n id: dom.getHiddenInputId(state.context),\n type: \"checkbox\",\n required: state.context.required,\n defaultChecked: checked,\n disabled,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"aria-invalid\": state.context.invalid,\n name: state.context.name,\n form: state.context.form,\n value: state.context.value,\n style: visuallyHiddenStyle,\n onChange(event) {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n const checked2 = event.currentTarget.checked;\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n }\n })\n };\n}\n\n// src/checkbox.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackFocusVisible, trackPress } from \"@zag-js/dom-event\";\nimport { dispatchInputCheckedEvent, trackFormControl } from \"@zag-js/form-utils\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"checkbox\",\n initial: \"ready\",\n context: {\n checked: false,\n value: \"on\",\n disabled: false,\n ...ctx,\n fieldsetDisabled: false\n },\n watch: {\n disabled: \"removeFocusIfNeeded\",\n checked: \"syncInputElement\"\n },\n activities: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n on: {\n \"CHECKED.TOGGLE\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"toggleChecked\"]\n }\n ],\n \"CHECKED.SET\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"setChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"setChecked\"]\n }\n ],\n \"CONTEXT.SET\": {\n actions: [\"setContext\"]\n }\n },\n computed: {\n isIndeterminate: (ctx2) => isIndeterminate(ctx2.checked),\n isChecked: (ctx2) => isChecked(ctx2.checked),\n isDisabled: (ctx2) => !!ctx2.disabled || ctx2.fieldsetDisabled\n },\n states: {\n ready: {}\n }\n },\n {\n guards: {\n isTrusted: (_ctx, evt) => !!evt.isTrusted\n },\n activities: {\n trackPressEvent(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackPress({\n pointerNode: dom.getRootEl(ctx2),\n keyboardNode: dom.getHiddenInputEl(ctx2),\n isValidKey: (event) => event.key === \" \",\n onPress: () => ctx2.active = false,\n onPressStart: () => ctx2.active = true,\n onPressEnd: () => ctx2.active = false\n });\n },\n trackFocusVisible(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackFocusVisible(dom.getHiddenInputEl(ctx2), {\n onFocus: () => ctx2.focused = true,\n onBlur: () => ctx2.focused = false\n });\n },\n trackFormControlState(ctx2, _evt, { send, initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n send({ type: \"CHECKED.SET\", checked: !!initialContext.checked });\n }\n });\n }\n },\n actions: {\n setContext(ctx2, evt) {\n Object.assign(ctx2, evt.context);\n },\n syncInputElement(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n if (!inputEl)\n return;\n inputEl.checked = ctx2.isChecked;\n inputEl.indeterminate = ctx2.isIndeterminate;\n },\n removeFocusIfNeeded(ctx2) {\n if (ctx2.disabled && ctx2.focused) {\n ctx2.focused = false;\n }\n },\n setChecked(ctx2, evt) {\n set.checked(ctx2, evt.checked);\n },\n toggleChecked(ctx2) {\n const checked = isIndeterminate(ctx2.checked) ? true : !ctx2.checked;\n set.checked(ctx2, checked);\n },\n dispatchChangeEvent(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n dispatchInputCheckedEvent(inputEl, { checked: isChecked(ctx2.checked) });\n }\n }\n }\n );\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction isChecked(checked) {\n return isIndeterminate(checked) ? false : !!checked;\n}\nvar invoke = {\n change: (ctx) => {\n ctx.onCheckedChange?.({ checked: ctx.checked });\n }\n};\nvar set = {\n checked: (ctx, checked) => {\n if (isEqual(ctx.checked, checked))\n return;\n ctx.checked = checked;\n invoke.change(ctx);\n }\n};\n\n// src/checkbox.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"checked\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"name\",\n \"onCheckedChange\",\n \"readOnly\",\n \"required\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/dialog.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"dialog\").parts(\n \"trigger\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\"\n);\nvar parts = anatomy.build();\n\n// src/dialog.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getPositionerId: (ctx) => ctx.ids?.positioner ?? `dialog:${ctx.id}:positioner`,\n getBackdropId: (ctx) => ctx.ids?.backdrop ?? `dialog:${ctx.id}:backdrop`,\n getContentId: (ctx) => ctx.ids?.content ?? `dialog:${ctx.id}:content`,\n getTriggerId: (ctx) => ctx.ids?.trigger ?? `dialog:${ctx.id}:trigger`,\n getTitleId: (ctx) => ctx.ids?.title ?? `dialog:${ctx.id}:title`,\n getDescriptionId: (ctx) => ctx.ids?.description ?? `dialog:${ctx.id}:description`,\n getCloseTriggerId: (ctx) => ctx.ids?.closeTrigger ?? `dialog:${ctx.id}:close`,\n getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getPositionerEl: (ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getBackdropEl: (ctx) => dom.getById(ctx, dom.getBackdropId(ctx)),\n getTriggerEl: (ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getTitleEl: (ctx) => dom.getById(ctx, dom.getTitleId(ctx)),\n getDescriptionEl: (ctx) => dom.getById(ctx, dom.getDescriptionId(ctx)),\n getCloseTriggerEl: (ctx) => dom.getById(ctx, dom.getCloseTriggerId(ctx))\n});\n\n// src/dialog.connect.ts\nfunction connect(state, send, normalize) {\n const ariaLabel = state.context[\"aria-label\"];\n const open = state.matches(\"open\");\n const rendered = state.context.renderedElements;\n return {\n open,\n setOpen(nextOpen) {\n if (nextOpen === open)\n return;\n send(nextOpen ? \"OPEN\" : \"CLOSE\");\n },\n triggerProps: normalize.button({\n ...parts.trigger.attrs,\n dir: state.context.dir,\n id: dom.getTriggerId(state.context),\n \"aria-haspopup\": \"dialog\",\n type: \"button\",\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": dom.getContentId(state.context),\n onClick(event) {\n if (event.defaultPrevented)\n return;\n send(\"TOGGLE\");\n }\n }),\n backdropProps: normalize.element({\n ...parts.backdrop.attrs,\n dir: state.context.dir,\n hidden: !open,\n id: dom.getBackdropId(state.context),\n \"data-state\": open ? \"open\" : \"closed\"\n }),\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n dir: state.context.dir,\n id: dom.getPositionerId(state.context),\n style: {\n pointerEvents: open ? void 0 : \"none\"\n }\n }),\n contentProps: normalize.element({\n ...parts.content.attrs,\n dir: state.context.dir,\n role: state.context.role,\n hidden: !open,\n id: dom.getContentId(state.context),\n tabIndex: -1,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-modal\": true,\n \"aria-label\": ariaLabel || void 0,\n \"aria-labelledby\": ariaLabel || !rendered.title ? void 0 : dom.getTitleId(state.context),\n \"aria-describedby\": rendered.description ? dom.getDescriptionId(state.context) : void 0\n }),\n titleProps: normalize.element({\n ...parts.title.attrs,\n dir: state.context.dir,\n id: dom.getTitleId(state.context)\n }),\n descriptionProps: normalize.element({\n ...parts.description.attrs,\n dir: state.context.dir,\n id: dom.getDescriptionId(state.context)\n }),\n closeTriggerProps: normalize.button({\n ...parts.closeTrigger.attrs,\n dir: state.context.dir,\n id: dom.getCloseTriggerId(state.context),\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented)\n return;\n event.stopPropagation();\n send(\"CLOSE\");\n }\n })\n };\n}\n\n// src/dialog.machine.ts\nimport { ariaHidden } from \"@zag-js/aria-hidden\";\nimport { createMachine } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getInitialFocus, nextTick, raf } from \"@zag-js/dom-query\";\nimport { preventBodyScroll } from \"@zag-js/remove-scroll\";\nimport { compact } from \"@zag-js/utils\";\nimport { createFocusTrap } from \"focus-trap\";\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"dialog\",\n initial: ctx.open ? \"open\" : \"closed\",\n context: {\n role: \"dialog\",\n renderedElements: {\n title: true,\n description: true\n },\n modal: true,\n trapFocus: true,\n preventScroll: true,\n closeOnInteractOutside: true,\n closeOnEscape: true,\n restoreFocus: true,\n ...ctx\n },\n created: [\"checkInitialFocusEl\"],\n watch: {\n open: [\"toggleVisibility\"]\n },\n states: {\n open: {\n entry: [\"checkRenderedElements\", \"syncZIndex\"],\n activities: [\"trackDismissableElement\", \"trapFocus\", \"preventScroll\", \"hideContentBelow\"],\n on: {\n \"CONTROLLED.CLOSE\": {\n target: \"closed\",\n actions: [\"setFinalFocus\"]\n },\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n },\n closed: {\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ]\n }\n }\n }\n },\n {\n guards: {\n isOpenControlled: (ctx2) => !!ctx2[\"open.controlled\"]\n },\n activities: {\n trackDismissableElement(ctx2, _evt, { send }) {\n const getContentEl = () => dom.getContentEl(ctx2);\n return trackDismissableElement(getContentEl, {\n defer: true,\n pointerBlocking: ctx2.modal,\n exclude: [dom.getTriggerEl(ctx2)],\n onInteractOutside(event) {\n ctx2.onInteractOutside?.(event);\n if (!ctx2.closeOnInteractOutside || ctx2.role === \"alertdialog\") {\n event.preventDefault();\n }\n },\n persistentElements: ctx2.persistentElements,\n onFocusOutside: ctx2.onFocusOutside,\n onPointerDownOutside: ctx2.onPointerDownOutside,\n onEscapeKeyDown(event) {\n ctx2.onEscapeKeyDown?.(event);\n if (!ctx2.closeOnEscape) {\n event.preventDefault();\n } else {\n send({ type: \"CLOSE\", src: \"escape-key\" });\n }\n },\n onDismiss() {\n send({ type: \"CLOSE\", src: \"interact-outside\" });\n }\n });\n },\n preventScroll(ctx2) {\n if (!ctx2.preventScroll)\n return;\n return preventBodyScroll(dom.getDoc(ctx2));\n },\n trapFocus(ctx2) {\n if (!ctx2.trapFocus || !ctx2.modal)\n return;\n let trap;\n const cleanup = nextTick(() => {\n const contentEl = dom.getContentEl(ctx2);\n if (!contentEl)\n return;\n trap = createFocusTrap(contentEl, {\n document: dom.getDoc(ctx2),\n escapeDeactivates: false,\n preventScroll: true,\n returnFocusOnDeactivate: false,\n fallbackFocus: contentEl,\n allowOutsideClick: true,\n initialFocus: getInitialFocus(contentEl, ctx2.initialFocusEl)\n });\n try {\n trap.activate();\n } catch {\n }\n });\n return () => {\n trap?.deactivate();\n cleanup();\n };\n },\n hideContentBelow(ctx2) {\n if (!ctx2.modal)\n return;\n const getElements = () => [dom.getContentEl(ctx2)];\n return ariaHidden(getElements, { defer: true });\n }\n },\n actions: {\n checkInitialFocusEl(ctx2) {\n if (!ctx2.initialFocusEl && ctx2.role === \"alertdialog\") {\n ctx2.initialFocusEl = () => dom.getCloseTriggerEl(ctx2);\n }\n },\n checkRenderedElements(ctx2) {\n raf(() => {\n ctx2.renderedElements.title = !!dom.getTitleEl(ctx2);\n ctx2.renderedElements.description = !!dom.getDescriptionEl(ctx2);\n });\n },\n syncZIndex(ctx2) {\n raf(() => {\n const contentEl = dom.getContentEl(ctx2);\n if (!contentEl)\n return;\n const win = dom.getWin(ctx2);\n const styles = win.getComputedStyle(contentEl);\n const elems = [dom.getPositionerEl(ctx2), dom.getBackdropEl(ctx2)];\n elems.forEach((node) => {\n node?.style.setProperty(\"--z-index\", styles.zIndex);\n });\n });\n },\n invokeOnClose(ctx2) {\n ctx2.onOpenChange?.({ open: false });\n },\n invokeOnOpen(ctx2) {\n ctx2.onOpenChange?.({ open: true });\n },\n toggleVisibility(ctx2, evt, { send }) {\n send({ type: ctx2.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt });\n },\n setFinalFocus(ctx2) {\n if (!ctx2.restoreFocus)\n return;\n queueMicrotask(() => {\n const el = ctx2.finalFocusEl?.() ?? dom.getTriggerEl(ctx2);\n el?.focus({ preventScroll: true });\n });\n }\n }\n }\n );\n}\n\n// src/dialog.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"aria-label\",\n \"closeOnEscape\",\n \"closeOnInteractOutside\",\n \"dir\",\n \"finalFocusEl\",\n \"getRootNode\",\n \"getRootNode\",\n \"id\",\n \"id\",\n \"ids\",\n \"initialFocusEl\",\n \"modal\",\n \"onEscapeKeyDown\",\n \"onFocusOutside\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"open.controlled\",\n \"open\",\n \"persistentElements\",\n \"preventScroll\",\n \"restoreFocus\",\n \"role\",\n \"trapFocus\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/select.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"select\").parts(\n \"label\",\n \"positioner\",\n \"trigger\",\n \"indicator\",\n \"clearTrigger\",\n \"item\",\n \"itemText\",\n \"itemIndicator\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"content\",\n \"root\",\n \"control\"\n);\nvar parts = anatomy.build();\n\n// src/select.collection.ts\nimport { Collection } from \"@zag-js/collection\";\nimport { ref } from \"@zag-js/core\";\nvar collection = (options) => {\n return ref(new Collection(options));\n};\ncollection.empty = () => {\n return ref(new Collection({ items: [] }));\n};\n\n// src/select.connect.ts\nimport { getEventKey, getNativeEvent, isLeftClick } from \"@zag-js/dom-event\";\nimport {\n ariaAttr,\n dataAttr,\n getByTypeahead,\n isEditableElement,\n isSelfTarget,\n isValidTabEvent,\n visuallyHiddenStyle\n} from \"@zag-js/dom-query\";\nimport { getPlacementStyles } from \"@zag-js/popper\";\n\n// src/select.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `select:${ctx.id}`,\n getContentId: (ctx) => ctx.ids?.content ?? `select:${ctx.id}:content`,\n getTriggerId: (ctx) => ctx.ids?.trigger ?? `select:${ctx.id}:trigger`,\n getClearTriggerId: (ctx) => ctx.ids?.clearTrigger ?? `select:${ctx.id}:clear-trigger`,\n getLabelId: (ctx) => ctx.ids?.label ?? `select:${ctx.id}:label`,\n getControlId: (ctx) => ctx.ids?.control ?? `select:${ctx.id}:control`,\n getItemId: (ctx, id) => ctx.ids?.item?.(id) ?? `select:${ctx.id}:option:${id}`,\n getHiddenSelectId: (ctx) => ctx.ids?.hiddenSelect ?? `select:${ctx.id}:select`,\n getPositionerId: (ctx) => ctx.ids?.positioner ?? `select:${ctx.id}:positioner`,\n getItemGroupId: (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `select:${ctx.id}:optgroup:${id}`,\n getItemGroupLabelId: (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `select:${ctx.id}:optgroup-label:${id}`,\n getHiddenSelectEl: (ctx) => dom.getById(ctx, dom.getHiddenSelectId(ctx)),\n getContentEl: (ctx) => dom.getById(ctx, dom.getContentId(ctx)),\n getControlEl: (ctx) => dom.getById(ctx, dom.getControlId(ctx)),\n getTriggerEl: (ctx) => dom.getById(ctx, dom.getTriggerId(ctx)),\n getClearTriggerEl: (ctx) => dom.getById(ctx, dom.getClearTriggerId(ctx)),\n getPositionerEl: (ctx) => dom.getById(ctx, dom.getPositionerId(ctx)),\n getHighlightedOptionEl(ctx) {\n if (!ctx.highlightedValue)\n return null;\n return dom.getById(ctx, dom.getItemId(ctx, ctx.highlightedValue));\n }\n});\n\n// src/select.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const invalid = state.context.invalid;\n const readOnly = state.context.readOnly;\n const interactive = state.context.isInteractive;\n const composite = state.context.composite;\n const open = state.hasTag(\"open\");\n const focused = state.matches(\"focused\");\n const highlightedValue = state.context.highlightedValue;\n const highlightedItem = state.context.highlightedItem;\n const selectedItems = state.context.selectedItems;\n const isTypingAhead = state.context.isTypingAhead;\n const ariaActiveDescendant = highlightedValue ? dom.getItemId(state.context, highlightedValue) : void 0;\n function getItemState(props2) {\n const _disabled = state.context.collection.isItemDisabled(props2.item);\n const value = state.context.collection.itemToValue(props2.item);\n return {\n value,\n disabled: Boolean(disabled || _disabled),\n highlighted: highlightedValue === value,\n selected: state.context.value.includes(value)\n };\n }\n const popperStyles = getPlacementStyles({\n ...state.context.positioning,\n placement: state.context.currentPlacement\n });\n return {\n open,\n focused,\n empty: state.context.value.length === 0,\n highlightedItem,\n highlightedValue,\n selectedItems,\n hasSelectedItems: state.context.hasSelectedItems,\n value: state.context.value,\n valueAsString: state.context.valueAsString,\n collection: state.context.collection,\n setCollection(collection2) {\n send({ type: \"COLLECTION.SET\", value: collection2 });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n focus() {\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n },\n setOpen(nextOpen) {\n if (nextOpen === open)\n return;\n send(nextOpen ? \"OPEN\" : \"CLOSE\");\n },\n selectValue(value) {\n send({ type: \"ITEM.SELECT\", value });\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value });\n },\n highlightValue(value) {\n send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n },\n clearValue(value) {\n if (value) {\n send({ type: \"ITEM.CLEAR\", value });\n } else {\n send({ type: \"VALUE.CLEAR\" });\n }\n },\n getItemState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n labelProps: normalize.label({\n dir: state.context.dir,\n id: dom.getLabelId(state.context),\n ...parts.label.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n htmlFor: dom.getHiddenSelectId(state.context),\n onClick(event) {\n if (event.defaultPrevented)\n return;\n if (disabled)\n return;\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n }\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid)\n }),\n triggerProps: normalize.button({\n id: dom.getTriggerId(state.context),\n disabled,\n dir: state.context.dir,\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": dom.getContentId(state.context),\n \"aria-expanded\": open,\n \"aria-haspopup\": \"listbox\",\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-invalid\": invalid,\n \"aria-labelledby\": dom.getLabelId(state.context),\n ...parts.trigger.attrs,\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly),\n \"data-placement\": state.context.currentPlacement,\n \"data-placeholder-shown\": dataAttr(!state.context.hasSelectedItems),\n onPointerDown(event) {\n if (!isLeftClick(event))\n return;\n if (!interactive)\n return;\n event.currentTarget.dataset.pointerType = event.pointerType;\n if (disabled || event.pointerType === \"touch\")\n return;\n send({ type: \"TRIGGER.CLICK\" });\n },\n onClick(event) {\n if (!interactive || event.button)\n return;\n if (event.currentTarget.dataset.pointerType === \"touch\") {\n send({ type: \"TRIGGER.CLICK\" });\n }\n },\n onFocus() {\n send(\"TRIGGER.FOCUS\");\n },\n onBlur() {\n send(\"TRIGGER.BLUR\");\n },\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n if (!interactive)\n return;\n const keyMap = {\n ArrowUp() {\n send({ type: \"TRIGGER.ARROW_UP\" });\n },\n ArrowDown(event2) {\n send({ type: event2.altKey ? \"OPEN\" : \"TRIGGER.ARROW_DOWN\" });\n },\n ArrowLeft() {\n send({ type: \"TRIGGER.ARROW_LEFT\" });\n },\n ArrowRight() {\n send({ type: \"TRIGGER.ARROW_RIGHT\" });\n },\n Home() {\n send({ type: \"TRIGGER.HOME\" });\n },\n End() {\n send({ type: \"TRIGGER.END\" });\n },\n Enter() {\n send({ type: \"TRIGGER.ENTER\" });\n },\n Space(event2) {\n if (isTypingAhead) {\n send({ type: \"TRIGGER.TYPEAHEAD\", key: event2.key });\n } else {\n send({ type: \"TRIGGER.ENTER\" });\n }\n }\n };\n const exec = keyMap[getEventKey(event, state.context)];\n if (exec) {\n exec(event);\n event.preventDefault();\n return;\n }\n if (getByTypeahead.isValidEvent(event)) {\n send({ type: \"TRIGGER.TYPEAHEAD\", key: event.key });\n event.preventDefault();\n }\n }\n }),\n indicatorProps: normalize.element({\n ...parts.indicator.attrs,\n dir: state.context.dir,\n \"aria-hidden\": true,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n }),\n getItemProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n id: dom.getItemId(state.context, itemState.value),\n role: \"option\",\n ...parts.item.attrs,\n dir: state.context.dir,\n \"data-value\": itemState.value,\n \"aria-selected\": itemState.selected,\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"data-highlighted\": dataAttr(itemState.highlighted),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"aria-disabled\": ariaAttr(itemState.disabled),\n onPointerMove(event) {\n if (itemState.disabled || event.pointerType !== \"mouse\")\n return;\n if (itemState.value === state.context.highlightedValue)\n return;\n send({ type: \"ITEM.POINTER_MOVE\", value: itemState.value });\n },\n onPointerUp() {\n if (itemState.disabled)\n return;\n send({ type: \"ITEM.CLICK\", src: \"pointerup\", value: itemState.value });\n },\n onPointerLeave(event) {\n if (itemState.disabled)\n return;\n if (props2.persistFocus)\n return;\n if (event.pointerType !== \"mouse\")\n return;\n const isArrowKey = [\"CONTENT.ARROW_UP\", \"CONTENT.ARROW_DOWN\"].includes(state.event.type);\n if (isArrowKey)\n return;\n send({ type: \"ITEM.POINTER_LEAVE\" });\n },\n onTouchEnd(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n });\n },\n getItemTextProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n ...parts.itemText.attrs,\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-highlighted\": dataAttr(itemState.highlighted)\n });\n },\n getItemIndicatorProps(props2) {\n const itemState = getItemState(props2);\n return normalize.element({\n \"aria-hidden\": true,\n ...parts.itemIndicator.attrs,\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n hidden: !itemState.selected\n });\n },\n getItemGroupLabelProps(props2) {\n const { htmlFor } = props2;\n return normalize.element({\n ...parts.itemGroupLabel.attrs,\n id: dom.getItemGroupLabelId(state.context, htmlFor),\n role: \"group\",\n dir: state.context.dir\n });\n },\n getItemGroupProps(props2) {\n const { id } = props2;\n return normalize.element({\n ...parts.itemGroup.attrs,\n \"data-disabled\": dataAttr(disabled),\n id: dom.getItemGroupId(state.context, id),\n \"aria-labelledby\": dom.getItemGroupLabelId(state.context, id),\n dir: state.context.dir\n });\n },\n clearTriggerProps: normalize.button({\n ...parts.clearTrigger.attrs,\n id: dom.getClearTriggerId(state.context),\n type: \"button\",\n \"aria-label\": \"Clear value\",\n disabled,\n hidden: !state.context.hasSelectedItems,\n dir: state.context.dir,\n onClick(event) {\n if (event.defaultPrevented)\n return;\n send(\"VALUE.CLEAR\");\n }\n }),\n hiddenSelectProps: normalize.select({\n name: state.context.name,\n form: state.context.form,\n disabled,\n multiple: state.context.multiple,\n \"aria-hidden\": true,\n id: dom.getHiddenSelectId(state.context),\n defaultValue: state.context.multiple ? state.context.value : state.context.value[0],\n style: visuallyHiddenStyle,\n tabIndex: -1,\n // Some browser extensions will focus the hidden select.\n // Let's forward the focus to the trigger.\n onFocus() {\n dom.getTriggerEl(state.context)?.focus({ preventScroll: true });\n },\n \"aria-labelledby\": dom.getLabelId(state.context)\n }),\n positionerProps: normalize.element({\n ...parts.positioner.attrs,\n dir: state.context.dir,\n id: dom.getPositionerId(state.context),\n style: popperStyles.floating\n }),\n contentProps: normalize.element({\n hidden: !open,\n dir: state.context.dir,\n id: dom.getContentId(state.context),\n role: composite ? \"listbox\" : \"dialog\",\n ...parts.content.attrs,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-placement\": state.context.currentPlacement,\n \"data-activedescendant\": ariaActiveDescendant,\n \"aria-activedescendant\": composite ? ariaActiveDescendant : void 0,\n \"aria-multiselectable\": state.context.multiple && composite ? true : void 0,\n \"aria-labelledby\": dom.getLabelId(state.context),\n tabIndex: 0,\n onKeyDown(event) {\n const evt = getNativeEvent(event);\n if (!interactive)\n return;\n if (!isSelfTarget(evt))\n return;\n if (event.key === \"Tab\") {\n const valid = isValidTabEvent(event);\n if (!valid) {\n event.preventDefault();\n return;\n }\n }\n const keyMap = {\n ArrowUp() {\n send({ type: \"CONTENT.ARROW_UP\" });\n },\n ArrowDown() {\n send({ type: \"CONTENT.ARROW_DOWN\" });\n },\n Home() {\n send({ type: \"CONTENT.HOME\" });\n },\n End() {\n send({ type: \"CONTENT.END\" });\n },\n Enter() {\n send({ type: \"ITEM.CLICK\", src: \"keydown.enter\" });\n },\n Space(event2) {\n if (isTypingAhead) {\n send({ type: \"CONTENT.TYPEAHEAD\", key: event2.key });\n } else {\n keyMap.Enter?.(event2);\n }\n }\n };\n const exec = keyMap[getEventKey(event)];\n if (exec) {\n exec(event);\n event.preventDefault();\n return;\n }\n if (isEditableElement(event.target)) {\n return;\n }\n if (getByTypeahead.isValidEvent(event)) {\n send({ type: \"CONTENT.TYPEAHEAD\", key: event.key });\n event.preventDefault();\n }\n }\n }),\n listProps: normalize.element({\n tabIndex: 0,\n role: !composite ? \"listbox\" : void 0,\n \"aria-labelledby\": dom.getTriggerId(state.context),\n \"aria-activedescendant\": !composite ? ariaActiveDescendant : void 0,\n \"aria-multiselectable\": !composite && state.context.multiple ? true : void 0\n })\n };\n}\n\n// src/select.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getByTypeahead as getByTypeahead2, getInitialFocus, observeAttributes, raf, scrollIntoView } from \"@zag-js/dom-query\";\nimport { trackFormControl } from \"@zag-js/form-utils\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { addOrRemove, compact, isEqual } from \"@zag-js/utils\";\nvar { and, not, or } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"select\",\n context: {\n value: [],\n highlightedValue: null,\n loopFocus: false,\n closeOnSelect: true,\n disabled: false,\n composite: true,\n ...ctx,\n highlightedItem: null,\n selectedItems: [],\n valueAsString: \"\",\n collection: ctx.collection ?? collection.empty(),\n typeahead: getByTypeahead2.defaultOptions,\n fieldsetDisabled: false,\n restoreFocus: true,\n positioning: {\n placement: \"bottom-start\",\n gutter: 8,\n ...ctx.positioning\n }\n },\n computed: {\n hasSelectedItems: (ctx2) => ctx2.value.length > 0,\n isTypingAhead: (ctx2) => ctx2.typeahead.keysSoFar !== \"\",\n isDisabled: (ctx2) => !!ctx2.disabled || ctx2.fieldsetDisabled,\n isInteractive: (ctx2) => !(ctx2.isDisabled || ctx2.readOnly)\n },\n initial: ctx.open ? \"open\" : \"idle\",\n created: [\"syncInitialValues\"],\n entry: [\"syncSelectElement\"],\n watch: {\n open: [\"toggleVisibility\"],\n value: [\"syncSelectedItems\", \"syncSelectElement\"],\n highlightedValue: [\"syncHighlightedItem\"]\n },\n on: {\n \"HIGHLIGHTED_VALUE.SET\": {\n actions: [\"setHighlightedItem\"]\n },\n \"ITEM.SELECT\": {\n actions: [\"selectItem\"]\n },\n \"ITEM.CLEAR\": {\n actions: [\"clearItem\"]\n },\n \"VALUE.SET\": {\n actions: [\"setSelectedItems\"]\n },\n \"VALUE.CLEAR\": {\n actions: [\"clearSelectedItems\"]\n },\n \"COLLECTION.SET\": {\n actions: [\"setCollection\"]\n }\n },\n activities: [\"trackFormControlState\"],\n states: {\n idle: {\n tags: [\"closed\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isTriggerClickEvent\",\n target: \"open\",\n actions: [\"highlightFirstSelectedItem\"]\n },\n {\n target: \"open\"\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n }\n ],\n \"TRIGGER.FOCUS\": {\n target: \"focused\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ]\n }\n },\n focused: {\n tags: [\"closed\"],\n entry: [\"setFinalFocus\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isTriggerClickEvent\",\n target: \"open\",\n actions: [\"highlightFirstSelectedItem\"]\n },\n {\n guard: \"isTriggerArrowUpEvent\",\n target: \"open\",\n actions: [\"highlightComputedLastItem\"]\n },\n {\n guard: or(\"isTriggerArrowDownEvent\", \"isTriggerEnterEvent\"),\n target: \"open\",\n actions: [\"highlightComputedFirstItem\"]\n },\n {\n target: \"open\"\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"TRIGGER.BLUR\": {\n target: \"idle\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightFirstSelectedItem\"]\n }\n ],\n \"TRIGGER.ENTER\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedFirstItem\"]\n }\n ],\n \"TRIGGER.ARROW_UP\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedLastItem\"]\n }\n ],\n \"TRIGGER.ARROW_DOWN\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"highlightComputedFirstItem\"]\n }\n ],\n \"TRIGGER.ARROW_LEFT\": [\n {\n guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n actions: [\"selectPreviousItem\"]\n },\n {\n guard: not(\"multiple\"),\n actions: [\"selectLastItem\"]\n }\n ],\n \"TRIGGER.ARROW_RIGHT\": [\n {\n guard: and(not(\"multiple\"), \"hasSelectedItems\"),\n actions: [\"selectNextItem\"]\n },\n {\n guard: not(\"multiple\"),\n actions: [\"selectFirstItem\"]\n }\n ],\n \"TRIGGER.HOME\": {\n guard: not(\"multiple\"),\n actions: [\"selectFirstItem\"]\n },\n \"TRIGGER.END\": {\n guard: not(\"multiple\"),\n actions: [\"selectLastItem\"]\n },\n \"TRIGGER.TYPEAHEAD\": {\n guard: not(\"multiple\"),\n actions: [\"selectMatchingItem\"]\n }\n }\n },\n open: {\n tags: [\"open\"],\n entry: [\"setInitialFocus\"],\n exit: [\"scrollContentToTop\"],\n activities: [\"trackDismissableElement\", \"computePlacement\", \"scrollToHighlightedItem\"],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"clearHighlightedItem\"]\n },\n {\n target: \"idle\",\n actions: [\"clearHighlightedItem\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"ITEM.CLICK\": [\n {\n guard: and(\"closeOnSelect\", \"isOpenControlled\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"clearHighlightedItem\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"CONTENT.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"shouldRestoreFocus\", \"isOpenControlled\"),\n actions: [\"invokeOnClose\"]\n },\n {\n guard: \"shouldRestoreFocus\",\n target: \"focused\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"idle\",\n actions: [\"invokeOnClose\", \"clearHighlightedItem\"]\n }\n ],\n \"CONTENT.HOME\": {\n actions: [\"highlightFirstItem\"]\n },\n \"CONTENT.END\": {\n actions: [\"highlightLastItem\"]\n },\n \"CONTENT.ARROW_DOWN\": [\n {\n guard: and(\"hasHighlightedItem\", \"loop\", \"isLastItemHighlighted\"),\n actions: [\"highlightFirstItem\"]\n },\n {\n guard: \"hasHighlightedItem\",\n actions: [\"highlightNextItem\"]\n },\n {\n actions: [\"highlightFirstItem\"]\n }\n ],\n \"CONTENT.ARROW_UP\": [\n {\n guard: and(\"hasHighlightedItem\", \"loop\", \"isFirstItemHighlighted\"),\n actions: [\"highlightLastItem\"]\n },\n {\n guard: \"hasHighlightedItem\",\n actions: [\"highlightPreviousItem\"]\n },\n {\n actions: [\"highlightLastItem\"]\n }\n ],\n \"CONTENT.TYPEAHEAD\": {\n actions: [\"highlightMatchingItem\"]\n },\n \"ITEM.POINTER_MOVE\": {\n actions: [\"highlightItem\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedItem\"]\n },\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n }\n }\n }\n },\n {\n guards: {\n loop: (ctx2) => !!ctx2.loopFocus,\n multiple: (ctx2) => !!ctx2.multiple,\n hasSelectedItems: (ctx2) => !!ctx2.hasSelectedItems,\n hasHighlightedItem: (ctx2) => ctx2.highlightedValue != null,\n isFirstItemHighlighted: (ctx2) => ctx2.highlightedValue === ctx2.collection.first(),\n isLastItemHighlighted: (ctx2) => ctx2.highlightedValue === ctx2.collection.last(),\n closeOnSelect: (ctx2, evt) => {\n if (ctx2.multiple)\n return false;\n return !!(evt.closeOnSelect ?? ctx2.closeOnSelect);\n },\n shouldRestoreFocus: (ctx2) => !!ctx2.restoreFocus,\n // guard assertions (for controlled mode)\n isOpenControlled: (ctx2) => !!ctx2[\"open.controlled\"],\n isTriggerClickEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.CLICK\",\n isTriggerEnterEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ENTER\",\n isTriggerArrowUpEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ARROW_UP\",\n isTriggerArrowDownEvent: (_ctx, evt) => evt.previousEvent?.type === \"TRIGGER.ARROW_DOWN\"\n },\n activities: {\n trackFormControlState(ctx2, _evt, { initialContext }) {\n return trackFormControl(dom.getHiddenSelectEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n set.selectedItems(ctx2, initialContext.value);\n }\n });\n },\n trackDismissableElement(ctx2, _evt, { send }) {\n const contentEl = () => dom.getContentEl(ctx2);\n return trackDismissableElement(contentEl, {\n defer: true,\n exclude: [dom.getTriggerEl(ctx2), dom.getClearTriggerEl(ctx2)],\n onFocusOutside: ctx2.onFocusOutside,\n onPointerDownOutside: ctx2.onPointerDownOutside,\n onInteractOutside(event) {\n ctx2.onInteractOutside?.(event);\n ctx2.restoreFocus = !event.detail.focusable;\n },\n onDismiss() {\n send({ type: \"CONTENT.INTERACT_OUTSIDE\" });\n }\n });\n },\n computePlacement(ctx2) {\n ctx2.currentPlacement = ctx2.positioning.placement;\n const triggerEl = () => dom.getTriggerEl(ctx2);\n const positionerEl = () => dom.getPositionerEl(ctx2);\n return getPlacement(triggerEl, positionerEl, {\n defer: true,\n ...ctx2.positioning,\n onComplete(data) {\n ctx2.currentPlacement = data.placement;\n }\n });\n },\n scrollToHighlightedItem(ctx2, _evt, { getState }) {\n const exec = (immediate) => {\n const state = getState();\n if (state.event.type.includes(\"POINTER\"))\n return;\n const optionEl = dom.getHighlightedOptionEl(ctx2);\n const contentEl2 = dom.getContentEl(ctx2);\n if (ctx2.scrollToIndexFn) {\n const highlightedIndex = ctx2.collection.indexOf(ctx2.highlightedValue);\n ctx2.scrollToIndexFn({ index: highlightedIndex, immediate });\n return;\n }\n scrollIntoView(optionEl, { rootEl: contentEl2, block: \"nearest\" });\n };\n raf(() => exec(true));\n const contentEl = () => dom.getContentEl(ctx2);\n return observeAttributes(contentEl, {\n defer: true,\n attributes: [\"data-activedescendant\"],\n callback() {\n exec(false);\n }\n });\n }\n },\n actions: {\n reposition(ctx2, evt) {\n const positionerEl = () => dom.getPositionerEl(ctx2);\n getPlacement(dom.getTriggerEl(ctx2), positionerEl, {\n ...ctx2.positioning,\n ...evt.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n ctx2.currentPlacement = data.placement;\n }\n });\n },\n toggleVisibility(ctx2, evt, { send }) {\n send({ type: ctx2.open ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: evt });\n },\n highlightPreviousItem(ctx2) {\n if (ctx2.highlightedValue == null)\n return;\n const value = ctx2.collection.prev(ctx2.highlightedValue);\n set.highlightedItem(ctx2, value);\n },\n highlightNextItem(ctx2) {\n if (ctx2.highlightedValue == null)\n return;\n const value = ctx2.collection.next(ctx2.highlightedValue);\n set.highlightedItem(ctx2, value);\n },\n highlightFirstItem(ctx2) {\n const value = ctx2.collection.first();\n set.highlightedItem(ctx2, value);\n },\n highlightLastItem(ctx2) {\n const value = ctx2.collection.last();\n set.highlightedItem(ctx2, value);\n },\n setInitialFocus(ctx2) {\n raf(() => {\n const element = getInitialFocus(dom.getContentEl(ctx2));\n element?.focus();\n });\n },\n setFinalFocus(ctx2) {\n raf(() => {\n dom.getTriggerEl(ctx2)?.focus({ preventScroll: true });\n });\n },\n selectHighlightedItem(ctx2, evt) {\n const value = evt.value ?? ctx2.highlightedValue;\n if (value == null)\n return;\n set.selectedItem(ctx2, value);\n },\n highlightComputedFirstItem(ctx2) {\n const value = ctx2.hasSelectedItems ? ctx2.collection.sort(ctx2.value)[0] : ctx2.collection.first();\n set.highlightedItem(ctx2, value);\n },\n highlightComputedLastItem(ctx2) {\n const value = ctx2.hasSelectedItems ? ctx2.collection.sort(ctx2.value)[0] : ctx2.collection.last();\n set.highlightedItem(ctx2, value);\n },\n highlightFirstSelectedItem(ctx2) {\n if (!ctx2.hasSelectedItems)\n return;\n const [value] = ctx2.collection.sort(ctx2.value);\n set.highlightedItem(ctx2, value);\n },\n highlightItem(ctx2, evt) {\n set.highlightedItem(ctx2, evt.value);\n },\n highlightMatchingItem(ctx2, evt) {\n const value = ctx2.collection.search(evt.key, {\n state: ctx2.typeahead,\n currentValue: ctx2.highlightedValue\n });\n if (value == null)\n return;\n set.highlightedItem(ctx2, value);\n },\n setHighlightedItem(ctx2, evt) {\n set.highlightedItem(ctx2, evt.value);\n },\n clearHighlightedItem(ctx2) {\n set.highlightedItem(ctx2, null, true);\n },\n selectItem(ctx2, evt) {\n set.selectedItem(ctx2, evt.value);\n },\n clearItem(ctx2, evt) {\n const value = ctx2.value.filter((v) => v !== evt.value);\n set.selectedItems(ctx2, value);\n },\n setSelectedItems(ctx2, evt) {\n set.selectedItems(ctx2, evt.value);\n },\n clearSelectedItems(ctx2) {\n set.selectedItems(ctx2, []);\n },\n selectPreviousItem(ctx2) {\n const value = ctx2.collection.prev(ctx2.value[0]);\n set.selectedItem(ctx2, value);\n },\n selectNextItem(ctx2) {\n const value = ctx2.collection.next(ctx2.value[0]);\n set.selectedItem(ctx2, value);\n },\n selectFirstItem(ctx2) {\n const value = ctx2.collection.first();\n set.selectedItem(ctx2, value);\n },\n selectLastItem(ctx2) {\n const value = ctx2.collection.last();\n set.selectedItem(ctx2, value);\n },\n selectMatchingItem(ctx2, evt) {\n const value = ctx2.collection.search(evt.key, {\n state: ctx2.typeahead,\n currentValue: ctx2.value[0]\n });\n if (value == null)\n return;\n set.selectedItem(ctx2, value);\n },\n scrollContentToTop(ctx2) {\n if (ctx2.scrollToIndexFn) {\n ctx2.scrollToIndexFn({ index: 0, immediate: true });\n } else {\n dom.getContentEl(ctx2)?.scrollTo(0, 0);\n }\n },\n invokeOnOpen(ctx2) {\n ctx2.onOpenChange?.({ open: true });\n },\n invokeOnClose(ctx2) {\n ctx2.onOpenChange?.({ open: false });\n },\n syncSelectElement(ctx2) {\n const selectEl = dom.getHiddenSelectEl(ctx2);\n if (!selectEl)\n return;\n if (ctx2.value.length === 0 && !ctx2.multiple) {\n selectEl.selectedIndex = -1;\n return;\n }\n for (const option of selectEl.options) {\n option.selected = ctx2.value.includes(option.value);\n }\n },\n setCollection(ctx2, evt) {\n ctx2.collection = evt.value;\n },\n syncInitialValues(ctx2) {\n const selectedItems = ctx2.collection.items(ctx2.value);\n const valueAsString = ctx2.collection.itemsToString(selectedItems);\n ctx2.highlightedItem = ctx2.collection.item(ctx2.highlightedValue);\n ctx2.selectedItems = selectedItems;\n ctx2.valueAsString = valueAsString;\n },\n syncSelectedItems(ctx2) {\n sync.valueChange(ctx2);\n },\n syncHighlightedItem(ctx2) {\n sync.highlightChange(ctx2);\n }\n }\n }\n );\n}\nfunction dispatchChangeEvent(ctx) {\n raf(() => {\n const node = dom.getHiddenSelectEl(ctx);\n if (!node)\n return;\n const win = dom.getWin(ctx);\n const changeEvent = new win.Event(\"change\", { bubbles: true, composed: true });\n node.dispatchEvent(changeEvent);\n });\n}\nvar sync = {\n valueChange: (ctx) => {\n const prevSelectedItems = ctx.selectedItems;\n ctx.selectedItems = ctx.value.map((v) => {\n const foundItem = prevSelectedItems.find((item) => ctx.collection.itemToValue(item) === v);\n if (foundItem)\n return foundItem;\n return ctx.collection.item(v);\n });\n ctx.valueAsString = ctx.collection.itemsToString(ctx.selectedItems);\n },\n highlightChange: (ctx) => {\n ctx.highlightedItem = ctx.collection.item(ctx.highlightedValue);\n }\n};\nvar invoke = {\n valueChange: (ctx) => {\n sync.valueChange(ctx);\n ctx.onValueChange?.({\n value: Array.from(ctx.value),\n items: Array.from(ctx.selectedItems)\n });\n dispatchChangeEvent(ctx);\n },\n highlightChange: (ctx) => {\n sync.highlightChange(ctx);\n ctx.onHighlightChange?.({\n highlightedValue: ctx.highlightedValue,\n highlightedItem: ctx.highlightedItem,\n highlightedIndex: ctx.collection.indexOf(ctx.highlightedValue)\n });\n }\n};\nvar set = {\n selectedItem: (ctx, value, force = false) => {\n if (isEqual(ctx.value, value))\n return;\n if (value == null && !force)\n return;\n if (value == null && force) {\n ctx.value = [];\n invoke.valueChange(ctx);\n return;\n }\n ctx.value = ctx.multiple ? addOrRemove(ctx.value, value) : [value];\n invoke.valueChange(ctx);\n },\n selectedItems: (ctx, value) => {\n if (isEqual(ctx.value, value))\n return;\n ctx.value = value;\n invoke.valueChange(ctx);\n },\n highlightedItem: (ctx, value, force = false) => {\n if (isEqual(ctx.highlightedValue, value))\n return;\n if (value == null && !force)\n return;\n ctx.highlightedValue = value ?? null;\n invoke.highlightChange(ctx);\n }\n};\n\n// src/select.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"closeOnSelect\",\n \"collection\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"highlightedValue\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"loopFocus\",\n \"multiple\",\n \"name\",\n \"onFocusOutside\",\n \"onHighlightChange\",\n \"onInteractOutside\",\n \"onOpenChange\",\n \"onPointerDownOutside\",\n \"onValueChange\",\n \"open.controlled\",\n \"open\",\n \"composite\",\n \"positioning\",\n \"readOnly\",\n \"scrollToIndexFn\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar itemProps = createProps()([\"item\", \"persistFocus\"]);\nvar splitItemProps = createSplitProps(itemProps);\nvar itemGroupProps = createProps()([\"id\"]);\nvar splitItemGroupProps = createSplitProps(itemGroupProps);\nvar itemGroupLabelProps = createProps()([\"htmlFor\"]);\nvar splitItemGroupLabelProps = createSplitProps(itemGroupLabelProps);\nexport {\n anatomy,\n collection,\n connect,\n itemGroupLabelProps,\n itemGroupProps,\n itemProps,\n machine,\n props,\n splitItemGroupLabelProps,\n splitItemGroupProps,\n splitItemProps,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","import { anatomy as anatomy$1 } from '@zag-js/select';\n\nconst anatomy = anatomy$1.extendWith(\"valueText\");\n\nexport { anatomy };\n","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/switch.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"switch\").parts(\"root\", \"label\", \"control\", \"thumb\");\nvar parts = anatomy.build();\n\n// src/switch.connect.ts\nimport { dataAttr, visuallyHiddenStyle } from \"@zag-js/dom-query\";\n\n// src/switch.dom.ts\nimport { createScope } from \"@zag-js/dom-query\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `switch:${ctx.id}`,\n getLabelId: (ctx) => ctx.ids?.label ?? `switch:${ctx.id}:label`,\n getThumbId: (ctx) => ctx.ids?.thumb ?? `switch:${ctx.id}:thumb`,\n getControlId: (ctx) => ctx.ids?.control ?? `switch:${ctx.id}:control`,\n getRootEl: (ctx) => dom.getById(ctx, dom.getRootId(ctx)),\n getHiddenInputId: (ctx) => ctx.ids?.input ?? `switch:${ctx.id}:input`,\n getHiddenInputEl: (ctx) => dom.getById(ctx, dom.getHiddenInputId(ctx))\n});\n\n// src/switch.connect.ts\nfunction connect(state, send, normalize) {\n const disabled = state.context.isDisabled;\n const focused = !disabled && state.context.focused;\n const checked = state.context.checked;\n const readOnly = state.context.readOnly;\n const dataAttrs = {\n \"data-active\": dataAttr(state.context.active),\n \"data-focus\": dataAttr(focused),\n \"data-readonly\": dataAttr(readOnly),\n \"data-hover\": dataAttr(state.context.hovered),\n \"data-disabled\": dataAttr(disabled),\n \"data-state\": state.context.checked ? \"checked\" : \"unchecked\",\n \"data-invalid\": dataAttr(state.context.invalid)\n };\n return {\n checked,\n disabled,\n focused,\n setChecked(checked2) {\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: false });\n },\n toggleChecked() {\n send({ type: \"CHECKED.TOGGLE\", checked, isTrusted: false });\n },\n rootProps: normalize.label({\n ...parts.root.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getRootId(state.context),\n htmlFor: dom.getHiddenInputId(state.context),\n onPointerMove() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: true } });\n },\n onPointerLeave() {\n if (disabled)\n return;\n send({ type: \"CONTEXT.SET\", context: { hovered: false } });\n },\n onClick(event) {\n if (event.target === dom.getHiddenInputEl(state.context)) {\n event.stopPropagation();\n }\n }\n }),\n labelProps: normalize.element({\n ...parts.label.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getLabelId(state.context)\n }),\n thumbProps: normalize.element({\n ...parts.thumb.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getThumbId(state.context),\n \"aria-hidden\": true\n }),\n controlProps: normalize.element({\n ...parts.control.attrs,\n ...dataAttrs,\n dir: state.context.dir,\n id: dom.getControlId(state.context),\n \"aria-hidden\": true\n }),\n hiddenInputProps: normalize.input({\n id: dom.getHiddenInputId(state.context),\n type: \"checkbox\",\n required: state.context.required,\n defaultChecked: checked,\n disabled,\n \"aria-labelledby\": dom.getLabelId(state.context),\n \"aria-invalid\": state.context.invalid,\n name: state.context.name,\n form: state.context.form,\n value: state.context.value,\n style: visuallyHiddenStyle,\n onChange(event) {\n if (readOnly) {\n event.preventDefault();\n return;\n }\n const checked2 = event.currentTarget.checked;\n send({ type: \"CHECKED.SET\", checked: checked2, isTrusted: true });\n }\n })\n };\n}\n\n// src/switch.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { trackFocusVisible, trackPress } from \"@zag-js/dom-event\";\nimport { dispatchInputCheckedEvent, trackFormControl } from \"@zag-js/form-utils\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n id: \"switch\",\n initial: \"ready\",\n context: {\n checked: false,\n label: \"switch\",\n value: \"on\",\n disabled: false,\n ...ctx,\n fieldsetDisabled: false\n },\n computed: {\n isDisabled: (ctx2) => ctx2.disabled || ctx2.fieldsetDisabled\n },\n watch: {\n disabled: \"removeFocusIfNeeded\",\n checked: \"syncInputElement\"\n },\n activities: [\"trackFormControlState\", \"trackPressEvent\", \"trackFocusVisible\"],\n on: {\n \"CHECKED.TOGGLE\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"toggleChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"toggleChecked\"]\n }\n ],\n \"CHECKED.SET\": [\n {\n guard: not(\"isTrusted\"),\n actions: [\"setChecked\", \"dispatchChangeEvent\"]\n },\n {\n actions: [\"setChecked\"]\n }\n ],\n \"CONTEXT.SET\": {\n actions: [\"setContext\"]\n }\n },\n states: {\n ready: {}\n }\n },\n {\n guards: {\n isTrusted: (_ctx, evt) => !!evt.isTrusted\n },\n activities: {\n trackPressEvent(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackPress({\n pointerNode: dom.getRootEl(ctx2),\n keyboardNode: dom.getHiddenInputEl(ctx2),\n isValidKey: (event) => event.key === \" \",\n onPress: () => ctx2.active = false,\n onPressStart: () => ctx2.active = true,\n onPressEnd: () => ctx2.active = false\n });\n },\n trackFocusVisible(ctx2) {\n if (ctx2.isDisabled)\n return;\n return trackFocusVisible(dom.getHiddenInputEl(ctx2), {\n onFocus: () => ctx2.focused = true,\n onBlur: () => ctx2.focused = false\n });\n },\n trackFormControlState(ctx2, _evt, { send, initialContext }) {\n return trackFormControl(dom.getHiddenInputEl(ctx2), {\n onFieldsetDisabledChange(disabled) {\n ctx2.fieldsetDisabled = disabled;\n },\n onFormReset() {\n send({ type: \"CHECKED.SET\", checked: !!initialContext.checked, src: \"form-reset\" });\n }\n });\n }\n },\n actions: {\n setContext(ctx2, evt) {\n Object.assign(ctx2, evt.context);\n },\n syncInputElement(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n if (!inputEl)\n return;\n inputEl.checked = !!ctx2.checked;\n },\n removeFocusIfNeeded(ctx2) {\n if (ctx2.disabled && ctx2.focused) {\n ctx2.focused = false;\n }\n },\n setChecked(ctx2, evt) {\n set.checked(ctx2, evt.checked);\n },\n toggleChecked(ctx2, _evt) {\n set.checked(ctx2, !ctx2.checked);\n },\n dispatchChangeEvent(ctx2) {\n const inputEl = dom.getHiddenInputEl(ctx2);\n dispatchInputCheckedEvent(inputEl, { checked: ctx2.checked });\n }\n }\n }\n );\n}\nvar invoke = {\n change: (ctx) => {\n ctx.onCheckedChange?.({ checked: ctx.checked });\n }\n};\nvar set = {\n checked: (ctx, checked) => {\n if (isEqual(ctx.checked, checked))\n return;\n ctx.checked = checked;\n invoke.change(ctx);\n }\n};\n\n// src/switch.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"checked\",\n \"dir\",\n \"disabled\",\n \"form\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"invalid\",\n \"label\",\n \"name\",\n \"onCheckedChange\",\n \"readOnly\",\n \"required\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nexport {\n anatomy,\n connect,\n machine,\n props,\n splitProps\n};\n//# sourceMappingURL=index.mjs.map","// src/attrs.ts\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\n\n// src/constants.ts\nvar MAX_Z_INDEX = 2147483647;\n\n// src/is.ts\nvar isHTMLElement = (v) => typeof v === \"object\" && v?.nodeType === Node.ELEMENT_NODE && typeof v?.nodeName === \"string\";\nvar isDocument = (el) => el.nodeType === Node.DOCUMENT_NODE;\nvar isWindow = (el) => el != null && el === el.window;\nvar isVisualViewport = (el) => el != null && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node))\n return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => el.nodeType !== void 0;\nvar isShadowRoot = (el) => el && isNode(el) && el.nodeType === Node.DOCUMENT_FRAGMENT_NODE && \"host\" in el;\n\n// src/contains.ts\nfunction contains(parent, child) {\n if (!parent || !child)\n return false;\n if (!isHTMLElement(parent) || !isHTMLElement(child))\n return false;\n return parent === child || parent.contains(child);\n}\n\n// src/env.ts\nfunction getDocument(el) {\n if (isDocument(el))\n return el;\n if (isWindow(el))\n return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el))\n return getWindow(el.host);\n if (isDocument(el))\n return el.defaultView ?? window;\n if (isHTMLElement(el))\n return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(el) {\n const doc = getDocument(el);\n let activeElement = doc.activeElement;\n while (activeElement?.shadowRoot) {\n const el2 = activeElement.shadowRoot.activeElement;\n if (el2 === activeElement)\n break;\n else\n activeElement = el2;\n }\n return activeElement;\n}\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(navigator.userAgent);\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isMac = () => pt(/^Mac/) && !isTouchDevice();\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/firefox\\//i);\nvar isApple = () => pt(/mac|iphone|ipad|ipod/i);\nvar isIos = () => pt(/iP(hone|ad|od)|iOS/);\nvar isWebKit = () => ua(/AppleWebKit/);\n\n// src/event.ts\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n return value.slice(0, selectionStart) + event.data + value.slice(selectionEnd);\n}\nfunction getEventTarget(event) {\n return event.composedPath?.()[0] ?? event.target;\n}\nvar isSelfTarget = (event) => {\n return contains(event.currentTarget, getEventTarget(event));\n};\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const isAppleDevice = isApple();\n if (isAppleDevice && !event.metaKey)\n return false;\n if (!isAppleDevice && !event.ctrlKey)\n return false;\n const localName = element.localName;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element)\n return false;\n const localName = element.localName;\n if (!event.altKey)\n return false;\n if (localName === \"a\")\n return true;\n if (localName === \"button\" && element.type === \"submit\")\n return true;\n if (localName === \"input\" && element.type === \"submit\")\n return true;\n return false;\n}\n\n// src/get-by-id.ts\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1)\n return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\n\n// src/sanitize.ts\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128)\n return char;\n if (code >= 128 && code <= 255)\n return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\n\n// src/get-by-text.ts\nvar getValueText = (item) => sanitize(item.dataset.valuetext ?? item.textContent ?? \"\");\nvar match = (valueText, query2) => valueText.trim().toLowerCase().startsWith(query2.toLowerCase());\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nfunction getByText(v, text, currentId, itemToId = defaultItemToId) {\n const index = currentId ? indexOfId(v, currentId, itemToId) : -1;\n let items = currentId ? wrap(v, index) : v;\n const isSingleKey = text.length === 1;\n if (isSingleKey) {\n items = items.filter((item) => itemToId(item) !== currentId);\n }\n return items.find((item) => match(getValueText(item), text));\n}\n\n// src/get-by-typeahead.ts\nfunction getByTypeaheadImpl(_items, options) {\n const { state, activeId, key, timeout = 350, itemToId } = options;\n const search = state.keysSoFar + key;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query2 = isRepeated ? search[0] : search;\n let items = _items.slice();\n const next = getByText(items, query2, activeId, itemToId);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value) {\n state.keysSoFar = value;\n cleanup();\n if (value !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return next;\n}\nvar getByTypeahead = /* @__PURE__ */ Object.assign(getByTypeaheadImpl, {\n defaultOptions: { keysSoFar: \"\", timer: -1 },\n isValidEvent: isValidTypeaheadEvent\n});\nfunction isValidTypeaheadEvent(event) {\n return event.key.length === 1 && !event.ctrlKey && !event.metaKey;\n}\n\n// src/get-computed-style.ts\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\n\n// src/get-parent-node.ts\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") {\n return node;\n }\n const result = (\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot || // DOM Element detected.\n node.parentNode || // ShadowRoot detected.\n isShadowRoot(node) && node.host || // Fallback.\n getDocumentElement(node)\n );\n return isShadowRoot(result) ? result.host : result;\n}\n\n// src/get-scroll-position.ts\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\n\n// src/tabbable.ts\nvar isHTMLElement2 = (element) => typeof element === \"object\" && element !== null && element.nodeType === 1;\nvar isFrame = (element) => isHTMLElement2(element) && element.tagName === \"IFRAME\";\nfunction isVisible(el) {\n if (!isHTMLElement2(el))\n return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n}\nfunction hasNegativeTabIndex(element) {\n const tabIndex = parseInt(element.getAttribute(\"tabindex\") || \"0\", 10);\n return tabIndex < 0;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, includeContainer = false) => {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement2(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = elements.filter(isFocusable);\n focusableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.splice(i, 1, ...getFocusables(frameBody));\n }\n });\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!element || element.closest(\"[inert]\"))\n return false;\n return element.matches(focusableSelector) && isVisible(element);\n}\nfunction getFirstFocusable(container, includeContainer) {\n const [first] = getFocusables(container, includeContainer);\n return first || null;\n}\nfunction getTabbables(container, includeContainer) {\n if (!container)\n return [];\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const tabbableElements = elements.filter(isTabbable);\n if (includeContainer && isTabbable(container)) {\n tabbableElements.unshift(container);\n }\n tabbableElements.forEach((element, i) => {\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n const allFrameTabbable = getTabbables(frameBody);\n tabbableElements.splice(i, 1, ...allFrameTabbable);\n }\n });\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (el != null && el.tabIndex > 0)\n return true;\n return isFocusable(el) && !hasNegativeTabIndex(el);\n}\nfunction getFirstTabbable(container, includeContainer) {\n const [first] = getTabbables(container, includeContainer);\n return first || null;\n}\nfunction getLastTabbable(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, includeContainer) {\n const elements = getTabbables(container, includeContainer);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, current) {\n const tabbables = getTabbables(container);\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? doc.activeElement;\n if (!currentElement)\n return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\n\n// src/initial-focus.ts\nfunction getInitialFocus(container, getInitialEl) {\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = container?.querySelector(\"[data-autofocus],[autofocus]\"));\n node || (node = getFirstTabbable(container));\n return node || container || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container)\n return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n const doc = container.ownerDocument || document;\n if (doc.activeElement === firstTabbable && event.shiftKey)\n return false;\n if (doc.activeElement === lastTabbable && !event.shiftKey)\n return false;\n if (!firstTabbable && !lastTabbable)\n return false;\n return true;\n}\n\n// src/is-editable-element.ts\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) {\n return false;\n }\n try {\n const win = getWindow(el);\n return el instanceof win.HTMLInputElement && el.selectionStart != null || /(textarea|select)/.test(el.localName) || el.isContentEditable;\n } catch {\n return false;\n }\n}\n\n// src/is-hidden-element.ts\nfunction isHiddenElement(node) {\n if (node.parentElement && isHiddenElement(node.parentElement))\n return true;\n return node.hidden;\n}\n\n// src/is-overflow-element.ts\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && ![\"inline\", \"contents\"].includes(display);\n}\n\n// src/raf.ts\nfunction nextTick(fn) {\n const set2 = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set2.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set2.forEach((fn2) => fn2());\n };\n}\nfunction raf(fn) {\n const id = globalThis.requestAnimationFrame(fn);\n return () => {\n globalThis.cancelAnimationFrame(id);\n };\n}\n\n// src/observe-attributes.ts\nfunction observeAttributesImpl(node, options) {\n if (!node)\n return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/observe-children.ts\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node)\n return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups2.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/overflow.ts\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) {\n return getDocument(parentNode).body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getRect = (el) => {\n if (isHTMLElement(el)) {\n return el.getBoundingClientRect();\n }\n if (isVisualViewport(el)) {\n return { top: 0, left: 0, bottom: el.height, right: el.width };\n }\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el))\n return true;\n const ancestorRect = getRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\n\n// src/proxy-tab-focus.ts\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\")\n return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, true);\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && (doc.activeElement === firstTabbable || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && doc.activeElement === triggerElement) {\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (doc.activeElement === lastTabbable || noTabbableElements)) {\n elementToFocus = getNextTabbable(body, triggerElement);\n }\n if (!elementToFocus)\n return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n doc?.addEventListener(\"keydown\", onKeyDown, true);\n return () => {\n doc?.removeEventListener(\"keydown\", onKeyDown, true);\n };\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups2 = [];\n cleanups2.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups2.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups2.forEach((fn) => fn?.());\n };\n}\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\n\n// src/scope.ts\nfunction createScope(methods) {\n const screen = {\n getRootNode: (ctx) => ctx.getRootNode?.() ?? document,\n getDoc: (ctx) => getDocument(screen.getRootNode(ctx)),\n getWin: (ctx) => screen.getDoc(ctx).defaultView ?? window,\n getActiveElement: (ctx) => screen.getDoc(ctx).activeElement,\n isActiveElement: (ctx, elem) => elem === screen.getActiveElement(ctx),\n getById: (ctx, id) => screen.getRootNode(ctx).getElementById(id),\n setValue: (elem, value) => {\n if (elem == null || value == null)\n return;\n const valueAsString = value.toString();\n if (elem.value === valueAsString)\n return;\n elem.value = value.toString();\n }\n };\n return { ...screen, ...methods };\n}\n\n// src/scroll-into-view.ts\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) {\n return;\n }\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) {\n return;\n }\n el.scrollIntoView(scrollOptions);\n}\n\n// src/set.ts\nvar cleanups = /* @__PURE__ */ new WeakMap();\nfunction set(element, key, setup) {\n if (!cleanups.has(element)) {\n cleanups.set(element, /* @__PURE__ */ new Map());\n }\n const elementCleanups = cleanups.get(element);\n const prevCleanup = elementCleanups.get(key);\n if (!prevCleanup) {\n elementCleanups.set(key, setup());\n return () => {\n elementCleanups.get(key)?.();\n elementCleanups.delete(key);\n };\n }\n const cleanup = setup();\n const nextCleanup = () => {\n cleanup();\n prevCleanup();\n elementCleanups.delete(key);\n };\n elementCleanups.set(key, nextCleanup);\n return () => {\n const isCurrent = elementCleanups.get(key) === nextCleanup;\n if (!isCurrent)\n return;\n cleanup();\n elementCleanups.set(key, prevCleanup);\n };\n}\nfunction setAttribute(element, attr, value) {\n const setup = () => {\n const previousValue = element.getAttribute(attr);\n element.setAttribute(attr, value);\n return () => {\n if (previousValue == null) {\n element.removeAttribute(attr);\n } else {\n element.setAttribute(attr, previousValue);\n }\n };\n };\n return set(element, attr, setup);\n}\nfunction setProperty(element, property, value) {\n const setup = () => {\n const exists = property in element;\n const previousValue = element[property];\n element[property] = value;\n return () => {\n if (!exists) {\n delete element[property];\n } else {\n element[property] = previousValue;\n }\n };\n };\n return set(element, property, setup);\n}\nfunction setStyle(element, style) {\n if (!element)\n return () => {\n };\n const setup = () => {\n const prevStyle = element.style.cssText;\n Object.assign(element.style, style);\n return () => {\n element.style.cssText = prevStyle;\n };\n };\n return set(element, \"style\", setup);\n}\n\n// src/visually-hidden.ts\nvar visuallyHiddenStyle = {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n};\n\n// src/wait-for.ts\nvar fps = 1e3 / 60;\nfunction waitForElement(query2, cb) {\n const el = query2();\n if (isHTMLElement(el) && el.isConnected) {\n cb(el);\n return () => void 0;\n } else {\n const timerId = setInterval(() => {\n const el2 = query2();\n if (isHTMLElement(el2) && el2.isConnected) {\n cb(el2);\n clearInterval(timerId);\n }\n }, fps);\n return () => clearInterval(timerId);\n }\n}\nfunction waitForElements(queries, cb) {\n const cleanups2 = [];\n queries?.forEach((query2) => {\n const clean = waitForElement(query2, cb);\n cleanups2.push(clean);\n });\n return () => {\n cleanups2.forEach((fn) => fn());\n };\n}\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n contains,\n createScope,\n dataAttr,\n defaultItemToId,\n getActiveElement,\n getBeforeInputValue,\n getByText,\n getByTypeahead,\n getComputedStyle,\n getDocument,\n getDocumentElement,\n getEventTarget,\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getInitialFocus,\n getLastTabbable,\n getNearestOverflowAncestor,\n getNextTabbable,\n getNodeName,\n getOverflowAncestors,\n getParentNode,\n getPlatform,\n getScrollPosition,\n getTabbableEdges,\n getTabbables,\n getWindow,\n indexOfId,\n isApple,\n isDocument,\n isDom,\n isDownloadingEvent,\n isEditableElement,\n isFirefox,\n isFocusable,\n isHTMLElement,\n isHiddenElement,\n isInView,\n isIos,\n isMac,\n isNode,\n isOpeningInNewTab,\n isOverflowElement,\n isRootElement,\n isSafari,\n isSelfTarget,\n isShadowRoot,\n isTabbable,\n isTouchDevice,\n isValidTabEvent,\n isVisualViewport,\n isWebKit,\n isWindow,\n itemById,\n nextById,\n nextTick,\n observeAttributes,\n observeChildren,\n prevById,\n proxyTabFocus,\n query,\n queryAll,\n raf,\n scrollIntoView,\n set,\n setAttribute,\n setProperty,\n setStyle,\n visuallyHiddenStyle,\n waitForElement,\n waitForElements\n};\n//# sourceMappingURL=index.mjs.map","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get() {\n return fn;\n }\n });\n}\n\n// src/create-props.ts\nvar createProps = () => (props) => Array.from(new Set(props));\nexport {\n createNormalizer,\n createProps\n};\n//# sourceMappingURL=index.mjs.map","// src/tabs.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"tabs\").parts(\"root\", \"list\", \"trigger\", \"content\", \"indicator\");\nvar parts = anatomy.build();\n\n// src/tabs.connect.ts\nimport { getEventKey, getNativeEvent } from \"@zag-js/dom-event\";\nimport { dataAttr, isSafari, isSelfTarget } from \"@zag-js/dom-query\";\n\n// src/tabs.dom.ts\nimport { createScope, itemById, nextById, prevById, queryAll } from \"@zag-js/dom-query\";\nimport { first, last } from \"@zag-js/utils\";\nvar dom = createScope({\n getRootId: (ctx) => ctx.ids?.root ?? `tabs:${ctx.id}`,\n getListId: (ctx) => ctx.ids?.list ?? `tabs:${ctx.id}:list`,\n getContentId: (ctx, id) => ctx.ids?.content ?? `tabs:${ctx.id}:content-${id}`,\n getTriggerId: (ctx, id) => ctx.ids?.trigger ?? `tabs:${ctx.id}:trigger-${id}`,\n getIndicatorId: (ctx) => ctx.ids?.indicator ?? `tabs:${ctx.id}:indicator`,\n getListEl: (ctx) => dom.getById(ctx, dom.getListId(ctx)),\n getContentEl: (ctx, id) => dom.getById(ctx, dom.getContentId(ctx, id)),\n getTriggerEl: (ctx, id) => dom.getById(ctx, dom.getTriggerId(ctx, id)),\n getIndicatorEl: (ctx) => dom.getById(ctx, dom.getIndicatorId(ctx)),\n getElements: (ctx) => {\n const ownerId = CSS.escape(dom.getListId(ctx));\n const selector = `[role=tab][data-ownedby='${ownerId}']:not([disabled])`;\n return queryAll(dom.getListEl(ctx), selector);\n },\n getFirstTriggerEl: (ctx) => first(dom.getElements(ctx)),\n getLastTriggerEl: (ctx) => last(dom.getElements(ctx)),\n getNextTriggerEl: (ctx, id) => nextById(dom.getElements(ctx), dom.getTriggerId(ctx, id), ctx.loopFocus),\n getPrevTriggerEl: (ctx, id) => prevById(dom.getElements(ctx), dom.getTriggerId(ctx, id), ctx.loopFocus),\n getSelectedContentEl: (ctx) => {\n if (!ctx.value)\n return;\n return dom.getContentEl(ctx, ctx.value);\n },\n getSelectedTriggerEl: (ctx) => {\n if (!ctx.value)\n return;\n return dom.getTriggerEl(ctx, ctx.value);\n },\n getOffsetRect: (el) => {\n return {\n left: el?.offsetLeft ?? 0,\n top: el?.offsetTop ?? 0,\n width: el?.offsetWidth ?? 0,\n height: el?.offsetHeight ?? 0\n };\n },\n getRectById: (ctx, id) => {\n const tab = itemById(dom.getElements(ctx), dom.getTriggerId(ctx, id));\n return dom.resolveRect(dom.getOffsetRect(tab));\n },\n resolveRect: (rect) => ({\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n left: `${rect.left}px`,\n top: `${rect.top}px`\n })\n});\n\n// src/tabs.connect.ts\nfunction connect(state, send, normalize) {\n const translations = state.context.translations;\n const focused = state.matches(\"focused\");\n const isVertical = state.context.orientation === \"vertical\";\n const isHorizontal = state.context.orientation === \"horizontal\";\n const composite = state.context.composite;\n const indicator = state.context.indicatorState;\n function getTriggerState(props2) {\n return {\n selected: state.context.value === props2.value,\n focused: state.context.focusedValue === props2.value,\n disabled: !!props2.disabled\n };\n }\n return {\n value: state.context.value,\n focusedValue: state.context.focusedValue,\n setValue(value) {\n send({ type: \"SET_VALUE\", value });\n },\n clearValue() {\n send({ type: \"CLEAR_VALUE\" });\n },\n setIndicatorRect(value) {\n const id = dom.getTriggerId(state.context, value);\n send({ type: \"SET_INDICATOR_RECT\", id });\n },\n syncTabIndex() {\n send(\"SYNC_TAB_INDEX\");\n },\n selectNext(fromValue) {\n send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectNext\" });\n send({ type: \"ARROW_NEXT\", src: \"selectNext\" });\n },\n selectPrev(fromValue) {\n send({ type: \"TAB_FOCUS\", value: fromValue, src: \"selectPrev\" });\n send({ type: \"ARROW_PREV\", src: \"selectPrev\" });\n },\n focus() {\n dom.getSelectedTriggerEl(state.context)?.focus();\n },\n getTriggerState,\n rootProps: normalize.element({\n ...parts.root.attrs,\n id: dom.getRootId(state.context),\n \"data-orientation\": state.context.orientation,\n \"data-focus\": dataAttr(focused),\n dir: state.context.dir\n }),\n listProps: normalize.element({\n ...parts.list.attrs,\n id: dom.getListId(state.context),\n role: \"tablist\",\n dir: state.context.dir,\n \"data-focus\": dataAttr(focused),\n \"aria-orientation\": state.context.orientation,\n \"data-orientation\": state.context.orientation,\n \"aria-label\": translations?.listLabel,\n onKeyDown(event) {\n if (event.defaultPrevented)\n return;\n const evt = getNativeEvent(event);\n if (!isSelfTarget(evt))\n return;\n if (evt.isComposing)\n return;\n const keyMap = {\n ArrowDown() {\n if (isHorizontal)\n return;\n send({ type: \"ARROW_NEXT\", key: \"ArrowDown\" });\n },\n ArrowUp() {\n if (isHorizontal)\n return;\n send({ type: \"ARROW_PREV\", key: \"ArrowUp\" });\n },\n ArrowLeft() {\n if (isVertical)\n return;\n send({ type: \"ARROW_PREV\", key: \"ArrowLeft\" });\n },\n ArrowRight() {\n if (isVertical)\n return;\n send({ type: \"ARROW_NEXT\", key: \"ArrowRight\" });\n },\n Home() {\n send(\"HOME\");\n },\n End() {\n send(\"END\");\n },\n Enter() {\n send({ type: \"ENTER\" });\n }\n };\n let key = getEventKey(event, state.context);\n const exec = keyMap[key];\n if (exec) {\n event.preventDefault();\n exec(event);\n }\n }\n }),\n getTriggerProps(props2) {\n const { value, disabled } = props2;\n const triggerState = getTriggerState(props2);\n return normalize.button({\n ...parts.trigger.attrs,\n role: \"tab\",\n type: \"button\",\n disabled,\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n \"data-disabled\": dataAttr(disabled),\n \"aria-disabled\": disabled,\n \"data-value\": value,\n \"aria-selected\": triggerState.selected,\n \"data-selected\": dataAttr(triggerState.selected),\n \"data-focus\": dataAttr(triggerState.focused),\n \"aria-controls\": triggerState.selected ? dom.getContentId(state.context, value) : void 0,\n \"data-ownedby\": dom.getListId(state.context),\n id: dom.getTriggerId(state.context, value),\n tabIndex: triggerState.selected && composite ? 0 : -1,\n onFocus() {\n send({ type: \"TAB_FOCUS\", value });\n },\n onBlur(event) {\n const target = event.relatedTarget;\n if (target?.getAttribute(\"role\") !== \"tab\") {\n send({ type: \"TAB_BLUR\" });\n }\n },\n onClick(event) {\n if (event.defaultPrevented)\n return;\n if (disabled)\n return;\n if (isSafari()) {\n event.currentTarget.focus();\n }\n send({ type: \"TAB_CLICK\", value });\n }\n });\n },\n getContentProps(props2) {\n const { value } = props2;\n const selected = state.context.value === value;\n return normalize.element({\n ...parts.content.attrs,\n dir: state.context.dir,\n id: dom.getContentId(state.context, value),\n tabIndex: composite ? 0 : -1,\n \"aria-labelledby\": dom.getTriggerId(state.context, value),\n role: \"tabpanel\",\n \"data-ownedby\": dom.getListId(state.context),\n \"data-selected\": dataAttr(selected),\n \"data-orientation\": state.context.orientation,\n hidden: !selected\n });\n },\n indicatorProps: normalize.element({\n id: dom.getIndicatorId(state.context),\n ...parts.indicator.attrs,\n dir: state.context.dir,\n \"data-orientation\": state.context.orientation,\n style: {\n \"--transition-property\": \"left, right, top, bottom, width, height\",\n \"--left\": indicator.rect?.left,\n \"--top\": indicator.rect?.top,\n \"--width\": indicator.rect?.width,\n \"--height\": indicator.rect?.height,\n position: \"absolute\",\n willChange: \"var(--transition-property)\",\n transitionProperty: \"var(--transition-property)\",\n transitionDuration: indicator.transition ? \"var(--transition-duration, 150ms)\" : \"0ms\",\n transitionTimingFunction: \"var(--transition-timing-function)\",\n [isHorizontal ? \"left\" : \"top\"]: isHorizontal ? \"var(--left)\" : \"var(--top)\"\n }\n })\n };\n}\n\n// src/tabs.machine.ts\nimport { createMachine, guards } from \"@zag-js/core\";\nimport { clickIfLink } from \"@zag-js/dom-event\";\nimport { nextTick, raf, getFocusables } from \"@zag-js/dom-query\";\nimport { trackElementRect } from \"@zag-js/element-rect\";\nimport { compact, isEqual } from \"@zag-js/utils\";\nvar { not } = guards;\nfunction machine(userContext) {\n const ctx = compact(userContext);\n return createMachine(\n {\n initial: \"idle\",\n context: {\n dir: \"ltr\",\n orientation: \"horizontal\",\n activationMode: \"automatic\",\n value: null,\n loopFocus: true,\n composite: true,\n ...ctx,\n focusedValue: ctx.value ?? null,\n indicatorState: {\n rendered: false,\n transition: false,\n rect: { left: \"0px\", top: \"0px\", width: \"0px\", height: \"0px\" }\n }\n },\n watch: {\n value: [\"allowIndicatorTransition\", \"syncIndicatorRect\", \"syncTabIndex\", \"clickIfLink\"],\n dir: [\"syncIndicatorRect\"],\n orientation: [\"syncIndicatorRect\"]\n },\n on: {\n SET_VALUE: {\n actions: \"setValue\"\n },\n CLEAR_VALUE: {\n actions: \"clearValue\"\n },\n SET_INDICATOR_RECT: {\n actions: \"setIndicatorRect\"\n },\n SYNC_TAB_INDEX: {\n actions: \"syncTabIndex\"\n }\n },\n created: [\"syncFocusedValue\"],\n entry: [\"checkRenderedElements\", \"syncIndicatorRect\", \"syncTabIndex\"],\n exit: [\"cleanupObserver\"],\n states: {\n idle: {\n on: {\n TAB_FOCUS: {\n target: \"focused\",\n actions: \"setFocusedValue\"\n },\n TAB_CLICK: {\n target: \"focused\",\n actions: [\"setFocusedValue\", \"setValue\"]\n }\n }\n },\n focused: {\n on: {\n TAB_CLICK: {\n target: \"focused\",\n actions: [\"setFocusedValue\", \"setValue\"]\n },\n ARROW_PREV: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusPrevTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusPrevTab\"\n }\n ],\n ARROW_NEXT: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusNextTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusNextTab\"\n }\n ],\n HOME: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusFirstTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusFirstTab\"\n }\n ],\n END: [\n {\n guard: \"selectOnFocus\",\n actions: [\"focusLastTab\", \"selectFocusedTab\"]\n },\n {\n actions: \"focusLastTab\"\n }\n ],\n ENTER: {\n guard: not(\"selectOnFocus\"),\n actions: \"selectFocusedTab\"\n },\n TAB_FOCUS: {\n actions: [\"setFocusedValue\"]\n },\n TAB_BLUR: {\n target: \"idle\",\n actions: \"clearFocusedValue\"\n }\n }\n }\n }\n },\n {\n guards: {\n selectOnFocus: (ctx2) => ctx2.activationMode === \"automatic\"\n },\n actions: {\n syncFocusedValue(ctx2) {\n if (ctx2.value != null && ctx2.focusedValue == null) {\n ctx2.focusedValue = ctx2.value;\n }\n },\n selectFocusedTab(ctx2) {\n raf(() => {\n set.value(ctx2, ctx2.focusedValue);\n });\n },\n setFocusedValue(ctx2, evt) {\n if (evt.value == null)\n return;\n set.focusedValue(ctx2, evt.value);\n },\n clearFocusedValue(ctx2) {\n set.focusedValue(ctx2, null);\n },\n setValue(ctx2, evt) {\n set.value(ctx2, evt.value);\n },\n clearValue(ctx2) {\n set.value(ctx2, null);\n },\n focusFirstTab(ctx2) {\n raf(() => {\n dom.getFirstTriggerEl(ctx2)?.focus();\n });\n },\n focusLastTab(ctx2) {\n raf(() => {\n dom.getLastTriggerEl(ctx2)?.focus();\n });\n },\n focusNextTab(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getNextTriggerEl(ctx2, ctx2.focusedValue);\n raf(() => {\n if (ctx2.composite) {\n triggerEl?.focus();\n } else if (triggerEl?.dataset.value != null) {\n set.focusedValue(ctx2, triggerEl.dataset.value);\n }\n });\n },\n focusPrevTab(ctx2) {\n if (!ctx2.focusedValue)\n return;\n const triggerEl = dom.getPrevTriggerEl(ctx2, ctx2.focusedValue);\n raf(() => {\n if (ctx2.composite) {\n triggerEl?.focus();\n } else if (triggerEl?.dataset.value != null) {\n set.focusedValue(ctx2, triggerEl.dataset.value);\n }\n });\n },\n checkRenderedElements(ctx2) {\n ctx2.indicatorState.rendered = !!dom.getIndicatorEl(ctx2);\n },\n syncTabIndex(ctx2) {\n raf(() => {\n const contentEl = dom.getSelectedContentEl(ctx2);\n if (!contentEl)\n return;\n const focusables = getFocusables(contentEl);\n if (focusables.length > 0) {\n contentEl.removeAttribute(\"tabindex\");\n } else {\n contentEl.setAttribute(\"tabindex\", \"0\");\n }\n });\n },\n cleanupObserver(ctx2) {\n ctx2.indicatorCleanup?.();\n },\n allowIndicatorTransition(ctx2) {\n ctx2.indicatorState.transition = true;\n },\n setIndicatorRect(ctx2, evt) {\n const value = evt.id ?? ctx2.value;\n if (!ctx2.indicatorState.rendered || !value)\n return;\n const triggerEl = dom.getTriggerEl(ctx2, value);\n if (!triggerEl)\n return;\n ctx2.indicatorState.rect = dom.getRectById(ctx2, value);\n nextTick(() => {\n ctx2.indicatorState.transition = false;\n });\n },\n syncIndicatorRect(ctx2) {\n ctx2.indicatorCleanup?.();\n const value = ctx2.value;\n if (!ctx2.indicatorState.rendered || !value)\n return;\n const triggerEl = dom.getSelectedTriggerEl(ctx2);\n if (!triggerEl)\n return;\n ctx2.indicatorCleanup = trackElementRect(triggerEl, {\n getRect(el) {\n return dom.getOffsetRect(el);\n },\n onChange(rect) {\n ctx2.indicatorState.rect = dom.resolveRect(rect);\n nextTick(() => {\n ctx2.indicatorState.transition = false;\n });\n }\n });\n },\n clickIfLink(ctx2) {\n clickIfLink(dom.getSelectedTriggerEl(ctx2));\n }\n }\n }\n );\n}\nvar invoke = {\n change: (ctx) => {\n if (ctx.value == null)\n return;\n ctx.onValueChange?.({ value: ctx.value });\n },\n focusChange: (ctx) => {\n if (ctx.focusedValue == null)\n return;\n ctx.onFocusChange?.({ focusedValue: ctx.focusedValue });\n }\n};\nvar set = {\n value: (ctx, value) => {\n if (isEqual(value, ctx.value))\n return;\n ctx.value = value;\n invoke.change(ctx);\n },\n focusedValue: (ctx, value) => {\n if (isEqual(value, ctx.focusedValue))\n return;\n ctx.focusedValue = value;\n invoke.focusChange(ctx);\n }\n};\n\n// src/tabs.props.ts\nimport { createProps } from \"@zag-js/types\";\nimport { createSplitProps } from \"@zag-js/utils\";\nvar props = createProps()([\n \"activationMode\",\n \"composite\",\n \"dir\",\n \"getRootNode\",\n \"id\",\n \"ids\",\n \"loopFocus\",\n \"onFocusChange\",\n \"onValueChange\",\n \"orientation\",\n \"translations\",\n \"value\"\n]);\nvar splitProps = createSplitProps(props);\nvar triggerProps = createProps()([\"disabled\", \"value\"]);\nvar splitTriggerProps = createSplitProps(triggerProps);\nvar contentProps = createProps()([\"value\"]);\nvar splitContentProps = createSplitProps(contentProps);\nexport {\n anatomy,\n connect,\n contentProps,\n machine,\n props,\n splitContentProps,\n splitProps,\n splitTriggerProps,\n triggerProps\n};\n//# sourceMappingURL=index.mjs.map","import { switchAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const switchRecipe = defineSlotRecipe({\n base: {\n control: {\n _focus: {\n ring: '1px solid {colors.secondary.300}',\n },\n alignItems: 'center',\n background: {\n _checked: {\n base: 'primary.500',\n _disabled: 'grey.200',\n },\n base: 'grey.100',\n _hover: {\n base: 'grey.200',\n _checked: 'primary.700',\n },\n },\n borderRadius: 'full',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: '0',\n transitionDuration: 'normal',\n transitionProperty: 'background',\n transitionTimingFunction: 'default',\n },\n label: {\n fontFamily: 'satoshi',\n color: 'text',\n _disabled: {\n color: 'text.disabled',\n userSelect: 'none',\n },\n },\n root: {\n WebkitTapHighlightColor: 'transparent',\n _disabled: {\n pointerEvents: 'none',\n },\n alignItems: 'center',\n cursor: 'pointer',\n display: 'flex',\n position: 'relative',\n },\n thumb: {\n background: 'white',\n borderRadius: 'full',\n transitionDuration: 'normal',\n transitionProperty: 'transform',\n transitionTimingFunction: 'default',\n _checked: {\n transform: 'translateX(16px)',\n },\n },\n },\n className: 'switch',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Switch', 'SwitchField'],\n slots: switchAnatomy.keys(),\n variants: {\n size: {\n md: {\n control: {\n height: 'size-16',\n p: 'space-2',\n width: 'size-32',\n },\n label: {\n textStyle: 'body.md',\n },\n root: {\n gap: 'space-4',\n },\n thumb: {\n height: 'size-12',\n width: 'size-12',\n },\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const textRecipe = defineRecipe({\n className: 'text',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Text', 'AppLink'],\n staticCss: ['*'],\n base: {\n fontFamily: 'satoshi',\n color: 'text',\n },\n variants: {\n bold: {\n true: {\n fontWeight: 'bold',\n },\n },\n italic: {\n true: {\n fontStyle: 'italic',\n },\n },\n underline: {\n true: {\n textDecoration: 'underline',\n },\n },\n size: {\n lg: { textStyle: 'body.lg' },\n md: { textStyle: 'body.md' },\n sm: { textStyle: 'body.sm' },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputRecipe = defineRecipe({\n base: {\n '&[type=\"time\"]::-webkit-calendar-picker-indicator': {\n display: 'none',\n },\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n color: 'text',\n appearance: 'none',\n background: 'none',\n border: '1px solid {colors.grey.100}',\n borderRadius: 'radius-8',\n minWidth: 0,\n outline: 0,\n minHeight: '40px',\n position: 'relative',\n transitionDuration: 'normal',\n transitionProperty: 'border-color, box-shadow',\n width: 'full',\n _disabled: {\n cursor: 'not-allowed',\n color: 'grey.300',\n background: 'grey.50',\n },\n _hover: {\n borderColor: 'secondary.500',\n _disabled: {\n borderColor: 'grey.100',\n },\n },\n _focus: {\n borderColor: 'primary.500',\n },\n _placeholderShown: {\n color: 'grey.400',\n _disabled: {\n color: 'grey.100',\n },\n },\n },\n className: 'input',\n description: 'The styles for the Input component',\n jsx: ['Input'],\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n px: 'space-16',\n py: 'space-8',\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\nimport { inputRecipe } from '~/theme/recipes/input.ts'\n\nexport const textareaRecipe = defineRecipe({\n className: 'textarea',\n jsx: ['Textarea'],\n base: {\n px: 'space-16',\n py: 'space-8',\n ...inputRecipe.base,\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const formControlRecipe = defineRecipe({\n base: {\n _invalid: {\n '& [data-recipe=\"formHelperText\"]': {\n color: 'error.500',\n },\n '& input, & textarea, & [data-recipe=\"select\"] button': {\n borderColor: 'error.500!',\n },\n '& label': {\n color: 'error.500',\n },\n },\n _required: {\n '& label::after': {\n content: '\" *\"',\n color: 'error.500',\n fontWeight: 'bold',\n },\n },\n isolation: 'isolate',\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-4',\n width: 'full',\n position: 'relative',\n },\n className: 'form-control',\n description: 'The styles for the FormControl component',\n jsx: ['FormControl'],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const formHelperTextRecipe = defineRecipe({\n base: {\n color: 'grey.400',\n fontFamily: 'satoshi',\n textStyle: 'body.sm',\n },\n className: 'form-helper-text',\n description: 'The styles for the FormHelperText component',\n jsx: ['FormHelperText'],\n})\n","import { dialogAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nconst anatomy = dialogAnatomy.extendWith('header', 'body', 'footer')\n\nexport const drawerRecipe = defineSlotRecipe({\n className: 'drawer',\n slots: anatomy.keys(),\n jsx: ['Drawer'],\n base: {\n backdrop: {\n backdropFilter: 'blur(4px)',\n background: 'primary.300/20',\n height: '100vh',\n position: 'fixed',\n width: '100vw',\n zIndex: 'overlay',\n inset: 0,\n _open: {\n animation: 'backdrop-in',\n },\n _closed: {\n animation: 'backdrop-out',\n },\n },\n positioner: {\n alignItems: 'center',\n display: 'flex',\n height: '100dvh',\n position: 'fixed',\n inset: 0,\n zIndex: 'modal',\n },\n content: {\n position: 'relative',\n background: 'white',\n display: 'grid',\n gridTemplateColumns: '1fr',\n gridTemplateRows: 'auto 1fr',\n gridTemplateAreas: `\n 'header'\n 'body'\n `,\n height: 'full',\n minWidth: {\n base: 'full',\n md: '736px',\n },\n maxWidth: {\n base: 'full',\n md: '70%',\n },\n width: 'full',\n },\n header: {\n display: 'flex',\n flexDirection: 'row',\n alignItems: 'center',\n gap: 'space-16',\n gridArea: 'header',\n px: 'space-24',\n py: 'space-16',\n },\n body: {\n display: 'flex',\n flexDirection: 'column',\n gridArea: 'body',\n overflow: 'auto',\n px: 'space-24',\n py: 'space-16',\n pb: '70px',\n },\n footer: {\n display: 'flex',\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n bg: 'white/50',\n backdropFilter: 'auto',\n backdropBlur: '4px',\n justifyContent: 'flex-end',\n px: 'space-24',\n py: 'space-16',\n gap: 'space-16',\n },\n title: {\n color: 'primary.900',\n fontFamily: 'cabinet',\n textStyle: 'heading.h4',\n },\n },\n defaultVariants: {\n variant: 'right',\n },\n variants: {\n variant: {\n left: {\n positioner: {\n justifyContent: 'flex-start',\n },\n content: {\n _open: {\n animation: 'drawer-in-left',\n },\n _closed: {\n animation: 'drawer-out-left',\n },\n },\n },\n right: {\n positioner: {\n justifyContent: 'flex-end',\n },\n content: {\n _open: {\n animation: 'drawer-in-right',\n },\n _closed: {\n animation: 'drawer-out-right',\n },\n },\n },\n },\n },\n})\n","import { accordionAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const accordionRecipe = defineSlotRecipe({\n className: 'accordion',\n jsx: ['Accordion'],\n slots: accordionAnatomy.keys(),\n base: {\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-8',\n },\n itemTrigger: {\n alignItems: 'center',\n color: 'primary.900',\n cursor: 'pointer',\n display: 'flex',\n fontWeight: 'bold',\n gap: 'space-4',\n justifyContent: 'space-between',\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n textAlign: 'left',\n width: 'full',\n _disabled: {\n color: 'grey.200',\n cursor: 'not-allowed',\n },\n },\n itemIndicator: {\n color: 'primary.900',\n transformOrigin: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'transform',\n transitionTimingFunction: 'default',\n _open: {\n transform: 'rotate(-180deg)',\n },\n },\n itemContent: {\n overflow: 'hidden',\n transitionProperty: 'padding-bottom, margin-top, opacity',\n transitionDuration: 'normal',\n transitionTimingFunction: 'default',\n '& [data-scope=\"accordion\"][data-part=\"root\"]': {\n gap: 'space-12!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item-trigger\"]': {\n textStyle: 'body.sm',\n border: 'none!',\n borderRadius: 'radius-0!',\n p: 'space-0!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item-content\"]': {\n px: 'space-16!',\n mt: 'space-16!',\n },\n '& [data-scope=\"accordion\"][data-part=\"item\"]': {\n border: 'none!',\n borderRadius: 'radius-0!',\n p: 'space-12',\n pr: 'space-24!',\n pb: 'space-0!',\n },\n _open: {\n animation: 'collapse-in',\n },\n _closed: {\n animation: 'collapse-out',\n },\n },\n },\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n itemTrigger: {\n _open: {\n border: 'none',\n },\n borderRadius: 'radius-8',\n border: '1px solid {colors.primary.100}',\n padding: 'space-12',\n },\n item: {\n _open: {\n pb: 'space-12',\n borderRadius: 'radius-8',\n border: '1px solid {colors.primary.100}',\n },\n },\n itemContent: {\n _closed: {\n pb: 'space-0',\n mt: 'space-0',\n opacity: 0,\n },\n mt: 'space-4',\n pr: 'space-16',\n pl: 'space-28',\n },\n },\n },\n },\n})\n","import { defineSlotRecipe } from '@pandacss/dev'\n\nexport const formLabelRecipe = defineSlotRecipe({\n base: {\n root: { color: 'grey.400', fontFamily: 'satoshi', textStyle: 'body.sm' },\n addon: {\n ml: 'space-4',\n bg: 'primary.100',\n color: 'secondary.800',\n borderRadius: 'radius-2',\n px: 'space-2',\n },\n },\n variants: {\n variant: {\n static: {},\n absolute: {\n root: {\n position: 'absolute',\n left: 'space-12',\n top: '-space-8',\n zIndex: 1,\n bg: 'white',\n },\n },\n },\n },\n defaultVariants: { variant: 'absolute' },\n slots: ['root', 'addon'],\n className: 'form-label',\n description: 'The styles for the FormLabel component',\n jsx: ['FormLabel'],\n})\n","import { checkboxAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const checkboxRecipe = defineSlotRecipe({\n className: 'checkbox',\n slots: checkboxAnatomy.keys(),\n jsx: ['Checkbox'],\n base: {\n root: {\n alignItems: 'center',\n display: 'flex',\n cursor: {\n base: 'pointer',\n _disabled: 'not-allowed',\n },\n _disabled: {\n userSelect: 'none',\n },\n },\n label: {\n color: {\n base: 'text',\n _disabled: 'grey.300',\n },\n fontFamily: 'satoshi',\n },\n control: {\n alignItems: 'center',\n borderColor: 'grey.100',\n borderWidth: '1px',\n color: 'white',\n display: 'flex',\n bg: 'white',\n justifyContent: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'border-color, background',\n transitionTimingFunction: 'default',\n _hover: {\n borderColor: 'secondary.500',\n },\n _checked: {\n background: 'primary.500',\n borderColor: 'primary.500',\n _hover: {\n background: 'primary.500',\n },\n },\n _disabled: {\n background: 'grey.50',\n borderColor: 'grey.100',\n _checked: {\n background: 'grey.200',\n borderColor: 'grey.200',\n },\n _indeterminate: {\n background: 'grey.200',\n borderColor: 'grey.200',\n },\n },\n _invalid: {\n borderColor: 'error.500',\n _checked: {\n background: 'error.500',\n borderColor: 'error.500',\n },\n _indeterminate: {\n background: 'error.500',\n borderColor: 'error.500',\n },\n },\n _indeterminate: {\n background: 'primary.500',\n borderColor: 'primary.500',\n _hover: {\n background: 'primary.500',\n },\n },\n '&:has(+ :focus-visible)': {\n outline: '1px solid',\n outlineColor: 'secondary.300',\n _checked: {\n outlineColor: 'secondary.300',\n },\n _hover: {\n borderColor: 'grey.100',\n _checked: {\n borderColor: 'primary.500',\n background: 'primary.500',\n },\n _indeterminate: {\n borderColor: 'primary.500',\n background: 'primary.500',\n },\n },\n },\n },\n },\n defaultVariants: {\n size: 'md',\n },\n variants: {\n size: {\n md: {\n root: {\n gap: 'space-4',\n },\n control: {\n width: 'size-16',\n height: 'size-16',\n borderRadius: 'radius-4',\n '& svg': {\n width: 'size-12',\n height: 'size-12',\n },\n },\n label: {\n textStyle: 'body.md',\n },\n },\n },\n },\n})\n","import { tabsAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const tabsRecipe = defineSlotRecipe({\n className: 'tabs',\n slots: tabsAnatomy.keys(),\n base: {\n root: {\n isolation: 'isolate',\n display: 'flex',\n _horizontal: {\n flexDirection: 'column',\n },\n _vertical: {\n flexDirection: 'row',\n },\n },\n list: {\n display: 'flex',\n flexShrink: '0',\n _horizontal: {\n flexDirection: 'row',\n },\n _vertical: {\n flexDirection: 'column',\n },\n overflow: 'auto',\n position: 'relative',\n scrollbarWidth: 'none',\n '&::-webkit-scrollbar': {\n display: 'none',\n },\n },\n trigger: {\n alignItems: 'center',\n color: 'grey.400',\n cursor: 'pointer',\n display: 'inline-flex',\n flexShrink: '0',\n textStyle: 'body.md',\n fontFamily: 'satoshi',\n gap: 'space-4',\n justifyContent: 'center',\n transitionDuration: 'normal',\n transitionProperty: 'color, background, border-color',\n transitionTimingFunction: 'default',\n whiteSpace: 'nowrap',\n zIndex: 1,\n _disabled: {\n color: 'grey.100',\n cursor: 'not-allowed',\n _hover: {\n color: 'grey.100',\n },\n },\n _hover: {\n color: 'secondary.500',\n },\n _selected: {\n color: 'secondary.500',\n fontWeight: 'bold',\n _hover: {\n color: 'secondary.500',\n },\n },\n _vertical: {\n justifyContent: 'flex-start',\n },\n },\n },\n defaultVariants: {\n variant: 'line',\n },\n variants: {\n variant: {\n line: {\n list: {\n _horizontal: {\n boxShadow: '0 -2px 0 0 inset {colors.primary.100}',\n },\n _vertical: {\n boxShadow: '2px 0 0 0 inset {colors.primary.100}',\n },\n },\n indicator: {\n background: 'secondary.500',\n _horizontal: {\n bottom: 0,\n height: '2px',\n width: 'var(--width)',\n },\n _vertical: {\n height: 'var(--height)',\n left: 0,\n width: '2px',\n },\n },\n content: {\n pt: 'space-4',\n },\n trigger: {\n _horizontal: {\n px: 'space-24',\n pb: 'space-8',\n },\n },\n },\n },\n },\n})\n","import { selectAnatomy } from '@ark-ui/anatomy'\nimport { defineSlotRecipe } from '@pandacss/dev'\n\nexport const selectRecipe = defineSlotRecipe({\n base: {\n control: {\n fontFamily: 'satoshi',\n },\n valueText: {\n flex: 1,\n textAlign: 'left',\n },\n content: {\n fontFamily: 'satoshi',\n background: 'background',\n border: '1px solid {colors.primary.500}',\n borderTop: 'none',\n borderBottomLeftRadius: 'radius-8',\n borderBottomRightRadius: 'radius-8',\n display: 'flex',\n flexDirection: 'column',\n outline: 0,\n zIndex: 'modal',\n maxHeight: '180px',\n overflow: 'auto',\n },\n indicator: {\n transition: 'transform 0.15s ease-out',\n transform: {\n base: 'rotate(0deg)',\n _open: 'rotate(180deg)',\n },\n color: {\n base: 'secondary.900',\n _disabled: 'grey.300',\n },\n },\n clearTrigger: {\n color: {\n base: 'secondary.900',\n _disabled: 'grey.300',\n },\n },\n item: {\n _disabled: {\n cursor: 'not-allowed',\n },\n alignItems: 'center',\n background: {\n _disabled: {\n _hover: 'grey.100',\n base: 'grey.100',\n },\n _selected: 'primary.500',\n _highlighted: 'primary.200',\n _hover: 'primary.200',\n },\n color: {\n _disabled: {\n _hover: 'grey.300',\n base: 'grey.300',\n },\n _selected: 'white',\n },\n cursor: 'pointer',\n display: 'flex',\n justifyContent: 'space-between',\n transitionDuration: 'fast',\n transitionProperty: 'background, color',\n transitionTimingFunction: 'default',\n },\n itemGroupLabel: {\n textStyle: 'body.sm',\n },\n root: {\n display: 'flex',\n flexDirection: 'column',\n gap: 'space-4',\n width: 'full',\n },\n trigger: {\n _placeholderShown: {\n color: {\n base: 'grey.400',\n _disabled: 'grey.300',\n },\n },\n _open: {\n border: '1px solid {colors.primary.500}',\n borderBottomLeftRadius: 'radius-0',\n borderBottomRightRadius: 'radius-0',\n },\n alignItems: 'center',\n appearance: 'none',\n bg: {\n _disabled: {\n base: 'grey.50',\n },\n base: 'white',\n },\n border: {\n _focusVisible: '1px solid {colors.primary.500}',\n _hover: {\n base: '1px solid {colors.secondary.500}',\n _open: '1px solid {colors.primary.500}',\n _disabled: '1px solid {colors.grey.100}',\n },\n base: '1px solid {colors.grey.100}',\n },\n borderBottomColor: {\n _open: 'grey.100',\n _hover: {\n base: 'secondary.500',\n _open: 'grey.100',\n },\n base: 'grey.100',\n },\n borderRadius: 'radius-10',\n color: {\n base: 'grey.900',\n _disabled: 'grey.300',\n },\n cursor: 'pointer',\n display: 'inline-flex',\n outline: 0,\n position: 'relative',\n width: 'full',\n },\n },\n className: 'select',\n defaultVariants: {\n size: 'md',\n },\n jsx: ['Select'],\n slots: selectAnatomy.keys(),\n variants: {\n size: {\n md: {\n item: { px: 'space-16', py: 'space-8', textStyle: 'body.md' },\n trigger: {\n gap: 'space-8',\n minH: '40px',\n minW: 'size-16',\n py: 'space-8',\n px: 'space-16',\n textStyle: 'body.md',\n },\n },\n },\n },\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputAddonRecipe = defineRecipe({\n base: {\n alignItems: 'center',\n borderRadius: 'inherit',\n display: 'flex',\n p: 'space-8',\n textStyle: 'body.md',\n bg: 'transparent',\n color: 'secondary.900',\n },\n className: 'input-addon',\n description: 'The styles for the InputAddon component',\n jsx: ['InputAddon'],\n})\n","import { defineRecipe } from '@pandacss/dev'\n\nexport const inputGroupRecipe = defineRecipe({\n base: {\n '& [data-recipe=\"input\"]': {\n border: {\n _disabled: 'none',\n _focusVisible: 'none',\n base: 'none',\n },\n },\n bg: 'background',\n borderWidth: '1px',\n '& [data-recipe=\"inputAddon\"]:first-child': {\n pl: 'space-16!',\n },\n '& [data-recipe=\"inputAddon\"]:last-child': {\n pr: 'space-16!',\n },\n '&:has([data-recipe=\"inputAddon\"]:first-child) input': {\n pl: 'space-0!',\n },\n '&:has([data-recipe=\"inputAddon\"]:last-child) input': {\n pr: 'space-0!',\n },\n borderColor: {\n '&:has(> [data-recipe=\"input\"]:focus-visible)': 'primary.500',\n _disabled: 'grey.100',\n _hover: 'secondary.500',\n base: 'grey.100',\n },\n borderRadius: 'radius-8',\n display: 'flex',\n flexDirection: 'row',\n outline: 'none',\n transition: 'background',\n transitionDuration: 'fast',\n width: 'full',\n },\n className: 'input-group',\n description: 'The styles for the InputGroup component',\n jsx: ['InputGroup'],\n})\n","import { buttonRecipe } from './button'\nimport { headingRecipe } from './heading'\nimport { switchRecipe } from './switch'\nimport { textRecipe } from './text'\nimport { textareaRecipe } from './textarea'\nimport { formControlRecipe } from './form/control'\nimport { formHelperTextRecipe } from './form/helper-text'\nimport { drawerRecipe } from './drawer'\nimport { accordionRecipe } from './accordion'\nimport { formLabelRecipe } from './form/label'\nimport { checkboxRecipe } from './checkbox'\nimport { tabsRecipe } from './tabs'\nimport { selectRecipe } from '~/theme/recipes/select'\nimport { inputRecipe } from './input'\nimport { inputAddonRecipe } from './input-addon'\nimport { inputGroupRecipe } from './input-group'\n\nexport const recipes = {\n button: buttonRecipe,\n heading: headingRecipe,\n switchRecipe,\n text: textRecipe,\n textarea: textareaRecipe,\n formControl: formControlRecipe,\n formHelperText: formHelperTextRecipe,\n input: inputRecipe,\n inputAddon: inputAddonRecipe,\n inputGroup: inputGroupRecipe,\n}\n\nexport const slotRecipes = {\n drawer: drawerRecipe,\n accordion: accordionRecipe,\n formLabel: formLabelRecipe,\n checkbox: checkboxRecipe,\n tabs: tabsRecipe,\n select: selectRecipe,\n}\n","import { defineSemanticTokens } from '@pandacss/dev'\n\nexport const semanticTokensColors = defineSemanticTokens.colors({\n decorative: {\n red: {\n light: { value: '#FFB5AD' },\n mid: { value: '#EA4F42' },\n dark: { value: '#752821' },\n },\n blue: {\n light: { value: '#B8FFFF' },\n mid: { value: '#54D2D2' },\n dark: { value: '#2A6969' },\n },\n yellow: {\n light: { value: '#FFFFAC' },\n mid: { value: '#FFCB00' },\n dark: { value: '#806600' },\n },\n purple: {\n light: { value: '#D1B8FF' },\n mid: { value: '#8C61FF' },\n dark: { value: '#463180' },\n },\n green: {\n light: { value: '#BEF1C7' },\n mid: { value: '#58B368' },\n dark: { value: '#2C5A34' },\n },\n brown: {\n light: { value: '#E4CEB9' },\n mid: { value: '#8F6944' },\n dark: { value: '#483522' },\n },\n },\n primary: {\n 900: { value: '{colors.purple.900}' },\n 800: { value: '{colors.purple.800}' },\n 700: { value: '{colors.purple.700}' },\n 600: { value: '{colors.purple.600}' },\n 500: { value: '{colors.purple.500}' },\n 400: { value: '{colors.purple.400}' },\n 300: { value: '{colors.purple.300}' },\n 200: { value: '{colors.purple.200}' },\n 100: { value: '{colors.purple.100}' },\n },\n secondary: {\n 900: { value: '{colors.blue.900}' },\n 800: { value: '{colors.blue.800}' },\n 700: { value: '{colors.blue.700}' },\n 600: { value: '{colors.blue.600}' },\n 500: { value: '{colors.blue.500}' },\n 400: { value: '{colors.blue.400}' },\n 300: { value: '{colors.blue.300}' },\n 200: { value: '{colors.blue.200}' },\n 100: { value: '{colors.blue.100}' },\n },\n error: {\n 900: { value: '{colors.red.900}' },\n 800: { value: '{colors.red.800}' },\n 700: { value: '{colors.red.700}' },\n 600: { value: '{colors.red.600}' },\n 500: { value: '{colors.red.500}' },\n 400: { value: '{colors.red.400}' },\n 300: { value: '{colors.red.300}' },\n 200: { value: '{colors.red.200}' },\n 100: { value: '{colors.red.100}' },\n },\n success: {\n 900: { value: '{colors.green.900}' },\n 800: { value: '{colors.green.800}' },\n 700: { value: '{colors.green.700}' },\n 600: { value: '{colors.green.600}' },\n 500: { value: '{colors.green.500}' },\n 400: { value: '{colors.green.400}' },\n 300: { value: '{colors.green.300}' },\n 200: { value: '{colors.green.200}' },\n 100: { value: '{colors.green.100}' },\n },\n warning: {\n 900: { value: '{colors.yellow.900}' },\n 800: { value: '{colors.yellow.800}' },\n 700: { value: '{colors.yellow.700}' },\n 600: { value: '{colors.yellow.600}' },\n 500: { value: '{colors.yellow.500}' },\n 400: { value: '{colors.yellow.400}' },\n 300: { value: '{colors.yellow.300}' },\n 200: { value: '{colors.yellow.200}' },\n 100: { value: '{colors.yellow.100}' },\n },\n text: {\n DEFAULT: {\n value: '{colors.grey.800}',\n },\n disabled: {\n value: '{colors.grey.300}',\n },\n heading: {\n value: '{colors.primary.900}',\n },\n },\n})\n","import { semanticTokensColors } from './colors'\n\nexport const semanticTokens = {\n colors: semanticTokensColors,\n}\n","import { defineTextStyles } from '@pandacss/dev'\n\nexport const textStyles = defineTextStyles({\n body: {\n lg: {\n value: {\n fontSize: 'body.lg',\n lineHeight: 'normal',\n },\n },\n md: {\n value: {\n fontSize: 'body.md',\n lineHeight: 'normal',\n },\n },\n sm: {\n value: {\n fontSize: 'body.sm',\n lineHeight: 'normal',\n },\n },\n },\n heading: {\n h1: {\n value: {\n fontSize: {\n base: 'heading.mobile.2xl',\n sm: 'heading.desktop.2xl',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h2: {\n value: {\n fontSize: {\n base: 'heading.mobile.lg',\n sm: 'heading.desktop.lg',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h3: {\n value: {\n fontSize: {\n base: 'heading.mobile.md',\n sm: 'heading.desktop.md',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h4: {\n value: {\n fontSize: {\n base: 'heading.mobile.sm',\n sm: 'heading.desktop.sm',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n h5: {\n value: {\n fontSize: {\n base: 'heading.mobile.xs',\n sm: 'heading.desktop.xs',\n },\n fontWeight: 'black',\n lineHeight: 'normal',\n },\n },\n h6: {\n value: {\n fontSize: {\n base: 'heading.mobile.xs',\n sm: 'heading.desktop.xs',\n },\n fontWeight: 'bold',\n lineHeight: 'normal',\n },\n },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const animations = defineTokens.animations({\n 'backdrop-in': {\n value: 'fade-in 250ms {easings.emphasized-in}',\n },\n 'backdrop-out': {\n value: 'fade-out 200ms {easings.emphasized-out}',\n },\n bounce: { value: 'bounce 1s infinite' },\n 'dialog-in': {\n value: 'slide-in-modal 400ms {easings.emphasized-in}',\n },\n 'dialog-out': {\n value: 'slide-out-modal 200ms {easings.emphasized-out}',\n },\n 'drawer-in-left': {\n value: 'slide-in-left 400ms {easings.emphasized-in}',\n },\n 'drawer-in-right': {\n value: 'slide-in-right 400ms {easings.emphasized-in}',\n },\n 'drawer-out-left': {\n value: 'slide-out-left 200ms {easings.emphasized-out}',\n },\n 'drawer-out-right': {\n value: 'slide-out-right 200ms {easings.emphasized-out}',\n },\n 'fade-in': {\n value: 'fade-in 400ms {easings.emphasized-in}',\n },\n ping: { value: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite' },\n pulse: { value: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite' },\n 'skeleton-pulse': {\n value: 'skeleton-pulse 2s {easings.pulse} infinite',\n },\n spin: { value: 'spin 1s linear infinite' },\n 'collapse-in': {\n value: 'collapse-in 150ms {easings.in}',\n },\n 'collapse-out': {\n value: 'collapse-out 150ms {easings.in-out}',\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const aspectRatios = defineTokens.borders({\n golden: { value: '1.618 / 1' },\n landscape: { value: '4 / 3' },\n portrait: { value: '3 / 4' },\n square: { value: '1 / 1' },\n ultrawide: { value: '18 / 5' },\n wide: { value: '16 / 9' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const blurs = defineTokens.blurs({\n '2xl': { value: '40px' },\n '3xl': { value: '64px' },\n base: { value: '8px' },\n lg: { value: '16px' },\n md: { value: '12px' },\n sm: { value: '4px' },\n xl: { value: '24px' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const borders = defineTokens.borders({\n border: {\n none: { value: 'none' },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const colors = defineTokens.colors({\n black: { value: '#000' },\n current: { value: 'currentColor' },\n transparent: { value: 'rgb(0 0 0 / 0)' },\n white: { value: '#fff' },\n purple: {\n 900: { value: '#0B1243' },\n 800: { value: '#0E1754' },\n 700: { value: '#111B65' },\n 600: { value: '#132075' },\n 500: { value: '#162486' },\n 400: { value: '#4350AD' },\n 300: { value: '#7981CE' },\n 200: { value: '#B6B7E8' },\n 100: { value: '#F2F2FC' },\n },\n blue: {\n 900: { value: '#1E3A76' },\n 800: { value: '#264993' },\n 700: { value: '#2D57B0' },\n 600: { value: '#3566CE' },\n 500: { value: '#3C74EB' },\n 400: { value: '#578DFF' },\n 300: { value: '#7CAAFF' },\n 200: { value: '#ACCAFF' },\n 100: { value: '#E6EEFF' },\n },\n grey: {\n 900: { value: '#252227' },\n 800: { value: '#2D2A31' },\n 700: { value: '#34323B' },\n 600: { value: '#3B3B44' },\n 500: { value: '#43454e' },\n 400: { value: '#666871' },\n 300: { value: '#898B93' },\n 200: { value: '#ADAEB4' },\n 100: { value: '#D1D2D6' },\n 50: { value: '#F5F6F6' },\n },\n red: {\n 900: { value: '#802727' },\n 800: { value: '#9F3131' },\n 700: { value: '#BF3B3B' },\n 600: { value: '#DF4444' },\n 500: { value: '#Ff4e4e' },\n 400: { value: '#FF6565' },\n 300: { value: '#FF8585' },\n 200: { value: '#FFB0B0' },\n 100: { value: '#FFE6E6' },\n },\n green: {\n 900: { value: '#24644D' },\n 800: { value: '#2C7C60' },\n 700: { value: '#359573' },\n 600: { value: '#3EAE86' },\n 500: { value: '#47c799' },\n 400: { value: '#64E0B3' },\n 300: { value: '#88F2CC' },\n 200: { value: '#B4FCE2' },\n 100: { value: '#E6FFF7' },\n },\n yellow: {\n 900: { value: '#80581C' },\n 800: { value: '#9F6D22' },\n 700: { value: '#BF8329' },\n 600: { value: '#DF9930' },\n 500: { value: '#ffaf37' },\n 400: { value: '#FFC551' },\n 300: { value: '#FFD976' },\n 200: { value: '#FFEAAC' },\n 100: { value: '#FFF9E6' },\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const durations = defineTokens.durations({\n fast: { value: '150ms' },\n faster: { value: '100ms' },\n fastest: { value: '50ms' },\n normal: { value: '200ms' },\n slow: { value: '300ms' },\n slower: { value: '400ms' },\n slowest: { value: '500ms' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const easings = defineTokens.easings({\n default: { value: 'cubic-bezier(0.2, 0.0, 0, 1.0)' },\n 'ease-bounce-1': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.063, 0.098, 0.141, 0.191, 0.25, 0.316, 0.391 36.8%,\n 0.563, 0.766, 1 58.8%, 0.946, 0.908 69.1%, 0.895, 0.885, 0.879, 0.878, 0.879,\n 0.885, 0.895, 0.908 89.7%, 0.946, 1\n )`,\n },\n 'ease-bounce-2': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.063, 0.098, 0.141 15.1%, 0.25, 0.391, 0.562, 0.765,\n 1, 0.892 45.2%, 0.849, 0.815, 0.788, 0.769, 0.757, 0.753, 0.757, 0.769, 0.788,\n 0.815, 0.85, 0.892 75.2%, 1 80.2%, 0.973, 0.954, 0.943, 0.939, 0.943, 0.954,\n 0.973, 1\n )`,\n },\n 'ease-bounce-3': {\n value: `linear(\n 0, 0.004, 0.016, 0.035, 0.062, 0.098, 0.141 11.4%, 0.25, 0.39, 0.562, 0.764,\n 1 30.3%, 0.847 34.8%, 0.787, 0.737, 0.699, 0.672, 0.655, 0.65, 0.656, 0.672,\n 0.699, 0.738, 0.787, 0.847 61.7%, 1 66.2%, 0.946, 0.908, 0.885 74.2%, 0.879,\n 0.878, 0.879, 0.885 79.5%, 0.908, 0.946, 1 87.4%, 0.981, 0.968, 0.96, 0.957,\n 0.96, 0.968, 0.981, 1\n )`,\n },\n 'ease-bounce-4': {\n value: `linear(\n 0, 0.004, 0.016 3%, 0.062, 0.141, 0.25, 0.391, 0.562 18.2%, 1 24.3%, 0.81,\n 0.676 32.3%, 0.629, 0.595, 0.575, 0.568, 0.575, 0.595, 0.629, 0.676 48.2%,\n 0.811, 1 56.2%, 0.918, 0.86, 0.825, 0.814, 0.825, 0.86, 0.918, 1 77.2%,\n 0.94 80.6%, 0.925, 0.92, 0.925, 0.94 87.5%, 1 90.9%, 0.974, 0.965, 0.974, 1\n )`,\n },\n 'ease-bounce-5': {\n value: `linear(\n 0, 0.004, 0.016 2.5%, 0.063, 0.141, 0.25 10.1%, 0.562, 1 20.2%, 0.783, 0.627,\n 0.534 30.9%, 0.511, 0.503, 0.511, 0.534 38%, 0.627, 0.782, 1 48.7%, 0.892,\n 0.815, 0.769 56.3%, 0.757, 0.753, 0.757, 0.769 61.3%, 0.815, 0.892, 1 68.8%,\n 0.908 72.4%, 0.885, 0.878, 0.885, 0.908 79.4%, 1 83%, 0.954 85.5%, 0.943,\n 0.939, 0.943, 0.954 90.5%, 1 93%, 0.977, 0.97, 0.977, 1\n )`,\n },\n 'ease-spring-1': {\n value: `linear(\n 0, 0.006, 0.025 2.8%, 0.101 6.1%, 0.539 18.9%, 0.721 25.3%, 0.849 31.5%,\n 0.937 38.1%, 0.968 41.8%, 0.991 45.7%, 1.006 50.1%, 1.015 55%, 1.017 63.9%,\n 1.001\n )`,\n },\n 'ease-spring-2': {\n value: `linear(\n 0, 0.007, 0.029 2.2%, 0.118 4.7%, 0.625 14.4%, 0.826 19%, 0.902, 0.962,\n 1.008 26.1%, 1.041 28.7%, 1.064 32.1%, 1.07 36%, 1.061 40.5%, 1.015 53.4%,\n 0.999 61.6%, 0.995 71.2%, 1\n )`,\n },\n 'ease-spring-3': {\n value: `linear(\n 0, 0.009, 0.035 2.1%, 0.141 4.4%, 0.723 12.9%, 0.938 16.7%, 1.017, 1.077,\n 1.121, 1.149 24.3%, 1.159, 1.163, 1.161, 1.154 29.9%, 1.129 32.8%,\n 1.051 39.6%, 1.017 43.1%, 0.991, 0.977 51%, 0.974 53.8%, 0.975 57.1%,\n 0.997 69.8%, 1.003 76.9%, 1\n )`,\n },\n 'ease-spring-4': {\n value: `linear(\n 0, 0.009, 0.037 1.7%, 0.153 3.6%, 0.776 10.3%, 1.001, 1.142 16%, 1.185,\n 1.209 19%, 1.215 19.9% 20.8%, 1.199, 1.165 25%, 1.056 30.3%, 1.008 33%, 0.973,\n 0.955 39.2%, 0.953 41.1%, 0.957 43.3%, 0.998 53.3%, 1.009 59.1% 63.7%,\n 0.998 78.9%, 1\n )`,\n },\n 'ease-spring-5': {\n value: `linear(\n 0, 0.01, 0.04 1.6%, 0.161 3.3%, 0.816 9.4%, 1.046, 1.189 14.4%, 1.231,\n 1.254 17%, 1.259, 1.257 18.6%, 1.236, 1.194 22.3%, 1.057 27%, 0.999 29.4%,\n 0.955 32.1%, 0.942, 0.935 34.9%, 0.933, 0.939 38.4%, 1 47.3%, 1.011,\n 1.017 52.6%, 1.016 56.4%, 1 65.2%, 0.996 70.2%, 1.001 87.2%, 1\n )`,\n },\n 'emphasized-in': { value: 'cubic-bezier(0.05, 0.7, 0.1, 1.0)' },\n 'emphasized-out': { value: 'cubic-bezier(0.3, 0.0, 0.8, 0.15)' },\n in: { value: 'cubic-bezier(0.4, 0, 1, 1)' },\n 'in-out': { value: 'cubic-bezier(0.4, 0, 0.2, 1)' },\n linear: { value: 'linear' },\n out: { value: 'cubic-bezier(0, 0, 0.2, 1)' },\n pulse: { value: 'cubic-bezier(0.4, 0.0, 0.6, 1.0)' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const radii = defineTokens.radii({\n 'radius-0': { value: '0px' },\n 'radius-2': { value: '2px' },\n 'radius-4': { value: '4px' },\n 'radius-6': { value: '6px' },\n 'radius-8': { value: '8px' },\n 'radius-10': { value: '10px' },\n 'radius-12': { value: '12px' },\n 'radius-16': { value: '16px' },\n 'radius-20': { value: '20px' },\n 'radius-24': { value: '24px' },\n 'radius-28': { value: '28px' },\n 'radius-32': { value: '32px' },\n 'radius-36': { value: '36px' },\n 'radius-40': { value: '40px' },\n 'radius-44': { value: '44px' },\n 'radius-48': { value: '48px' },\n 'radius-52': { value: '52px' },\n 'radius-56': { value: '56px' },\n 'radius-60': { value: '60px' },\n 'radius-64': { value: '64px' },\n full: { value: '9999px' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const shadows = defineTokens.shadows({\n '2xl': { value: '0 25px 50px -12px rgb(0 0 0 / 0.25)' },\n inner: { value: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)' },\n lg: { value: ['0 10px 15px -3px rgb(0 0 0 / 0.1)', '0 4px 6px -4px rgb(0 0 0 / 0.1)'] },\n md: { value: ['0 4px 6px -1px rgb(0 0 0 / 0.1)', '0 2px 4px -2px rgb(0 0 0 / 0.1)'] },\n sm: { value: ['0 1px 3px 0 rgb(0 0 0 / 0.1)', '0 1px 2px -1px rgb(0 0 0 / 0.1)'] },\n xl: { value: ['0 20px 25px -5px rgb(0 0 0 / 0.1)', '0 8px 10px -6px rgb(0 0 0 / 0.1)'] },\n xs: { value: '0 1px 2px 0 rgb(0 0 0 / 0.05)' },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const sizes = defineTokens.sizes({\n 'size-0': {\n value: '0px',\n },\n 'size-12': {\n value: '12px',\n },\n 'size-14': {\n value: '14px',\n },\n 'size-16': {\n value: '16px',\n },\n 'size-2': {\n value: '2px',\n },\n 'size-20': {\n value: '20px',\n },\n 'size-24': {\n value: '24px',\n },\n 'size-28': {\n value: '28px',\n },\n 'size-32': {\n value: '32px',\n },\n 'size-36': {\n value: '36px',\n },\n 'size-4': {\n value: '4px',\n },\n 'size-40': {\n value: '40px',\n },\n 'size-6': {\n value: '6px',\n },\n 'size-44': {\n value: '44px',\n },\n 'size-8': {\n value: '8px',\n },\n full: { value: '100%' },\n max: { value: 'max-content' },\n 'size-48': {\n value: '48px',\n },\n fit: { value: 'fit-content' },\n 'size-52': {\n value: '52px',\n },\n min: { value: 'min-content' },\n 'size-56': {\n value: '56px',\n },\n 'size-60': {\n value: '60px',\n },\n 'size-64': {\n value: '64px',\n },\n 'size-68': {\n value: '68px',\n },\n 'size-72': {\n value: '72px',\n },\n 'size-76': {\n value: '76px',\n },\n 'size-80': {\n value: '80px',\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const spacing = defineTokens.spacing({\n 'space-0': {\n value: '0px',\n },\n 'space-12': {\n value: '12px',\n },\n 'space-10': {\n value: '10px',\n },\n 'space-14': {\n value: '14px',\n },\n 'space-16': {\n value: '16px',\n },\n 'space-18': {\n value: '18px',\n },\n 'space-2': {\n value: '2px',\n },\n 'space-20': {\n value: '20px',\n },\n 'space-24': {\n value: '24px',\n },\n 'space-28': {\n value: '28px',\n },\n 'space-32': {\n value: '32px',\n },\n 'space-36': {\n value: '36px',\n },\n 'space-4': {\n value: '4px',\n },\n 'space-40': {\n value: '40px',\n },\n 'space-6': {\n value: '6px',\n },\n 'space-44': {\n value: '44px',\n },\n 'space-8': {\n value: '8px',\n },\n 'space-48': {\n value: '48px',\n },\n 'space-52': {\n value: '52px',\n },\n 'space-56': {\n value: '56px',\n },\n 'space-60': {\n value: '60px',\n },\n 'space-64': {\n value: '64px',\n },\n 'space-68': {\n value: '68px',\n },\n 'space-72': {\n value: '72px',\n },\n 'space-76': {\n value: '76px',\n },\n 'space-80': {\n value: '80px',\n },\n})\n","// src/arbitrary-value.ts\nvar getArbitraryValue = (_value) => {\n if (!_value || typeof _value !== \"string\")\n return _value;\n const value = _value.trim();\n if (value[0] === \"[\" && value[value.length - 1] === \"]\") {\n const innerValue = value.slice(1, -1);\n let bracketCount = 0;\n for (let i = 0; i < innerValue.length; i++) {\n if (innerValue[i] === \"[\") {\n bracketCount++;\n } else if (innerValue[i] === \"]\") {\n if (bracketCount === 0) {\n return value;\n }\n bracketCount--;\n }\n }\n if (bracketCount === 0) {\n return innerValue.trim();\n }\n }\n return value;\n};\n\n// src/assert.ts\nvar isString = (v) => typeof v === \"string\";\nvar isBoolean = (v) => typeof v === \"boolean\";\nvar isFunction = (v) => typeof v === \"function\";\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\n\n// src/assign.ts\nfunction assign(target, ...sources) {\n for (const source of sources) {\n for (const key in source) {\n if (!target?.hasOwnProperty?.(key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n}\n\n// src/astish.ts\nvar newRule = /(?:([\\u0080-\\uFFFF\\w-%@]+) *:? *([^{;]+?);|([^;}{]*?) *{)|(}\\s*)/g;\nvar ruleClean = /\\/\\*[^]*?\\*\\/| +/g;\nvar ruleNewline = /\\n+/g;\nvar empty = \" \";\nvar astish = (val, tree = [{}]) => {\n if (!val)\n return tree[0];\n let block, left;\n while (block = newRule.exec(val.replace(ruleClean, \"\"))) {\n if (block[4])\n tree.shift();\n else if (block[3]) {\n left = block[3].replace(ruleNewline, empty).trim();\n tree.unshift(tree[0][left] = tree[0][left] || {});\n } else\n tree[0][block[1]] = block[2].replace(ruleNewline, empty).trim();\n }\n return tree[0];\n};\n\n// src/calc.ts\nfunction isCssVar(value) {\n return isObject(value) && \"ref\" in value;\n}\nfunction getRef(operand) {\n return isCssVar(operand) ? operand.ref : operand.toString();\n}\nvar calcRegex = /calc/g;\nvar toExpression = (operator, ...operands) => operands.map(getRef).join(` ${operator} `).replace(calcRegex, \"\");\nvar multiply = (...operands) => `calc(${toExpression(\"*\", ...operands)})`;\nvar calc = {\n negate(x) {\n const value = getRef(x);\n if (value != null && !Number.isNaN(parseFloat(value))) {\n return String(value).startsWith(\"-\") ? String(value).slice(1) : `-${value}`;\n }\n return multiply(value, -1);\n }\n};\n\n// src/memo.ts\nvar memo = (fn) => {\n const cache = /* @__PURE__ */ new Map();\n const get = (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n return get;\n};\n\n// src/camelcase-property.ts\nvar regex = /-(\\w|$)/g;\nvar callback = (_dashChar, char) => char.toUpperCase();\nvar camelCaseProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n let str = property.toLowerCase();\n str = str.startsWith(\"-ms-\") ? str.substring(1) : str;\n return str.replace(regex, callback);\n});\n\n// src/capitalize.ts\nvar capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1);\nvar camelCaseRegex = /([a-z])([A-Z])/g;\nvar dashCase = (s) => s.replace(camelCaseRegex, \"$1-$2\").toLowerCase();\nvar uncapitalize = (s) => s.charAt(0).toLowerCase() + s.slice(1);\n\n// src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value2]) => value2 !== void 0));\n}\n\n// src/condition.ts\nvar isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n\n// src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0)\n name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i)\n h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n\n// src/important.ts\nvar importantRegex = /\\s*!(important)?/i;\nfunction isImportant(value) {\n return typeof value === \"string\" ? importantRegex.test(value) : false;\n}\nfunction withoutImportant(value) {\n return typeof value === \"string\" ? value.replace(importantRegex, \"\").trim() : value;\n}\nfunction withoutSpace(str) {\n return typeof str === \"string\" ? str.replaceAll(\" \", \"_\") : str;\n}\nfunction markImportant(obj) {\n if (typeof obj !== \"object\" || obj === null) {\n return obj;\n }\n const result = Array.isArray(obj) ? [] : {};\n const stack = [{ obj, result }];\n while (stack.length > 0) {\n const { obj: obj2, result: result2 } = stack.pop();\n for (const [key, value] of Object.entries(obj2)) {\n if (typeof value === \"string\" || typeof value === \"number\") {\n result2[key] = `${value} !important`;\n } else if (typeof value === \"object\" && value !== null) {\n const next = Array.isArray(value) ? [] : {};\n result2[key] = next;\n stack.push({ obj: value, result: next });\n } else {\n result2[key] = value;\n }\n }\n }\n return result;\n}\n\n// src/merge-props.ts\nfunction mergeProps(...sources) {\n const objects = sources.filter(Boolean);\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) {\n prev[key] = mergeProps(prevValue, value);\n } else {\n prev[key] = value;\n }\n });\n return prev;\n }, {});\n}\n\n// src/walk-object.ts\nvar isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObject(value) || Array.isArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop, child) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) {\n return predicate(value, path);\n }\n const next = inner(child, childPath);\n if (isNotNullish(next)) {\n result[key] = next;\n }\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj))\n return obj.map((value) => fn(value));\n if (!isObject(obj))\n return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n\n// src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce(\n (acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) {\n acc[key] = current;\n }\n return acc;\n },\n {}\n );\n}\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n return walkObject(\n styles,\n (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n },\n {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n }\n );\n}\n\n// src/classname.ts\nvar fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\nvar sanitize = (value) => typeof value === \"string\" ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\nfunction createCss(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const formatClassName = (str) => [utility.prefix, str].filter(Boolean).join(\"-\");\n const hashFn = (conditions, className) => {\n let result;\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n result = formatClassName(utility.toHash(baseArray, toHash));\n } else {\n const baseArray = [...conds.finalize(conditions), formatClassName(className)];\n result = baseArray.join(\":\");\n }\n return result;\n };\n return memo(({ base, ...styles } = {}) => {\n const styleObject = Object.assign(styles, base);\n const normalizedObject = normalizeStyleObject(styleObject, context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n const important = isImportant(value);\n if (value == null)\n return;\n const [prop, ...allConditions] = conds.shift(paths);\n const conditions = filterBaseConditions(allConditions);\n const transformed = utility.transform(prop, withoutImportant(sanitize(value)));\n let className = hashFn(conditions, transformed.className);\n if (important)\n className = `${className}!`;\n classNames.add(className);\n });\n return Array.from(classNames).join(\" \");\n });\n}\nfunction compactStyles(...styles) {\n return styles.filter((style) => isObject(style) && Object.keys(compact(style)).length > 0);\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1)\n return allStyles;\n return allStyles.map((style) => normalizeStyleObject(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n function assignCss(...styles) {\n return Object.assign({}, ...resolve(styles));\n }\n return { mergeCss: memo(mergeCss), assignCss };\n}\n\n// src/css-var.ts\nvar escRegex = /[^a-zA-Z0-9_\\u0081-\\uffff-]/g;\nfunction esc(string) {\n return `${string}`.replace(escRegex, (s) => `\\\\${s}`);\n}\nvar dashCaseRegex = /[A-Z]/g;\nfunction dashCase2(string) {\n return string.replace(dashCaseRegex, (match) => `-${match.toLowerCase()}`);\n}\nfunction cssVar(name, options = {}) {\n const { fallback = \"\", prefix = \"\", hash } = options;\n const variable = hash ? [\"-\", prefix, toHash(name)].filter(Boolean).join(\"-\") : dashCase2([\"-\", prefix, esc(name)].filter(Boolean).join(\"-\"));\n const result = {\n var: variable,\n ref: `var(${variable}${fallback ? `, ${fallback}` : \"\"})`\n };\n return result;\n}\n\n// src/deep-set.ts\nvar deepSet = (target, path, value) => {\n const isValueObject = isObject(value);\n if (!path.length && isValueObject) {\n return Object.assign(target, value);\n }\n let current = target;\n for (let i = 0; i < path.length; i++) {\n const key = path[i];\n if (!current[key]) {\n current[key] = {};\n }\n if (i === path.length - 1) {\n if (isValueObject && isObject(current[key])) {\n current[key] = Object.assign({ ...current[key] }, value);\n } else {\n current[key] = value;\n }\n } else {\n current = current[key];\n }\n }\n return target;\n};\n\n// src/entries.ts\nfunction fromEntries(entries2) {\n const result = {};\n entries2.forEach((kv) => {\n result[kv[0]] = kv[1];\n });\n return result;\n}\nfunction entries(obj) {\n const result = [];\n for (const key in obj) {\n result.push([key, obj[key]]);\n }\n return result;\n}\nfunction mapEntries(obj, f) {\n const result = {};\n for (const key in obj) {\n const kv = f(key, obj[key]);\n result[kv[0]] = kv[1];\n }\n return result;\n}\n\n// src/error.ts\nvar PandaError = class extends Error {\n code;\n hint;\n constructor(code, message, opts) {\n super(message);\n this.code = `ERR_PANDA_${code}`;\n this.hint = opts?.hint;\n }\n};\n\n// src/esc.ts\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|^-|[^\\x80-\\uFFFF\\w-]/g;\nvar fcssescape = function(ch, asCodePoint) {\n if (!asCodePoint)\n return \"\\\\\" + ch;\n if (ch === \"\\0\")\n return \"\\uFFFD\";\n if (ch === \"-\" && ch.length === 1)\n return \"\\\\-\";\n return ch.slice(0, -1) + \"\\\\\" + ch.charCodeAt(ch.length - 1).toString(16);\n};\nvar esc2 = (sel) => {\n return (sel + \"\").replace(rcssescape, fcssescape);\n};\n\n// src/flatten.ts\nfunction flatten(values, stop) {\n const result = {};\n walkObject(\n values,\n (token, paths) => {\n if (token) {\n result[paths.join(\".\")] = token.value;\n }\n },\n {\n stop: stop ?? ((v) => {\n return isObject(v) && \"value\" in v;\n })\n }\n );\n return result;\n}\n\n// src/get-or-create-set.ts\nfunction getOrCreateSet(map, key) {\n let set = map.get(key);\n if (!set) {\n map.set(key, /* @__PURE__ */ new Set());\n set = map.get(key);\n }\n return set;\n}\n\n// src/hypenate-property.ts\nvar wordRegex = /([A-Z])/g;\nvar msRegex = /^ms-/;\nvar hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n\n// src/is-css-function.ts\nvar fns = [\"min\", \"max\", \"clamp\", \"calc\"];\nvar fnRegExp = new RegExp(`^(${fns.join(\"|\")})\\\\(.*\\\\)`);\nvar isCssFunction = (v) => typeof v === \"string\" && fnRegExp.test(v);\n\n// src/is-css-unit.ts\nvar lengthUnits = \"cm,mm,Q,in,pc,pt,px,em,ex,ch,rem,lh,rlh,vw,vh,vmin,vmax,vb,vi,svw,svh,lvw,lvh,dvw,dvh,cqw,cqh,cqi,cqb,cqmin,cqmax,%\";\nvar lengthUnitsPattern = `(?:${lengthUnits.split(\",\").join(\"|\")})`;\nvar lengthRegExp = new RegExp(`^[+-]?[0-9]*.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`);\nvar isCssUnit = (v) => typeof v === \"string\" && lengthRegExp.test(v);\n\n// src/is-css-var.ts\nvar isCssVar2 = (v) => typeof v === \"string\" && /^var\\(--.+\\)$/.test(v);\n\n// src/merge-with.ts\nfunction mergeWith(target, ...sources) {\n const customizer = sources.pop();\n for (const source of sources) {\n for (const key in source) {\n const merged = customizer(target[key], source[key]);\n if (merged === void 0) {\n if (isObject(target[key]) && isObject(source[key])) {\n target[key] = mergeWith({}, target[key], source[key], customizer);\n } else {\n target[key] = source[key];\n }\n } else {\n target[key] = merged;\n }\n }\n }\n return target;\n}\n\n// src/traverse.ts\nvar isObjectOrArray = (obj) => typeof obj === \"object\" && obj !== null;\nvar defaultOptions = {\n separator: \".\",\n maxDepth: Infinity\n};\nfunction traverse(obj, callback2, options = defaultOptions) {\n const maxDepth = options.maxDepth ?? defaultOptions.maxDepth;\n const separator = options.separator ?? defaultOptions.separator;\n const stack = [{ value: obj, path: \"\", paths: [], depth: -1, parent: null, key: \"\" }];\n while (stack.length > 0) {\n const currentItem = stack.pop();\n if (currentItem.parent !== null) {\n callback2(currentItem);\n }\n if (options.stop?.(currentItem)) {\n continue;\n }\n if (isObjectOrArray(currentItem.value) && currentItem.depth < maxDepth) {\n const keys = Object.keys(currentItem.value);\n for (let i = keys.length - 1; i >= 0; i--) {\n const key = keys[i];\n const value = currentItem.value[key];\n const path = currentItem.path ? currentItem.path + separator + key : key;\n const paths = currentItem.paths.concat(key);\n stack.push({\n value,\n path,\n paths,\n depth: currentItem.depth + 1,\n parent: currentItem.value,\n key\n });\n }\n }\n }\n}\n\n// src/omit.ts\nvar omit = (obj, paths) => {\n const result = { ...obj };\n traverse(result, ({ path, parent, key }) => {\n if (paths.includes(path)) {\n delete parent[key];\n }\n });\n return result;\n};\n\n// src/pattern-fns.ts\nvar patternFns = {\n map: mapObject,\n isCssFunction,\n isCssVar: isCssVar2,\n isCssUnit\n};\nvar getPatternStyles = (pattern, styles) => {\n if (!pattern?.defaultValues)\n return styles;\n const defaults = typeof pattern.defaultValues === \"function\" ? pattern.defaultValues(styles) : pattern.defaultValues;\n return Object.assign({}, defaults, compact(styles));\n};\n\n// src/regex.ts\nvar createRegex = (item) => {\n const regex2 = item.map((item2) => typeof item2 === \"string\" ? `^${item2}$` : item2.source).join(\"|\");\n return new RegExp(regex2);\n};\n\n// src/serialize.ts\nvar stringifyJson = (config) => {\n return JSON.stringify(config, (_key, value) => {\n if (typeof value === \"function\")\n return value.toString();\n return value;\n });\n};\nvar parseJson = (config) => {\n return JSON.parse(config);\n};\n\n// src/shorthand-properties.ts\nvar shorthandProperties = {\n animation: [\n \"animationName\",\n \"animationDuration\",\n \"animationTimingFunction\",\n \"animationDelay\",\n \"animationIterationCount\",\n \"animationDirection\",\n \"animationFillMode\",\n \"animationPlayState\"\n ],\n background: [\n \"backgroundImage\",\n \"backgroundPosition\",\n \"backgroundSize\",\n \"backgroundRepeat\",\n \"backgroundAttachment\",\n \"backgroundOrigin\",\n \"backgroundClip\",\n \"backgroundColor\"\n ],\n backgroundPosition: [\"backgroundPositionX\", \"backgroundPositionY\"],\n border: [\"borderWidth\", \"borderStyle\", \"borderColor\"],\n borderBlockEnd: [\"borderBlockEndWidth\", \"borderBlockEndStyle\", \"borderBlockEndColor\"],\n borderBlockStart: [\"borderBlockStartWidth\", \"borderBlockStartStyle\", \"borderBlockStartColor\"],\n borderBottom: [\"borderBottomWidth\", \"borderBottomStyle\", \"borderBottomColor\"],\n borderColor: [\"borderTopColor\", \"borderRightColor\", \"borderBottomColor\", \"borderLeftColor\"],\n borderImage: [\"borderImageSource\", \"borderImageSlice\", \"borderImageWidth\", \"borderImageOutset\", \"borderImageRepeat\"],\n borderInlineEnd: [\"borderInlineEndWidth\", \"borderInlineEndStyle\", \"borderInlineEndColor\"],\n borderInlineStart: [\"borderInlineStartWidth\", \"borderInlineStartStyle\", \"borderInlineStartColor\"],\n borderLeft: [\"borderLeftWidth\", \"borderLeftStyle\", \"borderLeftColor\"],\n borderRadius: [\"borderTopLeftRadius\", \"borderTopRightRadius\", \"borderBottomRightRadius\", \"borderBottomLeftRadius\"],\n borderRight: [\"borderRightWidth\", \"borderRightStyle\", \"borderRightColor\"],\n borderStyle: [\"borderTopStyle\", \"borderRightStyle\", \"borderBottomStyle\", \"borderLeftStyle\"],\n borderTop: [\"borderTopWidth\", \"borderTopStyle\", \"borderTopColor\"],\n borderWidth: [\"borderTopWidth\", \"borderRightWidth\", \"borderBottomWidth\", \"borderLeftWidth\"],\n columnRule: [\"columnRuleWidth\", \"columnRuleStyle\", \"columnRuleColor\"],\n columns: [\"columnWidth\", \"columnCount\"],\n container: [\"contain\", \"content\"],\n containIntrinsicSize: [\"containIntrinsicSizeInline\", \"containIntrinsicSizeBlock\"],\n cue: [\"cueBefore\", \"cueAfter\"],\n flex: [\"flexGrow\", \"flexShrink\", \"flexBasis\"],\n flexFlow: [\"flexDirection\", \"flexWrap\"],\n font: [\n \"fontStyle\",\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\",\n \"fontWeight\",\n \"fontStretch\",\n \"fontSize\",\n \"lineHeight\",\n \"fontFamily\"\n ],\n fontSynthesis: [\"fontSynthesisWeight\", \"fontSynthesisStyle\", \"fontSynthesisSmallCaps\"],\n fontVariant: [\n \"fontVariantCaps\",\n \"fontVariantEastAsian\",\n \"fontVariantLigatures\",\n \"fontVariantNumeric\",\n \"fontVariantPosition\"\n ],\n gap: [\"columnGap\", \"rowGap\"],\n grid: [\n \"gridTemplateColumns\",\n \"gridTemplateRows\",\n \"gridTemplateAreas\",\n \"gridAutoColumns\",\n \"gridAutoRows\",\n \"gridAutoFlow\"\n ],\n gridArea: [\"gridRowStart\", \"gridColumnStart\", \"gridRowEnd\", \"gridColumnEnd\"],\n gridColumn: [\"gridColumnStart\", \"gridColumnEnd\"],\n gridGap: [\"gridColumnGap\", \"gridRowGap\"],\n gridRow: [\"gridRowStart\", \"gridRowEnd\"],\n gridTemplate: [\"gridTemplateColumns\", \"gridTemplateRows\", \"gridTemplateAreas\"],\n inset: [\"top\", \"right\", \"bottom\", \"left\"],\n listStyle: [\"listStyleType\", \"listStylePosition\", \"listStyleImage\"],\n margin: [\"marginTop\", \"marginRight\", \"marginBottom\", \"marginLeft\"],\n mask: [\"maskImage\", \"maskMode\", \"maskRepeat\", \"maskPosition\", \"maskClip\", \"maskOrigin\", \"maskSize\", \"maskComposite\"],\n maskBorder: [\n \"maskBorderSource\",\n \"maskBorderMode\",\n \"maskBorderSlice\",\n \"maskBorderWidth\",\n \"maskBorderOutset\",\n \"maskBorderRepeat\"\n ],\n offset: [\"offsetPosition\", \"offsetPath\", \"offsetDistance\", \"offsetRotate\", \"offsetAnchor\"],\n outline: [\"outlineWidth\", \"outlineStyle\", \"outlineColor\"],\n overflow: [\"overflowX\", \"overflowY\"],\n padding: [\"paddingTop\", \"paddingRight\", \"paddingBottom\", \"paddingLeft\"],\n pause: [\"pauseBefore\", \"pauseAfter\"],\n placeContent: [\"alignContent\", \"justifyContent\"],\n placeItems: [\"alignItems\", \"justifyItems\"],\n placeSelf: [\"alignSelf\", \"justifySelf\"],\n rest: [\"restBefore\", \"restAfter\"],\n scrollMargin: [\"scrollMarginTop\", \"scrollMarginRight\", \"scrollMarginBottom\", \"scrollMarginLeft\"],\n scrollPadding: [\"scrollPaddingTop\", \"scrollPaddingRight\", \"scrollPaddingBottom\", \"scrollPaddingLeft\"],\n scrollPaddingBlock: [\"scrollPaddingBlockStart\", \"scrollPaddingBlockEnd\"],\n scrollPaddingInline: [\"scrollPaddingInlineStart\", \"scrollPaddingInlineEnd\"],\n scrollSnapMargin: [\"scrollSnapMarginTop\", \"scrollSnapMarginRight\", \"scrollSnapMarginBottom\", \"scrollSnapMarginLeft\"],\n scrollSnapMarginBlock: [\"scrollSnapMarginBlockStart\", \"scrollSnapMarginBlockEnd\"],\n scrollSnapMarginInline: [\"scrollSnapMarginInlineStart\", \"scrollSnapMarginInlineEnd\"],\n scrollTimeline: [\"scrollTimelineSource\", \"scrollTimelineOrientation\"],\n textDecoration: [\"textDecorationLine\", \"textDecorationStyle\", \"textDecorationColor\"],\n textEmphasis: [\"textEmphasisStyle\", \"textEmphasisColor\"],\n transition: [\"transitionProperty\", \"transitionDuration\", \"transitionTimingFunction\", \"transitionDelay\"]\n};\nvar longhands = Object.values(shorthandProperties).reduce((a, b) => [...a, ...b], []);\nfunction getPropertyPriority(property) {\n if (property === \"all\")\n return 0;\n return longhands.includes(property) ? 2 : 1;\n}\n\n// src/slot.ts\nvar getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const slots = recipe.slots ?? [];\n const recipeParts = slots.map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) {\n for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) {\n recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n }\n }\n return Object.fromEntries(recipeParts);\n};\nvar getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant.css[slotName]).map((compoundVariant) => ({ ...compoundVariant, css: compoundVariant.css[slotName] }));\n\n// src/split.ts\nfunction splitBy(value, separator = \",\") {\n const result = [];\n let current = \"\";\n let depth = 0;\n for (let i = 0; i < value.length; i++) {\n const char = value[i];\n if (char === \"(\") {\n depth++;\n } else if (char === \")\") {\n depth--;\n } else if (char === separator && depth === 0) {\n result.push(current);\n current = \"\";\n continue;\n }\n current += char;\n }\n result.push(current);\n return result;\n}\nfunction splitDotPath(path) {\n return path.split(\".\").reduce((acc, curr) => {\n const last = acc[acc.length - 1];\n if (last != null && !isNaN(Number(last)) && !isNaN(Number(curr))) {\n acc[acc.length - 1] = `${last}.${curr}`;\n } else {\n acc.push(curr);\n }\n return acc;\n }, []);\n}\nfunction getNegativePath(path) {\n return path.slice(0, -1).concat(`-${path.at(-1)}`);\n}\nfunction getDotPath(obj, path, fallback) {\n if (typeof path !== \"string\")\n return fallback;\n const idx = path.indexOf(\".\");\n if (idx === -1) {\n return obj?.[path] ?? fallback;\n }\n const key = path.slice(0, idx);\n const nextPath = path.slice(idx + 1);\n const checkValue = obj?.[key]?.[nextPath];\n if (checkValue) {\n return checkValue;\n }\n return getDotPath(obj?.[key], nextPath, fallback) ?? fallback;\n}\n\n// src/split-props.ts\nfunction splitProps(props, ...keys) {\n const descriptors = Object.getOwnPropertyDescriptors(props);\n const dKeys = Object.keys(descriptors);\n const split = (k) => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (descriptors[key]) {\n Object.defineProperty(clone, key, descriptors[key]);\n delete descriptors[key];\n }\n }\n return clone;\n };\n const fn = (key) => split(Array.isArray(key) ? key : dKeys.filter(key));\n return keys.map(fn).concat(split(dKeys));\n}\n\n// src/to-json.ts\nfunction mapToJson(map) {\n const obj = {};\n map.forEach((value, key) => {\n if (value instanceof Map) {\n obj[key] = Object.fromEntries(value);\n } else {\n obj[key] = value;\n }\n });\n return obj;\n}\n\n// src/typegen.ts\nfunction unionType(values) {\n return Array.from(values).map((value) => JSON.stringify(value)).join(\" | \");\n}\n\n// src/uniq.ts\nvar uniq = (...items) => items.filter(Boolean).reduce((acc, item) => Array.from(/* @__PURE__ */ new Set([...acc, ...item])), []);\n\n// src/unit-conversion.ts\nvar BASE_FONT_SIZE = 16;\nvar UNIT_PX = \"px\";\nvar UNIT_EM = \"em\";\nvar UNIT_REM = \"rem\";\nfunction getUnit(value = \"\") {\n const DIGIT_REGEX = new RegExp(String.raw`-?\\d+(?:\\.\\d+|\\d*)`);\n const UNIT_REGEX = new RegExp(`${UNIT_PX}|${UNIT_EM}|${UNIT_REM}`);\n const unit = value.match(new RegExp(`${DIGIT_REGEX.source}(${UNIT_REGEX.source})`));\n return unit?.[1];\n}\nfunction toPx(value = \"\") {\n if (typeof value === \"number\") {\n return `${value}px`;\n }\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_PX) {\n return value;\n }\n if (unit === UNIT_EM || unit === UNIT_REM) {\n return `${parseFloat(value) * BASE_FONT_SIZE}${UNIT_PX}`;\n }\n}\nfunction toEm(value = \"\", fontSize = BASE_FONT_SIZE) {\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_EM) {\n return value;\n }\n if (unit === UNIT_PX) {\n return `${parseFloat(value) / fontSize}${UNIT_EM}`;\n }\n if (unit === UNIT_REM) {\n return `${parseFloat(value) * BASE_FONT_SIZE / fontSize}${UNIT_EM}`;\n }\n}\nfunction toRem(value = \"\") {\n const unit = getUnit(value);\n if (!unit)\n return value;\n if (unit === UNIT_REM) {\n return value;\n }\n if (unit === UNIT_EM) {\n return `${parseFloat(value)}${UNIT_REM}`;\n }\n if (unit === UNIT_PX) {\n return `${parseFloat(value) / BASE_FONT_SIZE}${UNIT_REM}`;\n }\n}\nexport {\n PandaError,\n assign,\n astish,\n calc,\n camelCaseProperty,\n capitalize,\n compact,\n createCss,\n createMergeCss,\n createRegex,\n cssVar,\n dashCase,\n deepSet,\n entries,\n esc2 as esc,\n filterBaseConditions,\n flatten,\n fromEntries,\n getArbitraryValue,\n getDotPath,\n getNegativePath,\n getOrCreateSet,\n getPatternStyles,\n getPropertyPriority,\n getSlotCompoundVariant,\n getSlotRecipes,\n getUnit,\n hypenateProperty,\n isBaseCondition,\n isBoolean,\n isCssFunction,\n isCssUnit,\n isCssVar2 as isCssVar,\n isFunction,\n isImportant,\n isObject,\n isObjectOrArray,\n isString,\n mapEntries,\n mapObject,\n mapToJson,\n markImportant,\n memo,\n mergeProps,\n mergeWith,\n normalizeStyleObject,\n omit,\n parseJson,\n patternFns,\n splitBy,\n splitDotPath,\n splitProps,\n stringifyJson,\n toEm,\n toHash,\n toPx,\n toRem,\n toResponsiveObject,\n traverse,\n uncapitalize,\n unionType,\n uniq,\n walkObject,\n withoutImportant,\n withoutSpace\n};\n","import { defineTokens } from '@pandacss/dev'\nimport { toRem } from '@pandacss/shared'\n\nexport const fontSizes = defineTokens.fontSizes({\n body: {\n lg: { value: toRem('16px')! },\n md: { value: toRem('14px')! },\n sm: { value: toRem('12px')! },\n },\n heading: {\n desktop: {\n '2xl': { value: toRem('44px')! },\n lg: { value: toRem('32px')! },\n md: { value: toRem('28px')! },\n sm: { value: toRem('22px')! },\n xs: { value: toRem('18px')! },\n },\n mobile: {\n '2xl': { value: toRem('38px')! },\n lg: { value: toRem('30px')! },\n md: { value: toRem('24px')! },\n sm: { value: toRem('22px')! },\n xs: { value: toRem('18px')! },\n },\n },\n})\n\nexport const fontWeights = defineTokens.fontWeights({\n black: { value: '900' },\n bold: { value: '700' },\n extrabold: { value: '800' },\n extralight: { value: '200' },\n light: { value: '300' },\n medium: { value: '500' },\n normal: { value: '400' },\n semibold: { value: '600' },\n thin: { value: '100' },\n})\n\nexport const letterSpacings = defineTokens.letterSpacings({\n normal: { value: '0em' },\n tight: { value: '-0.025em' },\n tighter: { value: '-0.05em' },\n wide: { value: '0.025em' },\n wider: { value: '0.05em' },\n widest: { value: '0.1em' },\n})\n\nexport const lineHeights = defineTokens.lineHeights({})\n\nexport const fonts = defineTokens.fonts({\n satoshi: { value: 'var(--font-satoshi)' },\n cabinet: { value: 'var(--font-cabinet)' },\n mono: {\n value: [\n 'ui-monospace',\n 'SFMono-Regular',\n 'Menlo',\n 'Monaco',\n 'Consolas',\n '\"Liberation Mono\"',\n '\"Courier New\"',\n 'monospace',\n ],\n },\n sans: {\n value: [\n 'ui-sans-serif',\n 'system-ui',\n '-apple-system',\n 'BlinkMacSystemFont',\n '\"Segoe UI\"',\n 'Roboto',\n '\"Helvetica Neue\"',\n 'Arial',\n '\"Noto Sans\"',\n 'sans-serif',\n '\"Apple Color Emoji\"',\n '\"Segoe UI Emoji\"',\n '\"Segoe UI Symbol\"',\n '\"Noto Color Emoji\"',\n ],\n },\n serif: {\n value: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n },\n})\n","import { defineTokens } from '@pandacss/dev'\n\nexport const zIndex = defineTokens.zIndex({\n banner: {\n value: 1200,\n },\n base: {\n value: 0,\n },\n docked: {\n value: 10,\n },\n dropdown: {\n value: 1000,\n },\n hide: {\n value: -1,\n },\n modal: {\n value: 1400,\n },\n overlay: {\n value: 1300,\n },\n popover: {\n value: 1500,\n },\n skipLink: {\n value: 1600,\n },\n sticky: {\n value: 1100,\n },\n toast: {\n value: 1700,\n },\n tooltip: {\n value: 1800,\n },\n})\n","import { animations } from './animations'\nimport { aspectRatios } from './aspect-ratios'\nimport { blurs } from './blurs'\nimport { borders } from './borders'\nimport { colors } from './colors'\nimport { durations } from './durations'\nimport { easings } from './easings'\nimport { radii } from './radii'\nimport { shadows } from './shadows'\nimport { sizes } from './sizes'\nimport { spacing } from './spacing'\nimport { fonts, fontSizes, fontWeights, letterSpacings, lineHeights } from './typography'\nimport { zIndex } from './z-index'\n\nexport const tokens = {\n animations,\n aspectRatios,\n blurs,\n borders,\n colors,\n durations,\n easings,\n fontSizes,\n fontWeights,\n fonts,\n letterSpacings,\n lineHeights,\n radii,\n shadows,\n sizes,\n spacing,\n zIndex,\n} as const\n","import type { Config } from '@pandacss/dev'\nimport { defineUtility } from '@pandacss/dev'\n\nconst boxSize = defineUtility({\n className: 'size',\n transform(value) {\n return { height: value, width: value }\n },\n values: 'sizes',\n})\n\nexport const utilities: Config['utilities'] = {\n extend: {\n boxSize,\n },\n}\n","import { definePreset } from '@pandacss/dev'\n\nimport { breakpoints } from './theme/breakpoints'\nimport { conditions } from './theme/conditions'\nimport { containerSizes } from './theme/containers'\nimport { keyframes } from './theme/keyframes'\nimport { recipes, slotRecipes } from './theme/recipes'\nimport { semanticTokens } from './theme/semantic-tokens'\nimport { textStyles } from './theme/text-styles'\nimport { tokens } from './theme/tokens'\nimport { utilities } from './theme/utilities'\n\nexport const preset = definePreset({\n staticCss: {\n recipes: '*',\n },\n theme: {\n breakpoints,\n containerSizes,\n keyframes,\n recipes,\n semanticTokens,\n slotRecipes,\n textStyles,\n tokens,\n },\n utilities,\n conditions,\n})\n"],"names":["cx","args","createStyleContext","recipe","options","StyleContext","createContext","Component","slot","contextOptions","forwardRef","props","ref","slotStyles","useContext","dataAttr","createElement","providerOptions","variantProps","otherProps","jsx","withProvider","withContext","accordion","Accordion","styled","ArkAccordion","AccordionItem","AccordionItemContent","AccordionItemIndicator","AccordionItemTrigger","Button","button","Checkbox","checkboxProps","checkbox","cssProps","localProps","splitCssProps","children","className","rootProps","styles","jsxs","ArkCheckbox","css","CheckIcon","MinusIcon","drawer","Drawer","ArkDrawer","DrawerBody","ark","DrawerCloseTrigger","DrawerFooter","Header","showCloseTrigger","DrawerHeader","DrawerTitle","DrawerTrigger","DrawerPositioner","DrawerBackdrop","Content","Portal","DrawerContent","StyledFormControl","formControl","FormControl","isInvalid","isRequired","invalidProps","StyledFormLabel","formLabel","FormLabel","labelProps","addon","FormHelperText","formHelperText","Heading","as","Dynamic","useMemo","heading","Switch","switchProps","switchRecipe","ArkSwitch","Text","text","Textarea","textarea","tabs","Tabs","ArkTab","TabsContent","TabsTrigger","TabsIndicator","List","TabsList","ConditionalWrapper","when","wrapper","select","Root","ArkSelect","ClearTrigger","Control","Indicator","Item","ItemIndicator","ItemText","Positioner","Trigger","ValueText","Select","items","placeholder","emptyLabel","usePortal","positioning","item","Input","input","InputAddon","inputAddon","InputGroup","inputGroup","Box","breakpoints","conditions","containerSizes","keyframes","defineKeyframes","buttonRecipe","defineRecipe","headingRecipe","createAnatomy","name","parts","values","isEmpty","newName","prev","part","toKebabCase","value","v","isDocument","el","isWindow","getDocument","defaultItemToId","itemById","id","itemToId","indexOfId","nextById","loop","idx","prevById","queryAll","root","selector","createScope","methods","screen","ctx","_a","elem","valueAsString","first","last","createProps","anatomy","dom","_b","anatomy$1","tab","rect","defineSlotRecipe","switchAnatomy","textRecipe","inputRecipe","textareaRecipe","formControlRecipe","formHelperTextRecipe","dialogAnatomy","drawerRecipe","accordionRecipe","accordionAnatomy","formLabelRecipe","checkboxRecipe","checkboxAnatomy","tabsRecipe","tabsAnatomy","selectRecipe","selectAnatomy","inputAddonRecipe","inputGroupRecipe","recipes","slotRecipes","semanticTokensColors","defineSemanticTokens","semanticTokens","textStyles","defineTextStyles","animations","defineTokens","aspectRatios","blurs","borders","colors","durations","easings","radii","shadows","sizes","spacing","lengthUnits","shorthandProperties","a","b","BASE_FONT_SIZE","UNIT_PX","UNIT_EM","UNIT_REM","getUnit","DIGIT_REGEX","UNIT_REGEX","unit","toRem","fontSizes","fontWeights","letterSpacings","lineHeights","fonts","zIndex","tokens","boxSize","defineUtility","utilities","preset","definePreset"],"mappings":"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R,KAAM,OACR,EACA,UAAW,uCACX,MAAO,CACL,UAAW,CACT,OAAQ,cACR,QAAS,cACT,KAAM,aACR,EACA,KAAM,cACN,OAAQ,QACR,QAAS,OACX,CACF,EACA,SAAU,CACR,GAAI,CACF,UAAW,CACT,OAAQ,cACR,QAAS,cACT,KAAM,aACR,EACA,QAAS,cACT,OAAQ,cACR,KAAM,aACR,EACA,MAAO,CACL,UAAW,CACT,OAAQ,cACR,QAAS,cACT,KAAM,aACR,EACA,KAAM,cACN,OAAQ,cACR,QAAS,aACX,CACF,CACF,EACA,SAAU,CACR,KAAM,CAAC,EACP,OAAQ,CAAC,CACX,CACF,EACA,iBAAkB,CAChB,CACE,QAAS,UACT,SAAU,SACV,IAAK,CACH,GAAI,CACF,UAAW,CACT,OAAQ,YACR,QAAS,YACT,KAAM,WACR,EACA,QAAS,YACT,OAAQ,YACR,KAAM,WACR,CACF,CACF,EACA,CACE,QAAS,YACT,SAAU,SACV,IAAK,CACH,GAAI,CACF,UAAW,CACT,OAAQ,cACR,QAAS,cACT,KAAM,aACR,EACA,QAAS,YACT,OAAQ,YACR,KAAM,aACR,EACA,UAAW,CACT,KAAM,qCACN,QAAS,oCACX,EACA,MAAO,CACL,UAAW,CACT,OAAQ,YACR,QAAS,YACT,KAAM,WACR,EACA,KAAM,YACN,OAAQ,QACR,QAAS,OACX,CACF,CACF,EACA,CACE,QAAS,WACT,SAAU,SACV,IAAK,CACH,GAAI,CACF,UAAW,CACT,OAAQ,cACR,QAAS,cACT,KAAM,aACR,EACA,QAAS,YACT,OAAQ,YACR,KAAM,aACR,EACA,MAAO,CACL,UAAW,CACT,OAAQ,YACR,QAAS,YACT,KAAM,WACR,EACA,KAAM,YACN,OAAQ,YACR,QAAS,WACX,CACF,CACF,CACF,CACF,CAAC,EC/LYC,GAAgBD,EAAAA,aAAa,CACxC,UAAW,UACX,gBAAiB,CACf,KAAM,IACR,EACA,IAAK,CAAC,SAAS,EACf,KAAM,CACJ,WAAY,UACZ,MAAO,cACT,EACA,SAAU,CACR,OAAQ,CACN,KAAM,CACJ,UAAW,QACb,CACF,EACA,UAAW,CACT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","x_google_ignoreList":[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,75]}
|