@speakeasy-api/moonshine 1.34.0 → 1.35.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.
Files changed (35) hide show
  1. package/dist/components/Combobox/index.d.ts +5 -1
  2. package/dist/components/ResizablePanel/index.d.ts +1 -1
  3. package/dist/{createCustomLucideIcon-D3tazgXs.mjs → createCustomLucideIcon-EiauSMb1.mjs} +2 -2
  4. package/dist/{createCustomLucideIcon-D3tazgXs.mjs.map → createCustomLucideIcon-EiauSMb1.mjs.map} +1 -1
  5. package/dist/{gems-DPS8c5v8.mjs → gems-BvqWmbac.mjs} +2 -2
  6. package/dist/{gems-DPS8c5v8.mjs.map → gems-BvqWmbac.mjs.map} +1 -1
  7. package/dist/github-kgjMtfE7.mjs.map +1 -1
  8. package/dist/{go-CNv1yjwB.mjs → go-DcxZ_tUN.mjs} +2 -2
  9. package/dist/{go-CNv1yjwB.mjs.map → go-DcxZ_tUN.mjs.map} +1 -1
  10. package/dist/{index-C_pStYyO.mjs → index-D2j5TB55.mjs} +5960 -5506
  11. package/dist/index-D2j5TB55.mjs.map +1 -0
  12. package/dist/lib/events.d.ts +3 -0
  13. package/dist/{maven-CEuOtUqy.mjs → maven-CRmekwFL.mjs} +2 -2
  14. package/dist/{maven-CEuOtUqy.mjs.map → maven-CRmekwFL.mjs.map} +1 -1
  15. package/dist/maven-W_nkSDNW.mjs.map +1 -1
  16. package/dist/moonshine.es.js +1 -1
  17. package/dist/{npm-a8RUgXvg.mjs → npm-B8YY3m3w.mjs} +2 -2
  18. package/dist/{npm-a8RUgXvg.mjs.map → npm-B8YY3m3w.mjs.map} +1 -1
  19. package/dist/npm-BWTcVvFH.mjs.map +1 -1
  20. package/dist/{nuget-ZxZqd0b1.mjs → nuget-BdLRmPRn.mjs} +2 -2
  21. package/dist/{nuget-ZxZqd0b1.mjs.map → nuget-BdLRmPRn.mjs.map} +1 -1
  22. package/dist/nuget-CV5HU1JR.mjs.map +1 -1
  23. package/dist/packagist-D01fn9N_.mjs.map +1 -1
  24. package/dist/{packagist-ZWWw9zz4.mjs → packagist-I2pZqVDo.mjs} +2 -2
  25. package/dist/{packagist-ZWWw9zz4.mjs.map → packagist-I2pZqVDo.mjs.map} +1 -1
  26. package/dist/{pypi-DK6ombl7.mjs → pypi-DFD4I_La.mjs} +2 -2
  27. package/dist/{pypi-DK6ombl7.mjs.map → pypi-DFD4I_La.mjs.map} +1 -1
  28. package/dist/pypi-DLh6kIJe.mjs.map +1 -1
  29. package/dist/rubygems-DeiNjcDV.mjs.map +1 -1
  30. package/dist/speakeasy-logo-ByBTXLWb.mjs.map +1 -1
  31. package/dist/style.css +1 -1
  32. package/dist/terraform-C4aktQ0o.mjs.map +1 -1
  33. package/package.json +3 -3
  34. package/types/utilities.d.ts +1 -1
  35. package/dist/index-C_pStYyO.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-C_pStYyO.mjs","sources":["../src/lib/assert.ts","../src/types.ts","../src/lib/typeUtils.ts","../src/lib/responsiveMappers.ts","../node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/tailwind-merge@3.0.2/node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/Grid/index.tsx","../src/components/Stack/index.tsx","../node_modules/.pnpm/@radix-ui+react-compose-refs@1.1.1_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-slot@1.1.2_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-slot/dist/index.mjs","../node_modules/.pnpm/clsx@2.0.0/node_modules/clsx/dist/clsx.mjs","../node_modules/.pnpm/class-variance-authority@0.7.0/node_modules/class-variance-authority/dist/index.mjs","../src/components/Button/index.tsx","../src/lib/debounce.ts","../src/hooks/useTailwindBreakpoint.ts","../src/lib/responsiveUtils.ts","../src/components/Icon/customIcons/index.ts","../src/components/Icon/index.tsx","../src/components/Score/index.tsx","../src/components/Card/index.tsx","../src/components/Icon/names.ts","../src/components/Icon/isIconName.ts","../src/components/Separator/index.tsx","../src/components/Skeleton/index.tsx","../src/components/Badge/index.tsx","../src/components/Heading/index.tsx","../src/components/Text/index.tsx","../src/components/Logo/svgs/index.tsx","../src/components/Logo/index.tsx","../src/context/ConfigContext.tsx","../src/hooks/useConfig.ts","../src/hooks/useTheme.ts","../src/components/Logo/Animated.tsx","../src/components/Container/index.tsx","../node_modules/.pnpm/cmdk@1.1.1_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/cmdk/dist/chunk-NZJY6EH4.mjs","../node_modules/.pnpm/@radix-ui+primitive@1.1.1/node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-context@1.1.1_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-layout-effect@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-id@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-id/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-callback-ref@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-controllable-state@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-primitive@2.0.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-escape-keydown@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-dismissable-layer@1.1.5_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-scope@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-focus-scope/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-portal@1.1.4_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-presence@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-focus-guards@1.1.1_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-focus-guards/dist/index.mjs","../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/constants.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.12_react@18.3.1/node_modules/use-callback-ref/dist/es2015/assignRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.12_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useRef.js","../node_modules/.pnpm/use-callback-ref@1.3.3_@types+react@18.3.12_react@18.3.1/node_modules/use-callback-ref/dist/es2015/useMergeRef.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.12_react@18.3.1/node_modules/use-sidecar/dist/es2015/medium.js","../node_modules/.pnpm/use-sidecar@1.1.3_@types+react@18.3.12_react@18.3.1/node_modules/use-sidecar/dist/es2015/exports.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/medium.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/UI.js","../node_modules/.pnpm/get-nonce@1.0.1/node_modules/get-nonce/dist/es2015/index.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.12_react@18.3.1/node_modules/react-style-singleton/dist/es2015/singleton.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.12_react@18.3.1/node_modules/react-style-singleton/dist/es2015/hook.js","../node_modules/.pnpm/react-style-singleton@2.2.3_@types+react@18.3.12_react@18.3.1/node_modules/react-style-singleton/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/utils.js","../node_modules/.pnpm/react-remove-scroll-bar@2.3.8_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll-bar/dist/es2015/component.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/aggresiveCapture.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/handleScroll.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/SideEffect.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/sidecar.js","../node_modules/.pnpm/react-remove-scroll@2.6.3_@types+react@18.3.12_react@18.3.1/node_modules/react-remove-scroll/dist/es2015/Combination.js","../node_modules/.pnpm/aria-hidden@1.2.4/node_modules/aria-hidden/dist/es2015/index.js","../node_modules/.pnpm/@radix-ui+react-dialog@1.1.6_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-dialog/dist/index.mjs","../node_modules/.pnpm/cmdk@1.1.1_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/cmdk/dist/index.mjs","../src/components/Dialog/index.tsx","../src/components/Command/index.tsx","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/.pnpm/@floating-ui+core@1.6.9/node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/.pnpm/@floating-ui+utils@0.2.9/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/.pnpm/@floating-ui+dom@1.6.13/node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/.pnpm/@floating-ui+react-dom@2.1.2_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/.pnpm/@radix-ui+react-arrow@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-size@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-popper@1.2.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-popover@1.1.6_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-popover/dist/index.mjs","../src/components/Popover/index.tsx","../src/components/Combobox/index.tsx","../src/assets/icons/languages/typescript.svg?react","../src/assets/icons/languages/go.svg?react","../src/assets/icons/languages/java.svg?react","../src/assets/icons/languages/python.svg?react","../src/assets/icons/languages/csharp.svg?react","../src/assets/icons/languages/terraform.svg?react","../src/assets/icons/languages/unity.svg?react","../src/assets/icons/languages/php.svg?react","../src/assets/icons/languages/swift.svg?react","../src/assets/icons/languages/ruby.svg?react","../src/assets/icons/languages/postman.svg?react","../src/assets/icons/languages/json.svg?react","../src/components/TargetLanguageIcon/index.tsx","../src/components/UserAvatar/sizeMap.ts","../src/components/UserAvatar/index.tsx","../src/components/Subnav/index.tsx","../src/lib/codeUtils.ts","../src/components/CodeHighlight/Pre.tsx","../src/components/CodeSnippet/index.tsx","../node_modules/.pnpm/@radix-ui+react-collection@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-collection/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-direction@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-direction/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-roving-focus@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-menu@2.1.6_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-menu/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-dropdown-menu@2.1.6_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs","../src/components/Dropdown/index.tsx","../src/components/LoggedInUserMenu/index.tsx","../src/components/PromptInput/index.tsx","../src/components/GradientCircle/index.tsx","../src/components/WorkspaceSelector/OrgSelector.tsx","../src/components/WorkspaceSelector/CreateWorkspace.tsx","../src/components/WorkspaceSelector/ScrollingList.tsx","../src/components/WorkspaceSelector/SearchBox.tsx","../src/components/WorkspaceSelector/OrgList.tsx","../src/components/WorkspaceSelector/WorkspaceItem.tsx","../src/components/WorkspaceSelector/WorkspaceList.tsx","../src/components/WorkspaceSelector/RecentWorkspaces.tsx","../src/components/WorkspaceSelector/CreateOrg.tsx","../src/components/WorkspaceSelector/index.tsx","../src/components/Wizard/index.tsx","../src/components/Alert/index.tsx","../src/components/Tabs/index.tsx","../node_modules/.pnpm/@radix-ui+react-visually-hidden@1.1.2_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-tooltip@1.1.8_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-tooltip/dist/index.mjs","../src/components/Tooltip/index.tsx","../src/components/__beta__/CLIWizard/terminal.tsx","../src/components/__beta__/CLIWizard/terminal-command.tsx","../src/components/__beta__/CLIWizard/index.tsx","../src/components/Table/context/context.tsx","../src/components/Table/context/tableProvider.tsx","../src/components/Table/index.tsx","../src/components/Input/index.tsx","../src/components/Link/index.tsx","../src/components/PageHeader/index.tsx","../src/components/ExternalPill/index.tsx","../src/components/LanguageIndicator/index.tsx","../src/components/PullRequestLink/index.tsx","../node_modules/.pnpm/@radix-ui+number@1.1.0/node_modules/@radix-ui/number/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-use-previous@1.1.0_@types+react@18.3.12_react@18.3.1/node_modules/@radix-ui/react-use-previous/dist/index.mjs","../node_modules/.pnpm/@radix-ui+react-select@2.1.6_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-select/dist/index.mjs","../src/components/Select/index.tsx","../src/components/Facepile/index.tsx","../node_modules/.pnpm/@radix-ui+react-switch@1.1.3_@types+react@18.3.12_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@radix-ui/react-switch/dist/index.mjs","../src/components/Switch/index.tsx","../src/components/SegmentedButton/index.tsx","../src/components/AppLayout/context.tsx","../src/hooks/useAppLayout.ts","../src/components/KeyHint/index.tsx","../src/components/AppLayout/useAppLayoutKeys.ts","../src/hooks/useIsMounted.ts","../src/components/ThemeSwitcher/index.tsx","../src/components/AppLayout/index.tsx","../src/components/AppLayout/provider.tsx","../src/components/DragNDrop/DragNDropArea.tsx","../src/components/ActionBar/index.tsx","../src/components/HighlightedText/index.tsx","../src/components/DragNDrop/DragOverlay.tsx","../src/components/DragNDrop/Draggable.tsx","../src/components/DragNDrop/Droppable.tsx","../src/components/ResizablePanel/index.tsx","../src/components/CodePlayground/index.tsx","../src/components/CodeEditorLayout/index.tsx","../src/context/ModalContext.tsx","../src/hooks/useModal.tsx","../src/components/ContextDropdown/index.tsx","../src/components/IconButton/index.tsx","../src/components/Modal/index.tsx","../src/components/Timeline/index.tsx","../src/components/AIChat/AIChatModelSelector.tsx","../src/components/AIChat/componentsTypes.ts","../src/components/AIChat/context.ts","../src/components/AIChat/AIChatMessageComposer.tsx","../src/components/AIChat/parts/AIChatMessageFilePart.tsx","../src/components/AIChat/parts/AIChatMessageReasoningPart.tsx","../src/components/AIChat/parts/AIChatMessageSourcePart.tsx","../src/components/AIChat/parts/AIChatMessageTextPart.tsx","../src/components/AIChat/toolCallApproval.ts","../src/components/AIChat/parts/AIChatMessageToolPart.tsx","../src/components/AIChat/AIChatMessage.tsx","../src/components/AIChat/AIChatMessageList.tsx","../src/components/AIChat/AIChatContainer.tsx","../src/index.ts"],"sourcesContent":["export function assertNever(value: unknown): never {\n throw new Error(`Unhandled value: ${JSON.stringify(value)}`)\n}\n\nexport function assert(condition: boolean, message: string): asserts condition {\n if (!condition) {\n throw new Error(message)\n }\n}\n","import { assertNever } from './lib/assert'\n\n// Button variants\nexport const buttonVariants = [\n 'brand',\n 'primary',\n 'secondary',\n 'tertiary',\n 'destructive-primary',\n 'destructive-secondary',\n] as const\nexport type ButtonVariant = (typeof buttonVariants)[number]\n\n// Button sizes\nexport const buttonSizes = ['xs', 'sm', 'md', 'lg'] as const\nexport type ButtonSize = (typeof buttonSizes)[number]\n\n// Button contexts\nexport const buttonContexts = ['product', 'marketing'] as const\nexport type ButtonContext = (typeof buttonContexts)[number]\n\n// Badge variants\nexport const badgeVariants = [\n 'neutral',\n 'destructive',\n 'information',\n 'success',\n 'warning',\n] as const\nexport type BadgeVariant = (typeof badgeVariants)[number]\n\n// Generic\nexport type Orientation = 'horizontal' | 'vertical'\n\nexport const sizes = ['small', 'medium', 'large', 'xl', '2xl'] as const\nexport type Size = (typeof sizes)[number]\n\n// Breakpoints\nexport const breakpoints = ['xs', 'sm', 'md', 'lg', 'xl', '2xl'] as const\nexport type Breakpoint = (typeof breakpoints)[number]\nexport type ResponsiveValue<T> = T | { [key in Breakpoint]?: T }\n\n// Stack\nexport const directionOptions = ['row', 'column'] as const\nexport type Direction = (typeof directionOptions)[number]\n\nexport const tailwindScale = [\n 0, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 4, 5, 6, 7, 8, 9, 10, 11, 12, 14, 16, 20, 24,\n 28, 32, 36, 40, 44, 48, 52, 56, 60, 64, 72, 80, 96,\n] as const\n\n// Gap\nexport const gapValues = tailwindScale\nexport type Gap = (typeof gapValues)[number]\n\n// Grid Columns\nexport const gridColumnValues = tailwindScale\nexport type Columns = (typeof gridColumnValues)[number]\n\n// Padding\nexport const paddingValues = tailwindScale\nexport type PaddingValue = (typeof paddingValues)[number]\n\nexport type PaddingPerAxis = { x?: PaddingValue; y?: PaddingValue }\nexport type PaddingPerSides = {\n top?: PaddingValue\n right?: PaddingValue\n bottom?: PaddingValue\n left?: PaddingValue\n}\n\nexport type PaddingPerSide =\n /**\n * x, y\n */\n | PaddingPerAxis\n /**\n * top, right, bottom, left\n */\n | PaddingPerSides\n\nexport type Padding = PaddingValue | PaddingPerSide\n\nexport const alignmentOptions = [\n 'start',\n 'center',\n 'end',\n 'stretch',\n 'baseline',\n] as const\n/**\n * Alignment is an abstraction / amalgamation of the CSS `justify-content`\n * and `align-items` properties.\n */\nexport type Alignment = (typeof alignmentOptions)[number]\n\nexport const supportedLanguages = [\n 'typescript',\n 'go',\n 'java',\n 'python',\n 'csharp',\n 'terraform',\n 'unity',\n 'php',\n 'swift',\n 'ruby',\n 'postman',\n 'json',\n] as const\n\nexport type SupportedLanguage = (typeof supportedLanguages)[number]\n\nexport function isSupportedLanguage(\n language: string\n): language is SupportedLanguage {\n return supportedLanguages.includes(language as SupportedLanguage)\n}\n\nexport function prettyLanguageName(language: SupportedLanguage) {\n switch (language) {\n case 'typescript':\n return 'TypeScript'\n case 'go':\n return 'Go'\n case 'ruby':\n return 'Ruby'\n case 'python':\n return 'Python'\n case 'csharp':\n return 'C#'\n case 'php':\n return 'PHP'\n case 'java':\n return 'Java'\n case 'swift':\n return 'Swift'\n case 'postman':\n return 'Postman'\n case 'terraform':\n return 'Terraform'\n case 'unity':\n return 'Unity'\n case 'json':\n return 'JSON'\n default:\n assertNever(language)\n }\n}\n\nexport type ViewTransition = {\n ready: Promise<void>\n finished: Promise<void>\n updateCallbackDone: Promise<void>\n skipTransition: () => void\n}\n\nexport const wrapOptions = ['nowrap', 'wrap', 'wrap-reverse'] as const\nexport type Wrap = (typeof wrapOptions)[number]\n\nexport const programmingLanguages = [\n 'javascript',\n 'typescript',\n 'python',\n 'bash',\n 'json',\n 'go',\n 'dotnet',\n 'java',\n] as const\nexport type ProgrammingLanguage = (typeof programmingLanguages)[number]\n\nexport function isProgrammingLanguage(\n language: string\n): language is ProgrammingLanguage {\n return programmingLanguages.includes(language as ProgrammingLanguage)\n}\n\n// Workspace selector - shared by Navbar and WorkspaceSelector\nexport interface Org {\n id: string\n label: string\n slug: string\n workspaces: Workspace[]\n}\n\nexport interface Workspace {\n id: string\n slug: string\n label: string\n active: boolean\n createdAt: Date\n updatedAt: Date\n}\n\nexport interface GlobalWorkspaceSelectorProps {\n orgs: Org[]\n value?: string\n onSelect: (org: Org, workspace: Workspace) => void\n}\n","import {\n Breakpoint,\n breakpoints,\n Direction,\n PaddingPerAxis,\n PaddingPerSide,\n PaddingPerSides,\n ResponsiveValue,\n Size,\n sizes,\n} from '@/types'\nimport { Group } from '@/components/Table'\n\n/**\n * Create a range of numbers from 0 to N\n * @example\n * type Range0to100 = Range<100> // [0, 1, 2, ..., 100]\n */\nexport type Range<\n N extends number,\n Arr extends unknown[] = [],\n> = Arr['length'] extends N\n ? [...Arr, N][number]\n : Range<N, [...Arr, Arr['length']]>\n\nexport function isResponsiveValueObject<T>(\n value: unknown\n): value is ResponsiveValue<T> & Record<Breakpoint, T> {\n return (\n typeof value === 'object' &&\n value !== null &&\n Object.keys(value).every((key) => isBreakpoint(key))\n )\n}\n\nexport function isSize(value: unknown): value is Size {\n return (\n typeof value === 'string' && (sizes as readonly string[]).includes(value)\n )\n}\n\nexport function isDirection(value: unknown): value is Direction {\n return (\n typeof value === 'string' &&\n (['row', 'column'] as readonly string[]).includes(value)\n )\n}\n\n/**\n * Checks if the value is an object with x and y properties\n */\nexport function isPaddingHorizontalOrVerticalAxis(\n value: unknown\n): value is PaddingPerAxis {\n return (\n typeof value === 'object' &&\n value !== null &&\n // x or y must be present\n ('x' in value || 'y' in value)\n )\n}\n\nexport function isPaddingPerSideValue(\n value: unknown\n): value is PaddingPerSides {\n return (\n typeof value === 'object' &&\n value !== null &&\n ('top' in value || 'right' in value || 'bottom' in value || 'left' in value)\n )\n}\n\nexport function isPaddingPerSide(value: unknown): value is PaddingPerSide {\n return isPaddingHorizontalOrVerticalAxis(value) || isPaddingPerSides(value)\n}\n\nexport function isPaddingPerSides(value: unknown): value is PaddingPerSides {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'top' in value &&\n 'right' in value &&\n 'bottom' in value &&\n 'left' in value\n )\n}\n\n/**\n * Asserts that a condition is true, otherwise throws an error\n * Can be used to narrow types\n */\nexport function assert(condition: unknown, message: string): asserts condition {\n if (!condition) {\n throw new Error(message)\n }\n}\n\nfunction isBreakpoint(key: string): key is Breakpoint {\n return (breakpoints as readonly string[]).includes(key)\n}\n\nexport function isGroupOf<T extends object>(data: unknown): data is Group<T> {\n return (\n typeof data === 'object' &&\n data !== null &&\n 'key' in data &&\n 'items' in data\n )\n}\n","import { Alignment, Gap, Padding, PaddingPerSide } from '@/types'\nimport {\n isPaddingHorizontalOrVerticalAxis,\n isPaddingPerSide,\n isPaddingPerSideValue,\n} from './typeUtils'\n\nconst directionClasses: Record<'horizontal' | 'vertical', string> = {\n horizontal: 'flex-row',\n vertical: 'flex-col',\n}\n\nexport const directionToFlexMapper = (direction: 'horizontal' | 'vertical') =>\n directionClasses[direction]\nexport const gapMapper = (gap: Gap) => `gap-${gap}`\n\nconst paddingPerSideMapper = (padding: PaddingPerSide): string => {\n if (isPaddingHorizontalOrVerticalAxis(padding)) {\n const { x, y } = padding\n return `px-${x} py-${y}`\n }\n\n if (isPaddingPerSideValue(padding)) {\n const { top, right, bottom, left } = padding\n return `pt-${top} pr-${right} pb-${bottom} pl-${left}`\n }\n\n return ''\n}\n\nexport const paddingMapper = (padding: Padding): string => {\n if (isPaddingPerSide(padding)) return paddingPerSideMapper(padding)\n return `p-${padding}`\n}\nexport const colSpanMapper = (colSpan: number) => `col-span-${colSpan}`\n\nconst alignmentClasses: Record<Alignment, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n}\n\nexport const alignmentMapper = (alignment: Alignment) =>\n alignmentClasses[alignment]\n\nconst justifyClasses: Record<\n 'start' | 'center' | 'end' | 'space-between' | 'space-evenly',\n string\n> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n 'space-between': 'justify-between',\n 'space-evenly': 'justify-evenly',\n}\n\nexport const justifyMapper = (justify: keyof typeof justifyClasses) =>\n justifyClasses[justify]\n\nconst wrapClasses: Record<'nowrap' | 'wrap' | 'wrap-reverse', string> = {\n nowrap: 'flex-nowrap',\n wrap: 'flex-wrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n}\n\nexport const wrapMapper = (wrap: 'nowrap' | 'wrap' | 'wrap-reverse') =>\n wrapClasses[wrap]\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => Boolean(value) && !Number.isNaN(Number(value));\nconst isInteger = value => Boolean(value) && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isNever, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position';\nconst imageLabels = /*#__PURE__*/new Set(['image', 'url']);\nconst isLabelImage = label => imageLabels.has(label);\nconst sizeLabels = /*#__PURE__*/new Set(['length', 'size', 'percentage']);\nconst isLabelSize = label => sizeLabels.has(label);\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top'];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleOrigin = () => ['center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: [...scalePosition(), isArbitraryValue, isArbitraryVariable]\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition]\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }]\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize]\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: [themeColor]\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', isArbitraryVariable, isArbitraryValue, themeInsetShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scaleOrigin()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scaleOrigin()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['before', 'after', 'placeholder', 'file', 'marker', 'selection', 'first-line', 'first-letter', 'backdrop', '*', '**']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { Breakpoint, ResponsiveValue } from '@/types'\nimport { clsx, type ClassValue } from 'clsx'\nimport { extendTailwindMerge } from 'tailwind-merge'\nimport { isResponsiveValueObject } from './typeUtils'\n\nconst customTwMerge = extendTailwindMerge({\n extend: {\n classGroups: {\n 'font-size': [\n {\n text: [\n (value: string) =>\n ['heading', 'body', 'codeline', 'display'].some((element) =>\n value.includes(element)\n ) &&\n ['xs', 'sm', 'md', 'lg', 'xl', '2xl'].some((element) =>\n value.includes(element)\n ),\n ],\n },\n ],\n },\n },\n})\n\nexport function cn(...inputs: ClassValue[]) {\n return customTwMerge(clsx(inputs))\n}\n\n/**\n * Given an object of responsive values for T and a mapper function, return a string of class names\n * that correspond to the responsive values.\n *\n * @param value - The responsive value\n * @param mapper - A function that takes the value and returns a string of class names\n * @returns A string of class names\n * @example\n * const gapMapper = (gap: number) => `gap-${gap}`\n * const gap = getResponsiveClasses({ sm: 0, md: 10 }, gapMapper)\n * // => 'gap-0 md:gap-10'\n */\nexport function getResponsiveClasses<T>(\n value: ResponsiveValue<T>,\n mapper: (val: T, breakpoint: Breakpoint) => string\n): string {\n if (isResponsiveValueObject(value)) {\n return Object.entries(value)\n .filter(([, val]) => val !== undefined)\n .map(([breakpoint, val]) => {\n const resolvedClasses = mapper(val as T, breakpoint as Breakpoint)\n const classFragments = resolvedClasses.split(' ')\n\n return classFragments\n .map((fragment) => {\n return breakpoint === 'xs' ? fragment : `${breakpoint}:${fragment}`\n })\n .join(' ')\n })\n .join(' ')\n }\n return mapper(value as T, 'xs')\n}\n\n/**\n * Converts string to kebab case\n *\n * @param {string} string\n * @returns {string} A kebabized string\n */\nexport const toKebabCase = (string: string) =>\n string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()\n\nexport const partitionBy = <T>(\n array: T[],\n predicate: (item: T) => boolean\n): [T[], T[]] => {\n return array.reduce(\n (acc: [T[], T[]], item: T): [T[], T[]] => {\n const key = predicate(item) ? 0 : 1\n acc[key].push(item)\n return acc\n },\n [[], []]\n )\n}\n","import {\n colSpanMapper,\n gapMapper,\n paddingMapper,\n} from '@/lib/responsiveMappers'\nimport { cn, getResponsiveClasses } from '@/lib/utils'\nimport { Columns, Gap, Padding, ResponsiveValue } from '@/types'\nimport { isValidElement, ReactElement } from 'react'\n\nexport interface GridProps {\n /**\n * The number of columns in the grid.\n * @default 1\n * @example Default\n * <Grid columns={2}>\n * <Grid.Item>Item 1</Grid.Item>\n * <Grid.Item>Item 2</Grid.Item>\n * </Grid>\n * @example With responsive columns\n * <Grid columns={{ xs: 1, md: 2 }}>\n * <Grid.Item>Item 1</Grid.Item>\n * <Grid.Item>Item 2</Grid.Item>\n * </Grid>\n */\n columns?: ResponsiveValue<Columns>\n\n /**\n * The gap between the grid items.\n * @default 0\n * @example Default\n * <Grid gap={4}>\n * <Grid.Item>Item 1</Grid.Item>\n * <Grid.Item>Item 2</Grid.Item>\n * </Grid>\n * @example With responsive gap\n * <Grid gap={{ xs: 2, md: 4 }}>\n * <Grid.Item>Item 1</Grid.Item>\n * <Grid.Item>Item 2</Grid.Item>\n * </Grid>\n */\n gap?: ResponsiveValue<Gap>\n\n /**\n * The Grid.Item children of the grid.\n * @example\n * <Grid>\n * <Grid.Item>Item 1</Grid.Item>\n * <Grid.Item>Item 2</Grid.Item>\n * </Grid>\n */\n children: Array<ReactElement<typeof GridItem>>\n\n /**\n * If true, the grid will wrap its children.\n * @default false\n */\n wrap?: boolean\n\n /**\n * Can be an object of responsive Padding values, or just Padding values.\n *\n * @example Simple Padding\n * padding: 10\n *\n * @example Responsive Padding\n * padding: { xs: 10, md: 20, lg: 30, xl: 40 }\n *\n * @example Padding per side\n * padding: { top: 10, right: 0, bottom: 10, left: 0 }\n *\n * @example Responsive Padding per side (just x and y axis)\n * padding: { xs: 0, md: 0, lg: 0, xl: { x: 10, y: 12 } }\n *\n * @example Responsive Padding per side with different values for each side\n * padding: { xs: 0, md: 0, lg: 0, xl: { top: 10, right: 0, bottom: 10, left: 0 } }\n */\n padding?: ResponsiveValue<Padding>\n\n className?: string\n}\n\nconst columnsMapper = (columns: Columns) => `grid-cols-${columns}`\n\nconst isValidGridChild = (child: ReactElement) =>\n isValidElement(child) && child.type === GridItem\n\nconst Grid = ({\n children,\n columns = 1,\n gap = 0,\n wrap = true,\n padding = 0,\n className,\n}: GridProps) => {\n const validGridChildren = children.filter(isValidGridChild)\n return (\n <div\n className={cn(\n 'grid',\n getResponsiveClasses(columns, columnsMapper),\n getResponsiveClasses(gap, gapMapper),\n !wrap && 'grid-flow-col',\n getResponsiveClasses(padding, paddingMapper),\n className\n )}\n >\n {validGridChildren}\n </div>\n )\n}\n\ntype PermittedHTMLAttributes = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'className'\n>\n\ninterface GridItemProps extends PermittedHTMLAttributes {\n children: React.ReactNode\n colSpan?: ResponsiveValue<number>\n padding?: ResponsiveValue<Padding>\n className?: string\n}\n\nconst GridItem = ({\n children,\n colSpan,\n padding,\n className,\n ...props\n}: GridItemProps) => {\n return (\n <div\n className={cn(\n 'grid-item',\n colSpan && getResponsiveClasses(colSpan, colSpanMapper),\n padding && getResponsiveClasses(padding, paddingMapper),\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nconst GridWithSubcomponents = Object.assign(Grid, {\n Item: GridItem,\n})\n\nexport { GridWithSubcomponents as Grid }\n","import React from 'react'\nimport { cn, getResponsiveClasses } from '@/lib/utils'\nimport { Gap, Padding, ResponsiveValue } from '@/types'\nimport { gapMapper, paddingMapper, wrapMapper } from '@/lib/responsiveMappers'\n\ntype StackDirection = 'horizontal' | 'vertical'\ntype StackAlign = 'stretch' | 'start' | 'center' | 'end' | 'baseline'\ntype StackJustify =\n | 'start'\n | 'center'\n | 'end'\n | 'space-between'\n | 'space-evenly'\ntype StackWrap = 'wrap' | 'nowrap'\ntype TailwindJustify =\n | 'justify-start'\n | 'justify-center'\n | 'justify-end'\n | 'justify-between'\n | 'justify-evenly'\ntype TailwindAlign =\n | 'items-start'\n | 'items-center'\n | 'items-end'\n | 'items-baseline'\n | 'items-stretch'\ntype TailwindDirection = 'flex-row' | 'flex-col'\n\nexport interface StackProps {\n children: React.ReactNode\n\n /** Specify the orientation for the stack container */\n direction?: ResponsiveValue<StackDirection>\n\n /** Specify the gap between children elements in the stack */\n gap?: ResponsiveValue<Gap>\n\n /** Specify the padding of the stack container */\n padding?: ResponsiveValue<Padding>\n\n /** Specify the alignment between items in the cross-axis of the orientation */\n align?: ResponsiveValue<StackAlign>\n\n /** Specify how items will be distributed in the stacking direction */\n justify?: ResponsiveValue<StackJustify>\n\n /** Specify whether items are forced onto one line or can wrap */\n wrap?: ResponsiveValue<StackWrap>\n\n className?: string\n}\n\nexport function Stack({\n children,\n direction = 'vertical',\n gap = 0,\n padding = 0,\n align = 'stretch',\n justify = 'start',\n wrap = 'nowrap',\n className,\n}: StackProps) {\n const alignMapper = (val: StackAlign): TailwindAlign => {\n switch (val) {\n case 'start':\n return 'items-start'\n case 'center':\n return 'items-center'\n case 'end':\n return 'items-end'\n case 'baseline':\n return 'items-baseline'\n default:\n return 'items-stretch'\n }\n }\n\n const justifyMapper = (val: StackJustify): TailwindJustify => {\n switch (val) {\n case 'start':\n return 'justify-start'\n case 'center':\n return 'justify-center'\n case 'end':\n return 'justify-end'\n case 'space-between':\n return 'justify-between'\n case 'space-evenly':\n return 'justify-evenly'\n default:\n return 'justify-start'\n }\n }\n\n const directionToFlexMapper = (val: StackDirection): TailwindDirection => {\n return val === 'horizontal' ? 'flex-row' : 'flex-col'\n }\n\n return (\n <div\n className={cn(\n 'flex',\n getResponsiveClasses(direction, directionToFlexMapper),\n getResponsiveClasses(gap, gapMapper),\n getResponsiveClasses(padding, paddingMapper),\n getResponsiveClasses(wrap, wrapMapper),\n getResponsiveClasses(align, alignMapper),\n getResponsiveClasses(justify, justifyMapper),\n className\n )}\n >\n {children}\n </div>\n )\n}\n\ninterface StackItemProps {\n children: React.ReactNode\n /** Allow item to keep size or expand to fill the available space */\n grow?: ResponsiveValue<boolean>\n className?: string\n}\n\nStack.Item = function StackItem({ children, grow, className }: StackItemProps) {\n const growMapper = (val: boolean) => (val ? 'flex-1' : 'flex-initial')\n return (\n <div\n className={cn(getResponsiveClasses(grow ?? false, growMapper), className)}\n >\n {children}\n </div>\n )\n}\n","// packages/react/compose-refs/src/composeRefs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/slot/src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\nvar Slot = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n});\nSlot.displayName = \"Slot\";\nvar SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n});\nSlotClone.displayName = \"SlotClone\";\nvar Slottable = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n};\nfunction isSlottable(child) {\n return React.isValidElement(child) && child.type === Slottable;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n childPropValue(...args);\n slotPropValue(...args);\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\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 return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Slot;\nexport {\n Root,\n Slot,\n Slottable\n};\n//# sourceMappingURL=index.mjs.map\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e))for(t=0;t<e.length;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f);else for(t in e)e[t]&&(n&&(n+=\" \"),n+=t);return n}export function clsx(){for(var e,t,f=0,n=\"\";f<arguments.length;)(e=arguments[f++])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? \"\".concat(value) : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>{\n return (props)=>{\n var ref;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants , defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (ref = config.compoundVariants) === null || ref === void 0 ? void 0 : ref.reduce((acc, param1)=>{\n let { class: cvClass , className: cvClassName , ...compoundVariantOptions } = param1;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n};\n\n\n//# sourceMappingURL=index.mjs.map","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\nimport { ButtonSize, ButtonVariant, ButtonContext } from '@/types'\n\n// Lerp for angles, taking the shortest path around the circle\nconst lerpAngle = (a: number, b: number, t: number) => {\n // Normalize angles to 0-360 range\n a = ((a % 360) + 360) % 360\n b = ((b % 360) + 360) % 360\n\n // Calculate the shortest difference\n let diff = b - a\n if (diff > 180) {\n diff -= 360\n } else if (diff < -180) {\n diff += 360\n }\n\n // Interpolate and normalize result\n const result = a + diff * t\n return ((result % 360) + 360) % 360\n}\n\nconst useAnimationFrame = (\n callback: (timestamp: number, delta: number) => void,\n enabled: boolean = true\n) => {\n const requestRef = React.useRef<number>()\n const previousTimeRef = React.useRef<number>()\n\n const animate = React.useCallback(\n (timestamp: number) => {\n if (previousTimeRef.current !== undefined) {\n const deltaTime = timestamp - previousTimeRef.current\n callback(timestamp, deltaTime)\n }\n previousTimeRef.current = timestamp\n if (enabled) {\n requestRef.current = requestAnimationFrame(animate)\n }\n },\n [callback, enabled]\n )\n\n React.useEffect(() => {\n if (enabled) {\n requestRef.current = requestAnimationFrame(animate)\n }\n return () => {\n if (requestRef.current) {\n cancelAnimationFrame(requestRef.current)\n }\n }\n }, [animate, enabled])\n}\n\nconst ButtonLeftIcon = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center',\n className\n )}\n {...props}\n />\n))\nButtonLeftIcon.displayName = 'ButtonLeftIcon'\n\nconst ButtonRightIcon = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center',\n className\n )}\n {...props}\n />\n))\nButtonRightIcon.displayName = 'ButtonRightIcon'\n\nconst ButtonIcon = ButtonLeftIcon\n\nconst ButtonText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span ref={ref} className={cn('flex-1', className)} {...props} />\n))\nButtonText.displayName = 'ButtonText'\n\nconst BrandSlot = React.forwardRef<\n HTMLElement,\n React.ComponentProps<typeof Slot> & { isBrandVariant?: boolean }\n>(({ isBrandVariant = false, ...slotProps }, slotRef) => {\n if (!isBrandVariant) {\n return <Slot {...slotProps} ref={slotRef} />\n }\n\n const child = React.Children.only(slotProps.children)\n if (!React.isValidElement(child)) {\n return <Slot {...slotProps} ref={slotRef} />\n }\n\n const brandSpan = (\n <span\n key=\"brand-bg\"\n className=\"bg-btn-brand hover:bg-btn-brand-hover disabled:bg-btn-brand-disabled pointer-events-none absolute inset-0 -z-10 rounded-[inherit]\"\n />\n )\n\n const childWithBrand = React.cloneElement(\n child as React.ReactElement<React.ComponentProps<typeof Slot>>,\n {\n ...child.props,\n children: (child.props as React.ComponentProps<typeof Slot>).children\n ? [\n brandSpan,\n (child.props as React.ComponentProps<typeof Slot>).children,\n ]\n : brandSpan,\n }\n )\n\n return (\n <Slot {...slotProps} ref={slotRef}>\n {childWithBrand}\n </Slot>\n )\n})\nBrandSlot.displayName = 'BrandSlot'\n\nconst buttonVariants = cva(\n 'relative inline-flex items-center justify-center whitespace-nowrap text-sm font-mono uppercase tracking-[0.01em] transition-all select-none cursor-pointer focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-[var(--bg-surface-primary-default)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0',\n {\n variants: {\n context: {\n product: 'rounded-sm',\n marketing: 'rounded-full',\n },\n variant: {\n brand:\n 'relative text-btn-brand hover:text-btn-brand-hover disabled:text-btn-brand-disabled [transform:translateZ(0)] before:absolute before:content-[\"\"] before:-z-10 before:pointer-events-none [--gradient-rotation:220deg] before:bg-[conic-gradient(from_var(--gradient-rotation),hsl(334,54%,13%),hsl(4,67%,47%),hsl(23,96%,62%),hsl(68,52%,72%),hsl(108,24%,41%),hsl(154,100%,7%),hsl(220,100%,12%),hsl(214,69%,50%),hsl(216,100%,80%),hsl(334,54%,13%))] after:absolute after:content-[\"\"] after:-z-20 after:pointer-events-none after:opacity-0 after:transition-opacity after:duration-300 hover:after:opacity-100 after:bg-[conic-gradient(from_var(--gradient-rotation),hsl(334,54%,13%),hsl(4,67%,47%),hsl(23,96%,62%),hsl(68,52%,72%),hsl(108,24%,41%),hsl(154,100%,7%),hsl(220,100%,12%),hsl(214,69%,50%),hsl(216,100%,80%),hsl(334,54%,13%))] after:blur-[2px] focus-visible:ring-2 focus-visible:ring-offset-3 focus-visible:ring-[var(--border-focus)] focus-visible:ring-offset-[var(--bg-surface-primary-default)]',\n primary:\n 'bg-btn-primary text-btn-primary shadow-[0px_2px_1px_0px_rgba(255,255,255,0.1)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.2)_inset] hover:bg-btn-primary-hover hover:text-btn-primary-hover hover:shadow-[0px_2px_1px_0px_rgba(255,255,255,0.08)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.25)_inset] active:bg-btn-primary-active active:text-btn-primary-active active:shadow-none disabled:bg-btn-primary-disabled disabled:text-btn-primary-disabled',\n secondary:\n 'bg-btn-secondary text-btn-secondary shadow-[0px_2px_1px_0px_rgba(255,255,255,0.25)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.1)_inset] hover:bg-btn-secondary-hover hover:text-btn-secondary-hover hover:shadow-[0px_2px_1px_0px_rgba(255,255,255,0.2)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.15)_inset] active:bg-btn-secondary-active active:text-btn-secondary-active active:shadow-none disabled:bg-btn-secondary-disabled disabled:text-btn-secondary-disabled',\n tertiary:\n 'bg-transparent text-btn-tertiary hover:bg-btn-secondary-hover hover:text-btn-tertiary-hover active:bg-btn-secondary-active active:text-btn-tertiary-active disabled:text-btn-tertiary-disabled',\n 'destructive-primary':\n 'bg-btn-destructive text-btn-destructive-primary shadow-[0px_2px_1px_0px_rgba(255,255,255,0.1)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.2)_inset] hover:bg-btn-destructive-hover hover:text-btn-destructive-primary-hover hover:shadow-[0px_2px_1px_0px_rgba(255,255,255,0.08)_inset,0px_-2px_1px_0px_rgba(0,0,0,0.25)_inset] active:bg-btn-destructive-active active:text-btn-destructive-primary-active active:shadow-none disabled:bg-btn-destructive-disabled disabled:text-btn-destructive-primary-disabled',\n 'destructive-secondary':\n 'bg-transparent text-btn-destructive-secondary hover:text-btn-destructive-secondary-hover active:text-btn-destructive-secondary-active disabled:text-btn-destructive-secondary-disabled',\n },\n size: {\n xs: 'h-7 px-2 py-1 text-xs gap-1 [&_svg]:size-3',\n sm: 'h-8 px-3 py-2 text-sm gap-1.5 [&_svg]:size-3.5',\n md: 'h-9 px-4 py-2 gap-2 [&_svg]:size-4',\n lg: 'h-10 px-6 py-2 text-lg gap-2.5 [&_svg]:size-5',\n },\n },\n compoundVariants: [\n {\n variant: 'brand',\n className:\n 'before:inset-[-1px] active:before:inset-[-2px] after:inset-[-1px] active:after:inset-[-2px]',\n },\n {\n context: 'product',\n variant: 'brand',\n className:\n 'before:rounded-[calc(theme(borderRadius.sm)+1px)] active:before:rounded-[calc(theme(borderRadius.sm)+2px)] after:rounded-[calc(theme(borderRadius.sm)+1px)] active:after:rounded-[calc(theme(borderRadius.sm)+2px)]',\n },\n {\n context: 'marketing',\n variant: 'brand',\n className: 'before:rounded-full after:rounded-full',\n },\n ],\n defaultVariants: {\n context: 'product',\n variant: 'primary',\n size: 'md',\n },\n }\n)\n\ntype Attributes = Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'style'>\n\nexport interface ButtonProps extends Attributes {\n asChild?: boolean\n variant?: ButtonVariant\n size?: ButtonSize\n context?: ButtonContext\n className?: string\n 'aria-label'?: string\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'primary',\n size = 'md',\n context = 'product',\n asChild = false,\n className,\n onMouseEnter,\n onMouseLeave,\n onMouseDown,\n onMouseUp,\n onMouseMove,\n ...props\n },\n ref\n ) => {\n const [cursorPosition, setCursorPosition] = React.useState<{\n x: number\n y: number\n } | null>(null)\n const buttonRef = React.useRef<HTMLButtonElement | null>(null)\n const buttonDimensionsRef = React.useRef<{\n width: number\n height: number\n } | null>(null)\n\n if (process.env.NODE_ENV === 'development' && !asChild) {\n const validateChildren = () => {\n if (!props.children) return\n\n const childArray = React.Children.toArray(props.children)\n const hasButtonText = childArray.some(\n (child) =>\n (typeof child === 'string' && child.trim().length > 0) ||\n typeof child === 'number' ||\n (React.isValidElement(child) &&\n (child.type === ButtonText ||\n (child.type as { displayName?: string })?.displayName ===\n 'ButtonText'))\n )\n const hasAriaLabel = props['aria-label']\n\n if (!hasButtonText && !hasAriaLabel) {\n console.warn(\n 'Button: Buttons should either contain Button.Text or have an aria-label for accessibility. Consider using IconButton for icon-only buttons.'\n )\n }\n\n const invalidChildren = childArray.filter((child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return false // Raw text is OK - we'll auto-wrap it\n }\n if (React.isValidElement(child)) {\n const displayName = (child.type as { displayName?: string })\n ?.displayName\n return ![\n 'ButtonText',\n 'ButtonLeftIcon',\n 'ButtonRightIcon',\n 'ButtonIcon',\n ].includes(displayName || '')\n }\n return true // Other types are invalid\n })\n\n if (invalidChildren.length > 0) {\n console.warn(\n 'Button: Only Button.Text, Button.LeftIcon, Button.RightIcon, and raw text should be used as children.'\n )\n }\n }\n\n validateChildren()\n }\n\n const gradientRefs = React.useRef<{\n target: number\n current: number\n }>({\n target: 220,\n current: 220,\n })\n\n const isBrandVariant = variant === 'brand'\n\n // Get gap class for the current size\n const getGapClass = (size: ButtonSize) => {\n switch (size) {\n case 'xs':\n return 'gap-1'\n case 'sm':\n return 'gap-1.5'\n case 'md':\n return 'gap-2'\n case 'lg':\n return 'gap-2.5'\n default:\n return 'gap-2'\n }\n }\n\n // Only run animation frame when brand variant is active\n useAnimationFrame(\n React.useCallback(\n (_timestamp: number, delta: number) => {\n if (!buttonRef.current) return\n\n const gradientValues = gradientRefs.current\n\n // Calculate target based on cursor position if hovering\n if (cursorPosition && buttonDimensionsRef.current) {\n const centerX = buttonDimensionsRef.current.width / 2\n const centerY = buttonDimensionsRef.current.height / 2\n\n // Calculate angle from center to cursor position\n const angle =\n Math.atan2(\n cursorPosition.y - centerY,\n cursorPosition.x - centerX\n ) *\n (180 / Math.PI)\n\n // Normalize angle to 0-360 range and add offset\n gradientValues.target = (angle + 360) % 360\n } else {\n // Always reset to original position when not hovering\n gradientValues.target = 220\n }\n\n // Early exit if we're close enough to target\n const diff = Math.abs(gradientValues.target - gradientValues.current)\n if (diff < 0.1) {\n if (diff > 0) {\n gradientValues.current = gradientValues.target\n buttonRef.current.style.setProperty(\n '--gradient-rotation',\n `${Math.round(gradientValues.target)}deg`\n )\n }\n return\n }\n\n const lerpValue = Math.min((delta / 1000) * 8, 1) // Increased speed for snappier response\n\n const newCurrent = lerpAngle(\n gradientValues.current,\n gradientValues.target,\n lerpValue\n )\n gradientValues.current = newCurrent\n\n buttonRef.current.style.setProperty(\n '--gradient-rotation',\n `${Math.round(newCurrent)}deg`\n )\n },\n [cursorPosition]\n ),\n isBrandVariant // Only enable animation for brand variant\n )\n\n if (process.env.NODE_ENV === 'development') {\n const deprecatedVariants = {\n default: 'primary',\n destructive: 'destructive-primary',\n outline: 'secondary',\n ghost: 'tertiary',\n link: 'a semantic <a> tag',\n }\n\n if (variant && variant in deprecatedVariants) {\n console.warn(\n `Button: The variant \"${variant}\" is deprecated. Please use \"${deprecatedVariants[variant as keyof typeof deprecatedVariants]}\" instead.`\n )\n }\n }\n\n const handleMouseMove = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isBrandVariant && buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect()\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n setCursorPosition({ x, y })\n }\n onMouseMove?.(e)\n },\n [isBrandVariant, onMouseMove]\n )\n\n const handleMouseEnter = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isBrandVariant && buttonRef.current) {\n const rect = buttonRef.current.getBoundingClientRect()\n // Cache dimensions for animation frame\n buttonDimensionsRef.current = {\n width: rect.width,\n height: rect.height,\n }\n const x = e.clientX - rect.left\n const y = e.clientY - rect.top\n setCursorPosition({ x, y })\n }\n onMouseEnter?.(e)\n },\n [isBrandVariant, onMouseEnter]\n )\n\n const handleMouseLeave = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n if (isBrandVariant) {\n setCursorPosition(null)\n buttonDimensionsRef.current = null\n // Explicitly set target to ensure reset\n gradientRefs.current.target = 220\n }\n onMouseLeave?.(e)\n },\n [isBrandVariant, onMouseLeave]\n )\n\n const handleMouseDown = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onMouseDown?.(e)\n },\n [onMouseDown]\n )\n\n const handleMouseUp = React.useCallback(\n (e: React.MouseEvent<HTMLButtonElement>) => {\n onMouseUp?.(e)\n },\n [onMouseUp]\n )\n\n React.useEffect(() => {\n if (isBrandVariant && buttonRef.current) {\n buttonRef.current.style.setProperty('--gradient-rotation', '220deg')\n Object.assign(gradientRefs.current, { target: 220, current: 220 })\n }\n }, [isBrandVariant])\n\n const Comp = asChild ? BrandSlot : 'button'\n const combinedRef = React.useCallback(\n (node: HTMLButtonElement | null) => {\n buttonRef.current = node\n if (typeof ref === 'function') {\n ref(node)\n } else if (ref && node) {\n ;(ref as React.MutableRefObject<HTMLButtonElement | null>).current =\n node\n }\n },\n [ref]\n )\n\n // Auto-wrap raw text children in Button.Text (only when not using asChild)\n const processedChildren = React.useMemo(() => {\n if (asChild) {\n // When asChild is true, return children as-is - BrandSlot will handle brand logic\n return props.children\n }\n\n return React.Children.map(props.children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <ButtonText>{child}</ButtonText>\n }\n return child\n })\n }, [props.children, asChild])\n\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, context }), className)}\n ref={combinedRef}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onMouseMove={handleMouseMove}\n onMouseDown={handleMouseDown}\n onMouseUp={handleMouseUp}\n {...(asChild ? { isBrandVariant } : {})}\n {...props}\n >\n {asChild ? (\n processedChildren\n ) : (\n <>\n {isBrandVariant && (\n <span className=\"bg-btn-brand hover:bg-btn-brand-hover disabled:bg-btn-brand-disabled pointer-events-none absolute inset-0 z-10 rounded-[inherit]\" />\n )}\n <span\n className={cn(\n 'relative flex items-center justify-center',\n getGapClass(size),\n isBrandVariant ? `z-20` : ''\n )}\n >\n {processedChildren}\n </span>\n </>\n )}\n </Comp>\n )\n }\n)\nButton.displayName = 'Button'\n\nconst ButtonWithCompounds = Object.assign(Button, {\n Icon: ButtonIcon,\n LeftIcon: ButtonLeftIcon,\n RightIcon: ButtonRightIcon,\n Text: ButtonText,\n})\n\nexport {\n ButtonWithCompounds as Button,\n ButtonIcon,\n ButtonLeftIcon,\n ButtonRightIcon,\n ButtonText,\n}\n","// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport default function debounce(func: Function, wait: number) {\n let timeout: ReturnType<typeof setTimeout>\n\n return (...args: unknown[]) => {\n clearTimeout(timeout)\n timeout = setTimeout(() => func(...args), wait)\n }\n}\n","import { useState, useLayoutEffect } from 'react'\nimport { Breakpoint } from '@/types.js'\nimport debounce from '@/lib/debounce'\n\n// Define breakpoints in pixels matching Tailwind's default breakpoints\nconst breakpointValues = {\n xs: 0, // Default/mobile first\n sm: 640, // @media (min-width: 640px)\n md: 768, // @media (min-width: 768px)\n lg: 1024, // @media (min-width: 1024px)\n xl: 1280, // @media (min-width: 1280px)\n '2xl': 1536, // @media (min-width: 1536px)\n} as const\n\nconst getBreakpoint = (width: number): Breakpoint => {\n const breakpoints = Object.entries(breakpointValues).sort(\n (a, b) => b[1] - a[1]\n )\n\n for (const [key, minWidth] of breakpoints) {\n if (width >= minWidth) {\n return key as Breakpoint\n }\n }\n\n return 'xs'\n}\n\nconst useTailwindBreakpoint = (): Breakpoint => {\n const [breakpoint, setBreakpoint] = useState<Breakpoint>(\n getBreakpoint(window.innerWidth)\n )\n\n useLayoutEffect(() => {\n const handleResize = debounce(() => {\n const newBreakpoint = getBreakpoint(window.innerWidth)\n setBreakpoint(newBreakpoint)\n }, 100)\n window.addEventListener('resize', handleResize)\n handleResize()\n return () => window.removeEventListener('resize', handleResize)\n }, [])\n\n return breakpoint\n}\n\nexport default useTailwindBreakpoint\n","import { Breakpoint, breakpoints, Gap, ResponsiveValue, Size } from '@/types'\nimport { isResponsiveValueObject, isSize } from './typeUtils'\n\nexport const gapMapper = (gap: Gap) => `gap-${gap}`\n\nexport const resolveSizeForBreakpoint = (\n currentBreakpoint: Breakpoint,\n size: ResponsiveValue<Size>,\n fallback: Size = 'medium'\n): Size => {\n if (!isResponsiveValueObject<Size>(size)) {\n return isSize(size) ? size : fallback\n }\n\n const currentBreakpointIndex = breakpoints.indexOf(currentBreakpoint)\n\n for (let i = currentBreakpointIndex; i >= 0; i--) {\n const breakpoint = breakpoints[i]\n if (size[breakpoint]) return size[breakpoint]\n }\n\n return fallback\n}\n","const dynamicIconImports = {\n npm: () => import('./npm'),\n pypi: () => import('./pypi'),\n nuget: () => import('./nuget'),\n go: () => import('./go'),\n gems: () => import('./gems'),\n maven: () => import('./maven'),\n packagist: () => import('./packagist'),\n}\n\nexport { dynamicIconImports as default }\n","'use client'\n\nimport { lazy, Suspense } from 'react'\nimport { LucideProps } from 'lucide-react'\nimport dynamicIconImports from 'lucide-react/dynamicIconImports'\nimport { ResponsiveValue, Size } from '@/types'\nimport useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'\nimport { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'\n\nimport customDynamicIconImports from './customIcons'\nimport { IconName } from './names'\n\n// TODO: Use skeleton\nfunction Skeleton() {\n return <div />\n}\n\n// Skeleton fallback\nconst fallback = <Skeleton />\n\ntype SvgProps = Pick<\n LucideProps,\n | 'stroke'\n | 'strokeWidth'\n | 'strokeOpacity'\n | 'size'\n | 'viewBox'\n | 'fill'\n | 'fillOpacity'\n | 'className'\n>\n\nconst sizeMap: Record<Size, number> = {\n small: 16,\n medium: 24,\n large: 32,\n xl: 48,\n '2xl': 64,\n}\n\nexport interface IconProps extends Omit<SvgProps, 'size'> {\n name: IconName\n size?: ResponsiveValue<Size>\n}\n\nconst iconCache = new Map<\n string,\n React.LazyExoticComponent<React.ComponentType<LucideProps>>\n>()\n\nfunction tryGetIcon(\n name: string\n): React.LazyExoticComponent<React.ComponentType<LucideProps>> {\n if (iconCache.has(name)) {\n return iconCache.get(name) as React.LazyExoticComponent<\n React.ComponentType<LucideProps>\n >\n }\n\n const LucideIcon = customDynamicIconImports[\n name as keyof typeof customDynamicIconImports\n ]\n ? lazy(\n customDynamicIconImports[name as keyof typeof customDynamicIconImports]\n )\n : lazy(dynamicIconImports[name as keyof typeof dynamicIconImports])\n\n iconCache.set(name, LucideIcon)\n return LucideIcon\n}\n\nexport function Icon({ name, size = 'small', ...props }: IconProps) {\n const LucideIcon = tryGetIcon(name)\n const breakpoint = useTailwindBreakpoint()\n const resolvedSize = resolveSizeForBreakpoint(breakpoint, size, 'small')\n const sizeNumber = sizeMap[resolvedSize]\n\n return (\n <Suspense fallback={fallback}>\n <LucideIcon {...props} size={sizeNumber} />\n </Suspense>\n )\n}\n","import { Size } from '@/types'\nimport type { Range } from '@/lib/typeUtils'\nimport { useEffect, useMemo, useState, type CSSProperties } from 'react'\nimport styles from './index.module.css'\nimport { cn } from '@/lib/utils'\n\nexport type ScoreValue = Range<100>\n\ninterface ThresholdStyles {\n /**\n * The color of the track when the score is greater than the threshold.\n */\n [key: number]: string\n}\n\nexport interface ScoreProps {\n /**\n * The score to display. Must be between 0 and 100.\n */\n score: ScoreValue\n /**\n * The size of the score component e.g small, medium, large, xl, 2xl\n */\n size?: Size\n /**\n * Whether to show the label.\n */\n showLabel?: boolean\n /**\n * The color of the track.\n */\n trackColor?: string\n /**\n * Custom definition of thresholds for color changes.\n * e.g [50, 75] will change color to green at 75%, orange at 50%. Otherwise red.\n */\n thresholds?: ThresholdStyles\n\n animate?: boolean\n\n animationDuration?: number\n className?: string\n}\n\nconst transition = {\n length: 1000, // ms\n step: 200, // ms\n delay: 0, // ms\n}\nconst gapPercent = 5\nconst strokeWidth = 10\nconst circleSize = 100\nconst radius = circleSize / 2 - strokeWidth / 2\nconst circumference = 2 * Math.PI * radius\nconst percentToDegree = 360 / 100 // deg\nconst percentToPx = circumference / 100 // px\nconst offsetFactor = 0\nconst offsetFactorSecondary = 1 - offsetFactor\n\nconst sizeMap: Record<Size, number> = {\n small: 40,\n medium: 50,\n large: 60,\n xl: 70,\n '2xl': 80,\n}\n\nconst defaultThresholds: ThresholdStyles = {\n 0: 'var(--score-low)',\n 40: 'var(--score-mid)',\n 60: 'var(--score-high)',\n}\n\nconst defaultTrackColor = 'var(--score-track)'\n\nexport function Score({\n score,\n size = 'large',\n showLabel = true,\n trackColor = defaultTrackColor,\n thresholds = defaultThresholds,\n animate = false,\n animationDuration = 40,\n className,\n}: ScoreProps) {\n const [scoreInternal, setScoreInternal] = useState<ScoreValue>(\n animate ? 0 : score\n )\n const strokePercent = scoreInternal // %\n\n useEffect(() => {\n if (animate) {\n const stepSize = Math.max(1, Math.floor(score / 20)) // Increase by 5% of total at minimum\n const interval = setInterval(() => {\n setScoreInternal((prevScore) => {\n if (prevScore >= score) {\n clearInterval(interval)\n return score\n }\n return Math.min(prevScore + stepSize, score) as ScoreValue\n })\n }, animationDuration) // Reduced interval time for smoother animation\n return () => clearInterval(interval)\n }\n }, [])\n\n const progressColour = useMemo(() => {\n for (const [threshold, color] of Object.entries(thresholds).reverse()) {\n if (scoreInternal >= Number(threshold)) return color\n }\n }, [scoreInternal, thresholds])\n\n const primaryStrokeDasharray = () => {\n if (\n offsetFactor > 0 &&\n strokePercent > 100 - gapPercent * 2 * offsetFactor\n ) {\n // calculation to gradually shift back to 0 offset as progress nears 100% when offsetFactor > 0\n const subtract = -strokePercent + 100\n\n return `${Math.max(strokePercent * percentToPx - subtract * percentToPx, 0)} ${circumference}`\n } else {\n const subtract = gapPercent * 2 * offsetFactor\n\n return `${Math.max(strokePercent * percentToPx - subtract * percentToPx, 0)} ${circumference}`\n }\n }\n\n const secondaryStrokeDasharray = () => {\n if (\n offsetFactorSecondary < 1 &&\n strokePercent < gapPercent * 2 * offsetFactorSecondary\n ) {\n // calculation to gradually shift back to 1 secondary offset as progress nears 100% when offsetFactorSecondary < 1\n const subtract = strokePercent\n\n return `${Math.max((100 - strokePercent) * percentToPx - subtract * percentToPx, 0)} ${circumference}`\n } else {\n const subtract = gapPercent * 2 * offsetFactorSecondary\n\n return `${Math.max((100 - strokePercent) * percentToPx - subtract * percentToPx, 0)} ${circumference}`\n }\n }\n\n const primaryTransform = () => {\n if (\n offsetFactor > 0 &&\n strokePercent > 100 - gapPercent * 2 * offsetFactor\n ) {\n // calculation to gradually shift back to 0 offset as progress nears 100% when offsetFactor > 0\n const add = 0.5 * (-strokePercent + 100)\n\n return `rotate(${-90 + add * percentToDegree}deg)`\n } else {\n const add = gapPercent * offsetFactor\n\n return `rotate(${-90 + add * percentToDegree}deg)`\n }\n }\n\n const secondaryTransform = () => {\n if (\n offsetFactorSecondary < 1 &&\n strokePercent < gapPercent * 2 * offsetFactorSecondary\n ) {\n // calculation to gradually shift back to 1 secondary offset as progress nears 100% when offsetFactorSecondary < 1\n const subtract = 0.5 * strokePercent\n\n return `rotate(${360 - 90 - subtract * percentToDegree}deg) scaleY(-1)`\n } else {\n const subtract = gapPercent * offsetFactorSecondary\n\n return `rotate(${360 - 90 - subtract * percentToDegree}deg) scaleY(-1)`\n }\n }\n\n const primaryOpacity = () => {\n if (\n offsetFactor > 0 &&\n strokePercent < gapPercent * 2 * offsetFactor &&\n strokePercent < gapPercent * 2 * offsetFactorSecondary\n ) {\n return 0\n } else return 1\n }\n\n const secondaryOpacity = () => {\n if (\n (offsetFactor === 0 && strokePercent > 100 - gapPercent * 2) ||\n (offsetFactor > 0 &&\n strokePercent > 100 - gapPercent * 2 * offsetFactor &&\n strokePercent > 100 - gapPercent * 2 * offsetFactorSecondary)\n ) {\n return 0\n } else return 1\n }\n\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={`0 0 ${circleSize} ${circleSize}`}\n shapeRendering=\"crispEdges\"\n width={sizeMap[size]}\n height={sizeMap[size]}\n className={cn(styles.svg, className)}\n style={\n {\n '--stroke-width': strokeWidth,\n '--transition-length': `${transition?.length}ms`,\n '--delay': `${transition?.delay}ms`,\n } as CSSProperties\n }\n fill=\"none\"\n >\n <circle\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n style={\n {\n '--track-colour': trackColor,\n '--track-stroke-dasharray': secondaryStrokeDasharray(),\n transform: secondaryTransform(),\n opacity: secondaryOpacity(),\n } as CSSProperties\n }\n className={styles.track}\n />\n\n <circle\n cx={circleSize / 2}\n cy={circleSize / 2}\n r={radius}\n style={\n {\n '--progress-colour': progressColour,\n '--progress-stroke-dasharray': primaryStrokeDasharray(),\n '--transition-length': `${transition?.length}ms`,\n '--delay': `${transition?.delay}ms`,\n transform: primaryTransform(),\n opacity: primaryOpacity(),\n } as CSSProperties\n }\n className={styles.progress}\n />\n\n {showLabel && (\n <text\n x=\"50%\"\n y=\"50%\"\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n alignmentBaseline=\"central\"\n className={styles.text}\n style={\n {\n '--progress-colour': progressColour,\n '--transition-length': `${transition?.length}ms`,\n '--delay': `${transition?.delay}ms`,\n } as CSSProperties\n }\n >\n {Math.round(strokePercent)}\n </text>\n )}\n </svg>\n )\n}\n","import { cn } from '@/lib/utils'\nimport React, { FC, PropsWithChildren, ReactNode } from 'react'\nimport { Icon } from '../Icon'\nimport { Stack } from '../Stack'\nimport { Button } from '../Button'\nimport { Score } from '../Score'\nimport { iconNames } from '../Icon/names'\nimport { Children } from 'react'\nimport { Range } from '@/lib/typeUtils'\n\ntype RightElement =\n | {\n type: 'button'\n label: string\n onClick: () => void\n }\n | {\n type: 'gauge'\n value: Range<100>\n }\n\ntype IconProps = {\n name: (typeof iconNames)[number]\n size?: 'small' | 'medium' | 'large'\n}\n\ntype CardHeaderProps = PropsWithChildren & {\n subheader?: React.ReactNode\n icon?: IconProps\n rightElement?: RightElement\n className?: string\n}\n\nconst CardHeader: FC<CardHeaderProps> = ({\n children,\n subheader,\n icon,\n rightElement,\n className,\n}) => (\n <div\n className={cn(\n 'flex w-full flex-row gap-4',\n subheader ? 'items-start' : 'items-center',\n className\n )}\n >\n {icon && (\n <div className=\"flex-shrink-0 rounded-[8px] border p-2\">\n <Icon name={icon.name} size={icon.size} />\n </div>\n )}\n\n <div className=\"flex min-w-0 flex-grow flex-col gap-1\">\n <div className=\"text-md leading-none font-semibold tracking-tight\">\n {children}\n </div>\n {subheader && (\n <div className=\"text-card-foreground mt-1 flex items-center text-sm\">\n {subheader}\n </div>\n )}\n </div>\n\n {rightElement && (\n <div className=\"flex flex-shrink-0 justify-end gap-2\">\n {rightElement.type === 'button' && (\n <Button onClick={rightElement.onClick} variant=\"secondary\">\n {rightElement.label}\n </Button>\n )}\n {rightElement.type === 'gauge' && rightElement.value && (\n <Score score={rightElement.value} size=\"small\" />\n )}\n </div>\n )}\n </div>\n)\nCardHeader.displayName = 'CardHeader'\n\ninterface CardContentProps extends PropsWithChildren {\n className?: string\n}\n\nconst CardContent: FC<CardContentProps> = ({ children, className }) => (\n <div className={cn('text-sm', className)}>{children}</div>\n)\nCardContent.displayName = 'CardContent'\n\ntype FooterContent = {\n text: string\n link?: {\n label: string\n href: string\n }\n}\n\ntype CardFooterProps = {\n content: FooterContent\n className?: string\n}\n\nconst CardFooter: FC<CardFooterProps> = ({ content, className }) => (\n <div className={cn('border-t px-6 py-4', className)}>\n <div className=\"text-card-foreground flex items-center text-sm\">\n {content.text}\n {content.link && (\n <a\n href={content.link.href}\n className=\"text-primary ml-2 hover:underline\"\n >\n {content.link.label}\n </a>\n )}\n </div>\n </div>\n)\nCardFooter.displayName = 'CardFooter'\n\nexport type CardProps = {\n children: ReactNode | ReactNode[]\n onClick?: () => void\n href?: string\n className?: string\n}\n\nconst Card: FC<CardProps> = ({ children, onClick, href, className }) => {\n const validChildren = Children.toArray(children).filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type === CardHeader ||\n child.type === CardContent ||\n child.type === CardFooter)\n )\n\n const hasButtonElement = Children.toArray(validChildren).some((child) => {\n if (React.isValidElement(child) && child.type === CardHeader) {\n return child.props.rightElement?.type === 'button'\n }\n return false\n })\n\n if (hasButtonElement && (onClick || href)) {\n console.warn(\n 'Card: Card-level interaction (onClick/href) will be ignored when header contains a button element. ' +\n 'This prevents confusing UX with nested clickable elements.'\n )\n }\n\n const isInteractive = !hasButtonElement && Boolean(onClick || href)\n const Wrapper = href && !hasButtonElement ? 'a' : 'div'\n const wrapperProps = !hasButtonElement\n ? href\n ? { href }\n : onClick\n ? { onClick }\n : {}\n : {}\n\n return (\n <Wrapper\n className={cn(\n 'bg-card text-card-foreground relative flex h-full w-full flex-col rounded-[8px] border shadow',\n isInteractive && 'hover:bg-card/70 cursor-pointer',\n className\n )}\n {...wrapperProps}\n >\n <div className=\"p-6\">\n <Stack gap={3}>\n {validChildren.map((child) => {\n if (React.isValidElement(child) && child.type === CardFooter) {\n return null\n }\n\n return child\n })}\n </Stack>\n </div>\n {validChildren.find(\n (child) => React.isValidElement(child) && child.type === CardFooter\n )}\n </Wrapper>\n )\n}\n\nconst CardWithSubcomponents = Object.assign(Card, {\n Header: CardHeader,\n Content: CardContent,\n Footer: CardFooter,\n})\n\nexport { CardWithSubcomponents as Card }\n","import dynamicIconImports from 'lucide-react/dynamicIconImports'\nimport customDynamicIconImports from './customIcons'\n\nexport const lucideIconNames = Object.keys(\n dynamicIconImports\n) as (keyof typeof dynamicIconImports)[]\n\nexport const customIconNames = Object.keys(\n customDynamicIconImports\n) as (keyof typeof customDynamicIconImports)[]\n\nexport const iconNames = [...lucideIconNames, ...customIconNames]\n\nexport type IconName = (typeof iconNames)[number]\n","import { IconName, iconNames } from './names'\n\nconst iconNameSet = new Set(Object.values(iconNames))\n\nexport function isIconName(maybeIconName: unknown): maybeIconName is IconName {\n return (\n typeof maybeIconName === 'string' &&\n iconNameSet.has(maybeIconName as IconName)\n )\n}\n","import { cn } from '@/lib/utils'\nimport { Orientation } from '@/types'\n\nexport interface SeparatorProps {\n orientation?: Orientation\n className?: string\n}\n\nexport function Separator({\n orientation = 'horizontal',\n className,\n}: SeparatorProps) {\n return (\n <div\n className={cn(\n orientation === 'horizontal'\n ? 'bg-border h-[1px] w-full'\n : 'bg-border h-full w-[1px]',\n className\n )}\n />\n )\n}\n","import { Children, cloneElement, isValidElement } from 'react'\nimport { cn } from '@/lib/utils'\nimport './skeleton.css'\n\nexport interface SkeletonProps {\n /**\n * The children to display in the skeleton.\n * The width and content of each child will be used to determine the width of the skeleton.\n *\n * @example\n * <Skeleton>\n * <div>foo</div>\n * <div>bar</div>\n * </Skeleton>\n *\n * You can also provide no content and use classNames to style the skeleton items:\n *\n * @example\n * <Skeleton>\n * <div className=\"h-5 w-48 rounded-lg\" />\n * <div className=\"h-5 w-96 rounded-lg\" />\n * <div className=\"h-5 w-48 rounded-lg\" />\n * </Skeleton>\n */\n children: React.ReactNode\n /**\n * The class name to apply to each child.\n */\n className?: string\n}\n\nexport function Skeleton({ children, className }: SkeletonProps) {\n return (\n <div className=\"flex w-full flex-col items-start gap-2.5 select-none\">\n {Children.toArray(children).map((child, index) => {\n if (typeof child === 'string') {\n return (\n <div\n key={index}\n className=\"skeleton h-5 max-w-max min-w-36 rounded-lg text-transparent\"\n >\n {child}\n </div>\n )\n }\n\n if (isValidElement(child))\n return cloneElement<HTMLElement>(\n child as React.ReactElement<HTMLElement>,\n {\n className: cn(\n 'skeleton max-w-full text-transparent h-5 rounded-lg',\n className,\n child.props.className\n ),\n }\n )\n })}\n </div>\n )\n}\n","import * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva } from 'class-variance-authority'\n\nimport { cn } from '@/lib/utils'\nimport { BadgeVariant } from '@/types'\n\nconst BadgeLeftIcon = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center',\n className\n )}\n {...props}\n />\n))\nBadgeLeftIcon.displayName = 'BadgeLeftIcon'\n\nconst BadgeRightIcon = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span\n ref={ref}\n className={cn(\n 'inline-flex shrink-0 items-center justify-center',\n className\n )}\n {...props}\n />\n))\nBadgeRightIcon.displayName = 'BadgeRightIcon'\n\nconst BadgeIcon = BadgeLeftIcon\n\nconst BadgeText = React.forwardRef<\n HTMLSpanElement,\n React.HTMLAttributes<HTMLSpanElement>\n>(({ className, ...props }, ref) => (\n <span ref={ref} className={cn('flex-1', className)} {...props} />\n))\nBadgeText.displayName = 'BadgeText'\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center whitespace-nowrap select-none font-mono uppercase tracking-[0.03em] rounded-xs border transition-colors h-5 px-1 py-1 text-[12px] leading-[12px] gap-1 [&_svg]:size-3',\n {\n variants: {\n variant: {\n neutral: 'text-default border-neutral-softest',\n destructive: 'text-default-destructive border-destructive-softest',\n information: 'text-default-information border-information-softest',\n success: 'text-default-success border-success-softest',\n warning: 'text-default-warning border-warning-softest',\n },\n background: {\n true: '',\n false: 'bg-transparent',\n },\n },\n compoundVariants: [\n {\n variant: 'neutral',\n background: true,\n className: 'bg-surface-secondary-default',\n },\n {\n variant: 'destructive',\n background: true,\n className: 'bg-destructive-softest',\n },\n {\n variant: 'information',\n background: true,\n className: 'bg-information-softest',\n },\n {\n variant: 'success',\n background: true,\n className: 'bg-success-softest',\n },\n {\n variant: 'warning',\n background: true,\n className: 'bg-warning-softest',\n },\n ],\n defaultVariants: {\n variant: 'neutral',\n background: true,\n },\n }\n)\n\ntype Attributes = Omit<React.HTMLAttributes<HTMLSpanElement>, 'style'>\n\nexport interface BadgeProps extends Attributes {\n asChild?: boolean\n variant?: BadgeVariant\n background?: boolean\n className?: string\n 'aria-label'?: string\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = 'neutral',\n background = true,\n asChild = false,\n className,\n ...props\n },\n ref\n ) => {\n if (process.env.NODE_ENV === 'development' && !asChild) {\n const validateChildren = () => {\n if (!props.children) return\n\n const childArray = React.Children.toArray(props.children)\n const hasBadgeText = childArray.some(\n (child) =>\n (typeof child === 'string' && child.trim().length > 0) ||\n typeof child === 'number' ||\n (React.isValidElement(child) &&\n (child.type === BadgeText ||\n (child.type as { displayName?: string })?.displayName ===\n 'BadgeText'))\n )\n const hasAriaLabel = props['aria-label']\n\n if (!hasBadgeText && !hasAriaLabel) {\n console.warn(\n 'Badge: Badges should either contain Badge.Text or have an aria-label for accessibility.'\n )\n }\n\n const invalidChildren = childArray.filter((child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return false // Raw text is OK - we'll auto-wrap it\n }\n if (React.isValidElement(child)) {\n const displayName = (child.type as { displayName?: string })\n ?.displayName\n return ![\n 'BadgeText',\n 'BadgeLeftIcon',\n 'BadgeRightIcon',\n 'BadgeIcon',\n ].includes(displayName || '')\n }\n return true // Other types are invalid\n })\n\n if (invalidChildren.length > 0) {\n console.warn(\n 'Badge: Only Badge.Text, Badge.LeftIcon, Badge.RightIcon, and raw text should be used as children.'\n )\n }\n }\n\n validateChildren()\n }\n\n if (process.env.NODE_ENV === 'development') {\n const deprecatedVariants = {\n default: 'neutral',\n secondary: 'neutral',\n tertiary: 'neutral',\n danger: 'destructive',\n outline: 'neutral',\n }\n\n if (variant && variant in deprecatedVariants) {\n console.warn(\n `Badge: The variant \"${variant}\" is deprecated. Please use \"${deprecatedVariants[variant as keyof typeof deprecatedVariants]}\" instead.`\n )\n }\n }\n\n const Comp = asChild ? Slot : 'span'\n\n // Auto-wrap raw text children in Badge.Text (only when not using asChild)\n const processedChildren = React.useMemo(() => {\n if (asChild) {\n // When asChild is true, return children as-is for Slot to handle\n return props.children\n }\n\n return React.Children.map(props.children, (child) => {\n if (typeof child === 'string' || typeof child === 'number') {\n return <BadgeText>{child}</BadgeText>\n }\n return child\n })\n }, [props.children, asChild])\n\n return (\n <Comp\n className={cn(badgeVariants({ variant, background }), className)}\n ref={ref}\n {...props}\n >\n {processedChildren}\n </Comp>\n )\n }\n)\nBadge.displayName = 'Badge'\n\nconst BadgeWithCompounds = Object.assign(Badge, {\n Icon: BadgeIcon,\n LeftIcon: BadgeLeftIcon,\n RightIcon: BadgeRightIcon,\n Text: BadgeText,\n})\n\nexport {\n BadgeWithCompounds as Badge,\n BadgeIcon,\n BadgeLeftIcon,\n BadgeRightIcon,\n BadgeText,\n}\n","import React from 'react'\nimport { cn } from '../../lib/utils'\n\ntype HeadingVariant = 'xl' | 'lg' | 'md' | 'sm' | 'xs'\ntype HeadingElement = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'\n\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n children: React.ReactNode\n variant?: HeadingVariant\n as?: HeadingElement\n className?: string\n viewTransitionName?: string\n}\n\nconst variantStyles: Record<HeadingVariant, string> = {\n xl: 'text-heading-xl',\n lg: 'text-heading-lg',\n md: 'text-heading-md',\n sm: 'text-heading-sm',\n xs: 'text-heading-xs',\n}\n\nconst variantToElement: Record<HeadingVariant, HeadingElement> = {\n xl: 'h1',\n lg: 'h2',\n md: 'h3',\n sm: 'h4',\n xs: 'h5',\n}\n\nexport const Heading = React.forwardRef<HTMLElement, HeadingProps>(\n function Heading(\n {\n children,\n variant = 'md',\n as: Component = variantToElement[variant],\n className,\n viewTransitionName,\n ...props\n }: HeadingProps,\n ref\n ) {\n return (\n <Component\n {...props}\n ref={ref as React.Ref<HTMLHeadingElement>}\n className={cn(variantStyles[variant], className)}\n style={{ viewTransitionName }}\n >\n {children}\n </Component>\n )\n }\n)\n","import { cn } from '@/lib/utils'\nimport { ReactNode } from 'react'\n\nexport type TextVariant = 'lg' | 'md' | 'sm' | 'xs'\ntype TextElement = 'p' | 'span' | 'div' | 'label'\ntype TextWhitespace = 'normal' | 'nowrap'\n\nexport type TextProps = {\n children: ReactNode\n variant?: TextVariant\n muted?: boolean\n whiteSpace?: TextWhitespace\n className?: string\n} & (\n | {\n as?: Exclude<TextElement, 'label'>\n htmlFor?: never\n }\n | {\n as: 'label'\n htmlFor?: string\n }\n)\n\nconst variantStyles: Record<TextVariant, string> = {\n lg: 'text-body-lg',\n md: 'text-body-md',\n sm: 'text-body-sm',\n xs: 'text-body-xs',\n}\n\nconst whitespaceStyles: Record<TextWhitespace, string> = {\n normal: 'whitespace-normal',\n nowrap: 'whitespace-nowrap',\n}\n\nexport function Text({\n children,\n variant = 'md',\n as: Component = 'span',\n muted = false,\n whiteSpace = 'normal',\n className,\n htmlFor,\n}: TextProps) {\n return (\n <Component\n htmlFor={htmlFor}\n className={cn(\n variantStyles[variant],\n whitespaceStyles[whiteSpace],\n muted ? 'text-muted' : 'text-default',\n className\n )}\n >\n {children}\n </Component>\n )\n}\n","import { cn } from '@/lib/utils'\n\ninterface SvgProps extends React.SVGProps<SVGSVGElement> {\n muted?: boolean\n}\n\nexport function Wordmark({ className, muted, ...props }: SvgProps) {\n return (\n <svg\n aria-label=\"Speakeasy Logo\"\n xmlns=\"http://www.w3.org/2000/svg\"\n shapeRendering=\"geometricPrecision\"\n textRendering=\"optimizeLegibility\"\n viewBox={`0 0 140 24`}\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n muted ? 'text-foreground/80' : 'text-foreground dark:text-primary',\n className\n )}\n {...props}\n >\n <g opacity=\"1\">\n <path\n d=\"M16.0663 19.6857L1.58654 17.6882L0.476562 18.6229L16.0663 20.7728L22.4539 15.3926L21.3453 15.2402L16.0663 19.6857Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16.0663 16.4252L22.4539 11.045L21.3453 10.8926L16.0663 15.3367L10.8998 14.6246L3.80372 13.6467L1.58654 13.3406L0.476563 14.2753L2.69513 14.5801L0.476562 16.4481L16.0663 18.598L22.4539 13.2192L21.3453 13.0668L16.0677 17.5123L8.68123 16.4926L9.78982 15.5593L16.0663 16.4252Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16.0663 13.161L1.58654 11.1634L0.476562 12.0981L16.0663 14.248L22.4539 8.86921L21.3453 8.7168L16.0663 13.161Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M21.3453 4.36719L19.1267 6.23522L16.0663 8.81269L10.0816 7.98725L1.58654 6.81518L0.476562 7.74987L8.97158 8.92059L7.86299 9.85528L1.58515 8.98938L0.476563 9.92406L16.0663 12.074L22.4539 6.69514L20.2353 6.38897L22.4539 4.5196L21.3453 4.36719Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M22.4539 2.34523L6.86415 0.195312L0.476562 5.57415L16.0663 7.72542L22.4539 2.34523Z\"\n fill=\"currentColor\"\n />\n\n {/* Text part - hidden on mobile */}\n <g>\n <path\n d=\"M134.145 4.5619L130.755 13.5675L127.255 4.5619H124.961L129.598 16.1329L129.023 17.4425C128.86 17.831 128.719 18.1061 128.606 18.2572L128.597 18.2707C128.505 18.4244 128.384 18.5296 128.227 18.5917C128.062 18.6591 127.802 18.6928 127.455 18.6928H125.643V20.6323H128.028C128.584 20.6323 129.037 20.5447 129.377 20.372C129.719 20.198 130.008 19.9269 130.233 19.5655C130.45 19.2188 130.701 18.6955 130.978 18.009L136.439 4.56055H134.144L134.145 4.5619Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M122.859 9.75602C122.197 9.54697 121.339 9.37972 120.311 9.26103C119.585 9.17336 119.035 9.09109 118.674 9.01825C118.348 8.94947 118.078 8.81864 117.868 8.62846C117.666 8.44638 117.568 8.18742 117.568 7.83674C117.568 7.36198 117.787 6.99107 118.242 6.70109C118.704 6.39222 119.326 6.23577 120.088 6.23577C120.849 6.23577 121.459 6.42055 121.952 6.78606C122.445 7.15292 122.72 7.60341 122.793 8.16449L122.808 8.28318H124.96L124.949 8.13752C124.854 6.94521 124.35 6.01322 123.45 5.36987C122.573 4.7319 121.42 4.4082 120.02 4.4082C119.164 4.4082 118.38 4.56196 117.694 4.86408C117.002 5.15407 116.444 5.57353 116.033 6.11168C115.635 6.65253 115.434 7.27701 115.434 7.97027C115.434 8.74311 115.646 9.36488 116.067 9.82076C116.48 10.2524 117.025 10.5707 117.687 10.7703C118.333 10.9645 119.175 11.1237 120.186 11.2424C120.896 11.33 121.446 11.419 121.823 11.5067C122.192 11.589 122.494 11.7427 122.719 11.9599C122.944 12.177 123.045 12.4819 123.045 12.8878C123.045 13.3626 122.811 13.7403 122.33 14.0424C121.851 14.3378 121.205 14.4888 120.41 14.4888C119.513 14.4888 118.769 14.2811 118.201 13.8711C117.65 13.4624 117.368 12.9499 117.339 12.3038L117.333 12.1743H115.18V12.3106C115.198 13.5649 115.685 14.5589 116.636 15.2657C117.587 15.963 118.857 16.3164 120.41 16.3164C121.28 16.3164 122.084 16.1707 122.801 15.8834C123.523 15.5934 124.105 15.1753 124.532 14.6399C124.961 14.099 125.179 13.4651 125.179 12.7543C125.179 11.9383 124.96 11.2801 124.528 10.7973C124.115 10.3198 123.554 9.96913 122.861 9.75467L122.859 9.75602Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M113.81 14.0814C113.705 13.9708 113.652 13.7928 113.652 13.5554V8.65939C113.652 7.30524 113.22 6.25186 112.368 5.53297C111.536 4.80194 110.34 4.42969 108.815 4.42969C107.385 4.42969 106.202 4.75339 105.295 5.39C104.396 6.03336 103.868 6.94107 103.726 8.08617L103.708 8.23723H105.857L105.879 8.12933C105.995 7.58173 106.291 7.15822 106.785 6.83317C107.294 6.49463 107.947 6.32334 108.725 6.32334C109.604 6.32334 110.29 6.52161 110.768 6.91545C111.258 7.30793 111.497 7.84204 111.497 8.54744V9.1908H108.198C106.645 9.1908 105.436 9.50776 104.617 10.1241L104.604 10.1309C103.778 10.7634 103.359 11.682 103.359 12.8635C103.359 13.9263 103.771 14.7773 104.583 15.3964C105.399 16.0061 106.484 16.3149 107.808 16.3149C109.425 16.3149 110.706 15.7565 111.62 14.6533C111.688 15.093 111.86 15.445 112.135 15.6986C112.481 16.0182 113.053 16.1814 113.835 16.1814H115.005V14.2419H114.294C114.073 14.2419 113.915 14.1893 113.812 14.08L113.81 14.0814ZM111.495 10.9981V11.4189C111.495 12.3401 111.178 13.0928 110.554 13.6565C109.926 14.2095 109.048 14.4887 107.944 14.4887C107.199 14.4887 106.603 14.3255 106.171 14.0045C105.745 13.6876 105.538 13.2789 105.538 12.7542C105.538 12.1635 105.734 11.7346 106.135 11.4432C106.543 11.1478 107.176 10.9968 108.012 10.9968H111.495V10.9981Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M99.7186 5.09058C98.8768 4.65223 97.8988 4.42969 96.811 4.42969C95.7233 4.42969 94.7105 4.68325 93.852 5.18229C92.9935 5.66785 92.3114 6.3665 91.8279 7.26073C91.3612 8.15226 91.125 9.19889 91.125 10.3723C91.125 11.5457 91.3695 12.5775 91.8529 13.4852C92.3517 14.3781 93.056 15.0849 93.9465 15.5853C94.8342 16.0695 95.883 16.3149 97.0639 16.3149C98.4197 16.3149 99.5825 15.9373 100.523 15.1928C101.461 14.4334 102.055 13.4488 102.29 12.266L102.322 12.1055H100.145L100.117 12.2053C99.9284 12.8972 99.545 13.4488 98.9796 13.844C98.4253 14.2257 97.7349 14.4199 96.9277 14.4199C95.8872 14.4199 95.0328 14.0962 94.391 13.4596C93.7478 12.8203 93.4061 11.9531 93.3755 10.8821V10.8619H102.442L102.453 10.7378C102.483 10.3737 102.498 10.116 102.498 9.94475C102.468 8.83068 102.207 7.84339 101.725 7.01121C101.24 6.17633 100.566 5.53027 99.7214 5.08923L99.7186 5.09058ZM100.255 9.08155H93.5061C93.6186 8.28309 93.9826 7.62219 94.5869 7.11506C95.2301 6.57556 95.9858 6.30176 96.8347 6.30176C97.789 6.30176 98.5837 6.56072 99.1963 7.07055C99.7881 7.55206 100.144 8.22779 100.253 9.08155H100.255Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M91.4683 4.56429H88.8413L83.1025 10.4584V0.335938H80.9451V14.2443H79.3614C79.1405 14.2443 78.9821 14.1917 78.8793 14.0825C78.7737 13.9719 78.7209 13.7938 78.7209 13.5565V8.66046C78.7209 7.30631 78.2889 6.25293 77.4373 5.53405C76.6052 4.80302 75.4091 4.43076 73.8837 4.43076C72.4542 4.43076 71.2706 4.75446 70.3635 5.39108C69.4646 6.03443 68.9367 6.94215 68.795 8.08724L68.777 8.2383H70.9261L70.9483 8.1304C71.0636 7.58281 71.3595 7.1593 71.8541 6.83425C72.3625 6.49571 73.0155 6.32307 73.7934 6.32307C74.6728 6.32307 75.3591 6.52134 75.837 6.91517C76.3273 7.30766 76.5663 7.84042 76.5663 8.54717V9.19053H73.2669C71.7138 9.19053 70.5052 9.50748 69.6744 10.132C68.8478 10.7645 68.4297 11.683 68.4297 12.8645C68.4297 13.9274 68.8409 14.7784 69.6536 15.3975C70.469 16.0071 71.554 16.316 72.8779 16.316C74.495 16.316 75.7758 15.7576 76.6899 14.6543C76.758 15.094 76.9303 15.4447 77.2053 15.6996C77.5512 16.0193 78.1236 16.1825 78.9057 16.1825H80.9478H83.1053V13.0965L85.2877 10.8738L89.0872 16.1245L89.1289 16.1825H91.7364L86.8353 9.36182L91.4711 4.56294L91.4683 4.56429ZM71.2039 11.4443C71.6124 11.1489 72.2445 10.9979 73.0808 10.9979H76.5635V11.4187C76.5635 12.3399 76.2468 13.0925 75.623 13.6563C74.9951 14.2092 74.1171 14.4884 73.0127 14.4884C72.2681 14.4884 71.6721 14.3252 71.2401 14.0042C70.8136 13.6873 70.6066 13.2786 70.6066 12.7539C70.6066 12.1632 70.8025 11.7343 71.2039 11.4429V11.4443Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M64.7851 5.09058C63.9432 4.65223 62.9652 4.42969 61.8774 4.42969C60.7897 4.42969 59.777 4.68325 58.9184 5.18229C58.0585 5.66785 57.3778 6.3665 56.8943 7.26073C56.4276 8.15226 56.1914 9.19889 56.1914 10.3723C56.1914 11.5457 56.4359 12.5775 56.9194 13.4852C57.4181 14.3781 58.1224 15.0849 59.0129 15.5853C59.9006 16.0695 60.9495 16.3149 62.1289 16.3149C63.4848 16.3149 64.6489 15.9373 65.588 15.1928C66.5257 14.4334 67.1203 13.4488 67.3551 12.266L67.387 12.1055H65.2102L65.1824 12.2053C64.9934 12.8972 64.61 13.4488 64.0446 13.844C63.4903 14.2257 62.7999 14.4199 61.9927 14.4199C60.9522 14.4199 60.0979 14.0962 59.456 13.4596C58.8128 12.8203 58.4711 11.9531 58.4419 10.8821V10.8619H67.5079L67.519 10.7378C67.5496 10.3737 67.5649 10.116 67.5649 9.94475C67.5343 8.82933 67.2731 7.84339 66.7911 7.01121C66.3062 6.17633 65.6325 5.53027 64.7878 5.08923L64.7851 5.09058ZM65.3213 9.08155H58.5725C58.685 8.28309 59.049 7.62219 59.6533 7.11506C60.2965 6.57556 61.0522 6.30176 61.9011 6.30176C62.8554 6.30176 63.6501 6.56072 64.2627 7.07055C64.8545 7.55206 65.2102 8.22779 65.3199 9.08155H65.3213Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M52.5088 5.13644C51.6517 4.66707 50.657 4.42969 49.5526 4.42969C47.9328 4.42969 46.6158 5.02044 45.635 6.18442L45.4114 4.56321H43.5234V20.6337H45.6809V14.7301C46.0449 15.1685 46.5075 15.5313 47.059 15.8118H47.0617C47.7508 16.1477 48.5885 16.3163 49.554 16.3163C50.6445 16.3163 51.6392 16.0627 52.513 15.5637C53.3868 15.0633 54.0759 14.3565 54.5593 13.4637C55.0566 12.5721 55.3095 11.5322 55.3095 10.3737C55.3095 9.15438 55.0566 8.08482 54.5593 7.19464C54.0745 6.30041 53.3854 5.60715 52.5102 5.13778L52.5088 5.13644ZM53.1034 10.3737C53.1034 11.566 52.7533 12.5533 52.0615 13.3113C51.3891 14.049 50.4834 14.4226 49.3692 14.4226C48.6496 14.4226 47.9953 14.25 47.4257 13.9088C46.87 13.5675 46.4324 13.0847 46.1254 12.4737C45.8156 11.8425 45.6573 11.1209 45.6573 10.3292C45.6573 9.53743 45.8142 8.85361 46.124 8.25206C46.431 7.64108 46.8687 7.16497 47.4243 6.83857C47.9953 6.49733 48.6496 6.32469 49.3692 6.32469C50.4834 6.32469 51.3891 6.70639 52.0629 7.46034C52.7533 8.20216 53.1048 9.18271 53.1048 10.3737H53.1034Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M39.9217 9.75602C39.2591 9.54697 38.4019 9.37972 37.3739 9.26103C36.6488 9.17336 36.0972 9.09109 35.7361 9.01825C35.411 8.94947 35.1401 8.81864 34.9303 8.62846C34.7289 8.44638 34.6302 8.18742 34.6302 7.83674C34.6302 7.36198 34.8497 6.99107 35.304 6.70109C35.7666 6.39222 36.389 6.23577 37.1503 6.23577C37.9116 6.23577 38.5214 6.42055 39.0146 6.78606C39.5078 7.15157 39.7828 7.60341 39.8551 8.16449L39.8703 8.28318H42.0222L42.0111 8.13752C41.9166 6.94521 41.4124 6.01322 40.5122 5.36987C39.6356 4.7319 38.4825 4.4082 37.0822 4.4082C36.2264 4.4082 35.4429 4.56196 34.7567 4.86408C34.0648 5.15407 33.5064 5.57353 33.0952 6.11168C32.6979 6.65119 32.4964 7.27701 32.4964 7.97027C32.4964 8.74311 32.709 9.36488 33.1299 9.82076C33.5425 10.2524 34.0871 10.5707 34.7497 10.7703C35.3957 10.9645 36.2376 11.1237 37.2489 11.2424C37.9588 11.33 38.5089 11.419 38.8854 11.5067C39.2549 11.589 39.5564 11.7427 39.7814 11.9599C39.9981 12.1703 40.1079 12.4819 40.1079 12.8878C40.1079 13.3626 39.8731 13.7403 39.3924 14.0424C38.9132 14.3378 38.2672 14.4888 37.4726 14.4888C36.5751 14.4888 35.8319 14.2811 35.2637 13.8711C34.7122 13.4624 34.4302 12.9499 34.401 12.3038L34.3955 12.1743H32.2422V12.3106C32.2589 13.5649 32.7479 14.5589 33.6967 15.2657C34.6483 15.963 35.9194 16.3164 37.4712 16.3164C38.3408 16.3164 39.1452 16.1707 39.862 15.8834C40.5844 15.5934 41.1665 15.1753 41.593 14.6399C42.0222 14.099 42.2403 13.4638 42.2403 12.7543C42.2403 11.9383 42.0208 11.2801 41.5888 10.7973C41.1762 10.3198 40.615 9.96913 39.9204 9.75467L39.9217 9.75602Z\"\n fill=\"currentColor\"\n />\n </g>\n </g>\n </svg>\n )\n}\n\nexport function Logo({ className, muted, ...props }: SvgProps) {\n return (\n <svg\n width={24}\n height={24}\n shapeRendering=\"geometricPrecision\"\n textRendering=\"optimizeLegibility\"\n viewBox={`0 0 24 24`}\n xmlns=\"http://www.w3.org/2000/svg\"\n preserveAspectRatio=\"xMidYMid meet\"\n className={cn(\n muted\n ? 'text-foreground/80 h-[24px] w-[24px]'\n : 'dark:text-primary text-black',\n className\n )}\n {...props}\n >\n <g clipPath=\"url(#clip0)\">\n <path\n d=\"M16.0663 19.6857L1.58654 17.6882L0.476562 18.6229L16.0663 20.7728L22.4539 15.3926L21.3453 15.2402L16.0663 19.6857Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16.0663 16.4252L22.4539 11.045L21.3453 10.8926L16.0663 15.3367L10.8998 14.6246L3.80372 13.6467L1.58654 13.3406L0.476563 14.2753L2.69513 14.5801L0.476562 16.4481L16.0663 18.598L22.4539 13.2192L21.3453 13.0668L16.0677 17.5123L8.68123 16.4926L9.78982 15.5593L16.0663 16.4252Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M16.0663 13.161L1.58654 11.1634L0.476562 12.0981L16.0663 14.248L22.4539 8.86921L21.3453 8.7168L16.0663 13.161Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M21.3453 4.36719L19.1267 6.23522L16.0663 8.81269L10.0816 7.98725L1.58654 6.81518L0.476562 7.74987L8.97158 8.92059L7.86299 9.85528L1.58515 8.98938L0.476563 9.92406L16.0663 12.074L22.4539 6.69514L20.2353 6.38897L22.4539 4.5196L21.3453 4.36719Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M22.4539 2.34523L6.86415 0.195312L0.476562 5.57415L16.0663 7.72542L22.4539 2.34523Z\"\n fill=\"currentColor\"\n />\n </g>\n </svg>\n )\n}\n","import * as svgs from './svgs'\n\ntype LogoVariant = 'wordmark' | 'icon'\n\nexport interface LogoProps extends React.SVGProps<SVGSVGElement> {\n variant: LogoVariant\n muted?: boolean\n}\n\nexport function Logo({ variant, className, ...props }: LogoProps) {\n switch (variant) {\n case 'wordmark':\n return <svgs.Wordmark {...props} className={className} />\n case 'icon':\n return <svgs.Logo className={className} {...props} />\n }\n}\n","import { createContext } from 'react'\nimport { Theme } from './theme'\n\nexport interface ConfigContextType {\n /*\n * The current theme\n */\n theme: Theme\n\n /*\n * Update the current theme\n */\n setTheme: (theme: Theme) => void\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const ConfigContext = createContext<ConfigContextType | undefined>(\n undefined\n)\n\nexport interface MoonshineConfigProviderProps extends ConfigContextType {\n children: React.ReactNode\n}\n\n/**\n * Configures Speakeasy's design system, Moonshine, within a consuming application.\n *\n * @param {React.ReactNode} children - The components to be wrapped by the MoonshineConfigProvider.\n * @param {Theme} theme - The current theme\n * @param {function(Theme): void} setTheme - Function to update the theme\n * @returns {React.ReactNode} - The components wrapped by the MoonshineConfigProvider.\n */\nexport function MoonshineConfigProvider({\n children,\n theme,\n setTheme,\n}: MoonshineConfigProviderProps) {\n return (\n <ConfigContext.Provider value={{ theme, setTheme }}>\n {children}\n </ConfigContext.Provider>\n )\n}\n","import { useContext } from 'react'\nimport { ConfigContext, ConfigContextType } from '../context/ConfigContext'\n\nexport function useConfig(): ConfigContextType {\n const context = useContext(ConfigContext)\n if (!context) {\n throw new Error('useConfig must be used within a MoonshineConfigProvider')\n }\n return context\n}\n","import { useConfig } from './useConfig'\n\nexport type Theme = 'dark' | 'light'\n\n/**\n * Hook to get the current theme (light or dark) from the tailwind class element.\n * @deprecated get the theme from useMoonshineConfig\n */\nexport function useTheme() {\n const { theme } = useConfig()\n\n return theme\n}\n","import { useTheme } from '@/hooks/useTheme'\nimport { cn } from '@/lib/utils'\nimport {\n Fit,\n Layout,\n useRive,\n useViewModelInstanceBoolean,\n} from '@rive-app/react-canvas-lite'\nimport { cva } from 'class-variance-authority'\nimport { FC, useEffect, useState } from 'react'\n\n// read rive file from local directory into arraybuffer\nconst riveFile = await import('./speakeasy-logo.riv')\n\nconst stackLogoClass = cva('relative', {\n variants: {\n size: {\n xl: 'size-20',\n lg: 'size-16',\n md: 'size-8',\n sm: 'size-6',\n },\n },\n})\n\ntype Size = 'sm' | 'md' | 'lg' | 'xl'\n\ntype StateMachine = 'loop-dark' | 'loop-light'\n\nconst lettersLogoClass = cva('hidden mt-px md:block', {\n variants: {\n size: {\n xl: 'ml-4 w-[22rem] h-auto',\n lg: 'ml-3 w-[19.75rem] h-auto',\n md: 'ml-2 w-[9.75rem] h-auto',\n sm: 'ml-2 w-[8.75rem] h-auto',\n },\n },\n})\n\nexport const AnimatedLogo = ({\n className,\n size = 'md',\n variant = 'icon',\n onMouseEnter,\n onMouseLeave,\n ...rest\n}: {\n className?: string\n size?: Size\n variant?: 'icon' | 'icon-with-wordmark'\n} & React.HTMLAttributes<HTMLDivElement>) => {\n const [riveLoaded, setRiveLoaded] = useState(false)\n const theme = useTheme()\n const [stateMachine, setStateMachine] = useState<StateMachine>('loop-dark')\n const { rive, RiveComponent } = useRive({\n src: riveFile.default,\n stateMachines: stateMachine,\n autoplay: true,\n layout: new Layout({\n fit: Fit.Contain,\n }),\n onLoad: () => {\n setRiveLoaded(true)\n },\n })\n\n const { setValue: setIsHovered } = useViewModelInstanceBoolean(\n 'isHovered',\n rive?.viewModelInstance\n )\n\n useEffect(() => {\n setStateMachine(theme === 'dark' ? 'loop-dark' : 'loop-light')\n }, [theme])\n\n useEffect(() => {\n return () => {\n rive?.cleanup()\n }\n }, [rive])\n\n return (\n <div\n className={cn('flex items-center', className)}\n onMouseEnter={(e) => {\n setIsHovered(true)\n onMouseEnter?.(e)\n }}\n onMouseLeave={(e) => {\n setIsHovered(false)\n onMouseLeave?.(e)\n }}\n {...rest}\n >\n <div className={cn(stackLogoClass({ size }))}>\n <LogoSvg\n aria-hidden\n className={cn(\n 'pointer-events-none absolute top-0 left-0 size-full scale-[0.87] transition-opacity duration-100',\n {\n 'opacity-0': riveLoaded,\n }\n )}\n />\n <RiveComponent key={stateMachine} className=\"size-full\" />\n </div>\n {variant === 'icon-with-wordmark' && <WordmarkSvg size={size} />}\n </div>\n )\n}\n\nconst WordmarkSvg: FC<{ size: Size }> = ({ size = 'md' }) => (\n <>\n <p className=\"sr-only\">Speakeasy Logo</p>\n <svg\n width=\"106\"\n height=\"22\"\n viewBox=\"0 0 106 22\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={lettersLogoClass({ size })}\n >\n <path\n d=\"M102.372 4.72596L98.9819 13.7316L95.4811 4.72596H93.1875L97.8247 16.2969L97.2496 17.6066C97.087 17.995 96.9453 18.2702 96.8328 18.4212L96.8231 18.4347C96.7314 18.5885 96.6105 18.6937 96.4535 18.7557C96.2882 18.8232 96.0284 18.8569 95.6811 18.8569H93.8696V20.7964H96.2549C96.8106 20.7964 97.2634 20.7087 97.6038 20.5361C97.9455 20.3621 98.2345 20.091 98.4596 19.7295C98.6763 19.3829 98.9277 18.8596 99.2042 18.1731L104.665 4.72461H102.37L102.372 4.72596Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M91.0858 9.92009C90.4231 9.71103 89.566 9.54378 88.538 9.42509C87.8114 9.33742 87.2613 9.25515 86.9001 9.18232C86.575 9.11353 86.3041 8.9827 86.0944 8.79253C85.8929 8.61044 85.7943 8.35148 85.7943 8.00081C85.7943 7.52604 86.0138 7.15513 86.4681 6.86515C86.9307 6.55629 87.553 6.39983 88.3143 6.39983C89.0756 6.39983 89.6855 6.58461 90.1786 6.95012C90.6718 7.31699 90.9469 7.76747 91.0191 8.32855L91.0344 8.44724H93.1863L93.1752 8.30158C93.0807 7.10928 92.5764 6.17729 91.6762 5.53393C90.7996 4.89597 89.6466 4.57227 88.2463 4.57227C87.3905 4.57227 86.607 4.72602 85.9207 5.02815C85.2289 5.31813 84.6704 5.73759 84.2592 6.27575C83.8619 6.8166 83.6605 7.44107 83.6605 8.13433C83.6605 8.90717 83.873 9.52895 84.2939 9.98483C84.7065 10.4164 85.2511 10.7347 85.9138 10.9344C86.5598 11.1286 87.4016 11.2877 88.413 11.4064C89.1228 11.4941 89.673 11.5831 90.0494 11.6708C90.419 11.753 90.7204 11.9068 90.9455 12.124C91.1705 12.3411 91.272 12.6459 91.272 13.0519C91.272 13.5267 91.0372 13.9043 90.5565 14.2064C90.0772 14.5018 89.4312 14.6529 88.6366 14.6529C87.7392 14.6529 86.996 14.4452 86.4278 14.0351C85.8763 13.6265 85.5943 13.1139 85.5651 12.4679L85.5595 12.3384H83.4062V12.4746C83.4243 13.729 83.9119 14.723 84.8621 15.4298C85.8137 16.1271 87.0835 16.4804 88.6366 16.4804C89.5063 16.4804 90.3106 16.3348 91.0274 16.0475C91.7498 15.7575 92.3319 15.3394 92.7584 14.8039C93.1877 14.2631 93.4058 13.6292 93.4058 12.9184C93.4058 12.1024 93.1863 11.4442 92.7542 10.9613C92.3416 10.4839 91.7804 10.1332 91.0872 9.91874L91.0858 9.92009Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M82.037 14.2455C81.9314 14.1349 81.8786 13.9568 81.8786 13.7194V8.82345C81.8786 7.4693 81.4465 6.41592 80.595 5.69703C79.7628 4.96601 78.5667 4.59375 77.0414 4.59375C75.6119 4.59375 74.4283 4.91745 73.5211 5.55406C72.6223 6.19742 72.0944 7.10514 71.9527 8.25023L71.9346 8.40129H74.0837L74.106 8.29339C74.2213 7.74579 74.5172 7.32228 75.0117 6.99723C75.5202 6.6587 76.1731 6.4874 76.9511 6.4874C77.8304 6.4874 78.5167 6.68567 78.9946 7.07951C79.485 7.472 79.7239 8.0061 79.7239 8.7115V9.35486H76.4246C74.8714 9.35486 73.6628 9.67182 72.8432 10.2882L72.8307 10.2949C72.0041 10.9275 71.5859 11.846 71.5859 13.0275C71.5859 14.0903 71.9971 14.9414 72.8098 15.5605C73.6253 16.1701 74.7103 16.479 76.0342 16.479C77.6512 16.479 78.9321 15.9206 79.8462 14.8173C79.9142 15.257 80.0865 15.609 80.3616 15.8626C80.7075 16.1823 81.2798 16.3455 82.062 16.3455H83.2317V14.406H82.5204C82.2995 14.406 82.1412 14.3534 82.0384 14.2441L82.037 14.2455ZM79.7211 11.1622V11.583C79.7211 12.5042 79.4044 13.2568 78.7807 13.8206C78.1527 14.3736 77.2747 14.6528 76.1703 14.6528C75.4257 14.6528 74.8297 14.4896 74.3977 14.1686C73.9712 13.8516 73.7642 13.4429 73.7642 12.9183C73.7642 12.3275 73.9601 11.8986 74.3616 11.6073C74.77 11.3119 75.4021 11.1608 76.2384 11.1608H79.7211V11.1622Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M67.9452 5.25464C67.1033 4.8163 66.1253 4.59375 65.0376 4.59375C63.9498 4.59375 62.9371 4.84732 62.0786 5.34636C61.22 5.83191 60.5379 6.53056 60.0545 7.42479C59.5877 8.31632 59.3516 9.36295 59.3516 10.5364C59.3516 11.7098 59.5961 12.7416 60.0795 13.6493C60.5782 14.5422 61.2826 15.2489 62.173 15.7493C63.0608 16.2335 64.1096 16.479 65.2904 16.479C66.6463 16.479 67.8091 16.1013 68.7496 15.3568C69.6873 14.5975 70.2819 13.6129 70.5166 12.43L70.5486 12.2695H68.3717L68.3439 12.3693C68.155 13.0612 67.7716 13.6129 67.2062 14.0081C66.6519 14.3898 65.9614 14.584 65.1543 14.584C64.1138 14.584 63.2594 14.2603 62.6176 13.6237C61.9744 12.9844 61.6326 12.1171 61.6021 11.0462V11.026H70.6681L70.6792 10.9019C70.7097 10.5377 70.725 10.2801 70.725 10.1088C70.6945 8.99474 70.4333 8.00745 69.9512 7.17527C69.4664 6.34039 68.7926 5.69434 67.948 5.25329L67.9452 5.25464ZM68.4814 9.24561H61.7327C61.8452 8.44715 62.2092 7.78626 62.8135 7.27912C63.4567 6.73962 64.2124 6.46582 65.0612 6.46582C66.0156 6.46582 66.8102 6.72479 67.4229 7.23462C68.0147 7.71612 68.3703 8.39185 68.4801 9.24561H68.4814Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M59.6949 4.72835H57.0679L51.3291 10.6224V0.5H49.1716V14.4084H47.5879C47.3671 14.4084 47.2087 14.3558 47.1059 14.2465C47.0003 14.1359 46.9475 13.9579 46.9475 13.7205V8.82453C46.9475 7.47037 46.5155 6.417 45.6639 5.69811C44.8317 4.96708 43.6356 4.59483 42.1103 4.59483C40.6808 4.59483 39.4972 4.91853 38.59 5.55514C37.6912 6.1985 37.1633 7.10621 37.0216 8.2513L37.0036 8.40237H39.1527L39.1749 8.29447C39.2902 7.74687 39.5861 7.32336 40.0806 6.99831C40.5891 6.65977 41.242 6.48713 42.02 6.48713C42.8994 6.48713 43.5856 6.6854 44.0635 7.07924C44.5539 7.47172 44.7928 8.00448 44.7928 8.71123V9.35459H41.4935C39.9403 9.35459 38.7317 9.67155 37.901 10.296C37.0744 10.9286 36.6562 11.8471 36.6562 13.0286C36.6562 14.0914 37.0675 14.9425 37.8801 15.5616C38.6956 16.1712 39.7806 16.4801 41.1045 16.4801C42.7215 16.4801 44.0024 15.9217 44.9165 14.8184C44.9846 15.2581 45.1568 15.6088 45.4319 15.8637C45.7778 16.1833 46.3501 16.3465 47.1323 16.3465H49.1744H51.3319V13.2606L53.5143 11.0378L57.3138 16.2885L57.3555 16.3465H59.963L55.0619 9.52588L59.6977 4.727L59.6949 4.72835ZM39.4305 11.6084C39.8389 11.313 40.471 11.1619 41.3073 11.1619H44.7901V11.5827C44.7901 12.5039 44.4733 13.2565 43.8496 13.8203C43.2216 14.3733 42.3437 14.6525 41.2392 14.6525C40.4946 14.6525 39.8987 14.4893 39.4666 14.1683C39.0401 13.8513 38.8331 13.4427 38.8331 12.918C38.8331 12.3272 39.029 11.8983 39.4305 11.607V11.6084Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M33.0116 5.25464C32.1698 4.8163 31.1918 4.59375 30.104 4.59375C29.0163 4.59375 28.0035 4.84732 27.145 5.34636C26.2851 5.83191 25.6044 6.53056 25.1209 7.42479C24.6541 8.31632 24.418 9.36295 24.418 10.5364C24.418 11.7098 24.6625 12.7416 25.1459 13.6493C25.6446 14.5422 26.349 15.2489 27.2395 15.7493C28.1272 16.2335 29.176 16.479 30.3555 16.479C31.7113 16.479 32.8755 16.1013 33.8146 15.3568C34.7523 14.5975 35.3469 13.6129 35.5817 12.43L35.6136 12.2695H33.4367L33.4089 12.3693C33.22 13.0612 32.8366 13.6129 32.2712 14.0081C31.7169 14.3898 31.0264 14.584 30.2193 14.584C29.1788 14.584 28.3244 14.2603 27.6826 13.6237C27.0394 12.9844 26.6977 12.1171 26.6685 11.0462V11.026H35.7345L35.7456 10.9019C35.7761 10.5377 35.7914 10.2801 35.7914 10.1088C35.7609 8.99339 35.4997 8.00745 35.0176 7.17527C34.5328 6.34039 33.859 5.69434 33.0144 5.25329L33.0116 5.25464ZM33.5479 9.24561H26.7991C26.9116 8.44715 27.2756 7.78626 27.8799 7.27912C28.5231 6.73962 29.2788 6.46582 30.1276 6.46582C31.082 6.46582 31.8766 6.72479 32.4893 7.23462C33.0811 7.71612 33.4367 8.39185 33.5465 9.24561H33.5479Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M20.7354 5.3005C19.8783 4.83113 18.8836 4.59375 17.7792 4.59375C16.1593 4.59375 14.8424 5.18451 13.8616 6.34848L13.6379 4.72728H11.75V20.7977H13.9074V14.8942C14.2714 15.3326 14.734 15.6954 15.2855 15.9759H15.2883C15.9774 16.3118 16.8151 16.4803 17.7806 16.4803C18.8711 16.4803 19.8658 16.2268 20.7396 15.7277C21.6134 15.2274 22.3024 14.5206 22.7859 13.6277C23.2832 12.7362 23.5361 11.6963 23.5361 10.5377C23.5361 9.31845 23.2832 8.24888 22.7859 7.3587C22.301 6.46448 21.612 5.77121 20.7368 5.30185L20.7354 5.3005ZM21.33 10.5377C21.33 11.73 20.9799 12.7173 20.2881 13.4753C19.6157 14.2131 18.7099 14.5867 17.5958 14.5867C16.8762 14.5867 16.2219 14.414 15.6523 14.0728C15.0966 13.7316 14.659 13.2487 14.352 12.6377C14.0422 12.0065 13.8838 11.2849 13.8838 10.4932C13.8838 9.70149 14.0408 9.01767 14.3506 8.41613C14.6576 7.80514 15.0952 7.32903 15.6509 7.00263C16.2219 6.66139 16.8762 6.48875 17.5958 6.48875C18.7099 6.48875 19.6157 6.87045 20.2895 7.62441C20.9799 8.36622 21.3314 9.34677 21.3314 10.5377H21.33Z\"\n fill=\"var(--foreground)\"\n />\n <path\n d=\"M8.1483 9.92009C7.48565 9.71103 6.6285 9.54378 5.60049 9.42509C4.87532 9.33742 4.32381 9.25515 3.96261 9.18232C3.63754 9.11353 3.36664 8.9827 3.15687 8.79253C2.95544 8.61044 2.8568 8.35148 2.8568 8.00081C2.8568 7.52604 3.0763 7.15513 3.53057 6.86515C3.99318 6.55629 4.61554 6.39983 5.37683 6.39983C6.13812 6.39983 6.74798 6.58461 7.24115 6.95012C7.73431 7.31564 8.00938 7.76747 8.08162 8.32855L8.0969 8.44724H10.2488L10.2377 8.30158C10.1432 7.10928 9.63892 6.17729 8.73871 5.53393C7.86212 4.89597 6.70908 4.57227 5.30875 4.57227C4.453 4.57227 3.66949 4.72602 2.98322 5.02815C2.29139 5.31813 1.73293 5.73759 1.32173 6.27575C0.924413 6.81525 0.722976 7.44107 0.722976 8.13433C0.722976 8.90717 0.935526 9.52895 1.35646 9.98483C1.76905 10.4164 2.31362 10.7347 2.97627 10.9344C3.62226 11.1286 4.46412 11.2877 5.47546 11.4064C6.18535 11.4941 6.73547 11.5831 7.11195 11.6708C7.48148 11.753 7.78294 11.9068 8.00799 12.124C8.22471 12.3344 8.33445 12.6459 8.33445 13.0519C8.33445 13.5267 8.09968 13.9043 7.61901 14.2064C7.13973 14.5018 6.49375 14.6529 5.69912 14.6529C4.80169 14.6529 4.05847 14.4452 3.49028 14.0351C2.93876 13.6265 2.65676 13.1139 2.62758 12.4679L2.62202 12.3384H0.46875V12.4746C0.485421 13.729 0.974422 14.723 1.92325 15.4298C2.87486 16.1271 4.14599 16.4804 5.69774 16.4804C6.56738 16.4804 7.37173 16.3348 8.08856 16.0475C8.81095 15.7575 9.39303 15.3394 9.81952 14.8039C10.2488 14.2631 10.4669 13.6278 10.4669 12.9184C10.4669 12.1024 10.2474 11.4442 9.81535 10.9613C9.40276 10.4839 8.84152 10.1332 8.14691 9.91874L8.1483 9.92009Z\"\n fill=\"var(--foreground)\"\n />\n </svg>\n </>\n)\n\nconst LogoSvg: FC<JSX.IntrinsicElements['svg']> = (props) => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"30\"\n height=\"30\"\n viewBox=\"0 0 30 30\"\n fill=\"none\"\n {...props}\n >\n <title>Speakeasy Logo</title>\n <path\n fill=\"var(--foreground)\"\n d=\"m20.639 27.548-19.17-2.724L0 26.1l20.639 2.931 8.456-7.336-1.468-.208-6.988 6.062Z\"\n />\n <path\n fill=\"var(--foreground)\"\n d=\"m20.639 23.1 8.456-7.336-1.468-.207-6.988 6.06-6.84-.972-9.394-1.333-2.936-.417L0 20.169l2.937.416L0 23.132l20.639 2.931 8.456-7.334-1.468-.208-6.986 6.062-9.78-1.39 1.468-1.273 8.31 1.18Z\"\n />\n <path\n fill=\"var(--foreground)\"\n d=\"m20.639 18.65-19.17-2.724L0 17.201l20.639 2.931 8.456-7.334-1.468-.208-6.988 6.06Z\"\n />\n <path\n fill=\"var(--foreground)\"\n d=\"M27.627 6.658 24.69 9.205 20.64 12.72l-7.923-1.126L1.469 9.996 0 11.271l11.246 1.596-1.467 1.275-8.311-1.181L0 14.235l20.639 2.932 8.456-7.334-2.937-.418 2.937-2.549-1.468-.208Z\"\n />\n <path\n fill=\"var(--foreground)\"\n d=\"M29.095 3.902 8.456.971 0 8.305l20.639 2.934 8.456-7.337Z\"\n />\n </svg>\n )\n}\n","import { paddingMapper } from '@/lib/responsiveMappers'\nimport { cn, getResponsiveClasses } from '@/lib/utils'\nimport { Padding, ResponsiveValue } from '@/types'\nimport { ReactNode } from 'react'\n\nexport interface ContainerProps {\n children: ReactNode\n flex?: boolean\n padding?: ResponsiveValue<Padding>\n className?: string\n}\n\nexport function Container({\n children,\n flex = false,\n padding,\n className,\n}: ContainerProps) {\n return (\n <div\n className={cn(\n 'container h-full w-full md:mx-auto',\n flex && 'flex',\n padding && getResponsiveClasses(padding, paddingMapper),\n className\n )}\n >\n {children}\n </div>\n )\n}\n","var U=1,Y=.9,H=.8,J=.17,p=.1,u=.999,$=.9999;var k=.99,m=/[\\\\\\/_+.#\"@\\[\\(\\{&]/,B=/[\\\\\\/_+.#\"@\\[\\(\\{&]/g,K=/[\\s-]/,X=/[\\s-]/g;function G(_,C,h,P,A,f,O){if(f===C.length)return A===_.length?U:k;var T=`${A},${f}`;if(O[T]!==void 0)return O[T];for(var L=P.charAt(f),c=h.indexOf(L,A),S=0,E,N,R,M;c>=0;)E=G(_,C,h,P,c+1,f+1,O),E>S&&(c===A?E*=U:m.test(_.charAt(c-1))?(E*=H,R=_.slice(A,c-1).match(B),R&&A>0&&(E*=Math.pow(u,R.length))):K.test(_.charAt(c-1))?(E*=Y,M=_.slice(A,c-1).match(X),M&&A>0&&(E*=Math.pow(u,M.length))):(E*=J,A>0&&(E*=Math.pow(u,c-A))),_.charAt(c)!==C.charAt(f)&&(E*=$)),(E<p&&h.charAt(c-1)===P.charAt(f+1)||P.charAt(f+1)===P.charAt(f)&&h.charAt(c-1)!==P.charAt(f))&&(N=G(_,C,h,P,c+1,f+2,O),N*p>E&&(E=N*p)),E>S&&(S=E),c=h.indexOf(L,c+1);return O[T]=S,S}function D(_){return _.toLowerCase().replace(X,\" \")}function W(_,C,h){return _=h&&h.length>0?`${_+\" \"+h.join(\" \")}`:_,G(_,C,D(_),D(C),0,0,{})}export{W as a};\n","// packages/core/primitive/src/primitive.tsx\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nexport {\n composeEventHandlers\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/createContext.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/useLayoutEffect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = Boolean(globalThis?.document) ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\"useId\".toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/useCallbackRef.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-controllable-state/src/useControllableState.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n }\n}) {\n const [uncontrolledProp, setUncontrolledProp] = useUncontrolledState({ defaultProp, onChange });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n const handleChange = useCallbackRef(onChange);\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const setter = nextValue;\n const value2 = typeof nextValue === \"function\" ? setter(prop) : nextValue;\n if (value2 !== prop) handleChange(value2);\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, handleChange]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const uncontrolledState = React.useState(defaultProp);\n const [value] = uncontrolledState;\n const prevValueRef = React.useRef(value);\n const handleChange = useCallbackRef(onChange);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n handleChange(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef, handleChange]);\n return uncontrolledState;\n}\nexport {\n useControllableState\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/primitive/src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar 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];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/useEscapeKeydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/dismissable-layer/src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-scope/src/focus-scope.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { jsx } from \"react/jsx-runtime\";\nvar AUTOFOCUS_ON_MOUNT = \"focusScope.autoFocusOnMount\";\nvar AUTOFOCUS_ON_UNMOUNT = \"focusScope.autoFocusOnUnmount\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar FOCUS_SCOPE_NAME = \"FocusScope\";\nvar FocusScope = React.forwardRef((props, forwardedRef) => {\n const {\n loop = false,\n trapped = false,\n onMountAutoFocus: onMountAutoFocusProp,\n onUnmountAutoFocus: onUnmountAutoFocusProp,\n ...scopeProps\n } = props;\n const [container, setContainer] = React.useState(null);\n const onMountAutoFocus = useCallbackRef(onMountAutoFocusProp);\n const onUnmountAutoFocus = useCallbackRef(onUnmountAutoFocusProp);\n const lastFocusedElementRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContainer(node));\n const focusScope = React.useRef({\n paused: false,\n pause() {\n this.paused = true;\n },\n resume() {\n this.paused = false;\n }\n }).current;\n React.useEffect(() => {\n if (trapped) {\n let handleFocusIn2 = function(event) {\n if (focusScope.paused || !container) return;\n const target = event.target;\n if (container.contains(target)) {\n lastFocusedElementRef.current = target;\n } else {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleFocusOut2 = function(event) {\n if (focusScope.paused || !container) return;\n const relatedTarget = event.relatedTarget;\n if (relatedTarget === null) return;\n if (!container.contains(relatedTarget)) {\n focus(lastFocusedElementRef.current, { select: true });\n }\n }, handleMutations2 = function(mutations) {\n const focusedElement = document.activeElement;\n if (focusedElement !== document.body) return;\n for (const mutation of mutations) {\n if (mutation.removedNodes.length > 0) focus(container);\n }\n };\n var handleFocusIn = handleFocusIn2, handleFocusOut = handleFocusOut2, handleMutations = handleMutations2;\n document.addEventListener(\"focusin\", handleFocusIn2);\n document.addEventListener(\"focusout\", handleFocusOut2);\n const mutationObserver = new MutationObserver(handleMutations2);\n if (container) mutationObserver.observe(container, { childList: true, subtree: true });\n return () => {\n document.removeEventListener(\"focusin\", handleFocusIn2);\n document.removeEventListener(\"focusout\", handleFocusOut2);\n mutationObserver.disconnect();\n };\n }\n }, [trapped, container, focusScope.paused]);\n React.useEffect(() => {\n if (container) {\n focusScopesStack.add(focusScope);\n const previouslyFocusedElement = document.activeElement;\n const hasFocusedCandidate = container.contains(previouslyFocusedElement);\n if (!hasFocusedCandidate) {\n const mountEvent = new CustomEvent(AUTOFOCUS_ON_MOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n container.dispatchEvent(mountEvent);\n if (!mountEvent.defaultPrevented) {\n focusFirst(removeLinks(getTabbableCandidates(container)), { select: true });\n if (document.activeElement === previouslyFocusedElement) {\n focus(container);\n }\n }\n }\n return () => {\n container.removeEventListener(AUTOFOCUS_ON_MOUNT, onMountAutoFocus);\n setTimeout(() => {\n const unmountEvent = new CustomEvent(AUTOFOCUS_ON_UNMOUNT, EVENT_OPTIONS);\n container.addEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n container.dispatchEvent(unmountEvent);\n if (!unmountEvent.defaultPrevented) {\n focus(previouslyFocusedElement ?? document.body, { select: true });\n }\n container.removeEventListener(AUTOFOCUS_ON_UNMOUNT, onUnmountAutoFocus);\n focusScopesStack.remove(focusScope);\n }, 0);\n };\n }\n }, [container, onMountAutoFocus, onUnmountAutoFocus, focusScope]);\n const handleKeyDown = React.useCallback(\n (event) => {\n if (!loop && !trapped) return;\n if (focusScope.paused) return;\n const isTabKey = event.key === \"Tab\" && !event.altKey && !event.ctrlKey && !event.metaKey;\n const focusedElement = document.activeElement;\n if (isTabKey && focusedElement) {\n const container2 = event.currentTarget;\n const [first, last] = getTabbableEdges(container2);\n const hasTabbableElementsInside = first && last;\n if (!hasTabbableElementsInside) {\n if (focusedElement === container2) event.preventDefault();\n } else {\n if (!event.shiftKey && focusedElement === last) {\n event.preventDefault();\n if (loop) focus(first, { select: true });\n } else if (event.shiftKey && focusedElement === first) {\n event.preventDefault();\n if (loop) focus(last, { select: true });\n }\n }\n }\n },\n [loop, trapped, focusScope.paused]\n );\n return /* @__PURE__ */ jsx(Primitive.div, { tabIndex: -1, ...scopeProps, ref: composedRefs, onKeyDown: handleKeyDown });\n});\nFocusScope.displayName = FOCUS_SCOPE_NAME;\nfunction focusFirst(candidates, { select = false } = {}) {\n const previouslyFocusedElement = document.activeElement;\n for (const candidate of candidates) {\n focus(candidate, { select });\n if (document.activeElement !== previouslyFocusedElement) return;\n }\n}\nfunction getTabbableEdges(container) {\n const candidates = getTabbableCandidates(container);\n const first = findVisible(candidates, container);\n const last = findVisible(candidates.reverse(), container);\n return [first, last];\n}\nfunction getTabbableCandidates(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n const isHiddenInput = node.tagName === \"INPUT\" && node.type === \"hidden\";\n if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nfunction findVisible(elements, container) {\n for (const element of elements) {\n if (!isHidden(element, { upTo: container })) return element;\n }\n}\nfunction isHidden(node, { upTo }) {\n if (getComputedStyle(node).visibility === \"hidden\") return true;\n while (node) {\n if (upTo !== void 0 && node === upTo) return false;\n if (getComputedStyle(node).display === \"none\") return true;\n node = node.parentElement;\n }\n return false;\n}\nfunction isSelectableInput(element) {\n return element instanceof HTMLInputElement && \"select\" in element;\n}\nfunction focus(element, { select = false } = {}) {\n if (element && element.focus) {\n const previouslyFocusedElement = document.activeElement;\n element.focus({ preventScroll: true });\n if (element !== previouslyFocusedElement && isSelectableInput(element) && select)\n element.select();\n }\n}\nvar focusScopesStack = createFocusScopesStack();\nfunction createFocusScopesStack() {\n let stack = [];\n return {\n add(focusScope) {\n const activeFocusScope = stack[0];\n if (focusScope !== activeFocusScope) {\n activeFocusScope?.pause();\n }\n stack = arrayRemove(stack, focusScope);\n stack.unshift(focusScope);\n },\n remove(focusScope) {\n stack = arrayRemove(stack, focusScope);\n stack[0]?.resume();\n }\n };\n}\nfunction arrayRemove(array, item) {\n const updatedArray = [...array];\n const index = updatedArray.indexOf(item);\n if (index !== -1) {\n updatedArray.splice(index, 1);\n }\n return updatedArray;\n}\nfunction removeLinks(items) {\n return items.filter((item) => item.tagName !== \"A\");\n}\nvar Root = FocusScope;\nexport {\n FocusScope,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/portal/src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/presence/src/Presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// packages/react/presence/src/useStateMachine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// packages/react/presence/src/Presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef({});\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"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 React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(event.animationName);\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\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 ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n if (node2) stylesRef.current = getComputedStyle(node2);\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Presence\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/focus-guards/src/FocusGuards.tsx\nimport * as React from \"react\";\nvar count = 0;\nfunction FocusGuards(props) {\n useFocusGuards();\n return props.children;\n}\nfunction useFocusGuards() {\n React.useEffect(() => {\n const edgeGuards = document.querySelectorAll(\"[data-radix-focus-guard]\");\n document.body.insertAdjacentElement(\"afterbegin\", edgeGuards[0] ?? createFocusGuard());\n document.body.insertAdjacentElement(\"beforeend\", edgeGuards[1] ?? createFocusGuard());\n count++;\n return () => {\n if (count === 1) {\n document.querySelectorAll(\"[data-radix-focus-guard]\").forEach((node) => node.remove());\n }\n count--;\n };\n }, []);\n}\nfunction createFocusGuard() {\n const element = document.createElement(\"span\");\n element.setAttribute(\"data-radix-focus-guard\", \"\");\n element.tabIndex = 0;\n element.style.outline = \"none\";\n element.style.opacity = \"0\";\n element.style.position = \"fixed\";\n element.style.pointerEvents = \"none\";\n return element;\n}\nvar Root = FocusGuards;\nexport {\n FocusGuards,\n Root,\n useFocusGuards\n};\n//# sourceMappingURL=index.mjs.map\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","export var zeroRightClassName = 'right-scroll-bar-position';\nexport var fullWidthClassName = 'width-before-scroll-bar';\nexport var noScrollbarsClassName = 'with-scroll-bars-hidden';\n/**\n * Name of a CSS variable containing the amount of \"hidden\" scrollbar\n * ! might be undefined ! use will fallback!\n */\nexport var removedBarSizeVariable = '--removed-body-scroll-bar-size';\n","/**\n * Assigns a value for a given ref, no matter of the ref format\n * @param {RefObject} ref - a callback function or ref object\n * @param value - a new value\n *\n * @see https://github.com/theKashey/use-callback-ref#assignref\n * @example\n * const refObject = useRef();\n * const refFn = (ref) => {....}\n *\n * assignRef(refObject, \"refValue\");\n * assignRef(refFn, \"refValue\");\n */\nexport function assignRef(ref, value) {\n if (typeof ref === 'function') {\n ref(value);\n }\n else if (ref) {\n ref.current = value;\n }\n return ref;\n}\n","import { useState } from 'react';\n/**\n * creates a MutableRef with ref change callback\n * @param initialValue - initial ref value\n * @param {Function} callback - a callback to run when value changes\n *\n * @example\n * const ref = useCallbackRef(0, (newValue, oldValue) => console.log(oldValue, '->', newValue);\n * ref.current = 1;\n * // prints 0 -> 1\n *\n * @see https://reactjs.org/docs/hooks-reference.html#useref\n * @see https://github.com/theKashey/use-callback-ref#usecallbackref---to-replace-reactuseref\n * @returns {MutableRefObject}\n */\nexport function useCallbackRef(initialValue, callback) {\n var ref = useState(function () { return ({\n // value\n value: initialValue,\n // last callback\n callback: callback,\n // \"memoized\" public interface\n facade: {\n get current() {\n return ref.value;\n },\n set current(value) {\n var last = ref.value;\n if (last !== value) {\n ref.value = value;\n ref.callback(value, last);\n }\n },\n },\n }); })[0];\n // update callback\n ref.callback = callback;\n return ref.facade;\n}\n","import * as React from 'react';\nimport { assignRef } from './assignRef';\nimport { useCallbackRef } from './useRef';\nvar useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\nvar currentValues = new WeakMap();\n/**\n * Merges two or more refs together providing a single interface to set their value\n * @param {RefObject|Ref} refs\n * @returns {MutableRefObject} - a new ref, which translates all changes to {refs}\n *\n * @see {@link mergeRefs} a version without buit-in memoization\n * @see https://github.com/theKashey/use-callback-ref#usemergerefs\n * @example\n * const Component = React.forwardRef((props, ref) => {\n * const ownRef = useRef();\n * const domRef = useMergeRefs([ref, ownRef]); // 👈 merge together\n * return <div ref={domRef}>...</div>\n * }\n */\nexport function useMergeRefs(refs, defaultValue) {\n var callbackRef = useCallbackRef(defaultValue || null, function (newValue) {\n return refs.forEach(function (ref) { return assignRef(ref, newValue); });\n });\n // handle refs changes - added or removed\n useIsomorphicLayoutEffect(function () {\n var oldValue = currentValues.get(callbackRef);\n if (oldValue) {\n var prevRefs_1 = new Set(oldValue);\n var nextRefs_1 = new Set(refs);\n var current_1 = callbackRef.current;\n prevRefs_1.forEach(function (ref) {\n if (!nextRefs_1.has(ref)) {\n assignRef(ref, null);\n }\n });\n nextRefs_1.forEach(function (ref) {\n if (!prevRefs_1.has(ref)) {\n assignRef(ref, current_1);\n }\n });\n }\n currentValues.set(callbackRef, refs);\n }, [refs]);\n return callbackRef;\n}\n","import { __assign } from \"tslib\";\nfunction ItoI(a) {\n return a;\n}\nfunction innerCreateMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n var buffer = [];\n var assigned = false;\n var medium = {\n read: function () {\n if (assigned) {\n throw new Error('Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.');\n }\n if (buffer.length) {\n return buffer[buffer.length - 1];\n }\n return defaults;\n },\n useMedium: function (data) {\n var item = middleware(data, assigned);\n buffer.push(item);\n return function () {\n buffer = buffer.filter(function (x) { return x !== item; });\n };\n },\n assignSyncMedium: function (cb) {\n assigned = true;\n while (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n }\n buffer = {\n push: function (x) { return cb(x); },\n filter: function () { return buffer; },\n };\n },\n assignMedium: function (cb) {\n assigned = true;\n var pendingQueue = [];\n if (buffer.length) {\n var cbs = buffer;\n buffer = [];\n cbs.forEach(cb);\n pendingQueue = buffer;\n }\n var executeQueue = function () {\n var cbs = pendingQueue;\n pendingQueue = [];\n cbs.forEach(cb);\n };\n var cycle = function () { return Promise.resolve().then(executeQueue); };\n cycle();\n buffer = {\n push: function (x) {\n pendingQueue.push(x);\n cycle();\n },\n filter: function (filter) {\n pendingQueue = pendingQueue.filter(filter);\n return buffer;\n },\n };\n },\n };\n return medium;\n}\nexport function createMedium(defaults, middleware) {\n if (middleware === void 0) { middleware = ItoI; }\n return innerCreateMedium(defaults, middleware);\n}\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function createSidecarMedium(options) {\n if (options === void 0) { options = {}; }\n var medium = innerCreateMedium(null);\n medium.options = __assign({ async: true, ssr: false }, options);\n return medium;\n}\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nvar SideCar = function (_a) {\n var sideCar = _a.sideCar, rest = __rest(_a, [\"sideCar\"]);\n if (!sideCar) {\n throw new Error('Sidecar: please provide `sideCar` property to import the right car');\n }\n var Target = sideCar.read();\n if (!Target) {\n throw new Error('Sidecar medium not found');\n }\n return React.createElement(Target, __assign({}, rest));\n};\nSideCar.isSideCarExport = true;\nexport function exportSidecar(medium, exported) {\n medium.useMedium(exported);\n return SideCar;\n}\n","import { createSidecarMedium } from 'use-sidecar';\nexport var effectCar = createSidecarMedium();\n","import { __assign, __rest } from \"tslib\";\nimport * as React from 'react';\nimport { fullWidthClassName, zeroRightClassName } from 'react-remove-scroll-bar/constants';\nimport { useMergeRefs } from 'use-callback-ref';\nimport { effectCar } from './medium';\nvar nothing = function () {\n return;\n};\n/**\n * Removes scrollbar from the page and contain the scroll within the Lock\n */\nvar RemoveScroll = React.forwardRef(function (props, parentRef) {\n var ref = React.useRef(null);\n var _a = React.useState({\n onScrollCapture: nothing,\n onWheelCapture: nothing,\n onTouchMoveCapture: nothing,\n }), callbacks = _a[0], setCallbacks = _a[1];\n var forwardProps = props.forwardProps, children = props.children, className = props.className, removeScrollBar = props.removeScrollBar, enabled = props.enabled, shards = props.shards, sideCar = props.sideCar, noIsolation = props.noIsolation, inert = props.inert, allowPinchZoom = props.allowPinchZoom, _b = props.as, Container = _b === void 0 ? 'div' : _b, gapMode = props.gapMode, rest = __rest(props, [\"forwardProps\", \"children\", \"className\", \"removeScrollBar\", \"enabled\", \"shards\", \"sideCar\", \"noIsolation\", \"inert\", \"allowPinchZoom\", \"as\", \"gapMode\"]);\n var SideCar = sideCar;\n var containerRef = useMergeRefs([ref, parentRef]);\n var containerProps = __assign(__assign({}, rest), callbacks);\n return (React.createElement(React.Fragment, null,\n enabled && (React.createElement(SideCar, { sideCar: effectCar, removeScrollBar: removeScrollBar, shards: shards, noIsolation: noIsolation, inert: inert, setCallbacks: setCallbacks, allowPinchZoom: !!allowPinchZoom, lockRef: ref, gapMode: gapMode })),\n forwardProps ? (React.cloneElement(React.Children.only(children), __assign(__assign({}, containerProps), { ref: containerRef }))) : (React.createElement(Container, __assign({}, containerProps, { className: className, ref: containerRef }), children))));\n});\nRemoveScroll.defaultProps = {\n enabled: true,\n removeScrollBar: true,\n inert: false,\n};\nRemoveScroll.classNames = {\n fullWidth: fullWidthClassName,\n zeroRight: zeroRightClassName,\n};\nexport { RemoveScroll };\n","var currentNonce;\nexport var setNonce = function (nonce) {\n currentNonce = nonce;\n};\nexport var getNonce = function () {\n if (currentNonce) {\n return currentNonce;\n }\n if (typeof __webpack_nonce__ !== 'undefined') {\n return __webpack_nonce__;\n }\n return undefined;\n};\n","import { getNonce } from 'get-nonce';\nfunction makeStyleTag() {\n if (!document)\n return null;\n var tag = document.createElement('style');\n tag.type = 'text/css';\n var nonce = getNonce();\n if (nonce) {\n tag.setAttribute('nonce', nonce);\n }\n return tag;\n}\nfunction injectStyles(tag, css) {\n // @ts-ignore\n if (tag.styleSheet) {\n // @ts-ignore\n tag.styleSheet.cssText = css;\n }\n else {\n tag.appendChild(document.createTextNode(css));\n }\n}\nfunction insertStyleTag(tag) {\n var head = document.head || document.getElementsByTagName('head')[0];\n head.appendChild(tag);\n}\nexport var stylesheetSingleton = function () {\n var counter = 0;\n var stylesheet = null;\n return {\n add: function (style) {\n if (counter == 0) {\n if ((stylesheet = makeStyleTag())) {\n injectStyles(stylesheet, style);\n insertStyleTag(stylesheet);\n }\n }\n counter++;\n },\n remove: function () {\n counter--;\n if (!counter && stylesheet) {\n stylesheet.parentNode && stylesheet.parentNode.removeChild(stylesheet);\n stylesheet = null;\n }\n },\n };\n};\n","import * as React from 'react';\nimport { stylesheetSingleton } from './singleton';\n/**\n * creates a hook to control style singleton\n * @see {@link styleSingleton} for a safer component version\n * @example\n * ```tsx\n * const useStyle = styleHookSingleton();\n * ///\n * useStyle('body { overflow: hidden}');\n */\nexport var styleHookSingleton = function () {\n var sheet = stylesheetSingleton();\n return function (styles, isDynamic) {\n React.useEffect(function () {\n sheet.add(styles);\n return function () {\n sheet.remove();\n };\n }, [styles && isDynamic]);\n };\n};\n","import { styleHookSingleton } from './hook';\n/**\n * create a Component to add styles on demand\n * - styles are added when first instance is mounted\n * - styles are removed when the last instance is unmounted\n * - changing styles in runtime does nothing unless dynamic is set. But with multiple components that can lead to the undefined behavior\n */\nexport var styleSingleton = function () {\n var useStyle = styleHookSingleton();\n var Sheet = function (_a) {\n var styles = _a.styles, dynamic = _a.dynamic;\n useStyle(styles, dynamic);\n return null;\n };\n return Sheet;\n};\n","export var zeroGap = {\n left: 0,\n top: 0,\n right: 0,\n gap: 0,\n};\nvar parse = function (x) { return parseInt(x || '', 10) || 0; };\nvar getOffset = function (gapMode) {\n var cs = window.getComputedStyle(document.body);\n var left = cs[gapMode === 'padding' ? 'paddingLeft' : 'marginLeft'];\n var top = cs[gapMode === 'padding' ? 'paddingTop' : 'marginTop'];\n var right = cs[gapMode === 'padding' ? 'paddingRight' : 'marginRight'];\n return [parse(left), parse(top), parse(right)];\n};\nexport var getGapWidth = function (gapMode) {\n if (gapMode === void 0) { gapMode = 'margin'; }\n if (typeof window === 'undefined') {\n return zeroGap;\n }\n var offsets = getOffset(gapMode);\n var documentWidth = document.documentElement.clientWidth;\n var windowWidth = window.innerWidth;\n return {\n left: offsets[0],\n top: offsets[1],\n right: offsets[2],\n gap: Math.max(0, windowWidth - documentWidth + offsets[2] - offsets[0]),\n };\n};\n","import * as React from 'react';\nimport { styleSingleton } from 'react-style-singleton';\nimport { fullWidthClassName, zeroRightClassName, noScrollbarsClassName, removedBarSizeVariable } from './constants';\nimport { getGapWidth } from './utils';\nvar Style = styleSingleton();\nexport var lockAttribute = 'data-scroll-locked';\n// important tip - once we measure scrollBar width and remove them\n// we could not repeat this operation\n// thus we are using style-singleton - only the first \"yet correct\" style will be applied.\nvar getStyles = function (_a, allowRelative, gapMode, important) {\n var left = _a.left, top = _a.top, right = _a.right, gap = _a.gap;\n if (gapMode === void 0) { gapMode = 'margin'; }\n return \"\\n .\".concat(noScrollbarsClassName, \" {\\n overflow: hidden \").concat(important, \";\\n padding-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n body[\").concat(lockAttribute, \"] {\\n overflow: hidden \").concat(important, \";\\n overscroll-behavior: contain;\\n \").concat([\n allowRelative && \"position: relative \".concat(important, \";\"),\n gapMode === 'margin' &&\n \"\\n padding-left: \".concat(left, \"px;\\n padding-top: \").concat(top, \"px;\\n padding-right: \").concat(right, \"px;\\n margin-left:0;\\n margin-top:0;\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n \"),\n gapMode === 'padding' && \"padding-right: \".concat(gap, \"px \").concat(important, \";\"),\n ]\n .filter(Boolean)\n .join(''), \"\\n }\\n \\n .\").concat(zeroRightClassName, \" {\\n right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" {\\n margin-right: \").concat(gap, \"px \").concat(important, \";\\n }\\n \\n .\").concat(zeroRightClassName, \" .\").concat(zeroRightClassName, \" {\\n right: 0 \").concat(important, \";\\n }\\n \\n .\").concat(fullWidthClassName, \" .\").concat(fullWidthClassName, \" {\\n margin-right: 0 \").concat(important, \";\\n }\\n \\n body[\").concat(lockAttribute, \"] {\\n \").concat(removedBarSizeVariable, \": \").concat(gap, \"px;\\n }\\n\");\n};\nvar getCurrentUseCounter = function () {\n var counter = parseInt(document.body.getAttribute(lockAttribute) || '0', 10);\n return isFinite(counter) ? counter : 0;\n};\nexport var useLockAttribute = function () {\n React.useEffect(function () {\n document.body.setAttribute(lockAttribute, (getCurrentUseCounter() + 1).toString());\n return function () {\n var newCounter = getCurrentUseCounter() - 1;\n if (newCounter <= 0) {\n document.body.removeAttribute(lockAttribute);\n }\n else {\n document.body.setAttribute(lockAttribute, newCounter.toString());\n }\n };\n }, []);\n};\n/**\n * Removes page scrollbar and blocks page scroll when mounted\n */\nexport var RemoveScrollBar = function (_a) {\n var noRelative = _a.noRelative, noImportant = _a.noImportant, _b = _a.gapMode, gapMode = _b === void 0 ? 'margin' : _b;\n useLockAttribute();\n /*\n gap will be measured on every component mount\n however it will be used only by the \"first\" invocation\n due to singleton nature of <Style\n */\n var gap = React.useMemo(function () { return getGapWidth(gapMode); }, [gapMode]);\n return React.createElement(Style, { styles: getStyles(gap, !noRelative, gapMode, !noImportant ? '!important' : '') });\n};\n","var passiveSupported = false;\nif (typeof window !== 'undefined') {\n try {\n var options = Object.defineProperty({}, 'passive', {\n get: function () {\n passiveSupported = true;\n return true;\n },\n });\n // @ts-ignore\n window.addEventListener('test', options, options);\n // @ts-ignore\n window.removeEventListener('test', options, options);\n }\n catch (err) {\n passiveSupported = false;\n }\n}\nexport var nonPassive = passiveSupported ? { passive: false } : false;\n","var alwaysContainsScroll = function (node) {\n // textarea will always _contain_ scroll inside self. It only can be hidden\n return node.tagName === 'TEXTAREA';\n};\nvar elementCanBeScrolled = function (node, overflow) {\n if (!(node instanceof Element)) {\n return false;\n }\n var styles = window.getComputedStyle(node);\n return (\n // not-not-scrollable\n styles[overflow] !== 'hidden' &&\n // contains scroll inside self\n !(styles.overflowY === styles.overflowX && !alwaysContainsScroll(node) && styles[overflow] === 'visible'));\n};\nvar elementCouldBeVScrolled = function (node) { return elementCanBeScrolled(node, 'overflowY'); };\nvar elementCouldBeHScrolled = function (node) { return elementCanBeScrolled(node, 'overflowX'); };\nexport var locationCouldBeScrolled = function (axis, node) {\n var ownerDocument = node.ownerDocument;\n var current = node;\n do {\n // Skip over shadow root\n if (typeof ShadowRoot !== 'undefined' && current instanceof ShadowRoot) {\n current = current.host;\n }\n var isScrollable = elementCouldBeScrolled(axis, current);\n if (isScrollable) {\n var _a = getScrollVariables(axis, current), scrollHeight = _a[1], clientHeight = _a[2];\n if (scrollHeight > clientHeight) {\n return true;\n }\n }\n current = current.parentNode;\n } while (current && current !== ownerDocument.body);\n return false;\n};\nvar getVScrollVariables = function (_a) {\n var scrollTop = _a.scrollTop, scrollHeight = _a.scrollHeight, clientHeight = _a.clientHeight;\n return [\n scrollTop,\n scrollHeight,\n clientHeight,\n ];\n};\nvar getHScrollVariables = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollWidth = _a.scrollWidth, clientWidth = _a.clientWidth;\n return [\n scrollLeft,\n scrollWidth,\n clientWidth,\n ];\n};\nvar elementCouldBeScrolled = function (axis, node) {\n return axis === 'v' ? elementCouldBeVScrolled(node) : elementCouldBeHScrolled(node);\n};\nvar getScrollVariables = function (axis, node) {\n return axis === 'v' ? getVScrollVariables(node) : getHScrollVariables(node);\n};\nvar getDirectionFactor = function (axis, direction) {\n /**\n * If the element's direction is rtl (right-to-left), then scrollLeft is 0 when the scrollbar is at its rightmost position,\n * and then increasingly negative as you scroll towards the end of the content.\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollLeft\n */\n return axis === 'h' && direction === 'rtl' ? -1 : 1;\n};\nexport var handleScroll = function (axis, endTarget, event, sourceDelta, noOverscroll) {\n var directionFactor = getDirectionFactor(axis, window.getComputedStyle(endTarget).direction);\n var delta = directionFactor * sourceDelta;\n // find scrollable target\n var target = event.target;\n var targetInLock = endTarget.contains(target);\n var shouldCancelScroll = false;\n var isDeltaPositive = delta > 0;\n var availableScroll = 0;\n var availableScrollTop = 0;\n do {\n var _a = getScrollVariables(axis, target), position = _a[0], scroll_1 = _a[1], capacity = _a[2];\n var elementScroll = scroll_1 - capacity - directionFactor * position;\n if (position || elementScroll) {\n if (elementCouldBeScrolled(axis, target)) {\n availableScroll += elementScroll;\n availableScrollTop += position;\n }\n }\n if (target instanceof ShadowRoot) {\n target = target.host;\n }\n else {\n target = target.parentNode;\n }\n } while (\n // portaled content\n (!targetInLock && target !== document.body) ||\n // self content\n (targetInLock && (endTarget.contains(target) || endTarget === target)));\n // handle epsilon around 0 (non standard zoom levels)\n if (isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScroll) < 1) || (!noOverscroll && delta > availableScroll))) {\n shouldCancelScroll = true;\n }\n else if (!isDeltaPositive &&\n ((noOverscroll && Math.abs(availableScrollTop) < 1) || (!noOverscroll && -delta > availableScrollTop))) {\n shouldCancelScroll = true;\n }\n return shouldCancelScroll;\n};\n","import { __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScrollBar } from 'react-remove-scroll-bar';\nimport { styleSingleton } from 'react-style-singleton';\nimport { nonPassive } from './aggresiveCapture';\nimport { handleScroll, locationCouldBeScrolled } from './handleScroll';\nexport var getTouchXY = function (event) {\n return 'changedTouches' in event ? [event.changedTouches[0].clientX, event.changedTouches[0].clientY] : [0, 0];\n};\nexport var getDeltaXY = function (event) { return [event.deltaX, event.deltaY]; };\nvar extractRef = function (ref) {\n return ref && 'current' in ref ? ref.current : ref;\n};\nvar deltaCompare = function (x, y) { return x[0] === y[0] && x[1] === y[1]; };\nvar generateStyle = function (id) { return \"\\n .block-interactivity-\".concat(id, \" {pointer-events: none;}\\n .allow-interactivity-\").concat(id, \" {pointer-events: all;}\\n\"); };\nvar idCounter = 0;\nvar lockStack = [];\nexport function RemoveScrollSideCar(props) {\n var shouldPreventQueue = React.useRef([]);\n var touchStartRef = React.useRef([0, 0]);\n var activeAxis = React.useRef();\n var id = React.useState(idCounter++)[0];\n var Style = React.useState(styleSingleton)[0];\n var lastProps = React.useRef(props);\n React.useEffect(function () {\n lastProps.current = props;\n }, [props]);\n React.useEffect(function () {\n if (props.inert) {\n document.body.classList.add(\"block-interactivity-\".concat(id));\n var allow_1 = __spreadArray([props.lockRef.current], (props.shards || []).map(extractRef), true).filter(Boolean);\n allow_1.forEach(function (el) { return el.classList.add(\"allow-interactivity-\".concat(id)); });\n return function () {\n document.body.classList.remove(\"block-interactivity-\".concat(id));\n allow_1.forEach(function (el) { return el.classList.remove(\"allow-interactivity-\".concat(id)); });\n };\n }\n return;\n }, [props.inert, props.lockRef.current, props.shards]);\n var shouldCancelEvent = React.useCallback(function (event, parent) {\n if (('touches' in event && event.touches.length === 2) || (event.type === 'wheel' && event.ctrlKey)) {\n return !lastProps.current.allowPinchZoom;\n }\n var touch = getTouchXY(event);\n var touchStart = touchStartRef.current;\n var deltaX = 'deltaX' in event ? event.deltaX : touchStart[0] - touch[0];\n var deltaY = 'deltaY' in event ? event.deltaY : touchStart[1] - touch[1];\n var currentAxis;\n var target = event.target;\n var moveDirection = Math.abs(deltaX) > Math.abs(deltaY) ? 'h' : 'v';\n // allow horizontal touch move on Range inputs. They will not cause any scroll\n if ('touches' in event && moveDirection === 'h' && target.type === 'range') {\n return false;\n }\n var canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n if (!canBeScrolledInMainDirection) {\n return true;\n }\n if (canBeScrolledInMainDirection) {\n currentAxis = moveDirection;\n }\n else {\n currentAxis = moveDirection === 'v' ? 'h' : 'v';\n canBeScrolledInMainDirection = locationCouldBeScrolled(moveDirection, target);\n // other axis might be not scrollable\n }\n if (!canBeScrolledInMainDirection) {\n return false;\n }\n if (!activeAxis.current && 'changedTouches' in event && (deltaX || deltaY)) {\n activeAxis.current = currentAxis;\n }\n if (!currentAxis) {\n return true;\n }\n var cancelingAxis = activeAxis.current || currentAxis;\n return handleScroll(cancelingAxis, parent, event, cancelingAxis === 'h' ? deltaX : deltaY, true);\n }, []);\n var shouldPrevent = React.useCallback(function (_event) {\n var event = _event;\n if (!lockStack.length || lockStack[lockStack.length - 1] !== Style) {\n // not the last active\n return;\n }\n var delta = 'deltaY' in event ? getDeltaXY(event) : getTouchXY(event);\n var sourceEvent = shouldPreventQueue.current.filter(function (e) { return e.name === event.type && (e.target === event.target || event.target === e.shadowParent) && deltaCompare(e.delta, delta); })[0];\n // self event, and should be canceled\n if (sourceEvent && sourceEvent.should) {\n if (event.cancelable) {\n event.preventDefault();\n }\n return;\n }\n // outside or shard event\n if (!sourceEvent) {\n var shardNodes = (lastProps.current.shards || [])\n .map(extractRef)\n .filter(Boolean)\n .filter(function (node) { return node.contains(event.target); });\n var shouldStop = shardNodes.length > 0 ? shouldCancelEvent(event, shardNodes[0]) : !lastProps.current.noIsolation;\n if (shouldStop) {\n if (event.cancelable) {\n event.preventDefault();\n }\n }\n }\n }, []);\n var shouldCancel = React.useCallback(function (name, delta, target, should) {\n var event = { name: name, delta: delta, target: target, should: should, shadowParent: getOutermostShadowParent(target) };\n shouldPreventQueue.current.push(event);\n setTimeout(function () {\n shouldPreventQueue.current = shouldPreventQueue.current.filter(function (e) { return e !== event; });\n }, 1);\n }, []);\n var scrollTouchStart = React.useCallback(function (event) {\n touchStartRef.current = getTouchXY(event);\n activeAxis.current = undefined;\n }, []);\n var scrollWheel = React.useCallback(function (event) {\n shouldCancel(event.type, getDeltaXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n var scrollTouchMove = React.useCallback(function (event) {\n shouldCancel(event.type, getTouchXY(event), event.target, shouldCancelEvent(event, props.lockRef.current));\n }, []);\n React.useEffect(function () {\n lockStack.push(Style);\n props.setCallbacks({\n onScrollCapture: scrollWheel,\n onWheelCapture: scrollWheel,\n onTouchMoveCapture: scrollTouchMove,\n });\n document.addEventListener('wheel', shouldPrevent, nonPassive);\n document.addEventListener('touchmove', shouldPrevent, nonPassive);\n document.addEventListener('touchstart', scrollTouchStart, nonPassive);\n return function () {\n lockStack = lockStack.filter(function (inst) { return inst !== Style; });\n document.removeEventListener('wheel', shouldPrevent, nonPassive);\n document.removeEventListener('touchmove', shouldPrevent, nonPassive);\n document.removeEventListener('touchstart', scrollTouchStart, nonPassive);\n };\n }, []);\n var removeScrollBar = props.removeScrollBar, inert = props.inert;\n return (React.createElement(React.Fragment, null,\n inert ? React.createElement(Style, { styles: generateStyle(id) }) : null,\n removeScrollBar ? React.createElement(RemoveScrollBar, { gapMode: props.gapMode }) : null));\n}\nfunction getOutermostShadowParent(node) {\n var shadowParent = null;\n while (node !== null) {\n if (node instanceof ShadowRoot) {\n shadowParent = node.host;\n node = node.host;\n }\n node = node.parentNode;\n }\n return shadowParent;\n}\n","import { exportSidecar } from 'use-sidecar';\nimport { RemoveScrollSideCar } from './SideEffect';\nimport { effectCar } from './medium';\nexport default exportSidecar(effectCar, RemoveScrollSideCar);\n","import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { RemoveScroll } from './UI';\nimport SideCar from './sidecar';\nvar ReactRemoveScroll = React.forwardRef(function (props, ref) { return (React.createElement(RemoveScroll, __assign({}, props, { ref: ref, sideCar: SideCar }))); });\nReactRemoveScroll.classNames = RemoveScroll.classNames;\nexport default ReactRemoveScroll;\n","var getDefaultParent = function (originalTarget) {\n if (typeof document === 'undefined') {\n return null;\n }\n var sampleTarget = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return sampleTarget.ownerDocument.body;\n};\nvar counterMap = new WeakMap();\nvar uncontrolledNodes = new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = function (node) {\n return node && (node.host || unwrapHost(node.parentNode));\n};\nvar correctTargets = function (parent, targets) {\n return targets\n .map(function (target) {\n if (parent.contains(target)) {\n return target;\n }\n var correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error('aria-hidden', target, 'in not contained inside', parent, '. Doing nothing');\n return null;\n })\n .filter(function (x) { return Boolean(x); });\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @param {String} [controlAttribute] - html Attribute to control\n * @return {Undo} undo command\n */\nvar applyAttributeToOthers = function (originalTarget, parentNode, markerName, controlAttribute) {\n var targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n if (!markerMap[markerName]) {\n markerMap[markerName] = new WeakMap();\n }\n var markerCounter = markerMap[markerName];\n var hiddenNodes = [];\n var elementsToKeep = new Set();\n var elementsToStop = new Set(targets);\n var keep = function (el) {\n if (!el || elementsToKeep.has(el)) {\n return;\n }\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach(keep);\n var deep = function (parent) {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, function (node) {\n if (elementsToKeep.has(node)) {\n deep(node);\n }\n else {\n try {\n var attr = node.getAttribute(controlAttribute);\n var alreadyHidden = attr !== null && attr !== 'false';\n var counterValue = (counterMap.get(node) || 0) + 1;\n var markerValue = (markerCounter.get(node) || 0) + 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n hiddenNodes.push(node);\n if (counterValue === 1 && alreadyHidden) {\n uncontrolledNodes.set(node, true);\n }\n if (markerValue === 1) {\n node.setAttribute(markerName, 'true');\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, 'true');\n }\n }\n catch (e) {\n console.error('aria-hidden: cannot operate on ', node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return function () {\n hiddenNodes.forEach(function (node) {\n var counterValue = counterMap.get(node) - 1;\n var markerValue = markerCounter.get(node) - 1;\n counterMap.set(node, counterValue);\n markerCounter.set(node, markerValue);\n if (!counterValue) {\n if (!uncontrolledNodes.has(node)) {\n node.removeAttribute(controlAttribute);\n }\n uncontrolledNodes.delete(node);\n }\n if (!markerValue) {\n node.removeAttribute(markerName);\n }\n });\n lockCount--;\n if (!lockCount) {\n // clear\n counterMap = new WeakMap();\n counterMap = new WeakMap();\n uncontrolledNodes = new WeakMap();\n markerMap = {};\n }\n };\n};\n/**\n * Marks everything except given node(or nodes) as aria-hidden\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var hideOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-aria-hidden'; }\n var targets = Array.from(Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n // we should not hide ariaLive elements - https://github.com/theKashey/aria-hidden/issues/10\n targets.push.apply(targets, Array.from(activeParentNode.querySelectorAll('[aria-live]')));\n return applyAttributeToOthers(targets, activeParentNode, markerName, 'aria-hidden');\n};\n/**\n * Marks everything except given node(or nodes) as inert\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var inertOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-inert-ed'; }\n var activeParentNode = parentNode || getDefaultParent(originalTarget);\n if (!activeParentNode) {\n return function () { return null; };\n }\n return applyAttributeToOthers(originalTarget, activeParentNode, markerName, 'inert');\n};\n/**\n * @returns if current browser supports inert\n */\nexport var supportsInert = function () {\n return typeof HTMLElement !== 'undefined' && HTMLElement.prototype.hasOwnProperty('inert');\n};\n/**\n * Automatic function to \"suppress\" DOM elements - _hide_ or _inert_ in the best possible way\n * @param {Element | Element[]} originalTarget - elements to keep on the page\n * @param [parentNode] - top element, defaults to document.body\n * @param {String} [markerName] - a special attribute to mark every node\n * @return {Undo} undo command\n */\nexport var suppressOthers = function (originalTarget, parentNode, markerName) {\n if (markerName === void 0) { markerName = 'data-suppressed'; }\n return (supportsInert() ? inertOthers : hideOthers)(originalTarget, parentNode, markerName);\n};\n","\"use client\";\n\n// packages/react/dialog/src/dialog.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContext, createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { hideOthers } from \"aria-hidden\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar DIALOG_NAME = \"Dialog\";\nvar [createDialogContext, createDialogScope] = createContextScope(DIALOG_NAME);\nvar [DialogProvider, useDialogContext] = createDialogContext(DIALOG_NAME);\nvar Dialog = (props) => {\n const {\n __scopeDialog,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const triggerRef = React.useRef(null);\n const contentRef = React.useRef(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(\n DialogProvider,\n {\n scope: __scopeDialog,\n triggerRef,\n contentRef,\n contentId: useId(),\n titleId: useId(),\n descriptionId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children\n }\n );\n};\nDialog.displayName = DIALOG_NAME;\nvar TRIGGER_NAME = \"DialogTrigger\";\nvar DialogTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...triggerProps } = props;\n const context = useDialogContext(TRIGGER_NAME, __scopeDialog);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nDialogTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DialogPortal\";\nvar [PortalProvider, usePortalContext] = createDialogContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar DialogPortal = (props) => {\n const { __scopeDialog, forceMount, children, container } = props;\n const context = useDialogContext(PORTAL_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeDialog, forceMount, children: React.Children.map(children, (child) => /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children: child }) })) });\n};\nDialogPortal.displayName = PORTAL_NAME;\nvar OVERLAY_NAME = \"DialogOverlay\";\nvar DialogOverlay = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(OVERLAY_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, props.__scopeDialog);\n return context.modal ? /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(DialogOverlayImpl, { ...overlayProps, ref: forwardedRef }) }) : null;\n }\n);\nDialogOverlay.displayName = OVERLAY_NAME;\nvar DialogOverlayImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...overlayProps } = props;\n const context = useDialogContext(OVERLAY_NAME, __scopeDialog);\n return (\n // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`\n // ie. when `Overlay` and `Content` are siblings\n /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, shards: [context.contentRef], children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n ...overlayProps,\n ref: forwardedRef,\n style: { pointerEvents: \"auto\", ...overlayProps.style }\n }\n ) })\n );\n }\n);\nvar CONTENT_NAME = \"DialogContent\";\nvar DialogContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeDialog);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(DialogContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(DialogContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nDialogContent.displayName = CONTENT_NAME;\nvar DialogContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, context.contentRef, contentRef);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(props.onPointerDownOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (isRightClick) event.preventDefault();\n }),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault()\n )\n }\n );\n }\n);\nvar DialogContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useDialogContext(CONTENT_NAME, props.__scopeDialog);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n DialogContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar DialogContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, trapFocus, onOpenAutoFocus, onCloseAutoFocus, ...contentProps } = props;\n const context = useDialogContext(CONTENT_NAME, __scopeDialog);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n useFocusGuards();\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n role: \"dialog\",\n id: context.contentId,\n \"aria-describedby\": context.descriptionId,\n \"aria-labelledby\": context.titleId,\n \"data-state\": getState(context.open),\n ...contentProps,\n ref: composedRefs,\n onDismiss: () => context.onOpenChange(false)\n }\n )\n }\n ),\n /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(TitleWarning, { titleId: context.titleId }),\n /* @__PURE__ */ jsx(DescriptionWarning, { contentRef, descriptionId: context.descriptionId })\n ] })\n ] });\n }\n);\nvar TITLE_NAME = \"DialogTitle\";\nvar DialogTitle = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...titleProps } = props;\n const context = useDialogContext(TITLE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.h2, { id: context.titleId, ...titleProps, ref: forwardedRef });\n }\n);\nDialogTitle.displayName = TITLE_NAME;\nvar DESCRIPTION_NAME = \"DialogDescription\";\nvar DialogDescription = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...descriptionProps } = props;\n const context = useDialogContext(DESCRIPTION_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(Primitive.p, { id: context.descriptionId, ...descriptionProps, ref: forwardedRef });\n }\n);\nDialogDescription.displayName = DESCRIPTION_NAME;\nvar CLOSE_NAME = \"DialogClose\";\nvar DialogClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDialog, ...closeProps } = props;\n const context = useDialogContext(CLOSE_NAME, __scopeDialog);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nDialogClose.displayName = CLOSE_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar TITLE_WARNING_NAME = \"DialogTitleWarning\";\nvar [WarningProvider, useWarningContext] = createContext(TITLE_WARNING_NAME, {\n contentName: CONTENT_NAME,\n titleName: TITLE_NAME,\n docsSlug: \"dialog\"\n});\nvar TitleWarning = ({ titleId }) => {\n const titleWarningContext = useWarningContext(TITLE_WARNING_NAME);\n const MESSAGE = `\\`${titleWarningContext.contentName}\\` requires a \\`${titleWarningContext.titleName}\\` for the component to be accessible for screen reader users.\n\nIf you want to hide the \\`${titleWarningContext.titleName}\\`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/${titleWarningContext.docsSlug}`;\n React.useEffect(() => {\n if (titleId) {\n const hasTitle = document.getElementById(titleId);\n if (!hasTitle) console.error(MESSAGE);\n }\n }, [MESSAGE, titleId]);\n return null;\n};\nvar DESCRIPTION_WARNING_NAME = \"DialogDescriptionWarning\";\nvar DescriptionWarning = ({ contentRef, descriptionId }) => {\n const descriptionWarningContext = useWarningContext(DESCRIPTION_WARNING_NAME);\n const MESSAGE = `Warning: Missing \\`Description\\` or \\`aria-describedby={undefined}\\` for {${descriptionWarningContext.contentName}}.`;\n React.useEffect(() => {\n const describedById = contentRef.current?.getAttribute(\"aria-describedby\");\n if (descriptionId && describedById) {\n const hasDescription = document.getElementById(descriptionId);\n if (!hasDescription) console.warn(MESSAGE);\n }\n }, [MESSAGE, contentRef, descriptionId]);\n return null;\n};\nvar Root = Dialog;\nvar Trigger = DialogTrigger;\nvar Portal = DialogPortal;\nvar Overlay = DialogOverlay;\nvar Content = DialogContent;\nvar Title = DialogTitle;\nvar Description = DialogDescription;\nvar Close = DialogClose;\nexport {\n Close,\n Content,\n Description,\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger,\n Overlay,\n Portal,\n Root,\n Title,\n Trigger,\n WarningProvider,\n createDialogScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";import{a as ae}from\"./chunk-NZJY6EH4.mjs\";import*as w from\"@radix-ui/react-dialog\";import*as t from\"react\";import{Primitive as D}from\"@radix-ui/react-primitive\";import{useId as H}from\"@radix-ui/react-id\";import{composeRefs as G}from\"@radix-ui/react-compose-refs\";var N='[cmdk-group=\"\"]',Y='[cmdk-group-items=\"\"]',be='[cmdk-group-heading=\"\"]',le='[cmdk-item=\"\"]',ce=`${le}:not([aria-disabled=\"true\"])`,Z=\"cmdk-item-select\",T=\"data-value\",Re=(r,o,n)=>ae(r,o,n),ue=t.createContext(void 0),K=()=>t.useContext(ue),de=t.createContext(void 0),ee=()=>t.useContext(de),fe=t.createContext(void 0),me=t.forwardRef((r,o)=>{let n=L(()=>{var e,a;return{search:\"\",value:(a=(e=r.value)!=null?e:r.defaultValue)!=null?a:\"\",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),u=L(()=>new Set),c=L(()=>new Map),d=L(()=>new Map),f=L(()=>new Set),p=pe(r),{label:b,children:m,value:R,onValueChange:x,filter:C,shouldFilter:S,loop:A,disablePointerSelection:ge=!1,vimBindings:j=!0,...O}=r,$=H(),q=H(),_=H(),I=t.useRef(null),v=ke();k(()=>{if(R!==void 0){let e=R.trim();n.current.value=e,E.emit()}},[R]),k(()=>{v(6,ne)},[]);let E=t.useMemo(()=>({subscribe:e=>(f.current.add(e),()=>f.current.delete(e)),snapshot:()=>n.current,setState:(e,a,s)=>{var i,l,g,y;if(!Object.is(n.current[e],a)){if(n.current[e]=a,e===\"search\")J(),z(),v(1,W);else if(e===\"value\"){if(document.activeElement.hasAttribute(\"cmdk-input\")||document.activeElement.hasAttribute(\"cmdk-root\")){let h=document.getElementById(_);h?h.focus():(i=document.getElementById($))==null||i.focus()}if(v(7,()=>{var h;n.current.selectedItemId=(h=M())==null?void 0:h.id,E.emit()}),s||v(5,ne),((l=p.current)==null?void 0:l.value)!==void 0){let h=a!=null?a:\"\";(y=(g=p.current).onValueChange)==null||y.call(g,h);return}}E.emit()}},emit:()=>{f.current.forEach(e=>e())}}),[]),U=t.useMemo(()=>({value:(e,a,s)=>{var i;a!==((i=d.current.get(e))==null?void 0:i.value)&&(d.current.set(e,{value:a,keywords:s}),n.current.filtered.items.set(e,te(a,s)),v(2,()=>{z(),E.emit()}))},item:(e,a)=>(u.current.add(e),a&&(c.current.has(a)?c.current.get(a).add(e):c.current.set(a,new Set([e]))),v(3,()=>{J(),z(),n.current.value||W(),E.emit()}),()=>{d.current.delete(e),u.current.delete(e),n.current.filtered.items.delete(e);let s=M();v(4,()=>{J(),(s==null?void 0:s.getAttribute(\"id\"))===e&&W(),E.emit()})}),group:e=>(c.current.has(e)||c.current.set(e,new Set),()=>{d.current.delete(e),c.current.delete(e)}),filter:()=>p.current.shouldFilter,label:b||r[\"aria-label\"],getDisablePointerSelection:()=>p.current.disablePointerSelection,listId:$,inputId:_,labelId:q,listInnerRef:I}),[]);function te(e,a){var i,l;let s=(l=(i=p.current)==null?void 0:i.filter)!=null?l:Re;return e?s(e,n.current.search,a):0}function z(){if(!n.current.search||p.current.shouldFilter===!1)return;let e=n.current.filtered.items,a=[];n.current.filtered.groups.forEach(i=>{let l=c.current.get(i),g=0;l.forEach(y=>{let h=e.get(y);g=Math.max(h,g)}),a.push([i,g])});let s=I.current;V().sort((i,l)=>{var h,F;let g=i.getAttribute(\"id\"),y=l.getAttribute(\"id\");return((h=e.get(y))!=null?h:0)-((F=e.get(g))!=null?F:0)}).forEach(i=>{let l=i.closest(Y);l?l.appendChild(i.parentElement===l?i:i.closest(`${Y} > *`)):s.appendChild(i.parentElement===s?i:i.closest(`${Y} > *`))}),a.sort((i,l)=>l[1]-i[1]).forEach(i=>{var g;let l=(g=I.current)==null?void 0:g.querySelector(`${N}[${T}=\"${encodeURIComponent(i[0])}\"]`);l==null||l.parentElement.appendChild(l)})}function W(){let e=V().find(s=>s.getAttribute(\"aria-disabled\")!==\"true\"),a=e==null?void 0:e.getAttribute(T);E.setState(\"value\",a||void 0)}function J(){var a,s,i,l;if(!n.current.search||p.current.shouldFilter===!1){n.current.filtered.count=u.current.size;return}n.current.filtered.groups=new Set;let e=0;for(let g of u.current){let y=(s=(a=d.current.get(g))==null?void 0:a.value)!=null?s:\"\",h=(l=(i=d.current.get(g))==null?void 0:i.keywords)!=null?l:[],F=te(y,h);n.current.filtered.items.set(g,F),F>0&&e++}for(let[g,y]of c.current)for(let h of y)if(n.current.filtered.items.get(h)>0){n.current.filtered.groups.add(g);break}n.current.filtered.count=e}function ne(){var a,s,i;let e=M();e&&(((a=e.parentElement)==null?void 0:a.firstChild)===e&&((i=(s=e.closest(N))==null?void 0:s.querySelector(be))==null||i.scrollIntoView({block:\"nearest\"})),e.scrollIntoView({block:\"nearest\"}))}function M(){var e;return(e=I.current)==null?void 0:e.querySelector(`${le}[aria-selected=\"true\"]`)}function V(){var e;return Array.from(((e=I.current)==null?void 0:e.querySelectorAll(ce))||[])}function X(e){let s=V()[e];s&&E.setState(\"value\",s.getAttribute(T))}function Q(e){var g;let a=M(),s=V(),i=s.findIndex(y=>y===a),l=s[i+e];(g=p.current)!=null&&g.loop&&(l=i+e<0?s[s.length-1]:i+e===s.length?s[0]:s[i+e]),l&&E.setState(\"value\",l.getAttribute(T))}function re(e){let a=M(),s=a==null?void 0:a.closest(N),i;for(;s&&!i;)s=e>0?we(s,N):De(s,N),i=s==null?void 0:s.querySelector(ce);i?E.setState(\"value\",i.getAttribute(T)):Q(e)}let oe=()=>X(V().length-1),ie=e=>{e.preventDefault(),e.metaKey?oe():e.altKey?re(1):Q(1)},se=e=>{e.preventDefault(),e.metaKey?X(0):e.altKey?re(-1):Q(-1)};return t.createElement(D.div,{ref:o,tabIndex:-1,...O,\"cmdk-root\":\"\",onKeyDown:e=>{var s;(s=O.onKeyDown)==null||s.call(O,e);let a=e.nativeEvent.isComposing||e.keyCode===229;if(!(e.defaultPrevented||a))switch(e.key){case\"n\":case\"j\":{j&&e.ctrlKey&&ie(e);break}case\"ArrowDown\":{ie(e);break}case\"p\":case\"k\":{j&&e.ctrlKey&&se(e);break}case\"ArrowUp\":{se(e);break}case\"Home\":{e.preventDefault(),X(0);break}case\"End\":{e.preventDefault(),oe();break}case\"Enter\":{e.preventDefault();let i=M();if(i){let l=new Event(Z);i.dispatchEvent(l)}}}}},t.createElement(\"label\",{\"cmdk-label\":\"\",htmlFor:U.inputId,id:U.labelId,style:Te},b),B(r,e=>t.createElement(de.Provider,{value:E},t.createElement(ue.Provider,{value:U},e))))}),he=t.forwardRef((r,o)=>{var _,I;let n=H(),u=t.useRef(null),c=t.useContext(fe),d=K(),f=pe(r),p=(I=(_=f.current)==null?void 0:_.forceMount)!=null?I:c==null?void 0:c.forceMount;k(()=>{if(!p)return d.item(n,c==null?void 0:c.id)},[p]);let b=ve(n,u,[r.value,r.children,u],r.keywords),m=ee(),R=P(v=>v.value&&v.value===b.current),x=P(v=>p||d.filter()===!1?!0:v.search?v.filtered.items.get(n)>0:!0);t.useEffect(()=>{let v=u.current;if(!(!v||r.disabled))return v.addEventListener(Z,C),()=>v.removeEventListener(Z,C)},[x,r.onSelect,r.disabled]);function C(){var v,E;S(),(E=(v=f.current).onSelect)==null||E.call(v,b.current)}function S(){m.setState(\"value\",b.current,!0)}if(!x)return null;let{disabled:A,value:ge,onSelect:j,forceMount:O,keywords:$,...q}=r;return t.createElement(D.div,{ref:G(u,o),...q,id:n,\"cmdk-item\":\"\",role:\"option\",\"aria-disabled\":!!A,\"aria-selected\":!!R,\"data-disabled\":!!A,\"data-selected\":!!R,onPointerMove:A||d.getDisablePointerSelection()?void 0:S,onClick:A?void 0:C},r.children)}),Ee=t.forwardRef((r,o)=>{let{heading:n,children:u,forceMount:c,...d}=r,f=H(),p=t.useRef(null),b=t.useRef(null),m=H(),R=K(),x=P(S=>c||R.filter()===!1?!0:S.search?S.filtered.groups.has(f):!0);k(()=>R.group(f),[]),ve(f,p,[r.value,r.heading,b]);let C=t.useMemo(()=>({id:f,forceMount:c}),[c]);return t.createElement(D.div,{ref:G(p,o),...d,\"cmdk-group\":\"\",role:\"presentation\",hidden:x?void 0:!0},n&&t.createElement(\"div\",{ref:b,\"cmdk-group-heading\":\"\",\"aria-hidden\":!0,id:m},n),B(r,S=>t.createElement(\"div\",{\"cmdk-group-items\":\"\",role:\"group\",\"aria-labelledby\":n?m:void 0},t.createElement(fe.Provider,{value:C},S))))}),ye=t.forwardRef((r,o)=>{let{alwaysRender:n,...u}=r,c=t.useRef(null),d=P(f=>!f.search);return!n&&!d?null:t.createElement(D.div,{ref:G(c,o),...u,\"cmdk-separator\":\"\",role:\"separator\"})}),Se=t.forwardRef((r,o)=>{let{onValueChange:n,...u}=r,c=r.value!=null,d=ee(),f=P(m=>m.search),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{r.value!=null&&d.setState(\"search\",r.value)},[r.value]),t.createElement(D.input,{ref:o,...u,\"cmdk-input\":\"\",autoComplete:\"off\",autoCorrect:\"off\",spellCheck:!1,\"aria-autocomplete\":\"list\",role:\"combobox\",\"aria-expanded\":!0,\"aria-controls\":b.listId,\"aria-labelledby\":b.labelId,\"aria-activedescendant\":p,id:b.inputId,type:\"text\",value:c?r.value:f,onChange:m=>{c||d.setState(\"search\",m.target.value),n==null||n(m.target.value)}})}),Ce=t.forwardRef((r,o)=>{let{children:n,label:u=\"Suggestions\",...c}=r,d=t.useRef(null),f=t.useRef(null),p=P(m=>m.selectedItemId),b=K();return t.useEffect(()=>{if(f.current&&d.current){let m=f.current,R=d.current,x,C=new ResizeObserver(()=>{x=requestAnimationFrame(()=>{let S=m.offsetHeight;R.style.setProperty(\"--cmdk-list-height\",S.toFixed(1)+\"px\")})});return C.observe(m),()=>{cancelAnimationFrame(x),C.unobserve(m)}}},[]),t.createElement(D.div,{ref:G(d,o),...c,\"cmdk-list\":\"\",role:\"listbox\",tabIndex:-1,\"aria-activedescendant\":p,\"aria-label\":u,id:b.listId},B(r,m=>t.createElement(\"div\",{ref:G(f,b.listInnerRef),\"cmdk-list-sizer\":\"\"},m)))}),xe=t.forwardRef((r,o)=>{let{open:n,onOpenChange:u,overlayClassName:c,contentClassName:d,container:f,...p}=r;return t.createElement(w.Root,{open:n,onOpenChange:u},t.createElement(w.Portal,{container:f},t.createElement(w.Overlay,{\"cmdk-overlay\":\"\",className:c}),t.createElement(w.Content,{\"aria-label\":r.label,\"cmdk-dialog\":\"\",className:d},t.createElement(me,{ref:o,...p}))))}),Ie=t.forwardRef((r,o)=>P(u=>u.filtered.count===0)?t.createElement(D.div,{ref:o,...r,\"cmdk-empty\":\"\",role:\"presentation\"}):null),Pe=t.forwardRef((r,o)=>{let{progress:n,children:u,label:c=\"Loading...\",...d}=r;return t.createElement(D.div,{ref:o,...d,\"cmdk-loading\":\"\",role:\"progressbar\",\"aria-valuenow\":n,\"aria-valuemin\":0,\"aria-valuemax\":100,\"aria-label\":c},B(r,f=>t.createElement(\"div\",{\"aria-hidden\":!0},f)))}),_e=Object.assign(me,{List:Ce,Item:he,Input:Se,Group:Ee,Separator:ye,Dialog:xe,Empty:Ie,Loading:Pe});function we(r,o){let n=r.nextElementSibling;for(;n;){if(n.matches(o))return n;n=n.nextElementSibling}}function De(r,o){let n=r.previousElementSibling;for(;n;){if(n.matches(o))return n;n=n.previousElementSibling}}function pe(r){let o=t.useRef(r);return k(()=>{o.current=r}),o}var k=typeof window==\"undefined\"?t.useEffect:t.useLayoutEffect;function L(r){let o=t.useRef();return o.current===void 0&&(o.current=r()),o}function P(r){let o=ee(),n=()=>r(o.snapshot());return t.useSyncExternalStore(o.subscribe,n,n)}function ve(r,o,n,u=[]){let c=t.useRef(),d=K();return k(()=>{var b;let f=(()=>{var m;for(let R of n){if(typeof R==\"string\")return R.trim();if(typeof R==\"object\"&&\"current\"in R)return R.current?(m=R.current.textContent)==null?void 0:m.trim():c.current}})(),p=u.map(m=>m.trim());d.value(r,f,p),(b=o.current)==null||b.setAttribute(T,f),c.current=f}),c}var ke=()=>{let[r,o]=t.useState(),n=L(()=>new Map);return k(()=>{n.current.forEach(u=>u()),n.current=new Map},[r]),(u,c)=>{n.current.set(u,c),o({})}};function Me(r){let o=r.type;return typeof o==\"function\"?o(r.props):\"render\"in o?o.render(r.props):r}function B({asChild:r,children:o},n){return r&&t.isValidElement(o)?t.cloneElement(Me(o),{ref:o.ref},n(o.props.children)):n(o)}var Te={position:\"absolute\",width:\"1px\",height:\"1px\",padding:\"0\",margin:\"-1px\",overflow:\"hidden\",clip:\"rect(0, 0, 0, 0)\",whiteSpace:\"nowrap\",borderWidth:\"0\"};export{_e as Command,xe as CommandDialog,Ie as CommandEmpty,Ee as CommandGroup,Se as CommandInput,he as CommandItem,Ce as CommandList,Pe as CommandLoading,me as CommandRoot,ye as CommandSeparator,Re as defaultFilter,P as useCommandState};\n","'use client'\n\nimport * as React from 'react'\nimport * as DialogPrimitive from '@radix-ui/react-dialog'\nimport { X } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nconst DialogTrigger = DialogPrimitive.Trigger\n\nconst DialogPortal = DialogPrimitive.Portal\n\nconst DialogClose = DialogPrimitive.Close\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n ref={ref}\n className={cn(\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80',\n className\n )}\n {...props}\n />\n))\nDialogOverlay.displayName = DialogPrimitive.Overlay.displayName\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content> & {\n closeable?: boolean\n }\n>(({ className, children, closeable = true, ...props }, ref) => (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg duration-200 sm:rounded-lg',\n className\n )}\n {...props}\n >\n {children}\n {closeable && (\n <DialogPrimitive.Close className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none\">\n <X className=\"h-4 w-4\" />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n))\nDialogContent.displayName = DialogPrimitive.Content.displayName\n\nconst DialogHeader = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col space-y-1.5 text-center sm:text-left',\n className\n )}\n {...props}\n />\n)\nDialogHeader.displayName = 'DialogHeader'\n\nconst DialogFooter = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n 'flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2',\n className\n )}\n {...props}\n />\n)\nDialogFooter.displayName = 'DialogFooter'\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n ref={ref}\n className={cn(\n 'text-lg leading-none font-semibold tracking-tight',\n className\n )}\n {...props}\n />\n))\nDialogTitle.displayName = DialogPrimitive.Title.displayName\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n ref={ref}\n className={cn('text-muted-foreground text-sm', className)}\n {...props}\n />\n))\nDialogDescription.displayName = DialogPrimitive.Description.displayName\n\nexport const Dialog = Object.assign(DialogPrimitive.Root, {\n Portal: DialogPortal,\n Overlay: DialogOverlay,\n Close: DialogClose,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Footer: DialogFooter,\n Title: DialogTitle,\n Description: DialogDescription,\n})\n","'use client'\n\nimport * as React from 'react'\nimport { Command as CommandPrimitive } from 'cmdk'\nimport { cn } from '@/lib/utils'\nimport { Icon } from '@/components/Icon'\nimport { DialogContent } from '@radix-ui/react-dialog'\nimport { DialogProps } from '@radix-ui/react-dialog'\nimport { Dialog } from '../Dialog'\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md',\n className\n )}\n {...props}\n />\n))\nCommand.displayName = CommandPrimitive.displayName\n\nconst CommandInput = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Input>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input>\n>(({ ...props }, ref) => (\n <div className=\"flex items-center gap-2 border-b px-3\" cmdk-input-wrapper=\"\">\n <Icon name=\"search\" />\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-none disabled:cursor-not-allowed disabled:opacity-50'\n )}\n {...props}\n />\n </div>\n))\n\nCommandInput.displayName = CommandPrimitive.Input.displayName\n\nconst CommandList = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.List>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.List\n ref={ref}\n className={cn('max-h-[300px] overflow-x-hidden overflow-y-auto', className)}\n {...props}\n />\n))\n\nCommandList.displayName = CommandPrimitive.List.displayName\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty\n ref={ref}\n className=\"py-6 text-center text-sm\"\n {...props}\n />\n))\n\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium',\n className\n )}\n {...props}\n />\n))\n\nCommandGroup.displayName = CommandPrimitive.Group.displayName\n\nconst CommandDialog = ({ children, ...props }: DialogProps) => {\n return (\n <Dialog {...props}>\n <DialogContent className=\"overflow-hidden p-0 shadow-lg\">\n <Command className=\"[&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5\">\n {children}\n </Command>\n </DialogContent>\n </Dialog>\n )\n}\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator\n ref={ref}\n className={cn('bg-border -mx-1 h-px', className)}\n {...props}\n />\n))\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n className\n )}\n {...props}\n />\n))\n\nCommandItem.displayName = CommandPrimitive.Item.displayName\n\nconst CommandShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn(\n 'text-muted-foreground ml-auto text-xs tracking-widest',\n className\n )}\n {...props}\n />\n )\n}\nCommandShortcut.displayName = 'CommandShortcut'\n\nexport {\n Command,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandShortcut,\n CommandSeparator,\n CommandDialog,\n}\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nconst oppositeAlignmentMap = {\n start: 'end',\n end: 'start'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n return ['top', 'bottom'].includes(getSide(placement)) ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.replace(/start|end/g, alignment => oppositeAlignmentMap[alignment]);\n}\nfunction getSideList(side, isStart, rtl) {\n const lr = ['left', 'right'];\n const rl = ['right', 'left'];\n const tb = ['top', 'bottom'];\n const bt = ['bottom', 'top'];\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rl : lr;\n return isStart ? lr : rl;\n case 'left':\n case 'right':\n return isStart ? tb : bt;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, side => oppositeSideMap[side]);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const validMiddleware = middleware.filter(Boolean);\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let middlewareData = {};\n let resetCount = 0;\n for (let i = 0; i < validMiddleware.length; i++) {\n const {\n name,\n fn\n } = validMiddleware[i];\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData = {\n ...middlewareData,\n [name]: {\n ...middlewareData[name],\n ...data\n }\n };\n if (reset && resetCount <= 50) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = ['left', 'top'].includes(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = ['top', 'left'].includes(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !['inline', 'contents'].includes(display);\n}\nfunction isTableElement(element) {\n return ['table', 'td', 'th'].includes(getNodeName(element));\n}\nfunction isTopLayer(element) {\n return [':popover-open', ':modal'].some(selector => {\n try {\n return element.matches(selector);\n } catch (e) {\n return false;\n }\n });\n}\nfunction isContainingBlock(elementOrCss) {\n const webkit = isWebKit();\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return ['transform', 'translate', 'scale', 'rotate', 'perspective'].some(value => css[value] ? css[value] !== 'none' : false) || (css.containerType ? css.containerType !== 'normal' : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== 'none' : false) || !webkit && (css.filter ? css.filter !== 'none' : false) || ['transform', 'translate', 'scale', 'rotate', 'perspective', 'filter'].some(value => (css.willChange || '').includes(value)) || ['paint', 'layout', 'strict', 'content'].some(value => (css.contain || '').includes(value));\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (typeof CSS === 'undefined' || !CSS.supports) return false;\n return CSS.supports('-webkit-backdrop-filter', 'none');\n}\nfunction isLastTraversableNode(node) {\n return ['html', 'body', '#document'].includes(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\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 ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, detectOverflow as detectOverflow$1, offset as offset$1, autoPlacement as autoPlacement$1, shift as shift$1, flip as flip$1, size as size$1, hide as hide$1, arrow as arrow$1, inline as inline$1, limitShift as limitShift$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll, ignoreScrollbarX) {\n if (ignoreScrollbarX === void 0) {\n ignoreScrollbarX = false;\n }\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - (ignoreScrollbarX ? 0 :\n // RTL <body> scrollbar.\n getWindowScrollBarX(documentElement, htmlRect));\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isHTMLElement(offsetParent)) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll, true) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && ['absolute', 'fixed'].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstClippingAncestor = clippingAncestors[0];\n const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));\n return {\n width: clippingRect.right - clippingRect.left,\n height: clippingRect.bottom - clippingRect.top,\n x: clippingRect.left,\n y: clippingRect.top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...getOverflowAncestors(floating)] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n resizeObserver.observe(floating);\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, offset as offset$1, shift as shift$1, limitShift as limitShift$1, flip as flip$1, size as size$1, autoPlacement as autoPlacement$1, hide as hide$1, inline as inline$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect, useEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar index = typeof document !== 'undefined' ? useLayoutEffect : useEffect;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => ({\n ...offset$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => ({\n ...shift$1(options),\n options: [options, deps]\n});\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => ({\n ...limitShift$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => ({\n ...flip$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => ({\n ...size$1(options),\n options: [options, deps]\n});\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => ({\n ...autoPlacement$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => ({\n ...hide$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => ({\n ...inline$1(options),\n options: [options, deps]\n});\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => ({\n ...arrow$1(options),\n options: [options, deps]\n});\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// packages/react/arrow/src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/useSize.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/popper/src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n context.onAnchorChange(virtualRef?.current || ref.current);\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/popover/src/popover.tsx\nimport * 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 { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar POPOVER_NAME = \"Popover\";\nvar [createPopoverContext, createPopoverScope] = createContextScope(POPOVER_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [PopoverProvider, usePopoverContext] = createPopoverContext(POPOVER_NAME);\nvar Popover = (props) => {\n const {\n __scopePopover,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = false\n } = props;\n const popperScope = usePopperScope(__scopePopover);\n const triggerRef = React.useRef(null);\n const [hasCustomAnchor, setHasCustomAnchor] = React.useState(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n PopoverProvider,\n {\n scope: __scopePopover,\n contentId: useId(),\n triggerRef,\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n hasCustomAnchor,\n onCustomAnchorAdd: React.useCallback(() => setHasCustomAnchor(true), []),\n onCustomAnchorRemove: React.useCallback(() => setHasCustomAnchor(false), []),\n modal,\n children\n }\n ) });\n};\nPopover.displayName = POPOVER_NAME;\nvar ANCHOR_NAME = \"PopoverAnchor\";\nvar PopoverAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...anchorProps } = props;\n const context = usePopoverContext(ANCHOR_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const { onCustomAnchorAdd, onCustomAnchorRemove } = context;\n React.useEffect(() => {\n onCustomAnchorAdd();\n return () => onCustomAnchorRemove();\n }, [onCustomAnchorAdd, onCustomAnchorRemove]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nPopoverAnchor.displayName = ANCHOR_NAME;\nvar TRIGGER_NAME = \"PopoverTrigger\";\nvar PopoverTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...triggerProps } = props;\n const context = usePopoverContext(TRIGGER_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n const composedTriggerRef = useComposedRefs(forwardedRef, context.triggerRef);\n const trigger = /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.contentId,\n \"data-state\": getState(context.open),\n ...triggerProps,\n ref: composedTriggerRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n return context.hasCustomAnchor ? trigger : /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: trigger });\n }\n);\nPopoverTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"PopoverPortal\";\nvar [PortalProvider, usePortalContext] = createPopoverContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar PopoverPortal = (props) => {\n const { __scopePopover, forceMount, children, container } = props;\n const context = usePopoverContext(PORTAL_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopePopover, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nPopoverPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"PopoverContent\";\nvar PopoverContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopePopover);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.modal ? /* @__PURE__ */ jsx(PopoverContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(PopoverContentNonModal, { ...contentProps, ref: forwardedRef }) });\n }\n);\nPopoverContent.displayName = CONTENT_NAME;\nvar PopoverContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef);\n const isRightClickOutsideRef = React.useRef(false);\n React.useEffect(() => {\n const content = contentRef.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: true,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n event.preventDefault();\n if (!isRightClickOutsideRef.current) context.triggerRef.current?.focus();\n }),\n onPointerDownOutside: composeEventHandlers(\n props.onPointerDownOutside,\n (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n isRightClickOutsideRef.current = isRightClick;\n },\n { checkForDefaultPrevented: false }\n ),\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nvar PopoverContentNonModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = usePopoverContext(CONTENT_NAME, props.__scopePopover);\n const hasInteractedOutsideRef = React.useRef(false);\n const hasPointerDownOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n PopoverContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n onCloseAutoFocus: (event) => {\n props.onCloseAutoFocus?.(event);\n if (!event.defaultPrevented) {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n event.preventDefault();\n }\n hasInteractedOutsideRef.current = false;\n hasPointerDownOutsideRef.current = false;\n },\n onInteractOutside: (event) => {\n props.onInteractOutside?.(event);\n if (!event.defaultPrevented) {\n hasInteractedOutsideRef.current = true;\n if (event.detail.originalEvent.type === \"pointerdown\") {\n hasPointerDownOutsideRef.current = true;\n }\n }\n const target = event.target;\n const targetIsTrigger = context.triggerRef.current?.contains(target);\n if (targetIsTrigger) event.preventDefault();\n if (event.detail.originalEvent.type === \"focusin\" && hasPointerDownOutsideRef.current) {\n event.preventDefault();\n }\n }\n }\n );\n }\n);\nvar PopoverContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopover,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = usePopoverContext(CONTENT_NAME, __scopePopover);\n const popperScope = usePopperScope(__scopePopover);\n useFocusGuards();\n return /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n loop: true,\n trapped: trapFocus,\n onMountAutoFocus: onOpenAutoFocus,\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n \"data-state\": getState(context.open),\n role: \"dialog\",\n id: context.contentId,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-popover-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-popover-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-popover-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-popover-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-popover-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n )\n }\n );\n }\n);\nvar CLOSE_NAME = \"PopoverClose\";\nvar PopoverClose = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...closeProps } = props;\n const context = usePopoverContext(CLOSE_NAME, __scopePopover);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n ...closeProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, () => context.onOpenChange(false))\n }\n );\n }\n);\nPopoverClose.displayName = CLOSE_NAME;\nvar ARROW_NAME = \"PopoverArrow\";\nvar PopoverArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopover, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopePopover);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nPopoverArrow.displayName = ARROW_NAME;\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root2 = Popover;\nvar Anchor2 = PopoverAnchor;\nvar Trigger = PopoverTrigger;\nvar Portal = PopoverPortal;\nvar Content2 = PopoverContent;\nvar Close = PopoverClose;\nvar Arrow2 = PopoverArrow;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n Close,\n Content2 as Content,\n Popover,\n PopoverAnchor,\n PopoverArrow,\n PopoverClose,\n PopoverContent,\n PopoverPortal,\n PopoverTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createPopoverScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client'\n\nimport * as React from 'react'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\n\nimport { cn } from '@/lib/utils'\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverAnchor = PopoverPrimitive.Anchor\n\nconst PopoverPortal = PopoverPrimitive.Portal\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none',\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverPortal }\n","import * as React from 'react'\nimport { Virtuoso } from 'react-virtuoso'\nimport { cn } from '@/lib/utils'\nimport { Button } from '@/components/Button'\nimport {\n Command,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/Command'\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/Popover'\nimport { ButtonProps } from '@/components/Button'\nimport { Icon } from '../Icon'\n\n// I don't like that these aren't based on REM but I'm not sure how to fix it right now\nconst COMBOBOX_CONFIG = {\n heights: {\n row: 32,\n header: 28,\n padding: 8,\n max: 300,\n },\n} as const\n\nexport interface ComboboxOption<T extends string = string> {\n value: T\n label: string\n disabled?: boolean\n}\n\nexport interface ComboboxGroup<T extends string = string> {\n label: string\n options: ComboboxOption<T>[]\n}\n\ntype ComboboxDataProps<T extends string = string> =\n | { options: ComboboxOption<T>[]; groups?: never }\n | { options?: never; groups: ComboboxGroup<T>[] }\n\ninterface ComboboxBaseProps<T extends string = string> {\n value: T\n onValueChange: (value: T | undefined) => void\n variant?: ButtonProps['variant']\n size?: ButtonProps['size']\n disabled?: boolean\n loading?: boolean\n error?: boolean\n errorText?: string\n searchable?: boolean\n placeholder?: string\n emptyText?: string\n searchPlaceholder?: string\n iconOnly?: boolean\n}\n\nexport type ComboboxProps<T extends string = string> = ComboboxBaseProps<T> &\n ComboboxDataProps<T>\n\nexport function Combobox<T extends string = string>({\n options,\n groups,\n value,\n onValueChange,\n variant = 'secondary',\n size = 'md',\n disabled,\n loading,\n error,\n errorText = 'An error occurred',\n searchable = true,\n placeholder = 'Select option...',\n emptyText = 'No option found.',\n searchPlaceholder = 'Search...',\n iconOnly = false,\n}: ComboboxProps<T>) {\n const [open, setOpen] = React.useState(false)\n const [search, setSearch] = React.useState('')\n\n const allOptions = React.useMemo(() => {\n if (options) return options\n if (groups) return groups.flatMap((group) => group.options)\n return []\n }, [options, groups])\n\n // TODO: Make the search more efficient and fuzzier\n const filteredItems = React.useMemo(() => {\n const items = groups || (options ? [{ label: '', options }] : [])\n if (!search) return items\n\n return items\n .map((group) => ({\n label: group.label,\n options: group.options.filter((option) =>\n option.label.toLowerCase().includes(search.toLowerCase())\n ),\n }))\n .filter((group) => group.options.length > 0)\n }, [search, options, groups])\n\n const virtuosoHeight = React.useMemo(() => {\n const { row, header, padding, max } = COMBOBOX_CONFIG.heights\n const shouldShowHeaders = filteredItems.some((group) => group.label)\n const headerHeight = shouldShowHeaders ? filteredItems.length * header : 0\n const contentHeight = filteredItems.reduce(\n (sum, group) => sum + group.options.length * row,\n headerHeight\n )\n\n return Math.min(contentHeight + padding, max)\n }, [filteredItems])\n\n const handleSelect = React.useCallback(\n (currentValue: string) => {\n const newValue = currentValue === value ? undefined : (currentValue as T)\n onValueChange?.(newValue)\n setOpen(false)\n setSearch('')\n },\n [value, onValueChange]\n )\n\n const selectedOption = allOptions.find((option) => option.value === value)\n\n return (\n <Popover open={open} onOpenChange={disabled ? undefined : setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant={variant}\n size={size}\n disabled={disabled}\n aria-expanded={open}\n >\n {loading ? (\n <div className=\"h-4 w-4 animate-spin\">\n <Icon name=\"loader-circle\" />\n </div>\n ) : (\n <div className=\"h-4 w-4 shrink-0 opacity-50\">\n <Icon name=\"chevrons-up-down\" />\n </div>\n )}\n {!iconOnly && <span>{selectedOption?.label || placeholder}</span>}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-[200px] p-0\">\n <Command shouldFilter={false}>\n {searchable && (\n <CommandInput\n value={search}\n onValueChange={setSearch}\n placeholder={searchPlaceholder}\n />\n )}\n <CommandList>\n {error ? (\n <CommandItem disabled>{errorText}</CommandItem>\n ) : filteredItems.length === 0 ? (\n <CommandItem disabled>{emptyText}</CommandItem>\n ) : (\n <Virtuoso\n style={{ height: virtuosoHeight }}\n data={filteredItems}\n itemContent={(_, group) => (\n <CommandGroup heading={group.label}>\n {group.options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.value}\n onSelect={() => handleSelect(option.value)}\n disabled={option.disabled}\n >\n <div\n className={cn(\n 'mr-2 h-4 w-4',\n value === option.value ? 'opacity-100' : 'opacity-0'\n )}\n >\n <Icon name=\"check\" />\n </div>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n )}\n />\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgTypescript = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M2 63.91v62.5h125v-125H2zm100.73-5a15.56 15.56 0 017.82 4.5 20.58 20.58 0 013 4c0 .16-5.4 3.81-8.69 5.85-.12.08-.6-.44-1.13-1.23a7.09 7.09 0 00-5.87-3.53c-3.79-.26-6.23 1.73-6.21 5a4.58 4.58 0 00.54 2.34c.83 1.73 2.38 2.76 7.24 4.86 8.95 3.85 12.78 6.39 15.16 10 2.66 4 3.25 10.46 1.45 15.24-2 5.2-6.9 8.73-13.83 9.9a38.32 38.32 0 01-9.52-.1A23 23 0 0180 109.19c-1.15-1.27-3.39-4.58-3.25-4.82a9.34 9.34 0 011.15-.73l4.6-2.64 3.59-2.08.75 1.11a16.78 16.78 0 004.74 4.54c4 2.1 9.46 1.81 12.16-.62a5.43 5.43 0 00.69-6.92c-1-1.39-3-2.56-8.59-5-6.45-2.78-9.23-4.5-11.77-7.24a16.48 16.48 0 01-3.43-6.25 25 25 0 01-.22-8c1.33-6.23 6-10.58 12.82-11.87a31.66 31.66 0 019.49.26zm-29.34 5.24v5.12H57.16v46.23H45.65V69.26H29.38v-5a49.19 49.19 0 01.14-5.16c.06-.08 10-.12 22-.1h21.81z\" }));\nconst ForwardRef = forwardRef(SvgTypescript);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgGo = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M108.2 64.8c-.1-.1-.2-.2-.4-.2l-.1-.1c-.1-.1-.2-.1-.2-.2l-.1-.1c-.1 0-.2-.1-.2-.1l-.2-.1c-.1 0-.2-.1-.2-.1l-.2-.1c-.1 0-.2-.1-.2-.1-.1 0-.1 0-.2-.1l-.3-.1c-.1 0-.1 0-.2-.1l-.3-.1h-.1l-.4-.1h-.2c-.1 0-.2 0-.3-.1h-2.3c-.6-13.3.6-26.8-2.8-39.6 12.9-4.6 2.8-22.3-8.4-14.4-7.4-6.4-17.6-7.8-28.3-7.8-10.5.7-20.4 2.9-27.4 8.4-2.8-1.4-5.5-1.8-7.9-1.1v.1c-.1 0-.3.1-.4.2-.1 0-.3.1-.4.2h-.1c-.1 0-.2.1-.4.2h-.1l-.3.2h-.1l-.3.2h-.1l-.3.2s-.1 0-.1.1l-.3.2s-.1 0-.1.1l-.3.2s-.1 0-.1.1l-.3.2-.1.1c-.1.1-.2.1-.2.2l-.1.1-.2.2-.1.1c-.1.1-.1.2-.2.2l-.1.1c-.1.1-.1.2-.2.2l-.1.1c-.1.1-.1.2-.2.2l-.1.1c-.1.1-.1.2-.2.2l-.1.1c-.1.1-.1.2-.2.2l-.1.1-.1.3s0 .1-.1.1l-.1.3s0 .1-.1.1l-.1.3s0 .1-.1.1l-.1.3s0 .1-.1.1c.4.3.4.4.4.4v.1l-.1.3v.1c0 .1 0 .2-.1.3v3.1c0 .1 0 .2.1.3v.1l.1.3v.1l.1.3s0 .1.1.1l.1.3s0 .1.1.1l.1.3s0 .1.1.1l.2.3s0 .1.1.1l.2.3s0 .1.1.1l.2.3.1.1.3.3.3.3h.1c1 .9 2 1.6 4 2.2v-.2C23 37.3 26.5 50 26.7 63c-.6 0-.7.4-1.7.5h-.5c-.1 0-.3 0-.5.1-.1 0-.3 0-.4.1l-.4.1h-.1l-.4.1h-.1l-.3.1h-.1l-.3.1s-.1 0-.1.1l-.3.1-.2.1c-.1 0-.2.1-.2.1l-.2.1-.2.1c-.1 0-.2.1-.2.1l-.2.1-.4.3c-.1.1-.2.2-.3.2l-.4.4-.1.1c-.1.2-.3.4-.4.5l-.2.3-.3.6-.1.3v.3c0 .5.2.9.9 1.2.2 3.7 3.9 2 5.6.8l.1-.1c.2-.2.5-.3.6-.3h.1l.2-.1c.1 0 .1 0 .2-.1.2-.1.4-.1.5-.2.1 0 .1-.1.1-.2l.1-.1c.1-.2.2-.6.2-1.2l.1-1.3v1.8c-.5 13.1-4 30.7 3.3 42.5 1.3 2.1 2.9 3.9 4.7 5.4h-.5c-.2.2-.5.4-.8.6l-.9.6-.3.2-.6.4-.9.7-1.1 1c-.2.2-.3.4-.4.5l-.4.6-.2.3c-.1.2-.2.4-.2.6l-.1.3c-.2.8 0 1.7.6 2.7l.4.4h.2c.1 0 .2 0 .4.1.2.4 1.2 2.5 3.9.9 2.8-1.5 4.7-4.6 8.1-5.1l-.5-.6c5.9 2.8 12.8 4 19 4.2 8.7.3 18.6-.9 26.5-5.2 2.2.7 3.9 3.9 5.8 5.4l.1.1.1.1.1.1.1.1s.1 0 .1.1c0 0 .1 0 .1.1 0 0 .1 0 .1.1h2.1s.1 0 .1-.1h.1s.1 0 .1-.1h.1s.1 0 .1-.1c0 0 .1 0 .1-.1l.1-.1s.1 0 .1-.1l.1-.1h.1l.2-.2.2-.1h.1l.1-.1h.1l.1-.1.1-.1.1-.1.1-.1.1-.1.1-.1.1-.1v-.1s0-.1.1-.1v-.1s0-.1.1-.1v-.1s0-.1.1-.1v-1.4s-.3 0-.3-.1l-.3-.1v-.1l.3-.1s.2 0 .2-.1l.1-.1v-2.1s0-.1-.1-.1v-.1s0-.1-.1-.1v-.1s0-.1-.1-.1c0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1 0 0 0-.1-.1-.1l-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1v-.1l-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1-.1c2-1.9 3.8-4.2 5.1-6.9 5.9-11.8 4.9-26.2 4.1-39.2h.1c.1 0 .2.1.2.1h.3s.1 0 .1.1h.1s.1 0 .1.1l.2.1c1.7 1.2 5.4 2.9 5.6-.8 1.6.6-.3-1.8-1.3-2.5zM36 23C32.8 7 58.4 4 59.3 19.6c.8 13-20 16.3-23.3 3.4zm36.1 15c-1.3 1.4-2.7 1.2-4.1.7 0 1.9.4 3.9.1 5.9-.5.9-1.5 1-2.3 1.4-1.2-.2-2.1-.9-2.6-2l-.2-.1c-3.9 5.2-6.3-1.1-5.2-5-1.2.1-2.2-.2-3-1.5-1.4-2.6.7-5.8 3.4-6.3.7 3 8.7 2.6 10.1-.2 3.1 1.5 6.5 4.3 3.8 7.1zm-7-17.5c-.9-13.8 20.3-17.5 23.4-4 3.5 15-20.8 18.9-23.4 4zM41.7 17c-1.9 0-3.5 1.7-3.5 3.8 0 2.1 1.6 3.8 3.5 3.8s3.5-1.7 3.5-3.8c0-2.1-1.5-3.8-3.5-3.8zm1.6 5.7c-.5 0-.8-.4-.8-1 0-.5.4-1 .8-1 .5 0 .8.4.8 1 0 .5-.3 1-.8 1zm27.8-6.6c-1.9 0-3.4 1.7-3.4 3.8 0 2.1 1.5 3.8 3.4 3.8s3.4-1.7 3.4-3.8c0-2.1-1.5-3.8-3.4-3.8zm1.6 5.6c-.4 0-.8-.4-.8-1 0-.5.4-1 .8-1s.8.4.8 1-.4 1-.8 1z\" }));\nconst ForwardRef = forwardRef(SvgGo);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgJava = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M47.617 98.12c-19.192 5.362 11.677 16.439 36.115 5.969-4.003-1.556-6.874-3.351-6.874-3.351-10.897 2.06-15.952 2.222-25.844 1.092-8.164-.935-3.397-3.71-3.397-3.71zm33.189-10.46c-14.444 2.779-22.787 2.69-33.354 1.6-8.171-.845-2.822-4.805-2.822-4.805-21.137 7.016 11.767 14.977 41.309 6.336-3.14-1.106-5.133-3.131-5.133-3.131zm11.319-60.575c.001 0-42.731 10.669-22.323 34.187 6.024 6.935-1.58 13.17-1.58 13.17s15.289-7.891 8.269-17.777c-6.559-9.215-11.587-13.793 15.634-29.58zm9.998 81.144s3.529 2.91-3.888 5.159c-14.102 4.272-58.706 5.56-71.095.171-4.45-1.938 3.899-4.625 6.526-5.192 2.739-.593 4.303-.485 4.303-.485-4.952-3.487-32.013 6.85-13.742 9.815 49.821 8.076 90.817-3.637 77.896-9.468zM85 77.896c2.395-1.634 5.703-3.053 5.703-3.053s-9.424 1.685-18.813 2.474c-11.494.964-23.823 1.154-30.012.326-14.652-1.959 8.033-7.348 8.033-7.348s-8.812-.596-19.644 4.644C17.455 81.134 61.958 83.958 85 77.896zm5.609 15.145c-.108.29-.468.616-.468.616 31.273-8.221 19.775-28.979 4.822-23.725-1.312.464-2 1.543-2 1.543s.829-.334 2.678-.72c7.559-1.575 18.389 10.119-5.032 22.286zM64.181 70.069c-4.614-10.429-20.26-19.553.007-35.559C89.459 14.563 76.492 1.587 76.492 1.587c5.23 20.608-18.451 26.833-26.999 39.667-5.821 8.745 2.857 18.142 14.688 28.815zm27.274 51.748c-19.187 3.612-42.854 3.191-56.887.874 0 0 2.874 2.38 17.646 3.331 22.476 1.437 57-.8 57.816-11.436.001 0-1.57 4.032-18.575 7.231z\" }));\nconst ForwardRef = forwardRef(SvgJava);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgPython = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z\" }));\nconst ForwardRef = forwardRef(SvgPython);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgCsharp = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M117.5 33.5l.3-.2c-.6-1.1-1.5-2.1-2.4-2.6L67.1 2.9c-.8-.5-1.9-.7-3.1-.7-1.2 0-2.3.3-3.1.7l-48 27.9c-1.7 1-2.9 3.5-2.9 5.4v55.7c0 1.1.2 2.3.9 3.4l-.2.1c.5.8 1.2 1.5 1.9 1.9l48.2 27.9c.8.5 1.9.7 3.1.7 1.2 0 2.3-.3 3.1-.7l48-27.9c1.7-1 2.9-3.5 2.9-5.4V36.1c.1-.8 0-1.7-.4-2.6zm-53.5 70c-21.8 0-39.5-17.7-39.5-39.5S42.2 24.5 64 24.5c14.7 0 27.5 8.1 34.3 20l-13 7.5C81.1 44.5 73.1 39.5 64 39.5c-13.5 0-24.5 11-24.5 24.5s11 24.5 24.5 24.5c9.1 0 17.1-5 21.3-12.4l12.9 7.6c-6.8 11.8-19.6 19.8-34.2 19.8zM115 62h-3.2l-.9 4h4.1v5h-5l-1.2 6h-4.9l1.2-6h-3.8l-1.2 6h-4.8l1.2-6H94v-5h3.5l.9-4H94v-5h5.3l1.2-6h4.9l-1.2 6h3.8l1.2-6h4.8l-1.2 6h2.2v5zm-12.7 4h3.8l.9-4h-3.8z\" }));\nconst ForwardRef = forwardRef(SvgCsharp);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgTerraform = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"g\", { fillRule: \"evenodd\" }, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M46.324 26.082L77.941 44.5v36.836L46.324 62.918zm0 0M81.41 44.5v36.836l31.633-18.418V26.082zm0 0M11.242 5.523V42.36L42.86 60.777V23.941zm0 0M77.941 85.375L46.324 66.957v36.824L77.941 122.2zm0 0\" })));\nconst ForwardRef = forwardRef(SvgTerraform);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgUnity = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M59.049 0 7.339 29.855V89.56l19.825-11.45V54.714c.009-.402.225-.771.573-.967a1.13 1.13 0 0 1 1.129-.008l24.087 13.9a2.275 2.275 0 0 1 1.133 1.97v27.8a1.156 1.156 0 0 1-.565.98 1.131 1.131 0 0 1-1.124.012l-20.27-11.718-19.832 11.46L63.991 128l51.702-29.856-19.817-11.46-20.261 11.703a1.151 1.151 0 0 1-1.124-.008 1.145 1.145 0 0 1-.568-.976V69.608c0-.82.424-1.56 1.133-1.968L99.13 53.737a1.119 1.119 0 0 1 1.124.008c.352.196.572.565.575.967v23.396l19.83 11.454V29.855h-.009L68.96 0v22.9l20.26 11.696c.347.204.555.577.555.984 0 .403-.212.773-.555.976L65.137 50.468a2.302 2.302 0 0 1-2.27 0L38.791 36.556a1.122 1.122 0 0 1-.56-.976 1.127 1.127 0 0 1 .56-.984L59.048 22.9zm0 0\" }));\nconst ForwardRef = forwardRef(SvgUnity);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgPhp = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M64 30.332C28.654 30.332 0 45.407 0 64s28.654 33.668 64 33.668c35.345 0 64-15.075 64-33.668S99.346 30.332 64 30.332zm-5.982 9.81h7.293v.003l-1.745 8.968h6.496c4.087 0 6.908.714 8.458 2.139 1.553 1.427 2.017 3.737 1.398 6.93l-3.053 15.7h-7.408l2.902-14.929c.33-1.698.208-2.855-.365-3.473-.573-.617-1.793-.925-3.658-.925h-5.828L58.752 73.88h-7.291l6.557-33.738zM26.73 49.114h14.133c4.252 0 7.355 1.116 9.305 3.348 1.95 2.232 2.536 5.346 1.758 9.346-.32 1.649-.863 3.154-1.625 4.52-.763 1.364-1.76 2.613-2.99 3.745-1.468 1.373-3.098 2.353-4.891 2.936-1.794.585-4.08.875-6.858.875h-6.294l-1.745 8.97h-7.35l6.557-33.74zm57.366 0h14.13c4.252 0 7.353 1.116 9.303 3.348h.002c1.95 2.232 2.538 5.346 1.76 9.346-.32 1.649-.861 3.154-1.623 4.52-.763 1.364-1.76 2.613-2.992 3.745-1.467 1.373-3.098 2.353-4.893 2.936-1.794.585-4.077.875-6.855.875h-6.295l-1.744 8.97h-7.35l6.557-33.74zm-51.051 5.325-2.742 14.12h4.468c2.963 0 5.172-.556 6.622-1.673 1.45-1.116 2.428-2.981 2.937-5.592.485-2.507.264-4.279-.666-5.309-.93-1.032-2.79-1.547-5.584-1.547h-5.035zm57.363 0-2.744 14.12h4.47c2.965 0 5.17-.556 6.622-1.673 1.449-1.116 2.427-2.981 2.935-5.592.487-2.507.266-4.279-.664-5.309-.93-1.032-2.792-1.547-5.584-1.547h-5.035z\" }));\nconst ForwardRef = forwardRef(SvgPhp);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgSwift = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M125.54 26.23a28.78 28.78 0 00-2.65-7.58 28.84 28.84 0 00-4.76-6.32 23.42 23.42 0 00-6.62-4.55 27.27 27.27 0 00-7.68-2.53c-2.65-.51-5.56-.51-8.21-.76H30.25a45.46 45.46 0 00-6.09.51 21.81 21.81 0 00-5.82 1.52c-.53.25-1.32.51-1.85.76a33.82 33.82 0 00-5 3.28c-.53.51-1.06.76-1.59 1.26a22.41 22.41 0 00-4.76 6.32 23.61 23.61 0 00-2.65 7.58 78.47 78.47 0 00-.79 7.83v60.39a39.32 39.32 0 00.79 7.83 28.78 28.78 0 002.65 7.58 28.84 28.84 0 004.76 6.32 23.42 23.42 0 006.62 4.55 27.27 27.27 0 007.68 2.53c2.65.51 5.56.51 8.21.76h63.22a45.08 45.08 0 008.21-.76 27.27 27.27 0 007.68-2.53 30.13 30.13 0 006.62-4.55 22.41 22.41 0 004.76-6.32 23.61 23.61 0 002.65-7.58 78.47 78.47 0 00.79-7.83V34.06a39.32 39.32 0 00-.8-7.83zm-18.79 75.54C101 91 90.37 94.33 85 96.5c-11.11 6.13-26.38 6.76-41.75.47A64.53 64.53 0 0113.84 73a50 50 0 0010.85 6.32c15.87 7.1 31.73 6.61 42.9 0-15.9-11.66-29.4-26.82-39.46-39.2a43.47 43.47 0 01-5.29-6.82c12.16 10.61 31.5 24 38.38 27.79a271.77 271.77 0 01-27-32.34 266.8 266.8 0 0044.47 34.87c.71.38 1.26.7 1.7 1a32.71 32.71 0 001.21-3.51c3.71-12.89-.53-27.54-9.79-39.67C93.25 33.81 106 57.05 100.66 76.51c-.14.53-.29 1-.45 1.55l.19.22c10.6 12.63 7.67 26.02 6.35 23.49z\" }));\nconst ForwardRef = forwardRef(SvgSwift);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgRuby = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 128 128\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"m35.971 111.33 81.958 11.188c-9.374-15.606-18.507-30.813-27.713-46.144Zm89.71-86.383L93.513 73.339c-.462.696-1.061 1.248-.41 2.321 8.016 13.237 15.969 26.513 23.942 39.777 1.258 2.095 2.53 4.182 4.157 6.192l4.834-96.58zM16.252 66.22c.375.355 1.311.562 1.747.347 7.689-3.779 15.427-7.474 22.948-11.564 2.453-1.333 4.339-3.723 6.452-5.661 6.997-6.417 13.983-12.847 20.966-19.278.427-.395.933-.777 1.188-1.275 2.508-4.902 4.973-9.829 7.525-14.898-3.043-1.144-5.928-2.263-8.849-3.281-.396-.138-1.02.136-1.449.375-6.761 3.777-13.649 7.353-20.195 11.472-3.275 2.061-5.943 5.098-8.843 7.743-4.674 4.266-9.342 8.542-13.948 12.882a24.011 24.011 0 0 0-3.288 3.854c-3.15 4.587-6.206 9.24-9.402 14.025 1.786 1.847 3.41 3.613 5.148 5.259zm28.102-6.271-11.556 48.823 54.3-34.987zm76.631-34.846-46.15 7.71 15.662 38.096zM44.996 56.644l41.892 13.6c-5.25-12.79-10.32-25.133-15.495-37.737ZM16.831 75.643 2.169 110.691l27.925-.825Zm13.593 26.096.346-.076c3.353-13.941 6.754-27.786 10.177-42.272L18.544 71.035c3.819 9.926 7.891 20.397 11.88 30.704zm84.927-78.897c-4.459-1.181-8.918-2.366-13.379-3.539-6.412-1.686-12.829-3.351-19.237-5.052-.801-.213-1.38-.352-1.851.613-2.265 4.64-4.6 9.245-6.901 13.868-.071.143-.056.328-.111.687l41.47-6.285zM89.482 12.288l36.343 10.054-6.005-17.11-30.285 6.715ZM33.505 114.007c-4.501-.519-9.122-.042-13.687.037-3.75.063-7.5.206-11.25.323-.386.012-.771.09-1.156.506 31.003 2.866 62.005 5.732 93.007 8.6l.063-.414-29.815-4.07c-12.384-1.691-24.747-3.551-37.162-4.982ZM2.782 99.994c3.995-9.27 7.973-18.546 11.984-27.809.401-.929.37-1.56-.415-2.308-1.678-1.597-3.237-3.318-5.071-5.226-2.479 12.24-4.897 24.177-7.317 36.113l.271.127c.185-.297.411-.578.548-.897zm78.74-90.153c6.737-1.738 13.572-3.097 20.367-4.613.44-.099.87-.244 1.303-.368l-.067-.332-29.194 3.928c2.741 1.197 4.853 2.091 7.591 1.385z\" }));\nconst ForwardRef = forwardRef(SvgRuby);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgPostman = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { viewBox: \"0 0 128 128\", xmlns: \"http://www.w3.org/2000/svg\", ref, \"aria-labelledby\": titleId, ...props }, title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { fill: \"currentColor\", d: \"M62.988 1.943c-12.929.2-25.904 4.428-36.925 12.94-27.125 20.953-32.13 59.93-11.176 87.055 20.957 27.123 59.937 32.124 87.058 11.167 27.114-20.952 32.118-59.918 11.172-87.039C100.68 9.96 81.884 1.65 62.988 1.943zm28.875 23.139a9.27 9.27 0 0 1 5.586 1.914l-8.068 8.117a.84.84 0 0 0-.076.098.83.83 0 0 0-.239.55.832.832 0 0 0 .313.65h.002l6.1 6.1a9.044 9.044 0 0 1-10.028-1.913c-2.586-2.6-3.336-6.504-1.953-9.891 1.383-3.39 4.68-5.605 8.363-5.625zm7.12 3.432a8.87 8.87 0 0 1 2.033 5.674 9.15 9.15 0 0 1-2.688 6.464 9.989 9.989 0 0 1-1.098.895L92.307 36.7l-.963-.963.265-.265 7.373-6.96zm-.366 4.193a.777.777 0 0 0-.55.031.731.731 0 0 0-.36.426.73.73 0 0 0 .05.559 2.226 2.226 0 0 1-.257 2.328.64.64 0 0 0-.195.488c.004.184.07.36.195.492a.58.58 0 0 0 .414 0 .68.68 0 0 0 .672-.207 3.573 3.573 0 0 0 .465-3.777v.004a.777.777 0 0 0-.434-.344zM79.34 39.43a5.584 5.584 0 0 1 3.31 1.226 4.756 4.756 0 0 0-2.681 1.34L57.162 64.701l-4.476-4.476c11.828-11.772 19.06-17.921 23.556-19.936a5.584 5.584 0 0 1 3.098-.86zm3.965 2.96a2.895 2.895 0 0 1 2.043.844 2.786 2.786 0 0 1 .879 2.121 2.869 2.869 0 0 1-.985 2.07l-24.25 21.106-2.617-2.617 22.887-22.68a2.895 2.895 0 0 1 2.043-.843zm2.994 6.698c-1.69 6.702-10.647 15.783-19.987 24.607l-3.777-3.773L86.3 49.088zM51.367 61.547l.274.27 3.513 3.513-9.63 2.06 5.843-5.843zm5.793 5.84.004.004 1.168 1.195a1.086 1.086 0 0 0 .018.084l.078.012.248.254.82.84-5.385.66 3.05-3.05zm3.867 4.076 3.578 3.576A126.992 126.992 0 0 1 38.75 91.695a1.44 1.44 0 0 0-.777 1.653l1.035 4.5a.31.31 0 0 1 0 .363.31.31 0 0 1-.414 0l-6.102-6.152L51.3 72.975l9.728-1.512zm-29.933 21.94.869.814 4.492 4.492-10.016-.648 4.655-4.659z\" }));\nconst ForwardRef = forwardRef(SvgPostman);\nexport default ForwardRef;\n","import * as React from \"react\";\nimport { forwardRef } from \"react\";\nconst SvgJson = ({\n title,\n titleId,\n ...props\n}, ref) => /* @__PURE__ */ React.createElement(\"svg\", { fill: \"#000000\", width: \"800px\", height: \"800px\", viewBox: \"0 0 24 24\", role: \"img\", xmlns: \"http://www.w3.org/2000/svg\", ref, \"aria-labelledby\": titleId, ...props }, title === void 0 ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, \"JSON icon\") : title ? /* @__PURE__ */ React.createElement(\"title\", { id: titleId }, title) : null, /* @__PURE__ */ React.createElement(\"path\", { d: \"M12.043 23.968c.479-.004.953-.029 1.426-.094 1.08-.138 2.143-.433 3.146-.863 1.409-.602 2.698-1.471 3.793-2.543 1.003-.989 1.842-2.151 2.44-3.427.509-1.097.869-2.274 1.02-3.476.149-1.16.135-2.346-.045-3.499-.149-.96-.419-1.896-.793-2.788-.24-.561-.525-1.101-.854-1.617-1.168-1.837-2.861-3.314-4.81-4.301-.693-.355-1.423-.645-2.172-.869h-.005c.119.063.24.132.345.201.12.074.239.146.351.225.569.385 1.094.827 1.559 1.33 1.063 1.145 1.797 2.548 2.218 4.041.284.982.434 1.998.495 3.017.044.743.044 1.491-.047 2.229-.149 1.27-.554 2.51-1.228 3.596-.495.803-1.14 1.519-1.903 2.084-1.244.928-2.877 1.482-4.436 1.114-.254-.061-.51-.146-.748-.258-.271-.124-.54-.277-.779-.449-.465-.311-.885-.685-1.244-1.106-.435-.52-.794-1.111-1.049-1.747-.314-.806-.479-1.672-.494-2.54-.03-1.273.225-2.553.854-3.67.42-.744.989-1.396 1.663-1.918.225-.178.464-.333.704-.479l.016-.007c-.466-.105-.96-.151-1.441-.12-.418.029-.823.105-1.228.239-.359.12-.704.271-1.019.45-.255.149-.508.315-.733.495-.211.18-.42.359-.615.555-1.123 1.153-1.768 2.682-2.022 4.256-.15.973-.15 1.961-.091 2.951.105 1.394.391 2.786.945 4.061.344.794.793 1.527 1.348 2.173.854.987 1.934 1.753 3.132 2.231.675.271 1.394.465 2.113.54.074.015.149.015.209.015l-.021-.032zm-2.934-.398c-.164-.07-.314-.149-.45-.228-.149-.083-.3-.168-.449-.259-.585-.362-1.108-.787-1.589-1.275-1.094-1.138-1.827-2.567-2.247-4.081-.284-1.034-.435-2.102-.495-3.172-.044-.703-.029-1.393.046-2.082.135-1.257.495-2.501 1.124-3.58.449-.794 1.063-1.498 1.783-2.053.494-.374 1.049-.69 1.633-.9.824-.299 1.708-.389 2.563-.27.33.045.658.121.959.225.029 0 .029 0 .045.03.015.015.045.015.06.03.045.016.104.045.165.074.239.12.479.271.704.42.899.629 1.633 1.498 2.097 2.502.42.914.615 1.934.631 2.938.014 1.079-.18 2.157-.645 3.146-.555 1.184-1.498 2.188-2.638 2.832.09.03.18.045.271.075.225.044.449.074.688.074 1.468.045 2.892-.659 3.94-1.647.195-.18.375-.375.54-.585.225-.27.435-.539.614-.823.239-.375.435-.75.614-1.154.226-.539.404-1.094.509-1.664.196-1.004.211-2.022.149-3.026-.135-2.022-.673-4.045-1.842-5.724-.18-.254-.359-.494-.555-.719-.329-.375-.689-.719-1.063-1.034-.42-.345-.885-.659-1.363-.915-.493-.223-1.078-.447-1.692-.598l-.3-.06c-.209-.03-.42-.044-.634-.06-.325-.015-.669-.01-1.015.016-.704.045-1.412.16-2.112.337-3.356.866-6.292 3.205-7.855 6.308C.799 7.657.445 8.714.238 9.8c-.239 1.243-.27 2.523-.104 3.775.12 1.02.374 2.023.778 2.977.227.57.511 1.124.825 1.648 1.094 1.783 2.683 3.236 4.51 4.24.688.391 1.408.69 2.157.945.226.074.45.149.689.209l.016-.024z\" }));\nconst ForwardRef = forwardRef(SvgJson);\nexport default ForwardRef;\n","import { Size } from '@/types'\nimport { SupportedLanguage } from '@/types'\n\nimport TypeScriptIcon from '@/assets/icons/languages/typescript.svg?react'\nimport GoIcon from '@/assets/icons/languages/go.svg?react'\nimport JavaIcon from '@/assets/icons/languages/java.svg?react'\nimport PythonIcon from '@/assets/icons/languages/python.svg?react'\nimport CSharpIcon from '@/assets/icons/languages/csharp.svg?react'\nimport TerraformIcon from '@/assets/icons/languages/terraform.svg?react'\nimport UnityIcon from '@/assets/icons/languages/unity.svg?react'\nimport PhpIcon from '@/assets/icons/languages/php.svg?react'\nimport SwiftIcon from '@/assets/icons/languages/swift.svg?react'\nimport RubyIcon from '@/assets/icons/languages/ruby.svg?react'\nimport PostmanIcon from '@/assets/icons/languages/postman.svg?react'\nimport JSONIcon from '@/assets/icons/languages/json.svg?react'\nimport { cn } from '@/lib/utils'\n\nconst sizeMap: Record<Size, number> = {\n small: 32,\n medium: 40,\n large: 48,\n xl: 64,\n '2xl': 80,\n}\n\nconst iconSizeMap: Record<Size, number> = {\n small: 16,\n medium: 24,\n large: 32,\n xl: 48,\n '2xl': 64,\n}\n\nconst icons: Record<\n SupportedLanguage,\n React.FC<React.SVGProps<SVGSVGElement>>\n> = {\n typescript: TypeScriptIcon,\n go: GoIcon,\n java: JavaIcon,\n python: PythonIcon,\n csharp: CSharpIcon,\n terraform: TerraformIcon,\n unity: UnityIcon,\n php: PhpIcon,\n swift: SwiftIcon,\n ruby: RubyIcon,\n postman: PostmanIcon,\n json: JSONIcon,\n}\n\nexport interface TargetLanguageIconProps {\n language: SupportedLanguage\n size?: Size\n className?: string\n}\n\nexport function TargetLanguageIcon({\n language,\n size = 'medium',\n className,\n}: TargetLanguageIconProps) {\n const IconComponent = icons[language]\n\n return (\n <div\n className={cn(\n 'bg-background/50 flex items-center justify-center rounded-lg border p-2',\n className\n )}\n style={{\n width: sizeMap[size],\n height: sizeMap[size],\n }}\n >\n <IconComponent\n style={{\n width: iconSizeMap[size],\n height: iconSizeMap[size],\n }}\n />\n </div>\n )\n}\n","import { Size } from '@/types'\n\nexport const userAvatarSizeMap: Record<Size, number> = {\n small: 8,\n medium: 12,\n large: 16,\n xl: 24,\n '2xl': 32,\n}\n\nexport const userAvatarSizeMapper = (size: Size) =>\n `size-${userAvatarSizeMap[size]}`\n","import { cn, getResponsiveClasses } from '@/lib/utils'\nimport { ResponsiveValue, Size } from '@/types'\nimport { userAvatarSizeMap } from './sizeMap'\nimport useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'\nimport { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'\nimport { userAvatarSizeMapper } from './sizeMap'\n\nexport interface UserAvatarProps {\n name: string\n imageUrl?: string\n size?: ResponsiveValue<Size>\n border?: boolean\n className?: string\n}\n\nconst fallbackColors = [\n 'bg-red-500',\n 'bg-orange-500',\n 'bg-yellow-500',\n 'bg-green-500',\n 'bg-blue-500',\n 'bg-purple-500',\n 'bg-pink-500',\n]\n\n// deterministically returns a color based on the first letter of the name\nfunction getFallbackColor(name: string | undefined) {\n if (!name) return 'bg-gray-900'\n const firstLetter = name[0].toLowerCase()\n\n const index = firstLetter.charCodeAt(0) - 'a'.charCodeAt(0)\n return fallbackColors[index % fallbackColors.length]\n}\n\nexport function UserAvatar({\n name,\n imageUrl,\n size = 'medium',\n border = false,\n className,\n}: UserAvatarProps) {\n const breakpoint = useTailwindBreakpoint()\n\n const resolvedSize = resolveSizeForBreakpoint(breakpoint, size, 'medium')\n const sizeValue = userAvatarSizeMap[resolvedSize]\n\n const hasImage = !!imageUrl\n\n return (\n <div\n className={cn(\n 'flex items-center justify-center overflow-hidden rounded-full bg-gray-200',\n getResponsiveClasses(size, userAvatarSizeMapper),\n !hasImage && getFallbackColor(name),\n border && 'border-background border-2',\n className\n )}\n >\n {hasImage ? (\n <img\n src={imageUrl}\n alt={name}\n className=\"h-full w-full object-cover object-center select-none\"\n />\n ) : (\n <svg\n className=\"h-full w-full select-none\"\n viewBox={`0 0 ${sizeValue} ${sizeValue}`}\n preserveAspectRatio=\"xMidYMid meet\"\n >\n <text\n x=\"50%\"\n y=\"50%\"\n textAnchor=\"middle\"\n alignmentBaseline=\"middle\"\n fill=\"white\"\n fontSize={sizeValue * 0.75}\n dy=\"0.075em\"\n fontWeight=\"semibold\"\n >\n {name[0] || '✖️'}\n </text>\n </svg>\n )}\n </div>\n )\n}\n","import { cn } from '@/lib/utils'\nimport { motion, Transition, AnimatePresence } from 'motion/react'\nimport {\n useState,\n useRef,\n useEffect,\n useCallback,\n useLayoutEffect,\n memo,\n forwardRef,\n} from 'react'\n\nexport interface SubnavItem {\n label: string\n href: string\n active?: boolean\n\n [key: string]: unknown\n}\n\nexport interface SubnavProps {\n items: SubnavItem[]\n renderItem: (item: SubnavItem) => React.ReactNode\n className?: string\n}\n\nconst POSITION_TRANSITION: Transition = {\n type: 'spring',\n stiffness: 300,\n damping: 30,\n mass: 0.8,\n duration: 0.35,\n}\n\nconst SCALE_TRANSITION: Transition = {\n type: 'spring',\n stiffness: 400,\n damping: 40,\n mass: 0.7,\n duration: 0.25,\n}\n\nconst FADE_TRANSITION: Transition = {\n type: 'tween',\n ease: [0.215, 0.61, 0.355, 1],\n duration: 0.2,\n}\n\nconst useDebounce = (callback: () => void, delay: number) => {\n const timeoutRef = useRef<ReturnType<typeof setTimeout>>()\n\n useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n }\n }, [])\n\n return useCallback(() => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n }\n timeoutRef.current = setTimeout(callback, delay)\n }, [callback, delay])\n}\n\nexport function Subnav({ items, renderItem, className }: SubnavProps) {\n const [activeItem, setActiveItem] = useState<string | null>(\n items.find((item) => item.active)?.href ?? null\n )\n const [hoveredItem, setHoveredItem] = useState<string | null>(null)\n const [baseWidth, setBaseWidth] = useState<number>(0)\n const [activeIndicatorProps, setActiveIndicatorProps] = useState<{\n scaleX: number\n left: number\n } | null>(null)\n const [indicatorProps, setIndicatorProps] = useState<{\n scaleX: number\n left: number\n } | null>(null)\n\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map())\n const previousHoveredItem = useRef<string | null>(null)\n const isContainerHovered = useRef(false)\n const hasInitialized = useRef(false)\n\n useLayoutEffect(() => {\n const newActiveItem: string =\n items.find((item) => item.active)?.href ?? items[0]?.href\n setActiveItem(newActiveItem)\n }, [items])\n\n useLayoutEffect(() => {\n if (!hasInitialized.current && activeItem) {\n const element = itemRefs.current.get(activeItem)\n if (element) {\n setBaseWidth(element.offsetWidth)\n hasInitialized.current = true\n }\n }\n }, [activeItem])\n\n useLayoutEffect(() => {\n if (!activeItem || !baseWidth) {\n setActiveIndicatorProps(null)\n return\n }\n\n const itemElement = itemRefs.current.get(activeItem)\n if (!itemElement) {\n setActiveIndicatorProps(null)\n return\n }\n\n const itemWidth = itemElement.offsetWidth\n const itemLeft = itemElement.offsetLeft\n const centerOffset = (itemWidth - baseWidth) / 2\n\n setActiveIndicatorProps({\n scaleX: itemWidth / baseWidth,\n left: itemLeft + centerOffset,\n })\n\n /**\n * Subnav can be contextual to a page and therefore items can change.\n * items needs to be in the dependancy array even though it's not used in the effect\n * so the position of the indicator is accurate when the menu items change between pages\n */\n }, [activeItem, baseWidth, items])\n\n useLayoutEffect(() => {\n if (!hoveredItem || !baseWidth) {\n setIndicatorProps(null)\n return\n }\n\n const itemElement = itemRefs.current.get(hoveredItem)\n if (!itemElement) {\n setIndicatorProps(null)\n return\n }\n\n const itemWidth = itemElement.offsetWidth\n const itemLeft = itemElement.offsetLeft\n const centerOffset = (itemWidth - baseWidth) / 2\n\n setIndicatorProps({\n scaleX: itemWidth / baseWidth,\n left: itemLeft + centerOffset,\n })\n\n /**\n * Subnav can be contextual to a page and therefore items can change.\n * items needs to be in the dependancy array even though it's not used in the effect\n * so the position of the indicator is accurate when the menu items change between pages\n */\n }, [hoveredItem, baseWidth, items])\n\n const debouncedResize = useDebounce(() => {\n if (activeItem) {\n const element = itemRefs.current.get(activeItem)\n if (element) {\n setBaseWidth(element.offsetWidth)\n }\n }\n }, 100)\n\n useEffect(() => {\n window.addEventListener('resize', debouncedResize)\n return () => window.removeEventListener('resize', debouncedResize)\n }, [debouncedResize])\n\n const handleItemClick = useCallback((href: string) => {\n setActiveItem(href)\n }, [])\n\n const handleContainerMouseEnter = useCallback(() => {\n isContainerHovered.current = true\n }, [])\n\n const handleContainerMouseLeave = useCallback(() => {\n isContainerHovered.current = false\n previousHoveredItem.current = null\n setHoveredItem(null)\n }, [])\n\n const handleItemHover = useCallback(\n (href: string | null) => {\n if (href !== null) {\n previousHoveredItem.current = hoveredItem\n }\n setHoveredItem(href)\n },\n [hoveredItem]\n )\n\n const shouldSlide =\n previousHoveredItem.current !== null && isContainerHovered.current\n\n const getItemHandlers = useCallback(\n (href: string) => {\n return {\n onClick: () => handleItemClick(href),\n onMouseEnter: () => handleItemHover(href),\n onMouseLeave: () => handleItemHover(null),\n }\n },\n [handleItemClick, handleItemHover]\n )\n\n return (\n <div\n className={cn('relative flex items-center', className)}\n onMouseEnter={handleContainerMouseEnter}\n onMouseLeave={handleContainerMouseLeave}\n >\n <AnimatePresence>\n {indicatorProps && baseWidth > 0 && (\n <motion.div\n className=\"bg-surface-secondary-default absolute inset-y-0 my-auto h-[calc(100%-10px)] rounded-xs\"\n style={{\n width: baseWidth,\n transformOrigin: '50% 50% 0px',\n }}\n initial={shouldSlide ? false : { opacity: 0 }}\n animate={{\n translateX: indicatorProps.left,\n scaleX: indicatorProps.scaleX,\n opacity: 1,\n }}\n exit={{ opacity: 0 }}\n transition={{\n opacity: FADE_TRANSITION,\n translateX: shouldSlide ? POSITION_TRANSITION : { duration: 0 },\n scaleX: shouldSlide ? SCALE_TRANSITION : { duration: 0 },\n }}\n layoutDependency={indicatorProps}\n />\n )}\n </AnimatePresence>\n\n {items.map((item) => (\n <SubnavItem\n key={item.href}\n item={item}\n isActive={activeItem === item.href}\n isHovered={hoveredItem === item.href}\n handlers={getItemHandlers(item.href)}\n ref={(el) => {\n if (el) {\n itemRefs.current.set(item.href, el)\n } else {\n itemRefs.current.delete(item.href)\n }\n }}\n renderItem={renderItem}\n />\n ))}\n\n {activeIndicatorProps && baseWidth > 0 && (\n <motion.div\n className=\"bg-surface-primary-inverse absolute bottom-0 h-[2px]\"\n style={{\n width: baseWidth,\n transformOrigin: '50% 50% 0px',\n }}\n initial={false}\n animate={{\n translateX: activeIndicatorProps.left,\n scaleX: activeIndicatorProps.scaleX,\n }}\n transition={{\n translateX: POSITION_TRANSITION,\n scaleX: SCALE_TRANSITION,\n }}\n layoutDependency={activeIndicatorProps}\n />\n )}\n </div>\n )\n}\n\nconst SubnavItem = memo(\n forwardRef<\n HTMLDivElement,\n {\n item: SubnavItem\n isActive: boolean\n isHovered: boolean\n handlers: {\n onClick: () => void\n onMouseEnter: () => void\n onMouseLeave: () => void\n }\n renderItem: (item: SubnavItem & { hovered: boolean }) => React.ReactNode\n }\n >(function SubnavItem(\n { item, isActive, isHovered, handlers, renderItem },\n ref\n ) {\n return (\n <motion.div\n ref={ref}\n className={cn(\n 'text-default relative z-10 cursor-pointer select-none',\n isActive && 'text-highlight font-semibold'\n )}\n {...handlers}\n >\n {renderItem({ ...item, hovered: isHovered })}\n </motion.div>\n )\n })\n)\n","import { codeToTokens, BundledLanguage, BundledTheme } from 'shiki'\nimport { ProgrammingLanguage, SupportedLanguage } from '@/types'\n\nexport const LIGHT_THEME = 'github-light' as const\nexport const DARK_THEME = 'github-dark' as const\n\nexport interface CodeToken {\n content: string\n color?: string\n fontStyle?: number\n}\n\nexport interface CodeLine {\n tokens: CodeToken[]\n}\n\nexport interface HighlightedCode {\n lines: CodeLine[]\n code: string\n lang: string\n}\n\n/**\n * Highlights code using Shiki\n */\nexport async function highlightCode(\n code: string,\n language: SupportedLanguage | string,\n theme: BundledTheme = LIGHT_THEME\n): Promise<HighlightedCode> {\n // Clean the code by removing annotations\n const cleanCode = removeCodeHikeAnnotations(code)\n\n const lang = isProgrammingLanguage(language)\n ? getMappedLanguage(language)\n : (language as BundledLanguage)\n\n try {\n const tokens = await codeToTokens(cleanCode, {\n lang,\n theme,\n })\n\n const lines: CodeLine[] = tokens.tokens.map((line) => ({\n tokens: line.map((token) => ({\n content: token.content,\n color: token.color,\n fontStyle: token.fontStyle,\n })),\n }))\n\n return {\n lines,\n code: cleanCode,\n lang,\n }\n } catch (error) {\n console.error('Error highlighting code:', error)\n // Fallback to plain text\n return {\n lines: cleanCode.split('\\n').map((line) => ({\n tokens: [{ content: line || '\\n' }],\n })),\n code: cleanCode,\n lang,\n }\n }\n}\n\n/**\n * Maps language identifiers to their proper syntax highlighting aliases\n */\nexport function getMappedLanguage(\n language: ProgrammingLanguage | SupportedLanguage\n): BundledLanguage {\n switch (language) {\n case 'javascript':\n return 'js'\n case 'typescript':\n return 'ts'\n case 'python':\n return 'py'\n case 'bash':\n return 'bash'\n case 'json':\n return 'json'\n case 'go':\n return 'go'\n case 'dotnet':\n case 'csharp':\n return 'csharp'\n case 'java':\n return 'java'\n case 'ruby':\n return 'ruby'\n case 'php':\n return 'php'\n case 'swift':\n return 'swift'\n case 'terraform':\n return 'hcl'\n default:\n return language as BundledLanguage\n }\n}\n\n/**\n * Helper to check if a language is in our supported set\n */\nexport function isProgrammingLanguage(\n language: string\n): language is ProgrammingLanguage {\n return [\n 'javascript',\n 'typescript',\n 'python',\n 'bash',\n 'json',\n 'go',\n 'dotnet',\n 'csharp',\n 'java',\n 'ruby',\n 'php',\n 'swift',\n 'terraform',\n ].includes(language)\n}\n\nconst ANNOTATION_TYPES = [\n 'callout',\n 'className',\n 'hover',\n 'collapse',\n 'diff',\n 'focus',\n 'fold',\n 'link',\n 'mark',\n 'tooltip',\n]\n\nconst ANNOTATION_REGEX = new RegExp(\n `^\\\\s*#\\\\s*!(${ANNOTATION_TYPES.join('|')})(\\\\s*$begin:math:text$[^)]*\\\\$end:math:text$)?.*$`\n)\n\n/**\n * Removes CodeHike annotations from the code\n * Useful for copying code / excluding annotations from clipboard\n * @param code - The code string containing CodeHike annotations\n * @returns Clean code string without annotations\n */\nexport function removeCodeHikeAnnotations(code: string): string {\n const lines = code.split('\\n')\n const result: string[] = []\n let skipEmpty = false\n\n for (const line of lines) {\n if (ANNOTATION_REGEX.test(line)) {\n skipEmpty = true\n continue\n }\n\n if (line.trim() === '' && skipEmpty) {\n skipEmpty = false\n continue\n }\n\n result.push(line)\n skipEmpty = false\n }\n\n return result.join('\\n')\n}\n","import { forwardRef, HTMLAttributes } from 'react'\nimport { HighlightedCode } from '@/lib/codeUtils'\nimport { cn } from '@/lib/utils'\n\nexport interface PreProps\n extends Omit<HTMLAttributes<HTMLPreElement>, 'children'> {\n code: HighlightedCode\n showLineNumbers?: boolean\n wordWrap?: boolean\n}\n\nexport const Pre = forwardRef<HTMLPreElement, PreProps>(\n (\n { code, showLineNumbers = false, wordWrap = false, className, ...props },\n ref\n ) => {\n return (\n <pre\n ref={ref}\n className={cn(\n 'inline-block font-mono outline-none',\n wordWrap && 'whitespace-pre-wrap',\n className\n )}\n {...props}\n >\n <code>\n {code.lines.map((line, lineIndex) => (\n <div\n key={lineIndex}\n className={cn('flex flex-row', wordWrap && 'flex-wrap')}\n >\n {showLineNumbers && (\n <span className=\"text-body-muted pr-3 select-none\">\n {lineIndex + 1}\n </span>\n )}\n <span className={cn('inline-block', wordWrap && 'flex-1')}>\n {line.tokens.map((token, tokenIndex) => (\n <span\n key={tokenIndex}\n style={{\n color: token.color,\n fontStyle: token.fontStyle ? 'italic' : undefined,\n fontWeight:\n token.fontStyle && token.fontStyle & 1\n ? 'bold'\n : undefined,\n }}\n >\n {token.content}\n </span>\n ))}\n </span>\n </div>\n ))}\n </code>\n </pre>\n )\n }\n)\n\nPre.displayName = 'Pre'\n","import { useCallback, useState, useEffect, useRef } from 'react'\nimport { cn } from '@/lib/utils'\nimport { ProgrammingLanguage, Size } from '@/types'\nimport { AnimatePresence, motion } from 'motion/react'\nimport '@/styles/codeSyntax.css'\nimport './codeSnippet.css'\nimport { Icon } from '../Icon'\nimport {\n highlightCode,\n HighlightedCode,\n LIGHT_THEME,\n DARK_THEME,\n} from '@/lib/codeUtils'\nimport { useConfig } from '@/hooks/useConfig'\nimport { Pre } from '../CodeHighlight/Pre'\n\nexport interface CodeSnippetProps {\n /**\n * The code to display.\n */\n code: string\n /**\n * Whether to show a copy button.\n */\n copyable?: boolean\n /**\n * One of the known Speakeasy target languages, or a language that Shiki supports.\n * The full list of supported languages is available at https://shiki.style/languages\n */\n language: ProgrammingLanguage | string\n /**\n * The symbol to display before the code.\n */\n promptSymbol?: React.ReactNode\n /**\n * Whether to display the code snippet inline.\n */\n inline?: boolean\n /**\n * The font size of the code snippet.\n */\n fontSize?: Size\n /**\n * Whether to show line numbers.\n */\n showLineNumbers?: boolean\n /**\n * The callback to call when the code is selected or copied.\n */\n onSelectOrCopy?: () => void\n /**\n * Whether to shimmer the code snippet.\n */\n shimmer?: boolean\n /**\n * Additional CSS classes to apply to the code snippet container\n */\n className?: string\n\n /**\n * Additional CSS classes to apply to the code snippet inner container (e.g the Pre component).\n */\n snippetClassName?: string\n}\n\nconst fontSizeMap: Record<Size, string> = {\n small: 'text-sm',\n medium: 'text-sm',\n large: 'text-base',\n xl: 'text-lg',\n '2xl': 'text-xl',\n}\n\nconst copyIconVariants = {\n hidden: { opacity: 0, scale: 0.5 },\n visible: { opacity: 1, scale: 1 },\n}\n\nexport function CodeSnippet({\n code,\n copyable = false,\n language,\n promptSymbol,\n inline = false,\n fontSize = 'medium',\n onSelectOrCopy,\n shimmer = false,\n className,\n snippetClassName,\n showLineNumbers = false,\n}: CodeSnippetProps) {\n const [copying, setCopying] = useState(false)\n const [containerWidth, setContainerWidth] = useState(0)\n const containerRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n const updateWidth = () => {\n if (containerRef.current) {\n const width = containerRef.current.getBoundingClientRect().width\n // Only update if we have a non-zero width\n if (width > 0) {\n setContainerWidth(width)\n }\n }\n }\n\n // Initial measurement\n updateWidth()\n\n // Create ResizeObserver for more reliable width tracking\n const resizeObserver = new ResizeObserver(updateWidth)\n if (containerRef.current) {\n resizeObserver.observe(containerRef.current)\n }\n\n return () => resizeObserver.disconnect()\n }, [])\n\n const [highlightedCodeState, setHighlightedCodeState] = useState<\n HighlightedCode | undefined\n >(undefined)\n const isMultiline = code.split('\\n').length > 1\n const { theme } = useConfig()\n\n // Directly highlight the code when code or language changes\n useEffect(() => {\n if (!language) return\n\n const shikiTheme = theme === 'dark' ? DARK_THEME : LIGHT_THEME\n // Use the highlightCode utility directly\n highlightCode(code, language, shikiTheme).then((highlighted) => {\n setHighlightedCodeState(highlighted)\n })\n }, [code, language, theme])\n\n const handleCopy = useCallback(() => {\n setCopying(true)\n navigator.clipboard.writeText(highlightedCodeState?.code ?? code)\n setTimeout(() => {\n setCopying(false)\n onSelectOrCopy?.()\n }, 1000)\n }, [highlightedCodeState?.code, code])\n\n const handleBeforeInput = (event: React.KeyboardEvent<HTMLPreElement>) =>\n event.preventDefault()\n\n return (\n <div\n data-theme={theme}\n className={cn(\n 'border-muted snippet bg-card relative box-border flex w-full overflow-hidden rounded-lg border',\n inline && 'inline-flex',\n shimmer && 'shimmer',\n className\n )}\n style={{ '--width': `${containerWidth}px` } as React.CSSProperties}\n ref={containerRef}\n >\n <div className=\"snippet-inner bg-card flex w-full flex-row gap-2 rounded-lg p-4\">\n {language === 'bash' && (\n <div className=\"text-body self-center font-mono font-light select-none\">\n {promptSymbol ?? '$'}\n </div>\n )}\n {highlightedCodeState && (\n <Pre\n code={highlightedCodeState}\n onClick={onSelectOrCopy}\n className={cn(\n 'highlighted-code inline-flex w-fit self-center font-mono outline-none',\n fontSizeMap[fontSize],\n isMultiline && 'min-w-32',\n snippetClassName\n )}\n onBeforeInput={handleBeforeInput}\n showLineNumbers={showLineNumbers}\n />\n )}\n\n {copyable && (\n <div\n className={cn(\n 'mr-1 ml-auto flex self-center text-white',\n isMultiline && 'mt-1 h-4 w-6 self-start'\n )}\n >\n <button\n role=\"button\"\n aria-label=\"copy\"\n className=\"relative ml-2 border-none bg-transparent outline-none\"\n onClick={handleCopy}\n >\n <AnimatePresence mode=\"wait\" initial={false}>\n {copying ? (\n <motion.span\n key=\"checkmark\"\n variants={copyIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n className=\"text-green-500\"\n >\n <Icon name=\"check\" stroke=\"currentColor\" />\n </motion.span>\n ) : (\n <motion.span\n key=\"copy\"\n variants={copyIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n className=\"text-body-muted hover:text-body\"\n exit=\"hidden\"\n >\n <Icon name=\"copy\" stroke=\"currentColor\" />\n </motion.span>\n )}\n </AnimatePresence>\n </button>\n </div>\n )}\n </div>\n </div>\n )\n}\n","\"use client\";\n\n// packages/react/collection/src/collection.tsx\nimport 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\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlot = React.forwardRef(\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 /* @__PURE__ */ jsx(Slot, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(Slot, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\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 return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\nexport {\n createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/Direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/roving-focus/src/roving-focus-group.tsx\nimport * 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\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(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 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 return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n 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 children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\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 const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\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 );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, 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 const { onFocusableItemAdd, onFocusableItemRemove } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\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 if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\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 ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n })\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/menu/src/menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs, composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SELECTION_KEYS = [\"Enter\", \" \"];\nvar FIRST_KEYS = [\"ArrowDown\", \"PageUp\", \"Home\"];\nvar LAST_KEYS = [\"ArrowUp\", \"PageDown\", \"End\"];\nvar FIRST_LAST_KEYS = [...FIRST_KEYS, ...LAST_KEYS];\nvar SUB_OPEN_KEYS = {\n ltr: [...SELECTION_KEYS, \"ArrowRight\"],\n rtl: [...SELECTION_KEYS, \"ArrowLeft\"]\n};\nvar SUB_CLOSE_KEYS = {\n ltr: [\"ArrowLeft\"],\n rtl: [\"ArrowRight\"]\n};\nvar MENU_NAME = \"Menu\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(MENU_NAME);\nvar [createMenuContext, createMenuScope] = createContextScope(MENU_NAME, [\n createCollectionScope,\n createPopperScope,\n createRovingFocusGroupScope\n]);\nvar usePopperScope = createPopperScope();\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [MenuProvider, useMenuContext] = createMenuContext(MENU_NAME);\nvar [MenuRootProvider, useMenuRootContext] = createMenuContext(MENU_NAME);\nvar Menu = (props) => {\n const { __scopeMenu, open = false, children, dir, onOpenChange, modal = true } = props;\n const popperScope = usePopperScope(__scopeMenu);\n const [content, setContent] = React.useState(null);\n const isUsingKeyboardRef = React.useRef(false);\n const handleOpenChange = useCallbackRef(onOpenChange);\n const direction = useDirection(dir);\n React.useEffect(() => {\n const handleKeyDown = () => {\n isUsingKeyboardRef.current = true;\n document.addEventListener(\"pointerdown\", handlePointer, { capture: true, once: true });\n document.addEventListener(\"pointermove\", handlePointer, { capture: true, once: true });\n };\n const handlePointer = () => isUsingKeyboardRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n document.removeEventListener(\"pointerdown\", handlePointer, { capture: true });\n document.removeEventListener(\"pointermove\", handlePointer, { capture: true });\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuRootProvider,\n {\n scope: __scopeMenu,\n onClose: React.useCallback(() => handleOpenChange(false), [handleOpenChange]),\n isUsingKeyboardRef,\n dir: direction,\n modal,\n children\n }\n )\n }\n ) });\n};\nMenu.displayName = MENU_NAME;\nvar ANCHOR_NAME = \"MenuAnchor\";\nvar MenuAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...anchorProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { ...popperScope, ...anchorProps, ref: forwardedRef });\n }\n);\nMenuAnchor.displayName = ANCHOR_NAME;\nvar PORTAL_NAME = \"MenuPortal\";\nvar [PortalProvider, usePortalContext] = createMenuContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar MenuPortal = (props) => {\n const { __scopeMenu, forceMount, children, container } = props;\n const context = useMenuContext(PORTAL_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeMenu, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"MenuContent\";\nvar [MenuContentProvider, useMenuContentContext] = createMenuContext(CONTENT_NAME);\nvar MenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: rootContext.modal ? /* @__PURE__ */ jsx(MenuRootContentModal, { ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(MenuRootContentNonModal, { ...contentProps, ref: forwardedRef }) }) }) });\n }\n);\nvar MenuRootContentModal = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const content = ref.current;\n if (content) return hideOthers(content);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: composedRefs,\n trapFocus: context.open,\n disableOutsidePointerEvents: context.open,\n disableOutsideScroll: true,\n onFocusOutside: composeEventHandlers(\n props.onFocusOutside,\n (event) => event.preventDefault(),\n { checkForDefaultPrevented: false }\n ),\n onDismiss: () => context.onOpenChange(false)\n }\n );\n }\n);\nvar MenuRootContentNonModal = React.forwardRef((props, forwardedRef) => {\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n return /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n ...props,\n ref: forwardedRef,\n trapFocus: false,\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n onDismiss: () => context.onOpenChange(false)\n }\n );\n});\nvar MenuContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeMenu,\n loop = false,\n trapFocus,\n onOpenAutoFocus,\n onCloseAutoFocus,\n disableOutsidePointerEvents,\n onEntryFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n disableOutsideScroll,\n ...contentProps\n } = props;\n const context = useMenuContext(CONTENT_NAME, __scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const getItems = useCollection(__scopeMenu);\n const [currentItemId, setCurrentItemId] = React.useState(null);\n const contentRef = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, contentRef, context.onContentChange);\n const timerRef = React.useRef(0);\n const searchRef = React.useRef(\"\");\n const pointerGraceTimerRef = React.useRef(0);\n const pointerGraceIntentRef = React.useRef(null);\n const pointerDirRef = React.useRef(\"right\");\n const lastPointerXRef = React.useRef(0);\n const ScrollLockWrapper = disableOutsideScroll ? RemoveScroll : React.Fragment;\n const scrollLockWrapperProps = disableOutsideScroll ? { as: Slot, allowPinchZoom: true } : void 0;\n const handleTypeaheadSearch = (key) => {\n const search = searchRef.current + key;\n const items = getItems().filter((item) => !item.disabled);\n const currentItem = document.activeElement;\n const currentMatch = items.find((item) => item.ref.current === currentItem)?.textValue;\n const values = items.map((item) => item.textValue);\n const nextMatch = getNextMatch(values, search, currentMatch);\n const newItem = items.find((item) => item.textValue === nextMatch)?.ref.current;\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n if (newItem) {\n setTimeout(() => newItem.focus());\n }\n };\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n useFocusGuards();\n const isPointerMovingToSubmenu = React.useCallback((event) => {\n const isMovingTowards = pointerDirRef.current === pointerGraceIntentRef.current?.side;\n return isMovingTowards && isPointerInGraceArea(event, pointerGraceIntentRef.current?.area);\n }, []);\n return /* @__PURE__ */ jsx(\n MenuContentProvider,\n {\n scope: __scopeMenu,\n searchRef,\n onItemEnter: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n onItemLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) return;\n contentRef.current?.focus();\n setCurrentItemId(null);\n },\n [isPointerMovingToSubmenu]\n ),\n onTriggerLeave: React.useCallback(\n (event) => {\n if (isPointerMovingToSubmenu(event)) event.preventDefault();\n },\n [isPointerMovingToSubmenu]\n ),\n pointerGraceTimerRef,\n onPointerGraceIntentChange: React.useCallback((intent) => {\n pointerGraceIntentRef.current = intent;\n }, []),\n children: /* @__PURE__ */ jsx(ScrollLockWrapper, { ...scrollLockWrapperProps, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: trapFocus,\n onMountAutoFocus: composeEventHandlers(onOpenAutoFocus, (event) => {\n event.preventDefault();\n contentRef.current?.focus({ preventScroll: true });\n }),\n onUnmountAutoFocus: onCloseAutoFocus,\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n children: /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n dir: rootContext.dir,\n orientation: \"vertical\",\n loop,\n currentTabStopId: currentItemId,\n onCurrentTabStopIdChange: setCurrentItemId,\n onEntryFocus: composeEventHandlers(onEntryFocus, (event) => {\n if (!rootContext.isUsingKeyboardRef.current) event.preventDefault();\n }),\n preventScrollOnEntryFocus: true,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n role: \"menu\",\n \"aria-orientation\": \"vertical\",\n \"data-state\": getOpenState(context.open),\n \"data-radix-menu-content\": \"\",\n dir: rootContext.dir,\n ...popperScope,\n ...contentProps,\n ref: composedRefs,\n style: { outline: \"none\", ...contentProps.style },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const target = event.target;\n const isKeyDownInside = target.closest(\"[data-radix-menu-content]\") === event.currentTarget;\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n const isCharacterKey = event.key.length === 1;\n if (isKeyDownInside) {\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && isCharacterKey) handleTypeaheadSearch(event.key);\n }\n const content = contentRef.current;\n if (event.target !== content) return;\n if (!FIRST_LAST_KEYS.includes(event.key)) return;\n event.preventDefault();\n const items = getItems().filter((item) => !item.disabled);\n const candidateNodes = items.map((item) => item.ref.current);\n if (LAST_KEYS.includes(event.key)) candidateNodes.reverse();\n focusFirst(candidateNodes);\n }),\n onBlur: composeEventHandlers(props.onBlur, (event) => {\n if (!event.currentTarget.contains(event.target)) {\n window.clearTimeout(timerRef.current);\n searchRef.current = \"\";\n }\n }),\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n const target = event.target;\n const pointerXHasChanged = lastPointerXRef.current !== event.clientX;\n if (event.currentTarget.contains(target) && pointerXHasChanged) {\n const newDir = event.clientX > lastPointerXRef.current ? \"right\" : \"left\";\n pointerDirRef.current = newDir;\n lastPointerXRef.current = event.clientX;\n }\n })\n )\n }\n )\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"MenuGroup\";\nvar MenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...groupProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", ...groupProps, ref: forwardedRef });\n }\n);\nMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"MenuLabel\";\nvar MenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...labelProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { ...labelProps, ref: forwardedRef });\n }\n);\nMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"MenuItem\";\nvar ITEM_SELECT = \"menu.itemSelect\";\nvar MenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { disabled = false, onSelect, ...itemProps } = props;\n const ref = React.useRef(null);\n const rootContext = useMenuRootContext(ITEM_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(ITEM_NAME, props.__scopeMenu);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const isPointerDownRef = React.useRef(false);\n const handleSelect = () => {\n const menuItem = ref.current;\n if (!disabled && menuItem) {\n const itemSelectEvent = new CustomEvent(ITEM_SELECT, { bubbles: true, cancelable: true });\n menuItem.addEventListener(ITEM_SELECT, (event) => onSelect?.(event), { once: true });\n dispatchDiscreteCustomEvent(menuItem, itemSelectEvent);\n if (itemSelectEvent.defaultPrevented) {\n isPointerDownRef.current = false;\n } else {\n rootContext.onClose();\n }\n }\n };\n return /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n ...itemProps,\n ref: composedRefs,\n disabled,\n onClick: composeEventHandlers(props.onClick, handleSelect),\n onPointerDown: (event) => {\n props.onPointerDown?.(event);\n isPointerDownRef.current = true;\n },\n onPointerUp: composeEventHandlers(props.onPointerUp, (event) => {\n if (!isPointerDownRef.current) event.currentTarget?.click();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (disabled || isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) {\n event.currentTarget.click();\n event.preventDefault();\n }\n })\n }\n );\n }\n);\nMenuItem.displayName = ITEM_NAME;\nvar MenuItemImpl = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, disabled = false, textValue, ...itemProps } = props;\n const contentContext = useMenuContentContext(ITEM_NAME, __scopeMenu);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [isFocused, setIsFocused] = React.useState(false);\n const [textContent, setTextContent] = React.useState(\"\");\n React.useEffect(() => {\n const menuItem = ref.current;\n if (menuItem) {\n setTextContent((menuItem.textContent ?? \"\").trim());\n }\n }, [itemProps.children]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeMenu,\n disabled,\n textValue: textValue ?? textContent,\n children: /* @__PURE__ */ jsx(RovingFocusGroup.Item, { asChild: true, ...rovingFocusGroupScope, focusable: !disabled, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"menuitem\",\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n ...itemProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n if (disabled) {\n contentContext.onItemLeave(event);\n } else {\n contentContext.onItemEnter(event);\n if (!event.defaultPrevented) {\n const item = event.currentTarget;\n item.focus({ preventScroll: true });\n }\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => contentContext.onItemLeave(event))\n ),\n onFocus: composeEventHandlers(props.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(props.onBlur, () => setIsFocused(false))\n }\n ) })\n }\n );\n }\n);\nvar CHECKBOX_ITEM_NAME = \"MenuCheckboxItem\";\nvar MenuCheckboxItem = React.forwardRef(\n (props, forwardedRef) => {\n const { checked = false, onCheckedChange, ...checkboxItemProps } = props;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemcheckbox\",\n \"aria-checked\": isIndeterminate(checked) ? \"mixed\" : checked,\n ...checkboxItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n checkboxItemProps.onSelect,\n () => onCheckedChange?.(isIndeterminate(checked) ? true : !checked),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"MenuRadioGroup\";\nvar [RadioGroupProvider, useRadioGroupContext] = createMenuContext(\n RADIO_GROUP_NAME,\n { value: void 0, onValueChange: () => {\n } }\n);\nvar MenuRadioGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { value, onValueChange, ...groupProps } = props;\n const handleValueChange = useCallbackRef(onValueChange);\n return /* @__PURE__ */ jsx(RadioGroupProvider, { scope: props.__scopeMenu, value, onValueChange: handleValueChange, children: /* @__PURE__ */ jsx(MenuGroup, { ...groupProps, ref: forwardedRef }) });\n }\n);\nMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"MenuRadioItem\";\nvar MenuRadioItem = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...radioItemProps } = props;\n const context = useRadioGroupContext(RADIO_ITEM_NAME, props.__scopeMenu);\n const checked = value === context.value;\n return /* @__PURE__ */ jsx(ItemIndicatorProvider, { scope: props.__scopeMenu, checked, children: /* @__PURE__ */ jsx(\n MenuItem,\n {\n role: \"menuitemradio\",\n \"aria-checked\": checked,\n ...radioItemProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(checked),\n onSelect: composeEventHandlers(\n radioItemProps.onSelect,\n () => context.onValueChange?.(value),\n { checkForDefaultPrevented: false }\n )\n }\n ) });\n }\n);\nMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar ITEM_INDICATOR_NAME = \"MenuItemIndicator\";\nvar [ItemIndicatorProvider, useItemIndicatorContext] = createMenuContext(\n ITEM_INDICATOR_NAME,\n { checked: false }\n);\nvar MenuItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, forceMount, ...itemIndicatorProps } = props;\n const indicatorContext = useItemIndicatorContext(ITEM_INDICATOR_NAME, __scopeMenu);\n return /* @__PURE__ */ jsx(\n Presence,\n {\n present: forceMount || isIndeterminate(indicatorContext.checked) || indicatorContext.checked === true,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...itemIndicatorProps,\n ref: forwardedRef,\n \"data-state\": getCheckedState(indicatorContext.checked)\n }\n )\n }\n );\n }\n);\nMenuItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SEPARATOR_NAME = \"MenuSeparator\";\nvar MenuSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"separator\",\n \"aria-orientation\": \"horizontal\",\n ...separatorProps,\n ref: forwardedRef\n }\n );\n }\n);\nMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"MenuArrow\";\nvar MenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeMenu, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeMenu);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nMenuArrow.displayName = ARROW_NAME;\nvar SUB_NAME = \"MenuSub\";\nvar [MenuSubProvider, useMenuSubContext] = createMenuContext(SUB_NAME);\nvar MenuSub = (props) => {\n const { __scopeMenu, children, open = false, onOpenChange } = props;\n const parentMenuContext = useMenuContext(SUB_NAME, __scopeMenu);\n const popperScope = usePopperScope(__scopeMenu);\n const [trigger, setTrigger] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const handleOpenChange = useCallbackRef(onOpenChange);\n React.useEffect(() => {\n if (parentMenuContext.open === false) handleOpenChange(false);\n return () => handleOpenChange(false);\n }, [parentMenuContext.open, handleOpenChange]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n MenuProvider,\n {\n scope: __scopeMenu,\n open,\n onOpenChange: handleOpenChange,\n content,\n onContentChange: setContent,\n children: /* @__PURE__ */ jsx(\n MenuSubProvider,\n {\n scope: __scopeMenu,\n contentId: useId(),\n triggerId: useId(),\n trigger,\n onTriggerChange: setTrigger,\n children\n }\n )\n }\n ) });\n};\nMenuSub.displayName = SUB_NAME;\nvar SUB_TRIGGER_NAME = \"MenuSubTrigger\";\nvar MenuSubTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const context = useMenuContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const contentContext = useMenuContentContext(SUB_TRIGGER_NAME, props.__scopeMenu);\n const openTimerRef = React.useRef(null);\n const { pointerGraceTimerRef, onPointerGraceIntentChange } = contentContext;\n const scope = { __scopeMenu: props.__scopeMenu };\n const clearOpenTimer = React.useCallback(() => {\n if (openTimerRef.current) window.clearTimeout(openTimerRef.current);\n openTimerRef.current = null;\n }, []);\n React.useEffect(() => clearOpenTimer, [clearOpenTimer]);\n React.useEffect(() => {\n const pointerGraceTimer = pointerGraceTimerRef.current;\n return () => {\n window.clearTimeout(pointerGraceTimer);\n onPointerGraceIntentChange(null);\n };\n }, [pointerGraceTimerRef, onPointerGraceIntentChange]);\n return /* @__PURE__ */ jsx(MenuAnchor, { asChild: true, ...scope, children: /* @__PURE__ */ jsx(\n MenuItemImpl,\n {\n id: subContext.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": subContext.contentId,\n \"data-state\": getOpenState(context.open),\n ...props,\n ref: composeRefs(forwardedRef, subContext.onTriggerChange),\n onClick: (event) => {\n props.onClick?.(event);\n if (props.disabled || event.defaultPrevented) return;\n event.currentTarget.focus();\n if (!context.open) context.onOpenChange(true);\n },\n onPointerMove: composeEventHandlers(\n props.onPointerMove,\n whenMouse((event) => {\n contentContext.onItemEnter(event);\n if (event.defaultPrevented) return;\n if (!props.disabled && !context.open && !openTimerRef.current) {\n contentContext.onPointerGraceIntentChange(null);\n openTimerRef.current = window.setTimeout(() => {\n context.onOpenChange(true);\n clearOpenTimer();\n }, 100);\n }\n })\n ),\n onPointerLeave: composeEventHandlers(\n props.onPointerLeave,\n whenMouse((event) => {\n clearOpenTimer();\n const contentRect = context.content?.getBoundingClientRect();\n if (contentRect) {\n const side = context.content?.dataset.side;\n const rightSide = side === \"right\";\n const bleed = rightSide ? -5 : 5;\n const contentNearEdge = contentRect[rightSide ? \"left\" : \"right\"];\n const contentFarEdge = contentRect[rightSide ? \"right\" : \"left\"];\n contentContext.onPointerGraceIntentChange({\n area: [\n // Apply a bleed on clientX to ensure that our exit point is\n // consistently within polygon bounds\n { x: event.clientX + bleed, y: event.clientY },\n { x: contentNearEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.top },\n { x: contentFarEdge, y: contentRect.bottom },\n { x: contentNearEdge, y: contentRect.bottom }\n ],\n side\n });\n window.clearTimeout(pointerGraceTimerRef.current);\n pointerGraceTimerRef.current = window.setTimeout(\n () => contentContext.onPointerGraceIntentChange(null),\n 300\n );\n } else {\n contentContext.onTriggerLeave(event);\n if (event.defaultPrevented) return;\n contentContext.onPointerGraceIntentChange(null);\n }\n })\n ),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef.current !== \"\";\n if (props.disabled || isTypingAhead && event.key === \" \") return;\n if (SUB_OPEN_KEYS[rootContext.dir].includes(event.key)) {\n context.onOpenChange(true);\n context.content?.focus();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"MenuSubContent\";\nvar MenuSubContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeMenu);\n const { forceMount = portalContext.forceMount, ...subContentProps } = props;\n const context = useMenuContext(CONTENT_NAME, props.__scopeMenu);\n const rootContext = useMenuRootContext(CONTENT_NAME, props.__scopeMenu);\n const subContext = useMenuSubContext(SUB_CONTENT_NAME, props.__scopeMenu);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeMenu, children: /* @__PURE__ */ jsx(\n MenuContentImpl,\n {\n id: subContext.contentId,\n \"aria-labelledby\": subContext.triggerId,\n ...subContentProps,\n ref: composedRefs,\n align: \"start\",\n side: rootContext.dir === \"rtl\" ? \"left\" : \"right\",\n disableOutsidePointerEvents: false,\n disableOutsideScroll: false,\n trapFocus: false,\n onOpenAutoFocus: (event) => {\n if (rootContext.isUsingKeyboardRef.current) ref.current?.focus();\n event.preventDefault();\n },\n onCloseAutoFocus: (event) => event.preventDefault(),\n onFocusOutside: composeEventHandlers(props.onFocusOutside, (event) => {\n if (event.target !== subContext.trigger) context.onOpenChange(false);\n }),\n onEscapeKeyDown: composeEventHandlers(props.onEscapeKeyDown, (event) => {\n rootContext.onClose();\n event.preventDefault();\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n const isKeyDownInside = event.currentTarget.contains(event.target);\n const isCloseKey = SUB_CLOSE_KEYS[rootContext.dir].includes(event.key);\n if (isKeyDownInside && isCloseKey) {\n context.onOpenChange(false);\n subContext.trigger?.focus();\n event.preventDefault();\n }\n })\n }\n ) }) }) });\n }\n);\nMenuSubContent.displayName = SUB_CONTENT_NAME;\nfunction getOpenState(open) {\n return open ? \"open\" : \"closed\";\n}\nfunction isIndeterminate(checked) {\n return checked === \"indeterminate\";\n}\nfunction getCheckedState(checked) {\n return isIndeterminate(checked) ? \"indeterminate\" : checked ? \"checked\" : \"unchecked\";\n}\nfunction focusFirst(candidates) {\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nfunction getNextMatch(values, search, currentMatch) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentMatchIndex = currentMatch ? values.indexOf(currentMatch) : -1;\n let wrappedValues = wrapArray(values, Math.max(currentMatchIndex, 0));\n const excludeCurrentMatch = normalizedSearch.length === 1;\n if (excludeCurrentMatch) wrappedValues = wrappedValues.filter((v) => v !== currentMatch);\n const nextMatch = wrappedValues.find(\n (value) => value.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextMatch !== currentMatch ? nextMatch : void 0;\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction isPointerInGraceArea(event, area) {\n if (!area) return false;\n const cursorPos = { x: event.clientX, y: event.clientY };\n return isPointInPolygon(cursorPos, area);\n}\nfunction whenMouse(handler) {\n return (event) => event.pointerType === \"mouse\" ? handler(event) : void 0;\n}\nvar Root3 = Menu;\nvar Anchor2 = MenuAnchor;\nvar Portal = MenuPortal;\nvar Content2 = MenuContent;\nvar Group = MenuGroup;\nvar Label = MenuLabel;\nvar Item2 = MenuItem;\nvar CheckboxItem = MenuCheckboxItem;\nvar RadioGroup = MenuRadioGroup;\nvar RadioItem = MenuRadioItem;\nvar ItemIndicator = MenuItemIndicator;\nvar Separator = MenuSeparator;\nvar Arrow2 = MenuArrow;\nvar Sub = MenuSub;\nvar SubTrigger = MenuSubTrigger;\nvar SubContent = MenuSubContent;\nexport {\n Anchor2 as Anchor,\n Arrow2 as Arrow,\n CheckboxItem,\n Content2 as Content,\n Group,\n Item2 as Item,\n ItemIndicator,\n Label,\n Menu,\n MenuAnchor,\n MenuArrow,\n MenuCheckboxItem,\n MenuContent,\n MenuGroup,\n MenuItem,\n MenuItemIndicator,\n MenuLabel,\n MenuPortal,\n MenuRadioGroup,\n MenuRadioItem,\n MenuSeparator,\n MenuSub,\n MenuSubContent,\n MenuSubTrigger,\n Portal,\n RadioGroup,\n RadioItem,\n Root3 as Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n createMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/dropdown-menu/src/dropdown-menu.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as MenuPrimitive from \"@radix-ui/react-menu\";\nimport { createMenuScope } from \"@radix-ui/react-menu\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DROPDOWN_MENU_NAME = \"DropdownMenu\";\nvar [createDropdownMenuContext, createDropdownMenuScope] = createContextScope(\n DROPDOWN_MENU_NAME,\n [createMenuScope]\n);\nvar useMenuScope = createMenuScope();\nvar [DropdownMenuProvider, useDropdownMenuContext] = createDropdownMenuContext(DROPDOWN_MENU_NAME);\nvar DropdownMenu = (props) => {\n const {\n __scopeDropdownMenu,\n children,\n dir,\n open: openProp,\n defaultOpen,\n onOpenChange,\n modal = true\n } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const triggerRef = React.useRef(null);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(\n DropdownMenuProvider,\n {\n scope: __scopeDropdownMenu,\n triggerId: useId(),\n triggerRef,\n contentId: useId(),\n open,\n onOpenChange: setOpen,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n modal,\n children: /* @__PURE__ */ jsx(MenuPrimitive.Root, { ...menuScope, open, onOpenChange: setOpen, dir, modal, children })\n }\n );\n};\nDropdownMenu.displayName = DROPDOWN_MENU_NAME;\nvar TRIGGER_NAME = \"DropdownMenuTrigger\";\nvar DropdownMenuTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, disabled = false, ...triggerProps } = props;\n const context = useDropdownMenuContext(TRIGGER_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Anchor, { asChild: true, ...menuScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n id: context.triggerId,\n \"aria-haspopup\": \"menu\",\n \"aria-expanded\": context.open,\n \"aria-controls\": context.open ? context.contentId : void 0,\n \"data-state\": context.open ? \"open\" : \"closed\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n ...triggerProps,\n ref: composeRefs(forwardedRef, context.triggerRef),\n onPointerDown: composeEventHandlers(props.onPointerDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onOpenToggle();\n if (!context.open) event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (disabled) return;\n if ([\"Enter\", \" \"].includes(event.key)) context.onOpenToggle();\n if (event.key === \"ArrowDown\") context.onOpenChange(true);\n if ([\"Enter\", \" \", \"ArrowDown\"].includes(event.key)) event.preventDefault();\n })\n }\n ) });\n }\n);\nDropdownMenuTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"DropdownMenuPortal\";\nvar DropdownMenuPortal = (props) => {\n const { __scopeDropdownMenu, ...portalProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Portal, { ...menuScope, ...portalProps });\n};\nDropdownMenuPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"DropdownMenuContent\";\nvar DropdownMenuContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...contentProps } = props;\n const context = useDropdownMenuContext(CONTENT_NAME, __scopeDropdownMenu);\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const hasInteractedOutsideRef = React.useRef(false);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.Content,\n {\n id: context.contentId,\n \"aria-labelledby\": context.triggerId,\n ...menuScope,\n ...contentProps,\n ref: forwardedRef,\n onCloseAutoFocus: composeEventHandlers(props.onCloseAutoFocus, (event) => {\n if (!hasInteractedOutsideRef.current) context.triggerRef.current?.focus();\n hasInteractedOutsideRef.current = false;\n event.preventDefault();\n }),\n onInteractOutside: composeEventHandlers(props.onInteractOutside, (event) => {\n const originalEvent = event.detail.originalEvent;\n const ctrlLeftClick = originalEvent.button === 0 && originalEvent.ctrlKey === true;\n const isRightClick = originalEvent.button === 2 || ctrlLeftClick;\n if (!context.modal || isRightClick) hasInteractedOutsideRef.current = true;\n }),\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n }\n);\nDropdownMenuContent.displayName = CONTENT_NAME;\nvar GROUP_NAME = \"DropdownMenuGroup\";\nvar DropdownMenuGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...groupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Group, { ...menuScope, ...groupProps, ref: forwardedRef });\n }\n);\nDropdownMenuGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"DropdownMenuLabel\";\nvar DropdownMenuLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...labelProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Label, { ...menuScope, ...labelProps, ref: forwardedRef });\n }\n);\nDropdownMenuLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"DropdownMenuItem\";\nvar DropdownMenuItem = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Item, { ...menuScope, ...itemProps, ref: forwardedRef });\n }\n);\nDropdownMenuItem.displayName = ITEM_NAME;\nvar CHECKBOX_ITEM_NAME = \"DropdownMenuCheckboxItem\";\nvar DropdownMenuCheckboxItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...checkboxItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.CheckboxItem, { ...menuScope, ...checkboxItemProps, ref: forwardedRef });\n});\nDropdownMenuCheckboxItem.displayName = CHECKBOX_ITEM_NAME;\nvar RADIO_GROUP_NAME = \"DropdownMenuRadioGroup\";\nvar DropdownMenuRadioGroup = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioGroupProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioGroup, { ...menuScope, ...radioGroupProps, ref: forwardedRef });\n});\nDropdownMenuRadioGroup.displayName = RADIO_GROUP_NAME;\nvar RADIO_ITEM_NAME = \"DropdownMenuRadioItem\";\nvar DropdownMenuRadioItem = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...radioItemProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.RadioItem, { ...menuScope, ...radioItemProps, ref: forwardedRef });\n});\nDropdownMenuRadioItem.displayName = RADIO_ITEM_NAME;\nvar INDICATOR_NAME = \"DropdownMenuItemIndicator\";\nvar DropdownMenuItemIndicator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...itemIndicatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.ItemIndicator, { ...menuScope, ...itemIndicatorProps, ref: forwardedRef });\n});\nDropdownMenuItemIndicator.displayName = INDICATOR_NAME;\nvar SEPARATOR_NAME = \"DropdownMenuSeparator\";\nvar DropdownMenuSeparator = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...separatorProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });\n});\nDropdownMenuSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"DropdownMenuArrow\";\nvar DropdownMenuArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeDropdownMenu, ...arrowProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.Arrow, { ...menuScope, ...arrowProps, ref: forwardedRef });\n }\n);\nDropdownMenuArrow.displayName = ARROW_NAME;\nvar DropdownMenuSub = (props) => {\n const { __scopeDropdownMenu, children, open: openProp, onOpenChange, defaultOpen } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(MenuPrimitive.Sub, { ...menuScope, open, onOpenChange: setOpen, children });\n};\nvar SUB_TRIGGER_NAME = \"DropdownMenuSubTrigger\";\nvar DropdownMenuSubTrigger = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subTriggerProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(MenuPrimitive.SubTrigger, { ...menuScope, ...subTriggerProps, ref: forwardedRef });\n});\nDropdownMenuSubTrigger.displayName = SUB_TRIGGER_NAME;\nvar SUB_CONTENT_NAME = \"DropdownMenuSubContent\";\nvar DropdownMenuSubContent = React.forwardRef((props, forwardedRef) => {\n const { __scopeDropdownMenu, ...subContentProps } = props;\n const menuScope = useMenuScope(__scopeDropdownMenu);\n return /* @__PURE__ */ jsx(\n MenuPrimitive.SubContent,\n {\n ...menuScope,\n ...subContentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-dropdown-menu-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-dropdown-menu-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-dropdown-menu-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-dropdown-menu-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-dropdown-menu-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nDropdownMenuSubContent.displayName = SUB_CONTENT_NAME;\nvar Root2 = DropdownMenu;\nvar Trigger = DropdownMenuTrigger;\nvar Portal2 = DropdownMenuPortal;\nvar Content2 = DropdownMenuContent;\nvar Group2 = DropdownMenuGroup;\nvar Label2 = DropdownMenuLabel;\nvar Item2 = DropdownMenuItem;\nvar CheckboxItem2 = DropdownMenuCheckboxItem;\nvar RadioGroup2 = DropdownMenuRadioGroup;\nvar RadioItem2 = DropdownMenuRadioItem;\nvar ItemIndicator2 = DropdownMenuItemIndicator;\nvar Separator2 = DropdownMenuSeparator;\nvar Arrow2 = DropdownMenuArrow;\nvar Sub2 = DropdownMenuSub;\nvar SubTrigger2 = DropdownMenuSubTrigger;\nvar SubContent2 = DropdownMenuSubContent;\nexport {\n Arrow2 as Arrow,\n CheckboxItem2 as CheckboxItem,\n Content2 as Content,\n DropdownMenu,\n DropdownMenuArrow,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuItemIndicator,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger,\n Group2 as Group,\n Item2 as Item,\n ItemIndicator2 as ItemIndicator,\n Label2 as Label,\n Portal2 as Portal,\n RadioGroup2 as RadioGroup,\n RadioItem2 as RadioItem,\n Root2 as Root,\n Separator2 as Separator,\n Sub2 as Sub,\n SubContent2 as SubContent,\n SubTrigger2 as SubTrigger,\n Trigger,\n createDropdownMenuScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client'\n\nimport * as React from 'react'\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu'\nimport { Check, ChevronRight, Circle } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nconst DropdownMenu = DropdownMenuPrimitive.Root\n\nconst DropdownMenuTrigger = DropdownMenuPrimitive.Trigger\n\nconst DropdownMenuGroup = DropdownMenuPrimitive.Group\n\nconst DropdownMenuPortal = DropdownMenuPrimitive.Portal\n\nconst DropdownMenuSub = DropdownMenuPrimitive.Sub\n\nconst DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup\n\nconst DropdownMenuSubTrigger = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean\n }\n>(({ className, inset, children, ...props }, ref) => (\n <DropdownMenuPrimitive.SubTrigger\n ref={ref}\n className={cn(\n 'focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0',\n inset && 'pl-8',\n className\n )}\n {...props}\n >\n {children}\n <ChevronRight className=\"ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n))\nDropdownMenuSubTrigger.displayName =\n DropdownMenuPrimitive.SubTrigger.displayName\n\nconst DropdownMenuSubContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.SubContent\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg',\n className\n )}\n {...props}\n />\n))\nDropdownMenuSubContent.displayName =\n DropdownMenuPrimitive.SubContent.displayName\n\nconst DropdownMenuContent = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n))\nDropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName\n\nconst DropdownMenuItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Item\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&>svg]:size-4 [&>svg]:shrink-0',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName\n\nconst DropdownMenuCheckboxItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>\n>(({ className, children, checked, ...props }, ref) => (\n <DropdownMenuPrimitive.CheckboxItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n checked={checked}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n))\nDropdownMenuCheckboxItem.displayName =\n DropdownMenuPrimitive.CheckboxItem.displayName\n\nconst DropdownMenuRadioItem = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>\n>(({ className, children, ...props }, ref) => (\n <DropdownMenuPrimitive.RadioItem\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <DropdownMenuPrimitive.ItemIndicator>\n <Circle className=\"h-2 w-2 fill-current\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n))\nDropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName\n\nconst DropdownMenuLabel = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean\n }\n>(({ className, inset, ...props }, ref) => (\n <DropdownMenuPrimitive.Label\n ref={ref}\n className={cn(\n 'px-2 py-1.5 text-sm font-semibold',\n inset && 'pl-8',\n className\n )}\n {...props}\n />\n))\nDropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName\n\nconst DropdownMenuSeparator = React.forwardRef<\n React.ElementRef<typeof DropdownMenuPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <DropdownMenuPrimitive.Separator\n ref={ref}\n className={cn('bg-muted -mx-1 my-1 h-px', className)}\n {...props}\n />\n))\nDropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName\n\nconst DropdownMenuShortcut = ({\n className,\n ...props\n}: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <span\n className={cn('ml-auto text-xs tracking-widest opacity-60', className)}\n {...props}\n />\n )\n}\nDropdownMenuShortcut.displayName = 'DropdownMenuShortcut'\n\nexport {\n DropdownMenu,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioItem,\n DropdownMenuLabel,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuGroup,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuRadioGroup,\n}\n","import { Icon } from '../Icon'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '../Dropdown'\nimport { Stack } from '../Stack'\nimport { UserAvatar } from '../UserAvatar'\nimport { UserAvatarProps } from '../UserAvatar'\nimport React, { Children, Fragment, ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\n\nexport interface LoggedInUserProps extends UserAvatarProps {\n email: string\n children?: ReactNode | ReactNode[]\n onSignOut: () => void\n}\n\nconst Root: React.FC<LoggedInUserProps> = ({\n email,\n name,\n onSignOut,\n imageUrl,\n size = 'small',\n children,\n}) => {\n const validChildren = Children.toArray(children).filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type === MenuItem || child.type === Seperator)\n )\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n className=\"cursor-pointer outline-none\"\n aria-label=\"open menu\"\n >\n <UserAvatar name={name} imageUrl={imageUrl} size={size} />\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"mt-2 max-w-64 p-0\">\n <LoggedInMenuContent name={name} email={email} onSignOut={onSignOut}>\n {validChildren}\n </LoggedInMenuContent>\n </DropdownMenuContent>\n </DropdownMenu>\n )\n}\nRoot.displayName = 'LoggedInUserMenu'\n\ninterface LoggedInMenuContentProps extends Omit<LoggedInUserProps, 'imageUrl'> {\n email: string\n children?: ReactNode | ReactNode[]\n onSignOut: () => void\n}\n\nconst LoggedInMenuContent: React.FC<LoggedInMenuContentProps> = ({\n email,\n name,\n children,\n onSignOut,\n}) => {\n return (\n <>\n <Stack padding={3}>\n <div className=\"truncate text-sm font-semibold\">{name}</div>\n <div className=\"text-body truncate text-sm\" title={email}>\n {email}\n </div>\n </Stack>\n <Seperator />\n {Children.map(children, (child, index) => (\n <Fragment key={index}>{child}</Fragment>\n ))}\n <MenuItem onSelect={onSignOut}>\n <Icon name=\"log-out\" />\n Logout\n </MenuItem>\n </>\n )\n}\n\ninterface LoggedInMenuItemProps {\n onSelect: () => void\n children?: ReactNode | ReactNode[]\n className?: string\n}\n\nconst MenuItem: React.FC<LoggedInMenuItemProps> = ({\n onSelect,\n children,\n className,\n}) => {\n return (\n <DropdownMenuItem\n onSelect={onSelect}\n className={cn('cursor-pointer p-3', className)}\n >\n {children}\n </DropdownMenuItem>\n )\n}\nMenuItem.displayName = 'LoggedInUserMenu.MenuItem'\n\nconst Seperator: React.FC = () => {\n return (\n <DropdownMenuSeparator data-component=\"separator\" className=\"peer my-0\" />\n )\n}\n\nexport const LoggedInUserMenu = Object.assign(Root, {\n MenuItem,\n Seperator,\n})\n","import { cn } from '@/lib/utils'\nimport { Icon } from '../Icon'\nimport { AnimatePresence, motion } from 'motion/react'\nimport { IconName } from '../Icon/names'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nexport interface Suggestion {\n id: string\n label: string\n onClick: (id: string) => void\n icon?: IconName\n className?: string\n iconClassName?: string\n}\n\nexport interface Attachment {\n id: string\n name: string\n bytes: ArrayBuffer\n type: string\n size: number\n onRemove?: (id: string) => void\n}\n\nexport interface PromptInputProps {\n prompt?: string\n placeholder: string\n onChange: (prompt: string) => void\n onSubmit: (e: React.MouseEvent<HTMLButtonElement>) => void\n onFileUpload?: (files: Attachment[]) => void\n suggestions?: Suggestion[]\n attachments?: Attachment[]\n\n /**\n * The icon to show when the prompt is being submitted.\n */\n submittingIcon?: IconName\n\n /**\n * Whether the prompt is being submitted.\n */\n isSubmitting?: boolean\n\n /**\n * The max height the prompt input can grow to in pixels.\n */\n maxHeight?: number\n\n /**\n * The ref to the file input.\n */\n fileInputRef?: React.RefObject<HTMLInputElement>\n\n /**\n * The file types that are accepted by the file input.\n */\n acceptedFileTypes?: string[]\n\n /**\n * Whether the prompt input is disabled.\n */\n isDisabled?: boolean\n\n /**\n * The maximum number of attachments that can be uploaded.\n */\n maxAttachments?: number\n}\n\nexport function PromptInput({\n placeholder,\n onSubmit,\n suggestions = [],\n prompt,\n onChange,\n onFileUpload,\n attachments = [],\n maxHeight = 250,\n isSubmitting = false,\n submittingIcon = 'loader',\n fileInputRef,\n acceptedFileTypes,\n isDisabled = false,\n maxAttachments = 1,\n}: PromptInputProps) {\n const [isDraggingOver, setIsDraggingOver] = useState(false)\n\n // Always create a ref, and then assign it to the consumer's ref if provided\n const internalFileInputRef = useRef<HTMLInputElement>(null)\n const fileInputRefInternal = useMemo(() => {\n return fileInputRef || internalFileInputRef\n }, [fileInputRef])\n\n const textAreaRef = useRef<HTMLTextAreaElement>(null)\n\n const minHeight = useMemo<React.CSSProperties['minHeight']>(() => {\n const promptLines = prompt?.split('\\n').length ?? 0\n\n if (promptLines === 0) {\n return 0\n }\n\n // 1 line in the textarea = height 20px (approx)\n const totalHeight = promptLines * 20\n\n // We need to clamp the height of the textarea to the max height\n // as min-height will override max-height\n if (totalHeight > maxHeight) {\n return `${maxHeight}px`\n }\n\n return `${totalHeight}px`\n }, [prompt, maxHeight])\n\n const handleDragOver = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n event.stopPropagation()\n setIsDraggingOver(true)\n },\n []\n )\n\n const handleFiles = useCallback(\n async (files: File[]) => {\n const attachments: Attachment[] = await Promise.all(\n files.map(async (file) => ({\n id: crypto.randomUUID(),\n name: file.name,\n type: file.type,\n size: file.size,\n bytes: await file.arrayBuffer(),\n }))\n )\n onFileUpload?.(attachments)\n },\n [onFileUpload]\n )\n\n const handleDrop = useCallback(\n async (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n event.stopPropagation()\n\n setIsDraggingOver(false)\n handleFiles(Array.from(event.dataTransfer.files))\n },\n [handleFiles]\n )\n\n const handleDragLeave = useCallback(\n (event: React.DragEvent<HTMLDivElement>) => {\n event.preventDefault()\n event.stopPropagation()\n setIsDraggingOver(false)\n },\n []\n )\n\n return (\n <div className=\"flex w-full flex-col\">\n <div\n onDragOver={handleDragOver}\n onDrop={handleDrop}\n onDragLeave={handleDragLeave}\n className={cn(\n 'text-foreground/70 dark:text-body-muted bg-background flex flex-col rounded-md border pt-2 text-sm',\n isDraggingOver && 'border-primary/60 border-dashed'\n )}\n >\n <div\n className={cn(\n 'flex flex-row gap-2 px-2',\n attachments.length > 0 && 'mb-2'\n )}\n >\n <AnimatePresence>\n {attachments.map((attachment) => (\n <AttachmentPreview key={attachment.id} attachment={attachment} />\n ))}\n </AnimatePresence>\n </div>\n\n <div\n className=\"overflow-x-hidden overflow-y-scroll\"\n style={{ minHeight, maxHeight }}\n >\n <textarea\n className=\"text-foreground selection:bg-primary/20 selection:text-primary dark:selection:bg-primary/20 dark:selection:text-primary min-h-[inherit] w-full resize-none rounded-md border border-none bg-transparent px-3 py-1.5 focus:outline-none [&::-webkit-scrollbar]:!invisible\"\n placeholder={placeholder}\n value={prompt}\n onChange={(e) => onChange(e.target.value)}\n autoComplete=\"off\"\n data-1p-ignore=\"true\"\n data-dashlane-disabled-on-field=\"true\"\n ref={textAreaRef}\n spellCheck={false}\n onInput={(e) => {\n if (e.currentTarget.parentNode) {\n ;(\n e.currentTarget.parentNode as HTMLElement\n ).dataset.replicatedValue = e.currentTarget.value\n }\n }}\n />\n </div>\n\n <div id=\"actions-bar\" className=\"flex items-center p-2\">\n <div\n id=\"file-upload\"\n className={cn(\n 'text-foreground hover:bg-accent/80 relative flex cursor-pointer items-center gap-1 rounded-md p-1.5',\n attachments.length >= maxAttachments &&\n 'cursor-not-allowed opacity-50'\n )}\n onClick={() => {\n if (attachments.length >= maxAttachments) {\n return\n }\n\n fileInputRefInternal.current?.click()\n }}\n >\n <Icon name=\"paperclip\" className=\"h-4 w-4\" />\n <input\n type=\"file\"\n ref={fileInputRef}\n className=\"absolute inset-0 hidden h-full w-full\"\n onChange={(e) => handleFiles(Array.from(e.target.files ?? []))}\n accept={acceptedFileTypes?.join(',')}\n />\n </div>\n <div className=\"ml-auto\">\n <motion.button\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n onSubmit(e)\n }}\n className=\"bg-foreground/5 text-foreground/60 dark:bg-foreground dark:text-background disabled:!bg-background/70 disabled:!text-body-muted rounded-md border p-2\"\n disabled={isDisabled || isSubmitting}\n title={\n !prompt\n ? 'Enter a prompt to submit'\n : isSubmitting\n ? 'Submitting...'\n : ''\n }\n whileHover={\n (prompt && !isSubmitting && { scale: 1.05 }) || undefined\n }\n whileTap={\n (prompt && !isSubmitting && { scale: 0.95 }) || undefined\n }\n >\n <Icon\n name={isSubmitting ? submittingIcon : 'arrow-up'}\n strokeWidth={2.5}\n className={cn(isSubmitting && 'animate-spin')}\n />\n </motion.button>\n </div>\n </div>\n </div>\n\n {suggestions.length > 0 && (\n <div className=\"mt-4 flex w-full flex-row flex-wrap gap-3\">\n {suggestions.map((suggestion) => (\n <button\n key={suggestion.label}\n className={cn(\n 'bg-foreground/5 hover:bg-foreground/10 text-foreground/80 relative flex cursor-pointer flex-row items-center gap-1.5 rounded-md border px-2.5 py-2 text-sm tracking-tight whitespace-nowrap select-none',\n suggestion.className\n )}\n onClick={() => suggestion.onClick(suggestion.id)}\n >\n {suggestion.icon && (\n <Icon\n name={suggestion.icon}\n className={cn(\n 'stroke-primary relative size-4',\n suggestion.iconClassName\n )}\n strokeWidth={1}\n />\n )}\n {suggestion.label}\n </button>\n ))}\n </div>\n )}\n </div>\n )\n}\n\nfunction AttachmentPreview({ attachment }: { attachment: Attachment }) {\n const [img, setImg] = useState<string | null>(null)\n\n useEffect(() => {\n async function readFile() {\n if (!attachment.type.startsWith('image/')) {\n return // Only process image files\n }\n\n const reader = new FileReader()\n reader.onloadend = () => setImg(reader.result as string)\n\n try {\n reader.readAsDataURL(\n new Blob([attachment.bytes], { type: attachment.type })\n )\n } catch (error) {\n console.error('Error reading file:', error)\n }\n }\n\n readFile()\n }, [attachment])\n\n const icon = useMemo<IconName>(() => {\n switch (attachment.type) {\n // TODO: add more as and when\n case 'application/x-yaml':\n case 'application/yaml':\n case 'application/json':\n return 'file-code'\n case 'text/plain':\n return 'file-text'\n default:\n return 'file'\n }\n }, [attachment.type])\n\n return (\n <motion.div\n initial={{ opacity: 0, scale: 0 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0 }}\n className={cn(\n 'bg-card flex flex-row items-center rounded-lg border px-1.5 py-1 text-xs',\n img && 'gap-1.5'\n )}\n key={attachment.id}\n >\n <div className={cn('size-5', img && 'size-4')}>\n {img ? (\n <img\n src={img}\n className=\"size-full rounded-lg object-cover\"\n alt={attachment.name}\n />\n ) : (\n <Icon name={icon} className=\"size-full py-1\" />\n )}\n </div>\n <div\n title={attachment.name}\n className=\"max-w-36 flex-1 truncate text-xs select-none\"\n >\n {attachment.name}\n </div>\n {attachment.onRemove && (\n <div\n className=\"hover:text-foreground ml-1 cursor-pointer\"\n onClick={() => attachment.onRemove?.(attachment.id)}\n >\n <Icon name=\"x\" className=\"size-3\" />\n </div>\n )}\n </motion.div>\n )\n}\n","import { cn } from '@/lib/utils'\nimport { Size } from '@/types'\nimport './gradientCircle.css'\nimport { useMemo } from 'react'\n\nexport interface GradientCircleProps {\n name: string\n size?: Size\n transition?: boolean\n showInitial?: boolean\n inactive?: boolean\n className?: string\n}\n\nconst initialSizeMap: Record<Size, number> = {\n small: 16,\n medium: 24,\n large: 24,\n xl: 36,\n '2xl': 48,\n}\n\nconst sizeClasses = {\n small: 'h-6 w-6 border-2',\n medium: 'h-8 w-8 border-2',\n large: 'h-10 w-10 border-4',\n xl: 'h-12 w-12 border-4',\n '2xl': 'h-20 w-20 border-4',\n}\n\nexport function GradientCircle({\n name,\n size = 'small',\n transition = false,\n showInitial = false,\n inactive = false,\n className,\n}: GradientCircleProps) {\n const initial = useMemo<string | undefined>(\n () => (name.length > 0 ? name[0].toUpperCase() : undefined),\n [name]\n )\n // Define vibrant base colors (in HSL)\n const baseColors = [\n 0, // Red\n 30, // Orange\n 60, // Yellow\n 120, // Green\n 180, // Cyan\n 210, // Blue\n 270, // Purple\n 300, // Pink\n 330, // Magenta\n ]\n\n // Generate hash for color selection\n const hash = name.split('').reduce((acc, char, i) => {\n const charCode = char.charCodeAt(0)\n return (acc * 31 + charCode * (i + 1)) >>> 0\n }, 5381)\n\n // Select base color from hash\n const baseColorIndex = hash % baseColors.length\n const baseHue = baseColors[baseColorIndex]\n\n // Create harmonious color pair using analogous colors (30° apart)\n const hue1 = baseHue\n const hue2 = (baseHue + 30) % 360 // Wrap around 360 degrees\n\n // Adjust saturation and lightness for better blending\n // First color is more saturated, second is slightly lighter\n const fromColor = `hsl(${hue1}, 85%, 60%)`\n const toColor = `hsl(${hue2}, 75%, 65%)`\n\n return (\n <div\n className={cn(\n 'gradient-circle relative min-h-6 min-w-6 rounded-full border-white',\n size && `${sizeClasses[size]}`,\n inactive && 'opacity-50',\n className\n )}\n style={\n {\n '--from-color': fromColor,\n '--to-color': toColor,\n transition: transition\n ? '--from-color 0.5s, --to-color 2s'\n : undefined,\n } as React.CSSProperties\n }\n >\n {showInitial && name.length > 0 && (\n <div\n className=\"gradient-circle-initial\"\n style={\n {\n '--translate': initial\n ? getInitialTranslateY(initial)\n : undefined,\n fontSize: initialSizeMap[size],\n } as React.CSSProperties\n }\n >\n {name[0].toUpperCase()}\n </div>\n )}\n </div>\n )\n}\n\n/**\n * every letter has a different central focal point\n * so may need some adjustment in order to center them\n */\nfunction getInitialTranslateY(letter: string): [string, string] {\n switch (letter) {\n case 'A':\n return ['-50%', '-55%']\n case 'B':\n return ['-50%', '-55%']\n case 'C':\n return ['-54%', '-50%']\n case 'D':\n return ['-46%', '-50%']\n case 'E':\n return ['-52%', '-50%']\n case 'F':\n return ['-50%', '-52%']\n case 'G':\n return ['-52%', '-52%']\n case 'J':\n return ['-55%', '-52%']\n case 'L':\n return ['-47%', '-54%']\n case 'Q':\n return ['-53%', '-55%']\n case 'R':\n return ['-52%', '-55%']\n default:\n return ['-50%', '-50%']\n }\n}\n","import * as React from 'react'\n\nimport {\n Command,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/Command'\nimport { Popover, PopoverContent, PopoverTrigger } from '@/components/Popover'\nimport { Org } from '.'\nimport { Icon } from '@/components/Icon'\nimport { Virtuoso, VirtuosoHandle } from 'react-virtuoso'\nimport { cn } from '@/lib/utils'\n\ninterface OrgSelectorProps {\n orgs: Org[]\n selectedOrg: Org | null\n onSelect: (org: Org) => void\n searchable?: boolean\n error?: boolean\n errorText?: string\n emptyText?: string\n searchPlaceholder?: string\n}\n\nconst COMBOBOX_CONFIG = {\n heights: {\n row: 16,\n header: 28,\n padding: 8,\n max: 250,\n },\n} as const\n\nfunction uniqBy<T>(arr: T[], key: keyof T) {\n return [...new Map(arr.map((item) => [item[key], item])).values()]\n}\n\nexport function OrgSelector({\n orgs = [],\n selectedOrg,\n onSelect,\n searchable = true,\n error = false,\n errorText = 'An error occurred',\n emptyText = 'No organizations found',\n searchPlaceholder = 'Search...',\n}: OrgSelectorProps) {\n const [open, setOpen] = React.useState(false)\n const [search, setSearch] = React.useState('')\n const [activeIndex, setActiveIndex] = React.useState(0)\n const triggerRef = React.useRef<HTMLButtonElement>(null)\n const handleSelect = (org: Org, index: number) => {\n onSelect(org)\n setOpen(false)\n setActiveIndex(index)\n }\n\n const filteredItems = React.useMemo(() => {\n if (!search) return uniqBy(orgs, 'slug')\n return uniqBy(\n orgs.filter((org) => org.slug.includes(search)),\n 'slug'\n )\n }, [search, orgs])\n\n const getSelectorMedianWidth = React.useMemo(() => {\n if (!orgs.length) return 0\n\n // Get lengths of all slugs\n const lengths = orgs.map((org) => org.slug.length)\n\n // Sort lengths to find the middle value(s)\n const sortedLengths = [...lengths].sort((a, b) => a - b)\n const mid = Math.floor(sortedLengths.length / 2)\n\n // Get median length (average of two middle values for even-length arrays)\n const medianLength =\n sortedLengths.length % 2 === 0\n ? (sortedLengths[mid - 1] + sortedLengths[mid]) / 2\n : sortedLengths[mid]\n\n // Base width calculation:\n // - Average lowercase letter: ~8px at 16px font size\n // - Average uppercase letter: ~10px at 16px font size\n // - Numbers: ~8px at 16px font size\n // - Font size adjustment (text-lg = 1.125rem = 18px): 18/16 = 1.125\n const baseCharWidth = 8 * 1.125\n\n return Math.round(medianLength * baseCharWidth * 1.2)\n }, [orgs])\n\n const virtuosoRef = React.useRef<VirtuosoHandle>(null)\n\n const handleOpenChange = (open: boolean) => {\n setOpen(open)\n if (open) {\n virtuosoRef.current?.scrollToIndex({ index: activeIndex, align: 'start' })\n }\n }\n\n const VirtuosoItem = React.memo(\n ({ index, org }: { index: number; org: Org }) => {\n return (\n <CommandItem\n key={org.slug}\n value={org.slug}\n onSelect={() => handleSelect(org, index)}\n className=\"relative block w-full cursor-pointer items-center gap-2 truncate rounded-sm px-2 py-1.5 text-sm outline-none select-none\"\n >\n {org.label}\n </CommandItem>\n )\n }\n )\n\n // When the search changes, reset the active index and scroll to the top\n React.useEffect(() => {\n setActiveIndex(0)\n virtuosoRef.current?.scrollToIndex({ index: 0, align: 'start' })\n }, [search])\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (!['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) return\n if (!virtuosoRef.current) return\n\n let newIndex = activeIndex\n switch (e.key) {\n case 'ArrowDown':\n newIndex = Math.min(activeIndex + 1, filteredItems.length - 1)\n break\n case 'ArrowUp':\n newIndex = Math.max(activeIndex - 1, 0)\n break\n case 'Home':\n newIndex = 0\n break\n }\n setActiveIndex(newIndex)\n virtuosoRef.current?.scrollToIndex({ index: newIndex, align: 'start' })\n },\n [activeIndex, filteredItems.length]\n )\n\n const virtuosoHeight = React.useMemo(() => {\n const { row, header, padding, max } = COMBOBOX_CONFIG.heights\n const shouldShowHeaders = filteredItems.some((group) => group.label)\n const headerHeight = shouldShowHeaders ? filteredItems.length * header : 0\n const contentHeight = filteredItems.reduce((sum) => row + sum, headerHeight)\n\n return Math.min(contentHeight + padding, max)\n }, [filteredItems])\n\n return (\n <Popover open={open} onOpenChange={handleOpenChange}>\n <PopoverTrigger asChild className=\"flex flex-row items-center\">\n <button\n type=\"button\"\n role=\"combobox\"\n ref={triggerRef}\n aria-expanded={open}\n title={selectedOrg ? selectedOrg.slug : 'Select organization...'}\n className=\"flex flex-row items-center gap-2 outline-none\"\n >\n <div\n className={cn(\n 'min-w-0 flex-1 truncate text-left text-lg font-semibold lowercase',\n open ? 'text-foreground' : 'text-foreground/80'\n )}\n style={{ width: getSelectorMedianWidth }}\n >\n {selectedOrg ? selectedOrg.slug : 'Select organization...'}\n </div>\n <Icon\n name={open ? 'chevron-up' : 'chevron-down'}\n className=\"flex-shrink-0\"\n />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-fit p-0\" align=\"start\" sideOffset={10}>\n <Command shouldFilter={false} onKeyDown={handleKeyDown}>\n {searchable && (\n <CommandInput\n value={search}\n onValueChange={setSearch}\n placeholder={searchPlaceholder}\n />\n )}\n <CommandList>\n {error ? (\n <CommandItem disabled>{errorText}</CommandItem>\n ) : filteredItems.length === 0 ? (\n <CommandItem disabled>{emptyText}</CommandItem>\n ) : (\n <Virtuoso\n style={{ height: virtuosoHeight }}\n data={filteredItems}\n ref={virtuosoRef}\n initialTopMostItemIndex={activeIndex}\n totalCount={filteredItems.length}\n itemContent={(index, org) => (\n <VirtuosoItem index={index} org={org} />\n )}\n />\n )}\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n )\n}\n","import React, { useCallback, useEffect, useState } from 'react'\nimport { Org } from '.'\nimport { Command } from '../Command'\nimport { Text } from '../Text'\nimport { Icon } from '../Icon'\nimport { Button, Heading, Stack } from '@/index'\nimport { Separator } from '../Separator'\nimport { GradientCircle } from '../GradientCircle'\n\nimport { cn } from '@/lib/utils'\nimport { OrgSelector } from './OrgSelector'\n\nexport interface CreateResult {\n success: boolean\n error?: string\n}\n\ninterface CreateWorkspaceProps {\n open: boolean\n selectedOrg: Org\n allOrgs: Org[]\n onBack?: () => void\n onSubmit: (org: Org, workspaceName: string) => Promise<CreateResult>\n newWorkspaceName: string\n setNewWorkspaceName: (name: string) => void\n backButtonEnabled?: boolean\n}\n\nexport function CreateWorkspace({\n open,\n selectedOrg,\n allOrgs,\n onBack,\n onSubmit,\n newWorkspaceName,\n setNewWorkspaceName,\n backButtonEnabled = true,\n}: CreateWorkspaceProps) {\n const createInputRef = React.useRef<HTMLInputElement>(null)\n const [isInvalid, setIsInvalid] = useState(false)\n const [currentOrg, setCurrentOrg] = useState(selectedOrg)\n const [isSubmitting, setIsSubmitting] = useState(false)\n const [error, setError] = useState<string | null>(null)\n\n React.useEffect(() => {\n if (open) {\n setTimeout(() => {\n createInputRef.current?.focus()\n }, 300)\n }\n }, [open])\n\n useEffect(() => {\n // Focus the input when the org changes\n focusInput()\n }, [currentOrg])\n\n const focusInput = () => {\n createInputRef.current?.focus()\n }\n\n const handleSubmit = async () => {\n setIsSubmitting(true)\n const result = await onSubmit(currentOrg, newWorkspaceName)\n setIsSubmitting(false)\n if (!result.success) {\n setError(result.error ?? 'Unknown error')\n }\n }\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setNewWorkspaceName(e.target.value)\n setIsInvalid(!e.target.validity.valid)\n },\n [setNewWorkspaceName, setIsInvalid]\n )\n\n return (\n <Command className=\"relative\">\n <div className=\"flex h-full w-full flex-row items-center\">\n <div className=\"flex w-1/3 flex-col items-center justify-center gap-4 px-8 text-center\">\n <div className=\"flex flex-col items-center justify-center gap-4\">\n <GradientCircle name={currentOrg.label} size=\"2xl\" showInitial />\n <Stack align=\"center\" gap={2}>\n <Heading variant=\"xl\">Create new workspace</Heading>\n <div className=\"max-w-64\">\n <Text muted>\n Workspaces are used to organize your SDK targets into logical\n groups.\n </Text>\n </div>\n </Stack>\n </div>\n </div>\n\n <Separator orientation=\"vertical\" />\n\n <div className=\"flex w-2/3 flex-col items-center justify-center px-8\">\n <div className=\"flex max-w-lg flex-col\">\n <div className=\"flex flex-col gap-4\">\n <Stack align=\"start\" gap={2}>\n <Text variant=\"lg\">Choose your workspace name</Text>\n <Text muted>\n Enter a name for your new workspace. Names must be in slug\n format; only lowercase letters, numbers, and hyphens are\n allowed.\n </Text>\n </Stack>\n </div>\n <div className=\"flex flex-col\">\n <div\n className=\"focus-within:outline-muted/50 shadow-muted bg-input/10 border-neutral-softest ease-in-out-expo mt-5 flex w-full max-w-[660px] flex-row items-center justify-stretch gap-2 rounded-md border px-4 py-1 transition-[border-color] duration-500 focus-within:shadow-sm focus-within:outline focus-within:outline-1 focus-within:outline-offset-0 data-[invalid=true]:border-red-400/75\"\n onClick={focusInput}\n data-invalid={isInvalid}\n >\n {allOrgs.length > 1 ? (\n <OrgSelector\n orgs={allOrgs}\n selectedOrg={currentOrg}\n onSelect={setCurrentOrg}\n />\n ) : (\n <span\n title={currentOrg.slug}\n className={cn(\n 'text-foreground/80 text-lg font-semibold whitespace-pre select-none',\n currentOrg.slug.length > 20 &&\n 'max-w-40 truncate whitespace-pre'\n )}\n >\n {currentOrg.slug}\n </span>\n )}\n <span className=\"text-muted-foreground/50 mx-2 text-lg select-none\">\n /\n </span>\n <div className=\"flex w-full\">\n <input\n ref={createInputRef}\n type=\"text\"\n pattern=\"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\n role=\"textbox\"\n name=\"workspaceName\"\n placeholder=\"your-new-workspace\"\n value={newWorkspaceName}\n onChange={handleChange}\n className=\"border-neutral-softest text-foreground/80 placeholder:text-muted-foreground/50 ring-offset-background text-md flex h-10 w-full min-w-fit flex-1 flex-grow bg-transparent px-2 py-1.5 pl-0 text-lg outline-none\"\n />\n </div>\n </div>\n\n <div className=\"mt-2.5 min-h-6 self-start\">\n {newWorkspaceName &&\n !newWorkspaceName.match(/^[a-z0-9]+(?:-[a-z0-9]+)*$/) && (\n <div className=\"text-sm text-red-400/75\">\n Workspace names can only contain lowercase letters,\n numbers, and hyphens\n </div>\n )}\n {error && (\n <div className=\"text-sm text-red-400/75\">{error}</div>\n )}\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"border-neutral-softest bg-background flex border-t px-8 py-4\">\n {backButtonEnabled && onBack && (\n <Button variant=\"secondary\" onClick={onBack}>\n <Icon name=\"chevron-left\" size=\"small\" />\n Back\n </Button>\n )}\n <div className=\"ml-auto\">\n <Button\n variant=\"secondary\"\n disabled={\n !newWorkspaceName ||\n !newWorkspaceName.match(/^[a-z0-9]+(?:-[a-z0-9]+)*$/)\n }\n onClick={handleSubmit}\n >\n {isSubmitting ? (\n <Icon name=\"loader\" className=\"animate-spin\" />\n ) : (\n 'Create'\n )}\n </Button>\n </div>\n </div>\n </Command>\n )\n}\n","import React from 'react'\nimport {\n GroupedVirtuoso,\n GroupedVirtuosoHandle,\n Virtuoso,\n VirtuosoHandle,\n} from 'react-virtuoso'\n\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nconst forwardRefWithGenerics = <T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => React.ReactNode | null\n): ((props: P & React.RefAttributes<T>) => React.ReactNode | null) =>\n // @ts-expect-error cant type this correctly\n React.forwardRef<T, P>(render)\n\nconst DEFAULT_SCROLLBAR_CLASSES =\n '[&::-webkit-scrollbar-thumb]:bg-gray-200 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb:active]:bg-black/20 dark:[&::-webkit-scrollbar-thumb]:bg-neutral-700 dark:[&::-webkit-scrollbar-thumb:active]:bg-white/50 [&::-webkit-scrollbar-track]:bg-gray-100 dark:[&::-webkit-scrollbar-track]:bg-neutral-900 [&::-webkit-scrollbar]:w-2'\n\ninterface ScrollingListProps<T> {\n items: T[]\n renderItem: (item: T) => React.ReactNode\n ref?: React.RefObject<VirtuosoHandle>\n}\n\nfunction ScrollingListInner<T>(\n { items, renderItem }: ScrollingListProps<T>,\n ref: React.ForwardedRef<VirtuosoHandle>\n) {\n return (\n <Virtuoso\n className={DEFAULT_SCROLLBAR_CLASSES}\n totalCount={items.length}\n data={items}\n itemContent={(_, item) => renderItem(item)}\n ref={ref}\n />\n )\n}\n\nexport const ScrollingList = forwardRefWithGenerics(ScrollingListInner)\n\ninterface GroupedScrollingListProps<G> {\n groups: G[]\n\n /**\n * An array of integers to represent the number of items in each group.\n * e.g [10, 20, 30] means there are 3 groups with 10, 20, and 30 items respectively.\n */\n groupCounts: number[]\n renderGroupHeader: (group: G) => React.ReactNode\n renderItem: (group: G, itemIndex: number) => React.ReactNode\n ref?: React.RefObject<GroupedVirtuosoHandle>\n}\n\nfunction GroupedScrollingListInner<G>(\n {\n groups,\n groupCounts,\n renderGroupHeader,\n renderItem,\n }: GroupedScrollingListProps<G>,\n ref: React.ForwardedRef<GroupedVirtuosoHandle>\n) {\n return (\n <GroupedVirtuoso\n style={{\n height: '100%',\n }}\n className={DEFAULT_SCROLLBAR_CLASSES}\n groupCounts={groupCounts}\n groupContent={(index) => renderGroupHeader(groups[index])}\n itemContent={(itemIndex, groupIndex) => {\n const group = groups[groupIndex]\n\n return renderItem(group, itemIndex)\n }}\n ref={ref}\n />\n )\n}\n\nexport const GroupedScrollingList = forwardRefWithGenerics(\n GroupedScrollingListInner\n)\n","import { RefObject } from 'react'\nimport { Icon } from '../Icon'\n\ninterface SearchBoxProps {\n inputRef: RefObject<HTMLInputElement>\n search: string\n setSearch: (search: string) => void\n placeholder: string\n}\n\nexport function SearchBox({\n inputRef,\n search,\n setSearch,\n placeholder,\n}: SearchBoxProps) {\n return (\n <div className=\"border-neutral-softest relative flex items-center gap-2 border-b p-3\">\n <Icon name=\"search\" className=\"text-muted-foreground\" />\n <input\n ref={inputRef}\n placeholder={placeholder}\n value={search}\n className=\"placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-base outline-none disabled:cursor-not-allowed disabled:opacity-50\"\n onChange={(e) => setSearch(e.target.value)}\n />\n\n <div className=\"absolute right-3\">\n {search && (\n <button\n className=\"hover:bg-accent text-muted-foreground flex h-8 w-8 cursor-pointer items-center justify-center rounded-sm\"\n onClick={() => setSearch('')}\n >\n <Icon name=\"x\" size=\"small\" />\n </button>\n )}\n </div>\n </div>\n )\n}\n","import { Org } from '.'\nimport { CommandItem } from '../Command'\nimport { GradientCircle } from '../GradientCircle'\nimport { Icon } from '../Icon'\nimport { cn } from '@/lib/utils'\nimport { ScrollingList } from './ScrollingList'\nimport { VirtuosoHandle } from 'react-virtuoso'\nimport { useEffect, useRef, useState } from 'react'\nimport { SearchBox } from './SearchBox'\nimport { Text } from '../Text'\n\ninterface OrgListProps {\n orgs: Org[]\n enableRecents: boolean\n showRecents: boolean\n selectedOrg?: Org\n setSelectedOrg: (org: Org) => void\n onSelectRecent: () => void\n filterOrgFunc: (org: Org, search: string) => boolean\n}\n\nexport function OrgList({\n orgs,\n showRecents,\n selectedOrg,\n setSelectedOrg,\n enableRecents,\n onSelectRecent,\n filterOrgFunc,\n}: OrgListProps) {\n const virtuoso = useRef<VirtuosoHandle | null>(null)\n const [search, setSearch] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n const [filteredOrgs, setFilteredOrgs] = useState(orgs)\n\n useEffect(() => {\n setFilteredOrgs(orgs.filter((org) => filterOrgFunc(org, search)))\n }, [search, filterOrgFunc, orgs])\n\n useEffect(() => {\n if (selectedOrg && virtuoso.current) {\n const index = orgs.findIndex((org) => org.slug === selectedOrg.slug)\n\n setTimeout(() => {\n virtuoso.current?.scrollIntoView({\n index,\n behavior: orgs.length < 10 ? 'smooth' : 'auto',\n })\n }, 100)\n }\n }, [selectedOrg, orgs])\n\n return (\n <div className=\"border-neutral-softest flex h-full w-full flex-col @[640px]:w-1/3 @[640px]:border-r\">\n <SearchBox\n inputRef={inputRef}\n placeholder=\"Search organizations...\"\n search={search}\n setSearch={setSearch}\n />\n\n {filteredOrgs.length > 0 ? (\n <ScrollingList\n items={filteredOrgs}\n ref={virtuoso}\n renderItem={(org) => (\n <CommandItem\n key={org.slug}\n onSelect={() => setSelectedOrg(org)}\n value={`org-${org.slug}`}\n className={cn(\n 'hover:!bg-accent/40 flex cursor-pointer flex-row gap-3 rounded-none p-4 text-base @[640px]:max-w-lg',\n !showRecents &&\n selectedOrg?.slug === org.slug &&\n 'bg-accent/40 text-accent-foreground font-semibold'\n )}\n >\n <GradientCircle name={org.label} />\n <Text className=\"truncate\">{org.slug}</Text>\n {!showRecents && selectedOrg?.slug === org.slug && (\n <div className=\"ml-auto\">\n <Icon name=\"chevron-right\" size=\"small\" />\n </div>\n )}\n </CommandItem>\n )}\n />\n ) : (\n <div className=\"text-muted-foreground m-auto flex h-full max-w-2/3 items-center justify-center p-6 text-center\">\n No organizations found\n </div>\n )}\n\n {enableRecents && (\n <div className=\"bg-background border-neutral-softest border-t\">\n <CommandItem\n onSelect={onSelectRecent}\n className={cn(\n 'bg-background text-foreground/80 sticky top-0 z-10 m-1 flex cursor-pointer items-center p-4 text-base',\n showRecents && 'text-accent-foreground font-semibold'\n )}\n >\n <Icon name=\"history\" />\n <Text>Recently used</Text>\n {showRecents && (\n <div className=\"ml-auto\">\n <Icon name=\"chevron-right\" size=\"2xl\" />\n </div>\n )}\n </CommandItem>\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@/lib/utils'\nimport { CommandItem } from '../Command'\nimport { GradientCircle } from '../GradientCircle'\nimport { Org, Workspace } from '.'\nimport { Text } from '../Text'\nimport { forwardRef } from 'react'\n\ninterface WorkspaceItemProps {\n workspace: Workspace\n selectedOrg: Org\n isSelected: boolean\n handleSelect: (org: Org, workspace: Workspace) => void\n}\n\nexport const WorkspaceItem = forwardRef<HTMLDivElement, WorkspaceItemProps>(\n function WorkspaceItem(\n { workspace, selectedOrg, handleSelect, isSelected },\n ref\n ) {\n return (\n <CommandItem\n key={workspace.id}\n ref={ref}\n value={`workspace-${selectedOrg.id}-${workspace.id}`}\n onSelect={() => handleSelect(selectedOrg, workspace)}\n className={cn(\n 'hover:!bg-accent/40 data-[selected=true]:!bg-accent/40 flex w-full max-w-full cursor-pointer flex-row gap-3 rounded-none p-4 text-base',\n isSelected && 'font-semibold',\n !workspace.active && 'opacity-50'\n )}\n >\n <GradientCircle name={workspace.label} />\n <Text className=\"truncate\">{workspace.label}</Text>\n </CommandItem>\n )\n }\n)\n","import { CommandItem } from '../Command'\nimport { Icon } from '../Icon'\nimport { Org, Workspace } from '.'\nimport { cn } from '@/lib/utils'\nimport { WorkspaceItem } from './WorkspaceItem'\nimport { useEffect, useRef, useState } from 'react'\nimport { ScrollingList } from './ScrollingList'\nimport { VirtuosoHandle } from 'react-virtuoso'\nimport { SearchBox } from './SearchBox'\nimport { Text } from '../Text'\n\ninterface WorkspaceListProps {\n selectedOrg?: Org\n selectedWorkspace: Workspace | null\n handleCreateViewOpen: () => void\n handleSelect: (org: Org, workspace: Workspace) => void\n enableCreate?: boolean\n filterWorkspaceFunc: (workspace: Workspace, search: string) => boolean\n}\n\nexport function WorkspaceList({\n selectedOrg,\n selectedWorkspace,\n handleCreateViewOpen,\n handleSelect,\n enableCreate = true,\n filterWorkspaceFunc,\n}: WorkspaceListProps) {\n const virtuoso = useRef<VirtuosoHandle | null>(null)\n const [search, setSearch] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n const filteredWorkspaces =\n selectedOrg?.workspaces.filter((workspace) =>\n filterWorkspaceFunc(workspace, search)\n ) ?? []\n\n useEffect(() => {\n if (selectedOrg && selectedWorkspace && virtuoso.current) {\n const index = selectedOrg.workspaces.findIndex(\n (workspace) => workspace.slug === selectedWorkspace.slug\n )\n\n setTimeout(() => {\n virtuoso.current?.scrollToIndex({\n index,\n behavior: 'smooth',\n })\n }, 100)\n }\n }, [selectedWorkspace, selectedOrg])\n\n return (\n <div className=\"flex h-full w-full flex-col @[640px]:w-2/3\">\n <SearchBox\n inputRef={inputRef}\n placeholder=\"Search workspaces...\"\n search={search}\n setSearch={setSearch}\n />\n {!selectedOrg || filteredWorkspaces.length === 0 ? (\n <div className=\"flex flex-grow items-center justify-center\">\n <p className=\"text-body\">\n {search.length > 0\n ? 'No workspaces found'\n : 'No workspaces in this organization'}\n </p>\n </div>\n ) : (\n <ScrollingList\n ref={virtuoso}\n items={filteredWorkspaces}\n renderItem={(workspace) => (\n <WorkspaceItem\n key={workspace.id}\n workspace={workspace}\n selectedOrg={selectedOrg}\n handleSelect={handleSelect}\n isSelected={selectedWorkspace?.id === workspace.id}\n />\n )}\n />\n )}\n {enableCreate && (\n <div className=\"bg-background border-neutral-softest border-t\">\n <CommandItem\n onSelect={handleCreateViewOpen}\n className={cn('m-1 cursor-pointer !items-center p-4 text-base')}\n >\n <Icon name=\"plus\" />\n <Text>Create workspace</Text>\n </CommandItem>\n </div>\n )}\n </div>\n )\n}\n","import { cn } from '@/lib/utils'\nimport { Org, Workspace } from '.'\nimport { WorkspaceItem } from './WorkspaceItem'\nimport { ScrollingList } from './ScrollingList'\nimport { CommandGroup, CommandItem } from '../Command'\nimport { Icon } from '../Icon'\nimport { useState, useRef, useEffect } from 'react'\nimport { SearchBox } from './SearchBox'\nimport { Text } from '../Text'\n\ninterface RecentWorkspacesProps {\n orgsWithFilteredWorkspaces: Org[]\n onSelect: (org: Org, workspace: Workspace) => void\n fullWidth?: boolean\n selectedOrg?: Org\n selectedWorkspace: Workspace | null\n handleCreateViewOpen: () => void\n}\n\nexport function RecentWorkspaces({\n orgsWithFilteredWorkspaces,\n onSelect,\n fullWidth = false,\n selectedOrg,\n selectedWorkspace,\n handleCreateViewOpen,\n}: RecentWorkspacesProps) {\n const [search, setSearch] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n const [filteredRecents, setFilteredRecents] = useState<Org[]>(\n orgsWithFilteredWorkspaces\n )\n\n useEffect(() => {\n setFilteredRecents(\n orgsWithFilteredWorkspaces.filter((org) =>\n org.workspaces.some((workspace) => workspace.slug.includes(search))\n )\n )\n }, [search, orgsWithFilteredWorkspaces])\n\n return (\n <div className={cn('flex h-full flex-col', fullWidth ? 'w-full' : 'w-2/3')}>\n <SearchBox\n inputRef={inputRef}\n placeholder=\"Search workspaces...\"\n search={search}\n setSearch={setSearch}\n />\n <ScrollingList\n items={filteredRecents}\n renderItem={(org) => {\n return (\n <CommandGroup key={org.id} heading={org.slug}>\n {org.workspaces.map((workspace) => (\n <WorkspaceItem\n key={workspace.id}\n workspace={workspace}\n isSelected={\n selectedOrg?.id === org.id &&\n selectedWorkspace?.id === workspace.id\n }\n selectedOrg={org}\n handleSelect={onSelect}\n />\n ))}\n </CommandGroup>\n )\n }}\n />\n\n <div className=\"bg-background border-neutral-softest border-t\">\n <CommandItem\n onSelect={handleCreateViewOpen}\n className={cn('m-1 cursor-pointer !items-center p-4 text-base')}\n >\n <Icon name=\"plus\" />\n <Text>Create workspace</Text>\n </CommandItem>\n </div>\n </div>\n )\n}\n","import { useRef, useState, useEffect } from 'react'\nimport { Org } from '.'\nimport { Command } from '../Command'\nimport { Stack } from '../Stack'\nimport { GradientCircle } from '../GradientCircle'\nimport { Separator } from '../Separator'\nimport { Text } from '../Text'\nimport { Button } from '../Button'\nimport { Heading } from '@/index'\n\ninterface CreateOrgProps {\n onSubmit: (name: string) => Promise<Org>\n}\n\nexport function CreateOrg({ onSubmit }: CreateOrgProps) {\n const [companyName, setCompanyName] = useState('')\n const inputRef = useRef<HTMLInputElement>(null)\n\n useEffect(() => {\n if (inputRef.current) {\n inputRef.current.focus()\n }\n }, [])\n\n return (\n <Command className=\"relative\">\n <div className=\"flex h-full w-full flex-row items-center\">\n <div className=\"flex w-1/3 flex-col items-center justify-center gap-4 px-8 text-center\">\n <div className=\"flex flex-col items-center justify-center gap-4\">\n <GradientCircle\n name={companyName}\n size=\"2xl\"\n transition\n showInitial\n />\n <Stack align=\"center\" gap={2}>\n <Heading variant=\"xl\">Create new company</Heading>\n <div className=\"max-w-64\">\n <Text muted>\n Once you have created your company, we'll take you through\n some onboarding steps to get you started with Speakeasy.\n </Text>\n </div>\n </Stack>\n </div>\n </div>\n\n <Separator orientation=\"vertical\" />\n\n <div className=\"flex w-2/3 flex-col items-center justify-center px-8\">\n <div className=\"flex max-w-lg flex-col\">\n <div className=\"flex flex-col gap-4\">\n <Stack align=\"start\" gap={2}>\n <Text variant=\"lg\">Enter your company name</Text>\n <Text muted>\n We will automatically generate a unique, URL-friendly slug\n based off your company name.\n </Text>\n </Stack>\n </div>\n <div className=\"flex flex-col\">\n <div className=\"focus-within:outline-muted/50 shadow-muted bg-input/10 border-neutral-softest ease-in-out-expo mt-5 flex w-full max-w-[660px] flex-row items-center justify-stretch gap-2 rounded-md border px-4 py-1 transition-[border-color] duration-500 focus-within:shadow-sm focus-within:outline focus-within:outline-offset-0 data-[invalid=true]:border-red-400/75\">\n <div className=\"flex w-full\">\n <input\n type=\"text\"\n role=\"textbox\"\n name=\"companyName\"\n pattern=\"^[a-z0-9]+(?:-[a-z0-9]+)*$\"\n ref={inputRef}\n placeholder=\"Your company name\"\n value={companyName}\n onChange={(e) => setCompanyName(e.target.value)}\n className=\"border-neutral-softest text-foreground/80 placeholder:text-muted-foreground/50 ring-offset-background text-md flex h-10 w-full min-w-fit flex-1 flex-grow bg-transparent px-2 py-1.5 pl-0 text-lg outline-none\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"border-neutral-softest bg-background flex border-t px-8 py-4\">\n <div className=\"ml-auto\">\n <Button\n variant=\"secondary\"\n disabled={!companyName}\n onClick={() => onSubmit(companyName)}\n >\n Next\n </Button>\n </div>\n </div>\n </Command>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Command, CommandEmpty } from '../Command'\nimport { CreateWorkspace, CreateResult } from './CreateWorkspace'\nimport { OrgList } from './OrgList'\nimport { WorkspaceList } from './WorkspaceList'\nimport './styles.css'\nimport { RecentWorkspaces } from './RecentWorkspaces'\nimport { Text } from '../Text'\nimport { Logo } from '../Logo'\nimport { Stack } from '../Stack'\nimport { CreateOrg } from './CreateOrg'\nimport { Heading } from '../Heading'\nimport { GlobalWorkspaceSelectorProps } from '@/types'\nimport { cn } from '@/lib/utils'\n\nexport interface Org {\n id: string\n label: string\n slug: string\n workspaces: Workspace[]\n}\n\nexport interface Workspace {\n id: string\n slug: string\n label: string\n active: boolean\n createdAt: Date\n updatedAt: Date\n}\n\ninterface WorkspaceSelectorBaseProps extends GlobalWorkspaceSelectorProps {\n onCreateOrg: (newOrgName: string) => Promise<Org>\n\n /**\n * Returns a promise that resolves to true if the workspace was created, false otherwise.\n */\n onCreate: (org: Org, newWorkspaceName: string) => Promise<CreateResult>\n placeholder?: string\n emptyText?: string\n recents?: Org[]\n height?: string | number\n\n /**\n * If true, creating a new workspace will trigger the onSelect callback.\n */\n createTriggersSelection?: boolean\n\n filterOrgFunc: (org: Org, search: string) => boolean\n filterWorkspaceFunc: (workspace: Workspace, search: string) => boolean\n}\n\nexport type WorkspaceSelectorProps = WorkspaceSelectorBaseProps &\n (\n | {\n showCreateWorkspaceView: true\n defaultSelectedOrg: Org\n }\n | {\n showCreateWorkspaceView?: false\n defaultSelectedOrg?: Org\n }\n )\n\nconst useViewTransition = () => {\n const [isTransitioning, setIsTransitioning] = React.useState(false)\n\n const startTransition = React.useCallback(\n (callback: () => void, finished?: () => void) => {\n if ('startViewTransition' in document) {\n setIsTransitioning(true)\n const transition = document.startViewTransition(callback)\n transition.finished.then(() => {\n setIsTransitioning(false)\n finished?.()\n })\n } else {\n callback()\n }\n },\n []\n )\n\n return {\n isTransitioning,\n startTransition,\n setIsTransitioning,\n }\n}\n\nexport function WorkspaceSelector({\n orgs,\n onSelect,\n onCreate,\n emptyText = 'No workspaces found.',\n recents = [],\n height = '500px',\n onCreateOrg,\n createTriggersSelection = false,\n showCreateWorkspaceView = false,\n defaultSelectedOrg,\n filterOrgFunc,\n filterWorkspaceFunc,\n}: WorkspaceSelectorProps) {\n const [selectedWorkspace, setSelectedWorkspace] =\n React.useState<Workspace | null>(null)\n const [selectedOrg, setSelectedOrg] = React.useState<Org | undefined>(\n defaultSelectedOrg\n )\n const [createWorkspaceViewOpen, setCreateWorkspaceViewOpen] = React.useState(\n showCreateWorkspaceView ?? false\n )\n const [createOrgViewOpen, setCreateOrgViewOpen] = React.useState(\n orgs.length === 0\n )\n const [newWorkspaceName, setNewWorkspaceName] = React.useState('')\n const containerRef = React.useRef<HTMLDivElement>(null)\n const [showRecents, setShowRecents] = React.useState(recents.length > 0)\n const { isTransitioning, startTransition, setIsTransitioning } =\n useViewTransition()\n const [previousView, setPreviousView] = React.useState<\n 'workspace' | 'org' | null\n >(null)\n\n React.useLayoutEffect(() => {\n if (createOrgViewOpen) {\n setPreviousView('org')\n setIsTransitioning(true)\n }\n }, [createOrgViewOpen])\n\n const handleSelect = React.useCallback(\n (org: Org, workspace: Workspace) => {\n onSelect(org, workspace)\n setSelectedOrg(org)\n setSelectedWorkspace(workspace)\n },\n [onSelect]\n )\n\n const handleSelectOrg = React.useCallback((org: Org) => {\n setSelectedOrg(org)\n setShowRecents(false)\n }, [])\n\n const handleCreateNewWorkspace = React.useCallback(\n async (org: Org, newWorkspaceName: string): Promise<CreateResult> => {\n if (newWorkspaceName) {\n const result = await onCreate(org, newWorkspaceName)\n\n if (!result.success) {\n return result\n }\n\n const workspace: Workspace = {\n id: newWorkspaceName,\n label: newWorkspaceName,\n slug: newWorkspaceName,\n active: true,\n createdAt: new Date(),\n updatedAt: new Date(),\n }\n\n if (createTriggersSelection) {\n onSelect(org, workspace)\n return { success: true }\n }\n\n startTransition(() => {\n setSelectedOrg((prev) =>\n prev\n ? {\n ...prev,\n workspaces: [...prev.workspaces, workspace],\n }\n : undefined\n )\n setNewWorkspaceName('')\n setCreateWorkspaceViewOpen(false)\n setSelectedWorkspace(workspace)\n setPreviousView(null)\n setShowRecents(false)\n })\n\n return { success: true }\n }\n return { success: false, error: 'No workspace name provided' }\n },\n [onCreate, createTriggersSelection, onSelect, startTransition]\n )\n\n const handleCreateOrg = React.useCallback(\n async (newOrgName: string): Promise<Org> => {\n const result = await onCreateOrg(newOrgName)\n\n function updateState() {\n setSelectedOrg(result)\n setCreateOrgViewOpen(false)\n setCreateWorkspaceViewOpen(true)\n }\n\n if (document.startViewTransition) {\n document.startViewTransition(() => updateState())\n } else {\n updateState()\n }\n\n return result\n },\n [onCreateOrg]\n )\n const handleCreateWorkspaceViewOpen = React.useCallback(() => {\n startTransition(() => {\n if (containerRef.current && height) {\n containerRef.current.style.height = `${height}px`\n }\n setCreateWorkspaceViewOpen(true)\n })\n }, [startTransition])\n\n const backToWorkspaceSelector = React.useCallback(() => {\n const root = document.documentElement\n root.classList.add('view-transition-reverse')\n startTransition(\n () => {\n setCreateWorkspaceViewOpen(false)\n setCreateOrgViewOpen(false)\n },\n () => {\n root.classList.remove('view-transition-reverse')\n }\n )\n }, [startTransition])\n\n const backToOrgSelector = React.useCallback(() => {\n setSelectedOrg(undefined)\n }, [])\n\n return (\n <div\n ref={containerRef}\n style={{ height, containerType: 'inline-size' }}\n className=\"workspace-selector border-neutral-softest flex w-full flex-grow overflow-hidden rounded-md border\"\n >\n {createOrgViewOpen ? (\n <div\n style={{ viewTransitionName: isTransitioning ? 'create-dialog' : '' }}\n className=\"h-full w-full\"\n >\n <CreateOrg onSubmit={handleCreateOrg} />\n </div>\n ) : createWorkspaceViewOpen ? (\n <div\n style={{\n viewTransitionName: isTransitioning ? 'create-dialog' : '',\n }}\n className=\"h-full w-full\"\n >\n <CreateWorkspace\n backButtonEnabled={orgs.length > 0}\n open={createWorkspaceViewOpen}\n selectedOrg={selectedOrg!}\n onBack={previousView === null ? backToWorkspaceSelector : undefined}\n allOrgs={orgs}\n onSubmit={(org, name) => handleCreateNewWorkspace(org, name)}\n newWorkspaceName={newWorkspaceName}\n setNewWorkspaceName={setNewWorkspaceName}\n />\n </div>\n ) : (\n <div\n style={{\n viewTransitionName: isTransitioning ? 'workspace-content' : '',\n }}\n className=\"flex w-full flex-col @[640px]:flex-row\"\n >\n <WorkspaceViewContents\n orgs={orgs}\n selectedOrg={selectedOrg}\n selectedWorkspace={selectedWorkspace}\n handleSelect={handleSelect}\n showRecents={showRecents}\n setShowRecents={setShowRecents}\n emptyText={emptyText}\n height={height}\n recents={recents}\n handleCreateWorkspaceViewOpen={handleCreateWorkspaceViewOpen}\n handleSelectOrg={handleSelectOrg}\n filterOrgFunc={filterOrgFunc}\n filterWorkspaceFunc={filterWorkspaceFunc}\n backToOrgSelector={backToOrgSelector}\n />\n </div>\n )}\n </div>\n )\n}\n\ninterface WorkspaceViewContentsProps {\n orgs: Org[]\n selectedOrg?: Org\n selectedWorkspace: Workspace | null\n handleSelect: (org: Org, workspace: Workspace, clearSearch: boolean) => void\n showRecents: boolean\n setShowRecents: (show: boolean) => void\n emptyText: string\n height: string | number\n recents: Org[]\n handleCreateWorkspaceViewOpen: () => void\n handleSelectOrg: (org: Org) => void\n filterOrgFunc: (org: Org, search: string) => boolean\n filterWorkspaceFunc: (workspace: Workspace, search: string) => boolean\n backToOrgSelector: () => void\n}\n\nfunction WorkspaceViewContents({\n orgs,\n selectedOrg,\n selectedWorkspace,\n handleSelect,\n showRecents,\n setShowRecents,\n emptyText,\n height,\n recents,\n handleCreateWorkspaceViewOpen,\n handleSelectOrg,\n filterOrgFunc,\n filterWorkspaceFunc,\n backToOrgSelector,\n}: WorkspaceViewContentsProps) {\n const showRecentsView = React.useMemo(\n () => recents.length > 0 && showRecents,\n [recents, showRecents]\n )\n return (\n <>\n {/* Wide container layout (>= 640px) - Left sidebar with title */}\n <div className=\"bg-surface-primary border-neutral-softest hidden h-full flex-1/3 flex-col items-center justify-center border-r @[640px]:flex\">\n <div className=\"flex h-full max-w-80 flex-col items-center justify-center px-8 text-center\">\n <Stack align=\"center\" gap={4}>\n <div className=\"flex h-16 w-16 items-center justify-center\">\n <Logo variant=\"icon\" className=\"size-12\" />\n </div>\n <Stack align=\"center\" gap={2}>\n <Heading variant=\"xl\" className=\"whitespace-nowrap\">\n Select your workspace\n </Heading>\n <Text muted>\n Select or create the workspace you want to use for this project.\n </Text>\n </Stack>\n </Stack>\n </div>\n </div>\n\n {/* Narrow container header (< 640px) */}\n <div className=\"border-neutral-softest flex w-full items-center gap-3 border-b px-4 py-3 @[640px]:hidden\">\n <Logo variant=\"icon\" className=\"size-8\" />\n <Heading variant=\"xs\">Select workspace</Heading>\n </div>\n\n {/* Main content area */}\n <div className=\"flex h-full w-full flex-1 flex-col overflow-hidden @[640px]:flex-2/3\">\n <Command shouldFilter={false} className=\"h-full w-full\">\n {showRecentsView ? (\n <div className=\"flex w-full flex-grow flex-row\">\n <OrgList\n orgs={orgs}\n selectedOrg={selectedOrg}\n setSelectedOrg={handleSelectOrg}\n onSelectRecent={() => setShowRecents(true)}\n showRecents={showRecents}\n enableRecents={recents.length > 0}\n filterOrgFunc={(org, search) => filterOrgFunc(org, search)}\n />\n <RecentWorkspaces\n onSelect={(org, workspace) =>\n handleSelect(org, workspace, false)\n }\n handleCreateViewOpen={handleCreateWorkspaceViewOpen}\n orgsWithFilteredWorkspaces={recents}\n selectedOrg={selectedOrg}\n selectedWorkspace={selectedWorkspace}\n />\n </div>\n ) : orgs.length > 0 ? (\n <div className=\"flex h-full w-full flex-1 flex-col @[640px]:flex-row\">\n {/* Back button - narrow only, when org selected */}\n <div\n className={cn(\n 'border-neutral-softest flex-shrink-0 border-b p-3 @[640px]:hidden',\n selectedOrg ? 'flex' : 'hidden'\n )}\n >\n <button\n onClick={backToOrgSelector}\n className=\"text-body-sm text-link-primary hover:text-link-secondary flex items-center gap-2\"\n >\n <span>←</span>\n <span>Back to organizations</span>\n </button>\n </div>\n\n {/* OrgList - always in wide, only when no org selected in narrow */}\n <div\n className={cn(\n selectedOrg ? 'hidden @[640px]:contents' : 'contents'\n )}\n >\n <OrgList\n orgs={orgs}\n selectedOrg={selectedOrg}\n setSelectedOrg={handleSelectOrg}\n onSelectRecent={() => setShowRecents(true)}\n showRecents={showRecents}\n enableRecents={recents.length > 0}\n filterOrgFunc={(org, search) => filterOrgFunc(org, search)}\n />\n </div>\n\n {/* WorkspaceList - always in wide, only when org selected in narrow */}\n <div\n className={cn(\n selectedOrg ? 'contents' : 'hidden @[640px]:contents'\n )}\n >\n <WorkspaceList\n selectedOrg={selectedOrg}\n handleCreateViewOpen={handleCreateWorkspaceViewOpen}\n handleSelect={(org, workspace) =>\n handleSelect(org, workspace, false)\n }\n selectedWorkspace={selectedWorkspace}\n filterWorkspaceFunc={(workspace, search) =>\n filterWorkspaceFunc(workspace, search)\n }\n />\n </div>\n </div>\n ) : (\n <CommandEmpty\n style={{ height }}\n className=\"text-md text-muted-foreground p-6\"\n >\n {emptyText}\n </CommandEmpty>\n )}\n </Command>\n </div>\n </>\n )\n}\n","import * as React from 'react'\nimport { cn } from '@/lib/utils'\nimport { CodeSnippet, Heading, Text } from '@/index'\nimport { useMemo } from 'react'\nimport { WizardStep } from './types'\n\nexport interface WizardProps {\n /**\n * The steps to display in the wizard\n */\n steps: WizardStep[]\n\n /**\n * The current step number, starting from 1\n */\n currentStep: number\n\n /**\n * The steps that have been completed, starting from 1\n */\n completedSteps: number[]\n\n headerContent: (\n completedSteps: number[],\n steps: WizardStep[]\n ) => React.ReactNode\n\n className?: string\n}\n\nexport function Wizard({\n steps,\n currentStep,\n completedSteps,\n headerContent,\n className,\n}: WizardProps) {\n const [stepHeights, setStepHeights] = React.useState<Map<number, number>>(\n new Map()\n )\n const stepRefs = React.useRef<Map<number, HTMLDivElement | null>>(new Map())\n\n React.useEffect(() => {\n const currentElement = stepRefs.current.get(currentStep)\n if (currentElement) {\n setStepHeights((prev) => {\n const newMap = new Map(prev)\n newMap.set(currentStep, currentElement.clientHeight)\n return newMap\n })\n }\n }, [currentStep, completedSteps])\n\n // Add ResizeObserver to monitor size changes\n React.useEffect(() => {\n const resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const stepNumber = Array.from(stepRefs.current.entries()).find(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ([_, el]) => el === entry.target\n )?.[0]\n\n if (stepNumber) {\n setStepHeights((prev) => {\n const newMap = new Map(prev)\n newMap.set(stepNumber, entry.target.clientHeight)\n return newMap\n })\n }\n })\n })\n\n // Observe all step elements\n stepRefs.current.forEach((element) => {\n if (element) {\n resizeObserver.observe(element)\n }\n })\n\n return () => {\n resizeObserver.disconnect()\n }\n }, []) // Empty dependency array since we want to set up the observer once\n\n const getStepStatus = (index: number) => {\n if (completedSteps.includes(index + 1)) return 'completed'\n if (index + 1 === currentStep) return 'current'\n return 'upcoming'\n }\n\n const trackHeight = useMemo(() => {\n return Array.from(\n {\n length:\n completedSteps.length === steps.length\n ? currentStep\n : currentStep - 1,\n },\n (_, i) => i + 1\n )\n .map((step) => {\n const height = stepHeights.get(step) || 0\n // Add the top and bottom padding (py-4 = 1rem * 2 = 32px total)\n return height + 16\n })\n .reduce((acc, curr) => acc + curr, 0)\n }, [currentStep, stepHeights])\n\n return (\n <div className={cn('max-w-screen-x flex flex-col gap-2', className)}>\n <div className=\"border-b p-6\">\n <div className=\"flex items-center justify-between\">\n <div className=\"space-y-1\">\n {headerContent(completedSteps, steps)}\n </div>\n </div>\n </div>\n\n <div className=\"relative mt-8 pl-3\">\n <div className=\"bg-border absolute top-0 bottom-0 left-7 w-px overflow-y-hidden\">\n <div\n className=\"bg-primary absolute top-0 left-0 w-full transition-all duration-500\"\n style={{\n height: trackHeight,\n }}\n />\n </div>\n\n <div className=\"flex flex-col gap-8\">\n {steps.map((step, index) => {\n const status = getStepStatus(index)\n const stepNumber = index + 1\n\n return (\n <div\n key={index}\n ref={(el) => stepRefs.current.set(stepNumber, el)}\n >\n <div\n className={cn(\n 'relative pl-16',\n status === 'completed' && 'text-body'\n )}\n >\n <div className=\"flex items-center gap-2\">\n <div\n className={cn(\n 'absolute left-0 flex h-8 w-8 items-center justify-center rounded-full text-sm font-semibold',\n // TODO: update these to use new color tokens\n status === 'completed' &&\n 'bg-success-default text-highlight-fixed-light',\n status === 'current' &&\n 'bg-surface-primary-inverse text-default-inverse scale-110',\n status === 'upcoming' && 'bg-muted text-muted'\n )}\n >\n {stepNumber}\n </div>\n\n {/* TODO: is this the best way to handle the opacity? */}\n <div className={cn(status === 'upcoming' && 'opacity-50')}>\n <Heading variant=\"md\" as=\"h2\">\n {step.title}\n </Heading>\n </div>\n </div>\n\n {/* TODO: is this the best way to handle the opacity? */}\n <div\n className={cn(\n 'mt-2 mb-4',\n status === 'upcoming' && 'opacity-50'\n )}\n >\n <Text muted>{step.description}</Text>\n </div>\n\n <div\n className={cn(\n 'mt-8 flex w-full flex-col gap-5',\n status === 'upcoming' && 'opacity-50'\n )}\n >\n {/* TODO: update this to CodeBlock component */}\n {status === 'current' &&\n step.commands?.map((command, cmdIndex) => (\n <CodeSnippet\n key={cmdIndex}\n code={command.code}\n language={command.language}\n onSelectOrCopy={() =>\n command.onSelectOrCopy?.(command.id)\n }\n copyable\n fontSize=\"small\"\n shimmer={command.active}\n />\n ))}\n </div>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n","import { cva, type VariantProps } from 'class-variance-authority'\nimport { Modifier, Variant } from './types'\nimport { Icon } from '@/components/Icon'\nimport { iconNames } from '../Icon/names'\nimport { useState } from 'react'\nimport { cn } from '@/lib/utils'\n\nconst flexClasses = 'flex flex-row items-center gap-3'\n\nconst alertVariants = cva<{\n variant: {\n [k in Variant]: string\n }\n modifiers: {\n [k in Modifier]: string\n }\n}>(\n `min-w-48 max-h-fit flex flex-row subpixel-antialiased font-light items-center px-3 pr-2 py-2 w-full border`,\n {\n variants: {\n variant: {\n default: 'bg-card',\n success:\n 'bg-success-softest text-default-success border-success-softest',\n error:\n 'bg-destructive-softest text-default-destructive border-destructive-softest',\n warning:\n 'bg-warning-softest text-default-warning border-warning-softest',\n info: 'bg-information-softest text-default-information border-information-softest',\n feature: 'bg-feature text-feature-foreground',\n },\n modifiers: {\n inline: 'inline-flex',\n },\n },\n }\n)\n\nexport type AlertProps = {\n variant: NonNullable<VariantProps<typeof alertVariants>['variant']>\n children: React.ReactNode\n inline?: boolean\n dismissible?: boolean\n onDismiss?: () => void\n iconName?: (typeof iconNames)[number]\n useContainer?: boolean\n className?: string\n}\n\nconst iconForVariant: Record<Variant, (typeof iconNames)[number] | undefined> =\n {\n default: 'info',\n success: 'check',\n error: 'circle-alert',\n warning: 'circle-alert',\n info: 'info',\n feature: 'star',\n }\n\nexport function Alert({\n variant = 'default',\n children,\n inline = false,\n dismissible = true,\n onDismiss,\n iconName,\n useContainer = false,\n className,\n}: AlertProps) {\n const [isDismissing, setIsDismissing] = useState(false)\n const handleDismiss = () => {\n setIsDismissing(true)\n onDismiss?.()\n }\n const icon = iconName ?? iconForVariant[variant]\n const innerContent = (\n <div className={flexClasses}>\n <div className=\"flex-shrink-0\">\n {icon && <Icon name={icon} size=\"small\" />}\n </div>\n <div>{children}</div>\n </div>\n )\n\n const dismissableContent = dismissible && (\n <div className=\"ml-auto self-start\">\n <button\n className=\"hover:bg-accent/10 p-2 hover:rounded-lg\"\n onClick={handleDismiss}\n >\n <Icon name=\"x\" />\n </button>\n </div>\n )\n\n return (\n <div\n role=\"alert\"\n className={cn(\n alertVariants({ variant, modifiers: inline ? 'inline' : undefined }),\n isDismissing && 'opacity-0 transition-opacity duration-500',\n className\n )}\n >\n {useContainer ? (\n <div className=\"container flex\">\n {innerContent}\n {dismissableContent}\n </div>\n ) : (\n <>\n {innerContent}\n {dismissableContent}\n </>\n )}\n </div>\n )\n}\n","import { cn } from '@/lib/utils'\nimport React, { ReactElement, useEffect, useState } from 'react'\n\nexport interface TabProps<I extends string> {\n children: React.ReactNode\n active?: boolean\n id: I\n onClick?: () => void\n className?: string\n}\n\nconst Tab = function Tab<I extends string>({\n children,\n active,\n onClick,\n className,\n}: TabProps<I>) {\n return (\n <div\n className={cn(\n 'text-body mb-[-1px] cursor-pointer px-4 py-2 text-sm',\n active &&\n 'bg-background text-foreground rounded-t-lg border-t border-r border-l',\n className\n )}\n onClick={onClick}\n >\n {children}\n </div>\n )\n}\n\nexport interface TabsProps<I extends string> {\n children: Array<ReactElement<TabProps<I>>>\n selectedTab: I\n onTabChange: (identifier: I) => void\n className?: string\n}\n\ntype TypeWithDisplayName = {\n displayName?: string\n}\n\nexport function Tabs<I extends string>({\n children,\n selectedTab,\n onTabChange,\n className,\n}: TabsProps<I>) {\n const [activeTab, setActiveTab] = useState<I>(\n selectedTab || children[0].props.id\n )\n\n useEffect(() => {\n setActiveTab(selectedTab || children[0].props.id)\n }, [selectedTab])\n\n const validChildren = React.Children.toArray(children).filter(\n (child) =>\n React.isValidElement(child) &&\n (child.type as TypeWithDisplayName).displayName === 'Tabs.Tab'\n ) as Array<React.ReactElement<TabProps<I>>>\n\n return (\n <div\n className={cn(\n 'border-border flex flex-row justify-start gap-2 border-b select-none',\n className\n )}\n >\n {React.Children.map(validChildren, (child) => {\n return React.cloneElement(child, {\n ...child.props,\n active: child.props.id === activeTab,\n onClick: () => {\n setActiveTab(child.props.id)\n child.props.onClick?.()\n onTabChange?.(child.props.id)\n },\n })\n })}\n </div>\n )\n}\n\nTab.displayName = 'Tabs.Tab'\nTabs.Tab = Tab\n","// packages/react/visually-hidden/src/visually-hidden.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"VisuallyHidden\";\nvar VisuallyHidden = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...props,\n ref: forwardedRef,\n style: {\n // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss\n position: \"absolute\",\n border: 0,\n width: 1,\n height: 1,\n padding: 0,\n margin: -1,\n overflow: \"hidden\",\n clip: \"rect(0, 0, 0, 0)\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\",\n ...props.style\n }\n }\n );\n }\n);\nVisuallyHidden.displayName = NAME;\nvar Root = VisuallyHidden;\nexport {\n Root,\n VisuallyHidden\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/tooltip/src/tooltip.tsx\nimport * 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 { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slottable } from \"@radix-ui/react-slot\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport * as VisuallyHiddenPrimitive from \"@radix-ui/react-visually-hidden\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar [createTooltipContext, createTooltipScope] = createContextScope(\"Tooltip\", [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar PROVIDER_NAME = \"TooltipProvider\";\nvar DEFAULT_DELAY_DURATION = 700;\nvar TOOLTIP_OPEN = \"tooltip.open\";\nvar [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);\nvar TooltipProvider = (props) => {\n const {\n __scopeTooltip,\n delayDuration = DEFAULT_DELAY_DURATION,\n skipDelayDuration = 300,\n disableHoverableContent = false,\n children\n } = props;\n const [isOpenDelayed, setIsOpenDelayed] = React.useState(true);\n const isPointerInTransitRef = React.useRef(false);\n const skipDelayTimerRef = React.useRef(0);\n React.useEffect(() => {\n const skipDelayTimer = skipDelayTimerRef.current;\n return () => window.clearTimeout(skipDelayTimer);\n }, []);\n return /* @__PURE__ */ jsx(\n TooltipProviderContextProvider,\n {\n scope: __scopeTooltip,\n isOpenDelayed,\n delayDuration,\n onOpen: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n setIsOpenDelayed(false);\n }, []),\n onClose: React.useCallback(() => {\n window.clearTimeout(skipDelayTimerRef.current);\n skipDelayTimerRef.current = window.setTimeout(\n () => setIsOpenDelayed(true),\n skipDelayDuration\n );\n }, [skipDelayDuration]),\n isPointerInTransitRef,\n onPointerInTransitChange: React.useCallback((inTransit) => {\n isPointerInTransitRef.current = inTransit;\n }, []),\n disableHoverableContent,\n children\n }\n );\n};\nTooltipProvider.displayName = PROVIDER_NAME;\nvar TOOLTIP_NAME = \"Tooltip\";\nvar [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);\nvar Tooltip = (props) => {\n const {\n __scopeTooltip,\n children,\n open: openProp,\n defaultOpen = false,\n onOpenChange,\n disableHoverableContent: disableHoverableContentProp,\n delayDuration: delayDurationProp\n } = props;\n const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const [trigger, setTrigger] = React.useState(null);\n const contentId = useId();\n const openTimerRef = React.useRef(0);\n const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;\n const delayDuration = delayDurationProp ?? providerContext.delayDuration;\n const wasOpenDelayedRef = React.useRef(false);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: (open2) => {\n if (open2) {\n providerContext.onOpen();\n document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));\n } else {\n providerContext.onClose();\n }\n onOpenChange?.(open2);\n }\n });\n const stateAttribute = React.useMemo(() => {\n return open ? wasOpenDelayedRef.current ? \"delayed-open\" : \"instant-open\" : \"closed\";\n }, [open]);\n const handleOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n wasOpenDelayedRef.current = false;\n setOpen(true);\n }, [setOpen]);\n const handleClose = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n setOpen(false);\n }, [setOpen]);\n const handleDelayedOpen = React.useCallback(() => {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = window.setTimeout(() => {\n wasOpenDelayedRef.current = true;\n setOpen(true);\n openTimerRef.current = 0;\n }, delayDuration);\n }, [delayDuration, setOpen]);\n React.useEffect(() => {\n return () => {\n if (openTimerRef.current) {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n };\n }, []);\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsx(\n TooltipContextProvider,\n {\n scope: __scopeTooltip,\n contentId,\n open,\n stateAttribute,\n trigger,\n onTriggerChange: setTrigger,\n onTriggerEnter: React.useCallback(() => {\n if (providerContext.isOpenDelayed) handleDelayedOpen();\n else handleOpen();\n }, [providerContext.isOpenDelayed, handleDelayedOpen, handleOpen]),\n onTriggerLeave: React.useCallback(() => {\n if (disableHoverableContent) {\n handleClose();\n } else {\n window.clearTimeout(openTimerRef.current);\n openTimerRef.current = 0;\n }\n }, [handleClose, disableHoverableContent]),\n onOpen: handleOpen,\n onClose: handleClose,\n disableHoverableContent,\n children\n }\n ) });\n};\nTooltip.displayName = TOOLTIP_NAME;\nvar TRIGGER_NAME = \"TooltipTrigger\";\nvar TooltipTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...triggerProps } = props;\n const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);\n const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);\n const isPointerDownRef = React.useRef(false);\n const hasPointerMoveOpenedRef = React.useRef(false);\n const handlePointerUp = React.useCallback(() => isPointerDownRef.current = false, []);\n React.useEffect(() => {\n return () => document.removeEventListener(\"pointerup\", handlePointerUp);\n }, [handlePointerUp]);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n \"aria-describedby\": context.open ? context.contentId : void 0,\n \"data-state\": context.stateAttribute,\n ...triggerProps,\n ref: composedRefs,\n onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {\n if (event.pointerType === \"touch\") return;\n if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {\n context.onTriggerEnter();\n hasPointerMoveOpenedRef.current = true;\n }\n }),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {\n context.onTriggerLeave();\n hasPointerMoveOpenedRef.current = false;\n }),\n onPointerDown: composeEventHandlers(props.onPointerDown, () => {\n isPointerDownRef.current = true;\n document.addEventListener(\"pointerup\", handlePointerUp, { once: true });\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n if (!isPointerDownRef.current) context.onOpen();\n }),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onClick: composeEventHandlers(props.onClick, context.onClose)\n }\n ) });\n }\n);\nTooltipTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"TooltipPortal\";\nvar [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar TooltipPortal = (props) => {\n const { __scopeTooltip, forceMount, children, container } = props;\n const context = useTooltipContext(PORTAL_NAME, __scopeTooltip);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nTooltipPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"TooltipContent\";\nvar TooltipContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeTooltip);\n const { forceMount = portalContext.forceMount, side = \"top\", ...contentProps } = props;\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });\n }\n);\nvar TooltipContentHoverable = React.forwardRef((props, forwardedRef) => {\n const context = useTooltipContext(CONTENT_NAME, props.__scopeTooltip);\n const providerContext = useTooltipProviderContext(CONTENT_NAME, props.__scopeTooltip);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [pointerGraceArea, setPointerGraceArea] = React.useState(null);\n const { trigger, onClose } = context;\n const content = ref.current;\n const { onPointerInTransitChange } = providerContext;\n const handleRemoveGraceArea = React.useCallback(() => {\n setPointerGraceArea(null);\n onPointerInTransitChange(false);\n }, [onPointerInTransitChange]);\n const handleCreateGraceArea = React.useCallback(\n (event, hoverTarget) => {\n const currentTarget = event.currentTarget;\n const exitPoint = { x: event.clientX, y: event.clientY };\n const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());\n const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);\n const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());\n const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);\n setPointerGraceArea(graceArea);\n onPointerInTransitChange(true);\n },\n [onPointerInTransitChange]\n );\n React.useEffect(() => {\n return () => handleRemoveGraceArea();\n }, [handleRemoveGraceArea]);\n React.useEffect(() => {\n if (trigger && content) {\n const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);\n const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);\n trigger.addEventListener(\"pointerleave\", handleTriggerLeave);\n content.addEventListener(\"pointerleave\", handleContentLeave);\n return () => {\n trigger.removeEventListener(\"pointerleave\", handleTriggerLeave);\n content.removeEventListener(\"pointerleave\", handleContentLeave);\n };\n }\n }, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);\n React.useEffect(() => {\n if (pointerGraceArea) {\n const handleTrackPointerGrace = (event) => {\n const target = event.target;\n const pointerPosition = { x: event.clientX, y: event.clientY };\n const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);\n const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);\n if (hasEnteredTarget) {\n handleRemoveGraceArea();\n } else if (isPointerOutsideGraceArea) {\n handleRemoveGraceArea();\n onClose();\n }\n };\n document.addEventListener(\"pointermove\", handleTrackPointerGrace);\n return () => document.removeEventListener(\"pointermove\", handleTrackPointerGrace);\n }\n }, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);\n return /* @__PURE__ */ jsx(TooltipContentImpl, { ...props, ref: composedRefs });\n});\nvar [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });\nvar TooltipContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTooltip,\n children,\n \"aria-label\": ariaLabel,\n onEscapeKeyDown,\n onPointerDownOutside,\n ...contentProps\n } = props;\n const context = useTooltipContext(CONTENT_NAME, __scopeTooltip);\n const popperScope = usePopperScope(__scopeTooltip);\n const { onClose } = context;\n React.useEffect(() => {\n document.addEventListener(TOOLTIP_OPEN, onClose);\n return () => document.removeEventListener(TOOLTIP_OPEN, onClose);\n }, [onClose]);\n React.useEffect(() => {\n if (context.trigger) {\n const handleScroll = (event) => {\n const target = event.target;\n if (target?.contains(context.trigger)) onClose();\n };\n window.addEventListener(\"scroll\", handleScroll, { capture: true });\n return () => window.removeEventListener(\"scroll\", handleScroll, { capture: true });\n }\n }, [context.trigger, onClose]);\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: onClose,\n children: /* @__PURE__ */ jsxs(\n PopperPrimitive.Content,\n {\n \"data-state\": context.stateAttribute,\n ...popperScope,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...contentProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-tooltip-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-tooltip-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-tooltip-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-tooltip-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-tooltip-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n },\n children: [\n /* @__PURE__ */ jsx(Slottable, { children }),\n /* @__PURE__ */ jsx(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx(VisuallyHiddenPrimitive.Root, { id: context.contentId, role: \"tooltip\", children: ariaLabel || children }) })\n ]\n }\n )\n }\n );\n }\n);\nTooltipContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"TooltipArrow\";\nvar TooltipArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTooltip, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeTooltip);\n const visuallyHiddenContentContext = useVisuallyHiddenContentContext(\n ARROW_NAME,\n __scopeTooltip\n );\n return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nTooltipArrow.displayName = ARROW_NAME;\nfunction getExitSideFromRect(point, rect) {\n const top = Math.abs(rect.top - point.y);\n const bottom = Math.abs(rect.bottom - point.y);\n const right = Math.abs(rect.right - point.x);\n const left = Math.abs(rect.left - point.x);\n switch (Math.min(top, bottom, right, left)) {\n case left:\n return \"left\";\n case right:\n return \"right\";\n case top:\n return \"top\";\n case bottom:\n return \"bottom\";\n default:\n throw new Error(\"unreachable\");\n }\n}\nfunction getPaddedExitPoints(exitPoint, exitSide, padding = 5) {\n const paddedExitPoints = [];\n switch (exitSide) {\n case \"top\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y + padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"bottom\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y - padding }\n );\n break;\n case \"left\":\n paddedExitPoints.push(\n { x: exitPoint.x + padding, y: exitPoint.y - padding },\n { x: exitPoint.x + padding, y: exitPoint.y + padding }\n );\n break;\n case \"right\":\n paddedExitPoints.push(\n { x: exitPoint.x - padding, y: exitPoint.y - padding },\n { x: exitPoint.x - padding, y: exitPoint.y + padding }\n );\n break;\n }\n return paddedExitPoints;\n}\nfunction getPointsFromRect(rect) {\n const { top, right, bottom, left } = rect;\n return [\n { x: left, y: top },\n { x: right, y: top },\n { x: right, y: bottom },\n { x: left, y: bottom }\n ];\n}\nfunction isPointInPolygon(point, polygon) {\n const { x, y } = point;\n let inside = false;\n for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {\n const xi = polygon[i].x;\n const yi = polygon[i].y;\n const xj = polygon[j].x;\n const yj = polygon[j].y;\n const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;\n if (intersect) inside = !inside;\n }\n return inside;\n}\nfunction getHull(points) {\n const newPoints = points.slice();\n newPoints.sort((a, b) => {\n if (a.x < b.x) return -1;\n else if (a.x > b.x) return 1;\n else if (a.y < b.y) return -1;\n else if (a.y > b.y) return 1;\n else return 0;\n });\n return getHullPresorted(newPoints);\n}\nfunction getHullPresorted(points) {\n if (points.length <= 1) return points.slice();\n const upperHull = [];\n for (let i = 0; i < points.length; i++) {\n const p = points[i];\n while (upperHull.length >= 2) {\n const q = upperHull[upperHull.length - 1];\n const r = upperHull[upperHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) upperHull.pop();\n else break;\n }\n upperHull.push(p);\n }\n upperHull.pop();\n const lowerHull = [];\n for (let i = points.length - 1; i >= 0; i--) {\n const p = points[i];\n while (lowerHull.length >= 2) {\n const q = lowerHull[lowerHull.length - 1];\n const r = lowerHull[lowerHull.length - 2];\n if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) lowerHull.pop();\n else break;\n }\n lowerHull.push(p);\n }\n lowerHull.pop();\n if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {\n return upperHull;\n } else {\n return upperHull.concat(lowerHull);\n }\n}\nvar Provider = TooltipProvider;\nvar Root3 = Tooltip;\nvar Trigger = TooltipTrigger;\nvar Portal = TooltipPortal;\nvar Content2 = TooltipContent;\nvar Arrow2 = TooltipArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Portal,\n Provider,\n Root3 as Root,\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipPortal,\n TooltipProvider,\n TooltipTrigger,\n Trigger,\n createTooltipScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client'\n\nimport * as React from 'react'\nimport * as TooltipPrimitive from '@radix-ui/react-tooltip'\n\nimport { cn } from '@/lib/utils'\n\nconst TooltipProvider = TooltipPrimitive.Provider\n\nconst Tooltip = TooltipPrimitive.Root\n\nconst TooltipTrigger = TooltipPrimitive.Trigger\n\nconst TooltipArrow = TooltipPrimitive.TooltipArrow\n\nconst TooltipPortal = TooltipPrimitive.Portal\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Content\n ref={ref}\n sideOffset={sideOffset}\n className={cn(\n 'bg-popover text-popover-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md border px-3 py-1.5 text-sm shadow-md',\n className\n )}\n {...props}\n />\n))\nTooltipContent.displayName = TooltipPrimitive.Content.displayName\n\nexport {\n Tooltip,\n TooltipPortal,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipArrow,\n}\n","'use client'\n\n/**\n * TODO: Before moving out of beta\n * - Need to replace these hardcoded colors with our tokens:\n * - All the terminal chrome colors (#27272a, #000000, etc)\n * - Use different colors for the termainal window, may offend windows users\n */\n\nimport * as React from 'react'\nimport { TerminalIcon } from 'lucide-react'\nimport { cn } from '@/lib/utils'\n\ninterface TerminalProps {\n children: React.ReactNode\n path?: string\n}\n\nexport function Terminal({ children, path = '~' }: TerminalProps) {\n return (\n <div className=\"bg-surface-secondary-default border-neutral-softest flex h-full flex-col overflow-hidden rounded-lg border\">\n {/* Header */}\n <div className=\"bg-surface-tertiary-default flex h-10 items-center justify-between px-4\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-1.5\">\n <div className=\"h-2.5 w-2.5 rounded-full bg-red-500\" />\n <div className=\"h-2.5 w-2.5 rounded-full bg-yellow-500\" />\n <div className=\"h-2.5 w-2.5 rounded-full bg-green-500\" />\n </div>\n <div className=\"ml-3 flex items-center gap-2 text-zinc-400\">\n <TerminalIcon className=\"h-3.5 w-3.5\" />\n <span className=\"text-xs font-medium\">{path}</span>\n </div>\n </div>\n </div>\n\n {/* Content */}\n <div className=\"flex-grow space-y-6 overflow-y-auto p-4 font-mono text-sm\">\n {children}\n </div>\n </div>\n )\n}\n\ninterface TerminalPromptProps {\n path?: string\n branch?: string\n children: React.ReactNode\n isActive?: boolean\n time?: string\n}\n\nexport function TerminalPrompt({\n path = '~',\n branch,\n children,\n time,\n}: TerminalPromptProps) {\n return (\n <div className=\"space-y-1\">\n <div className=\"flex items-center gap-2 text-xs text-zinc-400\">\n <span className=\"text-zinc-500\">{path}</span>\n {branch && (\n <>\n <span>git:</span>\n <span className=\"text-emerald-500\">({branch})</span>\n </>\n )}\n {time && <span className=\"text-zinc-400\">({time})</span>}\n </div>\n <div className=\"rounded-lg\">{children}</div>\n </div>\n )\n}\n\ninterface TerminalOutputProps {\n children: React.ReactNode\n className?: string\n}\n\nexport function TerminalOutput({ children, className }: TerminalOutputProps) {\n return <div className={cn('pl-4 text-zinc-400', className)}>{children}</div>\n}\n","/**\n * TODO: Clean up before moving out of beta\n * - Replace hardcoded colors with our tokens (the green highlight, hover states, etc)\n * - Use our standard font size tokens instead of hardcoding small/medium/large\n * - Add loading state for copy action\n * - Add an animation around the active command\n */\n\nimport React from 'react'\nimport { Check, Copy } from 'lucide-react'\nimport { motion } from 'motion/react'\nimport { TerminalPrompt, TerminalOutput } from './terminal'\nimport { cn } from '@/lib/utils'\n\ninterface TerminalCommandProps {\n code: string\n language: string\n onSelectOrCopy?: () => void\n copyable?: boolean\n fontSize?: 'small' | 'medium' | 'large'\n isActive?: boolean\n comment?: string\n path?: string\n}\n\nexport function TerminalCommand({\n code,\n onSelectOrCopy,\n copyable = true,\n fontSize = 'medium',\n isActive = false,\n comment,\n path,\n}: TerminalCommandProps) {\n const [copied, setCopied] = React.useState(false)\n\n const handleCopy = () => {\n navigator.clipboard.writeText(code)\n setCopied(true)\n onSelectOrCopy?.()\n setTimeout(() => setCopied(false), 2000)\n }\n\n return (\n <div className=\"group relative\">\n <TerminalPrompt path={path} branch=\"main\">\n <button\n onClick={handleCopy}\n className=\"w-full text-left\"\n aria-label={copied ? 'Copied' : 'Copy command'}\n >\n <div\n className={cn(\n 'relative -mx-2 rounded-md px-2 py-0.5 transition-colors',\n isActive && 'bg-emerald-500/10',\n !isActive && 'hover:bg-active'\n )}\n >\n <div className=\"flex items-start gap-2\">\n <span className=\"text-emerald-500 select-none\">$</span>\n <span\n className={cn(\n 'text-default mt-0.5 flex-1 font-mono font-medium tracking-normal select-text',\n fontSize === 'small' && 'text-sm',\n fontSize === 'medium' && 'text-base',\n fontSize === 'large' && 'text-lg'\n )}\n >\n {code}\n </span>\n {copyable && (\n <span\n className={cn('mt-1.5 shrink-0', isActive && 'opacity-100')}\n >\n {copied ? (\n <motion.div\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{\n type: 'spring',\n stiffness: 200,\n damping: 10,\n }}\n >\n <Check className=\"h-3.5 w-3.5 text-emerald-500\" />\n </motion.div>\n ) : (\n <Copy\n className={cn(\n 'h-3.5 w-3.5 transition-colors',\n 'text-body-muted group-hover:text-body'\n )}\n />\n )}\n </span>\n )}\n </div>\n </div>\n </button>\n </TerminalPrompt>\n {comment && (\n <TerminalOutput>\n <span className=\"text-xs text-zinc-400\"># {comment}</span>\n </TerminalOutput>\n )}\n </div>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { Check, ChevronUp } from 'lucide-react'\nimport { AnimatePresence, motion } from 'motion/react'\nimport { cn } from '@/lib/utils'\nimport { Text } from '../../Text'\nimport { Heading } from '../../Heading'\nimport { TerminalCommand } from './terminal-command'\nimport { Terminal } from './terminal'\nimport { WizardStep } from '@/components/Wizard/types'\n\n/**\n * TODO before moving out of beta:\n * - Replace all these hardcoded colors with our design tokens:\n * bg-[#09090b], text-zinc-400, etc\n * - Make sure we're using our standard border radius\n * - Move the step circle sizes into our design tokens\n */\n\nexport interface CLIWizardProps {\n steps: WizardStep[]\n currentStep: number\n completedSteps: number[]\n onStepComplete?: (stepIndex: number) => void\n}\n\nconst fadeUp = (i: number) => ({\n initial: { opacity: 0, y: 10 },\n animate: { opacity: 1, y: 0 },\n exit: { opacity: 0, y: -10 },\n transition: { delay: i * 0.1 },\n})\n\nconst chevronVariants = {\n up: { rotate: 0 },\n down: { rotate: 180 },\n}\n\nexport const ExpandChevron = ({\n isCollapsed,\n}: {\n isCollapsed: boolean | undefined\n}) => {\n return (\n <motion.div\n initial=\"up\"\n animate={isCollapsed ? 'down' : 'up'}\n variants={chevronVariants}\n transition={{\n duration: 0.2,\n ease: [0.215, 0.61, 0.355, 1],\n }}\n >\n <ChevronUp className=\"text-default h-4 w-4\" />\n </motion.div>\n )\n}\n\nexport function CLIWizard({\n steps,\n currentStep,\n completedSteps,\n onStepComplete,\n}: CLIWizardProps) {\n const [activeStep, setActiveStep] = React.useState(\n Math.min(currentStep - 1, steps.length - 1)\n )\n React.useEffect(() => {\n setActiveStep(Math.min(currentStep - 1, steps.length - 1))\n }, [currentStep, steps.length])\n\n const [copiedCommands, setCopiedCommands] = React.useState<Set<string>>(\n new Set()\n )\n\n const isStepComplete = (stepIndex: number) =>\n completedSteps.includes(stepIndex + 1)\n\n const currentStepCommands = steps[activeStep]?.commands || []\n const activeCommandIndex = React.useMemo(() => {\n return currentStepCommands.findIndex((cmd) => !copiedCommands.has(cmd.code))\n }, [copiedCommands, currentStepCommands])\n\n return (\n <motion.div\n layout\n className=\"relative overflow-hidden select-none\"\n transition={{\n duration: 0.3,\n ease: [0.645, 0.045, 0.355, 1],\n }}\n >\n <div className=\"w-full py-6\">\n <div className=\"flex items-center\">\n <Heading variant=\"lg\" as=\"h2\">\n Getting Started\n </Heading>\n </div>\n </div>\n\n <AnimatePresence initial={false}>\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{\n duration: 0.3,\n ease: [0.645, 0.045, 0.355, 1],\n }}\n className=\"overflow-hidden\"\n >\n <div className=\"mt-4 grid grid-cols-1 gap-8 pb-6 md:grid-cols-12\">\n <SidebarSteps\n steps={steps}\n activeStep={activeStep}\n isStepComplete={isStepComplete}\n onSelectStep={setActiveStep}\n />\n\n <div className=\"md:col-span-7\">\n <Terminal\n path={\n currentStepCommands[activeCommandIndex]?.path ??\n '~/sdk-project'\n }\n >\n <motion.div\n initial={{ height: 0, opacity: 0 }}\n animate={{ height: 'auto', opacity: 1 }}\n exit={{ height: 0, opacity: 0 }}\n transition={{\n duration: 0.3,\n ease: [0.645, 0.045, 0.355, 1],\n }}\n >\n <div className=\"space-y-6\">\n <AnimatePresence mode=\"wait\">\n {currentStepCommands.map((command, i) => (\n <motion.div\n key={`${activeStep}-${command.id}`}\n {...fadeUp(i)}\n >\n <TerminalCommand\n code={command.code}\n language={command.language}\n comment={command.comment}\n copyable\n fontSize=\"small\"\n path={command.path}\n isActive={\n !copiedCommands.has(command.code) &&\n i === activeCommandIndex\n }\n onSelectOrCopy={() => {\n const newCopied = new Set(copiedCommands)\n newCopied.add(command.code)\n setCopiedCommands(newCopied)\n\n const allCommandsCopied =\n currentStepCommands.every((c) =>\n newCopied.has(c.code)\n )\n if (\n allCommandsCopied &&\n !isStepComplete(activeStep)\n ) {\n onStepComplete?.(activeStep + 1)\n }\n }}\n />\n </motion.div>\n ))}\n </AnimatePresence>\n </div>\n </motion.div>\n </Terminal>\n </div>\n </div>\n </motion.div>\n </AnimatePresence>\n </motion.div>\n )\n}\n\ninterface SidebarStepsProps {\n steps: WizardStep[]\n activeStep: number\n isStepComplete: (stepIndex: number) => boolean\n onSelectStep: (stepIndex: number) => void\n}\n\nfunction SidebarSteps({\n steps,\n activeStep,\n isStepComplete,\n onSelectStep,\n}: SidebarStepsProps) {\n return (\n <div className=\"relative md:col-span-5\">\n <div className=\"space-y-4\">\n {steps.map((step, index) => {\n const complete = isStepComplete(index)\n const active = activeStep === index\n // const isLastStep = index === steps.length - 1\n\n return (\n <div key={index}>\n <div className=\"flex items-stretch\">\n <div className=\"flex flex-col items-center\">\n <div className=\"flex h-6 items-center justify-center\">\n <CircleOrCheck\n isComplete={complete}\n isActive={active}\n index={index}\n />\n </div>\n {/* TODO: Add line between steps, layout still needs work */}\n {/* {!isLastStep && (\n <LineBetweenSteps\n currentIndex={index}\n activeStep={activeStep}\n isStepComplete={isStepComplete}\n />\n )} */}\n </div>\n\n <div className=\"min-h-[48px] flex-1 pl-3\">\n <button\n className=\"w-full text-left\"\n onClick={() => onSelectStep(index)}\n aria-expanded={active}\n aria-controls={`step-content-${index}`}\n >\n <div className=\"flex h-6 items-center justify-between\">\n <Heading variant=\"xs\">{step.title}</Heading>\n </div>\n </button>\n\n <AnimatePresence mode=\"sync\">\n {active && (\n <motion.div\n key={`desc-${index}`}\n id={`step-content-${index}`}\n initial={{ opacity: 0, height: 0 }}\n animate={{ opacity: 1, height: 'auto' }}\n exit={{ opacity: 0, height: 0 }}\n transition={{\n duration: 0.2,\n ease: [0.645, 0.045, 0.355, 1],\n }}\n className=\"mt-2 overflow-hidden\"\n >\n <Text muted>{step.description}</Text>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n </div>\n </div>\n )\n })}\n </div>\n </div>\n )\n}\n\n// TODO: Add line between steps, layout still needs work\n// function LineBetweenSteps({\n// currentIndex,\n// activeStep,\n// isStepComplete,\n// }: {\n// currentIndex: number\n// activeStep: number\n// isStepComplete: (i: number) => boolean\n// }) {\n// const stepComplete = isStepComplete(currentIndex)\n// const nextIsActive = activeStep === currentIndex + 1\n\n// const lineColor =\n// stepComplete && nextIsActive ? 'bg-emerald-500' : 'bg-zinc-700'\n\n// return <div className={`w-[1px] flex-1 ${lineColor} my-1`} />\n// }\n\nfunction CircleOrCheck({\n isComplete,\n isActive,\n index,\n}: {\n isComplete: boolean\n isActive: boolean\n index: number\n}) {\n const variants = {\n complete: {\n circle: 'bg-emerald-600',\n text: 'text-white',\n },\n active: {\n circle: 'bg-surface-tertiary-inverse',\n text: 'text-default-inverse',\n },\n default: {\n circle: 'bg-surface-tertiary-default',\n text: 'text-default',\n },\n }\n\n const variant = isComplete ? 'complete' : isActive ? 'active' : 'default'\n const { circle, text } = variants[variant]\n\n return (\n <div className=\"relative z-20 flex h-6 w-6 items-center justify-center\">\n <motion.div\n className={cn('absolute inset-0 rounded-full', circle)}\n initial={false}\n />\n <motion.div\n className={cn(\n 'relative z-20 flex h-full w-full items-center justify-center rounded-full',\n circle,\n text\n )}\n initial={false}\n >\n <AnimatePresence mode=\"wait\">\n {isComplete ? (\n <motion.div\n key=\"check\"\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.5 }}\n transition={{ duration: 0.2 }}\n >\n <Check className=\"size-3\" strokeWidth={2.5} />\n </motion.div>\n ) : (\n <motion.div\n key=\"number\"\n initial={{ opacity: 0, scale: 0.5 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.5 }}\n transition={{ duration: 0.2 }}\n className=\"flex h-full w-full items-center justify-center text-xs font-medium\"\n >\n {index + 1}\n </motion.div>\n )}\n </AnimatePresence>\n </motion.div>\n </div>\n )\n}\n\nexport default CLIWizard\n","import { createContext, useContext } from 'react'\n\ntype TableContextValue = {\n depth: number\n expandedRowKeys: Set<string | number>\n toggleExpanded: (rowKey: string | number) => void\n}\n\nexport const TableContext = createContext<TableContextValue>({\n depth: 0,\n expandedRowKeys: new Set(),\n toggleExpanded: () => {},\n})\n\nexport function useTable() {\n const context = useContext(TableContext)\n\n return context\n}\n","import { useCallback, useState } from 'react'\nimport { TableContext } from './context'\n\nexport interface TableProviderProps {\n children: React.ReactNode\n depth: number\n expandedRowKeys?: Set<string | number>\n}\n\nexport function TableProvider({\n children,\n depth,\n expandedRowKeys: defaultExpanded,\n}: TableProviderProps) {\n const [expandedRowKeys, setExpandedRowKeys] = useState<Set<string | number>>(\n defaultExpanded ?? new Set()\n )\n\n const toggleExpanded = useCallback(\n (rowKey: string | number) => {\n setExpandedRowKeys((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(rowKey)) {\n newSet.delete(rowKey)\n } else {\n newSet.add(rowKey)\n }\n return newSet\n })\n },\n [expandedRowKeys, setExpandedRowKeys]\n )\n\n return (\n <TableContext.Provider value={{ depth, expandedRowKeys, toggleExpanded }}>\n {children}\n </TableContext.Provider>\n )\n}\n","// TODO: https://linear.app/speakeasy/issue/SXF-170/table-component\nimport React, {\n forwardRef,\n PropsWithChildren,\n type ReactNode,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react'\nimport { cn } from '@/lib/utils'\nimport { Loader2 } from 'lucide-react'\nimport { isGroupOf } from '@/lib/typeUtils'\nimport styles from './styles.module.css'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/Tooltip'\nimport { Button } from '@/components/Button'\nimport { ExpandChevron } from '@/components/__beta__/CLIWizard'\nimport { TableProvider } from './context/tableProvider'\nimport { useTable } from './context/context'\n\nexport type Column<T extends object> = {\n key: keyof T | string\n header: ReactNode\n render?: (row: T) => ReactNode\n width?: `${number}fr` | `${number}px` | 'auto' | undefined\n}\n\nexport type Group<T extends object> = {\n key: string\n items: T[]\n [k: string]: unknown\n}\n\ntype CellPadding = 'normal' | 'condensed' | 'spacious'\n\ntype PropsWithChildrenAndClassName = PropsWithChildren<{ className?: string }>\n\nexport type TableProps<T extends object> = {\n columns: Column<T>[]\n data: T[] | Group<T>[]\n rowKey: (row: T) => string | number\n onRowClick?: (row: T) => void\n renderGroupHeader?: (group: Group<T>) => ReactNode\n renderExpandedContent?: (row: T) => ReactNode\n onLoadMore?: () => Promise<void> | (() => void)\n hasMore?: boolean\n noResultsMessage?: ReactNode\n className?: string\n cellPadding?: CellPadding\n hideHeader?: boolean\n}\n\nexport type TableWrapperProps<T extends object> =\n PropsWithChildrenAndClassName & {\n columns: Column<T>[]\n cellPadding?: CellPadding\n }\n\nfunction expandColumn<T extends object>(): Column<T> {\n return {\n key: 'expand',\n header: '',\n width: `64px`, // 32px is padding, 32px is the width of the expand button\n }\n}\n\ntype TableContainerProps = PropsWithChildrenAndClassName & {\n tableDepth: number\n colWidths: string\n cellPadding?: CellPadding\n expandedRowKeys?: Set<string | number>\n}\n\nconst TableContainer = forwardRef<HTMLTableElement, TableContainerProps>(\n (\n {\n children,\n className,\n tableDepth,\n colWidths,\n cellPadding,\n expandedRowKeys,\n },\n ref\n ) => {\n return (\n <TableProvider depth={tableDepth} expandedRowKeys={expandedRowKeys}>\n <table\n style={\n { '--grid-template-columns': colWidths } as React.CSSProperties\n }\n ref={ref}\n className={cn(\n styles.table,\n 'relative grid w-full caption-bottom [border-collapse:separate] [border-spacing:0] [grid-template-columns:var(--grid-template-columns)] overflow-x-auto overflow-y-hidden rounded-lg border text-sm',\n tableDepth > 1 && 'rounded-none border-none',\n className\n )}\n data-cell-padding={cellPadding}\n >\n {children}\n </table>\n </TableProvider>\n )\n }\n)\n\nfunction TableRoot<T extends object>(\n props: TableProps<T> | TableWrapperProps<T>\n) {\n const { depth } = useTable()\n const tableDepth = depth + 1\n\n const tableBodyRef = useRef<HTMLTableSectionElement | null>(null)\n const tableRef = useRef<HTMLTableElement | null>(null)\n\n let columns = props.columns\n\n // We add the expand column here so that all parts of the table know about it, particularly needed for widths\n if (\n !propsHasChildren<TableWrapperProps<T>, TableProps<T>>(props) &&\n props.renderExpandedContent\n ) {\n columns = [expandColumn(), ...columns]\n }\n\n const colWidths = useMemo(\n () => columns.map((column) => column.width ?? '1fr').join(' '),\n [columns]\n )\n\n if (propsHasChildren<TableWrapperProps<T>, TableProps<T>>(props)) {\n return (\n <TableContainer\n className={props.className}\n colWidths={colWidths}\n tableDepth={tableDepth}\n cellPadding={props.cellPadding}\n ref={tableRef}\n >\n {props.children}\n </TableContainer>\n )\n }\n\n const {\n data,\n rowKey,\n onRowClick,\n onLoadMore,\n hasMore,\n noResultsMessage,\n renderGroupHeader,\n renderExpandedContent,\n className,\n hideHeader,\n cellPadding,\n } = props\n\n const [isLoading, setIsLoading] = useState(false)\n const handleLoadMore = async () => {\n setIsLoading(true)\n await onLoadMore?.()\n setIsLoading(false)\n }\n\n const expandedRowKeys = useMemo(() => {\n if (!isGroupOf<T>(data)) {\n return new Set(\n data\n .filter((row) => 'defaultExpanded' in row && row.defaultExpanded)\n .map((row) => rowKey(row as T))\n )\n }\n }, [data, rowKey])\n\n return (\n <TableContainer\n className={className}\n colWidths={colWidths}\n tableDepth={tableDepth}\n cellPadding={cellPadding}\n ref={tableRef}\n expandedRowKeys={expandedRowKeys}\n >\n {!hideHeader && <Table.Header columns={columns} />}\n <Table.Body\n data={data}\n ref={tableBodyRef}\n columns={columns}\n rowKey={rowKey}\n hasMore={hasMore}\n noResultsMessage={noResultsMessage}\n renderGroupHeader={renderGroupHeader}\n renderExpandedContent={renderExpandedContent}\n handleLoadMore={handleLoadMore}\n isLoading={isLoading}\n onRowClick={onRowClick}\n />\n </TableContainer>\n )\n}\n\ntype HeaderProps<T extends object> = {\n columns: Column<T>[]\n className?: string\n}\n\nfunction HeaderContainer({\n className,\n children,\n}: PropsWithChildrenAndClassName) {\n return (\n <thead\n className={cn(\n '[grid-column:1/-1] grid [grid-template-columns:subgrid]',\n className\n )}\n >\n {children}\n </thead>\n )\n}\n\nfunction Header<T extends object>(\n props: HeaderProps<T> | PropsWithChildrenAndClassName\n) {\n if (propsHasChildren<PropsWithChildrenAndClassName, HeaderProps<T>>(props)) {\n return (\n <HeaderContainer className={props.className}>\n {props.children}\n </HeaderContainer>\n )\n }\n\n return (\n <HeaderContainer className={props.className}>\n <tr className=\"table-header [grid-column:1/-1] grid [grid-template-columns:subgrid] border-b\">\n {props.columns.map((column) => (\n <HeaderCell key={column.key.toString()}>{column.header}</HeaderCell>\n ))}\n </tr>\n </HeaderContainer>\n )\n}\n\ntype BodyProps<T extends object> = {\n columns: Column<T>[]\n data: T[] | Group<T>[]\n rowKey: (row: T) => string | number\n onRowClick?: (row: T) => void\n noResultsMessage?: ReactNode\n renderGroupHeader?: (group: Group<T>) => ReactNode\n renderExpandedContent?: (row: T) => ReactNode\n hasMore?: boolean\n handleLoadMore?: () => void\n isLoading?: boolean\n className?: string\n}\n\nconst BodyContainer = forwardRef<\n HTMLTableSectionElement,\n PropsWithChildrenAndClassName\n>(({ className, children }, ref) => {\n return (\n <tbody\n ref={ref}\n className={cn(\n 'relative [grid-column:1/-1] grid [grid-template-columns:subgrid]',\n className\n )}\n >\n {children}\n </tbody>\n )\n})\n\nconst Body = React.forwardRef(function Body<T extends object>(\n props: BodyProps<T> | PropsWithChildrenAndClassName,\n ref: React.ForwardedRef<HTMLTableSectionElement>\n) {\n if (propsHasChildren<PropsWithChildrenAndClassName, BodyProps<T>>(props)) {\n return (\n <BodyContainer ref={ref} className={props.className}>\n {props.children}\n </BodyContainer>\n )\n }\n\n const {\n data,\n columns,\n rowKey,\n hasMore,\n onRowClick,\n noResultsMessage,\n renderGroupHeader,\n handleLoadMore,\n isLoading,\n className,\n renderExpandedContent,\n } = props\n\n const renderRow = (row: T | Group<T>) => {\n if (isGroupOf<T>(row)) {\n return (\n <RowGroup\n group={row}\n columns={columns}\n rowKey={rowKey}\n renderGroupHeader={renderGroupHeader}\n key={row.key}\n onRowClick={onRowClick}\n />\n )\n } else if (renderExpandedContent) {\n return (\n <RowExpandable\n row={row}\n columns={columns}\n rowKey={rowKey}\n renderExpandedContent={renderExpandedContent}\n key={rowKey(row)}\n onClick={onRowClick}\n />\n )\n } else {\n return (\n <Row\n row={row}\n key={rowKey(row)}\n columns={columns}\n onClick={onRowClick}\n />\n )\n }\n }\n\n return (\n <BodyContainer ref={ref} className={cn(hasMore && 'pb-16', className)}>\n {data.length === 0 ? (\n <NoResultsMessage>{noResultsMessage}</NoResultsMessage>\n ) : (\n data.map(renderRow)\n )}\n {hasMore && handleLoadMore && (\n <LoadMore\n columns={columns}\n handleLoadMore={handleLoadMore}\n isLoading={isLoading}\n />\n )}\n </BodyContainer>\n )\n}) as <T extends object>(\n props: {\n ref?: React.ForwardedRef<HTMLTableSectionElement>\n } & (BodyProps<T> | PropsWithChildrenAndClassName)\n) => JSX.Element\n\ntype RowProps<T extends object> = {\n row: T\n onClick?: (row: T) => void\n columns: Column<T>[]\n className?: string\n}\n\ntype RowContainerProps = {\n onClick?: () => void\n} & PropsWithChildrenAndClassName\n\nfunction RowContainer({ className, children, onClick }: RowContainerProps) {\n return (\n <tr\n className={cn(\n 'hover:bg-muted/50 data-[state=selected]:bg-muted -z-0 [grid-column:1/-1] grid max-w-full [grid-template-columns:subgrid] border-b transition-colors last:border-none',\n onClick && 'cursor-pointer',\n className\n )}\n onClick={onClick}\n >\n {children}\n </tr>\n )\n}\n\nfunction Row<T extends object>(props: RowProps<T> | RowContainerProps) {\n if (propsHasChildren<RowContainerProps, RowProps<T>>(props)) {\n return (\n <RowContainer className={props.className} onClick={props.onClick}>\n {props.children}\n </RowContainer>\n )\n }\n\n const { row, onClick, columns, className } = props\n return (\n <RowContainer\n className={className}\n onClick={onClick ? () => onClick(row) : undefined}\n >\n {columns.map((column) => (\n <Cell key={column.key.toString()} column={column} row={row} />\n ))}\n </RowContainer>\n )\n}\n\nfunction RowExpandable<T extends object>({\n row,\n onClick,\n columns,\n rowKey,\n renderExpandedContent,\n className,\n}: {\n row: T\n columns: Column<T>[]\n rowKey: (row: T) => string | number\n renderExpandedContent: (row: T) => ReactNode\n onClick?: (row: T) => void\n className?: string\n}) {\n const { expandedRowKeys, toggleExpanded } = useTable()\n\n const isExpanded = expandedRowKeys.has(rowKey(row))\n\n const expand = (e: React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation()\n toggleExpanded(rowKey(row))\n }\n\n const content = useMemo(\n () => renderExpandedContent(row),\n [renderExpandedContent, row]\n )\n\n const renderExpandCol = useCallback(() => {\n return content ? (\n <TooltipProvider>\n <Tooltip delayDuration={0}>\n <TooltipTrigger asChild>\n <div className=\"flex w-full justify-end\">\n <Button\n onClick={expand}\n variant={'tertiary'}\n className={`h-6 w-6`}\n >\n <ExpandChevron isCollapsed={!isExpanded} />\n </Button>\n </div>\n </TooltipTrigger>\n <TooltipContent>{isExpanded ? 'Collapse' : 'Expand'}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n ) : null\n }, [expand, isExpanded, content])\n\n const expandCol = columns.find((column) => column.key === expandColumn().key)\n\n if (expandCol) {\n expandCol.render = renderExpandCol\n }\n\n let onClickFn = onClick\n\n // If there's some expanded content to show and onClick is not provided, let the row expand when clicked\n if (!onClick && content) {\n onClickFn = () => toggleExpanded(rowKey(row))\n }\n\n return (\n <>\n <Row\n row={row}\n onClick={onClickFn}\n columns={columns}\n className={className}\n />\n {/* This grid stuff is a cute way to make the height animate smoothly when expanding/collapsing */}\n <div\n className={cn(\n '[grid-column:1/-1] grid overflow-hidden transition-[grid-template-rows] duration-300',\n isExpanded ? 'grid-rows-[1fr]' : 'grid-rows-[0fr]'\n )}\n >\n <div className=\"min-h-0 overflow-auto\">{content}</div>\n </div>\n </>\n )\n}\n\nfunction RowGroup<T extends object>({\n group,\n columns,\n rowKey,\n renderGroupHeader,\n className,\n onRowClick,\n}: {\n group: Group<T>\n columns: Column<T>[]\n rowKey: (row: T) => string | number\n renderGroupHeader?: (group: Group<T>) => ReactNode\n className?: string\n onRowClick?: (row: T) => void\n}) {\n return (\n <div\n className={cn(\n '[grid-column:1/-1] grid [grid-template-columns:subgrid]',\n className\n )}\n >\n <div className=\"[grid-column:1/-1]\">{renderGroupHeader?.(group)}</div>\n {group.items.map((row) => (\n <Row\n row={row}\n key={rowKey(row)}\n columns={columns}\n onClick={onRowClick}\n />\n ))}\n </div>\n )\n}\n\ntype CellProps<T extends object> = {\n row: T\n column: Column<T>\n className?: string\n}\n\nfunction CellContainer({ children, className }: PropsWithChildrenAndClassName) {\n return (\n <td\n className={cn(\n styles.tableCell,\n `flex max-w-full items-center`,\n className\n )}\n >\n <SubtableIndendation />\n {children}\n </td>\n )\n}\n\nfunction Cell<T extends object>(\n props: CellProps<T> | PropsWithChildrenAndClassName\n) {\n if (propsHasChildren<PropsWithChildrenAndClassName, CellProps<T>>(props)) {\n return (\n <CellContainer className={props.className}>\n {props.children}\n </CellContainer>\n )\n }\n\n const { row, column, className } = props\n const content = column.render\n ? column.render(row)\n : isKeyOfT<T>(column.key, row)\n ? String(row[column.key])\n : ''\n\n return <CellContainer className={className}>{content}</CellContainer>\n}\n\nfunction NoResultsMessage({\n className,\n children,\n}: PropsWithChildrenAndClassName) {\n const Wrapper = ({ children, className }: PropsWithChildrenAndClassName) => (\n <div\n className={cn(\n '[grid-column:1/-1] grid [grid-template-columns:subgrid]',\n className\n )}\n >\n {children}\n </div>\n )\n\n const ContentWrapper = ({ children }: PropsWithChildren) => (\n <div className=\"[grid-column:1/-1]\">{children}</div>\n )\n\n return (\n <Wrapper className={className}>\n <ContentWrapper>{children}</ContentWrapper>\n </Wrapper>\n )\n}\n\nfunction LoadMore<T extends object>({\n columns,\n handleLoadMore,\n isLoading,\n}: {\n columns: Column<T>[]\n handleLoadMore: () => void\n isLoading?: boolean\n}) {\n const RowWrapper = ({\n children,\n className,\n }: PropsWithChildren<{ className?: string }>) => {\n const colWidths = columns.map((column) => column.width ?? '1fr').join(' ')\n return (\n <tr\n style={{ '--grid-template-columns': colWidths } as React.CSSProperties}\n className={cn(\n 'absolute right-0 bottom-0 left-0 -z-0 [grid-column:1/-1] grid min-h-16 max-w-full cursor-pointer [grid-template-columns:var(--grid-template-columns)] items-center border-b opacity-30 transition-colors',\n className\n )}\n >\n {children}\n </tr>\n )\n }\n\n const ButtonWrapper = ({ children }: PropsWithChildren) => (\n <div className=\"absolute right-0 bottom-0 left-0 z-10 flex min-h-14 w-full items-center justify-center py-4\">\n {children}\n </div>\n )\n\n return (\n <>\n <RowWrapper\n className={cn(isLoading && 'animate-pulse opacity-100 duration-[2.5s]')}\n >\n {columns.map((column) => (\n <Cell key={column.key.toString()}>\n <div className=\"bg-muted h-4 w-full rounded\" />\n </Cell>\n ))}\n </RowWrapper>\n <ButtonWrapper>\n <button\n className=\"focus-visible:ring-ring border-input bg-background hover:bg-accent hover:text-accent-foreground inline-flex h-9 items-center justify-center gap-2 rounded-md border px-4 py-2 text-sm font-medium whitespace-nowrap normal-case transition-colors select-none focus-visible:ring-1 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\"\n onClick={handleLoadMore}\n >\n {isLoading ? (\n <>\n Loading\n <Loader2 className=\"animate-spin\" />\n </>\n ) : (\n 'Load more'\n )}\n </button>\n </ButtonWrapper>\n </>\n )\n}\n\nfunction HeaderCell({\n className,\n children,\n}: PropsWithChildren<{ className?: string }>) {\n return (\n <th\n className={cn(\n styles.tableHeader,\n 'text-body flex items-center align-middle font-medium whitespace-nowrap select-none',\n className\n )}\n >\n <SubtableIndendation />\n {children}\n </th>\n )\n}\n\n// Has the effect of \"indenting\" subtables while still allowing them to occupy the full width of the parent table\nfunction SubtableIndendation() {\n const { depth } = useTable()\n return depth > 1 ? (\n <div style={{ minWidth: `${16 * (depth - 1)}px` }} />\n ) : null\n}\n\nfunction propsHasChildren<P extends PropsWithChildren, Q extends object>(\n props: P | Q\n): props is P {\n return 'children' in props && props.children !== undefined\n}\n\nfunction isKeyOfT<T extends object>(key: unknown, data: T): key is keyof T {\n return typeof key === 'string' && Object.keys(data).includes(key)\n}\n\nexport const Table = Object.assign(TableRoot, {\n Header: Object.assign(Header, { Cell: HeaderCell }),\n Body,\n Row,\n Cell,\n RowGroup,\n NoResultsMessage,\n})\n","// TODO: https://linear.app/speakeasy/issue/SXF-171/input-component\nimport { cn } from '@/lib/utils'\nimport { Icon } from '../Icon'\nimport { IconName } from '../Icon/names'\nimport { useCallback, useState } from 'react'\n\nexport interface InputProps\n extends React.InputHTMLAttributes<HTMLInputElement | HTMLTextAreaElement> {\n icon?: IconName\n multiline?: boolean\n error?: boolean\n className?: string\n}\n\nexport function Input({\n value,\n onChange,\n placeholder,\n disabled,\n icon,\n multiline,\n error,\n className,\n ...props\n}: InputProps) {\n const [isFocused, setIsFocused] = useState(false)\n\n const handleFocus = useCallback(\n (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (props.onFocus) {\n props.onFocus(event)\n }\n setIsFocused(true)\n },\n [props.onFocus]\n )\n const handleBlur = useCallback(\n (event: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (props.onBlur) {\n props.onBlur(event)\n }\n setIsFocused(false)\n },\n [props.onBlur]\n )\n\n const commonProps = {\n value,\n onChange,\n placeholder,\n disabled,\n } as const\n\n let element: React.ReactNode = (\n <input\n {...commonProps}\n {...props}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className={cn(\n 'bg-surface-primary-default placeholder:text-placeholder text-default h-full w-full text-sm shadow-none outline-none disabled:cursor-not-allowed disabled:opacity-50',\n isFocused && 'placeholder:text-default'\n )}\n />\n )\n\n if (multiline) {\n element = (\n <textarea\n {...commonProps}\n {...props}\n onFocus={handleFocus}\n onBlur={handleBlur}\n cols={30}\n rows={10}\n className={cn(\n 'bg-surface-primary-default placeholder:text-placeholder text-default my-2 h-full max-h-60 min-h-16 w-full px-3 py-3 text-sm shadow-none outline-none disabled:cursor-not-allowed disabled:opacity-50',\n isFocused && 'placeholder:text-default'\n )}\n />\n )\n }\n\n return (\n <div\n className={cn(\n 'bg-surface-primary-default border-input text-muted-foreground flex items-center gap-3 rounded-md border px-4 py-3',\n icon && 'px-3',\n isFocused && 'text-default border-focus',\n error && 'border-destructive-default',\n className\n )}\n >\n {icon && <Icon name={icon} size=\"small\" />}\n {element}\n </div>\n )\n}\n","import React, { forwardRef, ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\nimport { cva } from 'class-variance-authority'\nimport { Slot, Slottable } from '@radix-ui/react-slot'\nimport { IconName } from '../Icon/names'\nimport { Icon as IconComponent } from '../Icon'\nimport { TextVariant } from '../Text'\n\ntype LinkVariant = 'primary' | 'secondary'\n\nconst linkVariants = cva(\n 'group/link items-center inline-flex flex-row cursor-pointer',\n {\n variants: {\n variant: {\n primary: 'text-link-primary visited:text-link-visited',\n secondary: 'text-link-secondary visited:text-link-visited',\n },\n size: {\n xs: 'text-body-xs gap-1',\n sm: 'text-body-sm gap-1',\n md: 'text-body-md gap-2',\n lg: 'text-body-lg gap-2',\n },\n },\n }\n)\n\nconst linkTextVariants = cva(\n 'underline-offset-4 decoration-1 inline-flex flex-row items-center',\n {\n variants: {\n variant: {\n primary: '',\n secondary: '',\n },\n underline: {\n false: 'no-underline group-hover/link:underline',\n true: 'underline group-hover/link:no-underline',\n },\n },\n }\n)\n\nconst iconWrapperVariants = cva('inline-block', {\n variants: {\n size: {\n xs: 'size-3 [&>svg]:size-3',\n sm: 'size-3 [&>svg]:size-3',\n md: 'size-4 [&>svg]:size-4',\n lg: 'size-4 [&>svg]:size-4',\n },\n },\n})\n\nexport interface LinkProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n children: ReactNode\n variant?: LinkVariant\n size?: TextVariant\n underline?: boolean\n iconPrefixName?: IconName\n iconSuffixName?: IconName\n asChild?: boolean\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n children,\n variant = 'primary',\n size = 'md',\n underline = true,\n target = '_blank',\n iconPrefixName,\n iconSuffixName,\n className,\n asChild = false,\n ...rest\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'a'\n\n // When asChild is true, we need to apply underline styles to the main component\n // since the Text wrapper won't be used\n const underlineClasses = asChild\n ? linkTextVariants({ underline, variant })\n : ''\n\n return (\n <Comp\n ref={ref}\n target={target}\n className={cn(\n linkVariants({ size, variant }),\n underlineClasses,\n className\n )}\n {...rest}\n >\n {iconPrefixName && (\n <IconWrapper size={size}>\n <IconComponent name={iconPrefixName} size=\"small\" />\n </IconWrapper>\n )}\n\n {asChild ? (\n <Slottable>{children}</Slottable>\n ) : (\n <Text underline={underline} variant={variant}>\n {children}\n </Text>\n )}\n\n {iconSuffixName && (\n <IconWrapper size={size}>\n <IconComponent name={iconSuffixName} size=\"small\" />\n </IconWrapper>\n )}\n </Comp>\n )\n }\n)\nLink.displayName = 'Link'\n\ninterface TextProps {\n underline?: boolean\n variant?: LinkVariant\n}\n\nconst Text = ({\n children,\n underline,\n variant,\n}: React.PropsWithChildren<TextProps>) => {\n return (\n <span className={cn(linkTextVariants({ underline, variant }))}>\n {children}\n </span>\n )\n}\n\ninterface IconWrapperProps {\n size?: TextVariant\n}\n\nconst IconWrapper = ({\n children,\n size,\n}: React.PropsWithChildren<IconWrapperProps>) => {\n return <span className={cn(iconWrapperVariants({ size }))}>{children}</span>\n}\n","import React, { Children, Fragment, PropsWithChildren } from 'react'\nimport { Heading } from '../Heading'\nimport { Separator } from '../Separator'\n\nimport styles from './styles.module.css'\nimport { cn } from '@/lib/utils'\nimport useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'\nimport { Link, LinkProps } from '../Link'\n\nexport interface PageHeaderProps extends PropsWithChildren {\n className?: string\n}\n\nconst Root: React.FC<PageHeaderProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n 'page-header group/page-header',\n styles.pageHeader,\n className\n )}\n >\n {children}\n </div>\n )\n}\n\ninterface ContextBarProps extends PropsWithChildren {\n className?: string\n}\n\nconst ContextBar: React.FC<ContextBarProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n styles.contextBar,\n 'context-bar flex flex-row items-center justify-start pt-6',\n className\n )}\n >\n {children}\n </div>\n )\n}\nContextBar.displayName = 'PageHeader.ContextBar'\n\ninterface ParentLinkProps\n extends PropsWithChildren<Pick<LinkProps, 'href' | 'onClick'>> {\n className?: string\n}\n\nconst ParentLink: React.FC<ParentLinkProps> = ({\n children,\n className,\n onClick,\n href,\n}) => {\n return (\n <Link\n href={href}\n onClick={onClick}\n className={className}\n iconPrefixName=\"arrow-left\"\n variant=\"secondary\"\n target=\"_self\"\n >\n {children}\n </Link>\n )\n}\nParentLink.displayName = 'PageHeader.ParentLink'\n\ninterface TitleBarProps extends PropsWithChildren {\n className?: string\n}\nconst TitleBar: React.FC<TitleBarProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n styles.titleBar,\n 'flex flex-row items-center justify-between gap-4 border-b py-10 group-has-[.context-bar]/page-header:pt-8',\n className\n )}\n >\n {children}\n </div>\n )\n}\nTitleBar.displayName = 'PageHeader.TitleBar'\n\ninterface TitleAreaProps extends PropsWithChildren {\n className?: string\n}\nconst TitleArea: React.FC<TitleAreaProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n styles.titleArea,\n 'flex flex-row items-center gap-2',\n className\n )}\n >\n {children}\n </div>\n )\n}\nTitleArea.displayName = 'PageHeader.TitleArea'\n\ninterface LeadingVisualProps extends PropsWithChildren {\n className?: string\n}\n\nconst LeadingVisual: React.FC<LeadingVisualProps> = ({\n children,\n className,\n}) => {\n return <div className={cn('order-1', className)}>{children}</div>\n}\nLeadingVisual.displayName = 'PageHeader.LeadingVisual'\n\ninterface TitleProps extends PropsWithChildren {\n className?: string\n viewTransitionName?: string\n}\nconst Title: React.FC<TitleProps> = ({\n children,\n className,\n viewTransitionName,\n}) => {\n return (\n <Heading\n variant=\"xl\"\n className={cn('order-2 flex-1', className)}\n viewTransitionName={viewTransitionName}\n >\n {children}\n </Heading>\n )\n}\nTitle.displayName = 'PageHeader.Title'\n\ninterface ActionsProps extends PropsWithChildren {\n className?: string\n}\nconst Actions: React.FC<ActionsProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n styles.actions,\n 'flex min-w-max flex-row items-start justify-end gap-2',\n className\n )}\n >\n {children}\n </div>\n )\n}\nActions.displayName = 'PageHeader.Actions'\n\ninterface FooterProps extends PropsWithChildren {\n className?: string\n}\nconst Footer: React.FC<FooterProps> = ({ children, className }) => {\n const breakpoint = useTailwindBreakpoint()\n const validChildren = Children.toArray(children).filter(\n (child) => React.isValidElement(child) && child.type === FooterItem\n )\n const childCount = Children.count(validChildren)\n\n const isSmallScreen = breakpoint === 'xs' || breakpoint === 'sm'\n\n return (\n <div\n className={cn(\n styles.footer,\n 'flex w-full flex-col flex-wrap items-stretch justify-start gap-y-2 border-b py-6 md:flex-row md:gap-y-4',\n className\n )}\n >\n {Children.map(validChildren, (child, index) => (\n <Fragment key={index}>\n {child}\n {index < childCount - 1 && (\n <PageHeader.FooterItem>\n <Separator\n orientation={isSmallScreen ? 'horizontal' : 'vertical'}\n className=\"footer-item-separator md:mx-6\"\n />\n </PageHeader.FooterItem>\n )}\n </Fragment>\n ))}\n </div>\n )\n}\nFooter.displayName = 'PageHeader.Footer'\n\ninterface FooterItemProps extends PropsWithChildren {\n className?: string\n}\nconst FooterItem: React.FC<FooterItemProps> = ({ children, className }) => {\n return (\n <div\n className={cn(\n 'flex flex-row items-center [&:has(.footer-item-separator)]:hidden [&:has(.footer-item-separator)]:md:flex',\n className\n )}\n >\n {children}\n </div>\n )\n}\nFooterItem.displayName = 'PageHeader.FooterItem'\n\nexport const PageHeader = Object.assign(Root, {\n ContextBar,\n ParentLink,\n TitleBar,\n TitleArea,\n LeadingVisual,\n Title,\n Actions,\n Footer,\n FooterItem,\n})\n\nPageHeader.displayName = 'PageHeader'\n","// TODO: https://linear.app/speakeasy/issue/SXF-173/external-pill-component\nimport React, { useState, useEffect } from 'react'\nimport { Icon as FallbackIcon } from '../Icon'\nimport { cn } from '@/lib/utils'\n\ntype AllExternalIcons =\n | 'github'\n | 'npm'\n | 'rubygems'\n | 'nuget'\n | 'maven'\n | 'pypi'\n | 'packagist'\n | 'terraform'\nconst supportedExternals = ['github', 'npm', 'rubygems']\n\nexport interface ExternalPillProps {\n href: string\n icon: AllExternalIcons\n text: React.ReactNode\n title?: string\n target?: '_blank' | '_self' | '_parent' | '_top'\n className?: string\n}\n\nexport function ExternalPill({\n href,\n icon,\n text,\n target = '_blank',\n title,\n className,\n}: ExternalPillProps) {\n const [Icon, setIcon] = useState<React.ComponentType | null>(null)\n\n useEffect(() => {\n if (supportedExternals.includes(icon)) {\n import(`../../assets/icons/external/${icon}.svg?react`).then((module) =>\n setIcon(module.default)\n )\n }\n }, [icon])\n\n return (\n <a\n href={href}\n target={target}\n title={title}\n className={cn(\n 'inline-flex flex-row items-center gap-1.5 rounded-xl border px-3.5 py-2 text-zinc-700 transition-colors duration-500 hover:border-zinc-300 hover:bg-zinc-50 hover:text-black dark:text-zinc-300 dark:hover:border-zinc-700 dark:hover:bg-zinc-900 hover:dark:text-white',\n className\n )}\n >\n {Icon ? <Icon /> : <FallbackIcon name=\"external-link\" />}\n <p className=\"text-xs font-normal\">{text}</p>\n </a>\n )\n}\n","// TODO: https://linear.app/speakeasy/issue/SXF-172/language-indicator-component\nimport { cn } from '@/lib/utils'\nimport { SupportedLanguage } from '@/types'\n\nexport interface LanguageIndicatorProps {\n language: SupportedLanguage\n className?: string\n indicatorOnly?: boolean\n}\n\nconst languageLabelMap: Record<string, string> = {\n typescript: 'TypeScript',\n go: 'Go',\n java: 'Java',\n python: 'Python',\n csharp: 'C#',\n terraform: 'Terraform',\n unity: 'Unity',\n php: 'PHP',\n swift: 'Swift',\n ruby: 'Ruby',\n postman: 'Postman',\n\n // Unsupported languages but used elsewhere\n bash: 'Bash',\n json: 'JSON',\n dotnet: 'C#',\n javascript: 'JavaScript',\n}\n\nconst languageColorMap: Record<string, string> = {\n typescript: 'bg-yellow-500',\n go: 'bg-green-600',\n java: 'bg-orange-500',\n python: 'bg-indigo-500',\n csharp: 'bg-purple-500',\n terraform: 'bg-blue-500',\n unity: 'bg-emerald-300',\n php: 'bg-orange-500',\n swift: 'bg-sky-300',\n ruby: 'bg-red-500',\n postman: 'bg-pink-500',\n\n // Unsupported languages but used elsewhere\n bash: 'bg-gray-500',\n json: 'bg-gray-500',\n dotnet: 'bg-gray-500',\n javascript: 'bg-yellow-500',\n}\n\nexport function LanguageIndicator({\n language,\n className,\n indicatorOnly = false,\n}: LanguageIndicatorProps) {\n return (\n <div className={cn('gap flex items-center gap-2 select-none', className)}>\n <div\n className={`mx-1 h-2 w-2 rounded-full ${languageColorMap[language]}`}\n />\n {!indicatorOnly && (\n <span className=\"text-body font-medium\">\n {languageLabelMap[language]}\n </span>\n )}\n </div>\n )\n}\n","// TODO: https://linear.app/speakeasy/issue/SXF-174/pull-request-link-component\nimport { assertNever } from '@/lib/assert'\nimport { cn } from '@/lib/utils'\nimport { GitPullRequest, GitPullRequestClosed, Merge } from 'lucide-react'\n\ntype Status = 'open' | 'closed' | 'merged'\n\nexport interface PullRequestLinkProps {\n href: string\n prNumber?: number\n status?: Status\n target?: '_blank' | '_self' | '_parent' | '_top'\n className?: string\n}\n\nexport function PullRequestLink({\n href,\n prNumber,\n status = 'open',\n target = '_blank',\n className,\n}: PullRequestLinkProps) {\n // If prNumber is not provided, try to extract it from the href\n const num = prNumber ?? (href.split('/').pop() || 'Unknown')\n\n return (\n <a\n className={cn(\n 'hover:bg-muted-foreground/5 inline-flex flex-row items-center gap-1 rounded-lg border px-1.5 py-1 text-sm transition-colors duration-500',\n className\n )}\n href={href}\n target={target}\n >\n <span className={colors[status]}>\n <PullRequestStatusIcon status={status} />\n </span>\n <span className=\"text-body text-xs font-semibold\">{`#${num}`}</span>\n </a>\n )\n}\n\nconst colors: Record<Status, string> = {\n open: 'text-emerald-500',\n closed: 'text-rose-500',\n merged: 'text-violet-500',\n}\n\nfunction PullRequestStatusIcon({\n status,\n}: {\n status: 'open' | 'closed' | 'merged'\n}): React.ReactNode {\n switch (status) {\n case 'open':\n return <GitPullRequest size={14} />\n case 'closed':\n return <GitPullRequestClosed size={14} />\n case 'merged':\n return <Merge size={14} />\n default:\n assertNever(status)\n }\n}\n","// packages/core/number/src/number.ts\nfunction clamp(value, [min, max]) {\n return Math.min(max, Math.max(min, value));\n}\nexport {\n clamp\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-previous/src/usePrevious.tsx\nimport * as React from \"react\";\nfunction usePrevious(value) {\n const ref = React.useRef({ value, previous: value });\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}\nexport {\n usePrevious\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// packages/react/select/src/select.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { clamp } from \"@radix-ui/number\";\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 { useDirection } from \"@radix-ui/react-direction\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { useFocusGuards } from \"@radix-ui/react-focus-guards\";\nimport { FocusScope } from \"@radix-ui/react-focus-scope\";\nimport { useId } from \"@radix-ui/react-id\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { hideOthers } from \"aria-hidden\";\nimport { RemoveScroll } from \"react-remove-scroll\";\nimport { Fragment, jsx, jsxs } from \"react/jsx-runtime\";\nvar OPEN_KEYS = [\" \", \"Enter\", \"ArrowUp\", \"ArrowDown\"];\nvar SELECTION_KEYS = [\" \", \"Enter\"];\nvar SELECT_NAME = \"Select\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(SELECT_NAME);\nvar [createSelectContext, createSelectScope] = createContextScope(SELECT_NAME, [\n createCollectionScope,\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [SelectProvider, useSelectContext] = createSelectContext(SELECT_NAME);\nvar [SelectNativeOptionsProvider, useSelectNativeOptionsContext] = createSelectContext(SELECT_NAME);\nvar Select = (props) => {\n const {\n __scopeSelect,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n value: valueProp,\n defaultValue,\n onValueChange,\n dir,\n name,\n autoComplete,\n disabled,\n required,\n form\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const [trigger, setTrigger] = React.useState(null);\n const [valueNode, setValueNode] = React.useState(null);\n const [valueNodeHasChildren, setValueNodeHasChildren] = React.useState(false);\n const direction = useDirection(dir);\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue,\n onChange: onValueChange\n });\n const triggerPointerDownPosRef = React.useRef(null);\n const isFormControl = trigger ? form || !!trigger.closest(\"form\") : true;\n const [nativeOptionsSet, setNativeOptionsSet] = React.useState(/* @__PURE__ */ new Set());\n const nativeSelectKey = Array.from(nativeOptionsSet).map((option) => option.props.value).join(\";\");\n return /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children: /* @__PURE__ */ jsxs(\n SelectProvider,\n {\n required,\n scope: __scopeSelect,\n trigger,\n onTriggerChange: setTrigger,\n valueNode,\n onValueNodeChange: setValueNode,\n valueNodeHasChildren,\n onValueNodeHasChildrenChange: setValueNodeHasChildren,\n contentId: useId(),\n value,\n onValueChange: setValue,\n open,\n onOpenChange: setOpen,\n dir: direction,\n triggerPointerDownPosRef,\n disabled,\n children: [\n /* @__PURE__ */ jsx(Collection.Provider, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n SelectNativeOptionsProvider,\n {\n scope: props.__scopeSelect,\n onNativeOptionAdd: React.useCallback((option) => {\n setNativeOptionsSet((prev) => new Set(prev).add(option));\n }, []),\n onNativeOptionRemove: React.useCallback((option) => {\n setNativeOptionsSet((prev) => {\n const optionsSet = new Set(prev);\n optionsSet.delete(option);\n return optionsSet;\n });\n }, []),\n children\n }\n ) }),\n isFormControl ? /* @__PURE__ */ jsxs(\n BubbleSelect,\n {\n \"aria-hidden\": true,\n required,\n tabIndex: -1,\n name,\n autoComplete,\n value,\n onChange: (event) => setValue(event.target.value),\n disabled,\n form,\n children: [\n value === void 0 ? /* @__PURE__ */ jsx(\"option\", { value: \"\" }) : null,\n Array.from(nativeOptionsSet)\n ]\n },\n nativeSelectKey\n ) : null\n ]\n }\n ) });\n};\nSelect.displayName = SELECT_NAME;\nvar TRIGGER_NAME = \"SelectTrigger\";\nvar SelectTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, disabled = false, ...triggerProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(TRIGGER_NAME, __scopeSelect);\n const isDisabled = context.disabled || disabled;\n const composedRefs = useComposedRefs(forwardedRef, context.onTriggerChange);\n const getItems = useCollection(__scopeSelect);\n const pointerTypeRef = React.useRef(\"touch\");\n const [searchRef, handleTypeaheadSearch, resetTypeahead] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.value === context.value);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem !== void 0) {\n context.onValueChange(nextItem.value);\n }\n });\n const handleOpen = (pointerEvent) => {\n if (!isDisabled) {\n context.onOpenChange(true);\n resetTypeahead();\n }\n if (pointerEvent) {\n context.triggerPointerDownPosRef.current = {\n x: Math.round(pointerEvent.pageX),\n y: Math.round(pointerEvent.pageY)\n };\n }\n };\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"combobox\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open,\n \"aria-required\": context.required,\n \"aria-autocomplete\": \"none\",\n dir: context.dir,\n \"data-state\": context.open ? \"open\" : \"closed\",\n disabled: isDisabled,\n \"data-disabled\": isDisabled ? \"\" : void 0,\n \"data-placeholder\": shouldShowPlaceholder(context.value) ? \"\" : void 0,\n ...triggerProps,\n ref: composedRefs,\n onClick: composeEventHandlers(triggerProps.onClick, (event) => {\n event.currentTarget.focus();\n if (pointerTypeRef.current !== \"mouse\") {\n handleOpen(event);\n }\n }),\n onPointerDown: composeEventHandlers(triggerProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n const target = event.target;\n if (target.hasPointerCapture(event.pointerId)) {\n target.releasePointerCapture(event.pointerId);\n }\n if (event.button === 0 && event.ctrlKey === false && event.pointerType === \"mouse\") {\n handleOpen(event);\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(triggerProps.onKeyDown, (event) => {\n const isTypingAhead = searchRef.current !== \"\";\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if (isTypingAhead && event.key === \" \") return;\n if (OPEN_KEYS.includes(event.key)) {\n handleOpen();\n event.preventDefault();\n }\n })\n }\n ) });\n }\n);\nSelectTrigger.displayName = TRIGGER_NAME;\nvar VALUE_NAME = \"SelectValue\";\nvar SelectValue = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, children, placeholder = \"\", ...valueProps } = props;\n const context = useSelectContext(VALUE_NAME, __scopeSelect);\n const { onValueNodeHasChildrenChange } = context;\n const hasChildren = children !== void 0;\n const composedRefs = useComposedRefs(forwardedRef, context.onValueNodeChange);\n useLayoutEffect(() => {\n onValueNodeHasChildrenChange(hasChildren);\n }, [onValueNodeHasChildrenChange, hasChildren]);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n ...valueProps,\n ref: composedRefs,\n style: { pointerEvents: \"none\" },\n children: shouldShowPlaceholder(context.value) ? /* @__PURE__ */ jsx(Fragment, { children: placeholder }) : children\n }\n );\n }\n);\nSelectValue.displayName = VALUE_NAME;\nvar ICON_NAME = \"SelectIcon\";\nvar SelectIcon = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, children, ...iconProps } = props;\n return /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...iconProps, ref: forwardedRef, children: children || \"\\u25BC\" });\n }\n);\nSelectIcon.displayName = ICON_NAME;\nvar PORTAL_NAME = \"SelectPortal\";\nvar SelectPortal = (props) => {\n return /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, ...props });\n};\nSelectPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"SelectContent\";\nvar SelectContent = React.forwardRef(\n (props, forwardedRef) => {\n const context = useSelectContext(CONTENT_NAME, props.__scopeSelect);\n const [fragment, setFragment] = React.useState();\n useLayoutEffect(() => {\n setFragment(new DocumentFragment());\n }, []);\n if (!context.open) {\n const frag = fragment;\n return frag ? ReactDOM.createPortal(\n /* @__PURE__ */ jsx(SelectContentProvider, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeSelect, children: /* @__PURE__ */ jsx(\"div\", { children: props.children }) }) }),\n frag\n ) : null;\n }\n return /* @__PURE__ */ jsx(SelectContentImpl, { ...props, ref: forwardedRef });\n }\n);\nSelectContent.displayName = CONTENT_NAME;\nvar CONTENT_MARGIN = 10;\nvar [SelectContentProvider, useSelectContentContext] = createSelectContext(CONTENT_NAME);\nvar CONTENT_IMPL_NAME = \"SelectContentImpl\";\nvar SelectContentImpl = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n position = \"item-aligned\",\n onCloseAutoFocus,\n onEscapeKeyDown,\n onPointerDownOutside,\n //\n // PopperContent props\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions,\n //\n ...contentProps\n } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const [content, setContent] = React.useState(null);\n const [viewport, setViewport] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [selectedItem, setSelectedItem] = React.useState(null);\n const [selectedItemText, setSelectedItemText] = React.useState(\n null\n );\n const getItems = useCollection(__scopeSelect);\n const [isPositioned, setIsPositioned] = React.useState(false);\n const firstValidItemFoundRef = React.useRef(false);\n React.useEffect(() => {\n if (content) return hideOthers(content);\n }, [content]);\n useFocusGuards();\n const focusFirst = React.useCallback(\n (candidates) => {\n const [firstItem, ...restItems] = getItems().map((item) => item.ref.current);\n const [lastItem] = restItems.slice(-1);\n const PREVIOUSLY_FOCUSED_ELEMENT = document.activeElement;\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate?.scrollIntoView({ block: \"nearest\" });\n if (candidate === firstItem && viewport) viewport.scrollTop = 0;\n if (candidate === lastItem && viewport) viewport.scrollTop = viewport.scrollHeight;\n candidate?.focus();\n if (document.activeElement !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n },\n [getItems, viewport]\n );\n const focusSelectedItem = React.useCallback(\n () => focusFirst([selectedItem, content]),\n [focusFirst, selectedItem, content]\n );\n React.useEffect(() => {\n if (isPositioned) {\n focusSelectedItem();\n }\n }, [isPositioned, focusSelectedItem]);\n const { onOpenChange, triggerPointerDownPosRef } = context;\n React.useEffect(() => {\n if (content) {\n let pointerMoveDelta = { x: 0, y: 0 };\n const handlePointerMove = (event) => {\n pointerMoveDelta = {\n x: Math.abs(Math.round(event.pageX) - (triggerPointerDownPosRef.current?.x ?? 0)),\n y: Math.abs(Math.round(event.pageY) - (triggerPointerDownPosRef.current?.y ?? 0))\n };\n };\n const handlePointerUp = (event) => {\n if (pointerMoveDelta.x <= 10 && pointerMoveDelta.y <= 10) {\n event.preventDefault();\n } else {\n if (!content.contains(event.target)) {\n onOpenChange(false);\n }\n }\n document.removeEventListener(\"pointermove\", handlePointerMove);\n triggerPointerDownPosRef.current = null;\n };\n if (triggerPointerDownPosRef.current !== null) {\n document.addEventListener(\"pointermove\", handlePointerMove);\n document.addEventListener(\"pointerup\", handlePointerUp, { capture: true, once: true });\n }\n return () => {\n document.removeEventListener(\"pointermove\", handlePointerMove);\n document.removeEventListener(\"pointerup\", handlePointerUp, { capture: true });\n };\n }\n }, [content, onOpenChange, triggerPointerDownPosRef]);\n React.useEffect(() => {\n const close = () => onOpenChange(false);\n window.addEventListener(\"blur\", close);\n window.addEventListener(\"resize\", close);\n return () => {\n window.removeEventListener(\"blur\", close);\n window.removeEventListener(\"resize\", close);\n };\n }, [onOpenChange]);\n const [searchRef, handleTypeaheadSearch] = useTypeaheadSearch((search) => {\n const enabledItems = getItems().filter((item) => !item.disabled);\n const currentItem = enabledItems.find((item) => item.ref.current === document.activeElement);\n const nextItem = findNextItem(enabledItems, search, currentItem);\n if (nextItem) {\n setTimeout(() => nextItem.ref.current.focus());\n }\n });\n const itemRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItem(node);\n if (isFirstValidItem) firstValidItemFoundRef.current = true;\n }\n },\n [context.value]\n );\n const handleItemLeave = React.useCallback(() => content?.focus(), [content]);\n const itemTextRefCallback = React.useCallback(\n (node, value, disabled) => {\n const isFirstValidItem = !firstValidItemFoundRef.current && !disabled;\n const isSelectedItem = context.value !== void 0 && context.value === value;\n if (isSelectedItem || isFirstValidItem) {\n setSelectedItemText(node);\n }\n },\n [context.value]\n );\n const SelectPosition = position === \"popper\" ? SelectPopperPosition : SelectItemAlignedPosition;\n const popperContentProps = SelectPosition === SelectPopperPosition ? {\n side,\n sideOffset,\n align,\n alignOffset,\n arrowPadding,\n collisionBoundary,\n collisionPadding,\n sticky,\n hideWhenDetached,\n avoidCollisions\n } : {};\n return /* @__PURE__ */ jsx(\n SelectContentProvider,\n {\n scope: __scopeSelect,\n content,\n viewport,\n onViewportChange: setViewport,\n itemRefCallback,\n selectedItem,\n onItemLeave: handleItemLeave,\n itemTextRefCallback,\n focusSelectedItem,\n selectedItemText,\n position,\n isPositioned,\n searchRef,\n children: /* @__PURE__ */ jsx(RemoveScroll, { as: Slot, allowPinchZoom: true, children: /* @__PURE__ */ jsx(\n FocusScope,\n {\n asChild: true,\n trapped: context.open,\n onMountAutoFocus: (event) => {\n event.preventDefault();\n },\n onUnmountAutoFocus: composeEventHandlers(onCloseAutoFocus, (event) => {\n context.trigger?.focus({ preventScroll: true });\n event.preventDefault();\n }),\n children: /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: true,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: (event) => event.preventDefault(),\n onDismiss: () => context.onOpenChange(false),\n children: /* @__PURE__ */ jsx(\n SelectPosition,\n {\n role: \"listbox\",\n id: context.contentId,\n \"data-state\": context.open ? \"open\" : \"closed\",\n dir: context.dir,\n onContextMenu: (event) => event.preventDefault(),\n ...contentProps,\n ...popperContentProps,\n onPlaced: () => setIsPositioned(true),\n ref: composedRefs,\n style: {\n // flex layout so we can place the scroll buttons properly\n display: \"flex\",\n flexDirection: \"column\",\n // reset the outline by default as the content MAY get focused\n outline: \"none\",\n ...contentProps.style\n },\n onKeyDown: composeEventHandlers(contentProps.onKeyDown, (event) => {\n const isModifierKey = event.ctrlKey || event.altKey || event.metaKey;\n if (event.key === \"Tab\") event.preventDefault();\n if (!isModifierKey && event.key.length === 1) handleTypeaheadSearch(event.key);\n if ([\"ArrowUp\", \"ArrowDown\", \"Home\", \"End\"].includes(event.key)) {\n const items = getItems().filter((item) => !item.disabled);\n let candidateNodes = items.map((item) => item.ref.current);\n if ([\"ArrowUp\", \"End\"].includes(event.key)) {\n candidateNodes = candidateNodes.slice().reverse();\n }\n if ([\"ArrowUp\", \"ArrowDown\"].includes(event.key)) {\n const currentElement = event.target;\n const currentIndex = candidateNodes.indexOf(currentElement);\n candidateNodes = candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n event.preventDefault();\n }\n })\n }\n )\n }\n )\n }\n ) })\n }\n );\n }\n);\nSelectContentImpl.displayName = CONTENT_IMPL_NAME;\nvar ITEM_ALIGNED_POSITION_NAME = \"SelectItemAlignedPosition\";\nvar SelectItemAlignedPosition = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onPlaced, ...popperProps } = props;\n const context = useSelectContext(CONTENT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(CONTENT_NAME, __scopeSelect);\n const [contentWrapper, setContentWrapper] = React.useState(null);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const getItems = useCollection(__scopeSelect);\n const shouldExpandOnScrollRef = React.useRef(false);\n const shouldRepositionRef = React.useRef(true);\n const { viewport, selectedItem, selectedItemText, focusSelectedItem } = contentContext;\n const position = React.useCallback(() => {\n if (context.trigger && context.valueNode && contentWrapper && content && viewport && selectedItem && selectedItemText) {\n const triggerRect = context.trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const valueNodeRect = context.valueNode.getBoundingClientRect();\n const itemTextRect = selectedItemText.getBoundingClientRect();\n if (context.dir !== \"rtl\") {\n const itemTextOffset = itemTextRect.left - contentRect.left;\n const left = valueNodeRect.left - itemTextOffset;\n const leftDelta = triggerRect.left - left;\n const minContentWidth = triggerRect.width + leftDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const rightEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedLeft = clamp(left, [\n CONTENT_MARGIN,\n // Prevents the content from going off the starting edge of the\n // viewport. It may still go off the ending edge, but this can be\n // controlled by the user since they may want to manage overflow in a\n // specific way.\n // https://github.com/radix-ui/primitives/issues/2049\n Math.max(CONTENT_MARGIN, rightEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.left = clampedLeft + \"px\";\n } else {\n const itemTextOffset = contentRect.right - itemTextRect.right;\n const right = window.innerWidth - valueNodeRect.right - itemTextOffset;\n const rightDelta = window.innerWidth - triggerRect.right - right;\n const minContentWidth = triggerRect.width + rightDelta;\n const contentWidth = Math.max(minContentWidth, contentRect.width);\n const leftEdge = window.innerWidth - CONTENT_MARGIN;\n const clampedRight = clamp(right, [\n CONTENT_MARGIN,\n Math.max(CONTENT_MARGIN, leftEdge - contentWidth)\n ]);\n contentWrapper.style.minWidth = minContentWidth + \"px\";\n contentWrapper.style.right = clampedRight + \"px\";\n }\n const items = getItems();\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const itemsHeight = viewport.scrollHeight;\n const contentStyles = window.getComputedStyle(content);\n const contentBorderTopWidth = parseInt(contentStyles.borderTopWidth, 10);\n const contentPaddingTop = parseInt(contentStyles.paddingTop, 10);\n const contentBorderBottomWidth = parseInt(contentStyles.borderBottomWidth, 10);\n const contentPaddingBottom = parseInt(contentStyles.paddingBottom, 10);\n const fullContentHeight = contentBorderTopWidth + contentPaddingTop + itemsHeight + contentPaddingBottom + contentBorderBottomWidth;\n const minContentHeight = Math.min(selectedItem.offsetHeight * 5, fullContentHeight);\n const viewportStyles = window.getComputedStyle(viewport);\n const viewportPaddingTop = parseInt(viewportStyles.paddingTop, 10);\n const viewportPaddingBottom = parseInt(viewportStyles.paddingBottom, 10);\n const topEdgeToTriggerMiddle = triggerRect.top + triggerRect.height / 2 - CONTENT_MARGIN;\n const triggerMiddleToBottomEdge = availableHeight - topEdgeToTriggerMiddle;\n const selectedItemHalfHeight = selectedItem.offsetHeight / 2;\n const itemOffsetMiddle = selectedItem.offsetTop + selectedItemHalfHeight;\n const contentTopToItemMiddle = contentBorderTopWidth + contentPaddingTop + itemOffsetMiddle;\n const itemMiddleToContentBottom = fullContentHeight - contentTopToItemMiddle;\n const willAlignWithoutTopOverflow = contentTopToItemMiddle <= topEdgeToTriggerMiddle;\n if (willAlignWithoutTopOverflow) {\n const isLastItem = items.length > 0 && selectedItem === items[items.length - 1].ref.current;\n contentWrapper.style.bottom = \"0px\";\n const viewportOffsetBottom = content.clientHeight - viewport.offsetTop - viewport.offsetHeight;\n const clampedTriggerMiddleToBottomEdge = Math.max(\n triggerMiddleToBottomEdge,\n selectedItemHalfHeight + // viewport might have padding bottom, include it to avoid a scrollable viewport\n (isLastItem ? viewportPaddingBottom : 0) + viewportOffsetBottom + contentBorderBottomWidth\n );\n const height = contentTopToItemMiddle + clampedTriggerMiddleToBottomEdge;\n contentWrapper.style.height = height + \"px\";\n } else {\n const isFirstItem = items.length > 0 && selectedItem === items[0].ref.current;\n contentWrapper.style.top = \"0px\";\n const clampedTopEdgeToTriggerMiddle = Math.max(\n topEdgeToTriggerMiddle,\n contentBorderTopWidth + viewport.offsetTop + // viewport might have padding top, include it to avoid a scrollable viewport\n (isFirstItem ? viewportPaddingTop : 0) + selectedItemHalfHeight\n );\n const height = clampedTopEdgeToTriggerMiddle + itemMiddleToContentBottom;\n contentWrapper.style.height = height + \"px\";\n viewport.scrollTop = contentTopToItemMiddle - topEdgeToTriggerMiddle + viewport.offsetTop;\n }\n contentWrapper.style.margin = `${CONTENT_MARGIN}px 0`;\n contentWrapper.style.minHeight = minContentHeight + \"px\";\n contentWrapper.style.maxHeight = availableHeight + \"px\";\n onPlaced?.();\n requestAnimationFrame(() => shouldExpandOnScrollRef.current = true);\n }\n }, [\n getItems,\n context.trigger,\n context.valueNode,\n contentWrapper,\n content,\n viewport,\n selectedItem,\n selectedItemText,\n context.dir,\n onPlaced\n ]);\n useLayoutEffect(() => position(), [position]);\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n const handleScrollButtonChange = React.useCallback(\n (node) => {\n if (node && shouldRepositionRef.current === true) {\n position();\n focusSelectedItem?.();\n shouldRepositionRef.current = false;\n }\n },\n [position, focusSelectedItem]\n );\n return /* @__PURE__ */ jsx(\n SelectViewportProvider,\n {\n scope: __scopeSelect,\n contentWrapper,\n shouldExpandOnScrollRef,\n onScrollButtonChange: handleScrollButtonChange,\n children: /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: setContentWrapper,\n style: {\n display: \"flex\",\n flexDirection: \"column\",\n position: \"fixed\",\n zIndex: contentZIndex\n },\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...popperProps,\n ref: composedRefs,\n style: {\n // When we get the height of the content, it includes borders. If we were to set\n // the height without having `boxSizing: 'border-box'` it would be too big.\n boxSizing: \"border-box\",\n // We need to ensure the content doesn't get taller than the wrapper\n maxHeight: \"100%\",\n ...popperProps.style\n }\n }\n )\n }\n )\n }\n );\n});\nSelectItemAlignedPosition.displayName = ITEM_ALIGNED_POSITION_NAME;\nvar POPPER_POSITION_NAME = \"SelectPopperPosition\";\nvar SelectPopperPosition = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeSelect,\n align = \"start\",\n collisionPadding = CONTENT_MARGIN,\n ...popperProps\n } = props;\n const popperScope = usePopperScope(__scopeSelect);\n return /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...popperProps,\n ref: forwardedRef,\n align,\n collisionPadding,\n style: {\n // Ensure border-box for floating-ui calculations\n boxSizing: \"border-box\",\n ...popperProps.style,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-select-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-select-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-select-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-select-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-select-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n );\n});\nSelectPopperPosition.displayName = POPPER_POSITION_NAME;\nvar [SelectViewportProvider, useSelectViewportContext] = createSelectContext(CONTENT_NAME, {});\nvar VIEWPORT_NAME = \"SelectViewport\";\nvar SelectViewport = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, nonce, ...viewportProps } = props;\n const contentContext = useSelectContentContext(VIEWPORT_NAME, __scopeSelect);\n const viewportContext = useSelectViewportContext(VIEWPORT_NAME, __scopeSelect);\n const composedRefs = useComposedRefs(forwardedRef, contentContext.onViewportChange);\n const prevScrollTopRef = React.useRef(0);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(\n \"style\",\n {\n dangerouslySetInnerHTML: {\n __html: `[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`\n },\n nonce\n }\n ),\n /* @__PURE__ */ jsx(Collection.Slot, { scope: __scopeSelect, children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-radix-select-viewport\": \"\",\n role: \"presentation\",\n ...viewportProps,\n ref: composedRefs,\n style: {\n // we use position: 'relative' here on the `viewport` so that when we call\n // `selectedItem.offsetTop` in calculations, the offset is relative to the viewport\n // (independent of the scrollUpButton).\n position: \"relative\",\n flex: 1,\n // Viewport should only be scrollable in the vertical direction.\n // This won't work in vertical writing modes, so we'll need to\n // revisit this if/when that is supported\n // https://developer.chrome.com/blog/vertical-form-controls\n overflow: \"hidden auto\",\n ...viewportProps.style\n },\n onScroll: composeEventHandlers(viewportProps.onScroll, (event) => {\n const viewport = event.currentTarget;\n const { contentWrapper, shouldExpandOnScrollRef } = viewportContext;\n if (shouldExpandOnScrollRef?.current && contentWrapper) {\n const scrolledBy = Math.abs(prevScrollTopRef.current - viewport.scrollTop);\n if (scrolledBy > 0) {\n const availableHeight = window.innerHeight - CONTENT_MARGIN * 2;\n const cssMinHeight = parseFloat(contentWrapper.style.minHeight);\n const cssHeight = parseFloat(contentWrapper.style.height);\n const prevHeight = Math.max(cssMinHeight, cssHeight);\n if (prevHeight < availableHeight) {\n const nextHeight = prevHeight + scrolledBy;\n const clampedNextHeight = Math.min(availableHeight, nextHeight);\n const heightDiff = nextHeight - clampedNextHeight;\n contentWrapper.style.height = clampedNextHeight + \"px\";\n if (contentWrapper.style.bottom === \"0px\") {\n viewport.scrollTop = heightDiff > 0 ? heightDiff : 0;\n contentWrapper.style.justifyContent = \"flex-end\";\n }\n }\n }\n }\n prevScrollTopRef.current = viewport.scrollTop;\n })\n }\n ) })\n ] });\n }\n);\nSelectViewport.displayName = VIEWPORT_NAME;\nvar GROUP_NAME = \"SelectGroup\";\nvar [SelectGroupContextProvider, useSelectGroupContext] = createSelectContext(GROUP_NAME);\nvar SelectGroup = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...groupProps } = props;\n const groupId = useId();\n return /* @__PURE__ */ jsx(SelectGroupContextProvider, { scope: __scopeSelect, id: groupId, children: /* @__PURE__ */ jsx(Primitive.div, { role: \"group\", \"aria-labelledby\": groupId, ...groupProps, ref: forwardedRef }) });\n }\n);\nSelectGroup.displayName = GROUP_NAME;\nvar LABEL_NAME = \"SelectLabel\";\nvar SelectLabel = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...labelProps } = props;\n const groupContext = useSelectGroupContext(LABEL_NAME, __scopeSelect);\n return /* @__PURE__ */ jsx(Primitive.div, { id: groupContext.id, ...labelProps, ref: forwardedRef });\n }\n);\nSelectLabel.displayName = LABEL_NAME;\nvar ITEM_NAME = \"SelectItem\";\nvar [SelectItemContextProvider, useSelectItemContext] = createSelectContext(ITEM_NAME);\nvar SelectItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSelect,\n value,\n disabled = false,\n textValue: textValueProp,\n ...itemProps\n } = props;\n const context = useSelectContext(ITEM_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_NAME, __scopeSelect);\n const isSelected = context.value === value;\n const [textValue, setTextValue] = React.useState(textValueProp ?? \"\");\n const [isFocused, setIsFocused] = React.useState(false);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => contentContext.itemRefCallback?.(node, value, disabled)\n );\n const textId = useId();\n const pointerTypeRef = React.useRef(\"touch\");\n const handleSelect = () => {\n if (!disabled) {\n context.onValueChange(value);\n context.onOpenChange(false);\n }\n };\n if (value === \"\") {\n throw new Error(\n \"A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.\"\n );\n }\n return /* @__PURE__ */ jsx(\n SelectItemContextProvider,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textId,\n isSelected,\n onItemTextChange: React.useCallback((node) => {\n setTextValue((prevTextValue) => prevTextValue || (node?.textContent ?? \"\").trim());\n }, []),\n children: /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeSelect,\n value,\n disabled,\n textValue,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"option\",\n \"aria-labelledby\": textId,\n \"data-highlighted\": isFocused ? \"\" : void 0,\n \"aria-selected\": isSelected && isFocused,\n \"data-state\": isSelected ? \"checked\" : \"unchecked\",\n \"aria-disabled\": disabled || void 0,\n \"data-disabled\": disabled ? \"\" : void 0,\n tabIndex: disabled ? void 0 : -1,\n ...itemProps,\n ref: composedRefs,\n onFocus: composeEventHandlers(itemProps.onFocus, () => setIsFocused(true)),\n onBlur: composeEventHandlers(itemProps.onBlur, () => setIsFocused(false)),\n onClick: composeEventHandlers(itemProps.onClick, () => {\n if (pointerTypeRef.current !== \"mouse\") handleSelect();\n }),\n onPointerUp: composeEventHandlers(itemProps.onPointerUp, () => {\n if (pointerTypeRef.current === \"mouse\") handleSelect();\n }),\n onPointerDown: composeEventHandlers(itemProps.onPointerDown, (event) => {\n pointerTypeRef.current = event.pointerType;\n }),\n onPointerMove: composeEventHandlers(itemProps.onPointerMove, (event) => {\n pointerTypeRef.current = event.pointerType;\n if (disabled) {\n contentContext.onItemLeave?.();\n } else if (pointerTypeRef.current === \"mouse\") {\n event.currentTarget.focus({ preventScroll: true });\n }\n }),\n onPointerLeave: composeEventHandlers(itemProps.onPointerLeave, (event) => {\n if (event.currentTarget === document.activeElement) {\n contentContext.onItemLeave?.();\n }\n }),\n onKeyDown: composeEventHandlers(itemProps.onKeyDown, (event) => {\n const isTypingAhead = contentContext.searchRef?.current !== \"\";\n if (isTypingAhead && event.key === \" \") return;\n if (SELECTION_KEYS.includes(event.key)) handleSelect();\n if (event.key === \" \") event.preventDefault();\n })\n }\n )\n }\n )\n }\n );\n }\n);\nSelectItem.displayName = ITEM_NAME;\nvar ITEM_TEXT_NAME = \"SelectItemText\";\nvar SelectItemText = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, className, style, ...itemTextProps } = props;\n const context = useSelectContext(ITEM_TEXT_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ITEM_TEXT_NAME, __scopeSelect);\n const itemContext = useSelectItemContext(ITEM_TEXT_NAME, __scopeSelect);\n const nativeOptionsContext = useSelectNativeOptionsContext(ITEM_TEXT_NAME, __scopeSelect);\n const [itemTextNode, setItemTextNode] = React.useState(null);\n const composedRefs = useComposedRefs(\n forwardedRef,\n (node) => setItemTextNode(node),\n itemContext.onItemTextChange,\n (node) => contentContext.itemTextRefCallback?.(node, itemContext.value, itemContext.disabled)\n );\n const textContent = itemTextNode?.textContent;\n const nativeOption = React.useMemo(\n () => /* @__PURE__ */ jsx(\"option\", { value: itemContext.value, disabled: itemContext.disabled, children: textContent }, itemContext.value),\n [itemContext.disabled, itemContext.value, textContent]\n );\n const { onNativeOptionAdd, onNativeOptionRemove } = nativeOptionsContext;\n useLayoutEffect(() => {\n onNativeOptionAdd(nativeOption);\n return () => onNativeOptionRemove(nativeOption);\n }, [onNativeOptionAdd, onNativeOptionRemove, nativeOption]);\n return /* @__PURE__ */ jsxs(Fragment, { children: [\n /* @__PURE__ */ jsx(Primitive.span, { id: itemContext.textId, ...itemTextProps, ref: composedRefs }),\n itemContext.isSelected && context.valueNode && !context.valueNodeHasChildren ? ReactDOM.createPortal(itemTextProps.children, context.valueNode) : null\n ] });\n }\n);\nSelectItemText.displayName = ITEM_TEXT_NAME;\nvar ITEM_INDICATOR_NAME = \"SelectItemIndicator\";\nvar SelectItemIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...itemIndicatorProps } = props;\n const itemContext = useSelectItemContext(ITEM_INDICATOR_NAME, __scopeSelect);\n return itemContext.isSelected ? /* @__PURE__ */ jsx(Primitive.span, { \"aria-hidden\": true, ...itemIndicatorProps, ref: forwardedRef }) : null;\n }\n);\nSelectItemIndicator.displayName = ITEM_INDICATOR_NAME;\nvar SCROLL_UP_BUTTON_NAME = \"SelectScrollUpButton\";\nvar SelectScrollUpButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_UP_BUTTON_NAME, props.__scopeSelect);\n const [canScrollUp, setCanScrollUp] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const canScrollUp2 = viewport.scrollTop > 0;\n setCanScrollUp(canScrollUp2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollUp ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop - selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollUpButton.displayName = SCROLL_UP_BUTTON_NAME;\nvar SCROLL_DOWN_BUTTON_NAME = \"SelectScrollDownButton\";\nvar SelectScrollDownButton = React.forwardRef((props, forwardedRef) => {\n const contentContext = useSelectContentContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const viewportContext = useSelectViewportContext(SCROLL_DOWN_BUTTON_NAME, props.__scopeSelect);\n const [canScrollDown, setCanScrollDown] = React.useState(false);\n const composedRefs = useComposedRefs(forwardedRef, viewportContext.onScrollButtonChange);\n useLayoutEffect(() => {\n if (contentContext.viewport && contentContext.isPositioned) {\n let handleScroll2 = function() {\n const maxScroll = viewport.scrollHeight - viewport.clientHeight;\n const canScrollDown2 = Math.ceil(viewport.scrollTop) < maxScroll;\n setCanScrollDown(canScrollDown2);\n };\n var handleScroll = handleScroll2;\n const viewport = contentContext.viewport;\n handleScroll2();\n viewport.addEventListener(\"scroll\", handleScroll2);\n return () => viewport.removeEventListener(\"scroll\", handleScroll2);\n }\n }, [contentContext.viewport, contentContext.isPositioned]);\n return canScrollDown ? /* @__PURE__ */ jsx(\n SelectScrollButtonImpl,\n {\n ...props,\n ref: composedRefs,\n onAutoScroll: () => {\n const { viewport, selectedItem } = contentContext;\n if (viewport && selectedItem) {\n viewport.scrollTop = viewport.scrollTop + selectedItem.offsetHeight;\n }\n }\n }\n ) : null;\n});\nSelectScrollDownButton.displayName = SCROLL_DOWN_BUTTON_NAME;\nvar SelectScrollButtonImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeSelect, onAutoScroll, ...scrollIndicatorProps } = props;\n const contentContext = useSelectContentContext(\"SelectScrollButton\", __scopeSelect);\n const autoScrollTimerRef = React.useRef(null);\n const getItems = useCollection(__scopeSelect);\n const clearAutoScrollTimer = React.useCallback(() => {\n if (autoScrollTimerRef.current !== null) {\n window.clearInterval(autoScrollTimerRef.current);\n autoScrollTimerRef.current = null;\n }\n }, []);\n React.useEffect(() => {\n return () => clearAutoScrollTimer();\n }, [clearAutoScrollTimer]);\n useLayoutEffect(() => {\n const activeItem = getItems().find((item) => item.ref.current === document.activeElement);\n activeItem?.ref.current?.scrollIntoView({ block: \"nearest\" });\n }, [getItems]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"aria-hidden\": true,\n ...scrollIndicatorProps,\n ref: forwardedRef,\n style: { flexShrink: 0, ...scrollIndicatorProps.style },\n onPointerDown: composeEventHandlers(scrollIndicatorProps.onPointerDown, () => {\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerMove: composeEventHandlers(scrollIndicatorProps.onPointerMove, () => {\n contentContext.onItemLeave?.();\n if (autoScrollTimerRef.current === null) {\n autoScrollTimerRef.current = window.setInterval(onAutoScroll, 50);\n }\n }),\n onPointerLeave: composeEventHandlers(scrollIndicatorProps.onPointerLeave, () => {\n clearAutoScrollTimer();\n })\n }\n );\n});\nvar SEPARATOR_NAME = \"SelectSeparator\";\nvar SelectSeparator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...separatorProps } = props;\n return /* @__PURE__ */ jsx(Primitive.div, { \"aria-hidden\": true, ...separatorProps, ref: forwardedRef });\n }\n);\nSelectSeparator.displayName = SEPARATOR_NAME;\nvar ARROW_NAME = \"SelectArrow\";\nvar SelectArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSelect, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeSelect);\n const context = useSelectContext(ARROW_NAME, __scopeSelect);\n const contentContext = useSelectContentContext(ARROW_NAME, __scopeSelect);\n return context.open && contentContext.position === \"popper\" ? /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef }) : null;\n }\n);\nSelectArrow.displayName = ARROW_NAME;\nfunction shouldShowPlaceholder(value) {\n return value === \"\" || value === void 0;\n}\nvar BubbleSelect = React.forwardRef(\n (props, forwardedRef) => {\n const { value, ...selectProps } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const prevValue = usePrevious(value);\n React.useEffect(() => {\n const select = ref.current;\n const selectProto = window.HTMLSelectElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n selectProto,\n \"value\"\n );\n const setValue = descriptor.set;\n if (prevValue !== value && setValue) {\n const event = new Event(\"change\", { bubbles: true });\n setValue.call(select, value);\n select.dispatchEvent(event);\n }\n }, [prevValue, value]);\n return /* @__PURE__ */ jsx(VisuallyHidden, { asChild: true, children: /* @__PURE__ */ jsx(\"select\", { ...selectProps, ref: composedRefs, defaultValue: value }) });\n }\n);\nBubbleSelect.displayName = \"BubbleSelect\";\nfunction useTypeaheadSearch(onSearchChange) {\n const handleSearchChange = useCallbackRef(onSearchChange);\n const searchRef = React.useRef(\"\");\n const timerRef = React.useRef(0);\n const handleTypeaheadSearch = React.useCallback(\n (key) => {\n const search = searchRef.current + key;\n handleSearchChange(search);\n (function updateSearch(value) {\n searchRef.current = value;\n window.clearTimeout(timerRef.current);\n if (value !== \"\") timerRef.current = window.setTimeout(() => updateSearch(\"\"), 1e3);\n })(search);\n },\n [handleSearchChange]\n );\n const resetTypeahead = React.useCallback(() => {\n searchRef.current = \"\";\n window.clearTimeout(timerRef.current);\n }, []);\n React.useEffect(() => {\n return () => window.clearTimeout(timerRef.current);\n }, []);\n return [searchRef, handleTypeaheadSearch, resetTypeahead];\n}\nfunction findNextItem(items, search, currentItem) {\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const normalizedSearch = isRepeated ? search[0] : search;\n const currentItemIndex = currentItem ? items.indexOf(currentItem) : -1;\n let wrappedItems = wrapArray(items, Math.max(currentItemIndex, 0));\n const excludeCurrentItem = normalizedSearch.length === 1;\n if (excludeCurrentItem) wrappedItems = wrappedItems.filter((v) => v !== currentItem);\n const nextItem = wrappedItems.find(\n (item) => item.textValue.toLowerCase().startsWith(normalizedSearch.toLowerCase())\n );\n return nextItem !== currentItem ? nextItem : void 0;\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root2 = Select;\nvar Trigger = SelectTrigger;\nvar Value = SelectValue;\nvar Icon = SelectIcon;\nvar Portal = SelectPortal;\nvar Content2 = SelectContent;\nvar Viewport = SelectViewport;\nvar Group = SelectGroup;\nvar Label = SelectLabel;\nvar Item = SelectItem;\nvar ItemText = SelectItemText;\nvar ItemIndicator = SelectItemIndicator;\nvar ScrollUpButton = SelectScrollUpButton;\nvar ScrollDownButton = SelectScrollDownButton;\nvar Separator = SelectSeparator;\nvar Arrow2 = SelectArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n Group,\n Icon,\n Item,\n ItemIndicator,\n ItemText,\n Label,\n Portal,\n Root2 as Root,\n ScrollDownButton,\n ScrollUpButton,\n Select,\n SelectArrow,\n SelectContent,\n SelectGroup,\n SelectIcon,\n SelectItem,\n SelectItemIndicator,\n SelectItemText,\n SelectLabel,\n SelectPortal,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n SelectViewport,\n Separator,\n Trigger,\n Value,\n Viewport,\n createSelectScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client'\n\nimport * as React from 'react'\nimport * as SelectPrimitive from '@radix-ui/react-select'\nimport { Check, ChevronDown, ChevronUp } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n 'border-input ring-offset-background placeholder:text-muted-foreground focus:ring-ring flex h-full w-full items-center justify-between rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap normal-case shadow-sm focus:ring-1 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1',\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n 'flex cursor-default items-center justify-center py-1',\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = 'popper', ...props }, ref) => (\n <SelectPrimitive.Portal>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n 'bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md',\n position === 'popper' &&\n 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n 'p-1',\n position === 'popper' &&\n 'h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]'\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn('px-2 py-1.5 text-sm font-semibold', className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n 'focus:bg-accent focus:text-accent-foreground relative flex w-full cursor-default items-center rounded-sm py-1.5 pr-8 pl-2 text-sm outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n className\n )}\n {...props}\n >\n <span className=\"absolute right-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn('bg-muted -mx-1 my-1 h-px', className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","import React, { useState, useRef, useEffect } from 'react'\nimport { motion, AnimatePresence } from 'motion/react'\nimport { ResponsiveValue, Size } from '@/types'\nimport { UserAvatar, UserAvatarProps } from '@/components/UserAvatar'\nimport {\n userAvatarSizeMap,\n userAvatarSizeMapper,\n} from '@/components/UserAvatar/sizeMap'\nimport { cn, getResponsiveClasses } from '@/lib/utils'\nimport useTailwindBreakpoint from '@/hooks/useTailwindBreakpoint'\nimport { resolveSizeForBreakpoint } from '@/lib/responsiveUtils'\n\ntype FacepileVariant = 'interactive' | 'static'\ntype AvatarProps = Omit<UserAvatarProps, 'size'> & { href?: string }\n\nexport interface FacepileProps {\n avatars: AvatarProps[]\n maxFaces?: number\n avatarSize?: ResponsiveValue<Size>\n variant?: FacepileVariant\n tooltips?: boolean\n className?: string\n}\n\nexport function Facepile({\n avatars = [],\n maxFaces = 3,\n avatarSize = 'medium',\n variant = 'interactive',\n tooltips = true,\n className,\n}: FacepileProps) {\n const [hoveredIndex, setHoveredIndex] = useState<number | null>(null)\n const [prevHoveredIndex, setPrevHoveredIndex] = useState<number | null>(null)\n const [tooltipVisible, setTooltipVisible] = useState(false)\n const [isExpanded, setIsExpanded] = useState(false)\n const isHovered = useRef(false)\n\n const breakpoint = useTailwindBreakpoint()\n const resolvedSize = resolveSizeForBreakpoint(\n breakpoint,\n avatarSize,\n 'medium'\n )\n\n const overlap = 0.6\n const size = userAvatarSizeMap[resolvedSize] * 4 // *4 as avatarSizeMap is a record of tailwind sizes - possibly a better way to do this\n const offsetX = size * overlap // How much each avatar overlaps\n\n const visibleFaces = avatars.slice(0, maxFaces)\n const hiddenFaces = avatars.slice(maxFaces)\n const extraFaces = Math.max(0, avatars.length - maxFaces)\n\n const containerRef = useRef<HTMLDivElement>(null)\n const tooltipRef = useRef<HTMLDivElement>(null)\n const [tooltipWidth, setTooltipWidth] = useState(0)\n\n useEffect(() => {\n if (tooltipRef.current) {\n const updateTooltipWidth = () => {\n if (tooltipRef.current?.offsetWidth) {\n setTooltipWidth(tooltipRef.current!.offsetWidth)\n }\n }\n updateTooltipWidth()\n const resizeObserver = new ResizeObserver(updateTooltipWidth)\n resizeObserver.observe(tooltipRef.current)\n return () => resizeObserver.disconnect()\n }\n }, [hoveredIndex, visibleFaces])\n\n useEffect(() => {\n if (hoveredIndex !== null) {\n setTooltipVisible(true)\n setPrevHoveredIndex(hoveredIndex)\n } else {\n setTooltipVisible(false)\n }\n }, [hoveredIndex])\n\n const getTooltipPosition = (index: number, tooltipWidth: number) => {\n const avatarCenter = index * offsetX + size / 2\n return avatarCenter - tooltipWidth / 2\n }\n\n const handleContainerMouseLeave = () => {\n setHoveredIndex(null)\n setIsExpanded(false)\n isHovered.current = false\n }\n\n const handleContainerMouseEnter = () => {\n isHovered.current = true\n }\n\n const handleMouseEnter = (index: number) => {\n setHoveredIndex(index)\n if (index < maxFaces) {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n }\n }\n\n const handleHoverExpand = () => {\n if (variant === 'interactive') {\n setTimeout(() => {\n if (isHovered.current) {\n setIsExpanded(true)\n }\n }, 400)\n }\n }\n\n const containerWidth = isExpanded\n ? avatars.length * offsetX + size - offsetX\n : visibleFaces.length * offsetX +\n size -\n offsetX +\n (extraFaces > 0 ? offsetX : 0)\n\n const getTooltipAnimation = (index: number | null) => {\n if (prevHoveredIndex === null || index === null) return {}\n const direction = index > prevHoveredIndex ? 1 : -1\n return {\n initial: { opacity: 0, x: -15 * direction },\n animate: { opacity: 1, x: 0 },\n exit: { opacity: 0, x: 20 * direction },\n transition: { duration: 0.2 },\n }\n }\n\n return (\n <motion.div\n ref={containerRef}\n className={cn('relative', className)}\n style={{ height: size }}\n animate={{ width: containerWidth }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n onMouseEnter={handleContainerMouseEnter}\n onMouseLeave={handleContainerMouseLeave}\n >\n {visibleFaces.map((face, index) => (\n <AvatarWrapper\n key={face.name}\n avatar={face}\n avatarSize={avatarSize}\n index={index}\n size={size}\n offsetX={offsetX}\n hoveredIndex={variant === 'interactive' ? hoveredIndex : null}\n handleMouseEnter={handleMouseEnter}\n totalFaces={visibleFaces.length}\n isExpanded={isExpanded}\n maxFaces={maxFaces}\n interactive={variant === 'static' ? false : true}\n />\n ))}\n\n {variant === 'interactive' && (\n <AnimatePresence>\n {isExpanded &&\n hiddenFaces.map((face, index) => (\n <AvatarWrapper\n key={face.name}\n avatar={face}\n avatarSize={avatarSize}\n index={index + maxFaces}\n size={size}\n offsetX={offsetX}\n hoveredIndex={hoveredIndex}\n handleMouseEnter={handleMouseEnter}\n totalFaces={avatars.length}\n isExpanded={isExpanded}\n maxFaces={maxFaces}\n interactive={true}\n initial={{ opacity: 0, scale: 0.5, x: -size / 2 }}\n animate={{ opacity: 1, scale: 1, x: 0 }}\n exit={{ opacity: 0, scale: 0.5, x: -size / 2 }}\n transition={{ duration: 0.3, ease: 'easeInOut' }}\n />\n ))}\n </AnimatePresence>\n )}\n\n <AnimatePresence>\n {tooltips && tooltipVisible && hoveredIndex !== null && (\n <motion.div\n ref={tooltipRef}\n layout\n initial={{ opacity: 0 }}\n animate={{\n opacity: 1,\n x: getTooltipPosition(hoveredIndex ?? 0, tooltipWidth),\n }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.15, ease: 'easeOut' }}\n className={`pointer-events-none absolute left-0 z-10 flex h-5 items-center justify-center rounded-full bg-black px-2 text-xs font-medium whitespace-nowrap text-white`}\n style={{\n top: size + 4,\n }}\n >\n <AnimatePresence mode=\"wait\">\n <motion.span\n key={avatars[hoveredIndex].name}\n {...getTooltipAnimation(hoveredIndex)}\n >\n {avatars[hoveredIndex].name}\n </motion.span>\n </AnimatePresence>\n </motion.div>\n )}\n </AnimatePresence>\n\n {extraFaces > 0 && !isExpanded && (\n <motion.div\n className=\"absolute z-0\"\n style={{\n left: visibleFaces.length * offsetX,\n }}\n onMouseEnter={handleHoverExpand}\n whileHover={{ scale: variant === 'interactive' ? 1.1 : 1 }}\n >\n <div\n className={cn(\n 'border-background ml-1.5 flex items-center justify-center rounded-full border-2 bg-gray-200 text-sm font-medium text-gray-600',\n getResponsiveClasses(avatarSize, userAvatarSizeMapper)\n )}\n >\n +{extraFaces}\n </div>\n </motion.div>\n )}\n </motion.div>\n )\n}\n\nfunction AvatarWrapper({\n avatar,\n avatarSize,\n index,\n size,\n offsetX,\n hoveredIndex,\n handleMouseEnter,\n totalFaces,\n isExpanded,\n maxFaces,\n interactive,\n ...motionProps\n}: {\n avatar: AvatarProps\n avatarSize?: ResponsiveValue<Size>\n index: number\n size: number\n offsetX: number\n hoveredIndex: number | null\n handleMouseEnter: (index: number) => void\n totalFaces: number\n isExpanded: boolean\n maxFaces: number\n interactive: boolean\n} & React.ComponentProps<typeof motion.div>) {\n return (\n <motion.div\n className=\"absolute\"\n style={{\n left: index * offsetX,\n zIndex:\n interactive && hoveredIndex === index\n ? totalFaces + 1\n : isExpanded\n ? totalFaces - index\n : index < maxFaces\n ? maxFaces - index\n : 0,\n }}\n whileHover={{ scale: interactive ? 1.1 : 1 }}\n animate={{\n x:\n hoveredIndex === null || !interactive\n ? 0\n : hoveredIndex === index\n ? 0\n : hoveredIndex < index\n ? size * 0.2\n : -size * 0.2,\n }}\n transition={{ type: 'spring', stiffness: 300, damping: 20 }}\n onMouseEnter={() => handleMouseEnter(index)}\n {...motionProps}\n >\n {avatar.href ? (\n <a href={avatar.href}>\n <UserAvatar\n name={avatar.name}\n imageUrl={avatar.imageUrl}\n size={avatarSize}\n border\n />\n </a>\n ) : (\n <UserAvatar\n name={avatar.name}\n imageUrl={avatar.imageUrl}\n size={avatarSize}\n border\n />\n )}\n </motion.div>\n )\n}\n","\"use client\";\n\n// packages/react/switch/src/switch.tsx\nimport * 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 { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar SWITCH_NAME = \"Switch\";\nvar [createSwitchContext, createSwitchScope] = createContextScope(SWITCH_NAME);\nvar [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);\nvar Switch = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeSwitch,\n name,\n checked: checkedProp,\n defaultChecked,\n required,\n disabled,\n value = \"on\",\n onCheckedChange,\n form,\n ...switchProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n const [checked = false, setChecked] = useControllableState({\n prop: checkedProp,\n defaultProp: defaultChecked,\n onChange: onCheckedChange\n });\n return /* @__PURE__ */ jsxs(SwitchProvider, { scope: __scopeSwitch, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"switch\",\n \"aria-checked\": checked,\n \"aria-required\": required,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...switchProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n setChecked((prevChecked) => !prevChecked);\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n BubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nSwitch.displayName = SWITCH_NAME;\nvar THUMB_NAME = \"SwitchThumb\";\nvar SwitchThumb = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeSwitch, ...thumbProps } = props;\n const context = useSwitchContext(THUMB_NAME, __scopeSwitch);\n return /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...thumbProps,\n ref: forwardedRef\n }\n );\n }\n);\nSwitchThumb.displayName = THUMB_NAME;\nvar BubbleInput = (props) => {\n const { control, checked, bubbles = true, ...inputProps } = props;\n const ref = React.useRef(null);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(inputProto, \"checked\");\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 return /* @__PURE__ */ jsx(\n \"input\",\n {\n type: \"checkbox\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...inputProps,\n tabIndex: -1,\n ref,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n};\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\nvar Root = Switch;\nvar Thumb = SwitchThumb;\nexport {\n Root,\n Switch,\n SwitchThumb,\n Thumb,\n createSwitchScope\n};\n//# sourceMappingURL=index.mjs.map\n","'use client'\n\nimport * as React from 'react'\nimport * as SwitchPrimitives from '@radix-ui/react-switch'\n\nimport { cn } from '@/lib/utils'\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'focus-visible:ring-ring focus-visible:ring-offset-background peer data-[state=unchecked]:bg-surface-tertiary-default inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-emerald-700',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'data-[state=unchecked]:bg-surface-tertiary-inverse pointer-events-none block h-5 w-5 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=checked]:bg-white data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch, type SwitchPrimitives as SwitchProps }\n","import { cn } from '@/lib/utils'\nimport { motion, MotionProps } from 'motion/react'\nimport React, { useMemo } from 'react'\nimport styles from './index.module.css'\n\nexport interface SegmentedButtonProps {\n children: React.ReactNode\n className?: string\n}\n\nconst SegmentedButtonBase = ({ children, className }: SegmentedButtonProps) => {\n const [hoveredId, setHoveredId] = React.useState<string | null>(null)\n\n const enhancedChildren = useMemo(\n () =>\n React.Children.map(children, (child) => {\n if (!React.isValidElement<SegmentedButtonItemProps>(child)) return child\n const childId: string | undefined = child.props.id\n\n const onClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n setHoveredId(childId ?? null)\n child.props.onClick?.(e)\n }\n\n const highlighted = hoveredId\n ? childId === hoveredId\n : child.props.active\n\n return React.cloneElement(\n child as React.ReactElement<SegmentedButtonItemProps>,\n {\n highlighted,\n onClick,\n }\n )\n }),\n [children]\n )\n\n return (\n <div\n className={cn(\n 'border-neutral-softest relative inline-flex flex-row items-center overflow-hidden rounded-full border shadow-xs backdrop-blur-md',\n className\n )}\n >\n {enhancedChildren}\n </div>\n )\n}\n\nSegmentedButtonBase.displayName = 'SegmentedButton'\n\nexport interface SegmentedButtonItemProps extends MotionProps {\n children: React.ReactNode\n className?: string\n active?: boolean\n highlighted?: boolean\n id: string\n onClick?: React.MouseEventHandler<HTMLButtonElement>\n}\n\nconst SegmentedButtonItem = ({\n children,\n className,\n highlighted,\n ...props\n}: SegmentedButtonItemProps) => {\n return (\n <motion.button\n className=\"text-codeline-xs hover:text-highlight relative flex items-center rounded-full px-5 py-1 uppercase\"\n {...props}\n >\n {highlighted && (\n <motion.span\n layoutId=\"segmented-highlight\"\n className={cn(\n 'absolute inset-0 -z-10 rounded-full shadow-sm',\n styles.active\n )}\n transition={{ type: 'spring', duration: 0.7, bounce: 0.3 }}\n />\n )}\n <span\n className={cn(\n 'relative z-10',\n highlighted && 'text-highlight',\n className\n )}\n >\n {children}\n </span>\n </motion.button>\n )\n}\n\nSegmentedButtonItem.displayName = 'SegmentedButtonItem'\n\nexport const SegmentedButton = Object.assign(SegmentedButtonBase, {\n Item: SegmentedButtonItem,\n})\n","import { createContext } from 'react'\n\nexport interface KeybindConfig {\n /**\n * The keybind to trigger the action\n * Will be CMDOrCTRL + key\n */\n key: string\n description: string\n}\n\nexport interface AppLayoutContextType {\n collapsed: boolean\n setCollapsed: (collapsed: boolean) => void\n\n // keybind config\n keybinds: {\n toggle: KeybindConfig\n }\n}\n\nexport const AppLayoutContext = createContext<AppLayoutContextType>({\n collapsed: false,\n setCollapsed: () => {},\n keybinds: {\n toggle: {\n key: 'L',\n description: 'Toggle',\n },\n },\n})\n","import { useContext } from 'react'\nimport { AppLayoutContext } from '@/components/AppLayout/context'\n\nexport const useAppLayout = () => {\n const context = useContext(AppLayoutContext)\n if (!context) {\n throw new Error('useAppLayout must be used within an AppLayoutProvider')\n }\n return context\n}\n","import { cn } from '@/lib/utils'\nimport { Icon } from '@/components/Icon'\n\ntype Modifier = 'shift' | 'ctrlorcommand' | 'alt' | 'meta' | 'esc'\n\nfunction checkIsMac(): boolean {\n if (typeof window === 'undefined') {\n return false\n }\n return /Mac|iPod|iPhone|iPad/.test(window.navigator.platform)\n}\n\nconst modifierMap: Record<Modifier, string> = {\n shift: '⇧',\n ctrlorcommand: checkIsMac() ? '⌘' : 'Ctrl',\n alt: checkIsMac() ? '⌥' : 'Alt',\n meta: checkIsMac() ? '⌘' : 'Win',\n esc: 'Esc',\n}\n\nexport interface KeyProps {\n value: string\n className?: string\n}\n\nexport function Key({ value, className }: KeyProps) {\n return (\n <span\n className={cn(\n 'from-background to-card text-foreground/70 dark:text-foreground rounded-lg border bg-gradient-to-br px-2 py-0.5 text-sm',\n className\n )}\n >\n {value}\n </span>\n )\n}\n\ninterface KeyHintItemProps {\n modifiers: Modifier[]\n keys: string[]\n actionText?: string\n}\n\nfunction KeyHintKeys({ modifiers, keys }: KeyHintItemProps) {\n return (\n <div className=\"flex flex-row items-center gap-1\">\n {modifiers.map((modifier, index) => (\n <>\n <Key value={modifierMap[modifier]} />\n {index < modifiers.length - 1 && (\n <span className=\"text-body-muted text-sm\">+</span>\n )}\n </>\n ))}\n {keys.length > 0 && <span className=\"text-body-muted text-sm\">+</span>}\n {keys.map((key, index) => (\n <>\n <Key value={key.toUpperCase()} />\n {index < keys.length - 1 && (\n <span className=\"text-body-muted text-sm\">+</span>\n )}\n </>\n ))}\n </div>\n )\n}\n\nexport interface KeyHintProps extends React.HTMLAttributes<HTMLDivElement> {\n modifiers: Modifier[]\n keys: string[]\n actionText: string\n titleText?: string\n dismissable?: boolean\n onDismiss?: () => void\n}\n\nexport function KeyHint({\n modifiers,\n keys,\n actionText,\n className,\n dismissable = true,\n onDismiss,\n titleText = 'Key hint',\n ...props\n}: KeyHintProps) {\n return (\n <div\n className={cn(\n 'inline-flex min-w-24 flex-col items-start gap-1 rounded-lg border text-base font-semibold tracking-tight text-black shadow-sm shadow-black/5 select-none dark:text-white dark:shadow-white/10',\n className\n )}\n {...props}\n >\n <div className=\"text-body-muted dark:text-body-muted/80 flex w-full flex-row items-center self-start border-b px-2.5 py-0.5 text-[10px] font-semibold tracking-wide uppercase select-none\">\n <div>{titleText}</div>\n {dismissable && (\n <div\n className=\"hover:text-foreground ml-auto cursor-pointer\"\n onClick={onDismiss}\n title=\"Close\"\n >\n <Icon name=\"x\" className=\"h-3.5 w-3.5\" />\n </div>\n )}\n </div>\n <div className=\"flex flex-row items-center gap-1 px-4 py-3.5\">\n <KeyHintKeys modifiers={modifiers} keys={keys} />\n {actionText && (\n <div className=\"text-body-muted text-sm font-normal\">\n {actionText}\n </div>\n )}\n </div>\n </div>\n )\n}\n","import { useAppLayout } from '@/hooks/useAppLayout'\nimport { useCallback, useEffect } from 'react'\n\nexport function useAppLayoutKeys() {\n const { keybinds, collapsed, setCollapsed } = useAppLayout()\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (\n (event.metaKey || event.ctrlKey) &&\n event.key.toLowerCase() === keybinds.toggle.key.toLowerCase()\n ) {\n event.preventDefault()\n setCollapsed(!collapsed)\n }\n },\n [keybinds, collapsed, setCollapsed]\n )\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown)\n return () => {\n document.removeEventListener('keydown', handleKeyDown)\n }\n }, [handleKeyDown])\n}\n","import { useEffect, useState } from 'react'\n\nexport const useIsMounted = () => {\n const [isMounted, setIsMounted] = useState(false)\n\n useEffect(() => {\n setIsMounted(true)\n\n return () => setIsMounted(false)\n }, [])\n\n return isMounted\n}\n","'use client'\n\nimport { ReactNode, useId, useMemo } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Moon, Sun } from 'lucide-react'\nimport { useIsMounted } from '@/hooks/useIsMounted'\nimport { useConfig } from '@/hooks/useConfig'\nimport { Theme } from '@/context/theme'\nimport { motion } from 'motion/react'\n\nconst THEMES: { key: Theme; icon: ReactNode }[] = [\n { key: 'light', icon: <Sun /> },\n { key: 'dark', icon: <Moon /> },\n]\n\nexport interface ThemeSwitcherProps {\n onThemeSwitch?: (theme: string) => void\n className?: string\n orientation?: 'horizontal' | 'vertical'\n}\n\nexport function ThemeSwitcher({\n className,\n onThemeSwitch,\n orientation = 'horizontal',\n}: ThemeSwitcherProps) {\n const isMounted = useIsMounted()\n const { theme, setTheme } = useConfig()\n const rId = useId()\n\n const posX = useMemo(() => {\n const themeIndex = THEMES.findIndex((opt) => opt.key === theme)\n return 100 * themeIndex\n }, [theme])\n\n const isVertical = orientation === 'vertical'\n const knobSizeRem = 2.125\n const placeholderStyle = isVertical\n ? {\n width: `${knobSizeRem}rem`,\n height: `calc(${knobSizeRem}rem * ${THEMES.length} + 2px)`,\n }\n : {\n width: `calc(${knobSizeRem}rem * ${THEMES.length} + 2px)`,\n height: `${knobSizeRem}rem`,\n }\n\n if (!isMounted) return <div style={placeholderStyle} />\n\n return (\n <div className=\"relative h-fit w-fit overflow-hidden rounded-full border border-neutral-300 bg-neutral-100 p-0 dark:border-neutral-800/30 dark:bg-neutral-900\">\n <fieldset\n className={cn(\n 'group m-0 flex',\n isVertical ? 'flex-col items-stretch' : 'flex-row items-center',\n className\n )}\n >\n <legend className=\"sr-only\">Select a display theme:</legend>\n {THEMES.map(({ key, icon }) => {\n const checked = key === theme\n const id = `theme-toggle-${key}-${rId}`\n return (\n <span key={key} className=\"h-full\">\n <input\n tabIndex={checked ? -1 : 0}\n className=\"peer absolute appearance-none outline-0\"\n aria-label={key}\n checked={checked}\n id={id}\n onChange={(): void => {\n setTheme(key)\n onThemeSwitch?.(key)\n }}\n type=\"radio\"\n value={key}\n suppressHydrationWarning\n />\n <label\n className={cn(\n // Base\n 'text-foreground relative flex size-[2.125rem] cursor-pointer items-center justify-center rounded-full opacity-50 transition-opacity duration-300 dark:text-neutral-300 dark:opacity-70',\n // Checked\n 'peer-checked:cursor-default peer-checked:!opacity-100',\n // Hover\n 'peer-interact:!opacity-100',\n // Focus\n 'peer-focus-visible:ring-foreground peer-checked:!inset-ring-0 peer-focus-visible:inset-ring-2',\n // Icon\n 'relative z-[1] [&_svg]:size-4 [&_svg]:text-current'\n )}\n htmlFor={id}\n >\n <span className=\"sr-only\">{key}</span>\n {icon}\n </label>\n </span>\n )\n })}\n </fieldset>\n <motion.div\n initial={{\n transform: isVertical\n ? `translateY(${posX}%)`\n : `translateX(${posX}%)`,\n }}\n animate={{\n transform: isVertical\n ? `translateY(${posX}%)`\n : `translateX(${posX}%)`,\n }}\n transition={{ type: 'spring', duration: 0.7, bounce: 0.3 }}\n className=\"absolute top-0 left-0 z-[10] size-[2.125rem] rounded-full shadow-[0px_0px_4px_0px_rgba(0,0,0,0.10),0px_2px_1px_0px_#FFF_inset,0px_-2px_1px_0px_rgba(0,0,0,0.05)_inset] dark:shadow-[0px_2px_4px_0px_rgba(0,0,0,0.60),0px_2px_1px_0px_#282828_inset,0px_-2px_1px_0px_rgba(0,0,0,0.05)_inset]\"\n suppressHydrationWarning\n />\n </div>\n )\n}\n","import { cn, partitionBy } from '@/lib/utils'\nimport React, {\n Children,\n isValidElement,\n PropsWithChildren,\n HTMLAttributes,\n} from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { Icon } from '../Icon'\nimport { useAppLayout } from '@/hooks/useAppLayout'\nimport { motion } from 'motion/react'\nimport { Logo } from '../Logo'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n TooltipPortal,\n TooltipArrow,\n} from '../Tooltip'\nimport { Key } from '../KeyHint'\nimport { useAppLayoutKeys } from './useAppLayoutKeys'\nimport { IconName } from '../Icon/names'\nimport { ThemeSwitcher } from '../ThemeSwitcher'\n\ninterface AppLayoutProps extends PropsWithChildren {\n className?: string\n}\n\nconst AppLayoutBase = ({ children, className }: AppLayoutProps) => {\n const { collapsed } = useAppLayout()\n\n const childComponents = Children.toArray(children).reduce(\n (acc, child) => {\n if (!isValidElement(child)) return acc\n const type = child.type as { displayName?: string }\n const displayName = type.displayName\n\n switch (displayName) {\n case 'AppLayout.Sidebar':\n acc.sidebar = child\n break\n case 'AppLayout.Surface':\n acc.surface = child\n break\n case 'AppLayout.SurfaceHeader':\n acc.surfaceHeader = child\n break\n case 'AppLayout.Header':\n acc.header = child\n break\n }\n\n return acc\n },\n {\n sidebar: null as React.ReactElement | null,\n surface: null as React.ReactElement | null,\n surfaceHeader: null as React.ReactElement | null,\n header: null as React.ReactElement | null,\n }\n )\n const { sidebar, surface, surfaceHeader, header } = childComponents\n\n return (\n <div\n className={cn(\n 'bg-surface-secondary flex h-screen w-full gap-3 overflow-hidden p-2 pr-0 pb-0',\n className\n )}\n >\n {!collapsed && sidebar}\n\n <motion.div\n layout\n className=\"flex w-full flex-col\"\n initial={{ left: collapsed ? '100%' : '0' }}\n animate={{ left: collapsed ? '100%' : '0' }}\n transition={{ duration: 0.25, type: 'spring', bounce: 0 }}\n >\n {header}\n\n <main\n className={cn(\n 'bg-surface-primary mr-2 mb-2 flex h-full flex-col overflow-hidden rounded-xl shadow-sm'\n )}\n >\n <div className=\"flex w-full flex-shrink-0 items-center border-b p-2\">\n {surfaceHeader}\n </div>\n\n <div className=\"min-h-0 flex-1\">{surface}</div>\n </main>\n </motion.div>\n </div>\n )\n}\n\nAppLayoutBase.displayName = 'AppLayout'\n\ninterface AppLayoutSurfaceProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst AppLayoutSurface = ({\n children,\n className,\n ...props\n}: AppLayoutSurfaceProps) => {\n return (\n <div className={cn('h-full overflow-auto', className)} {...props}>\n {children}\n </div>\n )\n}\n\nAppLayoutSurface.displayName = 'AppLayout.Surface'\n\ninterface AppLayoutSidebarProps {\n className?: string\n children?: React.ReactNode\n\n /**\n * A React.ReactNode to render instead of the default Logo.\n */\n Logo?: React.ReactNode\n\n /**\n * A function to call when the the brand logo is clicked.\n */\n onHomeNavigation?: () => void\n}\n\nconst AppLayoutSidebar = ({\n children,\n className,\n onHomeNavigation,\n}: AppLayoutSidebarProps) => {\n const { collapsed } = useAppLayout()\n\n const [nav, rest] = partitionBy(Children.toArray(children), (child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return type.displayName === 'AppLayout.Nav'\n })\n\n return (\n <motion.div\n initial={false}\n layout=\"position\"\n className={cn('mt-4 flex w-fit flex-col items-start px-1', className)}\n transition={{ duration: 0.25, type: 'spring', bounce: 0 }}\n >\n <div className=\"flex flex-col gap-4\">\n <Logo\n variant={collapsed ? 'icon' : 'wordmark'}\n className={cn('cursor-pointer', !collapsed && 'min-w-[140px]')}\n onClick={onHomeNavigation}\n />\n {nav}\n </div>\n\n <div className=\"flex h-full flex-col gap-1\">{rest}</div>\n </motion.div>\n )\n}\nAppLayoutSidebar.displayName = 'AppLayout.Sidebar'\n\ninterface AppLayoutThemeSwitcherProps {\n className?: string\n}\n\nconst AppLayoutThemeSwitcher = ({ className }: AppLayoutThemeSwitcherProps) => {\n const { collapsed } = useAppLayout()\n return (\n <motion.div data-theme-switcher className={cn('mt-auto mb-6', className)}>\n <ThemeSwitcher orientation={collapsed ? 'vertical' : 'horizontal'} />\n </motion.div>\n )\n}\n\nAppLayoutThemeSwitcher.displayName = 'AppLayout.ThemeSwitcher'\n\ninterface AppLayoutBreadcrumbProps extends PropsWithChildren {\n className?: string\n}\n\nconst AppLayoutBreadcrumb = ({\n children,\n className,\n}: AppLayoutBreadcrumbProps) => {\n const validChildren = Children.toArray(children).filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n const isValidSubType = type.displayName === 'AppLayout.BreadcrumbItem'\n if (!isValidSubType) {\n console.warn(\n `Invalid child type: ${type.displayName}. Must be one of: CodeEditor.Pane, CodeEditor.Tabs, CodeEditor.CommandBar, CodeEditor.Empty`\n )\n }\n return isValidSubType\n })\n\n return (\n <div\n className={cn(\n 'bg-surface-primary flex min-h-8 items-center gap-1.5',\n className\n )}\n >\n {validChildren.map((child, index) => (\n <React.Fragment key={index}>\n {child}\n {index < validChildren.length - 1 && <AppLayoutBreadcrumbDivider />}\n </React.Fragment>\n ))}\n </div>\n )\n}\n\nAppLayoutBreadcrumb.displayName = 'AppLayout.Breadcrumb'\n\nconst AppLayoutBreadcrumbDivider = () => {\n return (\n <span className=\"text-muted-foreground typography-body-lg select-none\">\n /\n </span>\n )\n}\n\nexport interface AppLayoutBreadcrumbItemProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n className?: string\n active?: boolean\n children?: React.ReactNode\n disabled?: boolean\n asChild?: boolean\n}\n\nconst AppLayoutBreadcrumbItem = React.forwardRef<\n HTMLAnchorElement,\n AppLayoutBreadcrumbItemProps\n>(\n (\n {\n asChild = false,\n children,\n className,\n active = false,\n disabled = false,\n ...rest\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'a'\n\n return (\n <Comp\n ref={ref}\n className={cn(\n 'typography-body-md text-muted-foreground cursor-pointer rounded-md px-1.5 text-lg font-light select-none',\n active && 'text-foreground cursor-default',\n !active && 'hover:text-foreground hover:bg-accent',\n disabled &&\n 'hover:text-muted-foreground cursor-default opacity-50 hover:bg-transparent',\n className\n )}\n {...rest}\n >\n {children}\n </Comp>\n )\n }\n)\n\nAppLayoutBreadcrumbItem.displayName = 'AppLayout.BreadcrumbItem'\n\nconst AppLayoutHeaderDivider = () => {\n return <div className=\"bg-border h-full min-h-4 w-px\" />\n}\n\nAppLayoutHeaderDivider.displayName = 'AppLayout.HeaderDivider'\n\ninterface AppLayoutCollapseButtonProps extends PropsWithChildren {\n className?: string\n}\n\nconst AppLayoutCollapseButton = ({\n className,\n}: AppLayoutCollapseButtonProps) => {\n const { collapsed, setCollapsed, keybinds } = useAppLayout()\n useAppLayoutKeys()\n return (\n <div className={cn('flex items-center gap-2', className)}>\n <TooltipProvider>\n <Tooltip delayDuration={800} disableHoverableContent>\n <TooltipTrigger asChild>\n <button\n className=\"group typography-body-md hover:bg-accent hover:text-primary rounded-md p-1.5\"\n onClick={() => {\n setCollapsed(!collapsed)\n }}\n aria-label=\"Toggle sidebar\"\n >\n <Icon\n name=\"panel-left\"\n className=\"text-muted group-hover:!text-primary size-4\"\n />\n </button>\n </TooltipTrigger>\n <TooltipPortal>\n <TooltipContent\n side=\"right\"\n align=\"start\"\n className=\"!z-50 flex flex-row items-center gap-2 px-2 py-1\"\n >\n <span className=\"text-body-md text-muted\">\n {keybinds.toggle.description}\n </span>\n <div className=\"flex flex-row items-center gap-1 p-0.5\">\n <Key value=\"⌘\" />\n <span>+</span>\n <Key value={keybinds.toggle.key} />\n </div>\n </TooltipContent>\n </TooltipPortal>\n </Tooltip>\n </TooltipProvider>\n </div>\n )\n}\n\nAppLayoutCollapseButton.displayName = 'AppLayout.CollapseButton'\n\ninterface AppLayoutSurfaceHeaderProps extends PropsWithChildren {\n className?: string\n}\n\nconst AppLayoutSurfaceHeader = ({\n children,\n className,\n}: AppLayoutSurfaceHeaderProps) => {\n return (\n <div className={cn('flex w-full items-center gap-3', className)}>\n {children}\n </div>\n )\n}\n\nAppLayoutSurfaceHeader.displayName = 'AppLayout.SurfaceHeader'\n\ninterface AppLayoutHeaderProps extends PropsWithChildren {\n className?: string\n}\n\nconst AppLayoutHeader = ({ children, className }: AppLayoutHeaderProps) => {\n return (\n <div className={cn('flex w-full items-center gap-3', className)}>\n {children}\n </div>\n )\n}\n\nAppLayoutHeader.displayName = 'AppLayout.Header'\n\ninterface AppLayoutNavProps extends HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst AppLayoutNav = ({ children, className, ...props }: AppLayoutNavProps) => {\n return (\n <nav\n className={cn('mt-3 flex flex-col items-start gap-1', className)}\n {...props}\n >\n {children}\n </nav>\n )\n}\n\nAppLayoutNav.displayName = 'AppLayout.Nav'\n\nexport interface AppLayoutNavItemProps\n extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n title: string\n icon: IconName\n children?: React.ReactNode\n render?: ({\n title,\n icon,\n active,\n }: {\n title: string\n icon: React.ReactNode\n active?: boolean\n }) => React.ReactNode\n className?: string\n active?: boolean\n disabled?: boolean\n asChild?: boolean\n}\n\nconst AppLayoutNavItem = React.forwardRef<\n HTMLAnchorElement,\n AppLayoutNavItemProps\n>(\n (\n {\n asChild = false,\n title,\n icon,\n render,\n className,\n active,\n disabled,\n children,\n ...rest\n },\n ref\n ) => {\n const { collapsed } = useAppLayout()\n\n if (render) {\n return render({ title, icon, active })\n }\n\n const Comp = asChild ? Slot : 'a'\n const iconElement = (\n <Icon name={icon} className=\"size-5\" strokeWidth={1.3} />\n )\n const titleElement = collapsed ? null : (\n <motion.span\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n className=\"typography-body-sm\"\n >\n {title}\n </motion.span>\n )\n\n const content = asChild ? (\n children\n ) : (\n <>\n {iconElement}\n {titleElement}\n </>\n )\n\n return (\n <TooltipProvider>\n <Tooltip>\n <TooltipTrigger asChild>\n <Comp\n ref={ref}\n className={cn(\n 'text-muted-foreground hover:text-foreground hover:bg-accent flex h-8 w-full cursor-pointer items-center gap-3 rounded-md px-2',\n active && 'text-foreground bg-accent',\n disabled &&\n 'hover:text-muted-foreground cursor-default opacity-50 hover:bg-transparent',\n className\n )}\n {...rest}\n {...(asChild && {\n 'data-title': title,\n 'data-icon': icon,\n 'data-active': active,\n 'data-disabled': disabled,\n })}\n >\n {content}\n </Comp>\n </TooltipTrigger>\n <TooltipContent\n className=\"bg-foreground text-background border-foreground flex flex-row items-center gap-2 text-sm\"\n side=\"right\"\n hidden={!collapsed || disabled}\n >\n <TooltipArrow className=\"fill-foreground\" />\n {title}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n }\n)\n\nAppLayoutNavItem.displayName = 'AppLayout.NavItem'\n\nexport interface AppLayoutNavItemGroupProps\n extends HTMLAttributes<HTMLDivElement> {\n className?: string\n\n /**\n * The name of the group.\n */\n name: string\n\n /**\n * Child AppLayout.NavItem components.\n */\n children: React.ReactNode\n}\n\nconst AppLayoutNavItemGroup = ({\n children,\n className,\n name,\n ...props\n}: AppLayoutNavItemGroupProps) => {\n return (\n <div className={cn('mb-4 flex w-full flex-col', className)} {...props}>\n <div className=\"text-codeline-sm mb-1.5 px-2 uppercase\">{name}</div>\n <div className=\"flex flex-col gap-1\">{children}</div>\n </div>\n )\n}\n\nAppLayoutNavItemGroup.displayName = 'AppLayout.NavItemGroup'\n\nconst AppLayout = AppLayoutBase as typeof AppLayoutBase & {\n Surface: typeof AppLayoutSurface\n SurfaceHeader: typeof AppLayoutSurfaceHeader\n Sidebar: typeof AppLayoutSidebar\n Breadcrumb: typeof AppLayoutBreadcrumb\n BreadcrumbItem: typeof AppLayoutBreadcrumbItem\n CollapseButton: typeof AppLayoutCollapseButton\n HeaderDivider: typeof AppLayoutHeaderDivider\n Header: typeof AppLayoutHeader\n ThemeSwitcher: typeof AppLayoutThemeSwitcher\n Nav: typeof AppLayoutNav\n NavItem: typeof AppLayoutNavItem\n NavItemGroup: typeof AppLayoutNavItemGroup\n}\n\nAppLayout.Surface = AppLayoutSurface\nAppLayout.SurfaceHeader = AppLayoutSurfaceHeader\nAppLayout.Sidebar = AppLayoutSidebar\nAppLayout.Breadcrumb = AppLayoutBreadcrumb\nAppLayout.BreadcrumbItem = AppLayoutBreadcrumbItem\nAppLayout.CollapseButton = AppLayoutCollapseButton\nAppLayout.HeaderDivider = AppLayoutHeaderDivider\nAppLayout.Header = AppLayoutHeader\nAppLayout.ThemeSwitcher = AppLayoutThemeSwitcher\nAppLayout.Nav = AppLayoutNav\nAppLayout.NavItem = AppLayoutNavItem\nAppLayout.NavItemGroup = AppLayoutNavItemGroup\n\nexport { AppLayout }\n","import { PropsWithChildren, useState, useEffect } from 'react'\nimport { AppLayoutContext, AppLayoutContextType } from './context'\n\ninterface AppLayoutProviderProps extends PropsWithChildren {\n defaultCollapsed?: boolean\n keybinds?: AppLayoutContextType['keybinds']\n}\n\nconst defaultKeybinds = {\n toggle: {\n key: 'B',\n description: 'Toggle',\n },\n}\n\nexport const AppLayoutProvider = ({\n children,\n defaultCollapsed = false,\n keybinds,\n}: AppLayoutProviderProps) => {\n const finalKeybinds = keybinds ?? defaultKeybinds\n const [collapsed, setCollapsed] = useState(defaultCollapsed)\n\n // respond to defaultCollapsed changes\n useEffect(() => {\n setCollapsed(defaultCollapsed)\n }, [defaultCollapsed])\n\n return (\n <AppLayoutContext.Provider\n value={{\n collapsed,\n setCollapsed,\n keybinds: finalKeybinds,\n }}\n >\n {children}\n </AppLayoutContext.Provider>\n )\n}\n","import { CollisionDetection, DndContext, Modifier } from '@dnd-kit/core'\nimport { restrictToWindowEdges } from '@dnd-kit/modifiers'\n\nexport interface DragNDropAreaProps {\n children: React.ReactNode\n\n modifiers?: Modifier[]\n\n className?: string\n\n collisionDetectionAlgo?: CollisionDetection\n}\n\nconst defaultModifiers: Modifier[] = [restrictToWindowEdges]\n\nexport function DragNDropArea({\n children,\n modifiers = defaultModifiers,\n className,\n collisionDetectionAlgo,\n}: DragNDropAreaProps) {\n return (\n <DndContext\n collisionDetection={collisionDetectionAlgo}\n modifiers={modifiers}\n >\n <div className={className}>{children}</div>\n </DndContext>\n )\n}\n","import { Icon } from '@/components/Icon'\nimport { IconName } from '@/components/Icon/names'\nimport {\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n} from '@/components/Tooltip'\nimport { cn } from '@/lib/utils'\nimport {\n useDraggable,\n DraggableAttributes,\n useDndMonitor,\n Translate,\n DragEndEvent,\n DragStartEvent,\n Modifier,\n} from '@dnd-kit/core'\nimport { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities'\nimport { useState } from 'react'\nimport { DragNDropArea } from '../DragNDrop/DragNDropArea'\n\ninterface ActionBarProps {\n children: React.ReactNode\n id: string\n initialPosition: Translate\n onChangePosition?: (position: Translate) => void\n onDragStart?: (event: DragStartEvent) => void\n onDragEnd?: (event: DragEndEvent) => void\n draggable?: boolean\n\n /**\n * dnd-kit modifiers (https://docs.dndkit.com/api-documentation/modifiers)\n */\n modifiers?: Modifier[]\n}\n\nconst ActionBarInternal = ({\n children,\n modifiers,\n ...props\n}: ActionBarProps) => {\n return (\n <DragNDropArea modifiers={modifiers}>\n <Root {...props}>{children}</Root>\n </DragNDropArea>\n )\n}\n\nActionBarInternal.displayName = 'ActionBar'\n\nconst Root = ({\n children,\n id,\n initialPosition = { x: 0, y: 0 },\n onChangePosition,\n draggable = true,\n onDragStart,\n onDragEnd,\n}: ActionBarProps) => {\n const { setNodeRef, attributes, listeners, transform } = useDraggable({\n id,\n })\n\n const [state, setState] = useState<Translate>(initialPosition)\n\n useDndMonitor({\n onDragEnd: (event: DragEndEvent) => {\n setState((prev) => ({\n x: prev.x + event.delta.x,\n y: prev.y + event.delta.y,\n }))\n onChangePosition?.({\n x: state.x + event.delta.x,\n y: state.y + event.delta.y,\n })\n onDragEnd?.(event)\n },\n onDragStart: (event: DragStartEvent) => {\n onDragStart?.(event)\n },\n })\n\n const transformStyle: React.CSSProperties = transform\n ? {\n transform: `translate3d(${transform.x}px, ${transform.y}px, 0)`,\n }\n : {}\n\n return (\n <div\n ref={setNodeRef}\n style={{\n top: state.y,\n left: state.x,\n ...transformStyle,\n }}\n className=\"bg-card fixed flex min-w-36 flex-row items-center justify-center gap-3 rounded-lg border py-2 pr-2 pl-2 shadow-lg shadow-white/5\"\n >\n {draggable && (\n <>\n <ActionBarHandle listeners={listeners} attributes={attributes} />\n <ActionBarSeparator />\n </>\n )}\n {children}\n </div>\n )\n}\n\nRoot.displayName = 'ActionBar.Root'\n\ninterface ActionBarItemProps {\n children: React.ReactNode\n onClick?: () => void\n disabled?: boolean\n className?: string\n iconName: IconName\n}\n\nconst ActionBarItem = ({\n children,\n onClick,\n disabled,\n className,\n iconName,\n}: ActionBarItemProps) => {\n return (\n <TooltipProvider>\n <Tooltip delayDuration={100}>\n <TooltipTrigger\n onClick={onClick}\n className={cn(\n 'text-foreground flex cursor-pointer items-center justify-center select-none last-of-type:mr-1',\n 'focus: focus:rounded-md focus:ring-1 focus:ring-blue-500/70 focus:ring-offset-4 focus:ring-offset-slate-900 focus:outline-none',\n !disabled && 'hover:text-foreground cursor-pointer',\n disabled && 'text-body-muted/70 cursor-not-allowed',\n className\n )}\n >\n <Icon name={iconName} size=\"small\" />\n </TooltipTrigger>\n <TooltipContent className=\"border-zinc-100 px-2 py-1 text-xs shadow-none select-none dark:border-zinc-900\">\n {children}\n </TooltipContent>\n </Tooltip>\n </TooltipProvider>\n )\n}\n\nActionBarItem.displayName = 'ActionBar.Item'\n\nconst ActionBarSeparator = () => {\n return (\n <div className=\"h-full min-h-4 w-[0.5px] bg-zinc-200 dark:bg-zinc-700\" />\n )\n}\n\nActionBarSeparator.displayName = 'ActionBar.Separator'\n\nconst ActionBarHandle = ({\n listeners,\n attributes,\n}: {\n listeners: SyntheticListenerMap | undefined\n attributes: DraggableAttributes | undefined\n}) => {\n return (\n <div\n {...listeners}\n {...attributes}\n className=\"text-body-muted hover:text-foreground active:text-foreground h-full cursor-move\"\n >\n <Icon name=\"grip-vertical\" className=\"h-4 w-4\" />\n </div>\n )\n}\n\nexport const ActionBar = Object.assign(ActionBarInternal, {\n Item: ActionBarItem,\n Separator: ActionBarSeparator,\n})\n\nexport type { ActionBarProps, ActionBarItemProps }\n","import { cn } from '@/lib/utils'\nimport { motion, useInView } from 'motion/react'\nimport { useEffect, useMemo, useRef, useState } from 'react'\n\nexport interface HighlightedTextProps\n extends React.HTMLAttributes<HTMLSpanElement> {\n children: string\n color?: Color\n muted?: boolean\n animate?: boolean\n\n animationDuration?: number\n\n /**\n * Whether the animation should trigger when the element is in view or immediately.\n */\n animationTrigger?: 'inView' | 'instant'\n\n className?: string\n}\n\nexport function HighlightedText({\n children,\n color = 'green',\n muted = false,\n animate = true,\n className,\n animationTrigger = 'inView',\n animationDuration = 1,\n}: HighlightedTextProps) {\n const chars = useMemo(() => children.split(''), [children])\n const [highlightedIndex, setHighlightedIndex] = useState<number>(0)\n const ref = useRef<HTMLDivElement>(null)\n const isInView = useInView(ref, { once: animationTrigger === 'inView' })\n useEffect(() => {\n if (!animate) {\n setHighlightedIndex(chars.length)\n return\n }\n if (isInView || animationTrigger === 'instant') {\n setInterval(() => {\n if (highlightedIndex < chars.length) {\n setHighlightedIndex((prev) => prev + 1)\n }\n }, animationDuration)\n }\n }, [animate, isInView, animationTrigger, chars])\n\n const highlightedChars = useMemo(\n () =>\n chars.slice(0, highlightedIndex).map((char, index) => (\n <motion.span\n key={index}\n className={cn(\n 'py-0.5 leading-7 first:pl-0.5',\n index === chars.length - 1 && 'pr-0.5'\n )}\n initial={{\n background: animate\n ? 'transparent'\n : muted\n ? mutedBgMap[color]\n : highlightBgMap[color],\n color: animate\n ? 'inherit'\n : muted\n ? mutedFgMap[color]\n : highlightFgMap[color],\n }}\n animate={\n animate\n ? {\n background: muted ? mutedBgMap[color] : highlightBgMap[color],\n color: muted ? mutedFgMap[color] : highlightFgMap[color],\n }\n : {}\n }\n transition={{\n background: { duration: animationDuration },\n color: { duration: animationDuration },\n }}\n >\n {char}\n </motion.span>\n )),\n [chars, highlightedIndex, animate, animationTrigger, isInView, muted, color]\n )\n\n return (\n <div ref={ref} className={cn('relative inline', className)}>\n {highlightedChars}\n\n {chars.slice(highlightedIndex).length > 0 && (\n <span className=\"border border-transparent box-decoration-clone\">\n {chars.slice(highlightedIndex).map((char, index) => (\n <span key={index} className=\"py-0.5 leading-7\">\n {char}\n </span>\n ))}\n </span>\n )}\n </div>\n )\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const highlightColors = [\n 'green',\n 'blue',\n 'purple',\n 'orange',\n 'emerald',\n] as const\nexport type Color = (typeof highlightColors)[number]\n\n// TODO: replace these colors with new ones, and improve api for selecting/retrieving colors for consumers\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const highlightBgMap: Record<Color, string> = {\n green: 'hsl(500,100%,75%)',\n blue: 'hsl(200,100%,70%)',\n purple: 'hsl(300,100%,72%)',\n orange: 'hsl(400,100%,65%)',\n emerald: 'hsl(150, 100%, 65%)',\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const mutedBgMap: Record<Color, string> = {\n green: 'hsl(500,100%,90%)',\n blue: 'hsl(200,100%,90%)',\n purple: 'hsl(300,100%,90%)',\n orange: 'hsl(400,100%,90%)',\n emerald: 'hsl(150, 100%, 90%)',\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const mutedFgMap: Record<Color, string> = {\n green: 'hsl(0, 0%, 10%)',\n blue: 'hsl(0, 0%, 10%)',\n purple: 'hsl(0, 0%, 10%)',\n orange: 'hsl(0, 0%, 10%)',\n emerald: 'hsl(0, 0%, 10%)',\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const highlightFgMap: Record<Color, string> = {\n green: 'hsl(0, 0%, 20%)',\n blue: 'hsl(0, 0%, 20%)',\n purple: 'hsl(0, 0%, 100%)',\n orange: 'hsl(0, 0%, 20%)',\n emerald: 'hsl(0, 0%, 20%)',\n}\n","import { DragOverlay as DndOverlay } from '@dnd-kit/core'\n\n// TODO: Add a custom overlay component\nexport const DragOverlay = DndOverlay\n","import {\n Active,\n DndMonitorListener,\n useDndMonitor,\n useDraggable,\n Over,\n Data,\n UniqueIdentifier,\n} from '@dnd-kit/core'\nimport type { ClientRect } from '@dnd-kit/core/dist/types/rect'\nimport { CSS } from '@dnd-kit/utilities'\nimport { MutableRefObject } from 'react'\n\nexport interface DraggableChildrenProps {\n over: Over | null\n active: Active | null\n activeNodeRect: ClientRect | null\n isDragging: boolean\n node: MutableRefObject<HTMLElement | null> | null\n}\n\nexport interface DraggableProps<TData> extends DndMonitorListener {\n /**\n * The children to render.\n *\n * If a function is provided, it will be called with the current state of the draggable.\n */\n children:\n | React.ReactNode\n | ((props: DraggableChildrenProps) => React.ReactNode)\n\n /**\n * The unique identifier for the draggable.\n */\n id: UniqueIdentifier\n\n className?: string\n\n disabled?: boolean\n\n /**\n * The data to pass to the draggable of generic type TData.\n */\n data?: TData\n}\n\nexport function Draggable<TData extends Data>({\n children,\n id,\n onDragEnd,\n onDragStart,\n onDragCancel,\n onDragOver,\n className,\n disabled,\n data,\n}: DraggableProps<TData>) {\n const {\n attributes,\n listeners,\n setNodeRef,\n over,\n transform,\n active,\n isDragging,\n activeNodeRect,\n node,\n } = useDraggable({\n id,\n data,\n disabled,\n })\n useDndMonitor({\n onDragEnd,\n onDragStart,\n onDragCancel,\n onDragOver,\n })\n\n const style: React.CSSProperties = {\n transform: CSS.Translate.toString(transform),\n }\n\n return (\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n {...listeners}\n className={className}\n >\n {typeof children === 'function'\n ? children({ over, active, activeNodeRect, isDragging, node })\n : children}\n </div>\n )\n}\n","import { Over, UniqueIdentifier, useDroppable } from '@dnd-kit/core'\nimport type { ClientRect } from '@dnd-kit/core/dist/types/rect'\nimport type { MutableRefObject, ReactNode } from 'react'\n\ninterface DroppableData {\n isOver: boolean\n over: Over | null\n rect: MutableRefObject<ClientRect | null>\n node: MutableRefObject<HTMLElement | null>\n}\n\nexport interface DroppableProps<TData extends Record<string, unknown>> {\n /**\n * A function that returns a React node or a React node.\n * If a function is provided, it will be called with the droppable data.\n */\n children: ReactNode | ((props: DroppableData) => ReactNode)\n\n /**\n * The unique identifier for the droppable container.\n */\n id: UniqueIdentifier\n\n /**\n * The data to pass to the droppable container.\n * Will be returned in any dragOver events for draggables that are over this droppable.\n */\n data?: TData\n\n className?: string\n}\n\nexport function Droppable<TData extends Record<string, unknown>>({\n children,\n id,\n data,\n className,\n}: DroppableProps<TData>) {\n const { setNodeRef, isOver, over, rect, node } = useDroppable({\n id,\n data,\n })\n\n return (\n <div ref={setNodeRef} className={className}>\n {typeof children === 'function'\n ? children({ isOver, over, rect, node })\n : children}\n </div>\n )\n}\n","import { Icon } from '@/components/Icon'\nimport { cn } from '@/lib/utils'\nimport React, { Children, isValidElement, useMemo, useState } from 'react'\nimport { ComponentProps, ReactNode } from 'react'\nimport {\n ImperativePanelHandle,\n Panel,\n PanelGroup,\n PanelResizeHandle,\n} from 'react-resizable-panels'\n\nexport interface ResizeHandleProps\n extends ComponentProps<typeof PanelResizeHandle> {\n children?: ReactNode\n}\n\nconst ResizeHandle = ({ children, ...props }: ResizeHandleProps) => {\n return <PanelResizeHandle {...props}>{children}</PanelResizeHandle>\n}\n\nResizeHandle.displayName = 'ResizablePanel.ResizeHandle'\n\nexport interface ResizablePanelProps extends ComponentProps<typeof PanelGroup> {\n children: ReactNode\n className?: string\n useDefaultHandle?: boolean\n}\n\nconst ResizablePanel = ({\n children,\n className,\n useDefaultHandle = true,\n onResize,\n ...props\n}: ResizablePanelProps) => {\n const validChildren = useMemo(\n () =>\n Children.toArray(children).filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return (\n type.displayName === 'ResizablePanel.Pane' ||\n type.displayName === 'ResizablePanel.ResizeHandle'\n )\n }),\n [children]\n )\n\n return (\n <PanelGroup onResize={onResize} {...props} className={className}>\n {React.Children.map(validChildren, (child, index) => {\n if (!isValidElement(child)) return child\n return (\n <>\n {child}\n\n {index < validChildren.length - 1 && useDefaultHandle && (\n <DefaultResizeHandle direction={props.direction} />\n )}\n </>\n )\n })}\n </PanelGroup>\n )\n}\n\nexport interface PaneProps extends ComponentProps<typeof Panel> {\n children: ReactNode\n className?: string\n panelRef?: React.LegacyRef<ImperativePanelHandle>\n}\n\nconst Pane = ({ children, className, panelRef, ...props }: PaneProps) => {\n return (\n <Panel className={className} {...props} ref={panelRef}>\n {children}\n </Panel>\n )\n}\n\nPane.displayName = 'ResizablePanel.Pane'\n\nconst DefaultResizeHandle = ({\n direction,\n}: {\n direction: 'horizontal' | 'vertical'\n}) => {\n const [isResizing, setIsResizing] = useState(false)\n return (\n <PanelResizeHandle\n onDragging={(dragging) => setIsResizing(dragging)}\n hitAreaMargins={{\n coarse: 10,\n fine: 10,\n }}\n className={cn(\n 'relative border-[1.25px] border-zinc-900/50',\n isResizing && 'border-foreground/10'\n )}\n >\n <div\n className={cn(\n 'bg-card text-body-muted absolute top-[50%] flex translate-x-[-50%] items-center justify-center rounded-md border shadow-sm shadow-zinc-400/5',\n direction === 'vertical' ? 'cursor-ns-resize' : 'cursor-ew-resize',\n isResizing && 'text-foreground'\n )}\n >\n <Icon name=\"grip-vertical\" className=\"h-8 w-5\" />\n </div>\n </PanelResizeHandle>\n )\n}\n\nconst ResizablePanelWithSubcomponents = Object.assign(ResizablePanel, {\n Pane,\n ResizeHandle,\n})\n\nexport { ResizablePanelWithSubcomponents as ResizablePanel }\n","import {\n useCallback,\n useEffect,\n useMemo,\n useState,\n Children,\n isValidElement,\n HTMLAttributes,\n forwardRef,\n useRef,\n} from 'react'\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from '@/components/Select'\nimport { prettyLanguageName, SupportedLanguage } from '@/types'\nimport '@/styles/codeSyntax.css'\nimport { motion } from 'motion/react'\nimport { cn } from '@/lib/utils'\nimport { AnimatePresence } from 'motion/react'\nimport { Icon } from '@/components/Icon'\nimport { Skeleton } from '@/components/Skeleton'\nimport {\n highlightCode,\n HighlightedCode,\n LIGHT_THEME,\n DARK_THEME,\n} from '@/lib/codeUtils'\nimport React from 'react'\nimport { Pre } from '../CodeHighlight/Pre'\nimport { useConfig } from '@/hooks/useConfig'\n\nconst copyIconVariants = {\n hidden: { opacity: 0, scale: 0.5 },\n visible: { opacity: 1, scale: 1 },\n}\nexport interface CodePlaygroundSnippet {\n /**\n * The code to display in the playground.\n */\n code?: string | undefined\n /**\n * Whether the code is loading.\n */\n loading?: boolean | undefined\n}\n\nexport type CodePlaygroundSnippets = Partial<\n Record<SupportedLanguage, CodePlaygroundSnippet>\n>\n\nexport interface CodePlaygroundProps {\n /**\n * The children of the playground.\n * Accepts a `CodePlayground.Header` and a `CodePlayground.Footer` or a `CodePlayground.Code` component.\n */\n children: React.ReactNode\n\n /**\n * The error to display in the playground if the code could not be loaded.\n */\n error?: React.ReactNode | undefined\n\n /**\n * An object of snippets to display in the playground.\n *\n * @example\n * <CodePlayground\n * snippets={{\n * javascript: { code: 'console.log(\"Hello, world!\");' },\n * typescript: { code: 'console.log(\"Hello, world!\");' },\n * }}\n * />\n */\n snippets: CodePlaygroundSnippets\n\n /**\n * The language that should be selected when the playground is mounted.\n */\n selectedLanguage: SupportedLanguage\n\n /**\n * Whether the code should be copyable.\n *\n * @default true\n */\n copyable?: boolean\n\n /** Custom class name to apply to the container */\n className?: string\n\n /**\n * Whether to wrap the code.\n *\n * @default true\n */\n wordWrap?: boolean\n\n /**\n * A callback to be called when the language is changed.\n */\n onChangeLanguage?: (language: SupportedLanguage) => void\n\n /**\n * Whether to show the language selector.\n */\n showLanguageSelector?: boolean\n\n /**\n * Whether to show line numbers.\n *\n * @default true\n */\n showLineNumbers?: boolean\n}\n\nconst CodePlayground = ({\n children,\n snippets,\n copyable = true,\n selectedLanguage,\n className,\n onChangeLanguage,\n error,\n showLineNumbers = true,\n showLanguageSelector = true,\n wordWrap = true,\n}: CodePlaygroundProps) => {\n const codeRef = useRef<HTMLDivElement>(null)\n const validChildren = Children.toArray(children).filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n const isValidSubType =\n type.displayName === 'CodePlayground.Header' ||\n type.displayName === 'CodePlayground.Footer' ||\n type.displayName === 'CodePlayground.Code'\n\n if (!isValidSubType) {\n console.warn(\n `Invalid child type: ${type.displayName}. Must be one of: CodePlayground.Header, CodePlayground.Footer`\n )\n }\n\n return isValidSubType\n })\n\n const header = validChildren.find(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName ===\n 'CodePlayground.Header'\n )\n\n const [highlighted, setHighlighted] = useState<HighlightedCode | null>(null)\n const selectedCode = snippets[selectedLanguage]!\n const { theme } = useConfig()\n\n const loadingSkeleton = useMemo(() => {\n // Try to measure the existing height of the code container if code has\n // already been rendered. Otherwise, use a default height\n\n // TODO: improve this logic\n const measuredHeight =\n codeRef.current?.getBoundingClientRect().height ?? 400\n\n const lines = Math.ceil(measuredHeight / 40)\n return (\n <Skeleton className={`w-full`}>\n {Array.from({ length: lines }).map((_, i) => (\n <div id={`skeleton-line-${i}`} key={i} className=\"h-4 w-full\" />\n ))}\n </Skeleton>\n )\n }, [codeRef.current])\n\n const codeContents = error ? (\n error\n ) : selectedCode.loading ? (\n <div className=\"flex items-center p-4\">{loadingSkeleton}</div>\n ) : highlighted ? (\n <Pre\n code={highlighted}\n showLineNumbers={showLineNumbers}\n wordWrap={wordWrap}\n className=\"bg-muted/15 dark:bg-background relative m-0 mr-4 w-full px-4 py-3 text-sm\"\n />\n ) : null\n\n const foundCustomCodeContainer = useMemo(\n () =>\n validChildren.find(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName ===\n 'CodePlayground.Code'\n ),\n [validChildren]\n )\n\n const code = foundCustomCodeContainer ? (\n React.cloneElement(foundCustomCodeContainer as React.ReactElement, {\n __children__: codeContents,\n ref: codeRef,\n })\n ) : (\n <CodePlaygroundCode __children__={codeContents} ref={codeRef} />\n )\n\n const footer = validChildren.find(\n (child) =>\n isValidElement(child) &&\n (child.type as { displayName?: string }).displayName ===\n 'CodePlayground.Footer'\n )\n\n const updateHighlighted = useCallback(\n async (code: string, language: SupportedLanguage) => {\n const shikiTheme = theme === 'dark' ? DARK_THEME : LIGHT_THEME\n const highlighted = await highlightCode(code, language, shikiTheme)\n setHighlighted(highlighted)\n },\n [theme]\n )\n\n const [copying, setCopying] = useState(false)\n\n const handleCopy = useCallback(() => {\n setCopying(true)\n navigator.clipboard.writeText(selectedCode.code ?? '')\n setTimeout(() => {\n setCopying(false)\n }, 1000)\n }, [selectedCode.code])\n\n useEffect(() => {\n if (selectedCode.code) {\n updateHighlighted(selectedCode.code, selectedLanguage)\n }\n }, [selectedCode, selectedLanguage, updateHighlighted])\n\n const handleChangeLanguage = useCallback(\n (language: SupportedLanguage) => {\n onChangeLanguage?.(language)\n },\n [onChangeLanguage]\n )\n\n return (\n <div\n className={cn(\n 'overflow-hidden rounded-lg border shadow-md shadow-white/5',\n className\n )}\n >\n <div className=\"bg-card flex items-center border-b p-2\">\n <div className=\"select-none\">{header && header}</div>\n {showLanguageSelector && (\n <div className=\"ml-auto\">\n <Select\n value={selectedLanguage}\n onValueChange={handleChangeLanguage}\n >\n <SelectTrigger className=\"text-body gap-1.5 !border-none !bg-transparent !p-0 !shadow-none !ring-0 select-none\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent side=\"bottom\" align=\"start\" alignOffset={-30}>\n {Object.keys(snippets).map((language) => (\n <SelectItem key={language} value={language}>\n {prettyLanguageName(language as SupportedLanguage)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n )}\n </div>\n\n <div className=\"relative\">\n {code}\n\n {selectedCode.code && copyable && (\n <div className=\"pointer-events-auto absolute top-5 right-6 bg-transparent\">\n <button\n role=\"button\"\n className={cn('ml-2 border-none bg-transparent outline-none')}\n onClick={handleCopy}\n >\n <AnimatePresence mode=\"wait\" initial={false}>\n {copying ? (\n <motion.span\n key=\"checkmark\"\n variants={copyIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n className=\"text-green-500\"\n exit=\"hidden\"\n >\n <Icon name=\"check\" stroke=\"currentColor\" />\n </motion.span>\n ) : (\n <motion.span\n key=\"copy\"\n variants={copyIconVariants}\n initial=\"hidden\"\n animate=\"visible\"\n className=\"text-body-muted hover:text-foreground\"\n exit=\"hidden\"\n >\n <Icon name=\"copy\" stroke=\"currentColor\" />\n </motion.span>\n )}\n </AnimatePresence>\n </button>\n </div>\n )}\n </div>\n\n {footer && footer}\n </div>\n )\n}\n\nCodePlayground.displayName = 'CodePlayground'\n\nexport interface CodePlaygroundCodeProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n className?: string\n\n /**\n * internal api for passing children\n */\n __children__?: React.ReactNode\n}\n\nconst CodePlaygroundCode = forwardRef<HTMLDivElement, CodePlaygroundCodeProps>(\n ({ className, __children__, ...props }, ref) => {\n return (\n <div\n ref={ref}\n {...props}\n className={cn('bg-background overflow-auto', className)}\n >\n {__children__}\n </div>\n )\n }\n)\n\nCodePlaygroundCode.displayName = 'CodePlayground.Code'\n\nexport interface CodePlaygroundHeaderProps\n extends HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n}\n\nconst CodePlaygroundHeader = ({\n children,\n className,\n ...props\n}: CodePlaygroundHeaderProps) => {\n return (\n <div className={cn('bg-card flex items-center', className)} {...props}>\n {children}\n </div>\n )\n}\n\nCodePlaygroundHeader.displayName = 'CodePlayground.Header'\n\nexport interface CodePlaygroundFooterProps\n extends HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n}\n\nconst CodePlaygroundFooter = ({\n children,\n className,\n ...props\n}: CodePlaygroundFooterProps) => {\n return (\n <div\n className={cn(\n 'bg-card flex items-center border-t p-2 select-none',\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n}\n\nCodePlaygroundFooter.displayName = 'CodePlayground.Footer'\n\nconst CodePlaygroundWithSubcomponents = Object.assign(CodePlayground, {\n Header: CodePlaygroundHeader,\n Footer: CodePlaygroundFooter,\n\n /**\n * Can be used to manipulate the properties of the code container. You can pass a custom class name to control the maximum height of the code container for example.\n * No children are expected as the parent component will handle that.\n * @example\n * <CodePlayground.Code className=\"max-h-72 overflow-y-auto\" />\n */\n Code: CodePlaygroundCode,\n})\n\nexport { CodePlaygroundWithSubcomponents as CodePlayground }\n","import { Icon } from '@/components/Icon'\nimport { cn } from '@/lib/utils'\nimport {\n isValidElement,\n ReactNode,\n Children,\n PropsWithChildren,\n useState,\n useMemo,\n HTMLAttributes,\n} from 'react'\nimport {\n Panel,\n PanelGroup,\n PanelProps,\n PanelResizeHandle,\n} from 'react-resizable-panels'\nimport styles from './styles.module.css'\n\nexport interface CodeEditorLayoutProps {\n children: ReactNode[] | ReactNode\n className?: string\n}\n\nconst CodeEditorLayout = ({ children, className }: CodeEditorLayoutProps) => {\n const validChildren = Children.toArray(children).filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n const isValidSubType =\n type.displayName === 'CodeEditor.Pane' ||\n type.displayName === 'CodeEditor.Tabs' ||\n type.displayName === 'CodeEditor.CommandBar' ||\n type.displayName === 'CodeEditor.Empty'\n\n if (!isValidSubType) {\n console.warn(\n `Invalid child type: ${type.displayName}. Must be one of: CodeEditor.Pane, CodeEditor.Tabs, CodeEditor.CommandBar, CodeEditor.Empty`\n )\n }\n\n return isValidSubType\n })\n\n const panes = validChildren.filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return type.displayName === 'CodeEditor.Pane'\n })\n\n const empty = validChildren.find((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return type.displayName === 'CodeEditor.Empty'\n })\n\n const commandBar = validChildren.find((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return type.displayName === 'CodeEditor.CommandBar'\n })\n\n return (\n <div className=\"flex h-full w-full flex-col rounded-lg\">\n {commandBar}\n <PanelGroup\n className={cn('flex min-h-0 flex-row', className)}\n direction=\"horizontal\"\n >\n {Children.map(panes, (pane, index) =>\n index < panes.length - 1 ? (\n <>\n {pane}\n\n <PanelResizeHandle className=\"bg-background\" />\n </>\n ) : (\n pane\n )\n )}\n {empty && <Panel>{empty}</Panel>}\n </PanelGroup>\n </div>\n )\n}\n\nCodeEditorLayout.displayName = 'CodeEditor'\n\nexport interface CodeEditorPaneProps extends PanelProps {\n className?: string\n containerRef?: React.RefObject<HTMLDivElement>\n\n /**\n * Optional tabs to display above the scrolling pane\n */\n tabs?: React.ReactNode\n}\n\nconst CodeEditorPane = ({\n children,\n className,\n minSize,\n maxSize,\n containerRef,\n tabs,\n ...props\n}: CodeEditorPaneProps) => {\n return (\n <Panel\n {...props}\n minSize={minSize}\n maxSize={maxSize}\n className={cn(className)}\n >\n {tabs}\n <div\n className={cn(\n 'bg-background [&::-webkit-scrollbar-thumb]:bg-foreground/10 [&::-webkit-scrollbar-thumb]:hover:bg-foreground/20 [&::-webkit-scrollbar-track]:bg-card border-neutral-softest h-full flex-1 overflow-x-hidden overflow-y-scroll border',\n className\n )}\n ref={containerRef}\n >\n {children}\n </div>\n </Panel>\n )\n}\nCodeEditorPane.displayName = 'CodeEditor.Pane'\n\nexport interface CodeEditorTabsProps\n extends PropsWithChildren,\n HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst CodeEditorTabs = ({\n children,\n className,\n ...props\n}: CodeEditorTabsProps) => {\n const validChildren = Children.toArray(children).filter((child) => {\n if (!isValidElement(child)) return false\n const type = child.type as { displayName?: string }\n return (\n type.displayName === 'CodeEditor.Tab' ||\n type.displayName === 'CodeEditor.CustomTabElement'\n )\n })\n\n return (\n <div\n {...props}\n className={cn(\n 'code-editor-tabs bg-background border-neutral-softest flex w-full flex-row overflow-x-scroll overflow-y-hidden border-b [&::-webkit-scrollbar]:hidden',\n className\n )}\n >\n {validChildren}\n </div>\n )\n}\nCodeEditorTabs.displayName = 'CodeEditor.Tabs'\n\nexport interface CodeEditorTabProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'title'> {\n id: string\n title?: string | ReactNode\n className?: string\n active?: boolean\n closable?: boolean\n grow?: boolean\n icon?: ReactNode\n invalid?: boolean\n dirty?: boolean\n saving?: boolean\n onClick?: (id: string) => void\n onClose?: (id: string) => void\n\n /**\n * If true, the tab will not be interactive\n * Useful for loading states\n */\n disabled?: boolean\n\n /**\n * Custom styles for the tab\n */\n customStyles?: CodeEditorTabStateCustomStyles\n}\n\n/**\n * Allows for custom styles to be applied to the tab based on its state\n *\n * @example\n * <CodeEditor.Tab\n * customStyles={{\n * active: 'text-foreground bg-background',\n * inactive: 'text-body-muted bg-muted',\n * dirty: 'text-yellow-700/90 italic dark:text-yellow-300/70',\n * invalid: 'text-red-700 dark:text-red-400',\n * disabled: 'cursor-not-allowed opacity-75',\n * }}\n * />\n */\ntype CodeEditorTabStateCustomStyles = {\n active?: string\n inactive?: string\n dirty?: string\n invalid?: string\n disabled?: string\n saving?: string\n}\n\nconst CodeEditorTab = ({\n id,\n title,\n className,\n active,\n closable,\n grow,\n dirty,\n invalid,\n saving,\n onClick,\n onClose,\n icon,\n disabled,\n customStyles,\n ...props\n}: CodeEditorTabProps) => {\n const [hoveredCloseIntent, setHoveredCloseIntent] = useState(false)\n const handleClose = (e: React.MouseEvent<HTMLButtonElement>) => {\n // stop the event from bubbling up to the parent tab click handler\n e.stopPropagation()\n onClose?.(id)\n setHoveredCloseIntent(false)\n }\n const closeButton = useMemo(\n () => (\n <button\n className={cn(\n 'text-body-muted hover:bg-muted hover:dark:bg-foreground/15 hover:text-foreground ml-auto h-full rounded-sm p-0.5',\n hoveredCloseIntent && 'bg-background/80',\n hoveredCloseIntent &&\n dirty &&\n `!bg-foreground/5 dark:!bg-foreground/10`\n )}\n onMouseEnter={() => setHoveredCloseIntent(true)}\n onMouseLeave={() => setHoveredCloseIntent(false)}\n onClick={handleClose}\n >\n <Icon name=\"x\" className=\"h-3.5 w-3.5\" />\n </button>\n ),\n [hoveredCloseIntent, onClose, id, active]\n )\n\n return (\n <div\n {...props}\n className={cn(\n 'code-editor-tab bg-background relative flex w-fit cursor-pointer items-center justify-start gap-2.5 rounded-sm rounded-t-none border-r py-2 pr-2 pl-3 text-sm whitespace-nowrap select-none first-of-type:border-l-0',\n grow && 'flex-1',\n active && 'text-foreground bg-background',\n !active && 'text-body-muted bg-muted',\n dirty && !saving && 'text-yellow-700/90 italic dark:text-yellow-300/70',\n invalid && 'text-red-700 dark:text-red-400',\n disabled && 'cursor-not-allowed opacity-75',\n className,\n\n // Override styles\n customStyles && customStyles.active,\n customStyles && customStyles.inactive,\n customStyles && customStyles.dirty,\n customStyles && customStyles.invalid,\n customStyles && customStyles.disabled,\n customStyles && customStyles.saving\n )}\n key={id}\n onClick={() => onClick?.(id)}\n >\n <div className=\"flex items-center gap-1.5\">\n {icon && <span className=\"flex items-center\">{icon}</span>}\n\n <span title={typeof title === 'string' ? title : undefined}>\n {title}\n </span>\n </div>\n {closable && !dirty && closeButton}\n {dirty && !saving && (\n <span\n onMouseEnter={() => setHoveredCloseIntent(true)}\n className=\"text-body-muted ml-auto flex h-full w-3 items-center justify-center text-xs\"\n >\n {!hoveredCloseIntent ? (\n <Icon name=\"circle\" className=\"fill-foreground h-2.5 w-2.5\" />\n ) : closable ? (\n closeButton\n ) : (\n <Icon name=\"circle\" className=\"fill-foreground h-2.5 w-2.5\" />\n )}\n </span>\n )}\n\n {saving && (\n <div className=\"text-muted-foreground ml-auto flex h-full w-3 items-center justify-center\">\n <Icon name=\"loader-circle\" className=\"size-5 animate-spin\" />\n </div>\n )}\n\n {saving && (\n <div className=\"pointer-events-none absolute bottom-0 left-0 h-0.5 w-full overflow-hidden\">\n <div\n className={cn(\n 'absolute h-full w-3/4 -translate-x-full bg-blue-500 dark:bg-blue-300',\n styles.editorTabLoadingBar\n )}\n />\n </div>\n )}\n </div>\n )\n}\nCodeEditorTab.displayName = 'CodeEditor.Tab'\n\nexport interface CodeEditorCommandBarProps\n extends PropsWithChildren,\n HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst CodeEditorCommandBar = ({\n children,\n className,\n ...props\n}: CodeEditorCommandBarProps) => {\n return (\n <div\n {...props}\n className={cn(\n 'code-editor-command-bar bg-muted rounded-sm rounded-b-none px-3 py-1',\n className\n )}\n >\n {children}\n </div>\n )\n}\nCodeEditorCommandBar.displayName = 'CodeEditor.CommandBar'\n\nexport interface CodeEditorCustomElementProps\n extends PropsWithChildren,\n HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst CustomTabElement = ({\n children,\n className,\n ...props\n}: CodeEditorCustomElementProps) => {\n return (\n <div className={cn('h-full w-full', className)} {...props}>\n {children}\n </div>\n )\n}\nCustomTabElement.displayName = 'CodeEditor.CustomTabElement'\n\nexport interface CodeEditorEmptyProps\n extends PropsWithChildren,\n HTMLAttributes<HTMLDivElement> {\n className?: string\n}\n\nconst Empty = ({ children, className, ...props }: CodeEditorEmptyProps) => {\n return (\n <div className={cn('h-full w-full', className)} {...props}>\n {children}\n </div>\n )\n}\n\nEmpty.displayName = 'CodeEditor.Empty'\n\nconst CodeEditor = Object.assign(CodeEditorLayout, {\n Pane: CodeEditorPane,\n CommandBar: CodeEditorCommandBar,\n Empty: Empty,\n Tabs: CodeEditorTabs,\n Tab: CodeEditorTab,\n CustomTabElement: CustomTabElement,\n})\n\nexport { CodeEditor }\n","import { createContext, useState, type ReactNode } from 'react'\n\nexport type Screen = {\n id: string\n title: string\n component: ReactNode\n}\n\ntype ModalContextType = {\n screens: Screen[]\n currentIndex: number\n isOpen: boolean\n openScreen: (screen: Screen) => void\n close: () => void\n navigateTo: (index: number) => void\n pushScreen: (screen: Screen) => void\n popScreen: () => void\n navigationDirection: 'forward' | 'backward'\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport const ModalContext = createContext<ModalContextType | undefined>(\n undefined\n)\n\nexport function ModalProvider({\n children,\n}: {\n children: ReactNode | ((props: ModalContextType) => ReactNode)\n}) {\n const [screens, setScreens] = useState<Screen[]>([])\n const [currentIndex, setCurrentIndex] = useState(0)\n const [isOpen, setIsOpen] = useState(false)\n const [navigationDirection, setNavigationDirection] = useState<\n 'forward' | 'backward'\n >('forward')\n\n const openScreen = (screen: Screen) => {\n // Don't reopen if already open to prevent infinite loops\n if (!isOpen) {\n setScreens([screen])\n setCurrentIndex(0)\n setIsOpen(true)\n setNavigationDirection('forward')\n }\n }\n\n const close = () => {\n setIsOpen(false)\n // Reset after animation completes\n setTimeout(() => {\n setScreens([])\n setCurrentIndex(0)\n }, 200)\n }\n\n const navigateTo = (index: number) => {\n setScreens((prevScreens) => {\n if (index >= 0 && index < prevScreens.length) {\n setNavigationDirection(index > currentIndex ? 'forward' : 'backward')\n setCurrentIndex(index)\n }\n return prevScreens\n })\n }\n\n const pushScreen = (screen: Screen) => {\n setScreens((prev) => {\n const newScreens = [...prev, screen]\n setCurrentIndex(newScreens.length - 1)\n return newScreens\n })\n setNavigationDirection('forward')\n }\n\n const popScreen = () => {\n setScreens((prev) => {\n if (prev.length > 1) {\n setNavigationDirection('backward')\n setCurrentIndex((idx) => idx - 1)\n return prev.slice(0, prev.length - 1)\n } else {\n close()\n return prev\n }\n })\n }\n\n return (\n <ModalContext.Provider\n value={{\n screens,\n currentIndex,\n isOpen,\n openScreen,\n close,\n navigateTo,\n pushScreen,\n popScreen,\n navigationDirection,\n }}\n >\n {typeof children === 'function'\n ? children({\n screens,\n currentIndex,\n isOpen,\n openScreen,\n close,\n navigateTo,\n pushScreen,\n popScreen,\n navigationDirection,\n })\n : children}\n </ModalContext.Provider>\n )\n}\n","import { useContext } from 'react'\nimport { ModalContext } from '@/context/ModalContext'\n\nexport function useModal() {\n const context = useContext(ModalContext)\n if (context === undefined) {\n throw new Error('useModal must be used within a ModalProvider')\n }\n return context\n}\n","'use client'\n\nimport { useEffect } from 'react'\nimport { motion, AnimatePresence } from 'motion/react'\nimport { Icon } from '../Icon'\nimport { assert } from '@/lib/typeUtils'\nimport { Heading } from '../Heading'\nimport React from 'react'\nimport { useModal } from '@/hooks/useModal'\nimport { Screen } from '@/context/ModalContext'\n\nconst MotionHeading = motion.create(Heading)\n\nconst animationDuration = 0.15\n\ninterface ContextDropdownProps {\n renderTitle?: (screen: Screen, index: number) => React.ReactNode\n}\n\nexport function ContextDropdown({ renderTitle }: ContextDropdownProps) {\n const {\n screens,\n currentIndex,\n isOpen,\n close,\n popScreen,\n navigationDirection,\n } = useModal()\n\n // Animation variants for title and content\n const slideVariants = {\n enter: (isForward: boolean) => ({\n x: isForward ? '100%' : '-100%',\n opacity: 0,\n width: '100%',\n }),\n center: {\n x: 0,\n opacity: 1,\n width: '100%',\n },\n exit: (isForward: boolean) => ({\n x: isForward ? '-100%' : '100%',\n opacity: 0,\n width: '100%',\n }),\n }\n\n // Handle escape key to close modal\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n close()\n }\n }\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape)\n // Prevent body scrolling when modal is open\n document.body.style.overflow = 'hidden'\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape)\n document.body.style.overflow = 'auto'\n }\n }, [isOpen, close])\n\n if (!isOpen) return null\n\n const currentScreen = screens[currentIndex]\n assert(currentScreen, 'No current screen')\n const isForward = navigationDirection === 'forward'\n\n return (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n className=\"fixed inset-0 z-50 flex flex-col bg-transparent\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: animationDuration }}\n >\n <div className=\"flex h-16 items-center justify-between border-b px-4\">\n <div className=\"flex items-center gap-2\">\n {currentIndex > 0 && (\n <button\n onClick={popScreen}\n className=\"hover:bg-muted mr-2 rounded-full border p-2 disabled:opacity-50 disabled:hover:bg-transparent\"\n aria-label=\"Go back\"\n >\n <Icon name=\"chevron-left\" className=\"size-4\" />\n </button>\n )}\n\n {/* Animated title */}\n <div className=\"relative h-7 w-fit min-w-xs overflow-x-hidden\">\n <AnimatePresence initial={false} mode=\"sync\" custom={isForward}>\n <MotionHeading\n key={`title-${currentIndex}`}\n className=\"text-md absolute !leading-6 font-medium\"\n custom={isForward}\n variants={slideVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n variant=\"sm\"\n transition={{ type: 'tween', duration: animationDuration }}\n >\n {renderTitle\n ? renderTitle(currentScreen, currentIndex)\n : currentScreen.title}\n </MotionHeading>\n </AnimatePresence>\n </div>\n </div>\n\n {/* Static right side with close button */}\n <button\n onClick={close}\n className=\"hover:bg-muted rounded-full border p-2\"\n aria-label=\"Close modal\"\n >\n <Icon name=\"x\" className=\"size-4\" />\n </button>\n </div>\n\n {/* Modal Content with Animation */}\n <div className=\"relative flex-1 overflow-hidden\">\n <AnimatePresence initial={false} mode=\"wait\" custom={isForward}>\n <motion.div\n key={currentIndex}\n className=\"absolute inset-0 overflow-auto\"\n custom={isForward}\n variants={slideVariants}\n initial=\"enter\"\n animate=\"center\"\n exit=\"exit\"\n transition={{ type: 'tween', duration: animationDuration }}\n >\n {currentScreen.component}\n </motion.div>\n </AnimatePresence>\n </div>\n </motion.div>\n )}\n </AnimatePresence>\n )\n}\n","import * as React from 'react'\nimport { Button, ButtonIcon } from '../Button'\nimport { ButtonVariant, ButtonSize, ButtonContext } from '@/types'\nimport { cn } from '@/lib/utils'\n\ntype Attributes = Pick<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n | 'disabled'\n | 'onClick'\n | 'type'\n | 'role'\n | 'onMouseEnter'\n | 'onMouseLeave'\n | 'onMouseDown'\n | 'onMouseUp'\n>\n\nexport interface IconButtonProps extends Attributes {\n icon: React.ReactNode\n variant?: ButtonVariant\n size?: ButtonSize\n context?: ButtonContext\n className?: string\n asChild?: boolean\n 'aria-label': string // Required for accessibility\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n ({ icon, size = 'md', className, ...props }, ref) => {\n // Map button sizes to square dimensions with proper icon sizing\n const sizeClasses = {\n xs: 'h-7 w-7 [&_svg]:size-3',\n sm: 'h-8 w-8 [&_svg]:size-3.5',\n md: 'h-9 w-9 [&_svg]:size-4',\n lg: 'h-10 w-10 [&_svg]:size-5',\n }\n\n return (\n <Button\n ref={ref}\n className={cn(sizeClasses[size], 'p-0', className)}\n {...props}\n >\n <ButtonIcon>{icon}</ButtonIcon>\n </Button>\n )\n }\n)\nIconButton.displayName = 'IconButton'\n\nexport { IconButton }\n","import {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n} from '@radix-ui/react-dialog'\nimport { useModal } from '@/hooks/useModal'\nimport { cn } from '@/lib/utils'\nimport { IconButton } from '@/components/IconButton'\nimport { Icon } from '../Icon'\nimport { Screen } from '@/context/ModalContext'\n\nexport interface ModalProps {\n closable?: boolean\n className?: string\n layout: 'default' | 'custom'\n onClose?: (currentScreen: Screen) => void\n}\n\nexport const Modal = ({\n closable = false,\n className,\n layout = 'default',\n onClose,\n}: ModalProps) => {\n const { screens, currentIndex, isOpen, close } = useModal()\n const currentScreen = screens[currentIndex]\n\n const handleOpenChange = (open: boolean) => {\n if (closable && !open) {\n close()\n onClose?.(currentScreen)\n }\n }\n\n if (!isOpen) return null\n if (!currentScreen) return null\n\n return (\n <Dialog open={isOpen} onOpenChange={handleOpenChange}>\n <DialogPortal>\n <DialogOverlay className=\"bg-surface-secondary fixed top-0 z-10 h-screen w-screen opacity-85\" />\n\n {layout === 'default' ? (\n <DialogContent\n className={cn(\n 'bg-surface-primary border-neutral-default fixed top-1/2 left-1/2 z-20 flex h-auto max-h-[85vh] min-h-[40vh] w-[90vw] max-w-[800px] -translate-x-1/2 -translate-y-1/2 flex-col gap-3 overflow-y-auto rounded-md p-10 shadow-lg outline-none',\n className\n )}\n >\n {closable && (\n <DialogClose asChild>\n <IconButton\n variant=\"tertiary\"\n icon={\n <Icon\n name=\"x\"\n className=\"text-neutral-default hover:text-neutral-default/80 size-7 focus:outline-none\"\n />\n }\n aria-label=\"Close modal\"\n className=\"absolute top-4 right-4 focus:ring-0 focus:outline-none focus-visible:ring-0\"\n />\n </DialogClose>\n )}\n {currentScreen.title && (\n <DialogTitle className=\"text-display-sm\">\n {currentScreen.title}\n </DialogTitle>\n )}\n <DialogDescription>{currentScreen.component}</DialogDescription>\n </DialogContent>\n ) : (\n <DialogContent\n className={cn(\n 'bg-surface-primary border-neutral-default fixed top-1/2 left-1/2 z-20 flex h-auto max-h-[85vh] min-h-[40vh] w-[90vw] max-w-[800px] -translate-x-1/2 -translate-y-1/2 flex-col gap-3 overflow-y-auto rounded-md p-10 shadow-lg outline-none',\n className\n )}\n >\n {closable && (\n <DialogClose asChild>\n <IconButton\n variant=\"tertiary\"\n icon={\n <Icon\n name=\"x\"\n className=\"text-neutral-default hover:text-neutral-default/80 size-7 focus:outline-none\"\n />\n }\n aria-label=\"Close modal\"\n className=\"absolute top-4 right-4 focus:ring-0 focus:outline-none focus-visible:ring-0\"\n />\n </DialogClose>\n )}\n {currentScreen.component}\n </DialogContent>\n )}\n </DialogPortal>\n </Dialog>\n )\n}\n","'use client'\n\nimport React, {\n useLayoutEffect,\n useRef,\n useState,\n isValidElement,\n cloneElement,\n Children,\n} from 'react'\nimport type { ReactNode } from 'react'\nimport { cn } from '@/lib/utils'\nimport { Text } from '../Text'\nimport { Heading } from '../Heading'\n\nconst TIMELINE_STYLES = {\n line: 'bg-surface-tertiary-default',\n iconContainer:\n 'relative z-10 flex h-12 w-12 flex-shrink-0 items-center justify-center rounded-full',\n iconBackground:\n 'bg-surface-primary-default border-border-neutral-softest absolute inset-0 rounded-full border-2 transition-all duration-300',\n iconContent: 'relative z-10 flex h-full w-full items-center justify-center',\n iconIcon:\n 'text-muted flex items-center justify-center transition-colors duration-300 [&>svg]:h-4 [&>svg]:w-4',\n iconNumber: 'text-muted text-sm font-medium transition-colors duration-300',\n transition: 'transition-opacity duration-300',\n} as const\n\nexport interface TimelineItemProps {\n icon?: ReactNode\n children: ReactNode\n className?: string\n index?: number\n isLast?: boolean\n setsize?: number\n}\n\nfunction TimelineItem({\n icon,\n children,\n className,\n index = 0,\n isLast = false,\n setsize,\n}: TimelineItemProps) {\n const enhancedChildren = Children.map(children, (child) => {\n if (isValidElement(child) && child.type === TimelineContent) {\n return cloneElement(child, {\n ...child.props,\n isLast,\n })\n }\n return child\n })\n\n return (\n <li\n className={cn('relative flex items-start gap-4', className)}\n data-timeline-item\n aria-posinset={index + 1}\n aria-setsize={setsize}\n >\n <div className={TIMELINE_STYLES.iconContainer}>\n <div className={TIMELINE_STYLES.iconBackground} />\n <div className={TIMELINE_STYLES.iconContent}>\n {icon ? (\n <div className={TIMELINE_STYLES.iconIcon}>{icon}</div>\n ) : (\n <div className={TIMELINE_STYLES.iconNumber}>{index + 1}</div>\n )}\n </div>\n </div>\n\n {enhancedChildren}\n </li>\n )\n}\n\nexport interface TimelineContentProps {\n children: ReactNode\n className?: string\n isLast?: boolean\n}\n\nfunction TimelineContent({\n children,\n className,\n isLast,\n}: TimelineContentProps) {\n const childrenArray = Children.toArray(children)\n let titleElement: React.ReactNode = null\n let timestampElement: React.ReactNode = null\n const otherChildren: React.ReactNode[] = []\n\n childrenArray.forEach((child) => {\n if (isValidElement(child)) {\n if (child.type === TimelineTitle) {\n titleElement = child\n } else if (child.type === TimelineTimestamp) {\n timestampElement = child\n } else {\n otherChildren.push(child)\n }\n } else {\n otherChildren.push(child)\n }\n })\n\n return (\n <div\n className={cn('min-w-0 flex-1', !isLast && 'pb-6', className)}\n data-testid={isLast ? 'timeline-content-last' : 'timeline-content'}\n >\n {(titleElement || timestampElement) && (\n <div className=\"mb-1 flex items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1\">{titleElement}</div>\n {timestampElement && (\n <div className=\"flex-shrink-0\">{timestampElement}</div>\n )}\n </div>\n )}\n {otherChildren.length > 0 && (\n <div className=\"space-y-1\">{otherChildren}</div>\n )}\n </div>\n )\n}\n\nexport interface TimelineTitleProps {\n children: ReactNode\n className?: string\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'div'\n}\n\nfunction TimelineTitle({\n children,\n className,\n as = 'div',\n}: TimelineTitleProps) {\n if (as === 'div') {\n return (\n <div\n className={cn('text-heading-xs', TIMELINE_STYLES.transition, className)}\n >\n {children}\n </div>\n )\n }\n\n return (\n <Heading\n variant=\"xs\"\n as={as}\n className={cn(TIMELINE_STYLES.transition, className)}\n >\n {children}\n </Heading>\n )\n}\n\nexport interface TimelineDescriptionProps {\n children: ReactNode\n className?: string\n}\n\nfunction TimelineDescription({\n children,\n className,\n}: TimelineDescriptionProps) {\n return (\n <Text\n variant=\"sm\"\n muted\n className={cn('leading-relaxed', TIMELINE_STYLES.transition, className)}\n >\n {children}\n </Text>\n )\n}\n\nexport interface TimelineTimestampProps {\n children: ReactNode\n className?: string\n}\n\nfunction TimelineTimestamp({ children, className }: TimelineTimestampProps) {\n return (\n <Text\n variant=\"xs\"\n muted\n className={cn(TIMELINE_STYLES.transition, className)}\n >\n {children}\n </Text>\n )\n}\n\nexport interface TimelineSeparatorProps {\n className?: string\n}\n\nexport interface TimelineRootProps {\n children: ReactNode\n className?: string\n hasMore?: boolean\n}\n\nfunction TimelineRoot({\n children,\n className,\n hasMore = false,\n}: TimelineRootProps) {\n const childrenArray = Children.toArray(children)\n const itemsOnly = childrenArray.filter(\n (child) => isValidElement(child) && child.type === TimelineItem\n )\n const itemCount = itemsOnly.length\n const timelineRef = useRef<HTMLDivElement>(null)\n const [lineHeight, setLineHeight] = useState<number | null>(null)\n\n let itemIndex = 0\n const enhancedChildren = childrenArray.map((child) => {\n if (isValidElement(child) && child.type === TimelineItem) {\n const cloned = cloneElement(child, {\n ...child.props,\n index: itemIndex,\n isLast: itemIndex === itemCount - 1,\n setsize: itemCount,\n })\n itemIndex += 1\n return cloned\n }\n return child\n })\n\n useLayoutEffect(() => {\n if (timelineRef.current && itemCount > 1) {\n const timelineItems = timelineRef.current.querySelectorAll(\n '[data-timeline-item]'\n )\n if (timelineItems.length >= 2) {\n const lastItem = timelineItems[timelineItems.length - 1] as HTMLElement\n\n // Calculate distance from center of first icon to center of last icon\n const firstIconCenter = 24 // 1.5rem (top-6) + 0.75rem (half of 3rem icon height)\n const lastItemTop = lastItem.offsetTop\n const baseHeight = lastItemTop + 24 - firstIconCenter // 24px = center of last icon\n\n // If hasMore is true, extend the line by an additional 2rem (32px) past the last icon\n const calculatedHeight = hasMore ? baseHeight + 32 : baseHeight\n\n setLineHeight(calculatedHeight)\n }\n }\n }, [itemCount, children, hasMore])\n\n return (\n <div className={cn('relative', className)}>\n {itemCount > 0 && (\n <div className=\"relative\" ref={timelineRef}>\n {itemCount > 1 && (\n <div\n className={cn(TIMELINE_STYLES.line, 'absolute top-6 left-6 w-px')}\n style={{\n height: lineHeight\n ? `${lineHeight}px`\n : hasMore\n ? `calc(100% - 2.5rem)`\n : `calc(100% - 4.5rem)`,\n }}\n aria-hidden=\"true\"\n data-testid=\"timeline-connector\"\n />\n )}\n <ol className=\"space-y-6\">{enhancedChildren}</ol>\n </div>\n )}\n </div>\n )\n}\n\nconst Timeline = Object.assign(TimelineRoot, {\n Item: TimelineItem,\n Content: TimelineContent,\n Title: TimelineTitle,\n Description: TimelineDescription,\n Timestamp: TimelineTimestamp,\n})\n\nexport { Timeline }\n","import { useState, useRef, useEffect } from 'react'\nimport { cn } from '../../lib/utils'\nimport { Icon } from '../Icon'\nimport { Popover, PopoverContent, PopoverTrigger } from '../Popover'\nimport { AnimatePresence, motion, Variants } from 'motion/react'\nimport React from 'react'\n\ninterface ModelSelectorConfig {\n model: string\n onModelChange: (v: string) => void\n availableModels: { label: string; value: string }[]\n}\n\ninterface AIChatModelSelectorProps {\n modelSelector?: ModelSelectorConfig\n className?: string\n}\n\nconst AnimatedLabel = React.memo(function AnimatedLabel({\n label,\n className = '',\n}: {\n label: string\n className?: string\n}) {\n const parent = {\n visible: {\n transition: { staggerChildren: 0.03 },\n },\n }\n\n const char: Variants = {\n hidden: { opacity: 0, y: 10, filter: 'blur(4px)' },\n visible: {\n opacity: 1,\n y: 0,\n filter: 'blur(0px)',\n transition: { duration: 0.32, ease: [0.4, 0, 0.2, 1] },\n },\n exit: { opacity: 0, y: -10, filter: 'blur(4px)' },\n }\n\n return (\n <motion.span\n className={cn('inline-flex', className)}\n variants={parent}\n initial=\"hidden\"\n animate=\"visible\"\n exit=\"hidden\"\n style={{ willChange: 'transform, opacity' }}\n >\n {label.split('').map((c, i) => (\n <motion.span\n key={`${label}-${i}`}\n variants={char}\n className=\"block\"\n style={{ willChange: 'transform, opacity' }}\n >\n {c === ' ' ? '\\u00A0' : c}\n </motion.span>\n ))}\n </motion.span>\n )\n})\n\nexport function AIChatModelSelector({\n modelSelector,\n className,\n}: AIChatModelSelectorProps) {\n if (!modelSelector) return null\n const { model, onModelChange, availableModels } = modelSelector\n const [open, setOpen] = useState(false)\n const current = availableModels.find((m) => m.value === model) || {\n label: 'Unknown',\n value: '',\n }\n\n const prevLabelRef = useRef(current.label)\n const [outgoingLabel, setOutgoingLabel] = useState<string | null>(null)\n\n useEffect(() => {\n if (current.label !== prevLabelRef.current) {\n const prev = prevLabelRef.current\n prevLabelRef.current = current.label\n\n setOutgoingLabel(prev)\n\n requestAnimationFrame(() => {\n setOutgoingLabel(null)\n })\n }\n }, [current.label])\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className={cn(\n 'flex h-8 items-center rounded-md px-1 text-xs',\n className\n )}\n >\n <motion.div\n layout\n transition={{ type: 'spring', stiffness: 320, damping: 50 }}\n className=\"relative inline-flex items-center gap-1 overflow-hidden whitespace-nowrap\"\n >\n <AnimatePresence initial={false}>\n {outgoingLabel && (\n <motion.div\n initial={{ opacity: 1 }}\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n transition={{ duration: 0.18 }}\n className=\"pointer-events-none absolute top-0 left-0 select-none\"\n >\n <AnimatedLabel key={outgoingLabel} label={outgoingLabel} />\n </motion.div>\n )}\n </AnimatePresence>\n\n <AnimatedLabel key={current.value} label={current.label} />\n\n <span>\n <Icon name=\"chevron-down\" className=\"size-3\" />\n </span>\n </motion.div>\n </button>\n </PopoverTrigger>\n\n <PopoverContent\n align=\"start\"\n className=\"w-[220px] rounded-[7px] border p-0 shadow-lg\"\n side=\"top\"\n sideOffset={8}\n >\n <div className=\"flex flex-col py-1\">\n {availableModels.map((m) => (\n <button\n key={m.value}\n type=\"button\"\n onClick={() => {\n onModelChange(m.value)\n setOpen(false)\n }}\n className={cn(\n 'flex items-center justify-between gap-2 px-5 py-2 text-xs transition-colors'\n )}\n >\n <span>{m.label}</span>\n {m.value === model && <Icon name=\"check\" className=\"size-3\" />}\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n )\n}\n","import { createElement, FunctionComponent, ReactNode } from 'react'\n\ntype ClassName = string\n\nexport type FcOrClassName<P> = FunctionComponent<P> | ClassName\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type BaseComponents = Record<string, FcOrClassName<any> | ReactNode>\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype FC = FunctionComponent<any>\n\nexport type DefaultComponents<T extends BaseComponents> = {\n [key in keyof T]: T[key] extends FcOrClassName<infer P>\n ? FunctionComponent<P & { className: string }>\n : T[key]\n}\n\nexport const renderComponent = <T extends BaseComponents, K extends keyof T>(\n defaultComponents: DefaultComponents<T>,\n userComponents: Partial<T> | undefined,\n key: K,\n props: T[K] extends FcOrClassName<infer P> ? P : never\n): ReactNode => {\n const userComponent = userComponents?.[key]\n if (typeof userComponent === 'function') {\n const Component = userComponent as FC\n return createElement(Component, props)\n }\n\n // Default component handling\n const DefaultComponent = defaultComponents[key] as FC\n return createElement(DefaultComponent, {\n ...(props as object),\n className: typeof userComponent === 'string' ? userComponent : '',\n })\n}\n","import { createContext, useContext } from 'react'\nimport type { AIChatContextValue } from './types'\n\nexport const AIChatContext = createContext<AIChatContextValue>({\n messages: [],\n isLoading: false,\n})\n\nexport const useAIChat = () => {\n const context = useContext(AIChatContext)\n if (!context) {\n throw new Error('useAIChat must be used within an AIChatProvider')\n }\n return context\n}\n","import React, { ReactNode, useEffect, useRef, useState } from 'react'\nimport { cn } from '../../lib/utils'\nimport { IconButton } from '../IconButton'\nimport { Icon } from '../Icon'\nimport { AIChatModelSelector } from './AIChatModelSelector'\nimport {\n DefaultComponents,\n FcOrClassName,\n renderComponent,\n} from './componentsTypes'\nimport { useAIChat } from './context'\n\nexport interface AIChatMessageComposerProps {\n className?: string\n components?: Partial<AIChatMessageComposerComponents>\n}\n\nexport type AIChatMessageComposerComponents = {\n submitButton: FcOrClassName<{\n disabled?: boolean\n type: 'submit'\n }>\n modelSelector: FcOrClassName<{\n model: string\n onModelChange: (model: string) => void\n availableModels: { label: string; value: string }[]\n }>\n additionalActions: ReactNode\n}\n\nconst defaultComponents: DefaultComponents<AIChatMessageComposerComponents> = {\n submitButton: ({\n disabled,\n type,\n className,\n }: {\n disabled?: boolean\n type: 'submit'\n className: string\n }) => (\n <IconButton\n type={type}\n disabled={disabled}\n variant=\"secondary\"\n icon={<Icon name=\"arrow-up\" className=\"size-4\" />}\n aria-label=\"Send message\"\n className={cn('h-8 w-8 rounded-[7px]', className)}\n />\n ),\n modelSelector: ({\n model,\n onModelChange,\n availableModels,\n className,\n }: {\n model: string\n onModelChange: (model: string) => void\n availableModels: { label: string; value: string }[]\n className: string\n }) => (\n <AIChatModelSelector\n modelSelector={{ model, onModelChange, availableModels }}\n /* Inner border radius = outer border radius (rounded-lg = 8px) - border width (1px) = 7px */\n className={cn('rounded-[7px]', className)}\n />\n ),\n additionalActions: null,\n}\n\nexport function AIChatMessageComposer({\n className,\n components,\n}: AIChatMessageComposerProps) {\n const {\n onSendMessage,\n isLoading,\n model,\n onModelChange,\n availableModels,\n initialInput,\n } = useAIChat()\n const [message, setMessage] = useState(initialInput || '')\n const [isFocused, setIsFocused] = useState(false)\n const textareaRef = useRef<HTMLTextAreaElement>(null)\n\n const adjustHeight = () => {\n const textarea = textareaRef.current\n if (!textarea) return\n textarea.style.height = 'auto'\n textarea.style.height = `${textarea.scrollHeight}px`\n }\n\n // Initialize height on mount and adjust on content change\n useEffect(() => {\n adjustHeight()\n }, [message])\n\n // Set initial input only once when component mounts with an initialInput\n useEffect(() => {\n if (initialInput) {\n setMessage(initialInput)\n }\n }, [])\n\n const handleSubmit = (e?: React.FormEvent) => {\n e?.preventDefault()\n if (message.trim() && onSendMessage && !isLoading) {\n onSendMessage(message)\n setMessage('')\n if (textareaRef.current) {\n textareaRef.current.style.height = 'auto'\n }\n }\n }\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault()\n handleSubmit()\n }\n }\n\n return (\n <form onSubmit={handleSubmit} className={cn('mt-auto p-4', className)}>\n <div className=\"flex flex-col\">\n <div\n className={cn(\n 'flex flex-col overflow-hidden rounded-lg border transition-shadow',\n isFocused && 'ring-1 ring-offset-1'\n )}\n >\n <textarea\n ref={textareaRef}\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n onKeyDown={handleKeyDown}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n placeholder=\"Send a message...\"\n rows={1}\n className={cn(\n 'max-h-[300px] min-h-[44px] w-full resize-none bg-transparent px-4 pt-3',\n // 'text-neutral-50 placeholder:text-neutral-400',\n 'focus:outline-none',\n 'text-sm'\n )}\n disabled={isLoading}\n />\n <div className=\"flex items-center justify-between p-3 pt-2\">\n <div className=\"flex items-center gap-2\">\n {availableModels &&\n model &&\n onModelChange &&\n renderComponent(\n defaultComponents,\n components,\n 'modelSelector',\n {\n model,\n onModelChange,\n availableModels,\n }\n )}\n {components?.additionalActions}\n </div>\n {renderComponent(defaultComponents, components, 'submitButton', {\n disabled: !message.trim() || isLoading,\n type: 'submit',\n })}\n </div>\n </div>\n </div>\n </form>\n )\n}\n","import { cn } from '../../../lib/utils'\nimport { Text } from '../../Text'\nimport type { BasePartProps } from '../types'\n\nexport interface AIChatMessageFilePartProps extends BasePartProps {\n mimeType: string\n data: string\n fileName?: string\n}\n\nexport function AIChatMessageFilePart({\n mimeType,\n data,\n fileName,\n className,\n}: AIChatMessageFilePartProps) {\n // Determine file icon based on mime type\n const getFileIcon = () => {\n if (mimeType.startsWith('image/')) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n )\n } else if (mimeType.startsWith('video/')) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z\"\n />\n </svg>\n )\n } else if (mimeType.startsWith('audio/')) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3\"\n />\n </svg>\n )\n } else {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-5 w-5\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 21h10a2 2 0 002-2V9.414a1 1 0 00-.293-.707l-5.414-5.414A1 1 0 0012.586 3H7a2 2 0 00-2 2v14a2 2 0 002 2z\"\n />\n </svg>\n )\n }\n }\n\n // Create a download link for the file\n const downloadUrl = `data:${mimeType};base64,${data}`\n\n return (\n <div\n className={cn(\n 'rounded-md border border-neutral-600 bg-neutral-800 p-3',\n className\n )}\n >\n <div className=\"mb-2 flex items-center gap-2\">\n <div className=\"text-neutral-400\">{getFileIcon()}</div>\n <Text variant=\"sm\" className=\"font-medium text-neutral-50\">\n {fileName || 'File Attachment'}\n </Text>\n </div>\n <a\n href={downloadUrl}\n download={fileName}\n className=\"text-brand-yellow-300 hover:text-brand-yellow-200 inline-flex items-center gap-1\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\"\n />\n </svg>\n <Text variant=\"sm\">Download</Text>\n </a>\n </div>\n )\n}\n","import { cn } from '../../../lib/utils'\nimport { Text } from '../../Text'\nimport type { BasePartProps } from '../types'\n\nexport interface AIChatMessageReasoningPartProps extends BasePartProps {\n reasoning: string\n}\n\nexport function AIChatMessageReasoningPart({\n reasoning,\n className,\n}: AIChatMessageReasoningPartProps) {\n return (\n <div className={cn('rounded-md bg-neutral-800 p-3', className)}>\n <Text variant=\"sm\" className=\"mb-1 font-medium text-neutral-50\">\n Reasoning:\n </Text>\n <Text variant=\"sm\" className=\"whitespace-pre-wrap text-neutral-200\">\n {reasoning}\n </Text>\n </div>\n )\n}\n","import { cn } from '../../../lib/utils'\nimport { Text } from '../../Text'\nimport type { BasePartProps } from '../types'\n\nexport interface AIChatMessageSourcePartProps extends BasePartProps {\n source: {\n id: string\n url: string\n title?: string\n }\n}\n\nexport function AIChatMessageSourcePart({\n source,\n className,\n}: AIChatMessageSourcePartProps) {\n return (\n <div\n className={cn(\n 'rounded-md border border-neutral-600 bg-neutral-800 p-3',\n className\n )}\n >\n <div className=\"mb-1 flex items-center gap-2\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4 text-neutral-400\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z\"\n />\n </svg>\n <Text variant=\"sm\" className=\"font-medium text-neutral-50\">\n Source Reference\n </Text>\n </div>\n <div className=\"mt-2\">\n <a\n href={source.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-brand-yellow-300 hover:text-brand-yellow-200 block hover:underline\"\n >\n <Text variant=\"sm\">{source.title || source.url}</Text>\n </a>\n <Text variant=\"sm\" className=\"mt-1 block text-neutral-400\">\n ID: {source.id}\n </Text>\n </div>\n </div>\n )\n}\n","import { cn } from '../../../lib/utils'\nimport type { BasePartProps } from '../types'\nimport ReactMarkdown from 'react-markdown'\nimport remarkGfm from 'remark-gfm'\n\nexport interface AIChatMessageTextPartProps extends BasePartProps {\n text: string\n}\n\n// The line-heights here have been left as the prose defaults for now, ideally they should be adjusted to match the design system\nexport function AIChatMessageTextPart({\n text,\n className,\n}: AIChatMessageTextPartProps) {\n return (\n <div\n className={cn(\n 'prose prose-sm dark:prose-invert min-w-0 break-words',\n 'prose-headings:font-light prose-headings:tracking-[0.0015em]',\n 'prose-h1:text-heading-xl',\n 'prose-h2:text-heading-lg',\n 'prose-h3:text-heading-md',\n 'prose-h4:text-heading-sm',\n 'prose-h5:text-heading-xs',\n 'prose-p:font-normal prose-p:tracking-[0.0025em]',\n 'prose-a:text-link prose-a:font-normal prose-a:underline-offset-4 prose-a:decoration-1 prose-a:tracking-[0.0025em]',\n className\n )}\n >\n <ReactMarkdown remarkPlugins={[remarkGfm]}>{text}</ReactMarkdown>\n </div>\n )\n}\n","import { ToolCall } from 'ai'\nimport { useState } from 'react'\nimport { ToolCallApprovalProps, ToolCallWithApproval } from './types'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype TC = ToolCall<string, any>\ntype ToolCallFn = (t: { toolCall: TC }) => Promise<string>\n\nexport const TOOL_CALL_ERROR_MESSAGE = 'Tool call error'\nexport const TOOL_CALL_REJECTED_MESSAGE = 'User rejected tool call'\n\nexport function useToolCallApproval({\n executeToolCall,\n requiresApproval,\n}: {\n executeToolCall: (toolCall: TC) => Promise<string>\n requiresApproval?: (toolCall: TC) => boolean | string\n}): ToolCallApprovalProps & { toolCallFn: ToolCallFn } {\n const [pendingToolCall, setPendingToolCall] =\n useState<ToolCallWithApproval | null>(null)\n\n const executeWithErrorHandling = async (toolCall: TC) => {\n try {\n return await executeToolCall(toolCall)\n } catch (error) {\n return `${TOOL_CALL_ERROR_MESSAGE}: ${error}`\n }\n }\n\n const toolCallFn = async ({ toolCall }: { toolCall: TC }) => {\n const confirmMessage = requiresApproval?.(toolCall)\n if (!confirmMessage) {\n return executeWithErrorHandling(toolCall)\n }\n\n // If the tool call requires approval, return a promise that resolves when the user approves the tool call\n return new Promise<string>((resolve, reject) => {\n setPendingToolCall({\n ...toolCall,\n approve: () => resolve('approved'),\n reject: () => reject('rejected'),\n ...(typeof confirmMessage === 'string' && {\n confirmMessage,\n }),\n })\n })\n .then(async () => {\n setPendingToolCall(null)\n return executeWithErrorHandling(toolCall)\n })\n .catch(() => {\n setPendingToolCall(null)\n return TOOL_CALL_REJECTED_MESSAGE\n })\n }\n\n return {\n pendingToolCall,\n toolCallFn,\n }\n}\n","import { motion, MotionConfig } from 'motion/react'\nimport { CheckIcon, UserCheck, XIcon } from 'lucide-react'\nimport { useEffect, useMemo, useState } from 'react'\nimport { cn } from '../../../lib/utils'\nimport { Button } from '../../Button'\nimport { IconButton } from '../../IconButton'\nimport { Text } from '../../Text'\nimport {\n BaseComponents,\n DefaultComponents,\n FcOrClassName,\n renderComponent,\n} from '../componentsTypes'\nimport { useAIChat } from '../context'\nimport {\n TOOL_CALL_ERROR_MESSAGE,\n TOOL_CALL_REJECTED_MESSAGE,\n} from '../toolCallApproval'\nimport type { BasePartProps } from '../types'\n\ntype ToolInvocationState = 'partial-call' | 'call' | 'result'\n\ntype ToolInvocationStatus = 'pending' | 'in-progress' | 'success' | 'error'\n\ninterface ToolInvocation {\n state: ToolInvocationState\n toolCallId: string\n toolName: string\n args: Record<string, unknown>\n result?: unknown\n}\n\nexport interface AIChatMessageToolPartProps extends BasePartProps {\n toolInvocation: ToolInvocation\n components?: Partial<AIChatMessageToolPartComponents>\n onAccept?: () => void\n onReject?: () => void\n}\n\nexport interface AIChatMessageToolPartComponents extends BaseComponents {\n toolName: FcOrClassName<ToolInvocation & { confirmMessage?: string }>\n statusIndicator: FcOrClassName<{ status: ToolInvocationStatus }>\n input: FcOrClassName<Omit<ToolInvocation, 'args'> & { args: string }>\n result: FcOrClassName<Omit<ToolInvocation, 'result'> & { result: string }>\n}\n\nconst inputResultClassName =\n 'typography-body-xs max-h-48 overflow-auto rounded p-2 break-all whitespace-pre-wrap text-foreground bg-muted'\n\nconst defaultComponents: DefaultComponents<AIChatMessageToolPartComponents> = {\n toolName: ({ toolName, confirmMessage, className }) => (\n <Text\n variant=\"xs\"\n className={cn('text-foreground flex-1 py-1 font-medium', className)}\n >\n {confirmMessage || toolName}\n </Text>\n ),\n statusIndicator: ({ status, className }) => (\n <StatusIndicator status={status} className={className} />\n ),\n input: ({ args, className }) => (\n <>\n <Text variant=\"xs\" className=\"text-foreground mb-1 font-medium\">\n Input\n </Text>\n <pre className={cn(inputResultClassName, className)}>{args}</pre>\n </>\n ),\n result: ({ result, className }) => (\n <>\n <Text variant=\"xs\" className=\"text-foreground mb-1 font-medium\">\n Result\n </Text>\n <pre className={cn(inputResultClassName, className)}>{result}</pre>\n </>\n ),\n}\n\nexport function AIChatMessageToolPart({\n toolInvocation,\n className,\n components,\n}: AIChatMessageToolPartProps) {\n const { state, toolCallId, args, result } = toolInvocation\n const [isExpanded, setIsExpanded] = useState(false)\n\n const { toolCallApproval } = useAIChat()\n const isPending = toolCallId === toolCallApproval?.pendingToolCall?.toolCallId\n\n useEffect(() => {\n if (isPending) {\n setIsExpanded(true)\n }\n }, [isPending])\n\n useEffect(() => {\n if (state === 'result') {\n setIsExpanded(false)\n } else {\n setIsExpanded(true)\n }\n }, [state])\n\n // Format the result for display\n const formatResult = (result: unknown): string => {\n if (typeof result === 'string') return result\n if (typeof result === 'object' && result !== null)\n return JSON.stringify(result as Record<string, unknown>, null, 2)\n return String(result)\n }\n\n const status = useMemo(() => {\n if (isPending) return 'pending'\n if (state === 'call') return 'in-progress'\n if (state === 'result') {\n if (formatResult(result).includes(TOOL_CALL_ERROR_MESSAGE)) return 'error'\n if (formatResult(result).includes(TOOL_CALL_REJECTED_MESSAGE))\n return 'error'\n return 'success'\n }\n return 'pending'\n }, [state, isPending, result])\n\n return (\n <MotionConfig transition={{ duration: 0.2 }}>\n <motion.div\n className={cn(\n 'overflow-hidden rounded-lg border transition-all duration-300',\n className\n )}\n initial={false}\n animate={isExpanded ? 'expanded' : 'collapsed'}\n >\n {/* Header */}\n <div\n className={cn('bg-muted flex items-center gap-3 px-4 py-2', {\n 'border-b': isExpanded,\n })}\n >\n {/* Status Indicator */}\n <div className=\"relative flex h-6 w-6 items-center justify-center\">\n {renderComponent(defaultComponents, components, 'statusIndicator', {\n status,\n })}\n </div>\n {/* Tool Name */}\n {renderComponent(defaultComponents, components, 'toolName', {\n ...toolInvocation,\n confirmMessage: toolCallApproval?.pendingToolCall?.confirmMessage,\n })}\n\n {/* Action Buttons */}\n <div className=\"flex items-center gap-1\">\n <IconButton\n variant=\"tertiary\"\n onClick={() => setIsExpanded(!isExpanded)}\n className=\"h-6 w-6\"\n aria-label={isExpanded ? 'Collapse' : 'Expand'}\n icon={\n <motion.svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n variants={{\n expanded: { rotate: 180 },\n collapsed: { rotate: 0 },\n }}\n animate={isExpanded ? 'expanded' : 'collapsed'}\n transition={{ duration: 0.2, ease: 'easeInOut' }}\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </motion.svg>\n }\n />\n </div>\n </div>\n\n {/* Expandable Body */}\n <motion.div\n variants={{\n expanded: {\n height: 'auto',\n opacity: 1,\n maskImage:\n 'linear-gradient(to bottom, black 100%, transparent 100%)',\n transition: {\n height: { duration: 0.3 },\n opacity: { duration: 0.2, delay: 0.1 },\n maskImage: { duration: 0.3 },\n },\n },\n collapsed: {\n height: 0,\n opacity: 0,\n maskImage:\n 'linear-gradient(to bottom, black 50%, transparent 100%)',\n transition: {\n height: { duration: 0.3 },\n opacity: { duration: 0.1 },\n maskImage: { duration: 0.3 },\n },\n },\n }}\n className=\"overflow-hidden\"\n >\n <motion.div\n variants={{\n expanded: {\n filter: 'blur(0px)',\n opacity: 1,\n },\n collapsed: {\n filter: 'blur(2px)',\n opacity: 0,\n },\n }}\n className=\"space-y-3 p-4\"\n >\n {/* Tool Input */}\n {args && Object.keys(args).length > 0 ? (\n <motion.div\n variants={{\n expanded: { y: 0, opacity: 1 },\n collapsed: { y: -10, opacity: 0 },\n }}\n >\n {renderComponent(defaultComponents, components, 'input', {\n ...toolInvocation,\n args: JSON.stringify(\n args as Record<string, unknown>,\n null,\n 2\n ),\n })}\n </motion.div>\n ) : null}\n\n {/* Tool Result */}\n {state === 'result' && result ? (\n <motion.div\n variants={{\n expanded: { y: 0, opacity: 1 },\n collapsed: { y: -10, opacity: 0 },\n }}\n >\n {renderComponent(defaultComponents, components, 'result', {\n ...toolInvocation,\n result: formatResult(result),\n })}\n </motion.div>\n ) : null}\n </motion.div>\n </motion.div>\n\n {/* Approve / Reject Footer */}\n {isPending && (\n <div className=\"bg-muted flex justify-end border-t px-4 py-2\">\n <div className=\"flex items-center gap-1.5\">\n <Button\n variant=\"tertiary\"\n size=\"sm\"\n onClick={toolCallApproval?.pendingToolCall?.reject}\n className=\"hover:bg-background hover:text-foreground h-7 border border-transparent px-3 text-sm\"\n >\n Reject\n </Button>\n\n <Button\n size=\"sm\"\n onClick={toolCallApproval?.pendingToolCall?.approve}\n className=\"bg-foreground text-background h-7 border border-transparent px-3 text-sm\"\n >\n Accept\n </Button>\n </div>\n </div>\n )}\n </motion.div>\n </MotionConfig>\n )\n}\n\nconst StatusIndicator = ({\n status,\n className,\n}: {\n status: ToolInvocationStatus\n className: string\n}) => {\n const widthHeight = 'h-3 w-3'\n const baseClassName = `${widthHeight} flex items-center justify-center rounded-full`\n\n switch (status) {\n case 'success':\n return (\n <motion.div\n className={cn(baseClassName, 'bg-success', className)}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{ type: 'spring', stiffness: 500, damping: 15 }}\n >\n <CheckIcon className=\"h-full w-full\" />\n </motion.div>\n )\n case 'error':\n return (\n <motion.div\n className={cn(baseClassName, 'bg-destructive', className)}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{ type: 'spring', stiffness: 500, damping: 15 }}\n >\n <XIcon className=\"h-full w-full\" />\n </motion.div>\n )\n case 'pending':\n return (\n <>\n {/* Track */}\n <motion.div\n className=\"absolute inset-0 rounded-full\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n {/* Animated Ring */}\n <motion.div\n className=\"absolute inset-0\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n >\n <div\n className=\"h-full w-full rounded-full border-2 [border-top-color:transparent] [border-left-color:transparent]\"\n style={{\n animation: 'spin 3s linear infinite',\n }}\n />\n </motion.div>\n <motion.div\n className={cn('relative h-4 w-4 rounded-full', className)}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{ type: 'spring', stiffness: 500, damping: 15 }}\n >\n <UserCheck className=\"h-full w-full\" />\n </motion.div>\n </>\n )\n case 'in-progress':\n return (\n <>\n {/* Track */}\n <motion.div\n className=\"bg-information-fill/20 absolute inset-0 rounded-full\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n />\n {/* Animated Ring */}\n <motion.div\n className=\"absolute inset-0\"\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n >\n <div\n className=\"border-information-fill h-full w-full rounded-full border-2 [border-top-color:transparent] [border-left-color:transparent]\"\n style={{\n animation: 'spin 1s linear infinite',\n }}\n />\n </motion.div>\n <motion.div\n className={cn(\n widthHeight,\n 'bg-information-fill relative rounded-full',\n className\n )}\n initial={{ scale: 0.8 }}\n animate={{ scale: 1 }}\n transition={{ type: 'spring', stiffness: 500, damping: 15 }}\n />\n </>\n )\n }\n}\n","import { cn } from '../../lib/utils'\nimport {\n BaseComponents,\n DefaultComponents,\n FcOrClassName,\n renderComponent,\n} from './componentsTypes'\nimport { AIChatMessageFilePart } from './parts/AIChatMessageFilePart'\nimport { AIChatMessageReasoningPart } from './parts/AIChatMessageReasoningPart'\nimport { AIChatMessageSourcePart } from './parts/AIChatMessageSourcePart'\nimport { AIChatMessageTextPart } from './parts/AIChatMessageTextPart'\nimport {\n AIChatMessageToolPart,\n AIChatMessageToolPartComponents,\n} from './parts/AIChatMessageToolPart'\nimport type { ChatMessage } from './types'\n\nexport interface AIChatMessageProps {\n message: ChatMessage\n className?: string\n components?: Partial<AIChatMessageComponents>\n}\n\ninterface AvatarComponents extends BaseComponents {\n user: FcOrClassName<unknown>\n assistant: FcOrClassName<unknown>\n system: FcOrClassName<unknown>\n}\n\nexport interface AIChatMessageComponents {\n toolCall: Partial<AIChatMessageToolPartComponents>\n avatar: Partial<AvatarComponents>\n}\n\nconst defaultAvatars: DefaultComponents<AvatarComponents> = {\n user: ({ className }) => (\n <div\n className={cn(\n 'h-6 w-6 overflow-hidden rounded-full ring-1 ring-inset',\n className\n )}\n >\n <img\n src={`https://avatar.vercel.sh/user.svg?size=20`}\n alt=\"User\"\n className=\"h-full w-full\"\n />\n </div>\n ),\n assistant: ({ className }) => (\n <div\n className={cn(\n 'flex h-6 w-6 items-center justify-center rounded border text-[10px] font-medium',\n className\n )}\n >\n AI\n </div>\n ),\n system: ({ className }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn('h-6 w-6', className)}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M13 10V3L4 14h7v7l9-11h-7z\"\n />\n </svg>\n ),\n}\n\nexport function AIChatMessage({\n message,\n className,\n components,\n}: AIChatMessageProps) {\n return (\n <li role=\"listitem\" className={cn('px-4 py-3', className)}>\n <div className=\"flex items-start gap-2\">\n <div className=\"flex-shrink-0\">\n {renderComponent(\n defaultAvatars,\n components?.avatar,\n message.role,\n {}\n )}\n </div>\n <div className=\"flex flex-1 flex-col gap-4\">\n {message.parts.map((part, index) => {\n switch (part.type) {\n case 'text':\n return <AIChatMessageTextPart key={index} text={part.text} />\n case 'reasoning':\n return (\n <AIChatMessageReasoningPart\n key={index}\n reasoning={part.reasoning}\n />\n )\n case 'tool-invocation':\n return (\n <AIChatMessageToolPart\n key={index}\n toolInvocation={part.toolInvocation}\n components={components?.toolCall}\n />\n )\n case 'file':\n return (\n <AIChatMessageFilePart\n key={index}\n mimeType={part.mimeType}\n data={part.data}\n fileName={part.fileName}\n />\n )\n case 'source':\n return (\n <AIChatMessageSourcePart key={index} source={part.source} />\n )\n default:\n return null\n }\n })}\n </div>\n </div>\n </li>\n )\n}\n","import { useEffect, useRef } from 'react'\nimport { cn } from '../../lib/utils'\nimport { AIChatMessage, AIChatMessageComponents } from './AIChatMessage'\nimport { useAIChat } from './context'\n\nexport interface AIChatMessageListProps {\n components?: Partial<AIChatMessageComponents>\n className?: string\n}\n\nexport function AIChatMessageList({\n components,\n className,\n}: AIChatMessageListProps) {\n const { messages } = useAIChat()\n const messagesEndRef = useRef<HTMLDivElement>(null)\n\n useEffect(() => {\n messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' })\n }, [messages])\n\n return (\n <ul role=\"log\" className={cn('h-full overflow-y-auto', className)}>\n {messages.map((message) => (\n <AIChatMessage\n key={message.id}\n message={message}\n components={components}\n />\n ))}\n <div ref={messagesEndRef} />\n </ul>\n )\n}\n","import { ReactNode } from 'react'\nimport { cn } from '../../lib/utils'\nimport { AIChatMessageComponents } from './AIChatMessage'\nimport {\n AIChatMessageComposer,\n AIChatMessageComposerComponents,\n} from './AIChatMessageComposer'\nimport { AIChatMessageList } from './AIChatMessageList'\nimport { AIChatContext } from './context'\nimport type { AIChatContextValue, ToolCallApprovalProps } from './types'\n\nexport interface ModelSelectorConfig {\n model: string\n onModelChange: (v: string) => void\n availableModels: { label: string; value: string }[]\n}\n\nexport interface AIChatContainerProps\n extends Omit<\n AIChatContextValue,\n 'model' | 'onModelChange' | 'availableModels' | 'toolCallApproval'\n > {\n modelSelector?: ModelSelectorConfig\n className?: string\n components?: Partial<AIChatComponents>\n toolCallApproval?: ToolCallApprovalProps\n children?: ReactNode\n initialInput?: string\n}\n\ninterface AIChatComponents {\n composer: Partial<AIChatMessageComposerComponents>\n message: Partial<AIChatMessageComponents>\n}\n\nexport function AIChatContainer({\n messages,\n isLoading,\n onSendMessage,\n modelSelector,\n className,\n components,\n toolCallApproval,\n children,\n initialInput,\n}: AIChatContainerProps) {\n return (\n <AIChatContext.Provider\n value={{\n messages,\n isLoading,\n onSendMessage,\n model: modelSelector?.model,\n onModelChange: modelSelector?.onModelChange,\n availableModels: modelSelector?.availableModels,\n toolCallApproval,\n initialInput,\n }}\n >\n <div className={cn('flex h-full min-h-0 max-w-3xl flex-col', className)}>\n <div className=\"flex-1 overflow-hidden\">\n <AIChatMessageList components={components?.message} />\n </div>\n <div className=\"sticky bottom-0\">\n <AIChatMessageComposer components={components?.composer} />\n </div>\n {children}\n </div>\n </AIChatContext.Provider>\n )\n}\n","import './global.css'\n\nexport { isGroupOf } from '@/lib/typeUtils'\nexport { Grid, type GridProps } from '@/components/Grid'\nexport { Stack, type StackProps } from '@/components/Stack'\nexport { Button, type ButtonProps } from '@/components/Button'\nexport { Card, type CardProps } from '@/components/Card'\nexport { Icon, type IconProps } from '@/components/Icon'\nexport { isIconName } from '@/components/Icon/isIconName'\nexport { type IconName } from '@/components/Icon/names'\nexport { Separator, type SeparatorProps } from '@/components/Separator'\nexport { Skeleton, type SkeletonProps } from '@/components/Skeleton'\nexport { Badge, type BadgeProps } from '@/components/Badge'\nexport { Heading, type HeadingProps } from '@/components/Heading'\nexport { Text, type TextProps } from '@/components/Text'\nexport { Score, type ScoreValue } from '@/components/Score'\nexport { Logo, type LogoProps } from '@/components/Logo'\nexport { AnimatedLogo } from '@/components/Logo/Animated'\nexport { Container, type ContainerProps } from '@/components/Container'\nexport { Combobox, type ComboboxProps } from '@/components/Combobox'\nexport {\n TargetLanguageIcon,\n type TargetLanguageIconProps,\n} from '@/components/TargetLanguageIcon'\nexport { UserAvatar, type UserAvatarProps } from '@/components/UserAvatar'\nexport { Subnav, type SubnavItem, type SubnavProps } from '@/components/Subnav'\nexport { CodeSnippet, type CodeSnippetProps } from '@/components/CodeSnippet'\nexport { Pre, type PreProps } from '@/components/CodeHighlight/Pre'\nexport {\n highlightCode,\n getMappedLanguage,\n isProgrammingLanguage,\n removeCodeHikeAnnotations,\n LIGHT_THEME,\n DARK_THEME,\n type HighlightedCode,\n type CodeLine,\n type CodeToken,\n} from '@/lib/codeUtils'\nexport {\n LoggedInUserMenu,\n type LoggedInUserProps,\n} from '@/components/LoggedInUserMenu'\nexport {\n PromptInput,\n type PromptInputProps,\n type Suggestion,\n type Attachment,\n} from '@/components/PromptInput'\nexport {\n WorkspaceSelector,\n type Org,\n type Workspace,\n type WorkspaceSelectorProps,\n} from '@/components/WorkspaceSelector'\nexport { Wizard, type WizardProps } from '@/components/Wizard'\nexport { type WizardStep, type WizardCommand } from '@/components/Wizard/types'\nexport {\n MoonshineConfigProvider,\n type MoonshineConfigProviderProps,\n} from '@/context/ConfigContext'\nexport { useConfig as useMoonshineConfig } from '@/hooks/useConfig'\nexport { useTheme as useMoonshineTheme, type Theme } from '@/hooks/useTheme'\nexport { default as useTailwindBreakpoint } from '@/hooks/useTailwindBreakpoint'\nexport {\n GradientCircle,\n type GradientCircleProps,\n} from '@/components/GradientCircle'\nexport { Alert, type AlertProps } from '@/components/Alert'\nexport { Tabs, type TabProps } from '@/components/Tabs'\nexport {\n Table,\n type TableProps,\n type Column,\n type Group,\n} from '@/components/Table'\nexport { Input, type InputProps } from '@/components/Input'\nexport {\n type SupportedLanguage,\n supportedLanguages,\n isSupportedLanguage,\n} from '@/types'\nexport { PageHeader, type PageHeaderProps } from '@/components/PageHeader'\n\nexport { ExternalPill, type ExternalPillProps } from '@/components/ExternalPill'\nexport {\n LanguageIndicator,\n type LanguageIndicatorProps,\n} from '@/components/LanguageIndicator'\nexport {\n PullRequestLink,\n type PullRequestLinkProps,\n} from '@/components/PullRequestLink'\nexport {\n Select,\n SelectGroup,\n SelectItem,\n SelectContent,\n SelectTrigger,\n SelectValue,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n} from '@/components/Select'\nexport {\n Tooltip,\n TooltipTrigger,\n TooltipContent,\n TooltipProvider,\n TooltipPortal,\n} from '@/components/Tooltip'\nexport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n PopoverAnchor,\n PopoverPortal,\n} from '@/components/Popover'\nexport { Facepile, type FacepileProps } from '@/components/Facepile'\nexport { Link, type LinkProps } from '@/components/Link'\nexport { Dialog } from '@/components/Dialog'\nexport { Switch, type SwitchProps } from '@/components/Switch'\nexport { SegmentedButton } from '@/components/SegmentedButton'\n// AppLayout\nexport {\n AppLayout,\n type AppLayoutNavItemProps,\n type AppLayoutNavItemGroupProps,\n type AppLayoutBreadcrumbItemProps,\n} from '@/components/AppLayout'\nexport { AppLayoutProvider } from '@/components/AppLayout/provider'\nexport { useAppLayout } from '@/hooks/useAppLayout'\n\nexport { ActionBar, type ActionBarProps } from '@/components/ActionBar'\nexport {\n Key,\n type KeyProps,\n KeyHint,\n type KeyHintProps,\n} from '@/components/KeyHint'\nexport {\n HighlightedText,\n type HighlightedTextProps,\n} from '@/components/HighlightedText'\nexport {\n DragNDropArea,\n type DragNDropAreaProps,\n} from '@/components/DragNDrop/DragNDropArea'\nexport { DragOverlay } from '@/components/DragNDrop/DragOverlay'\nexport {\n Draggable,\n type DraggableProps,\n} from '@/components/DragNDrop/Draggable'\nexport {\n Droppable,\n type DroppableProps,\n} from '@/components/DragNDrop/Droppable'\nexport {\n ResizablePanel,\n type ResizablePanelProps,\n} from '@/components/ResizablePanel'\nexport {\n CodePlayground,\n type CodePlaygroundProps,\n type CodePlaygroundSnippets,\n} from '@/components/CodePlayground'\nexport {\n CodeEditor,\n type CodeEditorLayoutProps,\n} from '@/components/CodeEditorLayout'\nexport {\n Command,\n CommandGroup,\n CommandItem,\n CommandEmpty,\n CommandInput,\n CommandList,\n CommandSeparator,\n CommandShortcut,\n CommandDialog,\n} from '@/components/Command'\nexport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuRadioGroup,\n DropdownMenuGroup,\n DropdownMenuTrigger,\n DropdownMenuPortal,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n} from '@/components/Dropdown'\n\n// ContextDropdown\nexport { ContextDropdown } from '@/components/ContextDropdown'\nexport { ModalProvider } from '@/context/ModalContext'\nexport { useModal } from '@/hooks/useModal'\n\n// Modal\nexport { Modal, type ModalProps } from '@/components/Modal'\n\nexport {\n ThemeSwitcher,\n type ThemeSwitcherProps,\n} from '@/components/ThemeSwitcher'\n\nexport { cn } from '@/lib/utils'\n\n// Timeline\nexport { Timeline } from '@/components/Timeline'\n\n/** START BETA COMPONENTS */\nimport { CLIWizard } from '@/components/__beta__/CLIWizard'\n\nexport const beta = {\n // TODO: This component is not yet reusable, it's only for use on the SDK Overview page right now\n // TODO: needs light mode tweaks too.\n CLIWizard,\n}\n// DO NOT USE: EXPORTED TO UNBLOCK GRAM\nexport {\n AIChatContainer,\n AIChatMessage,\n AIChatMessageComposer,\n} from '@/components/AIChat'\nexport { useToolCallApproval } from '@/components/AIChat/toolCallApproval'\n\n/** END BETA COMPONENTS */\n"],"names":["assertNever","value","sizes","breakpoints","supportedLanguages","isSupportedLanguage","language","prettyLanguageName","isResponsiveValueObject","key","isBreakpoint","isSize","isPaddingHorizontalOrVerticalAxis","isPaddingPerSideValue","isPaddingPerSide","isPaddingPerSides","assert","condition","message","isGroupOf","data","gapMapper","gap","paddingPerSideMapper","padding","x","y","top","right","bottom","left","paddingMapper","colSpanMapper","colSpan","wrapClasses","wrapMapper","wrap","r","f","n","o","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","className","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","theme","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","path","currentClassPartObject","pathPart","func","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","classNames","result","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","i","group","twJoin","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","isLabelShadow","testLabel","testValue","shouldMatchNoLabel","label","imageLabels","sizeLabels","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleBlur","scaleOrigin","scaleRotate","scaleScale","scaleSkew","scaleTranslate","mergeConfigs","baseConfig","extend","override","overrideProperty","overrideConfigProperties","mergeConfigProperties","mergeArrayProperties","baseObject","overrideKey","overrideValue","overrideObject","mergeObject","mergeValue","extendTailwindMerge","configExtension","createConfig","customTwMerge","element","cn","inputs","getResponsiveClasses","mapper","val","breakpoint","fragment","toKebabCase","partitionBy","array","predicate","acc","item","columnsMapper","columns","isValidGridChild","child","isValidElement","GridItem","Grid","children","validGridChildren","jsx","props","GridWithSubcomponents","Stack","direction","align","justify","alignMapper","justifyMapper","grow","setRef","ref","composeRefs","refs","node","hasCleanup","cleanups","cleanup","useComposedRefs","React","Slot","forwardedRef","slotProps","childrenArray","slottable","isSlottable","newElement","newChildren","SlotClone","childrenRef","getElementRef","props2","mergeProps","Slottable","Fragment2","childProps","overrideProps","propName","slotPropValue","childPropValue","args","getter","mayWarn","falsyToString","cx","cva","base","variants","defaultVariants","getVariantClassNames","variant","variantProp","defaultVariantProp","variantKey","propsWithoutUndefined","param","getCompoundVariantClassNames","param1","cvClass","cvClassName","compoundVariantOptions","lerpAngle","a","b","t","diff","useAnimationFrame","callback","enabled","requestRef","previousTimeRef","animate","timestamp","deltaTime","ButtonLeftIcon","ButtonRightIcon","ButtonIcon","ButtonText","BrandSlot","isBrandVariant","slotRef","brandSpan","childWithBrand","buttonVariants","Button","size","context","asChild","onMouseEnter","onMouseLeave","onMouseDown","onMouseUp","onMouseMove","cursorPosition","setCursorPosition","buttonRef","buttonDimensionsRef","childArray","hasButtonText","hasAriaLabel","displayName","gradientRefs","getGapClass","_timestamp","delta","gradientValues","centerX","centerY","angle","lerpValue","newCurrent","deprecatedVariants","handleMouseMove","e","rect","handleMouseEnter","handleMouseLeave","handleMouseDown","handleMouseUp","Comp","combinedRef","processedChildren","jsxs","Fragment","ButtonWithCompounds","debounce","wait","timeout","breakpointValues","getBreakpoint","width","minWidth","useTailwindBreakpoint","setBreakpoint","useState","useLayoutEffect","handleResize","newBreakpoint","resolveSizeForBreakpoint","currentBreakpoint","fallback","currentBreakpointIndex","dynamicIconImports","Skeleton","sizeMap","iconCache","tryGetIcon","name","LucideIcon","customDynamicIconImports","lazy","Icon","resolvedSize","sizeNumber","Suspense","transition","gapPercent","strokeWidth","circleSize","radius","circumference","percentToDegree","percentToPx","offsetFactor","offsetFactorSecondary","defaultThresholds","defaultTrackColor","Score","score","showLabel","trackColor","thresholds","animationDuration","scoreInternal","setScoreInternal","strokePercent","useEffect","stepSize","interval","prevScore","progressColour","useMemo","threshold","color","primaryStrokeDasharray","subtract","secondaryStrokeDasharray","primaryTransform","secondaryTransform","primaryOpacity","secondaryOpacity","styles","CardHeader","subheader","icon","rightElement","CardContent","CardFooter","content","Card","onClick","href","validChildren","Children","hasButtonElement","isInteractive","Wrapper","wrapperProps","CardWithSubcomponents","lucideIconNames","customIconNames","iconNames","iconNameSet","isIconName","maybeIconName","Separator","orientation","cloneElement","BadgeLeftIcon","BadgeRightIcon","BadgeIcon","BadgeText","badgeVariants","Badge","background","hasBadgeText","BadgeWithCompounds","variantStyles","variantToElement","Heading","Component","viewTransitionName","whitespaceStyles","Text","muted","whiteSpace","htmlFor","Wordmark","Logo","svgs.Wordmark","svgs.Logo","ConfigContext","createContext","MoonshineConfigProvider","setTheme","useConfig","useContext","useTheme","riveFile","stackLogoClass","lettersLogoClass","AnimatedLogo","rest","riveLoaded","setRiveLoaded","stateMachine","setStateMachine","rive","RiveComponent","useRive","Layout","Fit","setIsHovered","useViewModelInstanceBoolean","LogoSvg","WordmarkSvg","Container","flex","U","Y","H","J","p","u","$","m","B","K","X","G","_","C","h","P","A","O","T","L","c","S","E","N","R","M","D","W","composeEventHandlers","originalEventHandler","ourEventHandler","checkForDefaultPrevented","event","createContext2","rootComponentName","defaultContext","Context","Provider","useContext2","consumerName","createContextScope","scopeName","createContextScopeDeps","defaultContexts","createContext3","BaseContext","scope","createScope","scopeContexts","contexts","composeContextScopes","scopes","baseScope","scopeHooks","createScope2","overrideScopes","nextScopes","nextScopes2","useScope","currentScope","useLayoutEffect2","useReactId","count","useId","deterministicId","id","setId","reactId","useCallbackRef","callbackRef","useControllableState","prop","defaultProp","onChange","uncontrolledProp","setUncontrolledProp","useUncontrolledState","isControlled","handleChange","setValue","nextValue","value2","uncontrolledState","prevValueRef","NODES","Primitive","primitive","Node","primitiveProps","dispatchDiscreteCustomEvent","target","ReactDOM","useEscapeKeydown","onEscapeKeyDownProp","ownerDocument","onEscapeKeyDown","handleKeyDown","DISMISSABLE_LAYER_NAME","CONTEXT_UPDATE","POINTER_DOWN_OUTSIDE","FOCUS_OUTSIDE","originalBodyPointerEvents","DismissableLayerContext","DismissableLayer","disableOutsidePointerEvents","onPointerDownOutside","onFocusOutside","onInteractOutside","onDismiss","layerProps","setNode","force","composedRefs","node2","layers","highestLayerWithOutsidePointerEventsDisabled","highestLayerWithOutsidePointerEventsDisabledIndex","isBodyPointerEventsDisabled","isPointerEventsEnabled","pointerDownOutside","usePointerDownOutside","isPointerDownOnBranch","branch","focusOutside","useFocusOutside","dispatchUpdate","handleUpdate","BRANCH_NAME","DismissableLayerBranch","handlePointerDownOutside","isPointerInsideReactTreeRef","handleClickRef","handlePointerDown","handleAndDispatchPointerDownOutsideEvent2","handleAndDispatchCustomEvent","eventDetail","timerId","handleFocusOutside","isFocusInsideReactTreeRef","handleFocus","handler","detail","discrete","AUTOFOCUS_ON_MOUNT","AUTOFOCUS_ON_UNMOUNT","EVENT_OPTIONS","FOCUS_SCOPE_NAME","FocusScope","loop","trapped","onMountAutoFocusProp","onUnmountAutoFocusProp","scopeProps","container","setContainer","onMountAutoFocus","onUnmountAutoFocus","lastFocusedElementRef","focusScope","handleFocusIn2","focus","handleFocusOut2","relatedTarget","handleMutations2","mutations","mutation","mutationObserver","focusScopesStack","previouslyFocusedElement","mountEvent","focusFirst","removeLinks","getTabbableCandidates","unmountEvent","isTabKey","focusedElement","container2","first","last","getTabbableEdges","candidates","select","candidate","findVisible","nodes","walker","isHiddenInput","elements","isHidden","upTo","isSelectableInput","createFocusScopesStack","stack","activeFocusScope","arrayRemove","updatedArray","items","PORTAL_NAME","Portal","containerProp","portalProps","mounted","setMounted","useStateMachine","initialState","machine","state","Presence","present","presence","usePresence","React2","stylesRef","prevPresentRef","prevAnimationNameRef","send","currentAnimationName","getAnimationName","wasPresent","prevAnimationName","timeoutId","ownerWindow","handleAnimationEnd","isCurrentAnimation","currentFillMode","handleAnimationStart","useFocusGuards","edgeGuards","createFocusGuard","__assign","s","__rest","__spreadArray","to","from","pack","l","ar","zeroRightClassName","fullWidthClassName","noScrollbarsClassName","removedBarSizeVariable","assignRef","initialValue","useIsomorphicLayoutEffect","currentValues","useMergeRefs","defaultValue","newValue","oldValue","prevRefs_1","nextRefs_1","current_1","ItoI","innerCreateMedium","defaults","middleware","buffer","assigned","medium","cb","cbs","pendingQueue","executeQueue","cycle","filter","createSidecarMedium","options","SideCar","_a","sideCar","Target","exportSidecar","exported","effectCar","nothing","RemoveScroll","parentRef","callbacks","setCallbacks","forwardProps","removeScrollBar","shards","noIsolation","inert","allowPinchZoom","_b","gapMode","containerRef","containerProps","getNonce","makeStyleTag","tag","nonce","injectStyles","css","insertStyleTag","head","stylesheetSingleton","counter","stylesheet","style","styleHookSingleton","sheet","isDynamic","styleSingleton","useStyle","Sheet","dynamic","zeroGap","parse","getOffset","cs","getGapWidth","offsets","documentWidth","windowWidth","Style","lockAttribute","getStyles","allowRelative","important","getCurrentUseCounter","useLockAttribute","newCounter","RemoveScrollBar","noRelative","noImportant","passiveSupported","nonPassive","alwaysContainsScroll","elementCanBeScrolled","overflow","elementCouldBeVScrolled","elementCouldBeHScrolled","locationCouldBeScrolled","axis","current","isScrollable","elementCouldBeScrolled","getScrollVariables","scrollHeight","clientHeight","getVScrollVariables","scrollTop","getHScrollVariables","scrollLeft","scrollWidth","clientWidth","getDirectionFactor","handleScroll","endTarget","sourceDelta","noOverscroll","directionFactor","targetInLock","shouldCancelScroll","isDeltaPositive","availableScroll","availableScrollTop","position","scroll_1","capacity","elementScroll","getTouchXY","getDeltaXY","extractRef","deltaCompare","generateStyle","idCounter","lockStack","RemoveScrollSideCar","shouldPreventQueue","touchStartRef","activeAxis","lastProps","allow_1","el","shouldCancelEvent","parent","touch","touchStart","deltaX","deltaY","currentAxis","moveDirection","canBeScrolledInMainDirection","cancelingAxis","shouldPrevent","_event","sourceEvent","shardNodes","shouldStop","shouldCancel","should","getOutermostShadowParent","scrollTouchStart","scrollWheel","scrollTouchMove","inst","shadowParent","ReactRemoveScroll","getDefaultParent","originalTarget","sampleTarget","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","correctTargets","targets","correctedTarget","applyAttributeToOthers","parentNode","markerName","controlAttribute","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","deep","attr","alreadyHidden","counterValue","markerValue","hideOthers","activeParentNode","DIALOG_NAME","createDialogContext","createDialogScope","DialogProvider","useDialogContext","Dialog","__scopeDialog","openProp","defaultOpen","onOpenChange","modal","triggerRef","contentRef","open","setOpen","prevOpen","TRIGGER_NAME","DialogTrigger","triggerProps","composedTriggerRef","getState","PortalProvider","usePortalContext","DialogPortal","forceMount","PortalPrimitive","OVERLAY_NAME","DialogOverlay","portalContext","overlayProps","DialogOverlayImpl","CONTENT_NAME","DialogContent","contentProps","DialogContentModal","DialogContentNonModal","DialogContentImpl","originalEvent","ctrlLeftClick","hasInteractedOutsideRef","hasPointerDownOutsideRef","trapFocus","onOpenAutoFocus","onCloseAutoFocus","TitleWarning","DescriptionWarning","TITLE_NAME","DialogTitle","titleProps","DESCRIPTION_NAME","DialogDescription","descriptionProps","CLOSE_NAME","DialogClose","closeProps","TITLE_WARNING_NAME","WarningProvider","useWarningContext","titleId","titleWarningContext","MESSAGE","DESCRIPTION_WARNING_NAME","descriptionId","describedById","Root","Trigger","Overlay","Content","Title","Description","Close","be","le","ce","Z","Re","ae","ue","de","ee","fe","me","d","pe","ge","j","q","I","v","ke","ne","g","z","te","V","F","Q","re","we","De","oe","ie","se","Te","he","ve","Ee","ye","Se","Ce","xe","w.Root","w.Portal","w.Overlay","w.Content","Ie","Pe","_e","Me","DialogPrimitive.Trigger","DialogPrimitive.Portal","DialogPrimitive.Close","DialogPrimitive.Overlay","closeable","DialogPrimitive.Content","DialogHeader","DialogFooter","DialogPrimitive.Title","DialogPrimitive.Description","DialogPrimitive.Root","Command","CommandPrimitive","CommandInput","CommandList","CommandEmpty","CommandGroup","CommandDialog","CommandSeparator","CommandItem","CommandShortcut","sides","min","max","round","floor","createCoords","oppositeSideMap","oppositeAlignmentMap","clamp","start","end","evaluate","getSide","placement","getAlignment","getOppositeAxis","getAxisLength","getSideAxis","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","getSideList","side","isStart","lr","rl","tb","bt","getOppositeAxisPlacements","flipAlignment","list","expandPaddingObject","getPaddingObject","rectToClientRect","height","computeCoordsFromPlacement","_ref","reference","floating","sideAxis","alignLength","isVertical","commonX","commonY","commonAlign","coords","computePosition","strategy","platform","validMiddleware","statefulPlacement","middlewareData","resetCount","fn","nextX","nextY","reset","detectOverflow","_await$platform$isEle","boundary","rootBoundary","elementContext","altBoundary","paddingObject","clippingClientRect","offsetParent","offsetScale","elementClientRect","arrow","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","maxPadding","min$1","center","offset","shouldAddOffset","alignmentOffset","flip","_middlewareData$arrow","_middlewareData$flip","initialPlacement","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","detectOverflowOptions","initialSideAxis","isBasePlacement","fallbackPlacements","hasFallbackAxisSideDirection","placements","overflows","overflowsData","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","resetPlacement","_overflowsData$filter2","currentSideAxis","getSideOffsets","isAnySideFullyClipped","hide","convertValueToCoords","mainAxisMulti","crossAxisMulti","rawValue","mainAxis","crossAxis","_middlewareData$offse","diffCoords","shift","limiter","mainAxisCoord","crossAxisCoord","minSide","maxSide","limitedCoords","limitShift","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","_state$middlewareData","_state$middlewareData2","apply","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","hasWindow","getNodeName","isNode","getWindow","_node$ownerDocument","getDocumentElement","isElement","isHTMLElement","isShadowRoot","isOverflowElement","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","selector","isContainingBlock","elementOrCss","webkit","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","getNearestOverflowAncestor","getOverflowAncestors","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","hasOffset","offsetWidth","offsetHeight","shouldFallback","unwrapElement","getScale","domElement","noOffsets","getVisualOffsets","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","iframeScale","iframeRect","getWindowScrollBarX","leftScroll","getHTMLOffset","documentElement","scroll","ignoreScrollbarX","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","topLayer","isOffsetParentAnElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","getViewportRect","visualViewport","visualViewportBased","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","getClippingElementAncestors","currentContainingBlockComputedStyle","elementIsFixed","computedStyle","currentNodeIsContaining","ancestor","getClippingRect","clippingAncestors","firstClippingAncestor","clippingRect","accRect","getDimensions","getRectRelativeToOffsetParent","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","getElementRects","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","rectsAreEqual","observeMove","onMove","io","root","_io","refresh","skip","elementRectForRootMargin","insetTop","insetRight","insetBottom","insetLeft","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","mergedOptions","platformWithCache","computePosition$1","deepEqual","keys","getDPR","roundByDPR","dpr","useLatestRef","useFloating","externalReference","externalFloating","transform","whileElementsMounted","setData","latestMiddleware","setLatestMiddleware","_reference","_setReference","_floating","_setFloating","setReference","referenceRef","setFloating","floatingRef","floatingEl","dataRef","hasWhileElementsMounted","whileElementsMountedRef","platformRef","openRef","fullData","isMountedRef","floatingStyles","initialStyles","isRef","arrow$2","deps","NAME","Arrow","arrowProps","useSize","setSize","entry","borderSizeEntry","borderSize","POPPER_NAME","createPopperContext","createPopperScope","PopperProvider","usePopperContext","Popper","__scopePopper","anchor","setAnchor","ANCHOR_NAME","PopperAnchor","virtualRef","anchorProps","PopperContentProvider","useContentContext","PopperContent","sideOffset","alignOffset","arrowPadding","avoidCollisions","collisionBoundary","collisionPaddingProp","sticky","hideWhenDetached","updatePositionStrategy","onPlaced","setContent","setArrow","arrowSize","arrowWidth","arrowHeight","desiredPlacement","collisionPadding","hasExplicitBoundaries","isNotNull","isPositioned","anchorWidth","anchorHeight","contentStyle","floatingUIarrow","transformOrigin","placedSide","placedAlign","getSideAndAlignFromPlacement","handlePlaced","arrowX","arrowY","cannotCenterArrow","contentZIndex","setContentZIndex","ARROW_NAME","OPPOSITE_SIDE","PopperArrow","contentContext","baseSide","ArrowPrimitive.Root","isArrowHidden","noArrowAlign","arrowXCenter","arrowYCenter","Root2","Anchor","POPOVER_NAME","createPopoverContext","createPopoverScope","usePopperScope","PopoverProvider","usePopoverContext","Popover","__scopePopover","popperScope","hasCustomAnchor","setHasCustomAnchor","PopperPrimitive.Root","PopoverAnchor","onCustomAnchorAdd","onCustomAnchorRemove","PopperPrimitive.Anchor","PopoverTrigger","trigger","PopoverPortal","PopoverContent","PopoverContentModal","PopoverContentNonModal","isRightClickOutsideRef","PopoverContentImpl","isRightClick","PopperPrimitive.Content","PopoverClose","PopoverArrow","PopperPrimitive.Arrow","Anchor2","Content2","PopoverPrimitive.Root","PopoverPrimitive.Trigger","PopoverPrimitive.Anchor","PopoverPrimitive.Portal","PopoverPrimitive.Content","COMBOBOX_CONFIG","Combobox","groups","onValueChange","disabled","loading","error","errorText","searchable","placeholder","emptyText","searchPlaceholder","iconOnly","search","setSearch","allOptions","filteredItems","option","virtuosoHeight","row","header","headerHeight","contentHeight","sum","handleSelect","currentValue","selectedOption","Virtuoso","SvgTypescript","title","ForwardRef","forwardRef","SvgGo","SvgJava","SvgPython","SvgCsharp","SvgTerraform","SvgUnity","SvgPhp","SvgSwift","SvgRuby","SvgPostman","SvgJson","iconSizeMap","icons","TypeScriptIcon","GoIcon","JavaIcon","PythonIcon","CSharpIcon","TerraformIcon","UnityIcon","PhpIcon","SwiftIcon","RubyIcon","PostmanIcon","JSONIcon","TargetLanguageIcon","IconComponent","userAvatarSizeMap","userAvatarSizeMapper","fallbackColors","getFallbackColor","UserAvatar","imageUrl","border","sizeValue","hasImage","POSITION_TRANSITION","SCALE_TRANSITION","FADE_TRANSITION","useDebounce","delay","timeoutRef","useRef","useCallback","Subnav","renderItem","activeItem","setActiveItem","hoveredItem","setHoveredItem","baseWidth","setBaseWidth","activeIndicatorProps","setActiveIndicatorProps","indicatorProps","setIndicatorProps","itemRefs","previousHoveredItem","isContainerHovered","hasInitialized","newActiveItem","itemElement","itemWidth","itemLeft","centerOffset","debouncedResize","handleItemClick","handleContainerMouseEnter","handleContainerMouseLeave","handleItemHover","shouldSlide","getItemHandlers","AnimatePresence","motion","SubnavItem","memo","isActive","isHovered","handlers","LIGHT_THEME","DARK_THEME","highlightCode","code","cleanCode","removeCodeHikeAnnotations","lang","isProgrammingLanguage","getMappedLanguage","codeToTokens","line","token","ANNOTATION_TYPES","ANNOTATION_REGEX","lines","skipEmpty","Pre","showLineNumbers","wordWrap","lineIndex","tokenIndex","fontSizeMap","copyIconVariants","CodeSnippet","copyable","promptSymbol","inline","fontSize","onSelectOrCopy","shimmer","snippetClassName","copying","setCopying","containerWidth","setContainerWidth","updateWidth","highlightedCodeState","setHighlightedCodeState","isMultiline","highlighted","handleCopy","handleBeforeInput","createCollection","PROVIDER_NAME","createCollectionContext","createCollectionScope","CollectionProviderImpl","useCollectionContext","CollectionProvider","itemMap","COLLECTION_SLOT_NAME","CollectionSlot","ITEM_SLOT_NAME","ITEM_DATA_ATTR","CollectionItemSlot","itemData","useCollection","collectionNode","orderedNodes","DirectionContext","useDirection","localDir","globalDir","ENTRY_FOCUS","GROUP_NAME","Collection","createRovingFocusGroupContext","createRovingFocusGroupScope","RovingFocusProvider","useRovingFocusContext","RovingFocusGroup","RovingFocusGroupImpl","__scopeRovingFocusGroup","dir","currentTabStopIdProp","defaultCurrentTabStopId","onCurrentTabStopIdChange","onEntryFocus","preventScrollOnEntryFocus","groupProps","currentTabStopId","setCurrentTabStopId","isTabbingBackOut","setIsTabbingBackOut","handleEntryFocus","getItems","isClickFocusRef","focusableItemsCount","setFocusableItemsCount","tabStopId","prevCount","isKeyboardFocus","entryFocusEvent","currentItem","candidateNodes","ITEM_NAME","RovingFocusGroupItem","focusable","active","itemProps","autoId","isCurrentTabStop","onFocusableItemAdd","onFocusableItemRemove","focusIntent","getFocusIntent","currentIndex","wrapArray","MAP_KEY_TO_FOCUS_INTENT","getDirectionAwareKey","preventScroll","PREVIOUSLY_FOCUSED_ELEMENT","startIndex","Item","SELECTION_KEYS","FIRST_KEYS","LAST_KEYS","FIRST_LAST_KEYS","SUB_OPEN_KEYS","SUB_CLOSE_KEYS","MENU_NAME","createMenuContext","createMenuScope","useRovingFocusGroupScope","MenuProvider","useMenuContext","MenuRootProvider","useMenuRootContext","Menu","__scopeMenu","isUsingKeyboardRef","handleOpenChange","handlePointer","MenuAnchor","MenuPortal","MenuContentProvider","useMenuContentContext","MenuContent","rootContext","MenuRootContentModal","MenuRootContentNonModal","MenuContentImpl","disableOutsideScroll","rovingFocusGroupScope","currentItemId","setCurrentItemId","timerRef","searchRef","pointerGraceTimerRef","pointerGraceIntentRef","pointerDirRef","lastPointerXRef","ScrollLockWrapper","scrollLockWrapperProps","handleTypeaheadSearch","currentMatch","values","nextMatch","getNextMatch","newItem","updateSearch","isPointerMovingToSubmenu","isPointerInGraceArea","intent","RovingFocusGroup.Root","getOpenState","isKeyDownInside","isModifierKey","isCharacterKey","whenMouse","pointerXHasChanged","newDir","MenuGroup","LABEL_NAME","MenuLabel","labelProps","ITEM_SELECT","MenuItem","onSelect","isPointerDownRef","menuItem","itemSelectEvent","MenuItemImpl","isTypingAhead","textValue","isFocused","setIsFocused","textContent","setTextContent","RovingFocusGroup.Item","CHECKBOX_ITEM_NAME","MenuCheckboxItem","checked","onCheckedChange","checkboxItemProps","ItemIndicatorProvider","isIndeterminate","getCheckedState","RADIO_GROUP_NAME","RadioGroupProvider","useRadioGroupContext","MenuRadioGroup","handleValueChange","RADIO_ITEM_NAME","MenuRadioItem","radioItemProps","ITEM_INDICATOR_NAME","useItemIndicatorContext","MenuItemIndicator","itemIndicatorProps","indicatorContext","SEPARATOR_NAME","MenuSeparator","separatorProps","MenuArrow","SUB_NAME","MenuSubProvider","useMenuSubContext","MenuSub","parentMenuContext","setTrigger","SUB_TRIGGER_NAME","MenuSubTrigger","subContext","openTimerRef","onPointerGraceIntentChange","clearOpenTimer","pointerGraceTimer","contentRect","rightSide","bleed","contentNearEdge","contentFarEdge","SUB_CONTENT_NAME","MenuSubContent","subContentProps","isCloseKey","normalizedSearch","char","currentMatchIndex","wrappedValues","isPointInPolygon","point","polygon","inside","xi","yi","xj","yj","area","cursorPos","Root3","Group","Label","Item2","CheckboxItem","RadioGroup","RadioItem","ItemIndicator","Arrow2","Sub","SubTrigger","SubContent","DROPDOWN_MENU_NAME","createDropdownMenuContext","createDropdownMenuScope","useMenuScope","DropdownMenuProvider","useDropdownMenuContext","DropdownMenu","__scopeDropdownMenu","menuScope","MenuPrimitive.Root","DropdownMenuTrigger","MenuPrimitive.Anchor","DropdownMenuPortal","MenuPrimitive.Portal","DropdownMenuContent","MenuPrimitive.Content","DropdownMenuGroup","MenuPrimitive.Group","DropdownMenuLabel","MenuPrimitive.Label","DropdownMenuItem","MenuPrimitive.Item","DropdownMenuCheckboxItem","MenuPrimitive.CheckboxItem","DropdownMenuRadioGroup","radioGroupProps","MenuPrimitive.RadioGroup","DropdownMenuRadioItem","MenuPrimitive.RadioItem","INDICATOR_NAME","DropdownMenuItemIndicator","MenuPrimitive.ItemIndicator","DropdownMenuSeparator","MenuPrimitive.Separator","DropdownMenuArrow","MenuPrimitive.Arrow","DropdownMenuSub","MenuPrimitive.Sub","DropdownMenuSubTrigger","subTriggerProps","MenuPrimitive.SubTrigger","DropdownMenuSubContent","MenuPrimitive.SubContent","Portal2","Group2","Label2","CheckboxItem2","RadioGroup2","RadioItem2","ItemIndicator2","Separator2","Sub2","SubTrigger2","SubContent2","DropdownMenuPrimitive.Root","DropdownMenuPrimitive.Trigger","DropdownMenuPrimitive.Group","DropdownMenuPrimitive.Portal","DropdownMenuPrimitive.Sub","DropdownMenuPrimitive.RadioGroup","inset","DropdownMenuPrimitive.SubTrigger","ChevronRight","DropdownMenuPrimitive.SubContent","DropdownMenuPrimitive.Content","DropdownMenuPrimitive.Item","DropdownMenuPrimitive.CheckboxItem","DropdownMenuPrimitive.ItemIndicator","Check","DropdownMenuPrimitive.RadioItem","Circle","DropdownMenuPrimitive.Label","DropdownMenuPrimitive.Separator","DropdownMenuShortcut","email","onSignOut","Seperator","LoggedInMenuContent","LoggedInUserMenu","PromptInput","onSubmit","suggestions","prompt","onFileUpload","attachments","maxHeight","isSubmitting","submittingIcon","fileInputRef","acceptedFileTypes","isDisabled","maxAttachments","isDraggingOver","setIsDraggingOver","internalFileInputRef","fileInputRefInternal","textAreaRef","minHeight","promptLines","totalHeight","handleDragOver","handleFiles","files","file","handleDrop","handleDragLeave","attachment","AttachmentPreview","suggestion","img","setImg","readFile","reader","initialSizeMap","sizeClasses","GradientCircle","showInitial","inactive","initial","baseColors","baseColorIndex","charCode","baseHue","hue1","hue2","fromColor","toColor","getInitialTranslateY","letter","uniqBy","arr","OrgSelector","orgs","selectedOrg","activeIndex","setActiveIndex","org","getSelectorMedianWidth","sortedLengths","mid","medianLength","baseCharWidth","virtuosoRef","VirtuosoItem","newIndex","CreateWorkspace","allOrgs","onBack","newWorkspaceName","setNewWorkspaceName","backButtonEnabled","createInputRef","isInvalid","setIsInvalid","currentOrg","setCurrentOrg","setIsSubmitting","setError","focusInput","handleSubmit","forwardRefWithGenerics","render","DEFAULT_SCROLLBAR_CLASSES","ScrollingListInner","ScrollingList","GroupedScrollingListInner","groupCounts","renderGroupHeader","GroupedVirtuoso","itemIndex","groupIndex","SearchBox","inputRef","OrgList","showRecents","setSelectedOrg","enableRecents","onSelectRecent","filterOrgFunc","virtuoso","filteredOrgs","setFilteredOrgs","WorkspaceItem","workspace","isSelected","WorkspaceList","selectedWorkspace","handleCreateViewOpen","enableCreate","filterWorkspaceFunc","filteredWorkspaces","RecentWorkspaces","orgsWithFilteredWorkspaces","fullWidth","filteredRecents","setFilteredRecents","CreateOrg","companyName","setCompanyName","useViewTransition","isTransitioning","setIsTransitioning","startTransition","finished","WorkspaceSelector","onCreate","recents","onCreateOrg","createTriggersSelection","showCreateWorkspaceView","defaultSelectedOrg","setSelectedWorkspace","createWorkspaceViewOpen","setCreateWorkspaceViewOpen","createOrgViewOpen","setCreateOrgViewOpen","setShowRecents","previousView","setPreviousView","handleSelectOrg","handleCreateNewWorkspace","prev","handleCreateOrg","newOrgName","updateState","handleCreateWorkspaceViewOpen","backToWorkspaceSelector","backToOrgSelector","WorkspaceViewContents","showRecentsView","Wizard","steps","currentStep","completedSteps","headerContent","stepHeights","setStepHeights","stepRefs","currentElement","newMap","stepNumber","getStepStatus","trackHeight","step","curr","status","command","cmdIndex","flexClasses","alertVariants","iconForVariant","Alert","dismissible","iconName","useContainer","isDismissing","setIsDismissing","handleDismiss","innerContent","dismissableContent","Tab","Tabs","selectedTab","onTabChange","activeTab","setActiveTab","VisuallyHidden","createTooltipContext","createTooltipScope","DEFAULT_DELAY_DURATION","TOOLTIP_OPEN","TooltipProviderContextProvider","useTooltipProviderContext","TooltipProvider","__scopeTooltip","delayDuration","skipDelayDuration","disableHoverableContent","isOpenDelayed","setIsOpenDelayed","isPointerInTransitRef","skipDelayTimerRef","skipDelayTimer","inTransit","TOOLTIP_NAME","TooltipContextProvider","useTooltipContext","Tooltip","disableHoverableContentProp","delayDurationProp","providerContext","contentId","wasOpenDelayedRef","open2","stateAttribute","handleOpen","handleClose","handleDelayedOpen","TooltipTrigger","hasPointerMoveOpenedRef","handlePointerUp","TooltipPortal","TooltipContent","TooltipContentImpl","TooltipContentHoverable","pointerGraceArea","setPointerGraceArea","onClose","onPointerInTransitChange","handleRemoveGraceArea","handleCreateGraceArea","hoverTarget","currentTarget","exitPoint","exitSide","getExitSideFromRect","paddedExitPoints","getPaddedExitPoints","hoverTargetPoints","getPointsFromRect","graceArea","getHull","handleTriggerLeave","handleContentLeave","handleTrackPointerGrace","pointerPosition","hasEnteredTarget","isPointerOutsideGraceArea","VisuallyHiddenContentContextProvider","useVisuallyHiddenContentContext","ariaLabel","VisuallyHiddenPrimitive.Root","TooltipArrow","points","newPoints","getHullPresorted","upperHull","lowerHull","TooltipPrimitive.Provider","TooltipPrimitive.Root","TooltipPrimitive.Trigger","TooltipPrimitive.TooltipArrow","TooltipPrimitive.Portal","TooltipPrimitive.Content","Terminal","TerminalIcon","TerminalPrompt","time","TerminalOutput","TerminalCommand","comment","copied","setCopied","Copy","fadeUp","chevronVariants","ExpandChevron","isCollapsed","ChevronUp","CLIWizard","onStepComplete","activeStep","setActiveStep","copiedCommands","setCopiedCommands","isStepComplete","stepIndex","currentStepCommands","activeCommandIndex","cmd","SidebarSteps","newCopied","onSelectStep","complete","CircleOrCheck","isComplete","circle","text","TableContext","useTable","TableProvider","depth","defaultExpanded","expandedRowKeys","setExpandedRowKeys","toggleExpanded","rowKey","newSet","expandColumn","TableContainer","tableDepth","colWidths","cellPadding","TableRoot","tableBodyRef","tableRef","propsHasChildren","column","onRowClick","onLoadMore","hasMore","noResultsMessage","renderExpandedContent","hideHeader","isLoading","setIsLoading","handleLoadMore","Table","HeaderContainer","Header","HeaderCell","BodyContainer","Body","renderRow","RowGroup","RowExpandable","Row","NoResultsMessage","LoadMore","RowContainer","Cell","isExpanded","expand","renderExpandCol","expandCol","onClickFn","CellContainer","SubtableIndendation","isKeyOfT","RowWrapper","ButtonWrapper","Loader2","Input","multiline","handleBlur","commonProps","linkVariants","linkTextVariants","iconWrapperVariants","Link","underline","iconPrefixName","iconSuffixName","underlineClasses","IconWrapper","ContextBar","ParentLink","TitleBar","TitleArea","LeadingVisual","Actions","Footer","FooterItem","childCount","isSmallScreen","PageHeader","supportedExternals","ExternalPill","setIcon","__variableDynamicImportRuntimeHelper","module","FallbackIcon","languageLabelMap","languageColorMap","LanguageIndicator","indicatorOnly","PullRequestLink","prNumber","num","colors","PullRequestStatusIcon","GitPullRequest","GitPullRequestClosed","Merge","usePrevious","OPEN_KEYS","SELECT_NAME","createSelectContext","createSelectScope","SelectProvider","useSelectContext","SelectNativeOptionsProvider","useSelectNativeOptionsContext","Select","__scopeSelect","valueProp","autoComplete","required","form","valueNode","setValueNode","valueNodeHasChildren","setValueNodeHasChildren","triggerPointerDownPosRef","isFormControl","nativeOptionsSet","setNativeOptionsSet","nativeSelectKey","optionsSet","BubbleSelect","SelectTrigger","pointerTypeRef","resetTypeahead","useTypeaheadSearch","enabledItems","nextItem","findNextItem","pointerEvent","shouldShowPlaceholder","VALUE_NAME","SelectValue","valueProps","onValueNodeHasChildrenChange","hasChildren","ICON_NAME","SelectIcon","iconProps","SelectPortal","SelectContent","setFragment","frag","SelectContentProvider","SelectContentImpl","CONTENT_MARGIN","useSelectContentContext","CONTENT_IMPL_NAME","viewport","setViewport","selectedItem","setSelectedItem","selectedItemText","setSelectedItemText","setIsPositioned","firstValidItemFoundRef","firstItem","restItems","lastItem","focusSelectedItem","pointerMoveDelta","handlePointerMove","close","itemRefCallback","isFirstValidItem","handleItemLeave","itemTextRefCallback","SelectPosition","SelectPopperPosition","SelectItemAlignedPosition","popperContentProps","ITEM_ALIGNED_POSITION_NAME","popperProps","contentWrapper","setContentWrapper","shouldExpandOnScrollRef","shouldRepositionRef","triggerRect","valueNodeRect","itemTextRect","itemTextOffset","leftDelta","minContentWidth","contentWidth","rightEdge","clampedLeft","rightDelta","leftEdge","clampedRight","itemsHeight","contentStyles","contentBorderTopWidth","contentPaddingTop","contentBorderBottomWidth","contentPaddingBottom","fullContentHeight","minContentHeight","viewportStyles","viewportPaddingTop","viewportPaddingBottom","topEdgeToTriggerMiddle","triggerMiddleToBottomEdge","selectedItemHalfHeight","itemOffsetMiddle","contentTopToItemMiddle","itemMiddleToContentBottom","isLastItem","viewportOffsetBottom","clampedTriggerMiddleToBottomEdge","isFirstItem","handleScrollButtonChange","SelectViewportProvider","POPPER_POSITION_NAME","useSelectViewportContext","VIEWPORT_NAME","SelectViewport","viewportProps","viewportContext","prevScrollTopRef","scrolledBy","cssMinHeight","cssHeight","prevHeight","nextHeight","clampedNextHeight","heightDiff","SelectGroupContextProvider","useSelectGroupContext","SelectGroup","groupId","SelectLabel","groupContext","SelectItemContextProvider","useSelectItemContext","SelectItem","textValueProp","setTextValue","textId","prevTextValue","ITEM_TEXT_NAME","SelectItemText","itemTextProps","itemContext","nativeOptionsContext","itemTextNode","setItemTextNode","nativeOption","onNativeOptionAdd","onNativeOptionRemove","SelectItemIndicator","SCROLL_UP_BUTTON_NAME","SelectScrollUpButton","canScrollUp","setCanScrollUp","handleScroll2","canScrollUp2","SelectScrollButtonImpl","SCROLL_DOWN_BUTTON_NAME","SelectScrollDownButton","canScrollDown","setCanScrollDown","maxScroll","canScrollDown2","onAutoScroll","scrollIndicatorProps","autoScrollTimerRef","clearAutoScrollTimer","SelectSeparator","SelectArrow","selectProps","prevValue","selectProto","onSearchChange","handleSearchChange","currentItemIndex","wrappedItems","Value","Viewport","ItemText","ScrollUpButton","ScrollDownButton","SelectPrimitive.Root","SelectPrimitive.Group","SelectPrimitive.Value","SelectPrimitive.Trigger","SelectPrimitive.Icon","ChevronDown","SelectPrimitive.ScrollUpButton","SelectPrimitive.ScrollDownButton","SelectPrimitive.Portal","SelectPrimitive.Content","SelectPrimitive.Viewport","SelectPrimitive.Label","SelectPrimitive.Item","SelectPrimitive.ItemIndicator","SelectPrimitive.ItemText","SelectPrimitive.Separator","Facepile","avatars","maxFaces","avatarSize","tooltips","hoveredIndex","setHoveredIndex","prevHoveredIndex","setPrevHoveredIndex","tooltipVisible","setTooltipVisible","setIsExpanded","overlap","offsetX","visibleFaces","hiddenFaces","extraFaces","tooltipRef","tooltipWidth","setTooltipWidth","updateTooltipWidth","getTooltipPosition","handleHoverExpand","getTooltipAnimation","face","AvatarWrapper","avatar","totalFaces","interactive","motionProps","SWITCH_NAME","createSwitchContext","createSwitchScope","SwitchProvider","useSwitchContext","Switch","__scopeSwitch","checkedProp","defaultChecked","switchProps","button","setButton","hasConsumerStoppedPropagationRef","setChecked","prevChecked","BubbleInput","THUMB_NAME","SwitchThumb","thumbProps","control","bubbles","inputProps","controlSize","input","inputProto","Thumb","SwitchPrimitives.Root","SwitchPrimitives.Thumb","SegmentedButtonBase","hoveredId","setHoveredId","enhancedChildren","childId","SegmentedButtonItem","SegmentedButton","AppLayoutContext","useAppLayout","checkIsMac","modifierMap","Key","KeyHintKeys","KeyHint","actionText","dismissable","titleText","useAppLayoutKeys","keybinds","collapsed","setCollapsed","useIsMounted","isMounted","setIsMounted","THEMES","Sun","Moon","ThemeSwitcher","onThemeSwitch","rId","posX","opt","knobSizeRem","placeholderStyle","AppLayoutBase","childComponents","sidebar","surface","surfaceHeader","AppLayoutSurface","AppLayoutSidebar","onHomeNavigation","nav","AppLayoutThemeSwitcher","AppLayoutBreadcrumb","type","isValidSubType","AppLayoutBreadcrumbDivider","AppLayoutBreadcrumbItem","AppLayoutHeaderDivider","AppLayoutCollapseButton","AppLayoutSurfaceHeader","AppLayoutHeader","AppLayoutNav","AppLayoutNavItem","iconElement","titleElement","AppLayoutNavItemGroup","AppLayout","defaultKeybinds","AppLayoutProvider","defaultCollapsed","finalKeybinds","defaultModifiers","restrictToWindowEdges","DragNDropArea","collisionDetectionAlgo","DndContext","ActionBarInternal","initialPosition","onChangePosition","draggable","onDragStart","onDragEnd","setNodeRef","attributes","listeners","useDraggable","setState","useDndMonitor","transformStyle","ActionBarHandle","ActionBarSeparator","ActionBarItem","ActionBar","HighlightedText","animationTrigger","chars","highlightedIndex","setHighlightedIndex","isInView","useInView","highlightedChars","mutedBgMap","highlightBgMap","mutedFgMap","highlightFgMap","DragOverlay","DndOverlay","Draggable","onDragCancel","onDragOver","over","isDragging","activeNodeRect","CSS","Droppable","isOver","useDroppable","ResizeHandle","PanelResizeHandle","ResizablePanel","useDefaultHandle","onResize","PanelGroup","DefaultResizeHandle","Pane","panelRef","Panel","isResizing","setIsResizing","dragging","ResizablePanelWithSubcomponents","CodePlayground","snippets","selectedLanguage","onChangeLanguage","showLanguageSelector","codeRef","setHighlighted","selectedCode","loadingSkeleton","measuredHeight","codeContents","foundCustomCodeContainer","CodePlaygroundCode","footer","updateHighlighted","handleChangeLanguage","__children__","CodePlaygroundHeader","CodePlaygroundFooter","CodePlaygroundWithSubcomponents","CodeEditorLayout","panes","empty","commandBar","pane","CodeEditorPane","minSize","maxSize","tabs","CodeEditorTabs","CodeEditorTab","closable","dirty","invalid","saving","customStyles","hoveredCloseIntent","setHoveredCloseIntent","closeButton","createElement","CodeEditorCommandBar","CustomTabElement","Empty","CodeEditor","ModalContext","ModalProvider","screens","setScreens","setCurrentIndex","isOpen","setIsOpen","navigationDirection","setNavigationDirection","openScreen","screen","navigateTo","prevScreens","pushScreen","newScreens","popScreen","idx","useModal","MotionHeading","ContextDropdown","renderTitle","slideVariants","isForward","handleEscape","currentScreen","IconButton","Modal","layout","TIMELINE_STYLES","TimelineItem","isLast","setsize","TimelineContent","timestampElement","otherChildren","TimelineTitle","TimelineTimestamp","as","TimelineDescription","TimelineRoot","itemCount","timelineRef","lineHeight","setLineHeight","cloned","timelineItems","baseHeight","calculatedHeight","Timeline","AnimatedLabel","AIChatModelSelector","modelSelector","model","onModelChange","availableModels","prevLabelRef","outgoingLabel","setOutgoingLabel","renderComponent","defaultComponents","userComponents","userComponent","DefaultComponent","AIChatContext","useAIChat","AIChatMessageComposer","components","onSendMessage","initialInput","setMessage","textareaRef","adjustHeight","textarea","AIChatMessageFilePart","mimeType","fileName","getFileIcon","downloadUrl","AIChatMessageReasoningPart","reasoning","AIChatMessageSourcePart","source","AIChatMessageTextPart","ReactMarkdown","remarkGfm","TOOL_CALL_ERROR_MESSAGE","TOOL_CALL_REJECTED_MESSAGE","useToolCallApproval","executeToolCall","requiresApproval","pendingToolCall","setPendingToolCall","executeWithErrorHandling","toolCall","confirmMessage","resolve","reject","inputResultClassName","toolName","StatusIndicator","AIChatMessageToolPart","toolInvocation","toolCallId","toolCallApproval","isPending","formatResult","MotionConfig","widthHeight","CheckIcon","XIcon","UserCheck","defaultAvatars","AIChatMessage","part","AIChatMessageList","messages","messagesEndRef","AIChatContainer","beta"],"mappings":"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","x_google_ignoreList":[4,5,9,10,11,12,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,74,75,76,77,78,79,80,81,82,104,105,106,107,108,126,127,141,142,143,146]}