{"version":3,"sources":["../../registry/default/ui/radio-group.tsx","../../../../node_modules/.pnpm/@babel+runtime@7.22.3/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@radix-ui+primitive@1.0.1/node_modules/@radix-ui/primitive/dist/packages/core/primitive/src/primitive.tsx","../../../../node_modules/.pnpm/@radix-ui+react-compose-refs@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-compose-refs/dist/packages/react/compose-refs/src/composeRefs.tsx","../../../../node_modules/.pnpm/@radix-ui+react-context@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-context/dist/packages/react/context/src/createContext.tsx","../../../../node_modules/.pnpm/@babel+runtime@7.22.6/node_modules/@babel/runtime/helpers/esm/extends.js","../../../../node_modules/.pnpm/@radix-ui+react-slot@1.0.2_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-slot/dist/packages/react/slot/src/Slot.tsx","../../../../node_modules/.pnpm/@radix-ui+react-primitive@1.0.3_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2._c26rkpxnhr3o57o2cowwo23hui/node_modules/@radix-ui/react-primitive/dist/packages/react/primitive/src/Primitive.tsx","../../../../node_modules/.pnpm/@radix-ui+react-collection@1.0.3_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2_jxq2dj3ts3nidk7ucehqzsghlm/node_modules/@radix-ui/react-collection/dist/packages/react/collection/src/Collection.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-layout-effect/dist/packages/react/use-layout-effect/src/useLayoutEffect.tsx","../../../../node_modules/.pnpm/@radix-ui+react-id@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-id/dist/packages/react/id/src/id.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-callback-ref/dist/packages/react/use-callback-ref/src/useCallbackRef.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-controllable-state/dist/packages/react/use-controllable-state/src/useControllableState.tsx","../../../../node_modules/.pnpm/@radix-ui+react-direction@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-direction/dist/packages/react/direction/src/Direction.tsx","../../../../node_modules/.pnpm/@radix-ui+react-roving-focus@1.0.4_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18_marg7a5ylc3gzmx2k3ov6qbfee/node_modules/@radix-ui/react-roving-focus/dist/packages/react/roving-focus/src/RovingFocusGroup.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-size@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-size/dist/packages/react/use-size/src/useSize.tsx","../../../../node_modules/.pnpm/@radix-ui+react-use-previous@1.0.1_@types+react@18.2.65_react@18.2.0/node_modules/@radix-ui/react-use-previous/dist/packages/react/use-previous/src/usePrevious.tsx","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.0.1_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/useStateMachine.tsx","../../../../node_modules/.pnpm/@radix-ui+react-presence@1.0.1_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18.2.0_react@18.2.0__react@18.2.0/node_modules/@radix-ui/react-presence/dist/packages/react/presence/src/Presence.tsx","../../../../node_modules/.pnpm/@radix-ui+react-radio-group@1.1.3_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18._p2wc5mf76oy7vudfgk6eicrub4/node_modules/@radix-ui/react-radio-group/dist/packages/react/radio-group/src/Radio.tsx","../../../../node_modules/.pnpm/@radix-ui+react-radio-group@1.1.3_@types+react-dom@18.2.22_@types+react@18.2.65_react-dom@18._p2wc5mf76oy7vudfgk6eicrub4/node_modules/@radix-ui/react-radio-group/dist/packages/react/radio-group/src/RadioGroup.tsx","../../lib/utils.ts"],"names":["radio_group_exports","__export","RadioGroup","RadioGroupItem","__toCommonJS","React","_extends","target","i","source","key","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","defaultPrevented","setRef","ref","value","current","composeRefs","refs","node","forEach","useComposedRefs","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext","rootComponentName","defaultContext","BaseContext","index","length","Provider","props","scope","children","context","Context","Object","values","$3bkAK$createElement","useContext","consumerName","undefined","Error","displayName","createScope","scopeContexts","map","contexts","composeContextScopes","scopes","baseScope","scopeHooks","useScope","overrideScopes","nextScopes","reduce","currentScope","Slot","forwardedRef","slotProps","childrenArray","toArray","slottable","find","isSlottable","newElement","newChildren","child","count","only","$9IrjX$createElement","$5e63c961fc1ce211$var$SlotClone","SlotClone","mergeProps","Slottable","$9IrjX$Fragment","type","childProps","overrideProps","propName","slotPropValue","childPropValue","test","args","filter","Boolean","join","NODES","Primitive","primitive","Node","asChild","primitiveProps","Comp","window","Symbol","for","$4q5Fq$createElement","createCollection","name","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","collectionRef","itemMap","Map","CollectionProvider","useRef","$6vYhU$react","COLLECTION_SLOT_NAME","CollectionSlot","forwardRef","composedRefs","$5e63c961fc1ce211$export$8c6ed5c666ac1360","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","itemData","useEffect","set","delete","useCollection","useCallback","collectionNode","orderedNodes","Array","from","querySelectorAll","sort","a","b","indexOf","ItemSlot","useLayoutEffect","globalThis","document","useReactId","useId","deterministicId","id","setId","useState","reactId","String","useCallbackRef","callback","callbackRef","_callbackRef$current","useControllableState","prop","defaultProp","onChange","uncontrolledProp","setUncontrolledProp","useUncontrolledState","isControlled","handleChange","setValue","nextValue","uncontrolledState","prevValueRef","DirectionContext","useDirection","localDir","globalDir","ENTRY_FOCUS","EVENT_OPTIONS","bubbles","cancelable","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","$98Iye$createElement","$d7bdfb9eb0fdf311$var$Collection","__scopeRovingFocusGroup","$d7bdfb9eb0fdf311$var$RovingFocusGroupImpl","RovingFocusGroupImpl","orientation","loop","dir","currentTabStopId","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","groupProps","direction","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","addEventListener","removeEventListener","$d7bdfb9eb0fdf311$var$RovingFocusProvider","tabStopId","prevCount","$8927f6f2acc4f386$export$250ffa63cdc0d034","outline","style","onMouseDown","onFocus","isKeyboardFocus","currentTarget","entryFocusEvent","CustomEvent","dispatchEvent","items","item","focusable","activeItem","active","currentItem","candidateNodes","focusFirst","onBlur","ITEM_NAME","RovingFocusGroupItem","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","onItemFocus","preventDefault","onKeyDown","shiftKey","onItemShiftTab","focusIntent","getFocusIntent","reverse","currentIndex","wrapArray","slice","setTimeout","MAP_KEY_TO_FOCUS_INTENT","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","PageUp","Home","PageDown","End","getDirectionAwareKey","includes","candidates","PREVIOUSLY_FOCUSED_ELEMENT","activeElement","candidate","focus","array","startIndex","_","Root","Item","useSize","element","size","setSize","width","offsetWidth","height","offsetHeight","resizeObserver","ResizeObserver","entries","isArray","entry","borderSizeEntry","borderSize","observe","box","unobserve","usePrevious","previous","useStateMachine","initialState","machine","state","nextState","Presence","present","presence","usePresence","isPresent","setNode","stylesRef","prevPresentRef","prevAnimationNameRef","send","mounted","UNMOUNT","ANIMATION_OUT","unmountSuspended","MOUNT","ANIMATION_END","unmounted","currentAnimationName","getAnimationName","styles","wasPresent","prevAnimationName","display","handleAnimationEnd","isCurrentAnimation","animationName","ReactDOM","handleAnimationStart","getComputedStyle","RADIO_NAME","createRadioContext","createRadioScope","RadioProvider","useRadioContext","Radio","__scopeRadio","checked","required","disabled","onCheck","radioProps","button","setButton","hasConsumerStoppedPropagationRef","isFormControl","closest","$8Wolv$createElement","$ce77a8961b41be9e$var$RadioProvider","getState","onClick","isPropagationStopped","stopPropagation","$ce77a8961b41be9e$var$BubbleInput","transform","INDICATOR_NAME","RadioIndicator","forceMount","indicatorProps","$921a889cee6df7e8$export$99c2b779aa4e8b8b","BubbleInput","control","inputProps","prevChecked","controlSize","input","inputProto","HTMLInputElement","prototype","setChecked","getOwnPropertyDescriptor","Event","call","position","pointerEvents","opacity","margin","ARROW_KEYS","RADIO_GROUP_NAME","createRadioGroupContext","createRadioGroupScope","useRovingFocusGroupScope","useRadioScope","RadioGroupProvider","useRadioGroupContext","__scopeRadioGroup","defaultValue","valueProp","onValueChange","rovingFocusGroupScope","$f99a8c78507165f7$var$RadioGroupProvider","$d7bdfb9eb0fdf311$export$be92b6f5f03c0fe9","isDisabled","radioScope","isArrowKeyPressedRef","handleKeyDown","handleKeyUp","$d7bdfb9eb0fdf311$export$6d08773d2e66f8f2","$ce77a8961b41be9e$export$d7b12c4107be0d61","_ref$current","click","RadioGroupIndicator","$ce77a8961b41be9e$export$d35a9ffa9a04f9e7","Indicator","import_lucide_react","import_clsx","import_tailwind_merge","cn","inputs","import_jsx_runtime","className","$f99a8c78507165f7$export$be92b6f5f03c0fe9","$f99a8c78507165f7$export$6d08773d2e66f8f2","$f99a8c78507165f7$export$adb584737d712b70"],"mappings":"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","sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Root>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Root\n      className={cn(\"grid gap-2\", className)}\n      {...props}\n      ref={ref}\n    />\n  )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n  React.ElementRef<typeof RadioGroupPrimitive.Item>,\n  React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n  return (\n    <RadioGroupPrimitive.Item\n      ref={ref}\n      className={cn(\n        \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n        className\n      )}\n      {...props}\n    >\n      <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n        <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n      </RadioGroupPrimitive.Indicator>\n    </RadioGroupPrimitive.Item>\n  )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","function composeEventHandlers<E>(\n  originalEventHandler?: (event: E) => void,\n  ourEventHandler?: (event: E) => void,\n  { checkForDefaultPrevented = true } = {}\n) {\n  return function handleEvent(event: E) {\n    originalEventHandler?.(event);\n\n    if (checkForDefaultPrevented === false || !((event as unknown) as Event).defaultPrevented) {\n      return ourEventHandler?.(event);\n    }\n  };\n}\n\nexport { composeEventHandlers };\n","import * as React from 'react';\n\ntype PossibleRef<T> = React.Ref<T> | undefined;\n\n/**\n * Set a given ref to a given value\n * This utility takes care of different types of refs: callback refs and RefObject(s)\n */\nfunction setRef<T>(ref: PossibleRef<T>, value: T) {\n  if (typeof ref === 'function') {\n    ref(value);\n  } else if (ref !== null && ref !== undefined) {\n    (ref as React.MutableRefObject<T>).current = value;\n  }\n}\n\n/**\n * A utility to compose multiple refs together\n * Accepts callback refs and RefObject(s)\n */\nfunction composeRefs<T>(...refs: PossibleRef<T>[]) {\n  return (node: T) => refs.forEach((ref) => setRef(ref, node));\n}\n\n/**\n * A custom hook that composes multiple refs\n * Accepts callback refs and RefObject(s)\n */\nfunction useComposedRefs<T>(...refs: PossibleRef<T>[]) {\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  return React.useCallback(composeRefs(...refs), refs);\n}\n\nexport { composeRefs, useComposedRefs };\n","import * as React from 'react';\n\nfunction createContext<ContextValueType extends object | null>(\n  rootComponentName: string,\n  defaultContext?: ContextValueType\n) {\n  const Context = React.createContext<ContextValueType | undefined>(defaultContext);\n\n  function Provider(props: ContextValueType & { children: React.ReactNode }) {\n    const { children, ...context } = props;\n    // Only re-memoize when prop values change\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n    return <Context.Provider value={value}>{children}</Context.Provider>;\n  }\n\n  function useContext(consumerName: string) {\n    const context = React.useContext(Context);\n    if (context) return context;\n    if (defaultContext !== undefined) return defaultContext;\n    // if a defaultContext wasn't specified, it's a required context.\n    throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n  }\n\n  Provider.displayName = rootComponentName + 'Provider';\n  return [Provider, useContext] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * createContextScope\n * -----------------------------------------------------------------------------------------------*/\n\ntype Scope<C = any> = { [scopeName: string]: React.Context<C>[] } | undefined;\ntype ScopeHook = (scope: Scope) => { [__scopeProp: string]: Scope };\ninterface CreateScope {\n  scopeName: string;\n  (): ScopeHook;\n}\n\nfunction createContextScope(scopeName: string, createContextScopeDeps: CreateScope[] = []) {\n  let defaultContexts: any[] = [];\n\n  /* -----------------------------------------------------------------------------------------------\n   * createContext\n   * ---------------------------------------------------------------------------------------------*/\n\n  function createContext<ContextValueType extends object | null>(\n    rootComponentName: string,\n    defaultContext?: ContextValueType\n  ) {\n    const BaseContext = React.createContext<ContextValueType | undefined>(defaultContext);\n    const index = defaultContexts.length;\n    defaultContexts = [...defaultContexts, defaultContext];\n\n    function Provider(\n      props: ContextValueType & { scope: Scope<ContextValueType>; children: React.ReactNode }\n    ) {\n      const { scope, children, ...context } = props;\n      const Context = scope?.[scopeName][index] || BaseContext;\n      // Only re-memoize when prop values change\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n      const value = React.useMemo(() => context, Object.values(context)) as ContextValueType;\n      return <Context.Provider value={value}>{children}</Context.Provider>;\n    }\n\n    function useContext(consumerName: string, scope: Scope<ContextValueType | undefined>) {\n      const Context = scope?.[scopeName][index] || BaseContext;\n      const context = React.useContext(Context);\n      if (context) return context;\n      if (defaultContext !== undefined) return defaultContext;\n      // if a defaultContext wasn't specified, it's a required context.\n      throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n    }\n\n    Provider.displayName = rootComponentName + 'Provider';\n    return [Provider, useContext] as const;\n  }\n\n  /* -----------------------------------------------------------------------------------------------\n   * createScope\n   * ---------------------------------------------------------------------------------------------*/\n\n  const createScope: CreateScope = () => {\n    const scopeContexts = defaultContexts.map((defaultContext) => {\n      return React.createContext(defaultContext);\n    });\n    return function useScope(scope: Scope) {\n      const contexts = scope?.[scopeName] || scopeContexts;\n      return React.useMemo(\n        () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n        [scope, contexts]\n      );\n    };\n  };\n\n  createScope.scopeName = scopeName;\n  return [createContext, composeContextScopes(createScope, ...createContextScopeDeps)] as const;\n}\n\n/* -------------------------------------------------------------------------------------------------\n * composeContextScopes\n * -----------------------------------------------------------------------------------------------*/\n\nfunction composeContextScopes(...scopes: CreateScope[]) {\n  const baseScope = scopes[0];\n  if (scopes.length === 1) return baseScope;\n\n  const createScope: CreateScope = () => {\n    const scopeHooks = scopes.map((createScope) => ({\n      useScope: createScope(),\n      scopeName: createScope.scopeName,\n    }));\n\n    return function useComposedScopes(overrideScopes) {\n      const nextScopes = scopeHooks.reduce((nextScopes, { useScope, scopeName }) => {\n        // We are calling a hook inside a callback which React warns against to avoid inconsistent\n        // renders, however, scoping doesn't have render side effects so we ignore the rule.\n        // eslint-disable-next-line react-hooks/rules-of-hooks\n        const scopeProps = useScope(overrideScopes);\n        const currentScope = scopeProps[`__scope${scopeName}`];\n        return { ...nextScopes, ...currentScope };\n      }, {});\n\n      return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n    };\n  };\n\n  createScope.scopeName = baseScope.scopeName;\n  return createScope;\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nexport { createContext, createContextScope };\nexport type { CreateScope, Scope };\n","export default function _extends() {\n  _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  };\n  return _extends.apply(this, arguments);\n}","import * as React from 'react';\nimport { composeRefs } from '@radix-ui/react-compose-refs';\n\n/* -------------------------------------------------------------------------------------------------\n * Slot\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotProps extends React.HTMLAttributes<HTMLElement> {\n  children?: React.ReactNode;\n}\n\nconst Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n  const childrenArray = React.Children.toArray(children);\n  const slottable = childrenArray.find(isSlottable);\n\n  if (slottable) {\n    // the new element to render is the one passed as a child of `Slottable`\n    const newElement = slottable.props.children as React.ReactNode;\n\n    const newChildren = childrenArray.map((child) => {\n      if (child === slottable) {\n        // because the new element will be the one rendered, we are only interested\n        // in grabbing its children (`newElement.props.children`)\n        if (React.Children.count(newElement) > 1) return React.Children.only(null);\n        return React.isValidElement(newElement)\n          ? (newElement.props.children as React.ReactNode)\n          : null;\n      } else {\n        return child;\n      }\n    });\n\n    return (\n      <SlotClone {...slotProps} ref={forwardedRef}>\n        {React.isValidElement(newElement)\n          ? React.cloneElement(newElement, undefined, newChildren)\n          : null}\n      </SlotClone>\n    );\n  }\n\n  return (\n    <SlotClone {...slotProps} ref={forwardedRef}>\n      {children}\n    </SlotClone>\n  );\n});\n\nSlot.displayName = 'Slot';\n\n/* -------------------------------------------------------------------------------------------------\n * SlotClone\n * -----------------------------------------------------------------------------------------------*/\n\ninterface SlotCloneProps {\n  children: React.ReactNode;\n}\n\nconst SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {\n  const { children, ...slotProps } = props;\n\n  if (React.isValidElement(children)) {\n    return React.cloneElement(children, {\n      ...mergeProps(slotProps, children.props),\n      ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,\n    });\n  }\n\n  return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\n\nSlotClone.displayName = 'SlotClone';\n\n/* -------------------------------------------------------------------------------------------------\n * Slottable\n * -----------------------------------------------------------------------------------------------*/\n\nconst Slottable = ({ children }: { children: React.ReactNode }) => {\n  return <>{children}</>;\n};\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype AnyProps = Record<string, any>;\n\nfunction isSlottable(child: React.ReactNode): child is React.ReactElement {\n  return React.isValidElement(child) && child.type === Slottable;\n}\n\nfunction mergeProps(slotProps: AnyProps, childProps: AnyProps) {\n  // all child props should override\n  const overrideProps = { ...childProps };\n\n  for (const propName in childProps) {\n    const slotPropValue = slotProps[propName];\n    const childPropValue = childProps[propName];\n\n    const isHandler = /^on[A-Z]/.test(propName);\n    if (isHandler) {\n      // if the handler exists on both, we compose them\n      if (slotPropValue && childPropValue) {\n        overrideProps[propName] = (...args: unknown[]) => {\n          childPropValue(...args);\n          slotPropValue(...args);\n        };\n      }\n      // but if it exists only on the slot, we use only this one\n      else if (slotPropValue) {\n        overrideProps[propName] = slotPropValue;\n      }\n    }\n    // if it's `style`, we merge them\n    else if (propName === 'style') {\n      overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n    } else if (propName === 'className') {\n      overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');\n    }\n  }\n\n  return { ...slotProps, ...overrideProps };\n}\n\nconst Root = Slot;\n\nexport {\n  Slot,\n  Slottable,\n  //\n  Root,\n};\nexport type { SlotProps };\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Slot } from '@radix-ui/react-slot';\n\nconst NODES = [\n  'a',\n  'button',\n  'div',\n  'form',\n  'h2',\n  'h3',\n  'img',\n  'input',\n  'label',\n  'li',\n  'nav',\n  'ol',\n  'p',\n  'span',\n  'svg',\n  'ul',\n] as const;\n\n// Temporary while we await merge of this fix:\n// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396\n// prettier-ignore\ntype PropsWithoutRef<P> = P extends any ? ('ref' extends keyof P ? Pick<P, Exclude<keyof P, 'ref'>> : P) : P;\ntype ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<\n  React.ComponentProps<T>\n>;\n\ntype Primitives = { [E in typeof NODES[number]]: PrimitiveForwardRefComponent<E> };\ntype PrimitivePropsWithRef<E extends React.ElementType> = React.ComponentPropsWithRef<E> & {\n  asChild?: boolean;\n};\n\ninterface PrimitiveForwardRefComponent<E extends React.ElementType>\n  extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}\n\n/* -------------------------------------------------------------------------------------------------\n * Primitive\n * -----------------------------------------------------------------------------------------------*/\n\nconst Primitive = NODES.reduce((primitive, node) => {\n  const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {\n    const { asChild, ...primitiveProps } = props;\n    const Comp: any = asChild ? Slot : node;\n\n    React.useEffect(() => {\n      (window as any)[Symbol.for('radix-ui')] = true;\n    }, []);\n\n    return <Comp {...primitiveProps} ref={forwardedRef} />;\n  });\n\n  Node.displayName = `Primitive.${node}`;\n\n  return { ...primitive, [node]: Node };\n}, {} as Primitives);\n\n/* -------------------------------------------------------------------------------------------------\n * Utils\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * Flush custom event dispatch\n * https://github.com/radix-ui/primitives/pull/1378\n *\n * React batches *all* event handlers since version 18, this introduces certain considerations when using custom event types.\n *\n * Internally, React prioritises events in the following order:\n *  - discrete\n *  - continuous\n *  - default\n *\n * https://github.com/facebook/react/blob/a8a4742f1c54493df00da648a3f9d26e3db9c8b5/packages/react-dom/src/events/ReactDOMEventListener.js#L294-L350\n *\n * `discrete` is an  important distinction as updates within these events are applied immediately.\n * React however, is not able to infer the priority of custom event types due to how they are detected internally.\n * Because of this, it's possible for updates from custom events to be unexpectedly batched when\n * dispatched by another `discrete` event.\n *\n * In order to ensure that updates from custom events are applied predictably, we need to manually flush the batch.\n * This utility should be used when dispatching a custom event from within another `discrete` event, this utility\n * is not nessesary when dispatching known event types, or if dispatching a custom type inside a non-discrete event.\n * For example:\n *\n * dispatching a known click 👎\n * target.dispatchEvent(new Event(‘click’))\n *\n * dispatching a custom type within a non-discrete event 👎\n * onScroll={(event) => event.target.dispatchEvent(new CustomEvent(‘customType’))}\n *\n * dispatching a custom type within a `discrete` event 👍\n * onPointerDown={(event) => dispatchDiscreteCustomEvent(event.target, new CustomEvent(‘customType’))}\n *\n * Note: though React classifies `focus`, `focusin` and `focusout` events as `discrete`, it's  not recommended to use\n * this utility with them. This is because it's possible for those handlers to be called implicitly during render\n * e.g. when focus is within a component as it is unmounted, or when managing focus on mount.\n */\n\nfunction dispatchDiscreteCustomEvent<E extends CustomEvent>(target: E['target'], event: E) {\n  if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nconst Root = Primitive;\n\nexport {\n  Primitive,\n  //\n  Root,\n  //\n  dispatchDiscreteCustomEvent,\n};\nexport type { ComponentPropsWithoutRef, PrimitivePropsWithRef };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { Slot } from '@radix-ui/react-slot';\n\nimport type * as Radix from '@radix-ui/react-primitive';\n\ntype SlotProps = Radix.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n  scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>…</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n  /* -----------------------------------------------------------------------------------------------\n   * CollectionProvider\n   * ---------------------------------------------------------------------------------------------*/\n\n  const PROVIDER_NAME = name + 'CollectionProvider';\n  const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n  type ContextValue = {\n    collectionRef: React.RefObject<CollectionElement>;\n    itemMap: Map<React.RefObject<ItemElement>, { ref: React.RefObject<ItemElement> } & ItemData>;\n  };\n\n  const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n    PROVIDER_NAME,\n    { collectionRef: { current: null }, itemMap: new Map() }\n  );\n\n  const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n    const { scope, children } = props;\n    const ref = React.useRef<CollectionElement>(null);\n    const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n    return (\n      <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n        {children}\n      </CollectionProviderImpl>\n    );\n  };\n\n  CollectionProvider.displayName = PROVIDER_NAME;\n\n  /* -----------------------------------------------------------------------------------------------\n   * CollectionSlot\n   * ---------------------------------------------------------------------------------------------*/\n\n  const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n  const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n    (props, forwardedRef) => {\n      const { scope, children } = props;\n      const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n      const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n      return <Slot ref={composedRefs}>{children}</Slot>;\n    }\n  );\n\n  CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n  /* -----------------------------------------------------------------------------------------------\n   * CollectionItem\n   * ---------------------------------------------------------------------------------------------*/\n\n  const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n  const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n  type CollectionItemSlotProps = ItemData & {\n    children: React.ReactNode;\n    scope: any;\n  };\n\n  const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n    (props, forwardedRef) => {\n      const { scope, children, ...itemData } = props;\n      const ref = React.useRef<ItemElement>(null);\n      const composedRefs = useComposedRefs(forwardedRef, ref);\n      const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n      React.useEffect(() => {\n        context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n        return () => void context.itemMap.delete(ref);\n      });\n\n      return (\n        <Slot {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n          {children}\n        </Slot>\n      );\n    }\n  );\n\n  CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n  /* -----------------------------------------------------------------------------------------------\n   * useCollection\n   * ---------------------------------------------------------------------------------------------*/\n\n  function useCollection(scope: any) {\n    const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n    const getItems = React.useCallback(() => {\n      const collectionNode = context.collectionRef.current;\n      if (!collectionNode) return [];\n      const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n      const items = Array.from(context.itemMap.values());\n      const orderedItems = items.sort(\n        (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n      );\n      return orderedItems;\n    }, [context.collectionRef, context.itemMap]);\n\n    return getItems;\n  }\n\n  return [\n    { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n    useCollection,\n    createCollectionScope,\n  ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import * as React from 'react';\n\n/**\n * On the server, React emits a warning when calling `useLayoutEffect`.\n * This is because neither `useLayoutEffect` nor `useEffect` run on the server.\n * We use this safe version which suppresses the warning by replacing it with a noop on the server.\n *\n * See: https://reactjs.org/docs/hooks-reference.html#uselayouteffect\n */\nconst useLayoutEffect = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {};\n\nexport { useLayoutEffect };\n","import * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\n// We `toString()` to prevent bundlers from trying to `import { useId } from 'react';`\nconst useReactId = (React as any)['useId'.toString()] || (() => undefined);\nlet count = 0;\n\nfunction useId(deterministicId?: string): string {\n  const [id, setId] = React.useState<string | undefined>(useReactId());\n  // React versions older than 18 will have client-side ids only.\n  useLayoutEffect(() => {\n    if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n  }, [deterministicId]);\n  return deterministicId || (id ? `radix-${id}` : '');\n}\n\nexport { useId };\n","import * as React from 'react';\n\n/**\n * A custom hook that converts a callback to a ref to avoid triggering re-renders when passed as a\n * prop or avoid re-executing effects when passed as a dependency\n */\nfunction useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n  const callbackRef = React.useRef(callback);\n\n  React.useEffect(() => {\n    callbackRef.current = callback;\n  });\n\n  // https://github.com/facebook/react/issues/19240\n  return React.useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n\nexport { useCallbackRef };\n","import * as React from 'react';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\n\ntype UseControllableStateParams<T> = {\n  prop?: T | undefined;\n  defaultProp?: T | undefined;\n  onChange?: (state: T) => void;\n};\n\ntype SetStateFn<T> = (prevState?: T) => T;\n\nfunction useControllableState<T>({\n  prop,\n  defaultProp,\n  onChange = () => {},\n}: UseControllableStateParams<T>) {\n  const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n  const isControlled = prop !== undefined;\n  const value = isControlled ? prop : uncontrolledProp;\n  const handleChange = useCallbackRef(onChange);\n\n  const setValue: React.Dispatch<React.SetStateAction<T | undefined>> = React.useCallback(\n    (nextValue) => {\n      if (isControlled) {\n        const setter = nextValue as SetStateFn<T>;\n        const value = typeof nextValue === 'function' ? setter(prop) : nextValue;\n        if (value !== prop) handleChange(value as T);\n      } else {\n        setUncontrolledProp(nextValue);\n      }\n    },\n    [isControlled, prop, setUncontrolledProp, handleChange]\n  );\n\n  return [value, setValue] as const;\n}\n\nfunction useUncontrolledState<T>({\n  defaultProp,\n  onChange,\n}: Omit<UseControllableStateParams<T>, 'prop'>) {\n  const uncontrolledState = React.useState<T | undefined>(defaultProp);\n  const [value] = uncontrolledState;\n  const prevValueRef = React.useRef(value);\n  const handleChange = useCallbackRef(onChange);\n\n  React.useEffect(() => {\n    if (prevValueRef.current !== value) {\n      handleChange(value as T);\n      prevValueRef.current = value;\n    }\n  }, [value, prevValueRef, handleChange]);\n\n  return uncontrolledState;\n}\n\nexport { useControllableState };\n","import * as React from 'react';\n\ntype Direction = 'ltr' | 'rtl';\nconst DirectionContext = React.createContext<Direction | undefined>(undefined);\n\n/* -------------------------------------------------------------------------------------------------\n * Direction\n * -----------------------------------------------------------------------------------------------*/\n\ninterface DirectionProviderProps {\n  children?: React.ReactNode;\n  dir: Direction;\n}\nconst DirectionProvider: React.FC<DirectionProviderProps> = (props) => {\n  const { dir, children } = props;\n  return <DirectionContext.Provider value={dir}>{children}</DirectionContext.Provider>;\n};\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction useDirection(localDir?: Direction) {\n  const globalDir = React.useContext(DirectionContext);\n  return localDir || globalDir || 'ltr';\n}\n\nconst Provider = DirectionProvider;\n\nexport {\n  useDirection,\n  //\n  Provider,\n  //\n  DirectionProvider,\n};\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { createCollection } from '@radix-ui/react-collection';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useId } from '@radix-ui/react-id';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport { useCallbackRef } from '@radix-ui/react-use-callback-ref';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ENTRY_FOCUS = 'rovingFocusGroup.onEntryFocus';\nconst EVENT_OPTIONS = { bubbles: false, cancelable: true };\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroup\n * -----------------------------------------------------------------------------------------------*/\n\nconst GROUP_NAME = 'RovingFocusGroup';\n\ntype ItemData = { id: string; focusable: boolean; active: boolean };\nconst [Collection, useCollection, createCollectionScope] = createCollection<\n  HTMLSpanElement,\n  ItemData\n>(GROUP_NAME);\n\ntype ScopedProps<P> = P & { __scopeRovingFocusGroup?: Scope };\nconst [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n  GROUP_NAME,\n  [createCollectionScope]\n);\n\ntype Orientation = React.AriaAttributes['aria-orientation'];\ntype Direction = 'ltr' | 'rtl';\n\ninterface RovingFocusGroupOptions {\n  /**\n   * The orientation of the group.\n   * Mainly so arrow navigation is done accordingly (left & right vs. up & down)\n   */\n  orientation?: Orientation;\n  /**\n   * The direction of navigation between items.\n   */\n  dir?: Direction;\n  /**\n   * Whether keyboard navigation should loop around\n   * @defaultValue false\n   */\n  loop?: boolean;\n}\n\ntype RovingContextValue = RovingFocusGroupOptions & {\n  currentTabStopId: string | null;\n  onItemFocus(tabStopId: string): void;\n  onItemShiftTab(): void;\n  onFocusableItemAdd(): void;\n  onFocusableItemRemove(): void;\n};\n\nconst [RovingFocusProvider, useRovingFocusContext] =\n  createRovingFocusGroupContext<RovingContextValue>(GROUP_NAME);\n\ntype RovingFocusGroupElement = RovingFocusGroupImplElement;\ninterface RovingFocusGroupProps extends RovingFocusGroupImplProps {}\n\nconst RovingFocusGroup = React.forwardRef<RovingFocusGroupElement, RovingFocusGroupProps>(\n  (props: ScopedProps<RovingFocusGroupProps>, forwardedRef) => {\n    return (\n      <Collection.Provider scope={props.__scopeRovingFocusGroup}>\n        <Collection.Slot scope={props.__scopeRovingFocusGroup}>\n          <RovingFocusGroupImpl {...props} ref={forwardedRef} />\n        </Collection.Slot>\n      </Collection.Provider>\n    );\n  }\n);\n\nRovingFocusGroup.displayName = GROUP_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\ntype RovingFocusGroupImplElement = React.ElementRef<typeof Primitive.div>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RovingFocusGroupImplProps\n  extends Omit<PrimitiveDivProps, 'dir'>,\n    RovingFocusGroupOptions {\n  currentTabStopId?: string | null;\n  defaultCurrentTabStopId?: string;\n  onCurrentTabStopIdChange?: (tabStopId: string | null) => void;\n  onEntryFocus?: (event: Event) => void;\n}\n\nconst RovingFocusGroupImpl = React.forwardRef<\n  RovingFocusGroupImplElement,\n  RovingFocusGroupImplProps\n>((props: ScopedProps<RovingFocusGroupImplProps>, forwardedRef) => {\n  const {\n    __scopeRovingFocusGroup,\n    orientation,\n    loop = false,\n    dir,\n    currentTabStopId: currentTabStopIdProp,\n    defaultCurrentTabStopId,\n    onCurrentTabStopIdChange,\n    onEntryFocus,\n    ...groupProps\n  } = props;\n  const ref = React.useRef<RovingFocusGroupImplElement>(null);\n  const composedRefs = useComposedRefs(forwardedRef, ref);\n  const direction = useDirection(dir);\n  const [currentTabStopId = null, setCurrentTabStopId] = useControllableState({\n    prop: currentTabStopIdProp,\n    defaultProp: defaultCurrentTabStopId,\n    onChange: onCurrentTabStopIdChange,\n  });\n  const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n  const handleEntryFocus = useCallbackRef(onEntryFocus);\n  const getItems = useCollection(__scopeRovingFocusGroup);\n  const isClickFocusRef = React.useRef(false);\n  const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n\n  React.useEffect(() => {\n    const node = ref.current;\n    if (node) {\n      node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n      return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n    }\n  }, [handleEntryFocus]);\n\n  return (\n    <RovingFocusProvider\n      scope={__scopeRovingFocusGroup}\n      orientation={orientation}\n      dir={direction}\n      loop={loop}\n      currentTabStopId={currentTabStopId}\n      onItemFocus={React.useCallback(\n        (tabStopId) => setCurrentTabStopId(tabStopId),\n        [setCurrentTabStopId]\n      )}\n      onItemShiftTab={React.useCallback(() => setIsTabbingBackOut(true), [])}\n      onFocusableItemAdd={React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount + 1),\n        []\n      )}\n      onFocusableItemRemove={React.useCallback(\n        () => setFocusableItemsCount((prevCount) => prevCount - 1),\n        []\n      )}\n    >\n      <Primitive.div\n        tabIndex={isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0}\n        data-orientation={orientation}\n        {...groupProps}\n        ref={composedRefs}\n        style={{ outline: 'none', ...props.style }}\n        onMouseDown={composeEventHandlers(props.onMouseDown, () => {\n          isClickFocusRef.current = true;\n        })}\n        onFocus={composeEventHandlers(props.onFocus, (event) => {\n          // We normally wouldn't need this check, because we already check\n          // that the focus is on the current target and not bubbling to it.\n          // We do this because Safari doesn't focus buttons when clicked, and\n          // instead, the wrapper will get focused and not through a bubbling event.\n          const isKeyboardFocus = !isClickFocusRef.current;\n\n          if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n            const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n            event.currentTarget.dispatchEvent(entryFocusEvent);\n\n            if (!entryFocusEvent.defaultPrevented) {\n              const items = getItems().filter((item) => item.focusable);\n              const activeItem = items.find((item) => item.active);\n              const currentItem = items.find((item) => item.id === currentTabStopId);\n              const candidateItems = [activeItem, currentItem, ...items].filter(\n                Boolean\n              ) as typeof items;\n              const candidateNodes = candidateItems.map((item) => item.ref.current!);\n              focusFirst(candidateNodes);\n            }\n          }\n\n          isClickFocusRef.current = false;\n        })}\n        onBlur={composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))}\n      />\n    </RovingFocusProvider>\n  );\n});\n\n/* -------------------------------------------------------------------------------------------------\n * RovingFocusGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RovingFocusGroupItem';\n\ntype RovingFocusItemElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\ninterface RovingFocusItemProps extends PrimitiveSpanProps {\n  tabStopId?: string;\n  focusable?: boolean;\n  active?: boolean;\n}\n\nconst RovingFocusGroupItem = React.forwardRef<RovingFocusItemElement, RovingFocusItemProps>(\n  (props: ScopedProps<RovingFocusItemProps>, forwardedRef) => {\n    const {\n      __scopeRovingFocusGroup,\n      focusable = true,\n      active = false,\n      tabStopId,\n      ...itemProps\n    } = props;\n    const autoId = useId();\n    const id = tabStopId || autoId;\n    const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n    const isCurrentTabStop = context.currentTabStopId === id;\n    const getItems = useCollection(__scopeRovingFocusGroup);\n\n    const { onFocusableItemAdd, onFocusableItemRemove } = context;\n\n    React.useEffect(() => {\n      if (focusable) {\n        onFocusableItemAdd();\n        return () => onFocusableItemRemove();\n      }\n    }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n\n    return (\n      <Collection.ItemSlot\n        scope={__scopeRovingFocusGroup}\n        id={id}\n        focusable={focusable}\n        active={active}\n      >\n        <Primitive.span\n          tabIndex={isCurrentTabStop ? 0 : -1}\n          data-orientation={context.orientation}\n          {...itemProps}\n          ref={forwardedRef}\n          onMouseDown={composeEventHandlers(props.onMouseDown, (event) => {\n            // We prevent focusing non-focusable items on `mousedown`.\n            // Even though the item has tabIndex={-1}, that only means take it out of the tab order.\n            if (!focusable) event.preventDefault();\n            // Safari doesn't focus a button when clicked so we run our logic on mousedown also\n            else context.onItemFocus(id);\n          })}\n          onFocus={composeEventHandlers(props.onFocus, () => context.onItemFocus(id))}\n          onKeyDown={composeEventHandlers(props.onKeyDown, (event) => {\n            if (event.key === 'Tab' && event.shiftKey) {\n              context.onItemShiftTab();\n              return;\n            }\n\n            if (event.target !== event.currentTarget) return;\n\n            const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n\n            if (focusIntent !== undefined) {\n              event.preventDefault();\n              const items = getItems().filter((item) => item.focusable);\n              let candidateNodes = items.map((item) => item.ref.current!);\n\n              if (focusIntent === 'last') candidateNodes.reverse();\n              else if (focusIntent === 'prev' || focusIntent === 'next') {\n                if (focusIntent === 'prev') candidateNodes.reverse();\n                const currentIndex = candidateNodes.indexOf(event.currentTarget);\n                candidateNodes = context.loop\n                  ? wrapArray(candidateNodes, currentIndex + 1)\n                  : candidateNodes.slice(currentIndex + 1);\n              }\n\n              /**\n               * Imperative focus during keydown is risky so we prevent React's batching updates\n               * to avoid potential bugs. See: https://github.com/facebook/react/issues/20332\n               */\n              setTimeout(() => focusFirst(candidateNodes));\n            }\n          })}\n        />\n      </Collection.ItemSlot>\n    );\n  }\n);\n\nRovingFocusGroupItem.displayName = ITEM_NAME;\n\n/* -----------------------------------------------------------------------------------------------*/\n\n// prettier-ignore\nconst MAP_KEY_TO_FOCUS_INTENT: Record<string, FocusIntent> = {\n  ArrowLeft: 'prev', ArrowUp: 'prev',\n  ArrowRight: 'next', ArrowDown: 'next',\n  PageUp: 'first', Home: 'first',\n  PageDown: 'last', End: 'last',\n};\n\nfunction getDirectionAwareKey(key: string, dir?: Direction) {\n  if (dir !== 'rtl') return key;\n  return key === 'ArrowLeft' ? 'ArrowRight' : key === 'ArrowRight' ? 'ArrowLeft' : key;\n}\n\ntype FocusIntent = 'first' | 'last' | 'prev' | 'next';\n\nfunction getFocusIntent(event: React.KeyboardEvent, orientation?: Orientation, dir?: Direction) {\n  const key = getDirectionAwareKey(event.key, dir);\n  if (orientation === 'vertical' && ['ArrowLeft', 'ArrowRight'].includes(key)) return undefined;\n  if (orientation === 'horizontal' && ['ArrowUp', 'ArrowDown'].includes(key)) return undefined;\n  return MAP_KEY_TO_FOCUS_INTENT[key];\n}\n\nfunction focusFirst(candidates: HTMLElement[]) {\n  const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n  for (const candidate of candidates) {\n    // if focus is already where we want to go, we don't want to keep going through the candidates\n    if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n    candidate.focus();\n    if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n  }\n}\n\n/**\n * Wraps an array around itself at a given start index\n * Example: `wrapArray(['a', 'b', 'c', 'd'], 2) === ['c', 'd', 'a', 'b']`\n */\nfunction wrapArray<T>(array: T[], startIndex: number) {\n  return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\n\nconst Root = RovingFocusGroup;\nconst Item = RovingFocusGroupItem;\n\nexport {\n  createRovingFocusGroupScope,\n  //\n  RovingFocusGroup,\n  RovingFocusGroupItem,\n  //\n  Root,\n  Item,\n};\nexport type { RovingFocusGroupProps, RovingFocusItemProps };\n","/// <reference types=\"resize-observer-browser\" />\n\nimport * as React from 'react';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\n\nfunction useSize(element: HTMLElement | null) {\n  const [size, setSize] = React.useState<{ width: number; height: number } | undefined>(undefined);\n\n  useLayoutEffect(() => {\n    if (element) {\n      // provide size as early as possible\n      setSize({ width: element.offsetWidth, height: element.offsetHeight });\n\n      const resizeObserver = new ResizeObserver((entries) => {\n        if (!Array.isArray(entries)) {\n          return;\n        }\n\n        // Since we only observe the one element, we don't need to loop over the\n        // array\n        if (!entries.length) {\n          return;\n        }\n\n        const entry = entries[0];\n        let width: number;\n        let height: number;\n\n        if ('borderBoxSize' in entry) {\n          const borderSizeEntry = entry['borderBoxSize'];\n          // iron out differences between browsers\n          const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n          width = borderSize['inlineSize'];\n          height = borderSize['blockSize'];\n        } else {\n          // for browsers that don't support `borderBoxSize`\n          // we calculate it ourselves to get the correct border box.\n          width = element.offsetWidth;\n          height = element.offsetHeight;\n        }\n\n        setSize({ width, height });\n      });\n\n      resizeObserver.observe(element, { box: 'border-box' });\n\n      return () => resizeObserver.unobserve(element);\n    } else {\n      // We only want to reset to `undefined` when the element becomes `null`,\n      // not if it changes to another element.\n      setSize(undefined);\n    }\n  }, [element]);\n\n  return size;\n}\n\nexport { useSize };\n","import * as React from 'react';\n\nfunction usePrevious<T>(value: T) {\n  const ref = React.useRef({ value, previous: value });\n\n  // We compare values before making an update to ensure that\n  // a change has been made. This ensures the previous value is\n  // persisted correctly between renders.\n  return React.useMemo(() => {\n    if (ref.current.value !== value) {\n      ref.current.previous = ref.current.value;\n      ref.current.value = value;\n    }\n    return ref.current.previous;\n  }, [value]);\n}\n\nexport { usePrevious };\n","import * as React from 'react';\n\ntype Machine<S> = { [k: string]: { [k: string]: S } };\ntype MachineState<T> = keyof T;\ntype MachineEvent<T> = keyof UnionToIntersection<T[keyof T]>;\n\n// 🤯 https://fettblog.eu/typescript-union-to-intersection/\ntype UnionToIntersection<T> = (T extends any ? (x: T) => any : never) extends (x: infer R) => any\n  ? R\n  : never;\n\nexport function useStateMachine<M>(\n  initialState: MachineState<M>,\n  machine: M & Machine<MachineState<M>>\n) {\n  return React.useReducer((state: MachineState<M>, event: MachineEvent<M>): MachineState<M> => {\n    const nextState = (machine[state] as any)[event];\n    return nextState ?? state;\n  }, initialState);\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { useLayoutEffect } from '@radix-ui/react-use-layout-effect';\nimport { useStateMachine } from './useStateMachine';\n\ninterface PresenceProps {\n  children: React.ReactElement | ((props: { present: boolean }) => React.ReactElement);\n  present: boolean;\n}\n\nconst Presence: React.FC<PresenceProps> = (props) => {\n  const { present, children } = props;\n  const presence = usePresence(present);\n\n  const child = (\n    typeof children === 'function'\n      ? children({ present: presence.isPresent })\n      : React.Children.only(children)\n  ) as React.ReactElement;\n\n  const ref = useComposedRefs(presence.ref, (child as any).ref);\n  const forceMount = typeof children === 'function';\n  return forceMount || presence.isPresent ? React.cloneElement(child, { ref }) : null;\n};\n\nPresence.displayName = 'Presence';\n\n/* -------------------------------------------------------------------------------------------------\n * usePresence\n * -----------------------------------------------------------------------------------------------*/\n\nfunction usePresence(present: boolean) {\n  const [node, setNode] = React.useState<HTMLElement>();\n  const stylesRef = React.useRef<CSSStyleDeclaration>({} as any);\n  const prevPresentRef = React.useRef(present);\n  const prevAnimationNameRef = React.useRef<string>('none');\n  const initialState = present ? 'mounted' : 'unmounted';\n  const [state, send] = useStateMachine(initialState, {\n    mounted: {\n      UNMOUNT: 'unmounted',\n      ANIMATION_OUT: 'unmountSuspended',\n    },\n    unmountSuspended: {\n      MOUNT: 'mounted',\n      ANIMATION_END: 'unmounted',\n    },\n    unmounted: {\n      MOUNT: 'mounted',\n    },\n  });\n\n  React.useEffect(() => {\n    const currentAnimationName = getAnimationName(stylesRef.current);\n    prevAnimationNameRef.current = state === 'mounted' ? currentAnimationName : 'none';\n  }, [state]);\n\n  useLayoutEffect(() => {\n    const styles = stylesRef.current;\n    const wasPresent = prevPresentRef.current;\n    const hasPresentChanged = wasPresent !== present;\n\n    if (hasPresentChanged) {\n      const prevAnimationName = prevAnimationNameRef.current;\n      const currentAnimationName = getAnimationName(styles);\n\n      if (present) {\n        send('MOUNT');\n      } else if (currentAnimationName === 'none' || styles?.display === 'none') {\n        // If there is no exit animation or the element is hidden, animations won't run\n        // so we unmount instantly\n        send('UNMOUNT');\n      } else {\n        /**\n         * When `present` changes to `false`, we check changes to animation-name to\n         * determine whether an animation has started. We chose this approach (reading\n         * computed styles) because there is no `animationrun` event and `animationstart`\n         * fires after `animation-delay` has expired which would be too late.\n         */\n        const isAnimating = prevAnimationName !== currentAnimationName;\n\n        if (wasPresent && isAnimating) {\n          send('ANIMATION_OUT');\n        } else {\n          send('UNMOUNT');\n        }\n      }\n\n      prevPresentRef.current = present;\n    }\n  }, [present, send]);\n\n  useLayoutEffect(() => {\n    if (node) {\n      /**\n       * Triggering an ANIMATION_OUT during an ANIMATION_IN will fire an `animationcancel`\n       * event for ANIMATION_IN after we have entered `unmountSuspended` state. So, we\n       * make sure we only trigger ANIMATION_END for the currently active animation.\n       */\n      const handleAnimationEnd = (event: AnimationEvent) => {\n        const currentAnimationName = getAnimationName(stylesRef.current);\n        const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n        if (event.target === node && isCurrentAnimation) {\n          // With React 18 concurrency this update is applied\n          // a frame after the animation ends, creating a flash of visible content.\n          // By manually flushing we ensure they sync within a frame, removing the flash.\n          ReactDOM.flushSync(() => send('ANIMATION_END'));\n        }\n      };\n      const handleAnimationStart = (event: AnimationEvent) => {\n        if (event.target === node) {\n          // if animation occurred, store its name as the previous animation.\n          prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n        }\n      };\n      node.addEventListener('animationstart', handleAnimationStart);\n      node.addEventListener('animationcancel', handleAnimationEnd);\n      node.addEventListener('animationend', handleAnimationEnd);\n      return () => {\n        node.removeEventListener('animationstart', handleAnimationStart);\n        node.removeEventListener('animationcancel', handleAnimationEnd);\n        node.removeEventListener('animationend', handleAnimationEnd);\n      };\n    } else {\n      // Transition to the unmounted state if the node is removed prematurely.\n      // We avoid doing so during cleanup as the node may change but still exist.\n      send('ANIMATION_END');\n    }\n  }, [node, send]);\n\n  return {\n    isPresent: ['mounted', 'unmountSuspended'].includes(state),\n    ref: React.useCallback((node: HTMLElement) => {\n      if (node) stylesRef.current = getComputedStyle(node);\n      setNode(node);\n    }, []),\n  };\n}\n\n/* -----------------------------------------------------------------------------------------------*/\n\nfunction getAnimationName(styles?: CSSStyleDeclaration) {\n  return styles?.animationName || 'none';\n}\n\nexport { Presence };\nexport type { PresenceProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useSize } from '@radix-ui/react-use-size';\nimport { usePrevious } from '@radix-ui/react-use-previous';\nimport { Presence } from '@radix-ui/react-presence';\nimport { Primitive } from '@radix-ui/react-primitive';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\n/* -------------------------------------------------------------------------------------------------\n * Radio\n * -----------------------------------------------------------------------------------------------*/\n\nconst RADIO_NAME = 'Radio';\n\ntype ScopedProps<P> = P & { __scopeRadio?: Scope };\nconst [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\n\ntype RadioContextValue = { checked: boolean; disabled?: boolean };\nconst [RadioProvider, useRadioContext] = createRadioContext<RadioContextValue>(RADIO_NAME);\n\ntype RadioElement = React.ElementRef<typeof Primitive.button>;\ntype PrimitiveButtonProps = Radix.ComponentPropsWithoutRef<typeof Primitive.button>;\ninterface RadioProps extends PrimitiveButtonProps {\n  checked?: boolean;\n  required?: boolean;\n  onCheck?(): void;\n}\n\nconst Radio = React.forwardRef<RadioElement, RadioProps>(\n  (props: ScopedProps<RadioProps>, forwardedRef) => {\n    const {\n      __scopeRadio,\n      name,\n      checked = false,\n      required,\n      disabled,\n      value = 'on',\n      onCheck,\n      ...radioProps\n    } = props;\n    const [button, setButton] = React.useState<HTMLButtonElement | null>(null);\n    const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n    const hasConsumerStoppedPropagationRef = React.useRef(false);\n    // We set this to true by default so that events bubble to forms without JS (SSR)\n    const isFormControl = button ? Boolean(button.closest('form')) : true;\n\n    return (\n      <RadioProvider scope={__scopeRadio} checked={checked} disabled={disabled}>\n        <Primitive.button\n          type=\"button\"\n          role=\"radio\"\n          aria-checked={checked}\n          data-state={getState(checked)}\n          data-disabled={disabled ? '' : undefined}\n          disabled={disabled}\n          value={value}\n          {...radioProps}\n          ref={composedRefs}\n          onClick={composeEventHandlers(props.onClick, (event) => {\n            // radios cannot be unchecked so we only communicate a checked state\n            if (!checked) onCheck?.();\n            if (isFormControl) {\n              hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n              // if radio is in a form, stop propagation from the button so that we only propagate\n              // one click event (from the input). We propagate changes from an input so that native\n              // form validation works and form events reflect radio updates.\n              if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n            }\n          })}\n        />\n        {isFormControl && (\n          <BubbleInput\n            control={button}\n            bubbles={!hasConsumerStoppedPropagationRef.current}\n            name={name}\n            value={value}\n            checked={checked}\n            required={required}\n            disabled={disabled}\n            // We transform because the input is absolutely positioned but we have\n            // rendered it **after** the button. This pulls it back to sit on top\n            // of the button.\n            style={{ transform: 'translateX(-100%)' }}\n          />\n        )}\n      </RadioProvider>\n    );\n  }\n);\n\nRadio.displayName = RADIO_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioIndicator';\n\ntype RadioIndicatorElement = React.ElementRef<typeof Primitive.span>;\ntype PrimitiveSpanProps = Radix.ComponentPropsWithoutRef<typeof Primitive.span>;\nexport interface RadioIndicatorProps extends PrimitiveSpanProps {\n  /**\n   * Used to force mounting when more control is needed. Useful when\n   * controlling animation with React animation libraries.\n   */\n  forceMount?: true;\n}\n\nconst RadioIndicator = React.forwardRef<RadioIndicatorElement, RadioIndicatorProps>(\n  (props: ScopedProps<RadioIndicatorProps>, forwardedRef) => {\n    const { __scopeRadio, forceMount, ...indicatorProps } = props;\n    const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n    return (\n      <Presence present={forceMount || context.checked}>\n        <Primitive.span\n          data-state={getState(context.checked)}\n          data-disabled={context.disabled ? '' : undefined}\n          {...indicatorProps}\n          ref={forwardedRef}\n        />\n      </Presence>\n    );\n  }\n);\n\nRadioIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\ntype InputProps = Radix.ComponentPropsWithoutRef<'input'>;\ninterface BubbleInputProps extends Omit<InputProps, 'checked'> {\n  checked: boolean;\n  control: HTMLElement | null;\n  bubbles: boolean;\n}\n\nconst BubbleInput = (props: BubbleInputProps) => {\n  const { control, checked, bubbles = true, ...inputProps } = props;\n  const ref = React.useRef<HTMLInputElement>(null);\n  const prevChecked = usePrevious(checked);\n  const controlSize = useSize(control);\n\n  // Bubble checked change to parents (e.g form change event)\n  React.useEffect(() => {\n    const input = ref.current!;\n    const inputProto = window.HTMLInputElement.prototype;\n    const descriptor = Object.getOwnPropertyDescriptor(inputProto, 'checked') as PropertyDescriptor;\n    const setChecked = descriptor.set;\n    if (prevChecked !== checked && setChecked) {\n      const event = new Event('click', { bubbles });\n      setChecked.call(input, checked);\n      input.dispatchEvent(event);\n    }\n  }, [prevChecked, checked, bubbles]);\n\n  return (\n    <input\n      type=\"radio\"\n      aria-hidden\n      defaultChecked={checked}\n      {...inputProps}\n      tabIndex={-1}\n      ref={ref}\n      style={{\n        ...props.style,\n        ...controlSize,\n        position: 'absolute',\n        pointerEvents: 'none',\n        opacity: 0,\n        margin: 0,\n      }}\n    />\n  );\n};\n\nfunction getState(checked: boolean) {\n  return checked ? 'checked' : 'unchecked';\n}\n\nexport {\n  createRadioScope,\n  //\n  Radio,\n  RadioIndicator,\n};\nexport type { RadioProps };\n","import * as React from 'react';\nimport { composeEventHandlers } from '@radix-ui/primitive';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { Primitive } from '@radix-ui/react-primitive';\nimport * as RovingFocusGroup from '@radix-ui/react-roving-focus';\nimport { createRovingFocusGroupScope } from '@radix-ui/react-roving-focus';\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { useDirection } from '@radix-ui/react-direction';\nimport { Radio, RadioIndicator, createRadioScope } from './Radio';\n\nimport type * as Radix from '@radix-ui/react-primitive';\nimport type { Scope } from '@radix-ui/react-context';\n\nconst ARROW_KEYS = ['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'];\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroup\n * -----------------------------------------------------------------------------------------------*/\nconst RADIO_GROUP_NAME = 'RadioGroup';\n\ntype ScopedProps<P> = P & { __scopeRadioGroup?: Scope };\nconst [createRadioGroupContext, createRadioGroupScope] = createContextScope(RADIO_GROUP_NAME, [\n  createRovingFocusGroupScope,\n  createRadioScope,\n]);\nconst useRovingFocusGroupScope = createRovingFocusGroupScope();\nconst useRadioScope = createRadioScope();\n\ntype RadioGroupContextValue = {\n  name?: string;\n  required: boolean;\n  disabled: boolean;\n  value?: string;\n  onValueChange(value: string): void;\n};\n\nconst [RadioGroupProvider, useRadioGroupContext] =\n  createRadioGroupContext<RadioGroupContextValue>(RADIO_GROUP_NAME);\n\ntype RadioGroupElement = React.ElementRef<typeof Primitive.div>;\ntype RovingFocusGroupProps = Radix.ComponentPropsWithoutRef<typeof RovingFocusGroup.Root>;\ntype PrimitiveDivProps = Radix.ComponentPropsWithoutRef<typeof Primitive.div>;\ninterface RadioGroupProps extends PrimitiveDivProps {\n  name?: RadioGroupContextValue['name'];\n  required?: Radix.ComponentPropsWithoutRef<typeof Radio>['required'];\n  disabled?: Radix.ComponentPropsWithoutRef<typeof Radio>['disabled'];\n  dir?: RovingFocusGroupProps['dir'];\n  orientation?: RovingFocusGroupProps['orientation'];\n  loop?: RovingFocusGroupProps['loop'];\n  defaultValue?: string;\n  value?: RadioGroupContextValue['value'];\n  onValueChange?: RadioGroupContextValue['onValueChange'];\n}\n\nconst RadioGroup = React.forwardRef<RadioGroupElement, RadioGroupProps>(\n  (props: ScopedProps<RadioGroupProps>, forwardedRef) => {\n    const {\n      __scopeRadioGroup,\n      name,\n      defaultValue,\n      value: valueProp,\n      required = false,\n      disabled = false,\n      orientation,\n      dir,\n      loop = true,\n      onValueChange,\n      ...groupProps\n    } = props;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const direction = useDirection(dir);\n    const [value, setValue] = useControllableState({\n      prop: valueProp,\n      defaultProp: defaultValue,\n      onChange: onValueChange,\n    });\n\n    return (\n      <RadioGroupProvider\n        scope={__scopeRadioGroup}\n        name={name}\n        required={required}\n        disabled={disabled}\n        value={value}\n        onValueChange={setValue}\n      >\n        <RovingFocusGroup.Root\n          asChild\n          {...rovingFocusGroupScope}\n          orientation={orientation}\n          dir={direction}\n          loop={loop}\n        >\n          <Primitive.div\n            role=\"radiogroup\"\n            aria-required={required}\n            aria-orientation={orientation}\n            data-disabled={disabled ? '' : undefined}\n            dir={direction}\n            {...groupProps}\n            ref={forwardedRef}\n          />\n        </RovingFocusGroup.Root>\n      </RadioGroupProvider>\n    );\n  }\n);\n\nRadioGroup.displayName = RADIO_GROUP_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupItem\n * -----------------------------------------------------------------------------------------------*/\n\nconst ITEM_NAME = 'RadioGroupItem';\n\ntype RadioGroupItemElement = React.ElementRef<typeof Radio>;\ntype RadioProps = Radix.ComponentPropsWithoutRef<typeof Radio>;\ninterface RadioGroupItemProps extends Omit<RadioProps, 'onCheck' | 'name'> {\n  value: string;\n}\n\nconst RadioGroupItem = React.forwardRef<RadioGroupItemElement, RadioGroupItemProps>(\n  (props: ScopedProps<RadioGroupItemProps>, forwardedRef) => {\n    const { __scopeRadioGroup, disabled, ...itemProps } = props;\n    const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n    const isDisabled = context.disabled || disabled;\n    const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    const ref = React.useRef<React.ElementRef<typeof Radio>>(null);\n    const composedRefs = useComposedRefs(forwardedRef, ref);\n    const checked = context.value === itemProps.value;\n    const isArrowKeyPressedRef = React.useRef(false);\n\n    React.useEffect(() => {\n      const handleKeyDown = (event: KeyboardEvent) => {\n        if (ARROW_KEYS.includes(event.key)) {\n          isArrowKeyPressedRef.current = true;\n        }\n      };\n      const handleKeyUp = () => (isArrowKeyPressedRef.current = false);\n      document.addEventListener('keydown', handleKeyDown);\n      document.addEventListener('keyup', handleKeyUp);\n      return () => {\n        document.removeEventListener('keydown', handleKeyDown);\n        document.removeEventListener('keyup', handleKeyUp);\n      };\n    }, []);\n\n    return (\n      <RovingFocusGroup.Item\n        asChild\n        {...rovingFocusGroupScope}\n        focusable={!isDisabled}\n        active={checked}\n      >\n        <Radio\n          disabled={isDisabled}\n          required={context.required}\n          checked={checked}\n          {...radioScope}\n          {...itemProps}\n          name={context.name}\n          ref={composedRefs}\n          onCheck={() => context.onValueChange(itemProps.value)}\n          onKeyDown={composeEventHandlers((event) => {\n            // According to WAI ARIA, radio groups don't activate items on enter keypress\n            if (event.key === 'Enter') event.preventDefault();\n          })}\n          onFocus={composeEventHandlers(itemProps.onFocus, () => {\n            /**\n             * Our `RovingFocusGroup` will focus the radio when navigating with arrow keys\n             * and we need to \"check\" it in that case. We click it to \"check\" it (instead\n             * of updating `context.value`) so that the radio change event fires.\n             */\n            if (isArrowKeyPressedRef.current) ref.current?.click();\n          })}\n        />\n      </RovingFocusGroup.Item>\n    );\n  }\n);\n\nRadioGroupItem.displayName = ITEM_NAME;\n\n/* -------------------------------------------------------------------------------------------------\n * RadioGroupIndicator\n * -----------------------------------------------------------------------------------------------*/\n\nconst INDICATOR_NAME = 'RadioGroupIndicator';\n\ntype RadioGroupIndicatorElement = React.ElementRef<typeof RadioIndicator>;\ntype RadioIndicatorProps = Radix.ComponentPropsWithoutRef<typeof RadioIndicator>;\ninterface RadioGroupIndicatorProps extends RadioIndicatorProps {}\n\nconst RadioGroupIndicator = React.forwardRef<RadioGroupIndicatorElement, RadioGroupIndicatorProps>(\n  (props: ScopedProps<RadioGroupIndicatorProps>, forwardedRef) => {\n    const { __scopeRadioGroup, ...indicatorProps } = props;\n    const radioScope = useRadioScope(__scopeRadioGroup);\n    return <RadioIndicator {...radioScope} {...indicatorProps} ref={forwardedRef} />;\n  }\n);\n\nRadioGroupIndicator.displayName = INDICATOR_NAME;\n\n/* ---------------------------------------------------------------------------------------------- */\n\nconst Root = RadioGroup;\nconst Item = RadioGroupItem;\nconst Indicator = RadioGroupIndicator;\n\nexport {\n  createRadioGroupScope,\n  //\n  RadioGroup,\n  RadioGroupItem,\n  RadioGroupIndicator,\n  //\n  Root,\n  Item,\n  Indicator,\n};\nexport type { RadioGroupProps, RadioGroupItemProps, RadioGroupIndicatorProps };\n","import * as React from \"react\"\nimport { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n  return twMerge(clsx(inputs))\n}\n\nexport function formatDate(input: string | number): string {\n  const date = new Date(input)\n  return date.toLocaleDateString(\"en-US\", {\n    month: \"long\",\n    day: \"numeric\",\n    year: \"numeric\",\n  })\n}\n\nexport function absoluteUrl(path: string) {\n  return `${process.env.NEXT_PUBLIC_APP_URL}${path}`\n}\n"]}