@pollinations/ui 0.1.0-alpha.0 → 0.1.0-alpha.3

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 (112) hide show
  1. package/README.md +151 -87
  2. package/dist/Button-CO3Dpbkj.d.cts +29 -0
  3. package/dist/Button-CO3Dpbkj.d.ts +29 -0
  4. package/dist/Chip-v-ADv6cz.d.cts +18 -0
  5. package/dist/Chip-v-ADv6cz.d.ts +18 -0
  6. package/dist/Dialog-yXzIFrDg.d.cts +63 -0
  7. package/dist/Dialog-yXzIFrDg.d.ts +63 -0
  8. package/dist/app-user-menu/sdk.cjs +893 -0
  9. package/dist/app-user-menu/sdk.cjs.map +1 -0
  10. package/dist/{compositions/app-user.d.cts → app-user-menu/sdk.d.cts} +6 -7
  11. package/dist/{compositions/app-user.d.ts → app-user-menu/sdk.d.ts} +6 -7
  12. package/dist/app-user-menu/sdk.js +872 -0
  13. package/dist/app-user-menu/sdk.js.map +1 -0
  14. package/dist/app.css +7 -32
  15. package/dist/auth/index.cjs +1346 -76
  16. package/dist/auth/index.cjs.map +1 -1
  17. package/dist/auth/index.d.cts +88 -6
  18. package/dist/auth/index.d.ts +88 -6
  19. package/dist/auth/index.js +1343 -75
  20. package/dist/auth/index.js.map +1 -1
  21. package/dist/auth/sdk.cjs +78 -60
  22. package/dist/auth/sdk.cjs.map +1 -1
  23. package/dist/auth/sdk.d.cts +2 -15
  24. package/dist/auth/sdk.d.ts +2 -15
  25. package/dist/auth/sdk.js +77 -57
  26. package/dist/auth/sdk.js.map +1 -1
  27. package/dist/brand/lockup-horizontal-black.png +0 -0
  28. package/dist/brand/lockup-horizontal-black.svg +4 -0
  29. package/dist/brand/lockup-horizontal-white.png +0 -0
  30. package/dist/brand/lockup-horizontal-white.svg +4 -0
  31. package/dist/brand/lockup-horizontal.svg +1 -0
  32. package/dist/brand/lockup-stacked-black.png +0 -0
  33. package/dist/brand/lockup-stacked-black.svg +4 -0
  34. package/dist/brand/lockup-stacked-white.png +0 -0
  35. package/dist/brand/lockup-stacked-white.svg +4 -0
  36. package/dist/brand/lockup-stacked.svg +4 -0
  37. package/dist/brand/mark-black.png +0 -0
  38. package/dist/brand/mark-black.svg +3 -0
  39. package/dist/brand/mark-white.png +0 -0
  40. package/dist/brand/mark-white.svg +3 -0
  41. package/dist/brand/mark.svg +1 -0
  42. package/dist/brand/polli/polli-lockup-horizontal-black.png +0 -0
  43. package/dist/brand/polli/polli-lockup-horizontal-white.png +0 -0
  44. package/dist/brand/polli/polli-lockup-stacked-black.png +0 -0
  45. package/dist/brand/polli/polli-lockup-stacked-white.png +0 -0
  46. package/dist/brand/polli/polli.png +0 -0
  47. package/dist/brand/wordmark-black.png +0 -0
  48. package/dist/brand/wordmark-black.svg +1 -0
  49. package/dist/brand/wordmark-white.png +0 -0
  50. package/dist/brand/wordmark-white.svg +1 -0
  51. package/dist/brand/wordmark.svg +1 -0
  52. package/dist/fonts/geist-pixel-square.woff2 +0 -0
  53. package/dist/gen/index.cjs +658 -0
  54. package/dist/gen/index.cjs.map +1 -0
  55. package/dist/gen/index.d.cts +80 -0
  56. package/dist/gen/index.d.ts +80 -0
  57. package/dist/gen/index.js +630 -0
  58. package/dist/gen/index.js.map +1 -0
  59. package/dist/index.browser.min.js +2 -0
  60. package/dist/index.browser.min.js.map +1 -0
  61. package/dist/index.cjs +3847 -1490
  62. package/dist/index.cjs.map +1 -1
  63. package/dist/index.d.cts +632 -218
  64. package/dist/index.d.ts +632 -218
  65. package/dist/index.js +3744 -1450
  66. package/dist/index.js.map +1 -1
  67. package/dist/licenses/Geist-OFL.txt +93 -0
  68. package/dist/markdown.cjs +821 -0
  69. package/dist/markdown.cjs.map +1 -0
  70. package/dist/markdown.d.cts +16 -0
  71. package/dist/markdown.d.ts +16 -0
  72. package/dist/markdown.js +792 -0
  73. package/dist/markdown.js.map +1 -0
  74. package/dist/styles.css +1 -1
  75. package/dist/theme.css +92 -0
  76. package/dist/wallet/index.cjs +258 -45
  77. package/dist/wallet/index.cjs.map +1 -1
  78. package/dist/wallet/index.d.cts +29 -7
  79. package/dist/wallet/index.d.ts +29 -7
  80. package/dist/wallet/index.js +257 -45
  81. package/dist/wallet/index.js.map +1 -1
  82. package/package.json +104 -102
  83. package/dist/Button-BvLF_Km2.d.cts +0 -26
  84. package/dist/Button-DQAZzvyQ.d.ts +0 -26
  85. package/dist/Chip-C5impfYd.d.ts +0 -20
  86. package/dist/Chip-SM52sUbZ.d.cts +0 -20
  87. package/dist/assets/logo-wordmark.svg +0 -1
  88. package/dist/assets/logo.svg +0 -4
  89. package/dist/compositions/app-user.cjs +0 -497
  90. package/dist/compositions/app-user.cjs.map +0 -1
  91. package/dist/compositions/app-user.js +0 -469
  92. package/dist/compositions/app-user.js.map +0 -1
  93. package/dist/modality/index.cjs +0 -86
  94. package/dist/modality/index.cjs.map +0 -1
  95. package/dist/modality/index.d.cts +0 -26
  96. package/dist/modality/index.d.ts +0 -26
  97. package/dist/modality/index.js +0 -59
  98. package/dist/modality/index.js.map +0 -1
  99. package/dist/models/index.cjs +0 -508
  100. package/dist/models/index.cjs.map +0 -1
  101. package/dist/models/index.d.cts +0 -22
  102. package/dist/models/index.d.ts +0 -22
  103. package/dist/models/index.js +0 -486
  104. package/dist/models/index.js.map +0 -1
  105. package/dist/theme-VMRlhqST.d.cts +0 -9
  106. package/dist/theme-VMRlhqST.d.ts +0 -9
  107. package/dist/wallet/sdk.cjs +0 -206
  108. package/dist/wallet/sdk.cjs.map +0 -1
  109. package/dist/wallet/sdk.d.cts +0 -33
  110. package/dist/wallet/sdk.d.ts +0 -33
  111. package/dist/wallet/sdk.js +0 -175
  112. package/dist/wallet/sdk.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/browser/react-global.ts","../../../node_modules/clsx/dist/clsx.mjs","../../../node_modules/tailwind-merge/src/lib/utils.ts","../../../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../../node_modules/tailwind-merge/src/lib/lru-cache.ts","../../../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../../node_modules/tailwind-merge/src/lib/sort-modifiers.ts","../../../node_modules/tailwind-merge/src/lib/config-utils.ts","../../../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../../node_modules/tailwind-merge/src/lib/tw-join.ts","../../../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../../node_modules/tailwind-merge/src/lib/from-theme.ts","../../../node_modules/tailwind-merge/src/lib/validators.ts","../../../node_modules/tailwind-merge/src/lib/default-config.ts","../../../node_modules/tailwind-merge/src/lib/merge-configs.ts","../../../node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../../node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/lib/cn.ts","../src/browser/react-jsx-runtime-global.ts","../src/primitives/ChevronIcon.tsx","../../../node_modules/@zag-js/anatomy/dist/create-anatomy.mjs","../../../node_modules/@zag-js/popover/dist/popover.anatomy.mjs","../../../node_modules/@zag-js/dom-query/dist/chunk-QZ7TP4HQ.mjs","../../../node_modules/@zag-js/dom-query/dist/caret.mjs","../../../node_modules/@zag-js/dom-query/dist/shared.mjs","../../../node_modules/@zag-js/dom-query/dist/node.mjs","../../../node_modules/@zag-js/dom-query/dist/computed-style.mjs","../../../node_modules/@zag-js/dom-query/dist/controller.mjs","../../../node_modules/@zag-js/dom-query/dist/platform.mjs","../../../node_modules/@zag-js/dom-query/dist/event.mjs","../../../node_modules/@zag-js/dom-query/dist/tabbable.mjs","../../../node_modules/@zag-js/dom-query/dist/initial-focus.mjs","../../../node_modules/@zag-js/dom-query/dist/raf.mjs","../../../node_modules/@zag-js/dom-query/dist/mutation-observer.mjs","../../../node_modules/@zag-js/dom-query/dist/navigate.mjs","../../../node_modules/@zag-js/dom-query/dist/overflow.mjs","../../../node_modules/@zag-js/dom-query/dist/proxy-tab-focus.mjs","../../../node_modules/@zag-js/dom-query/dist/query.mjs","../../../node_modules/@zag-js/dom-query/dist/scroll.mjs","../../../node_modules/@zag-js/dom-query/dist/set.mjs","../../../node_modules/@zag-js/dom-query/dist/wait-for.mjs","../../../node_modules/@floating-ui/core/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../../../node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../../../node_modules/@floating-ui/dom/node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../../../node_modules/@zag-js/utils/dist/array.mjs","../../../node_modules/@zag-js/utils/dist/equal.mjs","../../../node_modules/@zag-js/utils/dist/guard.mjs","../../../node_modules/@zag-js/utils/dist/functions.mjs","../../../node_modules/@zag-js/utils/dist/object.mjs","../../../node_modules/@zag-js/utils/dist/warning.mjs","../../../node_modules/@zag-js/popper/dist/get-anchor.mjs","../../../node_modules/@zag-js/popper/dist/middleware.mjs","../../../node_modules/@zag-js/popper/dist/placement.mjs","../../../node_modules/@zag-js/popper/dist/get-placement.mjs","../../../node_modules/@zag-js/popper/dist/get-styles.mjs","../../../node_modules/@zag-js/popover/dist/popover.dom.mjs","../../../node_modules/@zag-js/popover/dist/popover.connect.mjs","../../../node_modules/@zag-js/aria-hidden/dist/walk-tree-outside.mjs","../../../node_modules/@zag-js/aria-hidden/dist/aria-hidden.mjs","../../../node_modules/@zag-js/aria-hidden/dist/index.mjs","../../../node_modules/@zag-js/core/dist/merge-props.mjs","../../../node_modules/@zag-js/core/dist/state.mjs","../../../node_modules/@zag-js/core/dist/create-machine.mjs","../../../node_modules/@zag-js/core/dist/types.mjs","../../../node_modules/@zag-js/core/dist/scope.mjs","../../../node_modules/@zag-js/interact-outside/dist/frame-utils.mjs","../../../node_modules/@zag-js/interact-outside/dist/index.mjs","../../../node_modules/@zag-js/dismissable/dist/escape-keydown.mjs","../../../node_modules/@zag-js/dismissable/dist/layer-stack.mjs","../../../node_modules/@zag-js/dismissable/dist/pointer-event-outside.mjs","../../../node_modules/@zag-js/dismissable/dist/dismissable-layer.mjs","../../../node_modules/@zag-js/focus-trap/dist/chunk-QZ7TP4HQ.mjs","../../../node_modules/@zag-js/focus-trap/dist/focus-trap.mjs","../../../node_modules/@zag-js/focus-trap/dist/index.mjs","../../../node_modules/@zag-js/remove-scroll/dist/index.mjs","../../../node_modules/@zag-js/popover/dist/popover.machine.mjs","../../../node_modules/@zag-js/types/dist/prop-types.mjs","../../../node_modules/@ark-ui/react/dist/utils/create-context.js","../../../node_modules/@ark-ui/react/dist/components/popover/use-popover-context.js","../../../node_modules/@ark-ui/react/dist/utils/compose-refs.js","../../../node_modules/@ark-ui/react/dist/components/factory.js","../src/browser/react-dom-global.ts","../../../node_modules/@zag-js/react/dist/use-layout-effect.mjs","../../../node_modules/@zag-js/react/dist/bindable.mjs","../../../node_modules/@zag-js/react/dist/refs.mjs","../../../node_modules/@zag-js/react/dist/track.mjs","../../../node_modules/@zag-js/react/dist/machine.mjs","../../../node_modules/@zag-js/react/dist/normalize-props.mjs","../../../node_modules/@ark-ui/react/dist/components/popover/popover-anchor.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-arrow.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-arrow-tip.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-close-trigger.js","../../../node_modules/@ark-ui/react/dist/components/presence/use-presence-context.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-content.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-context.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-description.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-indicator.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-positioner.js","../../../node_modules/@ark-ui/react/dist/providers/environment/use-environment-context.js","../../../node_modules/@ark-ui/react/dist/providers/locale/use-locale-context.js","../../../node_modules/@ark-ui/react/dist/components/popover/use-popover.js","../../../node_modules/@ark-ui/react/dist/utils/create-split-props.js","../../../node_modules/@ark-ui/react/dist/components/presence/split-presence-props.js","../../../node_modules/@ark-ui/react/dist/utils/use-event.js","../../../node_modules/@zag-js/presence/dist/presence.connect.mjs","../../../node_modules/@zag-js/presence/dist/presence.machine.mjs","../../../node_modules/@ark-ui/react/dist/components/presence/use-presence.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-root.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-root-provider.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-title.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover-trigger.js","../../../node_modules/@ark-ui/react/dist/_virtual/_rolldown/runtime.js","../../../node_modules/@ark-ui/react/dist/components/popover/popover.js","../../../node_modules/@ark-ui/react/dist/components/portal/portal.js","../src/primitives/Dropdown.tsx","../src/compositions/AccountIdentity.tsx","../src/primitives/icons/index.tsx","../src/primitives/Typography.tsx","../src/compositions/Alert.tsx","../src/compositions/AppHeader.tsx","../src/primitives/Surface.tsx","../src/compositions/Callout.tsx","../src/primitives/ScrollArea.tsx","../src/compositions/ChatConversation.tsx","../src/compositions/ChatMessage.tsx","../src/primitives/Textarea.tsx","../src/compositions/ChatPromptInput.tsx","../src/primitives/Button.tsx","../src/primitives/Tooltip.tsx","../src/compositions/CopyButton.tsx","../src/compositions/CodeBlock.tsx","../src/compositions/Collapsible.tsx","../../../node_modules/@zag-js/dialog/dist/dialog.anatomy.mjs","../../../node_modules/@zag-js/dialog/dist/dialog.dom.mjs","../../../node_modules/@zag-js/dialog/dist/dialog.connect.mjs","../../../node_modules/@zag-js/dialog/dist/dialog.machine.mjs","../../../node_modules/@ark-ui/react/dist/components/dialog/use-dialog-context.js","../../../node_modules/@ark-ui/react/dist/utils/render-strategy.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-backdrop.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-close-trigger.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-content.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-context.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-description.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-positioner.js","../../../node_modules/@ark-ui/react/dist/components/dialog/use-dialog.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-root.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-root-provider.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-title.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog-trigger.js","../../../node_modules/@ark-ui/react/dist/components/dialog/dialog.js","../src/primitives/Dialog.tsx","../src/compositions/ConfirmationDialog.tsx","../src/primitives/Eyebrow.tsx","../src/compositions/ContentHeader.tsx","../src/compositions/CopyField.tsx","../../../node_modules/@zag-js/collection/dist/chunk-QZ7TP4HQ.mjs","../../../node_modules/@zag-js/collection/dist/list-collection.mjs","../../../node_modules/@zag-js/collection/dist/selection-map.mjs","../../../node_modules/@ark-ui/react/dist/components/collection/list-collection.js","../../../node_modules/@zag-js/combobox/dist/combobox.anatomy.mjs","../../../node_modules/@zag-js/combobox/dist/combobox.collection.mjs","../../../node_modules/@zag-js/combobox/dist/combobox.dom.mjs","../../../node_modules/@zag-js/combobox/dist/combobox.connect.mjs","../../../node_modules/@zag-js/focus-visible/dist/index.mjs","../../../node_modules/@zag-js/live-region/dist/index.mjs","../../../node_modules/@zag-js/combobox/dist/combobox.machine.mjs","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox.anatomy.js","../../../node_modules/@ark-ui/react/dist/components/combobox/use-combobox-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-clear-trigger.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-content.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-empty.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-control.js","../../../node_modules/@ark-ui/react/dist/components/field/use-field-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-input.js","../../../node_modules/@ark-ui/react/dist/components/combobox/use-combobox-item-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/use-combobox-item-props-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/use-combobox-item-group-props-context.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item-group.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item-group-label.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item-indicator.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-item-text.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-label.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-list.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-positioner.js","../../../node_modules/@ark-ui/react/dist/components/combobox/use-combobox.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-root.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-root-provider.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox-trigger.js","../../../node_modules/@ark-ui/react/dist/components/combobox/combobox.js","../src/primitives/Input.tsx","../src/compositions/EditableCombobox.tsx","../src/lib/link.ts","../src/compositions/ExternalLinkButton.tsx","../../../node_modules/@ark-ui/react/dist/components/field/field.anatomy.js","../../../node_modules/@ark-ui/react/dist/components/field/field-context.js","../../../node_modules/@ark-ui/react/dist/components/field/field-error-text.js","../../../node_modules/@ark-ui/react/dist/components/field/field-helper-text.js","../../../node_modules/@ark-ui/react/dist/components/field/field-input.js","../../../node_modules/@ark-ui/react/dist/components/field/field-item.js","../../../node_modules/@ark-ui/react/dist/components/field/field-label.js","../../../node_modules/@ark-ui/react/dist/components/field/field-required-indicator.js","../../../node_modules/@ark-ui/react/dist/components/fieldset/use-fieldset-context.js","../../../node_modules/@ark-ui/react/dist/utils/use-safe-layout-effect.js","../../../node_modules/@ark-ui/react/dist/components/field/use-field.js","../../../node_modules/@ark-ui/react/dist/components/field/field-root.js","../../../node_modules/@ark-ui/react/dist/components/field/field-root-provider.js","../../../node_modules/@ark-ui/react/dist/components/field/field-select.js","../../../node_modules/@zag-js/auto-resize/dist/autoresize-textarea.mjs","../../../node_modules/@ark-ui/react/dist/components/field/field-textarea.js","../../../node_modules/@ark-ui/react/dist/components/field/field.js","../src/compositions/FieldStack.tsx","../src/lib/document-file-drop-guard.ts","../src/lib/partition-files.ts","../src/primitives/IconButton.tsx","../src/compositions/FileUpload.tsx","../src/compositions/InfoTip.tsx","../src/primitives/Chip.tsx","../src/compositions/KeyChip.tsx","../src/compositions/LinkCard.tsx","../src/compositions/MediaPlaceholder.tsx","../src/compositions/MultiSelect.tsx","../src/compositions/NavItem.tsx","../src/lib/period.ts","../src/primitives/TabButton.tsx","../src/compositions/PeriodPicker.tsx","../src/compositions/Section.tsx","../src/compositions/StatCard.tsx","../src/primitives/InlineLink.tsx","../src/compositions/ToolCallDetails.tsx","../src/lib/cn-app.ts","../src/lib/use-scroll-lock.ts","../src/primitives/ButtonGroup.tsx","../src/primitives/ColorModeToggle.tsx","../src/primitives/Drawer.tsx","../src/primitives/DropdownItem.tsx","../src/primitives/Slider.tsx","../src/primitives/Switch.tsx","../src/primitives/Table.tsx","../src/primitives/TableDisclosureButton.tsx"],"sourcesContent":["export {\n AccountIdentity,\n type AccountIdentityProps,\n} from \"./compositions/AccountIdentity.tsx\";\nexport {\n AccountMenu,\n type AccountMenuProps,\n} from \"./compositions/AccountMenu.tsx\";\nexport { Alert, type AlertProps } from \"./compositions/Alert.tsx\";\nexport { AppHeader, type AppHeaderProps } from \"./compositions/AppHeader.tsx\";\nexport { Callout, type CalloutProps } from \"./compositions/Callout.tsx\";\nexport {\n ChatConversation,\n ChatConversationContent,\n type ChatConversationContentProps,\n type ChatConversationProps,\n} from \"./compositions/ChatConversation.tsx\";\nexport {\n ChatMessage,\n ChatMessageActions,\n type ChatMessageActionsProps,\n ChatMessageContent,\n type ChatMessageContentProps,\n ChatMessageHeader,\n type ChatMessageHeaderProps,\n type ChatMessageProps,\n type ChatMessageRole,\n} from \"./compositions/ChatMessage.tsx\";\nexport {\n ChatPromptInput,\n ChatPromptInputFooter,\n type ChatPromptInputFooterProps,\n type ChatPromptInputProps,\n ChatPromptTextarea,\n} from \"./compositions/ChatPromptInput.tsx\";\nexport { CodeBlock, type CodeBlockProps } from \"./compositions/CodeBlock.tsx\";\nexport {\n Collapsible,\n type CollapsibleProps,\n} from \"./compositions/Collapsible.tsx\";\nexport {\n ConfirmationDialog,\n type ConfirmationDialogProps,\n} from \"./compositions/ConfirmationDialog.tsx\";\nexport {\n ContentHeader,\n type ContentHeaderProps,\n} from \"./compositions/ContentHeader.tsx\";\nexport {\n CopyButton,\n type CopyButtonProps,\n} from \"./compositions/CopyButton.tsx\";\nexport { CopyField, type CopyFieldProps } from \"./compositions/CopyField.tsx\";\nexport {\n EditableCombobox,\n type EditableComboboxProps,\n EditableComboboxToken,\n type EditableComboboxTokenProps,\n} from \"./compositions/EditableCombobox.tsx\";\nexport {\n ExternalLinkButton,\n type ExternalLinkButtonProps,\n} from \"./compositions/ExternalLinkButton.tsx\";\nexport {\n FieldStack,\n type FieldStackProps,\n} from \"./compositions/FieldStack.tsx\";\nexport {\n FileUpload,\n type FileUploadProps,\n} from \"./compositions/FileUpload.tsx\";\nexport { InfoTip } from \"./compositions/InfoTip.tsx\";\nexport { KeyChip, type KeyChipProps } from \"./compositions/KeyChip.tsx\";\nexport { LinkCard, type LinkCardProps } from \"./compositions/LinkCard.tsx\";\n// Markdown and Prose live at @pollinations/ui/markdown — see src/markdown.ts.\nexport {\n MediaPlaceholder,\n type MediaPlaceholderProps,\n} from \"./compositions/MediaPlaceholder.tsx\";\nexport {\n MultiSelect,\n type MultiSelectProps,\n} from \"./compositions/MultiSelect.tsx\";\nexport { NavItem, type NavItemProps } from \"./compositions/NavItem.tsx\";\nexport {\n PeriodPicker,\n type PeriodPickerProps,\n} from \"./compositions/PeriodPicker.tsx\";\nexport { Section, type SectionProps } from \"./compositions/Section.tsx\";\nexport { StatCard, type StatCardProps } from \"./compositions/StatCard.tsx\";\nexport {\n ToolCallDetails,\n type ToolCallDetailsProps,\n type ToolCallStatus,\n} from \"./compositions/ToolCallDetails.tsx\";\nexport { cn } from \"./lib/cn-app.ts\";\nexport {\n currentPeriod,\n getPeriodBucketKeys,\n isPeriodSelectable,\n type PeriodGranularity,\n type PeriodSelection,\n periodBucketKeyToDate,\n periodFromDate,\n periodToWindow,\n} from \"./lib/period.ts\";\nexport { useScrollLock } from \"./lib/use-scroll-lock.ts\";\nexport {\n Button,\n type ButtonAppearance,\n type ButtonProps,\n} from \"./primitives/Button.tsx\";\nexport {\n ButtonGroup,\n type ButtonGroupProps,\n} from \"./primitives/ButtonGroup.tsx\";\nexport { ChevronIcon } from \"./primitives/ChevronIcon.tsx\";\nexport { Chip } from \"./primitives/Chip.tsx\";\nexport {\n ColorModeToggle,\n setColorMode,\n useColorMode,\n} from \"./primitives/ColorModeToggle.tsx\";\nexport {\n Dialog,\n DialogBody,\n type DialogBodyProps,\n DialogDescription,\n DialogFooter,\n type DialogFooterProps,\n DialogHeader,\n type DialogHeaderProps,\n type DialogProps,\n DialogTitle,\n} from \"./primitives/Dialog.tsx\";\nexport { Drawer, type DrawerProps } from \"./primitives/Drawer.tsx\";\nexport { Dropdown, type DropdownProps } from \"./primitives/Dropdown.tsx\";\nexport {\n DropdownItem,\n type DropdownItemProps,\n} from \"./primitives/DropdownItem.tsx\";\nexport { Eyebrow, type EyebrowProps } from \"./primitives/Eyebrow.tsx\";\nexport { Field } from \"./primitives/Field.tsx\";\nexport {\n IconButton,\n type IconButtonIntent,\n type IconButtonProps,\n type IconButtonVariant,\n} from \"./primitives/IconButton.tsx\";\nexport { InlineLink, type InlineLinkProps } from \"./primitives/InlineLink.tsx\";\nexport { Input, type InputProps } from \"./primitives/Input.tsx\";\nexport * from \"./primitives/icons/index.tsx\";\nexport { ScrollArea, type ScrollAreaProps } from \"./primitives/ScrollArea.tsx\";\nexport { Slider, type SliderProps } from \"./primitives/Slider.tsx\";\nexport { Surface, type SurfaceProps } from \"./primitives/Surface.tsx\";\nexport {\n Switch,\n type SwitchProps,\n type SwitchStatus,\n} from \"./primitives/Switch.tsx\";\nexport {\n TabButton,\n type TabButtonProps,\n} from \"./primitives/TabButton.tsx\";\nexport {\n Table,\n TableBody,\n type TableBodyProps,\n TableCell,\n type TableCellProps,\n TableHead,\n TableHeaderCell,\n type TableHeaderCellProps,\n type TableHeadProps,\n type TableProps,\n TableRow,\n type TableRowProps,\n} from \"./primitives/Table.tsx\";\nexport {\n TableDisclosureButton,\n type TableDisclosureButtonProps,\n} from \"./primitives/TableDisclosureButton.tsx\";\nexport { Textarea, type TextareaProps } from \"./primitives/Textarea.tsx\";\nexport { Tooltip } from \"./primitives/Tooltip.tsx\";\nexport {\n Heading,\n type HeadingProps,\n Text,\n type TextProps,\n} from \"./primitives/Typography.tsx\";\n","import type * as ReactModule from \"react\";\n\ntype ReactGlobal = typeof ReactModule;\n\nfunction getReact(): ReactGlobal {\n const React = (globalThis as typeof globalThis & { React?: ReactGlobal })\n .React;\n\n if (!React) {\n throw new Error(\n \"@pollinations/ui browser bundle requires globalThis.React. Load React before @pollinations/ui.\",\n );\n }\n\n return React;\n}\n\nconst React = getReact();\n\nexport default React;\nexport const {\n Children,\n Component,\n Fragment,\n Profiler,\n PureComponent,\n StrictMode,\n Suspense,\n cache,\n cloneElement,\n createContext,\n createElement,\n createRef,\n forwardRef,\n isValidElement,\n lazy,\n memo,\n startTransition,\n use,\n useActionState,\n useCallback,\n useContext,\n useDebugValue,\n useDeferredValue,\n useEffect,\n useEffectEvent,\n useId,\n useImperativeHandle,\n useInsertionEffect,\n useLayoutEffect,\n useMemo,\n useOptimistic,\n useReducer,\n useRef,\n useState,\n useSyncExternalStore,\n useTransition,\n version,\n} = React;\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;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nexport const concatArrays = <T, U>(\n array1: readonly T[],\n array2: readonly U[],\n): readonly (T | U)[] => {\n // Pre-allocate for better V8 optimization\n const combinedArray: (T | U)[] = new Array(array1.length + array2.length)\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i]!\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i]!\n }\n return combinedArray\n}\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\nimport { concatArrays } from './utils'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[] | null\n classGroupId: AnyClassGroupIds | undefined // Always define optional props for consistent shape\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (\n classGroupId: AnyClassGroupIds,\n validator: ClassValidator,\n): ClassValidatorObject => ({\n classGroupId,\n validator,\n})\n\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (\n nextPart: Map<string, ClassPartObject> = new Map(),\n validators: ClassValidatorObject[] | null = null,\n classGroupId?: AnyClassGroupIds,\n): ClassPartObject => ({\n nextPart,\n validators,\n classGroupId,\n})\n\nconst CLASS_PART_SEPARATOR = '-'\n\nconst EMPTY_CONFLICTS: readonly AnyClassGroupIds[] = []\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className)\n }\n\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 skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0\n return getGroupRecursive(classParts, startIndex, classMap)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ): readonly AnyClassGroupIds[] => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId]\n const baseConflicts = conflictingClassGroups[classGroupId]\n\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts)\n }\n // Only modifier conflicts\n return modifierConflicts\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS\n }\n\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n startIndex: number,\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n const classPathsLength = classParts.length - startIndex\n if (classPathsLength === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[startIndex]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject)\n if (result) return result\n }\n\n const validators = classPartObject.validators\n if (validators === null) {\n return undefined\n }\n\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest =\n startIndex === 0\n ? classParts.join(CLASS_PART_SEPARATOR)\n : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR)\n const validatorsLength = validators.length\n\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i]!\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId\n }\n }\n\n return undefined\n}\n\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = (className: string): AnyClassGroupIds | undefined =>\n className.slice(1, -1).indexOf(':') === -1\n ? undefined\n : (() => {\n const content = className.slice(1, -1)\n const colonIndex = content.indexOf(':')\n const property = content.slice(0, colonIndex)\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined\n })()\n\n/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, classGroups } = config\n return processClassGroups(classGroups, theme)\n}\n\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (\n classGroups: Record<AnyClassGroupIds, ClassGroup<AnyThemeGroupIds>>,\n theme: ThemeObject<AnyThemeGroupIds>,\n): ClassPartObject => {\n const classMap = createClassPartObject()\n\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId]!\n processClassesRecursively(group, classMap, classGroupId, theme)\n }\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const len = classGroup.length\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i]!\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme)\n }\n}\n\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (\n classDefinition: ClassGroup<AnyThemeGroupIds>[number],\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId)\n return\n }\n\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme)\n return\n }\n\n processObjectDefinition(\n classDefinition as Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject,\n classGroupId,\n theme,\n )\n}\n\nconst processStringDefinition = (\n classDefinition: string,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n) => {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n}\n\nconst processFunctionDefinition = (\n classDefinition: Function,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme)\n return\n }\n\n if (classPartObject.validators === null) {\n classPartObject.validators = []\n }\n classPartObject.validators.push(\n createClassValidatorObject(classGroupId, classDefinition as ClassValidator),\n )\n}\n\nconst processObjectDefinition = (\n classDefinition: Record<string, ClassGroup<AnyThemeGroupIds>>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n const entries = Object.entries(classDefinition)\n const len = entries.length\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i]!\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme)\n }\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string): ClassPartObject => {\n let current = classPartObject\n const parts = path.split(CLASS_PART_SEPARATOR)\n const len = parts.length\n\n for (let i = 0; i < len; i++) {\n const part = parts[i]!\n\n let next = current.nextPart.get(part)\n if (!next) {\n next = createClassPartObject()\n current.nextPart.set(part, next)\n }\n current = next\n }\n\n return current\n}\n\n// Type guard maintains monomorphic check\nconst isThemeGetter = (func: Function): func is ThemeGetter =>\n 'isThemeGetter' in func && (func as ThemeGetter).isThemeGetter === true\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key extends string, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\n\n// LRU cache implementation using plain objects for simplicity\nexport const createLruCache = <Key extends string, Value>(\n maxCacheSize: number,\n): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache: Record<Key, Value> = Object.create(null)\n let previousCache: Record<Key, Value> = Object.create(null)\n\n const update = (key: Key, value: Value) => {\n cache[key] = value\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = Object.create(null)\n }\n }\n\n return {\n get(key) {\n let value = cache[key]\n\n if (value !== undefined) {\n return value\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value)\n return value\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value\n } else {\n update(key, value)\n }\n },\n }\n}\n","import { AnyConfig, ParsedClassName } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nconst MODIFIER_SEPARATOR = ':'\nconst EMPTY_MODIFIERS: string[] = []\n\n// Pre-allocated result object shape for consistency\nconst createResultObject = (\n modifiers: string[],\n hasImportantModifier: boolean,\n baseClassName: string,\n maybePostfixModifierPosition?: number,\n isExternal?: boolean,\n): ParsedClassName => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal,\n})\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { prefix, experimentalParseClassName } = config\n\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: string): ParsedClassName => {\n // Use simple array with push for better performance\n const modifiers: string[] = []\n\n let bracketDepth = 0\n let parenDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n const len = className.length\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index]!\n\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + 1\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') bracketDepth++\n else if (currentCharacter === ']') bracketDepth--\n else if (currentCharacter === '(') parenDepth++\n else if (currentCharacter === ')') parenDepth--\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.slice(modifierStart)\n\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier\n let hasImportantModifier = false\n\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1)\n hasImportantModifier = true\n } else if (\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 baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n ) {\n baseClassName = baseClassNameWithImportantModifier.slice(1)\n hasImportantModifier = true\n }\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return createResultObject(\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n )\n }\n\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n className.startsWith(fullPrefix)\n ? parseClassNameOriginal(className.slice(fullPrefix.length))\n : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true)\n }\n\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName\n parseClassName = (className: string) =>\n experimentalParseClassName({ className, parseClassName: parseClassNameOriginal })\n }\n\n return parseClassName\n}\n","import { AnyConfig } from './types'\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 */\nexport const createSortModifiers = (config: AnyConfig) => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map<string, number>()\n\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index) // High weights for sensitive mods\n })\n\n return (modifiers: readonly string[]): string[] => {\n const result: string[] = []\n let currentSegment: string[] = []\n\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i]!\n\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '['\n const isOrderSensitive = modifierWeights.has(modifier)\n\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n currentSegment = []\n }\n result.push(modifier)\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier)\n }\n }\n\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort()\n result.push(...currentSegment)\n }\n\n return result\n }\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { createSortModifiers } from './sort-modifiers'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } =\n configUtils\n\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: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n } = parseClassName(originalClassName)\n\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n let hasPostfixModifier = !!maybePostfixModifierPosition\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n // Fast path: skip sorting for empty or single modifier\n const variantModifier =\n modifiers.length === 0\n ? ''\n : modifiers.length === 1\n ? modifiers[0]!\n : sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\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\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\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 */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport const twJoin = (...classLists: ClassNameValue[]): string => {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\n while (index < classLists.length) {\n if ((argument = classLists[index++])) {\n if ((resolvedValue = toValue(argument))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n return string\n}\n\nconst toValue = (mix: ClassNameArray | string): string => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createTailwindMerge = (\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge => {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall: (classList: string) => string\n\n const initTailwindMerge = (classList: string) => {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n const tailwindMerge = (classList: string) => {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n functionToCall = initTailwindMerge\n\n return (...args: ClassNameValue[]) => functionToCall(twJoin(...args))\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nconst fallbackThemeArr: ThemeObject<DefaultThemeGroupIds>[DefaultThemeGroupIds] = []\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(\n key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>,\n): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || fallbackThemeArr\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\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)|color-mix)\\(.+\\)$/\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 =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isFraction = (value: string) => fractionRegex.test(value)\n\nexport const isNumber = (value: string) => !!value && !Number.isNaN(Number(value))\n\nexport const isInteger = (value: string) => !!value && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nexport const isAny = () => true\n\nconst isLengthOnly = (value: string) =>\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.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n\nexport const isAnyNonArbitrary = (value: string) =>\n !isArbitraryValue(value) && !isArbitraryVariable(value)\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, isLabelSize, isNever)\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, isLabelLength, isLengthOnly)\n\nexport const isArbitraryNumber = (value: string) =>\n getIsArbitraryValue(value, isLabelNumber, isNumber)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, isLabelPosition, isNever)\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, isLabelImage, isImage)\n\nexport const isArbitraryShadow = (value: string) =>\n getIsArbitraryValue(value, isLabelShadow, isShadow)\n\nexport const isArbitraryVariable = (value: string) => arbitraryVariableRegex.test(value)\n\nexport const isArbitraryVariableLength = (value: string) =>\n getIsArbitraryVariable(value, isLabelLength)\n\nexport const isArbitraryVariableFamilyName = (value: string) =>\n getIsArbitraryVariable(value, isLabelFamilyName)\n\nexport const isArbitraryVariablePosition = (value: string) =>\n getIsArbitraryVariable(value, isLabelPosition)\n\nexport const isArbitraryVariableSize = (value: string) => getIsArbitraryVariable(value, isLabelSize)\n\nexport const isArbitraryVariableImage = (value: string) =>\n getIsArbitraryVariable(value, isLabelImage)\n\nexport const isArbitraryVariableShadow = (value: string) =>\n getIsArbitraryVariable(value, isLabelShadow, true)\n\n// Helpers\n\nconst getIsArbitraryValue = (\n value: string,\n testLabel: (label: string) => boolean,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst getIsArbitraryVariable = (\n value: string,\n testLabel: (label: string) => boolean,\n shouldMatchNoLabel = false,\n) => {\n const result = arbitraryVariableRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return testLabel(result[1])\n }\n return shouldMatchNoLabel\n }\n\n return false\n}\n\n// Labels\n\nconst isLabelPosition = (label: string) => label === 'position' || label === 'percentage'\n\nconst isLabelImage = (label: string) => label === 'image' || label === 'url'\n\nconst isLabelSize = (label: string) => label === 'length' || label === 'size' || label === 'bg-size'\n\nconst isLabelLength = (label: string) => label === 'length'\n\nconst isLabelNumber = (label: string) => label === 'number'\n\nconst isLabelFamilyName = (label: string) => label === 'family-name'\n\nconst isLabelShadow = (label: string) => label === 'shadow'\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\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} from './validators'\n\nexport const getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\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 themeTextShadow = fromTheme('text-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 /**\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\n const scaleBreak = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const scalePosition = () =>\n [\n 'center',\n 'top',\n 'bottom',\n 'left',\n 'right',\n 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top',\n 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top',\n 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom',\n 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom',\n ] as const\n const scalePositionWithArbitrary = () =>\n [...scalePosition(), isArbitraryVariable, isArbitraryValue] as const\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const scaleOverscroll = () => ['auto', 'contain', 'none'] as const\n const scaleUnambiguousSpacing = () =>\n [isArbitraryVariable, isArbitraryValue, themeSpacing] as const\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()] as const\n const scaleGridTemplateColsRows = () =>\n [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridColRowStartAndEnd = () =>\n [\n 'auto',\n { span: ['full', isInteger, isArbitraryVariable, isArbitraryValue] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleGridColRowStartOrEnd = () =>\n [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] as const\n const scaleGridAutoColsRows = () =>\n ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue] as const\n const scaleAlignPrimaryAxis = () =>\n [\n 'start',\n 'end',\n 'center',\n 'between',\n 'around',\n 'evenly',\n 'stretch',\n 'baseline',\n 'center-safe',\n 'end-safe',\n ] as const\n const scaleAlignSecondaryAxis = () =>\n ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'] as const\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()] as const\n const scaleSizing = () =>\n [\n isFraction,\n 'auto',\n 'full',\n 'dvw',\n 'dvh',\n 'lvw',\n 'lvh',\n 'svw',\n 'svh',\n 'min',\n 'max',\n 'fit',\n ...scaleUnambiguousSpacing(),\n ] as const\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue] as const\n const scaleBgPosition = () =>\n [\n ...scalePosition(),\n isArbitraryVariablePosition,\n isArbitraryPosition,\n { position: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleBgRepeat = () => ['no-repeat', { repeat: ['', 'x', 'y', 'space', 'round'] }] as const\n const scaleBgSize = () =>\n [\n 'auto',\n 'cover',\n 'contain',\n isArbitraryVariableSize,\n isArbitrarySize,\n { size: [isArbitraryVariable, isArbitraryValue] },\n ] as const\n const scaleGradientStopPosition = () =>\n [isPercent, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleRadius = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n 'full',\n themeRadius,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleBorderWidth = () =>\n ['', isNumber, isArbitraryVariableLength, isArbitraryLength] as const\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'] as const\n const scaleBlendMode = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const scaleMaskImagePosition = () =>\n [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition] as const\n const scaleBlur = () =>\n [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeBlur,\n isArbitraryVariable,\n isArbitraryValue,\n ] as const\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue] as const\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()] as const\n\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': [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n ],\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 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest'],\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [\n {\n aspect: [\n 'auto',\n 'square',\n isFraction,\n isArbitraryValue,\n isArbitraryVariable,\n themeAspect,\n ],\n },\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': [{ 'break-after': scaleBreak() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': scaleBreak() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\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: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\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': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: scalePositionWithArbitrary() }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: scaleOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': scaleOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': scaleOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: scaleOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': scaleOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': scaleOverscroll() }],\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: [{ inset: scaleInset() }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': scaleInset() }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': scaleInset() }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: scaleInset() }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: scaleInset() }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: scaleInset() }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: scaleInset() }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: scaleInset() }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: scaleInset() }],\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: [{ z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [\n {\n basis: [\n isFraction,\n 'full',\n 'auto',\n themeContainer,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['nowrap', 'wrap', 'wrap-reverse'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [\n {\n order: [\n isInteger,\n 'first',\n 'last',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': scaleGridTemplateColsRows() }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{ col: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': scaleGridTemplateColsRows() }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{ row: scaleGridColRowStartAndEnd() }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': scaleGridColRowStartOrEnd() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': scaleGridAutoColsRows() }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': scaleGridAutoColsRows() }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: scaleUnambiguousSpacing() }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': scaleUnambiguousSpacing() }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': scaleUnambiguousSpacing() }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: [...scaleAlignPrimaryAxis(), 'normal'] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': [...scaleAlignSecondaryAxis(), 'normal'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...scaleAlignPrimaryAxis()] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: [...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [\n { self: ['auto', ...scaleAlignSecondaryAxis(), { baseline: ['', 'last'] }] },\n ],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': scaleAlignPrimaryAxis() }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': [...scaleAlignSecondaryAxis(), 'baseline'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', ...scaleAlignSecondaryAxis()] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: scaleUnambiguousSpacing() }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: scaleUnambiguousSpacing() }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: scaleUnambiguousSpacing() }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: scaleUnambiguousSpacing() }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: scaleUnambiguousSpacing() }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: scaleUnambiguousSpacing() }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: scaleUnambiguousSpacing() }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: scaleUnambiguousSpacing() }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: scaleUnambiguousSpacing() }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: scaleMargin() }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: scaleMargin() }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: scaleMargin() }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: scaleMargin() }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: scaleMargin() }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: scaleMargin() }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: scaleMargin() }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: scaleMargin() }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: scaleMargin() }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{ 'space-x': scaleUnambiguousSpacing() }],\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': [{ 'space-y': scaleUnambiguousSpacing() }],\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 // --------------\n // --- Sizing ---\n // --------------\n\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{ size: scaleSizing() }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{ w: [themeContainer, 'screen', ...scaleSizing()] }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [\n {\n 'min-w': [\n themeContainer,\n 'screen',\n /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none',\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n themeContainer,\n 'screen',\n 'none',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose',\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n { screen: [themeBreakpoint] },\n ...scaleSizing(),\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{ h: ['screen', 'lh', ...scaleSizing()] }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{ 'min-h': ['screen', 'lh', 'none', ...scaleSizing()] }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{ 'max-h': ['screen', 'lh', ...scaleSizing()] }],\n\n // ------------------\n // --- Typography ---\n // ------------------\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': [{ font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber] }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [\n {\n 'font-stretch': [\n 'ultra-condensed',\n 'extra-condensed',\n 'condensed',\n 'semi-condensed',\n 'normal',\n 'semi-expanded',\n 'expanded',\n 'extra-expanded',\n 'ultra-expanded',\n isPercent,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont] }],\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: [{ tracking: [themeTracking, isArbitraryVariable, isArbitraryValue] }],\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 {\n leading: [\n /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading,\n ...scaleUnambiguousSpacing(),\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryVariable, isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\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': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\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': [{ placeholder: scaleColor() }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: scaleColor() }],\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': [{ decoration: [...scaleLineStyle(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n {\n decoration: [\n isNumber,\n 'from-font',\n 'auto',\n isArbitraryVariable,\n isArbitraryLength,\n ],\n },\n ],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: scaleColor() }],\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': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: scaleUnambiguousSpacing() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\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: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{ wrap: ['break-word', 'anywhere', 'normal'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // -------------------\n // --- Backgrounds ---\n // -------------------\n\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: scaleBgPosition() }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: scaleBgRepeat() }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: scaleBgSize() }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n {\n linear: [\n { to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isInteger,\n isArbitraryVariable,\n isArbitraryValue,\n ],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue],\n },\n isArbitraryVariableImage,\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: scaleColor() }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: scaleGradientStopPosition() }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: scaleColor() }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: scaleColor() }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: scaleColor() }],\n\n // ---------------\n // --- Borders ---\n // ---------------\n\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: scaleRadius() }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': scaleRadius() }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': scaleRadius() }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': scaleRadius() }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': scaleRadius() }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': scaleRadius() }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': scaleRadius() }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': scaleRadius() }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': scaleRadius() }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': scaleRadius() }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': scaleRadius() }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': scaleRadius() }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': scaleRadius() }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': scaleRadius() }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': scaleRadius() }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: scaleBorderWidth() }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': scaleBorderWidth() }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': scaleBorderWidth() }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': scaleBorderWidth() }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': scaleBorderWidth() }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': scaleBorderWidth() }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': scaleBorderWidth() }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': scaleBorderWidth() }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': scaleBorderWidth() }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{ 'divide-x': scaleBorderWidth() }],\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': [{ 'divide-y': scaleBorderWidth() }],\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': [{ border: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{ divide: [...scaleLineStyle(), 'hidden', 'none'] }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: scaleColor() }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': scaleColor() }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': scaleColor() }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': scaleColor() }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': scaleColor() }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': scaleColor() }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': scaleColor() }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': scaleColor() }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': scaleColor() }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: scaleColor() }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: [...scaleLineStyle(), 'none', 'hidden'] }],\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': [{ outline: scaleColor() }],\n\n // ---------------\n // --- Effects ---\n // ---------------\n\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [\n {\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{ shadow: scaleColor() }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [\n {\n 'inset-shadow': [\n 'none',\n themeInsetShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\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': [{ 'inset-shadow': scaleColor() }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{ ring: scaleBorderWidth() }],\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': [{ ring: scaleColor() }],\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': [{ 'ring-offset': [isNumber, isArbitraryLength] }],\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': [{ 'ring-offset': scaleColor() }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{ 'inset-ring': scaleBorderWidth() }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{ 'inset-ring': scaleColor() }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [\n {\n 'text-shadow': [\n 'none',\n themeTextShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{ 'text-shadow': scaleColor() }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': scaleBlendMode() }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [\n { 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n 'mask-no-clip',\n ],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{ mask: ['add', 'subtract', 'intersect', 'exclude'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{ 'mask-linear': [isNumber] }],\n 'mask-image-linear-from-pos': [{ 'mask-linear-from': scaleMaskImagePosition() }],\n 'mask-image-linear-to-pos': [{ 'mask-linear-to': scaleMaskImagePosition() }],\n 'mask-image-linear-from-color': [{ 'mask-linear-from': scaleColor() }],\n 'mask-image-linear-to-color': [{ 'mask-linear-to': scaleColor() }],\n 'mask-image-t-from-pos': [{ 'mask-t-from': scaleMaskImagePosition() }],\n 'mask-image-t-to-pos': [{ 'mask-t-to': scaleMaskImagePosition() }],\n 'mask-image-t-from-color': [{ 'mask-t-from': scaleColor() }],\n 'mask-image-t-to-color': [{ 'mask-t-to': scaleColor() }],\n 'mask-image-r-from-pos': [{ 'mask-r-from': scaleMaskImagePosition() }],\n 'mask-image-r-to-pos': [{ 'mask-r-to': scaleMaskImagePosition() }],\n 'mask-image-r-from-color': [{ 'mask-r-from': scaleColor() }],\n 'mask-image-r-to-color': [{ 'mask-r-to': scaleColor() }],\n 'mask-image-b-from-pos': [{ 'mask-b-from': scaleMaskImagePosition() }],\n 'mask-image-b-to-pos': [{ 'mask-b-to': scaleMaskImagePosition() }],\n 'mask-image-b-from-color': [{ 'mask-b-from': scaleColor() }],\n 'mask-image-b-to-color': [{ 'mask-b-to': scaleColor() }],\n 'mask-image-l-from-pos': [{ 'mask-l-from': scaleMaskImagePosition() }],\n 'mask-image-l-to-pos': [{ 'mask-l-to': scaleMaskImagePosition() }],\n 'mask-image-l-from-color': [{ 'mask-l-from': scaleColor() }],\n 'mask-image-l-to-color': [{ 'mask-l-to': scaleColor() }],\n 'mask-image-x-from-pos': [{ 'mask-x-from': scaleMaskImagePosition() }],\n 'mask-image-x-to-pos': [{ 'mask-x-to': scaleMaskImagePosition() }],\n 'mask-image-x-from-color': [{ 'mask-x-from': scaleColor() }],\n 'mask-image-x-to-color': [{ 'mask-x-to': scaleColor() }],\n 'mask-image-y-from-pos': [{ 'mask-y-from': scaleMaskImagePosition() }],\n 'mask-image-y-to-pos': [{ 'mask-y-to': scaleMaskImagePosition() }],\n 'mask-image-y-from-color': [{ 'mask-y-from': scaleColor() }],\n 'mask-image-y-to-color': [{ 'mask-y-to': scaleColor() }],\n 'mask-image-radial': [{ 'mask-radial': [isArbitraryVariable, isArbitraryValue] }],\n 'mask-image-radial-from-pos': [{ 'mask-radial-from': scaleMaskImagePosition() }],\n 'mask-image-radial-to-pos': [{ 'mask-radial-to': scaleMaskImagePosition() }],\n 'mask-image-radial-from-color': [{ 'mask-radial-from': scaleColor() }],\n 'mask-image-radial-to-color': [{ 'mask-radial-to': scaleColor() }],\n 'mask-image-radial-shape': [{ 'mask-radial': ['circle', 'ellipse'] }],\n 'mask-image-radial-size': [\n { 'mask-radial': [{ closest: ['side', 'corner'], farthest: ['side', 'corner'] }] },\n ],\n 'mask-image-radial-pos': [{ 'mask-radial-at': scalePosition() }],\n 'mask-image-conic-pos': [{ 'mask-conic': [isNumber] }],\n 'mask-image-conic-from-pos': [{ 'mask-conic-from': scaleMaskImagePosition() }],\n 'mask-image-conic-to-pos': [{ 'mask-conic-to': scaleMaskImagePosition() }],\n 'mask-image-conic-from-color': [{ 'mask-conic-from': scaleColor() }],\n 'mask-image-conic-to-color': [{ 'mask-conic-to': scaleColor() }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{ mask: ['alpha', 'luminance', 'match'] }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [\n { 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view'] },\n ],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{ mask: scaleBgPosition() }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{ mask: scaleBgRepeat() }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{ mask: scaleBgSize() }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{ 'mask-type': ['alpha', 'luminance'] }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{ mask: ['none', isArbitraryVariable, isArbitraryValue] }],\n\n // ---------------\n // --- Filters ---\n // ---------------\n\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [\n {\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: scaleBlur() }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [\n {\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '',\n 'none',\n themeDropShadow,\n isArbitraryVariableShadow,\n isArbitraryShadow,\n ],\n },\n ],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{ 'drop-shadow': scaleColor() }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [\n {\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': scaleBlur() }],\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 // --------------\n // --- Tables ---\n // --------------\n\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': scaleUnambiguousSpacing() }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': scaleUnambiguousSpacing() }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n '',\n 'all',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n 'none',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{ transition: ['normal', 'discrete'] }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue] }],\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: [{ delay: [isNumber, isArbitraryVariable, isArbitraryValue] }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue] }],\n\n // ------------------\n // --- Transforms ---\n // ------------------\n\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{ backface: ['hidden', 'visible'] }],\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': [{ 'perspective-origin': scalePositionWithArbitrary() }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: scaleRotate() }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{ 'rotate-x': scaleRotate() }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{ 'rotate-y': scaleRotate() }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{ 'rotate-z': scaleRotate() }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: scaleScale() }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': scaleScale() }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': scaleScale() }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{ 'scale-z': scaleScale() }],\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: [{ skew: scaleSkew() }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': scaleSkew() }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': scaleSkew() }],\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': [{ origin: scalePositionWithArbitrary() }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{ transform: ['3d', 'flat'] }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{ translate: scaleTranslate() }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': scaleTranslate() }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': scaleTranslate() }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{ 'translate-z': scaleTranslate() }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: scaleColor() }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: scaleColor() }],\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 {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{ 'field-sizing': ['fixed', 'content'] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['auto', 'none'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', '', 'y', 'x'] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': scaleUnambiguousSpacing() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': scaleUnambiguousSpacing() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{ touch: ['auto', 'none', 'manipulation'] }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{ 'touch-pan': ['x', 'left', 'right'] }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{ 'touch-pan': ['y', 'up', 'down'] }],\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: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n {\n 'will-change': [\n 'auto',\n 'scroll',\n 'contents',\n 'transform',\n isArbitraryVariable,\n isArbitraryValue,\n ],\n },\n ],\n\n // -----------\n // --- SVG ---\n // -----------\n\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: ['none', ...scaleColor()] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [\n {\n stroke: [\n isNumber,\n isArbitraryVariableLength,\n isArbitraryLength,\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: ['none', ...scaleColor()] }],\n\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\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': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\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: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\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': [\n 'border-w-x',\n 'border-w-y',\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-x',\n 'border-color-y',\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\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': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\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: [\n '*',\n '**',\n 'after',\n 'backdrop',\n 'before',\n 'details-content',\n 'file',\n 'first-letter',\n 'first-line',\n 'marker',\n 'placeholder',\n 'selection',\n ],\n } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension, NoInfer } from './types'\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 */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n overrideConfigProperties(baseConfig.theme, override.theme)\n overrideConfigProperties(baseConfig.classGroups, override.classGroups)\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups)\n overrideConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n override.conflictingClassGroupModifiers,\n )\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers)\n\n mergeConfigProperties(baseConfig.theme, extend.theme)\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups)\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups)\n mergeConfigProperties(\n baseConfig.conflictingClassGroupModifiers,\n extend.conflictingClassGroupModifiers,\n )\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers')\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key)\n }\n }\n}\n\nconst mergeArrayProperties = <Key extends string>(\n baseObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n mergeObject: Partial<Record<NoInfer<Key>, readonly unknown[]>>,\n key: Key,\n) => {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { clsx } from \"clsx\";\nimport { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({ prefix: \"polli\" });\n\n/** Internal class merge for polli:-prefixed package primitive classes. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import { createElement, Fragment } from \"./react-global.ts\";\n\ntype PropsWithKey = Record<string, unknown> | null | undefined;\nconst createElementFromRuntime = createElement as (\n type: unknown,\n props?: Record<string, unknown> | null,\n) => unknown;\n\nexport function jsx(type: unknown, props: PropsWithKey, key?: unknown) {\n const nextProps =\n key === undefined ? props : { ...(props ?? {}), key: String(key) };\n\n return createElementFromRuntime(type, nextProps);\n}\n\nexport const jsxs = jsx;\nexport const jsxDEV = jsx;\nexport { Fragment };\n","import type { FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype ChevronIconProps = {\n /** Rotate 180° when expanded/open. */\n expanded?: boolean;\n className?: string;\n};\n\n/**\n * Canonical chevron used for collapsibles, dropdown triggers, and select pills\n * across the app. One icon everywhere.\n */\nexport const ChevronIcon: FC<ChevronIconProps> = ({ expanded, className }) => (\n <svg\n aria-hidden=\"true\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n className={cn(\n \"polli:shrink-0 polli:transition-transform polli:duration-200 polli:ease-out\",\n expanded && \"polli:rotate-180\",\n className,\n )}\n >\n <path\n d=\"M3 4.5 6 7.5l3-3\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n />\n </svg>\n);\n","// src/create-anatomy.ts\nvar createAnatomy = (name, parts = []) => ({\n parts: (...values) => {\n if (isEmpty(parts)) {\n return createAnatomy(name, values);\n }\n throw new Error(\"createAnatomy().parts(...) should only be called once. Did you mean to use .extendWith(...) ?\");\n },\n extendWith: (...values) => createAnatomy(name, [...parts, ...values]),\n omit: (...values) => createAnatomy(name, parts.filter((part) => !values.includes(part))),\n rename: (newName) => createAnatomy(newName, parts),\n keys: () => parts,\n build: () => [...new Set(parts)].reduce(\n (prev, part) => Object.assign(prev, {\n [part]: {\n selector: [\n `&[data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`,\n `& [data-scope=\"${toKebabCase(name)}\"][data-part=\"${toKebabCase(part)}\"]`\n ].join(\", \"),\n attrs: { \"data-scope\": toKebabCase(name), \"data-part\": toKebabCase(part) }\n }\n }),\n {}\n )\n});\nvar toKebabCase = (value) => value.replace(/([A-Z])([A-Z])/g, \"$1-$2\").replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[\\s_]+/g, \"-\").toLowerCase();\nvar isEmpty = (v) => v.length === 0;\nexport {\n createAnatomy\n};\n","// src/popover.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"popover\").parts(\n \"arrow\",\n \"arrowTip\",\n \"anchor\",\n \"trigger\",\n \"indicator\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\"\n);\nvar parts = anatomy.build();\nexport {\n anatomy,\n parts\n};\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\nexport {\n __publicField\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/caret.ts\nfunction isCaretAtStart(input) {\n if (!input) return false;\n try {\n return input.selectionStart === 0 && input.selectionEnd === 0;\n } catch {\n return input.value === \"\";\n }\n}\nfunction setCaretToEnd(input) {\n if (!input) return;\n try {\n if (input.ownerDocument.activeElement !== input) return;\n const len = input.value.length;\n input.setSelectionRange(len, len);\n } catch {\n }\n}\nexport {\n isCaretAtStart,\n setCaretToEnd\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/shared.ts\nvar clamp = (value) => Math.max(0, Math.min(1, value));\nvar wrap = (v, idx) => {\n return v.map((_, index) => v[(Math.max(idx, 0) + index) % v.length]);\n};\nvar pipe = (...fns) => (arg) => fns.reduce((acc, fn) => fn(acc), arg);\nvar noop = () => void 0;\nvar isObject = (v) => typeof v === \"object\" && v !== null;\nvar MAX_Z_INDEX = 2147483647;\nvar dataAttr = (guard) => guard ? \"\" : void 0;\nvar ariaAttr = (guard) => guard ? \"true\" : void 0;\nvar sanitize = (str) => str.split(\"\").map((char) => {\n const code = char.charCodeAt(0);\n if (code > 0 && code < 128) return char;\n if (code >= 128 && code <= 255) return `/x${code.toString(16)}`.replace(\"/\", \"\\\\\");\n return \"\";\n}).join(\"\").trim();\nexport {\n MAX_Z_INDEX,\n ariaAttr,\n clamp,\n dataAttr,\n isObject,\n noop,\n pipe,\n sanitize,\n wrap\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/node.ts\nimport { isObject } from \"./shared.mjs\";\nvar ELEMENT_NODE = 1;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\nvar isElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isHTMLElement = (el) => isObject(el) && el.nodeType === ELEMENT_NODE && typeof el.nodeName === \"string\";\nvar isDocument = (el) => isObject(el) && el.nodeType === DOCUMENT_NODE;\nvar isWindow = (el) => isObject(el) && el === el.window;\nvar isVisualViewport = (el) => isObject(el) && el.constructor.name === \"VisualViewport\";\nvar getNodeName = (node) => {\n if (isHTMLElement(node)) return node.localName || \"\";\n return \"#document\";\n};\nfunction isRootElement(node) {\n return [\"html\", \"body\", \"#document\"].includes(getNodeName(node));\n}\nvar isNode = (el) => isObject(el) && el.nodeType !== void 0;\nvar isShadowRoot = (el) => isNode(el) && el.nodeType === DOCUMENT_FRAGMENT_NODE && \"host\" in el;\nvar isInputElement = (el) => isHTMLElement(el) && el.localName === \"input\";\nvar isAnchorElement = (el) => !!el?.matches(\"a[href]\");\nvar isElementVisible = (el) => {\n if (!isHTMLElement(el)) return false;\n return el.offsetWidth > 0 || el.offsetHeight > 0 || el.getClientRects().length > 0;\n};\nfunction isActiveElement(element) {\n if (!element) return false;\n const rootNode = element.getRootNode();\n return getActiveElement(rootNode) === element;\n}\nvar TEXTAREA_SELECT_REGEX = /(textarea|select)/;\nfunction isEditableElement(el) {\n if (el == null || !isHTMLElement(el)) return false;\n try {\n return isInputElement(el) && el.selectionStart != null || TEXTAREA_SELECT_REGEX.test(el.localName) || el.isContentEditable || el.getAttribute(\"contenteditable\") === \"true\" || el.getAttribute(\"contenteditable\") === \"\";\n } catch {\n return false;\n }\n}\nfunction getParentElement(node) {\n const parentNode = node.parentNode;\n if (isShadowRoot(parentNode)) return parentNode.host;\n return parentNode;\n}\nfunction getAncestorElements(node) {\n const ancestors = [];\n while (node) {\n ancestors.push(node);\n node = getParentElement(node);\n }\n return ancestors;\n}\nfunction contains(parent, child) {\n if (!parent || !child) return false;\n if (!isHTMLElement(parent) || !isNode(child)) return false;\n if (isHTMLElement(child) && parent === child) return true;\n if (parent.contains(child)) return true;\n const rootNode = child.getRootNode?.();\n if (rootNode && isShadowRoot(rootNode)) {\n let next = child;\n while (next) {\n if (parent === next) return true;\n next = next.parentNode || next.host;\n }\n }\n return false;\n}\nfunction getDocument(el) {\n if (isDocument(el)) return el;\n if (isWindow(el)) return el.document;\n return el?.ownerDocument ?? document;\n}\nfunction getDocumentElement(el) {\n return getDocument(el).documentElement;\n}\nfunction getWindow(el) {\n if (isShadowRoot(el)) return getWindow(el.host);\n if (isDocument(el)) return el.defaultView ?? window;\n if (isHTMLElement(el)) return el.ownerDocument?.defaultView ?? window;\n return window;\n}\nfunction getActiveElement(rootNode) {\n let activeElement = rootNode.activeElement;\n while (activeElement?.shadowRoot) {\n const el = activeElement.shadowRoot.activeElement;\n if (!el || el === activeElement) break;\n else activeElement = el;\n }\n return activeElement;\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === \"html\") return node;\n const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getRootNode(node) {\n let result;\n try {\n result = node.getRootNode({ composed: true });\n if (isDocument(result) || isShadowRoot(result)) return result;\n } catch {\n }\n return node.ownerDocument ?? document;\n}\nexport {\n contains,\n getActiveElement,\n getAncestorElements,\n getDocument,\n getDocumentElement,\n getNodeName,\n getParentElement,\n getParentNode,\n getRootNode,\n getWindow,\n isActiveElement,\n isAnchorElement,\n isDocument,\n isEditableElement,\n isElement,\n isElementVisible,\n isHTMLElement,\n isInputElement,\n isNode,\n isRootElement,\n isShadowRoot,\n isVisualViewport,\n isWindow\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/computed-style.ts\nimport { getWindow } from \"./node.mjs\";\nvar styleCache = /* @__PURE__ */ new WeakMap();\nfunction getComputedStyle(el) {\n if (!styleCache.has(el)) {\n styleCache.set(el, getWindow(el).getComputedStyle(el));\n }\n return styleCache.get(el);\n}\nexport {\n getComputedStyle\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/controller.ts\nimport { getRootNode } from \"./node.mjs\";\nvar INTERACTIVE_CONTAINER_ROLE = /* @__PURE__ */ new Set([\"menu\", \"listbox\", \"dialog\", \"grid\", \"tree\", \"region\", \"application\"]);\nvar isInteractiveContainerRole = (role) => INTERACTIVE_CONTAINER_ROLE.has(role);\nvar getAriaControls = (element) => element.getAttribute(\"aria-controls\")?.split(\" \") || [];\nfunction isControlledElement(container, element) {\n const visitedIds = /* @__PURE__ */ new Set();\n const rootNode = getRootNode(container);\n const checkElement = (searchRoot) => {\n const controllingElements = searchRoot.querySelectorAll(\"[aria-controls]\");\n for (const controller of controllingElements) {\n if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n const controlledIds = getAriaControls(controller);\n for (const id of controlledIds) {\n if (!id || visitedIds.has(id)) continue;\n visitedIds.add(id);\n const controlledElement = rootNode.getElementById(id);\n if (controlledElement) {\n const role = controlledElement.getAttribute(\"role\");\n const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n if (role && isInteractiveContainerRole(role) && !modal) {\n if (controlledElement === element || controlledElement.contains(element)) {\n return true;\n }\n if (checkElement(controlledElement)) {\n return true;\n }\n }\n }\n }\n }\n return false;\n };\n return checkElement(container);\n}\nfunction findControlledElements(searchRoot, callback) {\n const rootNode = getRootNode(searchRoot);\n const visitedIds = /* @__PURE__ */ new Set();\n const findRecursive = (root) => {\n const controllingElements = root.querySelectorAll(\"[aria-controls]\");\n for (const controller of controllingElements) {\n if (controller.getAttribute(\"aria-expanded\") !== \"true\") continue;\n const controlledIds = getAriaControls(controller);\n for (const id of controlledIds) {\n if (!id || visitedIds.has(id)) continue;\n visitedIds.add(id);\n const controlledElement = rootNode.getElementById(id);\n if (controlledElement) {\n const role = controlledElement.getAttribute(\"role\");\n const modal = controlledElement.getAttribute(\"aria-modal\") === \"true\";\n if (role && INTERACTIVE_CONTAINER_ROLE.has(role) && !modal) {\n callback(controlledElement);\n findRecursive(controlledElement);\n }\n }\n }\n }\n };\n findRecursive(searchRoot);\n}\nfunction getControlledElements(container) {\n const controlledElements = /* @__PURE__ */ new Set();\n findControlledElements(container, (controlledElement) => {\n if (!container.contains(controlledElement)) {\n controlledElements.add(controlledElement);\n }\n });\n return Array.from(controlledElements);\n}\nfunction isInteractiveContainerElement(element) {\n const role = element.getAttribute(\"role\");\n return Boolean(role && INTERACTIVE_CONTAINER_ROLE.has(role));\n}\nfunction isControllerElement(element) {\n return element.hasAttribute(\"aria-controls\") && element.getAttribute(\"aria-expanded\") === \"true\";\n}\nfunction hasControllerElements(element) {\n if (isControllerElement(element)) return true;\n return Boolean(element.querySelector?.('[aria-controls][aria-expanded=\"true\"]'));\n}\nfunction isControlledByExpandedController(element) {\n if (!element.id) return false;\n const rootNode = getRootNode(element);\n const escapedId = CSS.escape(element.id);\n const selector = `[aria-controls~=\"${escapedId}\"][aria-expanded=\"true\"], [aria-controls=\"${escapedId}\"][aria-expanded=\"true\"]`;\n const controller = rootNode.querySelector(selector);\n return Boolean(controller && isInteractiveContainerElement(element));\n}\nexport {\n findControlledElements,\n getControlledElements,\n hasControllerElements,\n isControlledByExpandedController,\n isControlledElement,\n isControllerElement,\n isInteractiveContainerElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/platform.ts\nvar isDom = () => typeof document !== \"undefined\";\nfunction getPlatform() {\n const agent = navigator.userAgentData;\n return agent?.platform ?? navigator.platform;\n}\nfunction getUserAgent() {\n const ua2 = navigator.userAgentData;\n if (ua2 && Array.isArray(ua2.brands)) {\n return ua2.brands.map(({ brand, version }) => `${brand}/${version}`).join(\" \");\n }\n return navigator.userAgent;\n}\nvar pt = (v) => isDom() && v.test(getPlatform());\nvar ua = (v) => isDom() && v.test(getUserAgent());\nvar vn = (v) => isDom() && v.test(navigator.vendor);\nvar isTouchDevice = () => isDom() && !!navigator.maxTouchPoints;\nvar isIPhone = () => pt(/^iPhone/i);\nvar isIPad = () => pt(/^iPad/i) || isMac() && navigator.maxTouchPoints > 1;\nvar isIos = () => isIPhone() || isIPad();\nvar isApple = () => isMac() || isIos();\nvar isMac = () => pt(/^Mac/i);\nvar isSafari = () => isApple() && vn(/apple/i);\nvar isFirefox = () => ua(/Firefox/i);\nvar isChrome = () => ua(/Chrome/i);\nvar isWebKit = () => ua(/AppleWebKit/i) && !isChrome();\nvar isAndroid = () => ua(/Android/i);\nexport {\n getPlatform,\n getUserAgent,\n isAndroid,\n isApple,\n isChrome,\n isDom,\n isFirefox,\n isIPad,\n isIPhone,\n isIos,\n isMac,\n isSafari,\n isTouchDevice,\n isWebKit\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/event.ts\nimport { isAndroid, isMac } from \"./platform.mjs\";\nfunction getBeforeInputValue(event) {\n const { selectionStart, selectionEnd, value } = event.currentTarget;\n const data = event.data;\n return value.slice(0, selectionStart) + (data ?? \"\") + value.slice(selectionEnd);\n}\nfunction getComposedPath(event) {\n return event.composedPath?.() ?? event.nativeEvent?.composedPath?.();\n}\nfunction getEventTarget(event) {\n const composedPath = getComposedPath(event);\n return composedPath?.[0] ?? event.target;\n}\nfunction isOpeningInNewTab(event) {\n const element = event.currentTarget;\n if (!element) return false;\n const validElement = element.matches(\"a[href], button[type='submit'], input[type='submit']\");\n if (!validElement) return false;\n const isMiddleClick = event.button === 1;\n const isModKeyClick = isCtrlOrMetaKey(event);\n return isMiddleClick || isModKeyClick;\n}\nfunction isDownloadingEvent(event) {\n const element = event.currentTarget;\n if (!element) return false;\n const localName = element.localName;\n if (!event.altKey) return false;\n if (localName === \"a\") return true;\n if (localName === \"button\" && element.type === \"submit\") return true;\n if (localName === \"input\" && element.type === \"submit\") return true;\n return false;\n}\nfunction isComposingEvent(event) {\n return getNativeEvent(event).isComposing || event.keyCode === 229;\n}\nfunction isKeyboardClick(e) {\n return e.detail === 0 || e.clientX === 0 && e.clientY === 0;\n}\nfunction isCtrlOrMetaKey(e) {\n if (isMac()) return e.metaKey;\n return e.ctrlKey;\n}\nfunction isPrintableKey(e) {\n return e.key.length === 1 && !e.ctrlKey && !e.metaKey;\n}\nfunction isVirtualPointerEvent(e) {\n return e.width === 0 && e.height === 0 || e.width === 1 && e.height === 1 && e.pressure === 0 && e.detail === 0 && e.pointerType === \"mouse\";\n}\nfunction isVirtualClick(e) {\n if (e.pointerType === \"\" && e.isTrusted) return true;\n if (isAndroid() && e.pointerType) {\n return e.type === \"click\" && e.buttons === 1;\n }\n return e.detail === 0 && !e.pointerType;\n}\nvar isLeftClick = (e) => e.button === 0;\nvar isContextMenuEvent = (e) => {\n return e.button === 2 || isMac() && e.ctrlKey && e.button === 0;\n};\nvar isModifierKey = (e) => e.ctrlKey || e.altKey || e.metaKey;\nvar isTouchEvent = (event) => \"touches\" in event && event.touches.length > 0;\nvar keyMap = {\n Up: \"ArrowUp\",\n Down: \"ArrowDown\",\n Esc: \"Escape\",\n \" \": \"Space\",\n \",\": \"Comma\",\n Left: \"ArrowLeft\",\n Right: \"ArrowRight\"\n};\nvar rtlKeyMap = {\n ArrowLeft: \"ArrowRight\",\n ArrowRight: \"ArrowLeft\"\n};\nfunction getEventKey(event, options = {}) {\n const { dir = \"ltr\", orientation = \"horizontal\" } = options;\n let key = event.key;\n key = keyMap[key] ?? key;\n const isRtl = dir === \"rtl\" && orientation === \"horizontal\";\n if (isRtl && key in rtlKeyMap) key = rtlKeyMap[key];\n return key;\n}\nfunction getNativeEvent(event) {\n return event.nativeEvent ?? event;\n}\nvar pageKeys = /* @__PURE__ */ new Set([\"PageUp\", \"PageDown\"]);\nvar arrowKeys = /* @__PURE__ */ new Set([\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"]);\nfunction getEventStep(event) {\n if (event.ctrlKey || event.metaKey) {\n return 0.1;\n } else {\n const isPageKey = pageKeys.has(event.key);\n const isSkipKey = isPageKey || event.shiftKey && arrowKeys.has(event.key);\n return isSkipKey ? 10 : 1;\n }\n}\nfunction getEventPoint(event, type = \"client\") {\n const point = isTouchEvent(event) ? event.touches[0] || event.changedTouches[0] : event;\n return { x: point[`${type}X`], y: point[`${type}Y`] };\n}\nvar addDomEvent = (target, eventName, handler, options) => {\n const node = typeof target === \"function\" ? target() : target;\n node?.addEventListener(eventName, handler, options);\n return () => {\n node?.removeEventListener(eventName, handler, options);\n };\n};\nvar isSelfTarget = (event) => {\n const composedPath = getComposedPath(event);\n const target = composedPath?.[0] ?? event.target;\n return event.currentTarget === target;\n};\nexport {\n addDomEvent,\n getBeforeInputValue,\n getEventKey,\n getEventPoint,\n getEventStep,\n getEventTarget,\n getNativeEvent,\n isComposingEvent,\n isContextMenuEvent,\n isCtrlOrMetaKey,\n isDownloadingEvent,\n isKeyboardClick,\n isLeftClick,\n isModifierKey,\n isOpeningInNewTab,\n isPrintableKey,\n isSelfTarget,\n isTouchEvent,\n isVirtualClick,\n isVirtualPointerEvent\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/tabbable.ts\nimport { getActiveElement, isEditableElement, isElementVisible, isHTMLElement, isInputElement } from \"./node.mjs\";\nvar isFrame = (el) => isHTMLElement(el) && el.tagName === \"IFRAME\";\nvar NATURALLY_TABBABLE_REGEX = /^(audio|video|details)$/;\nfunction parseTabIndex(el) {\n const attr = el.getAttribute(\"tabindex\");\n if (!attr) return NaN;\n return parseInt(attr, 10);\n}\nvar hasTabIndex = (el) => !Number.isNaN(parseTabIndex(el));\nvar hasNegativeTabIndex = (el) => parseTabIndex(el) < 0;\nfunction isRadioInput(element) {\n return isInputElement(element) && element.type === \"radio\";\n}\nfunction isTabbableRadio(element) {\n if (!isRadioInput(element) || !element.name) return true;\n if (element.checked) return true;\n const selector = `input[type=\"radio\"][name=\"${CSS.escape(element.name)}\"]`;\n const scope = element.form ?? element.ownerDocument;\n const group = Array.from(scope.querySelectorAll(selector)).filter(\n (radio) => radio.form === element.form && isFocusable(radio)\n );\n const checked = group.find((radio) => radio.checked);\n if (checked) return checked === element;\n return group[0] === element;\n}\nfunction getShadowRootForNode(element, getShadowRoot) {\n if (!getShadowRoot) return null;\n if (getShadowRoot === true) {\n return element.shadowRoot || null;\n }\n const result = getShadowRoot(element);\n return (result === true ? element.shadowRoot : result) || null;\n}\nfunction collectElementsWithShadowDOM(elements, getShadowRoot, filterFn) {\n const allElements = [...elements];\n const toProcess = [...elements];\n const processed = /* @__PURE__ */ new Set();\n const positionMap = /* @__PURE__ */ new Map();\n elements.forEach((el, i) => positionMap.set(el, i));\n let processIndex = 0;\n while (processIndex < toProcess.length) {\n const element = toProcess[processIndex++];\n if (!element || processed.has(element)) continue;\n processed.add(element);\n const shadowRoot = getShadowRootForNode(element, getShadowRoot);\n if (shadowRoot) {\n const shadowElements = Array.from(shadowRoot.querySelectorAll(focusableSelector)).filter(filterFn);\n const hostIndex = positionMap.get(element);\n if (hostIndex !== void 0) {\n const insertPosition = hostIndex + 1;\n allElements.splice(insertPosition, 0, ...shadowElements);\n shadowElements.forEach((el, i) => {\n positionMap.set(el, insertPosition + i);\n });\n for (let i = insertPosition + shadowElements.length; i < allElements.length; i++) {\n positionMap.set(allElements[i], i);\n }\n } else {\n const insertPosition = allElements.length;\n allElements.push(...shadowElements);\n shadowElements.forEach((el, i) => {\n positionMap.set(el, insertPosition + i);\n });\n }\n toProcess.push(...shadowElements);\n }\n }\n return allElements;\n}\nvar focusableSelector = \"input:not([type='hidden']):not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], button:not([disabled]), [tabindex], iframe, object, embed, area[href], audio[controls], video[controls], [contenteditable]:not([contenteditable='false']), details > summary:first-of-type\";\nvar getFocusables = (container, options = {}) => {\n if (!container) return [];\n const { includeContainer = false, getShadowRoot } = options;\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n const include = includeContainer == true || includeContainer == \"if-empty\" && elements.length === 0;\n if (include && isHTMLElement(container) && isFocusable(container)) {\n elements.unshift(container);\n }\n const focusableElements = [];\n for (const element of elements) {\n if (!isFocusable(element)) continue;\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n focusableElements.push(...getFocusables(frameBody, { getShadowRoot }));\n continue;\n }\n focusableElements.push(element);\n }\n if (getShadowRoot) {\n return collectElementsWithShadowDOM(focusableElements, getShadowRoot, isFocusable);\n }\n return focusableElements;\n};\nfunction isFocusable(element) {\n if (!isHTMLElement(element) || element.closest(\"[inert]\")) return false;\n return element.matches(focusableSelector) && isElementVisible(element);\n}\nfunction getFirstFocusable(container, options = {}) {\n const [first] = getFocusables(container, options);\n return first || null;\n}\nfunction getTabbables(container, options = {}) {\n if (!container) return [];\n const { includeContainer, getShadowRoot } = options;\n const elements = Array.from(container.querySelectorAll(focusableSelector));\n if (includeContainer && isTabbable(container)) {\n elements.unshift(container);\n }\n const tabbableElements = [];\n for (const element of elements) {\n if (!isTabbable(element)) continue;\n if (isFrame(element) && element.contentDocument) {\n const frameBody = element.contentDocument.body;\n tabbableElements.push(...getTabbables(frameBody, { getShadowRoot }));\n continue;\n }\n tabbableElements.push(element);\n }\n if (getShadowRoot) {\n const allElements = collectElementsWithShadowDOM(tabbableElements, getShadowRoot, isTabbable);\n if (!allElements.length && includeContainer) {\n return elements;\n }\n return allElements;\n }\n if (!tabbableElements.length && includeContainer) {\n return elements;\n }\n return tabbableElements;\n}\nfunction isTabbable(el) {\n if (isHTMLElement(el) && el.tabIndex > 0) return true;\n if (!isFocusable(el) || hasNegativeTabIndex(el)) return false;\n return isTabbableRadio(el);\n}\nfunction getFirstTabbable(container, options = {}) {\n const [first] = getTabbables(container, options);\n return first || null;\n}\nfunction getLastTabbable(container, options = {}) {\n const elements = getTabbables(container, options);\n return elements[elements.length - 1] || null;\n}\nfunction getTabbableEdges(container, options = {}) {\n const elements = getTabbables(container, options);\n const first = elements[0] || null;\n const last = elements[elements.length - 1] || null;\n return [first, last];\n}\nfunction getNextTabbable(container, options = {}) {\n const { current, getShadowRoot } = options;\n const tabbables = getTabbables(container, { getShadowRoot });\n const doc = container?.ownerDocument || document;\n const currentElement = current ?? getActiveElement(doc);\n if (!currentElement) return null;\n const index = tabbables.indexOf(currentElement);\n return tabbables[index + 1] || null;\n}\nfunction getTabIndex(node) {\n if (node.tabIndex < 0) {\n if ((NATURALLY_TABBABLE_REGEX.test(node.localName) || isEditableElement(node)) && !hasTabIndex(node)) {\n return 0;\n }\n }\n return node.tabIndex;\n}\nexport {\n getFirstFocusable,\n getFirstTabbable,\n getFocusables,\n getLastTabbable,\n getNextTabbable,\n getTabIndex,\n getTabbableEdges,\n getTabbables,\n isFocusable,\n isTabbable\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/initial-focus.ts\nimport { isActiveElement } from \"./node.mjs\";\nimport { getTabbableEdges, getTabbables } from \"./tabbable.mjs\";\nfunction getInitialFocus(options) {\n const { root, getInitialEl, filter, enabled = true } = options;\n if (!enabled) return;\n let node = null;\n node || (node = typeof getInitialEl === \"function\" ? getInitialEl() : getInitialEl);\n node || (node = root?.querySelector(\"[data-autofocus],[autofocus]\"));\n if (!node) {\n const tabbables = getTabbables(root);\n node = filter ? tabbables.filter(filter)[0] : tabbables[0];\n }\n return node || root || void 0;\n}\nfunction isValidTabEvent(event) {\n const container = event.currentTarget;\n if (!container) return false;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container);\n if (isActiveElement(firstTabbable) && event.shiftKey) return false;\n if (isActiveElement(lastTabbable) && !event.shiftKey) return false;\n if (!firstTabbable && !lastTabbable) return false;\n return true;\n}\nexport {\n getInitialFocus,\n isValidTabEvent\n};\n","import {\n __publicField\n} from \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/raf.ts\nvar AnimationFrame = class _AnimationFrame {\n constructor() {\n __publicField(this, \"id\", null);\n __publicField(this, \"fn_cleanup\");\n __publicField(this, \"cleanup\", () => {\n this.cancel();\n });\n }\n static create() {\n return new _AnimationFrame();\n }\n request(fn) {\n this.cancel();\n this.id = globalThis.requestAnimationFrame(() => {\n this.id = null;\n this.fn_cleanup = fn?.();\n });\n }\n cancel() {\n if (this.id !== null) {\n globalThis.cancelAnimationFrame(this.id);\n this.id = null;\n }\n this.fn_cleanup?.();\n this.fn_cleanup = void 0;\n }\n isActive() {\n return this.id !== null;\n }\n};\nfunction raf(fn) {\n const frame = AnimationFrame.create();\n frame.request(fn);\n return frame.cleanup;\n}\nfunction nextTick(fn) {\n const set = /* @__PURE__ */ new Set();\n function raf2(fn2) {\n const id = globalThis.requestAnimationFrame(fn2);\n set.add(() => globalThis.cancelAnimationFrame(id));\n }\n raf2(() => raf2(fn));\n return function cleanup() {\n set.forEach((fn2) => fn2());\n };\n}\nfunction queueBeforeEvent(el, type, cb) {\n const cancelTimer = raf(() => {\n el.removeEventListener(type, exec, true);\n cb();\n });\n const exec = () => {\n cancelTimer();\n cb();\n };\n el.addEventListener(type, exec, { once: true, capture: true });\n return cancelTimer;\n}\nexport {\n AnimationFrame,\n nextTick,\n queueBeforeEvent,\n raf\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/mutation-observer.ts\nimport { raf } from \"./raf.mjs\";\nfunction observeAttributesImpl(node, options) {\n if (!node) return;\n const { attributes, callback: fn } = options;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver((changes) => {\n for (const change of changes) {\n if (change.type === \"attributes\" && change.attributeName && attributes.includes(change.attributeName)) {\n fn(change);\n }\n }\n });\n obs.observe(node, { attributes: true, attributeFilter: attributes });\n return () => obs.disconnect();\n}\nfunction observeAttributes(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups.push(observeAttributesImpl(node, options));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nfunction observeChildrenImpl(node, options) {\n const { callback: fn } = options;\n if (!node) return;\n const win = node.ownerDocument.defaultView || window;\n const obs = new win.MutationObserver(fn);\n obs.observe(node, { childList: true, subtree: true });\n return () => obs.disconnect();\n}\nfunction observeChildren(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups.push(observeChildrenImpl(node, options));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nexport {\n observeAttributes,\n observeChildren\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/navigate.ts\nimport { getWindow } from \"./node.mjs\";\nimport { isFirefox } from \"./platform.mjs\";\nimport { queueBeforeEvent } from \"./raf.mjs\";\nfunction navigate(items, current, options = {}) {\n if (!current) return null;\n const { orientation = \"both\", loop = true, dir = \"ltr\", key } = options;\n if (!items.length || !key) return null;\n const isVertical = key === \"ArrowUp\" || key === \"ArrowDown\";\n const isHorizontal = key === \"ArrowLeft\" || key === \"ArrowRight\";\n if (!isVertical && !isHorizontal && key !== \"Home\" && key !== \"End\") return null;\n if (orientation === \"vertical\" && isHorizontal || orientation === \"horizontal\" && isVertical) return null;\n if (key === \"Home\") return items[0] || null;\n if (key === \"End\") return items[items.length - 1] || null;\n const idx = items.indexOf(current);\n if (idx === -1) return null;\n let isForward;\n if (orientation === \"both\") {\n isForward = key === \"ArrowDown\" || (dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\");\n } else {\n isForward = isVertical ? key === \"ArrowDown\" : dir === \"ltr\" ? key === \"ArrowRight\" : key === \"ArrowLeft\";\n }\n const nextIdx = isForward ? loop ? (idx + 1) % items.length : Math.min(idx + 1, items.length - 1) : loop ? (idx - 1 + items.length) % items.length : Math.max(0, idx - 1);\n return items[nextIdx] || null;\n}\nfunction clickIfLink(el) {\n const click = () => {\n const win = getWindow(el);\n el.dispatchEvent(new win.MouseEvent(\"click\"));\n };\n if (isFirefox()) {\n queueBeforeEvent(el, \"keyup\", click);\n } else {\n queueMicrotask(click);\n }\n}\nexport {\n clickIfLink,\n navigate\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/overflow.ts\nimport { getDocument, getParentNode, getWindow } from \"./node.mjs\";\nimport { isHTMLElement, isRootElement, isVisualViewport } from \"./node.mjs\";\nfunction getNearestOverflowAncestor(el) {\n const parentNode = getParentNode(el);\n if (isRootElement(parentNode)) return getDocument(parentNode).body;\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) return parentNode;\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(el, list = []) {\n const scrollableAncestor = getNearestOverflowAncestor(el);\n const isBody = scrollableAncestor === el.ownerDocument.body;\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : []);\n }\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, []));\n}\nvar getElementRect = (el) => {\n if (isHTMLElement(el)) return el.getBoundingClientRect();\n if (isVisualViewport(el)) return { top: 0, left: 0, bottom: el.height, right: el.width };\n return { top: 0, left: 0, bottom: el.innerHeight, right: el.innerWidth };\n};\nfunction isInView(el, ancestor) {\n if (!isHTMLElement(el)) return true;\n const ancestorRect = getElementRect(ancestor);\n const elRect = el.getBoundingClientRect();\n return elRect.top >= ancestorRect.top && elRect.left >= ancestorRect.left && elRect.bottom <= ancestorRect.bottom && elRect.right <= ancestorRect.right;\n}\nvar OVERFLOW_RE = /auto|scroll|overlay|hidden|clip/;\nvar nonOverflowValues = /* @__PURE__ */ new Set([\"inline\", \"contents\"]);\nfunction isOverflowElement(el) {\n const win = getWindow(el);\n const { overflow, overflowX, overflowY, display } = win.getComputedStyle(el);\n return OVERFLOW_RE.test(overflow + overflowY + overflowX) && !nonOverflowValues.has(display);\n}\nexport {\n getNearestOverflowAncestor,\n getOverflowAncestors,\n isInView,\n isOverflowElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/proxy-tab-focus.ts\nimport { addDomEvent } from \"./event.mjs\";\nimport { isActiveElement } from \"./node.mjs\";\nimport { raf } from \"./raf.mjs\";\nimport { getNextTabbable, getTabbableEdges } from \"./tabbable.mjs\";\nfunction proxyTabFocusImpl(container, options = {}) {\n const { triggerElement, onFocus, onFocusEnter, getShadowRoot } = options;\n const doc = container?.ownerDocument || document;\n const body = doc.body;\n function onKeyDown(event) {\n if (event.key !== \"Tab\") return;\n let elementToFocus = null;\n const [firstTabbable, lastTabbable] = getTabbableEdges(container, { includeContainer: true, getShadowRoot });\n const nextTabbableAfterTrigger = getNextTabbable(body, { current: triggerElement, getShadowRoot });\n const noTabbableElements = !firstTabbable && !lastTabbable;\n if (event.shiftKey && isActiveElement(nextTabbableAfterTrigger)) {\n onFocusEnter?.();\n elementToFocus = lastTabbable;\n } else if (event.shiftKey && (isActiveElement(firstTabbable) || noTabbableElements)) {\n elementToFocus = triggerElement;\n } else if (!event.shiftKey && isActiveElement(triggerElement)) {\n onFocusEnter?.();\n elementToFocus = firstTabbable;\n } else if (!event.shiftKey && (isActiveElement(lastTabbable) || noTabbableElements)) {\n elementToFocus = nextTabbableAfterTrigger;\n }\n if (!elementToFocus) return;\n event.preventDefault();\n if (typeof onFocus === \"function\") {\n onFocus(elementToFocus);\n } else {\n elementToFocus.focus();\n }\n }\n return addDomEvent(doc, \"keydown\", onKeyDown, true);\n}\nfunction proxyTabFocus(container, options) {\n const { defer, triggerElement, ...restOptions } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = typeof container === \"function\" ? container() : container;\n const trigger = typeof triggerElement === \"function\" ? triggerElement() : triggerElement;\n cleanups.push(proxyTabFocusImpl(node, { triggerElement: trigger, ...restOptions }));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nexport {\n proxyTabFocus\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/query.ts\nfunction queryAll(root, selector) {\n return Array.from(root?.querySelectorAll(selector) ?? []);\n}\nfunction query(root, selector) {\n return root?.querySelector(selector) ?? null;\n}\nvar defaultItemToId = (v) => v.id;\nfunction itemById(v, id, itemToId = defaultItemToId) {\n return v.find((item) => itemToId(item) === id);\n}\nfunction indexOfId(v, id, itemToId = defaultItemToId) {\n const item = itemById(v, id, itemToId);\n return item ? v.indexOf(item) : -1;\n}\nfunction nextById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n idx = loop ? (idx + 1) % v.length : Math.min(idx + 1, v.length - 1);\n return v[idx];\n}\nfunction prevById(v, id, loop = true) {\n let idx = indexOfId(v, id);\n if (idx === -1) return loop ? v[v.length - 1] : null;\n idx = loop ? (idx - 1 + v.length) % v.length : Math.max(0, idx - 1);\n return v[idx];\n}\nexport {\n defaultItemToId,\n indexOfId,\n itemById,\n nextById,\n prevById,\n query,\n queryAll\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/scroll.ts\nimport { getWindow, isHTMLElement } from \"./node.mjs\";\nimport { isOverflowElement } from \"./overflow.mjs\";\nfunction isScrollable(el) {\n return el.scrollHeight > el.clientHeight || el.scrollWidth > el.clientWidth;\n}\nfunction scrollIntoView(el, options) {\n const { rootEl, ...scrollOptions } = options || {};\n if (!el || !rootEl) return;\n if (!isOverflowElement(rootEl) || !isScrollable(rootEl)) return;\n el.scrollIntoView(scrollOptions);\n}\nfunction scrollToElement(el, options) {\n const { rootEl, behavior } = options || {};\n if (!el || !rootEl) return false;\n if (!rootEl.contains(el)) return false;\n const win = getWindow(rootEl);\n const rootRect = rootEl.getBoundingClientRect();\n const elRect = el.getBoundingClientRect();\n const rootStyle = win.getComputedStyle(rootEl);\n const elStyle = win.getComputedStyle(el);\n const scrollPaddingTop = getNumericStyle(rootStyle.scrollPaddingBlockStart || rootStyle.scrollPaddingTop);\n const scrollMarginTop = getNumericStyle(elStyle.scrollMarginBlockStart || elStyle.scrollMarginTop);\n const top = elRect.top - rootRect.top + rootEl.scrollTop - scrollPaddingTop - scrollMarginTop;\n rootEl.scrollTo({ top, ...behavior && { behavior } });\n return true;\n}\nvar getNumericStyle = (value) => {\n const numericValue = Number.parseFloat(value);\n return Number.isNaN(numericValue) ? 0 : numericValue;\n};\nfunction getScrollPosition(element) {\n if (isHTMLElement(element)) {\n return { scrollLeft: element.scrollLeft, scrollTop: element.scrollTop };\n }\n return { scrollLeft: element.scrollX, scrollTop: element.scrollY };\n}\nexport {\n getScrollPosition,\n scrollIntoView,\n scrollToElement\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/set.ts\nimport { noop } from \"./shared.mjs\";\nfunction setAttribute(el, attr, v) {\n const prev = el.getAttribute(attr);\n const exists = prev != null;\n if (prev === v) return noop;\n el.setAttribute(attr, v);\n return () => {\n if (!exists) {\n el.removeAttribute(attr);\n } else {\n el.setAttribute(attr, prev);\n }\n };\n}\nfunction setProperty(el, prop, v) {\n const exists = prop in el;\n const prev = el[prop];\n if (prev === v) return noop;\n el[prop] = v;\n return () => {\n if (!exists) {\n delete el[prop];\n } else {\n el[prop] = prev;\n }\n };\n}\nfunction setStyle(el, style) {\n if (!el) return noop;\n const prev = Object.keys(style).reduce((acc, key) => {\n acc[key] = el.style.getPropertyValue(key);\n return acc;\n }, {});\n if (isEqual(prev, style)) return noop;\n Object.assign(el.style, style);\n return () => {\n Object.assign(el.style, prev);\n if (el.style.length === 0) {\n el.removeAttribute(\"style\");\n }\n };\n}\nfunction setStyleProperty(el, prop, value) {\n if (!el) return noop;\n const prev = el.style.getPropertyValue(prop);\n if (prev === value) return noop;\n el.style.setProperty(prop, value);\n return () => {\n el.style.setProperty(prop, prev);\n if (el.style.length === 0) {\n el.removeAttribute(\"style\");\n }\n };\n}\nfunction isEqual(a, b) {\n return Object.keys(a).every((key) => a[key] === b[key]);\n}\nexport {\n setAttribute,\n setProperty,\n setStyle,\n setStyleProperty\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/wait-for.ts\nimport { getDocument, getWindow } from \"./node.mjs\";\nfunction waitForPromise(promise, controller, timeout) {\n const { signal } = controller;\n const wrappedPromise = new Promise((resolve, reject) => {\n const timeoutId = setTimeout(() => {\n reject(new Error(`Timeout of ${timeout}ms exceeded`));\n }, timeout);\n signal.addEventListener(\"abort\", () => {\n clearTimeout(timeoutId);\n reject(new DOMException(\"Promise aborted\", \"AbortError\"));\n });\n promise.then((result) => {\n if (!signal.aborted) {\n clearTimeout(timeoutId);\n resolve(result);\n }\n }).catch((error) => {\n if (!signal.aborted) {\n clearTimeout(timeoutId);\n reject(error);\n }\n });\n });\n const abort = () => controller.abort();\n return [wrappedPromise, abort];\n}\nfunction waitForElement(target, options) {\n const { timeout, rootNode } = options;\n const win = getWindow(rootNode);\n const doc = getDocument(rootNode);\n const controller = new win.AbortController();\n return waitForPromise(\n new Promise((resolve) => {\n const el = target();\n if (el) {\n resolve(el);\n return;\n }\n const observer = new win.MutationObserver(() => {\n const el2 = target();\n if (el2 && el2.isConnected) {\n observer.disconnect();\n resolve(el2);\n }\n });\n observer.observe(doc.body, {\n childList: true,\n subtree: true\n });\n }),\n controller,\n timeout\n );\n}\nfunction waitForEvent(target, event, options) {\n let cleanup;\n const { predicate, ...listenerOptions } = options ?? {};\n const promise = new Promise((resolve) => {\n const element = target?.();\n if (!element) {\n return;\n }\n const handler = (e) => {\n if (!predicate || predicate(element)) {\n resolve(e);\n cleanup?.();\n }\n };\n element.addEventListener(event, handler, listenerOptions);\n cleanup = () => element.removeEventListener(event, handler, listenerOptions);\n });\n return [promise, () => cleanup?.()];\n}\nexport {\n waitForElement,\n waitForEvent,\n waitForPromise\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};\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 const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\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 const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\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 * 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// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\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 platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\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 resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\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: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\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 * 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 platform.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 platform.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 const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\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\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 platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.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 platform.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\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\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 = originSides.has(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 platform\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 platform.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 = originSides.has(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 platform.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","/**\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};\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 const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? '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.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\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 const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\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","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) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\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 isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\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 (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(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 } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\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, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, 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$1(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$1(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) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - 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 (isOffsetParentAnElement) {\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) : 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$1(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\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\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 const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\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$1(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$1(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$1(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 && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || 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 firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: 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\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 function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\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 setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\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$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(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$1(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) : []), ...(floating ? 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 && floating) {\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 if (floating) {\n resizeObserver.observe(floating);\n }\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 \"./chunk-MXGZDBDQ.mjs\";\n\n// src/array.ts\nfunction toArray(v) {\n if (v == null) return [];\n return Array.isArray(v) ? v : [v];\n}\nvar fromLength = (length) => Array.from(Array(length).keys());\nvar first = (v) => v[0];\nvar last = (v) => v[v.length - 1];\nvar isEmpty = (v) => v.length === 0;\nvar has = (v, t) => v.indexOf(t) !== -1;\nvar add = (v, ...items) => v.concat(items);\nvar remove = (v, ...items) => v.filter((t) => !items.includes(t));\nvar removeAt = (v, i) => v.filter((_, idx) => idx !== i);\nvar insertAt = (v, i, ...items) => [...v.slice(0, i), ...items, ...v.slice(i)];\nvar uniq = (v) => Array.from(new Set(v));\nvar diff = (a, b) => {\n const set = new Set(b);\n return a.filter((t) => !set.has(t));\n};\nvar addOrRemove = (v, item) => has(v, item) ? remove(v, item) : add(v, item);\nfunction clear(v) {\n while (v.length > 0) v.pop();\n return v;\n}\nfunction nextIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n const next2 = idx + step;\n const len = v.length;\n const last2 = len - 1;\n if (idx === -1) return step > 0 ? 0 : last2;\n if (next2 < 0) return loop ? last2 : 0;\n if (next2 >= len) return loop ? 0 : idx > len ? len : idx;\n return next2;\n}\nfunction next(v, idx, opts = {}) {\n return v[nextIndex(v, idx, opts)];\n}\nfunction prevIndex(v, idx, opts = {}) {\n const { step = 1, loop = true } = opts;\n return nextIndex(v, idx, { step: -step, loop });\n}\nfunction prev(v, index, opts = {}) {\n return v[prevIndex(v, index, opts)];\n}\nfunction chunk(v, size) {\n return v.reduce((rows, value, index) => {\n if (index % size === 0) rows.push([value]);\n else last(rows)?.push(value);\n return rows;\n }, []);\n}\nfunction flatArray(arr) {\n return arr.reduce((flat, item) => {\n if (Array.isArray(item)) {\n return flat.concat(flatArray(item));\n }\n return flat.concat(item);\n }, []);\n}\nfunction partition(arr, fn) {\n return arr.reduce(\n ([pass, fail], value) => {\n if (fn(value)) pass.push(value);\n else fail.push(value);\n return [pass, fail];\n },\n [[], []]\n );\n}\nexport {\n add,\n addOrRemove,\n chunk,\n clear,\n diff,\n first,\n flatArray,\n fromLength,\n has,\n insertAt,\n isEmpty,\n last,\n next,\n nextIndex,\n partition,\n prev,\n prevIndex,\n remove,\n removeAt,\n toArray,\n uniq\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/equal.ts\nvar isArrayLike = (value) => value?.constructor.name === \"Array\";\nvar isArrayEqual = (a, b) => {\n if (a.length !== b.length) return false;\n for (let i = 0; i < a.length; i++) {\n if (!isEqual(a[i], b[i])) return false;\n }\n return true;\n};\nvar isEqual = (a, b) => {\n if (Object.is(a, b)) return true;\n if (a == null && b != null || a != null && b == null) return false;\n if (typeof a?.isEqual === \"function\" && typeof b?.isEqual === \"function\") {\n return a.isEqual(b);\n }\n if (typeof a === \"function\" && typeof b === \"function\") {\n return a.toString() === b.toString();\n }\n if (isArrayLike(a) && isArrayLike(b)) {\n return isArrayEqual(Array.from(a), Array.from(b));\n }\n if (!(typeof a === \"object\") || !(typeof b === \"object\")) return false;\n const keys = Object.keys(b ?? /* @__PURE__ */ Object.create(null));\n const length = keys.length;\n for (let i = 0; i < length; i++) {\n const hasKey = Reflect.has(a, keys[i]);\n if (!hasKey) return false;\n }\n for (let i = 0; i < length; i++) {\n const key = keys[i];\n if (!isEqual(a[key], b[key])) return false;\n }\n return true;\n};\nexport {\n isEqual\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/guard.ts\nvar isDev = () => process.env.NODE_ENV !== \"production\";\nvar isArray = (v) => Array.isArray(v);\nvar isBoolean = (v) => v === true || v === false;\nvar isObjectLike = (v) => v != null && typeof v === \"object\";\nvar isObject = (v) => isObjectLike(v) && !isArray(v);\nvar isNumber = (v) => typeof v === \"number\" && !Number.isNaN(v);\nvar isString = (v) => typeof v === \"string\";\nvar isFunction = (v) => typeof v === \"function\";\nvar isNull = (v) => v == null;\nvar hasProp = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nvar baseGetTag = (v) => Object.prototype.toString.call(v);\nvar fnToString = Function.prototype.toString;\nvar objectCtorString = fnToString.call(Object);\nvar isPlainObject = (v) => {\n if (!isObjectLike(v) || baseGetTag(v) != \"[object Object]\" || isFrameworkElement(v)) return false;\n const proto = Object.getPrototypeOf(v);\n if (proto === null) return true;\n const Ctor = hasProp(proto, \"constructor\") && proto.constructor;\n return typeof Ctor == \"function\" && Ctor instanceof Ctor && fnToString.call(Ctor) == objectCtorString;\n};\nvar isReactElement = (x) => typeof x === \"object\" && x !== null && \"$$typeof\" in x && \"props\" in x;\nvar isVueElement = (x) => typeof x === \"object\" && x !== null && \"__v_isVNode\" in x;\nvar isFrameworkElement = (x) => isReactElement(x) || isVueElement(x);\nexport {\n hasProp,\n isArray,\n isBoolean,\n isDev,\n isFunction,\n isNull,\n isNumber,\n isObject,\n isObjectLike,\n isPlainObject,\n isString\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/functions.ts\nimport { isFunction } from \"./guard.mjs\";\nvar runIfFn = (v, ...a) => {\n const res = typeof v === \"function\" ? v(...a) : v;\n return res ?? void 0;\n};\nvar cast = (v) => v;\nvar identity = (v) => v();\nvar noop = () => {\n};\nvar callAll = (...fns) => (...a) => {\n fns.forEach(function(fn) {\n fn?.(...a);\n });\n};\nvar uuid = /* @__PURE__ */ (() => {\n let id = 0;\n return () => {\n id++;\n return id.toString(36);\n };\n})();\nfunction match(key, record, ...args) {\n if (key in record) {\n const fn = record[key];\n return isFunction(fn) ? fn(...args) : fn;\n }\n const error = new Error(`No matching key: ${JSON.stringify(key)} in ${JSON.stringify(Object.keys(record))}`);\n Error.captureStackTrace?.(error, match);\n throw error;\n}\nvar tryCatch = (fn, fallback) => {\n try {\n return fn();\n } catch (error) {\n if (error instanceof Error) {\n Error.captureStackTrace?.(error, tryCatch);\n }\n return fallback?.();\n }\n};\nfunction throttle(fn, wait = 0) {\n let lastCall = 0;\n let timeout = null;\n return ((...args) => {\n const now = Date.now();\n const timeSinceLastCall = now - lastCall;\n if (timeSinceLastCall >= wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n fn(...args);\n lastCall = now;\n } else if (!timeout) {\n timeout = setTimeout(() => {\n fn(...args);\n lastCall = Date.now();\n timeout = null;\n }, wait - timeSinceLastCall);\n }\n });\n}\nfunction debounce(fn, wait = 0) {\n let timeout = null;\n return ((...args) => {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n timeout = setTimeout(() => {\n fn(...args);\n }, wait);\n });\n}\nvar toChar = (code) => String.fromCharCode(code + (code > 25 ? 39 : 97));\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0) name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i) h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nvar hash = (value) => toName(toPhash(5381, value) >>> 0);\nexport {\n callAll,\n cast,\n debounce,\n hash,\n identity,\n match,\n noop,\n runIfFn,\n throttle,\n tryCatch,\n uuid\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/object.ts\nimport { isPlainObject } from \"./guard.mjs\";\nfunction compact(obj) {\n if (!isPlainObject(obj) || obj === void 0) return obj;\n const keys2 = Reflect.ownKeys(obj).filter((key) => typeof key === \"string\");\n const filtered = {};\n for (const key of keys2) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = compact(value);\n }\n }\n return filtered;\n}\nvar json = (v) => JSON.parse(JSON.stringify(v));\nvar keys = (obj) => Object.keys(obj);\nfunction pick(obj, keys2) {\n const filtered = {};\n for (const key of keys2) {\n const value = obj[key];\n if (value !== void 0) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\nfunction splitProps(props, keys2) {\n const rest = {};\n const result = {};\n const keySet = new Set(keys2);\n const ownKeys = Reflect.ownKeys(props);\n for (const key of ownKeys) {\n if (keySet.has(key)) {\n result[key] = props[key];\n } else {\n rest[key] = props[key];\n }\n }\n return [result, rest];\n}\nvar createSplitProps = (keys2) => {\n return function split(props) {\n return splitProps(props, keys2);\n };\n};\nfunction omit(obj, keys2) {\n return createSplitProps(keys2)(obj)[1];\n}\nexport {\n compact,\n createSplitProps,\n json,\n keys,\n omit,\n pick,\n splitProps\n};\n","import \"./chunk-MXGZDBDQ.mjs\";\n\n// src/warning.ts\nfunction warn(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n console.warn(m);\n }\n}\nfunction invariant(...a) {\n const m = a.length === 1 ? a[0] : a[1];\n const c = a.length === 2 ? a[0] : true;\n if (c && process.env.NODE_ENV !== \"production\") {\n throw new Error(m);\n }\n}\nfunction ensure(c, m) {\n if (c == null) throw new Error(m());\n}\nfunction ensureProps(props, keys, scope) {\n let missingKeys = [];\n for (const key of keys) {\n if (props[key] == null) missingKeys.push(key);\n }\n if (missingKeys.length > 0)\n throw new Error(`[zag-js${scope ? ` > ${scope}` : \"\"}] missing required props: ${missingKeys.join(\", \")}`);\n}\nexport {\n ensure,\n ensureProps,\n invariant,\n warn\n};\n","// src/get-anchor.ts\nimport { isHTMLElement } from \"@zag-js/dom-query\";\nfunction createDOMRect(x = 0, y = 0, width = 0, height = 0) {\n if (typeof DOMRect === \"function\") {\n return new DOMRect(x, y, width, height);\n }\n const rect = {\n x,\n y,\n width,\n height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x\n };\n return { ...rect, toJSON: () => rect };\n}\nfunction getDOMRect(anchorRect) {\n if (!anchorRect) return createDOMRect();\n const { x, y, width, height } = anchorRect;\n return createDOMRect(x, y, width, height);\n}\nfunction getAnchorElement(anchorElement, getAnchorRect) {\n return {\n contextElement: isHTMLElement(anchorElement) ? anchorElement : anchorElement?.contextElement,\n getBoundingClientRect: () => {\n const anchor = anchorElement;\n const anchorRect = getAnchorRect?.(anchor);\n if (anchorRect || !anchor) {\n return getDOMRect(anchorRect);\n }\n return anchor.getBoundingClientRect();\n }\n };\n}\nexport {\n createDOMRect,\n getAnchorElement\n};\n","// src/middleware.ts\nvar toVar = (value) => ({ variable: value, reference: `var(${value})` });\nvar cssVars = {\n arrowSize: toVar(\"--arrow-size\"),\n arrowSizeHalf: toVar(\"--arrow-size-half\"),\n arrowBg: toVar(\"--arrow-background\"),\n transformOrigin: toVar(\"--transform-origin\"),\n arrowOffset: toVar(\"--arrow-offset\")\n};\nvar getSideAxis = (side) => side === \"top\" || side === \"bottom\" ? \"y\" : \"x\";\nfunction createTransformOriginMiddleware(opts, arrowEl) {\n return {\n name: \"transformOrigin\",\n fn(state) {\n const { elements, middlewareData, placement, rects, y } = state;\n const side = placement.split(\"-\")[0];\n const axis = getSideAxis(side);\n const arrowX = middlewareData.arrow?.x || 0;\n const arrowY = middlewareData.arrow?.y || 0;\n const arrowWidth = arrowEl?.clientWidth || 0;\n const arrowHeight = arrowEl?.clientHeight || 0;\n const transformX = arrowX + arrowWidth / 2;\n const transformY = arrowY + arrowHeight / 2;\n const shiftY = Math.abs(middlewareData.shift?.y || 0);\n const halfAnchorHeight = rects.reference.height / 2;\n const arrowOffset = arrowHeight / 2;\n const gutter = opts.offset?.mainAxis ?? opts.gutter;\n const sideOffsetValue = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n const isOverlappingAnchor = shiftY > sideOffsetValue;\n const adjacentTransformOrigin = {\n top: `${transformX}px calc(100% + ${sideOffsetValue}px)`,\n bottom: `${transformX}px ${-sideOffsetValue}px`,\n left: `calc(100% + ${sideOffsetValue}px) ${transformY}px`,\n right: `${-sideOffsetValue}px ${transformY}px`\n }[side];\n const overlapTransformOrigin = `${transformX}px ${rects.reference.y + halfAnchorHeight - y}px`;\n const useOverlap = Boolean(opts.overlap) && axis === \"y\" && isOverlappingAnchor;\n elements.floating.style.setProperty(\n cssVars.transformOrigin.variable,\n useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n );\n return {\n data: {\n transformOrigin: useOverlap ? overlapTransformOrigin : adjacentTransformOrigin\n }\n };\n }\n };\n}\nvar rectMiddleware = {\n name: \"rects\",\n fn({ rects }) {\n return {\n data: rects\n };\n }\n};\nvar shiftArrowMiddleware = (arrowEl) => {\n if (!arrowEl) return;\n return {\n name: \"shiftArrow\",\n fn({ placement, middlewareData }) {\n if (!middlewareData.arrow) return {};\n const { x, y } = middlewareData.arrow;\n const dir = placement.split(\"-\")[0];\n Object.assign(arrowEl.style, {\n left: x != null ? `${x}px` : \"\",\n top: y != null ? `${y}px` : \"\",\n [dir]: `calc(100% + ${cssVars.arrowOffset.reference})`\n });\n return {};\n }\n };\n};\nexport {\n createTransformOriginMiddleware,\n cssVars,\n rectMiddleware,\n shiftArrowMiddleware\n};\n","// src/placement.ts\nfunction isValidPlacement(v) {\n return /^(?:top|bottom|left|right)(?:-(?:start|end))?$/.test(v);\n}\nfunction getPlacementDetails(placement) {\n const [side, align] = placement.split(\"-\");\n return { side, align, hasAlign: align != null };\n}\nfunction getPlacementSide(placement) {\n return placement.split(\"-\")[0];\n}\nexport {\n getPlacementDetails,\n getPlacementSide,\n isValidPlacement\n};\n","// src/get-placement.ts\nimport { arrow, autoUpdate, computePosition, flip, hide, limitShift, offset, shift, size } from \"@floating-ui/dom\";\nimport { getComputedStyle, getWindow, isHTMLElement, raf } from \"@zag-js/dom-query\";\nimport { compact, isNull, noop } from \"@zag-js/utils\";\nimport { getAnchorElement } from \"./get-anchor.mjs\";\nimport { createTransformOriginMiddleware, rectMiddleware, shiftArrowMiddleware } from \"./middleware.mjs\";\nimport { getPlacementDetails } from \"./placement.mjs\";\nvar defaultOptions = {\n strategy: \"absolute\",\n placement: \"bottom\",\n listeners: true,\n restoreStyles: false,\n gutter: 8,\n flip: true,\n slide: true,\n overlap: false,\n sameWidth: false,\n fitViewport: false,\n overflowPadding: 8,\n arrowPadding: 4\n};\nfunction roundByDpr(win, value) {\n const dpr = win.devicePixelRatio || 1;\n return Math.round(value * dpr) / dpr;\n}\nfunction isApproximatelyEqual(a, b) {\n return a != null && Math.abs(a - b) < 0.5;\n}\nfunction resolveBoundaryOption(boundary) {\n if (typeof boundary === \"function\") return boundary();\n if (boundary === \"clipping-ancestors\") return \"clippingAncestors\";\n return boundary;\n}\nfunction getArrowMiddleware(arrowElement, doc, opts) {\n const element = arrowElement || doc.createElement(\"div\");\n return arrow({ element, padding: opts.arrowPadding });\n}\nfunction getOffsetMiddleware(arrowElement, opts) {\n if (isNull(opts.offset ?? opts.gutter)) return;\n return offset(({ placement }) => {\n const arrowOffset = (arrowElement?.clientHeight || 0) / 2;\n const gutter = opts.offset?.mainAxis ?? opts.gutter;\n const mainAxis = typeof gutter === \"number\" ? gutter + arrowOffset : gutter ?? arrowOffset;\n const { hasAlign } = getPlacementDetails(placement);\n const shift2 = !hasAlign ? opts.shift : void 0;\n const crossAxis = opts.offset?.crossAxis ?? shift2;\n return compact({\n crossAxis,\n mainAxis,\n alignmentAxis: opts.shift\n });\n });\n}\nfunction getFlipMiddleware(opts) {\n if (!opts.flip) return;\n return flip(() => {\n const boundary = resolveBoundaryOption(opts.boundary);\n return {\n ...boundary ? { boundary } : void 0,\n padding: opts.overflowPadding,\n fallbackPlacements: opts.flip === true ? void 0 : opts.flip\n };\n });\n}\nfunction getShiftMiddleware(opts) {\n if (!opts.slide && !opts.overlap) return;\n return shift(() => {\n const boundary = resolveBoundaryOption(opts.boundary);\n return {\n ...boundary ? { boundary } : void 0,\n mainAxis: opts.slide,\n crossAxis: opts.overlap,\n padding: opts.overflowPadding,\n limiter: limitShift()\n };\n });\n}\nfunction getSizeMiddleware(opts) {\n if (opts.sizeMiddleware === false && !opts.sameWidth && !opts.fitViewport) return;\n let lastReferenceWidth;\n let lastReferenceHeight;\n let lastAvailableWidth;\n let lastAvailableHeight;\n return size(() => {\n const boundary = resolveBoundaryOption(opts.boundary);\n return {\n padding: opts.overflowPadding,\n ...boundary ? { boundary } : void 0,\n apply({ elements, rects, availableHeight, availableWidth }) {\n const floating = elements.floating;\n const referenceWidth = Math.round(rects.reference.width);\n const referenceHeight = Math.round(rects.reference.height);\n availableWidth = Math.floor(availableWidth);\n availableHeight = Math.floor(availableHeight);\n if (!isApproximatelyEqual(lastReferenceWidth, referenceWidth)) {\n floating.style.setProperty(\"--reference-width\", `${referenceWidth}px`);\n lastReferenceWidth = referenceWidth;\n }\n if (!isApproximatelyEqual(lastReferenceHeight, referenceHeight)) {\n floating.style.setProperty(\"--reference-height\", `${referenceHeight}px`);\n lastReferenceHeight = referenceHeight;\n }\n if (!isApproximatelyEqual(lastAvailableWidth, availableWidth)) {\n floating.style.setProperty(\"--available-width\", `${availableWidth}px`);\n lastAvailableWidth = availableWidth;\n }\n if (!isApproximatelyEqual(lastAvailableHeight, availableHeight)) {\n floating.style.setProperty(\"--available-height\", `${availableHeight}px`);\n lastAvailableHeight = availableHeight;\n }\n }\n };\n });\n}\nfunction hideWhenDetachedMiddleware(opts) {\n if (!opts.hideWhenDetached) return;\n return hide(() => ({\n strategy: \"referenceHidden\",\n boundary: resolveBoundaryOption(opts.boundary) ?? \"clippingAncestors\"\n }));\n}\nfunction getAutoUpdateOptions(opts) {\n if (!opts) return {};\n if (opts === true) {\n return { ancestorResize: true, ancestorScroll: true, elementResize: true, layoutShift: true };\n }\n return opts;\n}\nvar floatingStyleProps = [\n \"transform\",\n \"visibility\",\n \"pointer-events\",\n \"--x\",\n \"--y\",\n \"--z-index\",\n \"--reference-width\",\n \"--reference-height\",\n \"--available-width\",\n \"--available-height\",\n \"--transform-origin\"\n];\nvar arrowStyleProps = [\"top\", \"right\", \"bottom\", \"left\"];\nfunction createStyleCleanup(el, props) {\n if (!el) return noop;\n const prev = new Map(props.map((prop) => [prop, el.style.getPropertyValue(prop)]));\n return () => {\n prev.forEach((value, prop) => {\n if (value) el.style.setProperty(prop, value);\n else el.style.removeProperty(prop);\n });\n if (el.style.length === 0) {\n el.removeAttribute(\"style\");\n }\n };\n}\nfunction anchorIdentity(anchor) {\n if (anchor == null) return null;\n if (isHTMLElement(anchor)) return anchor;\n if (typeof anchor === \"object\" && anchor && \"contextElement\" in anchor && anchor.contextElement) {\n return anchor.contextElement;\n }\n return anchor;\n}\nfunction getPlacementImpl(referenceOrVirtual, floatingOrVirtual, opts = {}) {\n const resolveFloating = () => {\n const raw = typeof floatingOrVirtual === \"function\" ? floatingOrVirtual() : floatingOrVirtual;\n return raw ?? null;\n };\n const resolveAnchor = () => {\n const raw = typeof referenceOrVirtual === \"function\" ? referenceOrVirtual() : referenceOrVirtual;\n return opts.getAnchorElement?.() ?? raw;\n };\n const resolveReference = () => {\n const anchor = resolveAnchor();\n if (!anchor && !opts.getAnchorRect) return null;\n return getAnchorElement(anchor, opts.getAnchorRect);\n };\n const options = Object.assign({}, defaultOptions, opts);\n let middleware = [];\n let cachedMiddlewareFloating = null;\n let restoreFloatingStyles;\n let restoreArrowStyles;\n function rebuildMiddlewareForFloating(floating) {\n restoreFloatingStyles?.();\n restoreArrowStyles?.();\n cachedMiddlewareFloating = floating;\n restoreFloatingStyles = options.restoreStyles ? createStyleCleanup(floating, floatingStyleProps) : void 0;\n const arrowEl = floating.querySelector(\"[data-part=arrow]\");\n restoreArrowStyles = options.restoreStyles ? createStyleCleanup(arrowEl, arrowStyleProps) : void 0;\n middleware = [\n getOffsetMiddleware(arrowEl, options),\n getFlipMiddleware(options),\n getShiftMiddleware(options),\n getArrowMiddleware(arrowEl, floating.ownerDocument, options),\n shiftArrowMiddleware(arrowEl),\n createTransformOriginMiddleware(\n { gutter: options.gutter, offset: options.offset, overlap: options.overlap },\n arrowEl\n ),\n getSizeMiddleware(options),\n hideWhenDetachedMiddleware(options),\n rectMiddleware\n ];\n }\n const { placement, strategy, onComplete, onPositioned } = options;\n let lastX;\n let lastY;\n let zIndexComputed = false;\n let lastAnchorForObserve = void 0;\n let lastFloatingForObserve = void 0;\n let cancelAutoUpdate = noop;\n const autoUpdateOptions = getAutoUpdateOptions(options.listeners);\n function syncAutoUpdateObservers() {\n if (!options.listeners) return;\n const anchor = resolveAnchor();\n const reference = resolveReference();\n const floating = resolveFloating();\n if (!reference || !floating) return;\n const anchorChanged = anchorIdentity(anchor) !== anchorIdentity(lastAnchorForObserve);\n const floatingChanged = floating !== lastFloatingForObserve;\n if (anchorChanged || floatingChanged) {\n cancelAutoUpdate();\n lastAnchorForObserve = anchor;\n lastFloatingForObserve = floating;\n cancelAutoUpdate = autoUpdate(reference, floating, runUpdate, autoUpdateOptions);\n }\n }\n async function updatePosition() {\n syncAutoUpdateObservers();\n const floating = resolveFloating();\n if (!floating) return;\n if (floating !== cachedMiddlewareFloating) {\n rebuildMiddlewareForFloating(floating);\n zIndexComputed = false;\n }\n const reference = resolveReference();\n if (!reference) return;\n const pos = await computePosition(reference, floating, {\n placement,\n middleware,\n strategy\n });\n onComplete?.(pos);\n const win = getWindow(floating);\n const x = roundByDpr(win, pos.x);\n const y = roundByDpr(win, pos.y);\n if (!isApproximatelyEqual(lastX, x)) {\n floating.style.setProperty(\"--x\", `${x}px`);\n lastX = x;\n }\n if (!isApproximatelyEqual(lastY, y)) {\n floating.style.setProperty(\"--y\", `${y}px`);\n lastY = y;\n }\n if (options.hideWhenDetached) {\n const isHidden = pos.middlewareData.hide?.referenceHidden;\n if (isHidden) {\n floating.style.setProperty(\"visibility\", \"hidden\");\n floating.style.setProperty(\"pointer-events\", \"none\");\n } else {\n floating.style.removeProperty(\"visibility\");\n floating.style.removeProperty(\"pointer-events\");\n }\n }\n if (!zIndexComputed) {\n const contentEl = floating.firstElementChild;\n if (contentEl) {\n floating.style.setProperty(\"--z-index\", getComputedStyle(contentEl).zIndex);\n zIndexComputed = true;\n }\n }\n }\n async function runUpdate() {\n if (opts.updatePosition) {\n await opts.updatePosition({ updatePosition, floatingElement: resolveFloating() });\n onPositioned?.({ placed: true });\n } else {\n await updatePosition();\n }\n }\n runUpdate();\n return () => {\n cancelAutoUpdate();\n restoreArrowStyles?.();\n restoreFloatingStyles?.();\n onPositioned?.({ placed: false });\n };\n}\nfunction getPlacement(referenceOrFn, floatingOrFn, opts = {}) {\n const { defer, ...options } = opts;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n cleanups.push(getPlacementImpl(referenceOrFn, floatingOrFn, options));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nexport {\n getPlacement\n};\n","// src/get-styles.ts\nimport { cssVars } from \"./middleware.mjs\";\nvar ARROW_FLOATING_STYLE = {\n bottom: \"rotate(45deg)\",\n left: \"rotate(135deg)\",\n top: \"rotate(225deg)\",\n right: \"rotate(315deg)\"\n};\nfunction getPlacementStyles(options = {}) {\n const { placement, sameWidth, fitViewport, strategy = \"absolute\" } = options;\n return {\n arrow: {\n position: \"absolute\",\n width: cssVars.arrowSize.reference,\n height: cssVars.arrowSize.reference,\n [cssVars.arrowSizeHalf.variable]: `calc(${cssVars.arrowSize.reference} / 2)`,\n [cssVars.arrowOffset.variable]: `calc(${cssVars.arrowSizeHalf.reference} * -1)`\n },\n arrowTip: {\n // @ts-expect-error - Fix this\n transform: placement ? ARROW_FLOATING_STYLE[placement.split(\"-\")[0]] : void 0,\n background: cssVars.arrowBg.reference,\n top: \"0\",\n left: \"0\",\n width: \"100%\",\n height: \"100%\",\n position: \"absolute\",\n zIndex: \"inherit\"\n },\n floating: {\n position: strategy,\n isolation: \"isolate\",\n minWidth: sameWidth ? void 0 : \"max-content\",\n width: sameWidth ? \"var(--reference-width)\" : void 0,\n maxWidth: fitViewport ? \"var(--available-width)\" : void 0,\n maxHeight: fitViewport ? \"var(--available-height)\" : void 0,\n pointerEvents: !placement ? \"none\" : void 0,\n top: \"0px\",\n left: \"0px\",\n // move off-screen if placement is not defined\n transform: placement ? \"translate3d(var(--x), var(--y), 0)\" : \"translate3d(0, -100vh, 0)\",\n zIndex: \"var(--z-index)\"\n }\n };\n}\nexport {\n getPlacementStyles\n};\n","// src/popover.dom.ts\nimport { getFocusables, queryAll } from \"@zag-js/dom-query\";\nimport { isFunction } from \"@zag-js/utils\";\nvar getAnchorId = (scope) => scope.ids?.anchor ?? `popover:${scope.id}:anchor`;\nvar getTriggerId = (scope, value) => {\n const customId = scope.ids?.trigger;\n if (customId != null) return isFunction(customId) ? customId(value) : customId;\n return value ? `popover:${scope.id}:trigger:${value}` : `popover:${scope.id}:trigger`;\n};\nvar getContentId = (scope) => scope.ids?.content ?? `popover:${scope.id}:content`;\nvar getPositionerId = (scope) => scope.ids?.positioner ?? `popover:${scope.id}:popper`;\nvar getArrowId = (scope) => scope.ids?.arrow ?? `popover:${scope.id}:arrow`;\nvar getTitleId = (scope) => scope.ids?.title ?? `popover:${scope.id}:title`;\nvar getDescriptionId = (scope) => scope.ids?.description ?? `popover:${scope.id}:desc`;\nvar getCloseTriggerId = (scope) => scope.ids?.closeTrigger ?? `popover:${scope.id}:close`;\nvar getAnchorEl = (scope) => scope.getById(getAnchorId(scope));\nvar getTriggerEl = (scope) => scope.getById(getTriggerId(scope));\nvar getTriggerEls = (scope) => queryAll(scope.getRootNode(), `[data-scope=\"popover\"][data-part=\"trigger\"][data-ownedby=\"${scope.id}\"]`);\nvar getActiveTriggerEl = (scope, value) => {\n if (value == null) {\n return getTriggerEl(scope) ?? getTriggerEls(scope)[0];\n }\n return scope.getById(getTriggerId(scope, value));\n};\nvar getContentEl = (scope) => scope.getById(getContentId(scope));\nvar getPositionerEl = (scope) => scope.getById(getPositionerId(scope));\nvar getTitleEl = (scope) => scope.getById(getTitleId(scope));\nvar getDescriptionEl = (scope) => scope.getById(getDescriptionId(scope));\nvar getFocusableEls = (scope) => getFocusables(getContentEl(scope));\nvar getFirstFocusableEl = (scope) => getFocusableEls(scope)[0];\nexport {\n getActiveTriggerEl,\n getAnchorEl,\n getAnchorId,\n getArrowId,\n getCloseTriggerId,\n getContentEl,\n getContentId,\n getDescriptionEl,\n getDescriptionId,\n getFirstFocusableEl,\n getFocusableEls,\n getPositionerEl,\n getPositionerId,\n getTitleEl,\n getTitleId,\n getTriggerEl,\n getTriggerEls,\n getTriggerId\n};\n","// src/popover.connect.ts\nimport { ariaAttr, dataAttr, isLeftClick, isSafari } from \"@zag-js/dom-query\";\nimport { getPlacementSide, getPlacementStyles } from \"@zag-js/popper\";\nimport { parts } from \"./popover.anatomy.mjs\";\nimport * as dom from \"./popover.dom.mjs\";\nfunction connect(service, normalize) {\n const { state, context, send, computed, prop, scope } = service;\n const translations = prop(\"translations\");\n const open = state.matches(\"open\");\n const currentPlacement = context.get(\"currentPlacement\");\n const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;\n const portalled = computed(\"currentPortalled\");\n const rendered = context.get(\"renderedElements\");\n const triggerValue = context.get(\"triggerValue\");\n const popperStyles = getPlacementStyles({\n ...prop(\"positioning\"),\n placement: currentPlacement\n });\n return {\n portalled,\n open,\n setOpen(nextOpen) {\n const open2 = state.matches(\"open\");\n if (open2 === nextOpen) return;\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n },\n triggerValue,\n setTriggerValue(value) {\n send({ type: \"TRIGGER_VALUE.SET\", value });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n getArrowProps() {\n return normalize.element({\n id: dom.getArrowId(scope),\n ...parts.arrow.attrs,\n dir: prop(\"dir\"),\n style: popperStyles.arrow\n });\n },\n getArrowTipProps() {\n return normalize.element({\n ...parts.arrowTip.attrs,\n dir: prop(\"dir\"),\n style: popperStyles.arrowTip\n });\n },\n getAnchorProps() {\n return normalize.element({\n ...parts.anchor.attrs,\n dir: prop(\"dir\"),\n id: dom.getAnchorId(scope)\n });\n },\n getTriggerProps(props = {}) {\n const { value } = props;\n const current = value == null ? false : triggerValue === value;\n return normalize.button({\n ...parts.trigger.attrs,\n dir: prop(\"dir\"),\n type: \"button\",\n \"data-placement\": currentPlacement,\n \"data-side\": currentPlacementSide,\n id: dom.getTriggerId(scope, value),\n \"data-ownedby\": scope.id,\n \"data-value\": value,\n \"data-current\": dataAttr(current),\n \"aria-haspopup\": \"dialog\",\n \"aria-expanded\": value == null ? open : open && current,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": dom.getContentId(scope),\n onPointerDown(event) {\n if (!isLeftClick(event)) return;\n if (isSafari()) {\n event.currentTarget.focus();\n }\n },\n onClick(event) {\n if (event.defaultPrevented) return;\n const shouldSwitch = open && value != null && !current;\n send({ type: shouldSwitch ? \"TRIGGER_VALUE.SET\" : \"TOGGLE\", value });\n },\n onBlur(event) {\n send({ type: \"TRIGGER_BLUR\", target: event.relatedTarget });\n }\n });\n },\n getIndicatorProps() {\n return normalize.element({\n ...parts.indicator.attrs,\n dir: prop(\"dir\"),\n \"data-state\": open ? \"open\" : \"closed\"\n });\n },\n getPositionerProps() {\n return normalize.element({\n id: dom.getPositionerId(scope),\n ...parts.positioner.attrs,\n dir: prop(\"dir\"),\n style: popperStyles.floating\n });\n },\n getContentProps() {\n return normalize.element({\n ...parts.content.attrs,\n dir: prop(\"dir\"),\n id: dom.getContentId(scope),\n tabIndex: -1,\n role: \"dialog\",\n \"aria-modal\": ariaAttr(prop(\"modal\")),\n hidden: !open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-expanded\": dataAttr(open),\n \"aria-labelledby\": rendered.title ? dom.getTitleId(scope) : void 0,\n \"aria-describedby\": rendered.description ? dom.getDescriptionId(scope) : void 0,\n \"data-placement\": currentPlacement,\n \"data-side\": currentPlacementSide\n });\n },\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n id: dom.getTitleId(scope),\n dir: prop(\"dir\")\n });\n },\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n id: dom.getDescriptionId(scope),\n dir: prop(\"dir\")\n });\n },\n getCloseTriggerProps() {\n return normalize.button({\n ...parts.closeTrigger.attrs,\n dir: prop(\"dir\"),\n id: dom.getCloseTriggerId(scope),\n type: \"button\",\n \"aria-label\": translations.closeTriggerLabel,\n onClick(event) {\n if (event.defaultPrevented) return;\n event.stopPropagation();\n send({ type: \"CLOSE\" });\n }\n });\n }\n };\n}\nexport {\n connect\n};\n","// src/walk-tree-outside.ts\nimport { findControlledElements, isHTMLElement } from \"@zag-js/dom-query\";\nvar counterMap = /* @__PURE__ */ new WeakMap();\nvar uncontrolledNodes = /* @__PURE__ */ new WeakMap();\nvar markerMap = {};\nvar lockCount = 0;\nvar unwrapHost = (node) => node && (node.host || unwrapHost(node.parentNode));\nvar correctTargets = (parent, targets) => targets.map((target) => {\n if (parent.contains(target)) return target;\n const correctedTarget = unwrapHost(target);\n if (correctedTarget && parent.contains(correctedTarget)) {\n return correctedTarget;\n }\n console.error(\"[zag-js > ariaHidden] target\", target, \"in not contained inside\", parent, \". Doing nothing\");\n return null;\n}).filter((x) => Boolean(x));\nvar ignoreableNodes = /* @__PURE__ */ new Set([\"script\", \"output\", \"status\", \"next-route-announcer\"]);\nvar isIgnoredNode = (node) => {\n if (ignoreableNodes.has(node.localName)) return true;\n if (node.role === \"status\") return true;\n if (node.hasAttribute(\"aria-live\")) return true;\n return node.matches(\"[data-live-announcer]\");\n};\nvar walkTreeOutside = (originalTarget, props) => {\n const { parentNode, markerName, controlAttribute, explicitBooleanValue, followControlledElements = true } = props;\n const targets = correctTargets(parentNode, Array.isArray(originalTarget) ? originalTarget : [originalTarget]);\n markerMap[markerName] || (markerMap[markerName] = /* @__PURE__ */ new WeakMap());\n const markerCounter = markerMap[markerName];\n const hiddenNodes = [];\n const elementsToKeep = /* @__PURE__ */ new Set();\n const elementsToStop = new Set(targets);\n const keep = (el) => {\n if (!el || elementsToKeep.has(el)) return;\n elementsToKeep.add(el);\n keep(el.parentNode);\n };\n targets.forEach((target) => {\n keep(target);\n if (followControlledElements && isHTMLElement(target)) {\n findControlledElements(target, (controlledElement) => {\n keep(controlledElement);\n });\n }\n });\n const deep = (parent) => {\n if (!parent || elementsToStop.has(parent)) {\n return;\n }\n Array.prototype.forEach.call(parent.children, (node) => {\n if (elementsToKeep.has(node)) {\n deep(node);\n } else {\n try {\n if (isIgnoredNode(node)) return;\n const attr = node.getAttribute(controlAttribute);\n const alreadyHidden = explicitBooleanValue ? attr === \"true\" : attr !== null && attr !== \"false\";\n const counterValue = (counterMap.get(node) || 0) + 1;\n const 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, \"\");\n }\n if (!alreadyHidden) {\n node.setAttribute(controlAttribute, explicitBooleanValue ? \"true\" : \"\");\n }\n } catch (e) {\n console.error(\"[zag-js > ariaHidden] cannot operate on \", node, e);\n }\n }\n });\n };\n deep(parentNode);\n elementsToKeep.clear();\n lockCount++;\n return () => {\n hiddenNodes.forEach((node) => {\n const counterValue = counterMap.get(node) - 1;\n const 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 counterMap = /* @__PURE__ */ new WeakMap();\n counterMap = /* @__PURE__ */ new WeakMap();\n uncontrolledNodes = /* @__PURE__ */ new WeakMap();\n markerMap = {};\n }\n };\n};\nexport {\n walkTreeOutside\n};\n","// src/aria-hidden.ts\nimport { walkTreeOutside } from \"./walk-tree-outside.mjs\";\nvar getParentNode = (originalTarget) => {\n const target = Array.isArray(originalTarget) ? originalTarget[0] : originalTarget;\n return target.ownerDocument.body;\n};\nvar hideOthers = (originalTarget, parentNode = getParentNode(originalTarget), markerName = \"data-aria-hidden\", followControlledElements = true) => {\n if (!parentNode) return;\n return walkTreeOutside(originalTarget, {\n parentNode,\n markerName,\n controlAttribute: \"aria-hidden\",\n explicitBooleanValue: true,\n followControlledElements\n });\n};\nvar inertOthers = (originalTarget, parentNode = getParentNode(originalTarget), markerName = \"data-inerted\", followControlledElements = true) => {\n if (!parentNode) return;\n return walkTreeOutside(originalTarget, {\n parentNode,\n markerName,\n controlAttribute: \"inert\",\n explicitBooleanValue: false,\n followControlledElements\n });\n};\nvar supportsInert = () => typeof HTMLElement !== \"undefined\" && HTMLElement.prototype.hasOwnProperty(\"inert\");\nvar suppressOthers = (originalTarget, parentNode, markerName = \"data-suppressed\", followControlledElements = true) => {\n const fn = supportsInert() ? inertOthers : hideOthers;\n return fn(originalTarget, parentNode, markerName, followControlledElements);\n};\nexport {\n hideOthers,\n inertOthers,\n suppressOthers\n};\n","// src/index.ts\nimport { hideOthers } from \"./aria-hidden.mjs\";\nvar raf = (fn) => {\n const frameId = requestAnimationFrame(() => fn());\n return () => cancelAnimationFrame(frameId);\n};\nfunction ariaHidden(targetsOrFn, options = {}) {\n const { defer = true } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const targets = typeof targetsOrFn === \"function\" ? targetsOrFn() : targetsOrFn;\n const elements = targets.filter(Boolean);\n if (elements.length === 0) return;\n cleanups.push(hideOthers(elements));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nexport {\n ariaHidden\n};\n","// src/merge-props.ts\nimport { callAll, isString } from \"@zag-js/utils\";\nvar clsx = (...args) => args.map((str) => str?.trim?.()).filter(Boolean).join(\" \");\nvar CSS_REGEX = /((?:--)?(?:\\w+-?)+)\\s*:\\s*([^;]*)/g;\nvar serialize = (style) => {\n const res = {};\n let match;\n while (match = CSS_REGEX.exec(style)) {\n res[match[1]] = match[2];\n }\n return res;\n};\nvar css = (a, b) => {\n if (isString(a)) {\n if (isString(b)) return `${a};${b}`;\n a = serialize(a);\n } else if (isString(b)) {\n b = serialize(b);\n }\n return Object.assign({}, a ?? {}, b ?? {});\n};\nfunction mergeProps(...args) {\n let result = {};\n for (let props of args) {\n if (!props) continue;\n for (let key in result) {\n if (key.startsWith(\"on\") && typeof result[key] === \"function\" && typeof props[key] === \"function\") {\n result[key] = callAll(props[key], result[key]);\n continue;\n }\n if (key === \"className\" || key === \"class\") {\n result[key] = clsx(result[key], props[key]);\n continue;\n }\n if (key === \"style\") {\n result[key] = css(result[key], props[key]);\n continue;\n }\n result[key] = props[key] !== void 0 ? props[key] : result[key];\n }\n for (let key in props) {\n if (result[key] === void 0) {\n result[key] = props[key];\n }\n }\n const symbols = Object.getOwnPropertySymbols(props);\n for (let symbol of symbols) {\n result[symbol] = props[symbol];\n }\n }\n return result;\n}\nexport {\n mergeProps\n};\n","// src/state.ts\nimport { ensure, invariant } from \"@zag-js/utils\";\nvar STATE_DELIMITER = \".\";\nvar ABSOLUTE_PREFIX = \"#\";\nvar stateIndexCache = /* @__PURE__ */ new WeakMap();\nvar stateIdIndexCache = /* @__PURE__ */ new WeakMap();\nfunction joinStatePath(parts) {\n return parts.join(STATE_DELIMITER);\n}\nfunction isAbsoluteStatePath(value) {\n return value.includes(STATE_DELIMITER);\n}\nfunction isExplicitAbsoluteStatePath(value) {\n return value.startsWith(ABSOLUTE_PREFIX);\n}\nfunction isChildTarget(value) {\n return value.startsWith(STATE_DELIMITER);\n}\nfunction stripAbsolutePrefix(value) {\n return isExplicitAbsoluteStatePath(value) ? value.slice(ABSOLUTE_PREFIX.length) : value;\n}\nfunction appendStatePath(base, segment) {\n return base ? `${base}${STATE_DELIMITER}${segment}` : segment;\n}\nfunction buildStateIndex(machine) {\n const index = /* @__PURE__ */ new Map();\n const idIndex = /* @__PURE__ */ new Map();\n const visit = (basePath, state) => {\n index.set(basePath, state);\n const stateId = state.id;\n if (stateId) {\n if (idIndex.has(stateId)) {\n invariant(`[zag-js] Duplicate state id: \"${stateId}\"`);\n }\n idIndex.set(stateId, basePath);\n }\n const childStates = state.states;\n if (!childStates) return;\n ensure(state.initial, () => `[zag-js] Compound state \"${basePath}\" has child states but no \"initial\" property`);\n if (!(state.initial in childStates)) {\n invariant(\n `[zag-js] Compound state \"${basePath}\" has initial \"${String(state.initial)}\" which is not a child state`\n );\n }\n for (const [childKey, childState] of Object.entries(childStates)) {\n if (!childState) continue;\n const childPath = appendStatePath(basePath, childKey);\n visit(childPath, childState);\n }\n };\n for (const [topKey, topState] of Object.entries(machine.states)) {\n if (!topState) continue;\n visit(topKey, topState);\n }\n return { index, idIndex };\n}\nfunction ensureStateIndex(machine) {\n const cached = stateIndexCache.get(machine);\n if (cached) return cached;\n const { index, idIndex } = buildStateIndex(machine);\n stateIndexCache.set(machine, index);\n stateIdIndexCache.set(machine, idIndex);\n return index;\n}\nfunction getStatePathById(machine, stateId) {\n ensureStateIndex(machine);\n return stateIdIndexCache.get(machine)?.get(stateId);\n}\nfunction toSegments(value) {\n if (!value) return [];\n return String(value).split(STATE_DELIMITER).filter(Boolean);\n}\nfunction getStateChain(machine, state) {\n if (!state) return [];\n const stateIndex = ensureStateIndex(machine);\n const segments = toSegments(state);\n const chain = [];\n const statePath = [];\n for (const segment of segments) {\n statePath.push(segment);\n const path = joinStatePath(statePath);\n const current = stateIndex.get(path);\n if (!current) break;\n chain.push({ path, state: current });\n }\n return chain;\n}\nfunction resolveAbsoluteStateValue(machine, value) {\n const stateIndex = ensureStateIndex(machine);\n const segments = toSegments(value);\n if (!segments.length) return value;\n const resolved = [];\n for (const segment of segments) {\n resolved.push(segment);\n const path = joinStatePath(resolved);\n if (!stateIndex.has(path)) return value;\n }\n let resolvedPath = joinStatePath(resolved);\n let current = stateIndex.get(resolvedPath);\n while (current?.initial) {\n const nextPath = `${resolvedPath}${STATE_DELIMITER}${current.initial}`;\n const nextState = stateIndex.get(nextPath);\n if (!nextState) break;\n resolvedPath = nextPath;\n current = nextState;\n }\n return resolvedPath;\n}\nfunction hasStatePath(machine, value) {\n const stateIndex = ensureStateIndex(machine);\n return stateIndex.has(value);\n}\nfunction resolveStateValue(machine, value, source) {\n const stateValue = String(value);\n if (isExplicitAbsoluteStatePath(stateValue)) {\n const stateId = stripAbsolutePrefix(stateValue);\n const statePath = getStatePathById(machine, stateId);\n ensure(statePath, () => `[zag-js] Unknown state id: \"${stateId}\"`);\n return resolveAbsoluteStateValue(machine, statePath);\n }\n if (isChildTarget(stateValue) && source) {\n const childPath = appendStatePath(source, stateValue.slice(1));\n return resolveAbsoluteStateValue(machine, childPath);\n }\n if (!isAbsoluteStatePath(stateValue) && source) {\n const sourceSegments = toSegments(source);\n for (let index = sourceSegments.length - 1; index >= 1; index--) {\n const base = sourceSegments.slice(0, index).join(STATE_DELIMITER);\n const candidate = appendStatePath(base, stateValue);\n if (hasStatePath(machine, candidate)) return resolveAbsoluteStateValue(machine, candidate);\n }\n if (hasStatePath(machine, stateValue)) return resolveAbsoluteStateValue(machine, stateValue);\n }\n return resolveAbsoluteStateValue(machine, stateValue);\n}\nfunction getStateDefinition(machine, state) {\n const chain = getStateChain(machine, state);\n return chain[chain.length - 1]?.state;\n}\nfunction findTransition(machine, state, eventType) {\n const chain = getStateChain(machine, state);\n for (let index = chain.length - 1; index >= 0; index--) {\n const transitionMap = chain[index]?.state.on;\n const transition = transitionMap?.[eventType];\n if (transition) return { transitions: transition, source: chain[index]?.path };\n }\n const rootTransitionMap = machine.on;\n return { transitions: rootTransitionMap?.[eventType], source: void 0 };\n}\nfunction getExitEnterStates(machine, prevState, nextState, reenter) {\n const prevChain = prevState ? getStateChain(machine, prevState) : [];\n const nextChain = getStateChain(machine, nextState);\n let commonIndex = 0;\n while (commonIndex < prevChain.length && commonIndex < nextChain.length && prevChain[commonIndex]?.path === nextChain[commonIndex]?.path) {\n commonIndex += 1;\n }\n let exiting = prevChain.slice(commonIndex).reverse();\n let entering = nextChain.slice(commonIndex);\n const sameLeaf = prevChain.at(-1)?.path === nextChain.at(-1)?.path;\n if (reenter && sameLeaf) {\n exiting = prevChain.slice().reverse();\n entering = nextChain;\n }\n return { exiting, entering };\n}\nfunction matchesState(current, value) {\n if (!current) return false;\n return current === value || current.startsWith(`${value}${STATE_DELIMITER}`);\n}\nfunction hasTag(machine, state, tag) {\n return getStateChain(machine, state).some((item) => item.state.tags?.includes(tag));\n}\nexport {\n ensureStateIndex,\n findTransition,\n getExitEnterStates,\n getStateChain,\n getStateDefinition,\n hasTag,\n matchesState,\n resolveStateValue\n};\n","// src/create-machine.ts\nimport { ensureStateIndex } from \"./state.mjs\";\nfunction createGuards() {\n return {\n and: (...guards) => {\n return function andGuard(params) {\n return guards.every((str) => params.guard(str));\n };\n },\n or: (...guards) => {\n return function orGuard(params) {\n return guards.some((str) => params.guard(str));\n };\n },\n not: (guard) => {\n return function notGuard(params) {\n return !params.guard(guard);\n };\n }\n };\n}\nfunction createMachine(config) {\n ensureStateIndex(config);\n return config;\n}\nfunction setup() {\n return {\n guards: createGuards(),\n createMachine: (config) => {\n return createMachine(config);\n },\n choose: (transitions) => {\n return function chooseFn({ choose }) {\n return choose(transitions)?.actions;\n };\n }\n };\n}\nexport {\n createGuards,\n createMachine,\n setup\n};\n","// src/types.ts\nvar MachineStatus = /* @__PURE__ */ ((MachineStatus2) => {\n MachineStatus2[\"NotStarted\"] = \"Not Started\";\n MachineStatus2[\"Started\"] = \"Started\";\n MachineStatus2[\"Stopped\"] = \"Stopped\";\n return MachineStatus2;\n})(MachineStatus || {});\nvar INIT_STATE = \"__init__\";\nexport {\n INIT_STATE,\n MachineStatus\n};\n","// src/scope.ts\nimport { getActiveElement, getDocument, isActiveElement } from \"@zag-js/dom-query\";\nfunction createScope(props) {\n const getRootNode = () => props.getRootNode?.() ?? document;\n const getDoc = () => getDocument(getRootNode());\n const getWin = () => getDoc().defaultView ?? window;\n const getActiveElementFn = () => getActiveElement(getRootNode());\n const getById = (id) => getRootNode().getElementById(id);\n return {\n ...props,\n getRootNode,\n getDoc,\n getWin,\n getActiveElement: getActiveElementFn,\n isActiveElement,\n getById\n };\n}\nexport {\n createScope\n};\n","// src/frame-utils.ts\nfunction getWindowFrames(win) {\n const frames = {\n each(cb) {\n for (let i = 0; i < win.frames?.length; i += 1) {\n const frame = win.frames[i];\n if (frame) cb(frame);\n }\n },\n addEventListener(event, listener, options) {\n frames.each((frame) => {\n try {\n frame.document.addEventListener(event, listener, options);\n } catch {\n }\n });\n return () => {\n try {\n frames.removeEventListener(event, listener, options);\n } catch {\n }\n };\n },\n removeEventListener(event, listener, options) {\n frames.each((frame) => {\n try {\n frame.document.removeEventListener(event, listener, options);\n } catch {\n }\n });\n }\n };\n return frames;\n}\nfunction getParentWindow(win) {\n const parent = win.frameElement != null ? win.parent : null;\n return {\n addEventListener: (event, listener, options) => {\n try {\n parent?.addEventListener(event, listener, options);\n } catch {\n }\n return () => {\n try {\n parent?.removeEventListener(event, listener, options);\n } catch {\n }\n };\n },\n removeEventListener: (event, listener, options) => {\n try {\n parent?.removeEventListener(event, listener, options);\n } catch {\n }\n }\n };\n}\nexport {\n getParentWindow,\n getWindowFrames\n};\n","// src/index.ts\nimport { addDomEvent, isContextMenuEvent, isShadowRoot, isTouchDevice } from \"@zag-js/dom-query\";\nimport {\n contains,\n getDocument,\n getEventTarget,\n getNearestOverflowAncestor,\n getWindow,\n isControlledElement,\n isFocusable,\n isHTMLElement,\n raf\n} from \"@zag-js/dom-query\";\nimport { callAll } from \"@zag-js/utils\";\nimport { getParentWindow, getWindowFrames } from \"./frame-utils.mjs\";\nvar POINTER_OUTSIDE_EVENT = \"pointerdown.outside\";\nvar FOCUS_OUTSIDE_EVENT = \"focus.outside\";\nfunction isComposedPathFocusable(composedPath) {\n for (const node of composedPath) {\n if (isHTMLElement(node) && isFocusable(node)) return true;\n }\n return false;\n}\nvar isPointerEvent = (event) => \"clientY\" in event;\nfunction isEventPointWithin(node, event) {\n if (!isPointerEvent(event) || !node) return false;\n const rect = node.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return false;\n return rect.top <= event.clientY && event.clientY <= rect.top + rect.height && rect.left <= event.clientX && event.clientX <= rect.left + rect.width;\n}\nfunction isPointInRect(rect, point) {\n return rect.y <= point.y && point.y <= rect.y + rect.height && rect.x <= point.x && point.x <= rect.x + rect.width;\n}\nfunction isEventWithinScrollbar(event, ancestor) {\n if (!ancestor || !isPointerEvent(event)) return false;\n const isScrollableY = ancestor.scrollHeight > ancestor.clientHeight;\n const onScrollbarY = isScrollableY && event.clientX > ancestor.offsetLeft + ancestor.clientWidth;\n const isScrollableX = ancestor.scrollWidth > ancestor.clientWidth;\n const onScrollbarX = isScrollableX && event.clientY > ancestor.offsetTop + ancestor.clientHeight;\n const rect = {\n x: ancestor.offsetLeft,\n y: ancestor.offsetTop,\n width: ancestor.clientWidth + (isScrollableY ? 16 : 0),\n height: ancestor.clientHeight + (isScrollableX ? 16 : 0)\n };\n const point = {\n x: event.clientX,\n y: event.clientY\n };\n if (!isPointInRect(rect, point)) return false;\n return onScrollbarY || onScrollbarX;\n}\nfunction trackInteractOutsideImpl(node, options) {\n const {\n exclude,\n onFocusOutside,\n onPointerDownOutside,\n onInteractOutside,\n defer,\n followControlledElements = true\n } = options;\n if (!node) return;\n const doc = getDocument(node);\n const win = getWindow(node);\n const frames = getWindowFrames(win);\n const parentWin = getParentWindow(win);\n function isEventOutside(event, target) {\n if (!isHTMLElement(target)) return false;\n if (!target.isConnected) return false;\n if (contains(node, target)) return false;\n if (isEventPointWithin(node, event)) return false;\n if (followControlledElements && isControlledElement(node, target)) return false;\n const triggerEl = doc.querySelector(`[aria-controls=\"${node.id}\"]`);\n if (triggerEl) {\n const triggerAncestor = getNearestOverflowAncestor(triggerEl);\n if (isEventWithinScrollbar(event, triggerAncestor)) return false;\n }\n const nodeAncestor = getNearestOverflowAncestor(node);\n if (isEventWithinScrollbar(event, nodeAncestor)) return false;\n return !exclude?.(target);\n }\n const pointerdownCleanups = /* @__PURE__ */ new Set();\n const isInShadowRoot = isShadowRoot(node?.getRootNode());\n let isPointerDown = false;\n function onPointerDown(event) {\n isPointerDown = true;\n const onPointerUp = () => {\n isPointerDown = false;\n };\n doc.addEventListener(\"pointerup\", onPointerUp, { once: true });\n win.addEventListener(\"pointerup\", onPointerUp, { once: true });\n function handler(clickEvent) {\n const func = defer && !isTouchDevice() ? raf : (v) => v();\n const evt = clickEvent ?? event;\n const composedPath = evt?.composedPath?.() ?? [evt?.target];\n func(() => {\n const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n if (!node || !isEventOutside(event, target)) return;\n if (onPointerDownOutside || onInteractOutside) {\n const handler2 = callAll(onPointerDownOutside, onInteractOutside);\n node.addEventListener(POINTER_OUTSIDE_EVENT, handler2, { once: true });\n }\n fireCustomEvent(node, POINTER_OUTSIDE_EVENT, {\n bubbles: false,\n cancelable: true,\n detail: {\n originalEvent: evt,\n contextmenu: isContextMenuEvent(evt),\n focusable: isComposedPathFocusable(composedPath),\n target\n }\n });\n });\n }\n if (event.pointerType === \"touch\") {\n pointerdownCleanups.forEach((fn) => fn());\n pointerdownCleanups.add(addDomEvent(doc, \"click\", handler, { once: true }));\n pointerdownCleanups.add(parentWin.addEventListener(\"click\", handler, { once: true }));\n pointerdownCleanups.add(frames.addEventListener(\"click\", handler, { once: true }));\n } else {\n handler();\n }\n }\n const cleanups = /* @__PURE__ */ new Set();\n const timer = setTimeout(() => {\n cleanups.add(addDomEvent(doc, \"pointerdown\", onPointerDown, true));\n cleanups.add(parentWin.addEventListener(\"pointerdown\", onPointerDown, true));\n cleanups.add(frames.addEventListener(\"pointerdown\", onPointerDown, true));\n }, 0);\n function onFocusin(event) {\n if (isPointerDown) return;\n const func = defer ? raf : (v) => v();\n func(() => {\n const composedPath = event?.composedPath?.() ?? [event?.target];\n const target = isInShadowRoot ? composedPath[0] : getEventTarget(event);\n if (!node || !isEventOutside(event, target)) return;\n if (onFocusOutside || onInteractOutside) {\n const handler = callAll(onFocusOutside, onInteractOutside);\n node.addEventListener(FOCUS_OUTSIDE_EVENT, handler, { once: true });\n }\n fireCustomEvent(node, FOCUS_OUTSIDE_EVENT, {\n bubbles: false,\n cancelable: true,\n detail: {\n originalEvent: event,\n contextmenu: false,\n focusable: isFocusable(target),\n target\n }\n });\n });\n }\n if (!isTouchDevice()) {\n cleanups.add(addDomEvent(doc, \"focusin\", onFocusin, true));\n cleanups.add(parentWin.addEventListener(\"focusin\", onFocusin, true));\n cleanups.add(frames.addEventListener(\"focusin\", onFocusin, true));\n }\n return () => {\n clearTimeout(timer);\n pointerdownCleanups.forEach((fn) => fn());\n cleanups.forEach((fn) => fn());\n };\n}\nfunction trackInteractOutside(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = typeof nodeOrFn === \"function\" ? nodeOrFn() : nodeOrFn;\n cleanups.push(trackInteractOutsideImpl(node, options));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nfunction fireCustomEvent(el, type, init) {\n const win = el.ownerDocument.defaultView || window;\n const event = new win.CustomEvent(type, init);\n return el.dispatchEvent(event);\n}\nexport {\n trackInteractOutside\n};\n","// src/escape-keydown.ts\nimport { addDomEvent, getDocument } from \"@zag-js/dom-query\";\nfunction trackEscapeKeydown(node, fn) {\n const handleKeyDown = (event) => {\n if (event.key !== \"Escape\") return;\n if (event.isComposing) return;\n fn?.(event);\n };\n return addDomEvent(getDocument(node), \"keydown\", handleKeyDown, { capture: true });\n}\nexport {\n trackEscapeKeydown\n};\n","// src/layer-stack.ts\nimport { contains, nextTick, getComputedStyle } from \"@zag-js/dom-query\";\nvar LAYER_REQUEST_DISMISS_EVENT = \"layer:request-dismiss\";\nvar layerStack = {\n layers: [],\n branches: [],\n recentlyRemoved: /* @__PURE__ */ new Set(),\n count() {\n return this.layers.length;\n },\n pointerBlockingLayers() {\n return this.layers.filter((layer) => layer.pointerBlocking);\n },\n topMostPointerBlockingLayer() {\n return [...this.pointerBlockingLayers()].slice(-1)[0];\n },\n hasPointerBlockingLayer() {\n return this.pointerBlockingLayers().length > 0;\n },\n isBelowPointerBlockingLayer(node) {\n const index = this.indexOf(node);\n const highestBlockingIndex = this.topMostPointerBlockingLayer() ? this.indexOf(this.topMostPointerBlockingLayer()?.node) : -1;\n return index < highestBlockingIndex;\n },\n isTopMost(node) {\n const layer = this.layers[this.count() - 1];\n return layer?.node === node;\n },\n getNestedLayers(node) {\n return Array.from(this.layers).slice(this.indexOf(node) + 1);\n },\n getLayersByType(type) {\n return this.layers.filter((layer) => layer.type === type);\n },\n getNestedLayersByType(node, type) {\n const index = this.indexOf(node);\n if (index === -1) return [];\n return this.layers.slice(index + 1).filter((layer) => layer.type === type);\n },\n getParentLayerOfType(node, type) {\n const index = this.indexOf(node);\n if (index <= 0) return void 0;\n return this.layers.slice(0, index).reverse().find((layer) => layer.type === type);\n },\n countNestedLayersOfType(node, type) {\n return this.getNestedLayersByType(node, type).length;\n },\n isInNestedLayer(node, target) {\n const inNested = this.getNestedLayers(node).some((layer) => contains(layer.node, target));\n if (inNested) return true;\n if (this.recentlyRemoved.size > 0) return true;\n return false;\n },\n isInBranch(target) {\n return Array.from(this.branches).some((branch) => contains(branch, target));\n },\n add(layer) {\n const existingIndex = this.indexOf(layer.node);\n if (existingIndex !== -1) {\n this.layers.splice(existingIndex, 1);\n }\n this.layers.push(layer);\n this.syncLayers();\n },\n addBranch(node) {\n this.branches.push(node);\n },\n remove(node) {\n const index = this.indexOf(node);\n if (index < 0) return;\n const layer = this.layers[index];\n layer.styleTargets?.forEach((getTarget) => {\n const target = getTarget();\n if (target) {\n clearLayerStyleMirror(target);\n }\n });\n this.recentlyRemoved.add(node);\n nextTick(() => this.recentlyRemoved.delete(node));\n if (index < this.count() - 1) {\n const _layers = this.getNestedLayers(node);\n _layers.forEach((layer2) => layerStack.dismiss(layer2.node, node));\n }\n this.layers.splice(index, 1);\n this.syncLayers();\n },\n removeBranch(node) {\n const index = this.branches.indexOf(node);\n if (index >= 0) this.branches.splice(index, 1);\n },\n syncLayers() {\n this.layers.forEach((layer, index) => {\n applyLayerStackMetadata(layer, index, layer.node);\n layer.styleTargets?.forEach((getTarget) => {\n const target = getTarget();\n if (!target || target === layer.node) return;\n applyLayerStackMetadata(layer, index, target);\n const { zIndex } = getComputedStyle(layer.node);\n target.style.setProperty(\"--z-index\", zIndex);\n });\n });\n },\n indexOf(node) {\n return this.layers.findIndex((layer) => layer.node === node);\n },\n dismiss(node, parent) {\n const index = this.indexOf(node);\n if (index === -1) return;\n const layer = this.layers[index];\n addListenerOnce(node, LAYER_REQUEST_DISMISS_EVENT, (event) => {\n layer.requestDismiss?.(event);\n if (!event.defaultPrevented) {\n layer?.dismiss();\n }\n });\n fireCustomEvent(node, LAYER_REQUEST_DISMISS_EVENT, {\n originalLayer: node,\n targetLayer: parent,\n originalIndex: index,\n targetIndex: parent ? this.indexOf(parent) : -1\n });\n this.syncLayers();\n },\n clear() {\n this.remove(this.layers[0].node);\n }\n};\nfunction applyLayerStackMetadata(layer, index, el) {\n el.style.setProperty(\"--layer-index\", `${index}`);\n el.removeAttribute(\"data-nested\");\n el.removeAttribute(\"data-has-nested\");\n const parentOfSameType = layerStack.getParentLayerOfType(layer.node, layer.type);\n if (parentOfSameType) {\n el.setAttribute(\"data-nested\", layer.type);\n }\n const nestedCount = layerStack.countNestedLayersOfType(layer.node, layer.type);\n if (nestedCount > 0) {\n el.setAttribute(\"data-has-nested\", layer.type);\n }\n el.style.setProperty(\"--nested-layer-count\", `${nestedCount}`);\n}\nfunction clearLayerStyleMirror(el) {\n el.style.removeProperty(\"--layer-index\");\n el.style.removeProperty(\"--nested-layer-count\");\n el.style.removeProperty(\"--z-index\");\n el.removeAttribute(\"data-nested\");\n el.removeAttribute(\"data-has-nested\");\n}\nfunction fireCustomEvent(el, type, detail) {\n const win = el.ownerDocument.defaultView || window;\n const event = new win.CustomEvent(type, { cancelable: true, bubbles: true, detail });\n return el.dispatchEvent(event);\n}\nfunction addListenerOnce(el, type, callback) {\n el.addEventListener(type, callback, { once: true });\n}\nexport {\n layerStack\n};\n","// src/pointer-event-outside.ts\nimport { getDocument, getWindow, isHTMLElement, setStyle, waitForElement } from \"@zag-js/dom-query\";\nimport { layerStack } from \"./layer-stack.mjs\";\nvar originalBodyPointerEvents = /* @__PURE__ */ new WeakMap();\nvar layerObservers = /* @__PURE__ */ new WeakMap();\nfunction getDesiredPointerEvents(node) {\n return layerStack.isBelowPointerBlockingLayer(node) ? \"none\" : \"auto\";\n}\nfunction applyPointerEvents(node) {\n const desired = getDesiredPointerEvents(node);\n if (node.style.pointerEvents !== desired) {\n node.style.pointerEvents = desired;\n }\n}\nfunction ensurePointerEventsObserver(node) {\n if (layerObservers.has(node)) return;\n const win = getWindow(node);\n if (typeof win.MutationObserver === \"undefined\") return;\n const observer = new win.MutationObserver(() => {\n if (!layerObservers.has(node)) return;\n applyPointerEvents(node);\n });\n observer.observe(node, { attributes: true, attributeFilter: [\"style\"] });\n layerObservers.set(node, observer);\n}\nfunction assignPointerEventToLayers() {\n layerStack.layers.forEach(({ node }) => {\n applyPointerEvents(node);\n ensurePointerEventsObserver(node);\n });\n}\nfunction clearPointerEvent(node) {\n const observer = layerObservers.get(node);\n if (observer) {\n observer.disconnect();\n layerObservers.delete(node);\n }\n node.style.pointerEvents = \"\";\n}\nfunction disablePointerEventsOutside(node, persistentElements) {\n const doc = getDocument(node);\n const cleanups = [];\n if (layerStack.hasPointerBlockingLayer() && !doc.body.hasAttribute(\"data-inert\")) {\n originalBodyPointerEvents.set(doc.body, doc.body.style.pointerEvents);\n queueMicrotask(() => {\n const body = doc.body;\n if (!body) return;\n body.style.pointerEvents = \"none\";\n body.setAttribute(\"data-inert\", \"\");\n });\n }\n persistentElements?.forEach((el) => {\n const [promise, abort] = waitForElement(\n () => {\n const node2 = el();\n return isHTMLElement(node2) ? node2 : null;\n },\n { timeout: 1e3 }\n );\n promise.then((el2) => cleanups.push(setStyle(el2, { pointerEvents: \"auto\" })));\n cleanups.push(abort);\n });\n return () => {\n if (layerStack.hasPointerBlockingLayer()) return;\n queueMicrotask(() => {\n const body = doc.body;\n if (!body) return;\n const original = originalBodyPointerEvents.get(body);\n if (original !== void 0) {\n body.style.pointerEvents = original;\n originalBodyPointerEvents.delete(body);\n }\n body.removeAttribute(\"data-inert\");\n if (body.style.length === 0) body.removeAttribute(\"style\");\n });\n cleanups.forEach((fn) => fn());\n };\n}\nexport {\n assignPointerEventToLayers,\n clearPointerEvent,\n disablePointerEventsOutside\n};\n","// src/dismissable-layer.ts\nimport { contains, getEventTarget, isHTMLElement, raf } from \"@zag-js/dom-query\";\nimport {\n trackInteractOutside\n} from \"@zag-js/interact-outside\";\nimport { isFunction, warn } from \"@zag-js/utils\";\nimport { trackEscapeKeydown } from \"./escape-keydown.mjs\";\nimport { layerStack } from \"./layer-stack.mjs\";\nimport { assignPointerEventToLayers, clearPointerEvent, disablePointerEventsOutside } from \"./pointer-event-outside.mjs\";\nfunction trackDismissableElementImpl(node, options) {\n const { warnOnMissingNode = true } = options;\n if (warnOnMissingNode && !node) {\n warn(\"[@zag-js/dismissable] node is `null` or `undefined`\");\n return;\n }\n if (!node) {\n return;\n }\n const {\n onDismiss,\n onRequestDismiss,\n pointerBlocking,\n exclude: excludeContainers,\n debug,\n type = \"dialog\",\n layerStyleTargets\n } = options;\n const layer = {\n dismiss: onDismiss,\n node,\n type,\n pointerBlocking,\n requestDismiss: onRequestDismiss,\n styleTargets: layerStyleTargets\n };\n layerStack.add(layer);\n assignPointerEventToLayers();\n function onPointerDownOutside(event) {\n const target = getEventTarget(event.detail.originalEvent);\n if (layerStack.isBelowPointerBlockingLayer(node) || layerStack.isInBranch(target)) return;\n options.onPointerDownOutside?.(event);\n options.onInteractOutside?.(event);\n if (event.defaultPrevented) return;\n if (debug) {\n console.log(\"onPointerDownOutside:\", event.detail.originalEvent);\n }\n onDismiss?.();\n }\n function onFocusOutside(event) {\n const target = getEventTarget(event.detail.originalEvent);\n if (layerStack.isInBranch(target)) return;\n options.onFocusOutside?.(event);\n options.onInteractOutside?.(event);\n if (event.defaultPrevented) return;\n if (debug) {\n console.log(\"onFocusOutside:\", event.detail.originalEvent);\n }\n onDismiss?.();\n }\n function onEscapeKeyDown(event) {\n if (!layerStack.isTopMost(node)) return;\n options.onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }\n function exclude(target) {\n if (!node) return false;\n const containers = typeof excludeContainers === \"function\" ? excludeContainers() : excludeContainers;\n const _containers = Array.isArray(containers) ? containers : [containers];\n const persistentElements = options.persistentElements?.map((fn) => fn()).filter(isHTMLElement);\n if (persistentElements) _containers.push(...persistentElements);\n return _containers.some((node2) => contains(node2, target)) || layerStack.isInNestedLayer(node, target);\n }\n const cleanups = [\n pointerBlocking ? disablePointerEventsOutside(node, options.persistentElements) : void 0,\n trackEscapeKeydown(node, onEscapeKeyDown),\n trackInteractOutside(node, { exclude, onFocusOutside, onPointerDownOutside, defer: options.defer })\n ];\n return () => {\n layerStack.remove(node);\n assignPointerEventToLayers();\n clearPointerEvent(node);\n cleanups.forEach((fn) => fn?.());\n };\n}\nfunction trackDismissableElement(nodeOrFn, options) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n cleanups.push(trackDismissableElementImpl(node, options));\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nfunction trackDismissableBranch(nodeOrFn, options = {}) {\n const { defer } = options;\n const func = defer ? raf : (v) => v();\n const cleanups = [];\n cleanups.push(\n func(() => {\n const node = isFunction(nodeOrFn) ? nodeOrFn() : nodeOrFn;\n if (!node) {\n warn(\"[@zag-js/dismissable] branch node is `null` or `undefined`\");\n return;\n }\n layerStack.addBranch(node);\n cleanups.push(() => {\n layerStack.removeBranch(node);\n });\n })\n );\n return () => {\n cleanups.forEach((fn) => fn?.());\n };\n}\nexport {\n trackDismissableBranch,\n trackDismissableElement\n};\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\nexport {\n __publicField\n};\n","import {\n __publicField\n} from \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/focus-trap.ts\nimport {\n addDomEvent,\n getActiveElement,\n getControlledElements,\n getDocument,\n getEventTarget,\n getFocusables,\n getTabbables,\n getTabIndex,\n hasControllerElements,\n isControlledByExpandedController,\n isControlledElement,\n isDocument,\n isFocusable,\n isTabbable\n} from \"@zag-js/dom-query\";\nvar activeFocusTraps = {\n activateTrap(trapStack, trap) {\n if (trapStack.length > 0) {\n const activeTrap = trapStack[trapStack.length - 1];\n if (activeTrap !== trap) {\n activeTrap.pause();\n }\n }\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex === -1) {\n trapStack.push(trap);\n } else {\n trapStack.splice(trapIndex, 1);\n trapStack.push(trap);\n }\n },\n deactivateTrap(trapStack, trap) {\n const trapIndex = trapStack.indexOf(trap);\n if (trapIndex !== -1) {\n trapStack.splice(trapIndex, 1);\n }\n if (trapStack.length > 0) {\n trapStack[trapStack.length - 1].unpause();\n }\n }\n};\nvar sharedTrapStack = [];\nvar FocusTrap = class {\n constructor(elements, options) {\n __publicField(this, \"trapStack\");\n __publicField(this, \"config\");\n __publicField(this, \"doc\");\n __publicField(this, \"state\", {\n containers: [],\n containerGroups: [],\n tabbableGroups: [],\n nodeFocusedBeforeActivation: null,\n mostRecentlyFocusedNode: null,\n active: false,\n paused: false,\n delayInitialFocusTimer: void 0,\n recentNavEvent: void 0\n });\n // Track portal containers that contain controlled elements\n __publicField(this, \"portalContainers\", /* @__PURE__ */ new Set());\n __publicField(this, \"listenerCleanups\", []);\n __publicField(this, \"handleFocus\", (event) => {\n const target = getEventTarget(event);\n const targetContained = this.findContainerIndex(target, event) >= 0;\n if (targetContained || isDocument(target)) {\n if (targetContained) {\n this.state.mostRecentlyFocusedNode = target;\n }\n } else {\n event.stopImmediatePropagation();\n let nextNode;\n let navAcrossContainers = true;\n if (this.state.mostRecentlyFocusedNode) {\n if (getTabIndex(this.state.mostRecentlyFocusedNode) > 0) {\n const mruContainerIdx = this.findContainerIndex(this.state.mostRecentlyFocusedNode);\n const { tabbableNodes } = this.state.containerGroups[mruContainerIdx];\n if (tabbableNodes.length > 0) {\n const mruTabIdx = tabbableNodes.findIndex((node) => node === this.state.mostRecentlyFocusedNode);\n if (mruTabIdx >= 0) {\n if (this.config.isKeyForward(this.state.recentNavEvent)) {\n if (mruTabIdx + 1 < tabbableNodes.length) {\n nextNode = tabbableNodes[mruTabIdx + 1];\n navAcrossContainers = false;\n }\n } else {\n if (mruTabIdx - 1 >= 0) {\n nextNode = tabbableNodes[mruTabIdx - 1];\n navAcrossContainers = false;\n }\n }\n }\n }\n } else {\n if (!this.state.containerGroups.some((g) => g.tabbableNodes.some((n) => getTabIndex(n) > 0))) {\n navAcrossContainers = false;\n }\n }\n } else {\n navAcrossContainers = false;\n }\n if (navAcrossContainers) {\n nextNode = this.findNextNavNode({\n // move FROM the MRU node, not event-related node (which will be the node that is\n // outside the trap causing the focus escape we're trying to fix)\n target: this.state.mostRecentlyFocusedNode,\n isBackward: this.config.isKeyBackward(this.state.recentNavEvent)\n });\n }\n if (nextNode) {\n this.tryFocus(nextNode);\n } else {\n this.tryFocus(this.state.mostRecentlyFocusedNode || this.getInitialFocusNode());\n }\n }\n this.state.recentNavEvent = void 0;\n });\n __publicField(this, \"handlePointerDown\", (event) => {\n const target = getEventTarget(event);\n if (this.findContainerIndex(target, event) >= 0) {\n return;\n }\n if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n this.deactivate({ returnFocus: this.config.returnFocusOnDeactivate });\n return;\n }\n if (valueOrHandler(this.config.allowOutsideClick, event)) {\n return;\n }\n event.preventDefault();\n });\n __publicField(this, \"handleClick\", (event) => {\n const target = getEventTarget(event);\n if (this.findContainerIndex(target, event) >= 0) {\n return;\n }\n if (valueOrHandler(this.config.clickOutsideDeactivates, event)) {\n return;\n }\n if (valueOrHandler(this.config.allowOutsideClick, event)) {\n return;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n });\n __publicField(this, \"handleTabKey\", (event) => {\n if (this.config.isKeyForward(event) || this.config.isKeyBackward(event)) {\n this.state.recentNavEvent = event;\n const isBackward = this.config.isKeyBackward(event);\n const destinationNode = this.findNextNavNode({ event, isBackward });\n if (!destinationNode) return;\n if (isTabEvent(event)) {\n event.preventDefault();\n }\n this.tryFocus(destinationNode);\n }\n });\n __publicField(this, \"handleEscapeKey\", (event) => {\n if (isEscapeEvent(event) && valueOrHandler(this.config.escapeDeactivates, event) !== false) {\n event.preventDefault();\n this.deactivate();\n }\n });\n __publicField(this, \"_mutationObserver\");\n __publicField(this, \"setupMutationObserver\", () => {\n const win = this.doc.defaultView || window;\n this._mutationObserver = new win.MutationObserver((mutations) => {\n const isFocusedNodeRemoved = mutations.some((mutation) => {\n const removedNodes = Array.from(mutation.removedNodes);\n return removedNodes.some((node) => node === this.state.mostRecentlyFocusedNode);\n });\n if (isFocusedNodeRemoved) {\n this.tryFocus(this.getInitialFocusNode());\n }\n const hasControlledChanges = mutations.some((mutation) => {\n if (mutation.type === \"attributes\" && (mutation.attributeName === \"aria-controls\" || mutation.attributeName === \"aria-expanded\")) {\n return true;\n }\n if (mutation.type === \"childList\" && mutation.addedNodes.length > 0) {\n return Array.from(mutation.addedNodes).some((node) => {\n if (node.nodeType !== Node.ELEMENT_NODE) return false;\n const element = node;\n if (hasControllerElements(element)) {\n return true;\n }\n if (element.id && !this.state.containers.some((c) => c.contains(element))) {\n return isControlledByExpandedController(element);\n }\n return false;\n });\n }\n return false;\n });\n if (hasControlledChanges && this.state.active && !this.state.paused) {\n this.updateTabbableNodes();\n this.updatePortalContainers();\n }\n });\n });\n __publicField(this, \"updateObservedNodes\", () => {\n this._mutationObserver?.disconnect();\n if (this.state.active && !this.state.paused) {\n this.state.containers.map((container) => {\n this._mutationObserver?.observe(container, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n });\n });\n this.portalContainers.forEach((portalContainer) => {\n this.observePortalContainer(portalContainer);\n });\n }\n });\n __publicField(this, \"getInitialFocusNode\", () => {\n let node = this.getNodeForOption(\"initialFocus\", { hasFallback: true });\n if (node === false) {\n return false;\n }\n if (node === void 0 || node && !isFocusable(node)) {\n const activeElement = getActiveElement(this.doc);\n if (activeElement && this.findContainerIndex(activeElement) >= 0) {\n node = activeElement;\n } else {\n const firstTabbableGroup = this.state.tabbableGroups[0];\n const firstTabbableNode = firstTabbableGroup && firstTabbableGroup.firstTabbableNode;\n node = firstTabbableNode || this.getNodeForOption(\"fallbackFocus\");\n }\n } else if (node === null) {\n node = this.getNodeForOption(\"fallbackFocus\");\n }\n if (!node) {\n throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n }\n if (!node.isConnected) {\n node = this.getNodeForOption(\"fallbackFocus\");\n }\n if (!node || !node.isConnected) {\n throw new Error(\"Your focus-trap needs to have at least one focusable element\");\n }\n return node;\n });\n __publicField(this, \"tryFocus\", (node) => {\n if (node === false) return;\n if (node === getActiveElement(this.doc)) return;\n if (!node || !node.focus) {\n this.tryFocus(this.getInitialFocusNode());\n return;\n }\n node.focus({ preventScroll: !!this.config.preventScroll });\n this.state.mostRecentlyFocusedNode = node;\n if (isSelectableInput(node)) {\n node.select();\n }\n });\n __publicField(this, \"deactivate\", (deactivateOptions) => {\n if (!this.state.active) return this;\n const options = {\n onDeactivate: this.config.onDeactivate,\n onPostDeactivate: this.config.onPostDeactivate,\n checkCanReturnFocus: this.config.checkCanReturnFocus,\n ...deactivateOptions\n };\n clearTimeout(this.state.delayInitialFocusTimer);\n this.state.delayInitialFocusTimer = void 0;\n this.removeListeners();\n this.state.active = false;\n this.state.paused = false;\n this.updateObservedNodes();\n activeFocusTraps.deactivateTrap(this.trapStack, this);\n this.portalContainers.clear();\n const onDeactivate = this.getOption(options, \"onDeactivate\");\n const onPostDeactivate = this.getOption(options, \"onPostDeactivate\");\n const checkCanReturnFocus = this.getOption(options, \"checkCanReturnFocus\");\n const returnFocus = this.getOption(options, \"returnFocus\", \"returnFocusOnDeactivate\");\n onDeactivate?.();\n const finishDeactivation = () => {\n delay(() => {\n if (returnFocus) {\n const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n this.tryFocus(returnFocusNode);\n }\n onPostDeactivate?.();\n });\n };\n if (returnFocus && checkCanReturnFocus) {\n const returnFocusNode = this.getReturnFocusNode(this.state.nodeFocusedBeforeActivation);\n checkCanReturnFocus(returnFocusNode).then(finishDeactivation, finishDeactivation);\n return this;\n }\n finishDeactivation();\n return this;\n });\n __publicField(this, \"pause\", (pauseOptions) => {\n if (this.state.paused || !this.state.active) {\n return this;\n }\n const onPause = this.getOption(pauseOptions, \"onPause\");\n const onPostPause = this.getOption(pauseOptions, \"onPostPause\");\n this.state.paused = true;\n onPause?.();\n this.removeListeners();\n this.updateObservedNodes();\n onPostPause?.();\n return this;\n });\n __publicField(this, \"unpause\", (unpauseOptions) => {\n if (!this.state.paused || !this.state.active) {\n return this;\n }\n const onUnpause = this.getOption(unpauseOptions, \"onUnpause\");\n const onPostUnpause = this.getOption(unpauseOptions, \"onPostUnpause\");\n this.state.paused = false;\n onUnpause?.();\n this.updateTabbableNodes();\n this.addListeners();\n this.updateObservedNodes();\n onPostUnpause?.();\n return this;\n });\n __publicField(this, \"updateContainerElements\", (containerElements) => {\n this.state.containers = Array.isArray(containerElements) ? containerElements.filter(Boolean) : [containerElements].filter(Boolean);\n if (this.state.active) {\n this.updateTabbableNodes();\n }\n this.updateObservedNodes();\n return this;\n });\n __publicField(this, \"getReturnFocusNode\", (previousActiveElement) => {\n const node = this.getNodeForOption(\"setReturnFocus\", {\n params: [previousActiveElement]\n });\n return node ? node : node === false ? false : previousActiveElement;\n });\n __publicField(this, \"getOption\", (configOverrideOptions, optionName, configOptionName) => {\n return configOverrideOptions && configOverrideOptions[optionName] !== void 0 ? configOverrideOptions[optionName] : (\n // @ts-expect-error\n this.config[configOptionName || optionName]\n );\n });\n __publicField(this, \"getNodeForOption\", (optionName, { hasFallback = false, params = [] } = {}) => {\n let optionValue = this.config[optionName];\n if (typeof optionValue === \"function\") optionValue = optionValue(...params);\n if (optionValue === true) optionValue = void 0;\n if (!optionValue) {\n if (optionValue === void 0 || optionValue === false) {\n return optionValue;\n }\n throw new Error(`\\`${optionName}\\` was specified but was not a node, or did not return a node`);\n }\n let node = optionValue;\n if (typeof optionValue === \"string\") {\n try {\n node = this.doc.querySelector(optionValue);\n } catch (err) {\n throw new Error(`\\`${optionName}\\` appears to be an invalid selector; error=\"${err.message}\"`);\n }\n if (!node) {\n if (!hasFallback) {\n throw new Error(`\\`${optionName}\\` as selector refers to no known node`);\n }\n }\n }\n return node;\n });\n __publicField(this, \"findNextNavNode\", (opts) => {\n const { event, isBackward = false } = opts;\n const target = opts.target || getEventTarget(event);\n this.updateTabbableNodes();\n let destinationNode = null;\n if (this.state.tabbableGroups.length > 0) {\n const containerIndex = this.findContainerIndex(target, event);\n const containerGroup = containerIndex >= 0 ? this.state.containerGroups[containerIndex] : void 0;\n if (containerIndex < 0) {\n if (isBackward) {\n destinationNode = this.state.tabbableGroups[this.state.tabbableGroups.length - 1].lastTabbableNode;\n } else {\n destinationNode = this.state.tabbableGroups[0].firstTabbableNode;\n }\n } else if (isBackward) {\n let startOfGroupIndex = this.state.tabbableGroups.findIndex(\n ({ firstTabbableNode }) => target === firstTabbableNode\n );\n if (startOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target, false))) {\n startOfGroupIndex = containerIndex;\n }\n if (startOfGroupIndex >= 0) {\n const destinationGroupIndex = startOfGroupIndex === 0 ? this.state.tabbableGroups.length - 1 : startOfGroupIndex - 1;\n const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.lastTabbableNode : destinationGroup.lastDomTabbableNode;\n } else if (!isTabEvent(event)) {\n destinationNode = containerGroup?.nextTabbableNode(target, false);\n }\n } else {\n let lastOfGroupIndex = this.state.tabbableGroups.findIndex(\n ({ lastTabbableNode }) => target === lastTabbableNode\n );\n if (lastOfGroupIndex < 0 && (containerGroup?.container === target || isFocusable(target) && !isTabbable(target) && !containerGroup?.nextTabbableNode(target))) {\n lastOfGroupIndex = containerIndex;\n }\n if (lastOfGroupIndex >= 0) {\n const destinationGroupIndex = lastOfGroupIndex === this.state.tabbableGroups.length - 1 ? 0 : lastOfGroupIndex + 1;\n const destinationGroup = this.state.tabbableGroups[destinationGroupIndex];\n destinationNode = getTabIndex(target) >= 0 ? destinationGroup.firstTabbableNode : destinationGroup.firstDomTabbableNode;\n } else if (!isTabEvent(event)) {\n destinationNode = containerGroup?.nextTabbableNode(target);\n }\n }\n } else {\n destinationNode = this.getNodeForOption(\"fallbackFocus\");\n }\n return destinationNode;\n });\n this.trapStack = options.trapStack || sharedTrapStack;\n const config = {\n returnFocusOnDeactivate: true,\n escapeDeactivates: true,\n delayInitialFocus: true,\n followControlledElements: true,\n isKeyForward,\n isKeyBackward,\n ...options\n };\n this.doc = config.document || getDocument(Array.isArray(elements) ? elements[0] : elements);\n this.config = config;\n this.updateContainerElements(elements);\n this.setupMutationObserver();\n }\n addPortalContainer(controlledElement) {\n const portalContainer = controlledElement.parentElement;\n if (portalContainer && !this.portalContainers.has(portalContainer)) {\n this.portalContainers.add(portalContainer);\n if (this.state.active && !this.state.paused) {\n this.observePortalContainer(portalContainer);\n }\n }\n }\n observePortalContainer(portalContainer) {\n this._mutationObserver?.observe(portalContainer, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"aria-controls\", \"aria-expanded\"]\n });\n }\n updatePortalContainers() {\n if (!this.config.followControlledElements) return;\n this.state.containers.forEach((container) => {\n const controlledElements = getControlledElements(container);\n controlledElements.forEach((controlledElement) => {\n this.addPortalContainer(controlledElement);\n });\n });\n }\n get active() {\n return this.state.active;\n }\n get paused() {\n return this.state.paused;\n }\n findContainerIndex(element, event) {\n const composedPath = typeof event?.composedPath === \"function\" ? event.composedPath() : void 0;\n return this.state.containerGroups.findIndex(\n ({ container, tabbableNodes }) => container.contains(element) || composedPath?.includes(container) || tabbableNodes.find((node) => node === element) || this.isControlledElement(container, element)\n );\n }\n isControlledElement(container, element) {\n if (!this.config.followControlledElements) return false;\n return isControlledElement(container, element);\n }\n updateTabbableNodes() {\n this.state.containerGroups = this.state.containers.map((container) => {\n const tabbableNodes = getTabbables(container, { getShadowRoot: this.config.getShadowRoot });\n const focusableNodes = getFocusables(container, { getShadowRoot: this.config.getShadowRoot });\n const firstTabbableNode = tabbableNodes[0];\n const lastTabbableNode = tabbableNodes[tabbableNodes.length - 1];\n const firstDomTabbableNode = firstTabbableNode;\n const lastDomTabbableNode = lastTabbableNode;\n let posTabIndexesFound = false;\n for (let i = 0; i < tabbableNodes.length; i++) {\n if (getTabIndex(tabbableNodes[i]) > 0) {\n posTabIndexesFound = true;\n break;\n }\n }\n function nextTabbableNode(node, forward = true) {\n const nodeIdx = tabbableNodes.indexOf(node);\n if (nodeIdx >= 0) {\n return tabbableNodes[nodeIdx + (forward ? 1 : -1)];\n }\n const focusableIdx = focusableNodes.indexOf(node);\n if (focusableIdx < 0) return void 0;\n if (forward) {\n for (let i = focusableIdx + 1; i < focusableNodes.length; i++) {\n if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n }\n } else {\n for (let i = focusableIdx - 1; i >= 0; i--) {\n if (isTabbable(focusableNodes[i])) return focusableNodes[i];\n }\n }\n return void 0;\n }\n return {\n container,\n tabbableNodes,\n focusableNodes,\n posTabIndexesFound,\n firstTabbableNode,\n lastTabbableNode,\n firstDomTabbableNode,\n lastDomTabbableNode,\n nextTabbableNode\n };\n });\n this.state.tabbableGroups = this.state.containerGroups.filter((group) => group.tabbableNodes.length > 0);\n if (this.state.tabbableGroups.length <= 0 && !this.getNodeForOption(\"fallbackFocus\")) {\n throw new Error(\n \"Your focus-trap must have at least one container with at least one tabbable node in it at all times\"\n );\n }\n if (this.state.containerGroups.find((g) => g.posTabIndexesFound) && this.state.containerGroups.length > 1) {\n throw new Error(\n \"At least one node with a positive tabindex was found in one of your focus-trap's multiple containers. Positive tabindexes are only supported in single-container focus-traps.\"\n );\n }\n }\n addListeners() {\n if (!this.state.active) return;\n activeFocusTraps.activateTrap(this.trapStack, this);\n this.state.delayInitialFocusTimer = this.config.delayInitialFocus ? delay(() => {\n this.tryFocus(this.getInitialFocusNode());\n }) : this.tryFocus(this.getInitialFocusNode());\n this.listenerCleanups.push(\n addDomEvent(this.doc, \"focusin\", this.handleFocus, true),\n addDomEvent(this.doc, \"mousedown\", this.handlePointerDown, { capture: true, passive: false }),\n addDomEvent(this.doc, \"touchstart\", this.handlePointerDown, { capture: true, passive: false }),\n addDomEvent(this.doc, \"click\", this.handleClick, { capture: true, passive: false }),\n addDomEvent(this.doc, \"keydown\", this.handleTabKey, { capture: true, passive: false }),\n addDomEvent(this.doc, \"keydown\", this.handleEscapeKey)\n );\n return this;\n }\n removeListeners() {\n if (!this.state.active) return;\n this.listenerCleanups.forEach((cleanup) => cleanup());\n this.listenerCleanups = [];\n return this;\n }\n activate(activateOptions) {\n if (this.state.active) {\n return this;\n }\n const onActivate = this.getOption(activateOptions, \"onActivate\");\n const onPostActivate = this.getOption(activateOptions, \"onPostActivate\");\n const checkCanFocusTrap = this.getOption(activateOptions, \"checkCanFocusTrap\");\n if (!checkCanFocusTrap) {\n this.updateTabbableNodes();\n }\n this.state.active = true;\n this.state.paused = false;\n this.state.nodeFocusedBeforeActivation = getActiveElement(this.doc);\n onActivate?.();\n const finishActivation = () => {\n if (checkCanFocusTrap) {\n this.updateTabbableNodes();\n }\n this.addListeners();\n this.updateObservedNodes();\n onPostActivate?.();\n };\n if (checkCanFocusTrap) {\n checkCanFocusTrap(this.state.containers.concat()).then(finishActivation, finishActivation);\n return this;\n }\n finishActivation();\n return this;\n }\n};\nvar isKeyboardEvent = (event) => event?.type === \"keydown\";\nvar isTabEvent = (event) => isKeyboardEvent(event) && event?.key === \"Tab\";\nvar isKeyForward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && !e?.shiftKey;\nvar isKeyBackward = (e) => isKeyboardEvent(e) && e.key === \"Tab\" && e?.shiftKey;\nvar valueOrHandler = (value, ...params) => typeof value === \"function\" ? value(...params) : value;\nvar isEscapeEvent = (event) => !event.isComposing && event.key === \"Escape\";\nvar delay = (fn) => setTimeout(fn, 0);\nvar isSelectableInput = (node) => node.localName === \"input\" && \"select\" in node && typeof node.select === \"function\";\nexport {\n FocusTrap\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/index.ts\nimport { getDocument, raf } from \"@zag-js/dom-query\";\nimport { FocusTrap } from \"./focus-trap.mjs\";\nfunction trapFocus(el, options = {}) {\n let trap;\n const cleanup = raf(() => {\n const elements = Array.isArray(el) ? el : [el];\n const resolvedElements = elements.map((e) => typeof e === \"function\" ? e() : e).filter((e) => e != null);\n if (resolvedElements.length === 0) return;\n const primaryEl = resolvedElements[0];\n trap = new FocusTrap(resolvedElements, {\n escapeDeactivates: false,\n allowOutsideClick: true,\n preventScroll: true,\n returnFocusOnDeactivate: true,\n delayInitialFocus: false,\n fallbackFocus: primaryEl,\n ...options,\n document: getDocument(primaryEl)\n });\n try {\n trap.activate();\n } catch {\n }\n });\n return function destroy() {\n trap?.deactivate();\n cleanup();\n };\n}\nexport {\n FocusTrap,\n trapFocus\n};\n","// src/index.ts\nimport { getComputedStyle, isIos, setStyleProperty, setStyle } from \"@zag-js/dom-query\";\nvar LOCK_CLASSNAME = \"data-scroll-lock\";\nvar lockMap = /* @__PURE__ */ new WeakMap();\nfunction getPaddingProperty(documentElement) {\n const documentLeft = documentElement.getBoundingClientRect().left;\n const scrollbarX = Math.round(documentLeft) + documentElement.scrollLeft;\n return scrollbarX ? \"paddingLeft\" : \"paddingRight\";\n}\nfunction hasStableScrollbarGutter(element) {\n const styles = getComputedStyle(element);\n const scrollbarGutter = styles?.scrollbarGutter;\n return scrollbarGutter === \"stable\" || scrollbarGutter?.startsWith(\"stable \") === true;\n}\nfunction applyLock(doc) {\n const win = doc.defaultView ?? window;\n const { documentElement, body } = doc;\n const hasStableGutter = hasStableScrollbarGutter(documentElement) || hasStableScrollbarGutter(body);\n const scrollbarWidth = win.innerWidth - documentElement.clientWidth;\n body.setAttribute(LOCK_CLASSNAME, \"\");\n const setScrollbarWidthProperty = () => setStyleProperty(documentElement, \"--scrollbar-width\", `${scrollbarWidth}px`);\n const paddingProperty = getPaddingProperty(documentElement);\n const setBodyStyle = () => {\n const styles = {\n overflow: \"hidden\"\n };\n if (!hasStableGutter && scrollbarWidth > 0) {\n styles[paddingProperty] = `${scrollbarWidth}px`;\n }\n return setStyle(body, styles);\n };\n const setBodyStyleIOS = () => {\n const { scrollX, scrollY, visualViewport } = win;\n const offsetLeft = visualViewport?.offsetLeft ?? 0;\n const offsetTop = visualViewport?.offsetTop ?? 0;\n const styles = {\n position: \"fixed\",\n overflow: \"hidden\",\n top: `${-(scrollY - Math.floor(offsetTop))}px`,\n left: `${-(scrollX - Math.floor(offsetLeft))}px`,\n right: \"0\"\n };\n if (!hasStableGutter && scrollbarWidth > 0) {\n styles[paddingProperty] = `${scrollbarWidth}px`;\n }\n const restoreStyle = setStyle(body, styles);\n return () => {\n restoreStyle?.();\n win.scrollTo({ left: scrollX, top: scrollY, behavior: \"instant\" });\n };\n };\n const cleanups = [setScrollbarWidthProperty(), isIos() ? setBodyStyleIOS() : setBodyStyle()];\n return () => {\n cleanups.forEach((fn) => fn?.());\n body.removeAttribute(LOCK_CLASSNAME);\n };\n}\nfunction preventBodyScroll(_document) {\n const doc = _document ?? document;\n let state = lockMap.get(doc);\n if (!state) {\n state = { count: 0, cleanup: applyLock(doc) };\n lockMap.set(doc, state);\n }\n state.count++;\n const lockState = state;\n let released = false;\n return () => {\n if (released) return;\n released = true;\n lockState.count--;\n if (lockState.count === 0) {\n lockState.cleanup();\n lockMap.delete(doc);\n }\n };\n}\nexport {\n preventBodyScroll\n};\n","// src/popover.machine.ts\nimport { ariaHidden } from \"@zag-js/aria-hidden\";\nimport { createMachine } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getInitialFocus, proxyTabFocus, raf } from \"@zag-js/dom-query\";\nimport { trapFocus } from \"@zag-js/focus-trap\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { preventBodyScroll } from \"@zag-js/remove-scroll\";\nimport * as dom from \"./popover.dom.mjs\";\nvar machine = createMachine({\n props({ props }) {\n return {\n closeOnInteractOutside: true,\n closeOnEscape: true,\n autoFocus: true,\n modal: false,\n portalled: true,\n restoreFocus: true,\n ...props,\n translations: {\n closeTriggerLabel: \"close\",\n ...props.translations\n },\n positioning: {\n placement: \"bottom\",\n ...props.positioning\n }\n };\n },\n initialState({ prop }) {\n const open = prop(\"open\") || prop(\"defaultOpen\");\n return open ? \"open\" : \"closed\";\n },\n context({ bindable, prop, scope }) {\n return {\n currentPlacement: bindable(() => ({\n defaultValue: void 0\n })),\n renderedElements: bindable(() => ({\n defaultValue: { title: true, description: true }\n })),\n triggerValue: bindable(() => ({\n defaultValue: prop(\"defaultTriggerValue\") ?? null,\n value: prop(\"triggerValue\"),\n onChange(value) {\n const onTriggerValueChange = prop(\"onTriggerValueChange\");\n if (!onTriggerValueChange) return;\n const triggerElement = dom.getActiveTriggerEl(scope, value);\n onTriggerValueChange({ value, triggerElement });\n }\n }))\n };\n },\n computed: {\n currentPortalled: ({ prop }) => !!prop(\"modal\") || !!prop(\"portalled\")\n },\n watch({ track, prop, action }) {\n track([() => prop(\"open\")], () => {\n action([\"toggleVisibility\"]);\n });\n },\n entry: [\"checkRenderedElements\"],\n on: {\n \"TRIGGER_VALUE.SET\": {\n actions: [\"setTriggerValue\", \"reposition\"]\n }\n },\n states: {\n closed: {\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\",\n actions: [\"setInitialFocus\"]\n },\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\", \"setInitialFocus\"]\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\", \"setInitialFocus\"]\n }\n ]\n }\n },\n open: {\n effects: [\n \"trapFocus\",\n \"preventScroll\",\n \"hideContentBelow\",\n \"trackDismissableElement\",\n \"trackPositioning\",\n \"proxyTabFocus\"\n ],\n on: {\n \"CONTROLLED.CLOSE\": {\n target: \"closed\",\n actions: [\"setFinalFocus\"]\n },\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n }\n }\n },\n implementations: {\n guards: {\n isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n },\n effects: {\n trackPositioning({ context, prop, scope }) {\n context.set(\"currentPlacement\", prop(\"positioning\").placement);\n const anchorEl = dom.getAnchorEl(scope);\n const getPositionerEl2 = () => dom.getPositionerEl(scope);\n const getTriggerEl2 = () => anchorEl ?? dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"));\n return getPlacement(getTriggerEl2, getPositionerEl2, {\n ...prop(\"positioning\"),\n defer: true,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n trackDismissableElement({ send, prop, scope }) {\n const getContentEl2 = () => dom.getContentEl(scope);\n let restoreFocus = true;\n return trackDismissableElement(getContentEl2, {\n type: \"popover\",\n pointerBlocking: prop(\"modal\"),\n exclude: [dom.getTriggerEl(scope), ...dom.getTriggerEls(scope)].filter(Boolean),\n defer: true,\n onEscapeKeyDown(event) {\n prop(\"onEscapeKeyDown\")?.(event);\n if (prop(\"closeOnEscape\")) return;\n event.preventDefault();\n },\n onInteractOutside(event) {\n prop(\"onInteractOutside\")?.(event);\n if (event.defaultPrevented) return;\n restoreFocus = !(event.detail.focusable || event.detail.contextmenu);\n if (!prop(\"closeOnInteractOutside\")) {\n event.preventDefault();\n }\n },\n onPointerDownOutside: prop(\"onPointerDownOutside\"),\n onFocusOutside: prop(\"onFocusOutside\"),\n persistentElements: prop(\"persistentElements\"),\n onRequestDismiss: prop(\"onRequestDismiss\"),\n onDismiss() {\n send({ type: \"CLOSE\", src: \"interact-outside\", restoreFocus });\n }\n });\n },\n proxyTabFocus({ prop, scope, context }) {\n if (prop(\"modal\") || !prop(\"portalled\")) return;\n const getContentEl2 = () => dom.getContentEl(scope);\n return proxyTabFocus(getContentEl2, {\n triggerElement: dom.getActiveTriggerEl(scope, context.get(\"triggerValue\")),\n defer: true,\n getShadowRoot: true,\n onFocus(el) {\n el.focus({ preventScroll: true });\n }\n });\n },\n hideContentBelow({ prop, scope, context }) {\n if (!prop(\"modal\")) return;\n const getElements = () => [dom.getContentEl(scope), dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"))];\n return ariaHidden(getElements, { defer: true });\n },\n preventScroll({ prop, scope }) {\n if (!prop(\"modal\")) return;\n return preventBodyScroll(scope.getDoc());\n },\n trapFocus({ prop, scope, context }) {\n if (!prop(\"modal\")) return;\n const contentEl = () => dom.getContentEl(scope);\n return trapFocus(contentEl, {\n preventScroll: true,\n returnFocusOnDeactivate: !!prop(\"restoreFocus\"),\n initialFocus: () => getInitialFocus({\n root: dom.getContentEl(scope),\n getInitialEl: prop(\"initialFocusEl\"),\n enabled: prop(\"autoFocus\")\n }),\n setReturnFocus: (el) => {\n const finalFocusEl = prop(\"finalFocusEl\")?.();\n if (finalFocusEl) return finalFocusEl;\n const triggerValue = context.get(\"triggerValue\");\n if (triggerValue) {\n const activeTriggerEl = dom.getActiveTriggerEl(scope, triggerValue);\n if (activeTriggerEl) return activeTriggerEl;\n }\n const fallbackTrigger = dom.getTriggerEls(scope)[0];\n if (fallbackTrigger) return fallbackTrigger;\n return el;\n },\n getShadowRoot: true\n });\n }\n },\n actions: {\n reposition({ event, prop, scope, context }) {\n const anchorEl = dom.getAnchorEl(scope);\n const getPositionerEl2 = () => dom.getPositionerEl(scope);\n const getTriggerEl2 = () => anchorEl ?? dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"));\n getPlacement(getTriggerEl2, getPositionerEl2, {\n ...prop(\"positioning\"),\n ...event.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n setTriggerValue({ context, event }) {\n if (event.value === void 0) return;\n context.set(\"triggerValue\", event.value);\n },\n checkRenderedElements({ context, scope }) {\n raf(() => {\n Object.assign(context.get(\"renderedElements\"), {\n title: !!dom.getTitleEl(scope),\n description: !!dom.getDescriptionEl(scope)\n });\n });\n },\n setInitialFocus({ prop, scope }) {\n if (prop(\"modal\")) return;\n raf(() => {\n const element = getInitialFocus({\n root: dom.getContentEl(scope),\n getInitialEl: prop(\"initialFocusEl\"),\n enabled: prop(\"autoFocus\")\n });\n element?.focus({ preventScroll: true });\n });\n },\n setFinalFocus({ event, prop, scope, context }) {\n const eventRestoreFocus = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n if (eventRestoreFocus != null && !eventRestoreFocus) return;\n if (!prop(\"restoreFocus\")) return;\n raf(() => {\n const finalFocusEl = prop(\"finalFocusEl\")?.();\n if (finalFocusEl) {\n finalFocusEl.focus({ preventScroll: true });\n return;\n }\n const element = dom.getActiveTriggerEl(scope, context.get(\"triggerValue\"));\n element?.focus({ preventScroll: true });\n });\n },\n invokeOnOpen({ prop, flush }) {\n flush(() => {\n prop(\"onOpenChange\")?.({ open: true });\n });\n },\n invokeOnClose({ prop, flush }) {\n flush(() => {\n prop(\"onOpenChange\")?.({ open: false });\n });\n },\n toggleVisibility({ event, send, prop }) {\n send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n }\n }\n }\n});\nexport {\n machine\n};\n","// src/prop-types.ts\nfunction createNormalizer(fn) {\n return new Proxy({}, {\n get(_target, key) {\n if (key === \"style\")\n return (props) => {\n return fn({ style: props }).style;\n };\n return fn;\n }\n });\n}\nexport {\n createNormalizer\n};\n","import { hasProp, isFunction } from \"@zag-js/utils\";\nimport { createContext, useContext } from \"react\";\n//#region src/utils/create-context.ts\nfunction getErrorMessage(hook, provider) {\n\treturn `${hook} returned \\`undefined\\`. Seems you forgot to wrap component within ${provider}`;\n}\nfunction createContext$1(options = {}) {\n\tconst { name, strict = true, hookName = \"useContext\", providerName = \"Provider\", errorMessage, defaultValue } = options;\n\tconst Context = createContext(defaultValue);\n\tContext.displayName = name;\n\tfunction useContext$1() {\n\t\tconst context = useContext(Context);\n\t\tif (!context && strict) {\n\t\t\tconst error = new Error(errorMessage ?? getErrorMessage(hookName, providerName));\n\t\t\terror.name = \"ContextError\";\n\t\t\tif (hasProp(Error, \"captureStackTrace\") && isFunction(Error.captureStackTrace)) Error.captureStackTrace(error, useContext$1);\n\t\t\tthrow error;\n\t\t}\n\t\treturn context;\n\t}\n\treturn [\n\t\tContext.Provider,\n\t\tuseContext$1,\n\t\tContext\n\t];\n}\n//#endregion\nexport { createContext$1 as createContext };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/popover/use-popover-context.ts\nvar [PopoverProvider, usePopoverContext] = createContext({\n\tname: \"PopoverContext\",\n\thookName: \"usePopoverContext\",\n\tproviderName: \"<PopoverProvider />\"\n});\n//#endregion\nexport { PopoverProvider, usePopoverContext };\n","//#region src/utils/compose-refs.ts\nfunction composeRefs(...refs) {\n\treturn (node) => {\n\t\tconst cleanUps = [];\n\t\tfor (const ref of refs) if (typeof ref === \"function\") {\n\t\t\tconst cb = ref(node);\n\t\t\tif (typeof cb === \"function\") cleanUps.push(cb);\n\t\t} else if (ref) ref.current = node;\n\t\tif (cleanUps.length) return () => {\n\t\t\tfor (const cleanUp of cleanUps) cleanUp();\n\t\t};\n\t};\n}\n//#endregion\nexport { composeRefs };\n","import { composeRefs } from \"../utils/compose-refs.js\";\nimport { Children, cloneElement, createElement, forwardRef, isValidElement, memo } from \"react\";\nimport { mergeProps } from \"@zag-js/core\";\n//#region src/components/factory.ts\nfunction getRef(element) {\n\tlet getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n\tlet mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n\tif (mayWarn) return element.ref;\n\tgetter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n\tmayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n\tif (mayWarn) return element.props.ref;\n\treturn element.props.ref || element.ref;\n}\nvar withAsChild = (Component) => {\n\tconst Comp = memo(forwardRef((props, ref) => {\n\t\tconst { asChild, children, ...restProps } = props;\n\t\tif (!asChild) return createElement(Component, {\n\t\t\t...restProps,\n\t\t\tref\n\t\t}, children);\n\t\tif (!isValidElement(children)) return null;\n\t\tconst onlyChild = Children.only(children);\n\t\tconst childRef = getRef(onlyChild);\n\t\treturn cloneElement(onlyChild, {\n\t\t\t...mergeProps(restProps, onlyChild.props),\n\t\t\tref: ref ? composeRefs(ref, childRef) : childRef\n\t\t});\n\t}));\n\tComp.displayName = Component.displayName || Component.name;\n\treturn Comp;\n};\nvar jsxFactory = () => {\n\tconst cache = /* @__PURE__ */ new Map();\n\treturn new Proxy(withAsChild, {\n\t\tapply(_target, _thisArg, argArray) {\n\t\t\treturn withAsChild(argArray[0]);\n\t\t},\n\t\tget(_, element) {\n\t\t\tconst asElement = element;\n\t\t\tif (!cache.has(asElement)) cache.set(asElement, withAsChild(asElement));\n\t\t\treturn cache.get(asElement);\n\t\t}\n\t});\n};\nvar ark = jsxFactory();\n//#endregion\nexport { ark, jsxFactory };\n","import type * as ReactDOMModule from \"react-dom\";\n\ntype ReactDOMGlobal = typeof ReactDOMModule;\n\nfunction getReactDOM(): ReactDOMGlobal {\n const ReactDOM = (\n globalThis as typeof globalThis & { ReactDOM?: ReactDOMGlobal }\n ).ReactDOM;\n\n if (!ReactDOM) {\n throw new Error(\n \"@pollinations/ui browser bundle requires globalThis.ReactDOM. Load ReactDOM before @pollinations/ui.\",\n );\n }\n\n return ReactDOM;\n}\n\nconst ReactDOM = getReactDOM();\n\nexport default ReactDOM;\nexport const { createPortal, flushSync } = ReactDOM;\n","\"use client\";\n\n// src/use-layout-effect.ts\nimport { useEffect, useLayoutEffect } from \"react\";\nvar useSafeLayoutEffect = typeof globalThis.document !== \"undefined\" ? useLayoutEffect : useEffect;\nexport {\n useSafeLayoutEffect\n};\n","\"use client\";\n\n// src/bindable.ts\nimport { identity, isFunction } from \"@zag-js/utils\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useSafeLayoutEffect } from \"./use-layout-effect.mjs\";\nfunction useBindable(props) {\n const initial = props().value ?? props().defaultValue;\n const eq = props().isEqual ?? Object.is;\n const [initialValue] = useState(initial);\n const [value, setValue] = useState(initialValue);\n const controlled = props().value !== void 0;\n const valueRef = useRef(value);\n valueRef.current = controlled ? props().value : value;\n const prevValue = useRef(valueRef.current);\n useSafeLayoutEffect(() => {\n prevValue.current = valueRef.current;\n }, [value, props().value]);\n const setFn = (value2) => {\n const prev = prevValue.current;\n const next = isFunction(value2) ? value2(prev) : value2;\n if (props().debug) {\n console.log(`[bindable > ${props().debug}] setValue`, { next, prev });\n }\n if (!controlled) setValue(next);\n if (!eq(next, prev)) {\n props().onChange?.(next, prev);\n }\n };\n function get() {\n return controlled ? props().value : value;\n }\n return {\n initial: initialValue,\n ref: valueRef,\n get,\n set(value2) {\n const exec = props().sync ? flushSync : identity;\n exec(() => setFn(value2));\n },\n invoke(nextValue, prevValue2) {\n props().onChange?.(nextValue, prevValue2);\n },\n hash(value2) {\n return props().hash?.(value2) ?? String(value2);\n }\n };\n}\nuseBindable.cleanup = (fn) => {\n useEffect(() => fn, []);\n};\nuseBindable.ref = (defaultValue) => {\n const value = useRef(defaultValue);\n return {\n get: () => value.current,\n set: (next) => {\n value.current = next;\n }\n };\n};\nexport {\n useBindable\n};\n","\"use client\";\n\n// src/refs.ts\nimport { useRef } from \"react\";\nfunction useRefs(refs) {\n const ref = useRef(refs);\n return {\n get(key) {\n return ref.current[key];\n },\n set(key, value) {\n ref.current[key] = value;\n }\n };\n}\nexport {\n useRefs\n};\n","\"use client\";\n\n// src/track.ts\nimport { useEffect, useRef } from \"react\";\nvar useTrack = (deps, effect) => {\n const render = useRef(false);\n const called = useRef(false);\n useEffect(() => {\n const mounted = render.current;\n const run = mounted && called.current;\n if (run) return effect();\n called.current = true;\n }, [...(deps ?? []).map((d) => typeof d === \"function\" ? d() : d)]);\n useEffect(() => {\n render.current = true;\n return () => {\n render.current = false;\n };\n }, []);\n};\nexport {\n useTrack\n};\n","\"use client\";\n\n// src/machine.ts\nimport {\n createScope,\n findTransition,\n getExitEnterStates,\n hasTag,\n INIT_STATE,\n MachineStatus,\n matchesState,\n resolveStateValue\n} from \"@zag-js/core\";\nimport { callAll, compact, ensure, isFunction, isString, toArray, warn } from \"@zag-js/utils\";\nimport { useMemo, useRef } from \"react\";\nimport { flushSync } from \"react-dom\";\nimport { useBindable } from \"./bindable.mjs\";\nimport { useRefs } from \"./refs.mjs\";\nimport { useTrack } from \"./track.mjs\";\nimport { useSafeLayoutEffect } from \"./use-layout-effect.mjs\";\nfunction useMachine(machine, userProps = {}) {\n const scope = useMemo(() => {\n const { id, ids, getRootNode } = userProps;\n return createScope({ id, ids, getRootNode });\n }, [userProps]);\n const debug = (...args) => {\n if (machine.debug) console.log(...args);\n };\n const props = machine.props?.({ props: compact(userProps), scope }) ?? userProps;\n const prop = useProp(props);\n const context = machine.context?.({\n prop,\n bindable: useBindable,\n scope,\n flush,\n getContext() {\n return ctx;\n },\n getComputed() {\n return computed;\n },\n getRefs() {\n return refs;\n },\n getEvent() {\n return getEvent();\n }\n });\n const contextRef = useLiveRef(context);\n const ctx = {\n get(key) {\n return contextRef.current?.[key].ref.current;\n },\n set(key, value) {\n contextRef.current?.[key].set(value);\n },\n initial(key) {\n return contextRef.current?.[key].initial;\n },\n hash(key) {\n const current = contextRef.current?.[key].get();\n return contextRef.current?.[key].hash(current);\n }\n };\n const effects = useRef(/* @__PURE__ */ new Map());\n const transitionRef = useRef(null);\n const previousEventRef = useRef(null);\n const eventRef = useRef({ type: \"\" });\n const getEvent = () => ({\n ...eventRef.current,\n current() {\n return eventRef.current;\n },\n previous() {\n return previousEventRef.current;\n }\n });\n const getState = () => ({\n ...state,\n matches(...values) {\n return values.some((value) => matchesState(state.ref.current, value));\n },\n hasTag(tag) {\n return hasTag(machine, state.ref.current, tag);\n }\n });\n const refs = useRefs(machine.refs?.({ prop, context: ctx }) ?? {});\n const getParams = () => ({\n state: getState(),\n context: ctx,\n event: getEvent(),\n prop,\n send,\n action,\n guard,\n track: useTrack,\n refs,\n computed,\n flush,\n scope,\n choose\n });\n const action = (keys) => {\n const strs = isFunction(keys) ? keys(getParams()) : keys;\n if (!strs) return;\n const fns = strs.map((s) => {\n const fn = machine.implementations?.actions?.[s];\n if (!fn) warn(`[zag-js] No implementation found for action \"${JSON.stringify(s)}\"`);\n return fn;\n });\n for (const fn of fns) {\n fn?.(getParams());\n }\n };\n const guard = (str) => {\n if (isFunction(str)) return str(getParams());\n const fn = machine.implementations?.guards?.[str];\n if (!fn) warn(`[zag-js] No implementation found for guard \"${JSON.stringify(str)}\"`);\n return fn?.(getParams());\n };\n const effect = (keys) => {\n const strs = isFunction(keys) ? keys(getParams()) : keys;\n if (!strs) return;\n const fns = strs.map((s) => {\n const fn = machine.implementations?.effects?.[s];\n if (!fn) warn(`[zag-js] No implementation found for effect \"${JSON.stringify(s)}\"`);\n return fn;\n });\n const cleanups = [];\n for (const fn of fns) {\n const cleanup = fn?.(getParams());\n if (cleanup) cleanups.push(cleanup);\n }\n return () => cleanups.forEach((fn) => fn?.());\n };\n const choose = (transitions) => {\n return toArray(transitions).find((t) => {\n let result = !t.guard;\n if (isString(t.guard)) result = !!guard(t.guard);\n else if (isFunction(t.guard)) result = t.guard(getParams());\n return result;\n });\n };\n const computed = (key) => {\n ensure(machine.computed, () => `[zag-js] No computed object found on machine`);\n const fn = machine.computed[key];\n return fn({\n context: ctx,\n event: getEvent(),\n prop,\n refs,\n scope,\n computed\n });\n };\n const state = useBindable(() => ({\n defaultValue: resolveStateValue(machine, machine.initialState({ prop })),\n onChange(nextState, prevState) {\n const { exiting, entering } = getExitEnterStates(machine, prevState, nextState, transitionRef.current?.reenter);\n exiting.forEach((item) => {\n const exitEffects = effects.current.get(item.path);\n exitEffects?.();\n effects.current.delete(item.path);\n });\n exiting.forEach((item) => {\n action(item.state?.exit);\n });\n action(transitionRef.current?.actions);\n entering.forEach((item) => {\n const cleanup = effect(item.state?.effects);\n if (cleanup) {\n const existing = effects.current.get(item.path);\n effects.current.set(item.path, existing ? callAll(existing, cleanup) : cleanup);\n }\n });\n if (prevState === INIT_STATE) {\n action(machine.entry);\n const cleanup = effect(machine.effects);\n if (cleanup) {\n const existing = effects.current.get(INIT_STATE);\n effects.current.set(INIT_STATE, existing ? callAll(existing, cleanup) : cleanup);\n }\n }\n entering.forEach((item) => {\n action(item.state?.entry);\n });\n }\n }));\n const hydratedStateRef = useRef(void 0);\n const statusRef = useRef(MachineStatus.NotStarted);\n useSafeLayoutEffect(() => {\n queueMicrotask(() => {\n const started = statusRef.current === MachineStatus.Started;\n statusRef.current = MachineStatus.Started;\n debug(started ? \"rehydrating...\" : \"initializing...\");\n const initialState = hydratedStateRef.current ?? state.initial;\n state.invoke(initialState, started ? state.get() : INIT_STATE);\n });\n const fns = effects.current;\n return () => {\n const currentState = getCurrentState();\n debug(\"unmounting...\");\n hydratedStateRef.current = currentState;\n statusRef.current = MachineStatus.Stopped;\n fns.forEach((fn) => fn?.());\n effects.current = /* @__PURE__ */ new Map();\n transitionRef.current = null;\n queueMicrotask(() => {\n action(machine.exit);\n statusRef.current = MachineStatus.Stopped;\n });\n };\n }, []);\n const getCurrentState = () => {\n if (\"ref\" in state) return state.ref.current;\n return state.get();\n };\n const send = (event) => {\n queueMicrotask(() => {\n if (statusRef.current !== MachineStatus.Started) return;\n previousEventRef.current = eventRef.current;\n eventRef.current = event;\n let currentState = getCurrentState();\n const { transitions, source } = findTransition(machine, currentState, event.type);\n const transition = choose(transitions);\n if (!transition) return;\n transitionRef.current = transition;\n const target = resolveStateValue(machine, transition.target ?? currentState, source);\n debug(\"transition\", event.type, transition.target || currentState, `(${transition.actions})`);\n const changed = target !== currentState;\n if (changed) {\n flushSync(() => state.set(target));\n } else if (transition.reenter) {\n state.invoke(currentState, currentState);\n } else {\n action(transition.actions ?? []);\n }\n });\n };\n machine.watch?.(getParams());\n return {\n state: getState(),\n send,\n context: ctx,\n prop,\n scope,\n refs,\n computed,\n event: getEvent(),\n getStatus: () => statusRef.current\n };\n}\nfunction useLiveRef(value) {\n const ref = useRef(value);\n ref.current = value;\n return ref;\n}\nfunction useProp(value) {\n const ref = useLiveRef(value);\n return function get(key) {\n return ref.current[key];\n };\n}\nfunction flush(fn) {\n queueMicrotask(() => {\n flushSync(() => fn());\n });\n}\nexport {\n useMachine\n};\n","// src/normalize-props.ts\nimport { createNormalizer } from \"@zag-js/types\";\nvar normalizeProps = createNormalizer((v) => v);\nexport {\n normalizeProps\n};\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-anchor.tsx\nvar PopoverAnchor = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getAnchorProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverAnchor.displayName = \"PopoverAnchor\";\n//#endregion\nexport { PopoverAnchor };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-arrow.tsx\nvar PopoverArrow = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getArrowProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverArrow.displayName = \"PopoverArrow\";\n//#endregion\nexport { PopoverArrow };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-arrow-tip.tsx\nvar PopoverArrowTip = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getArrowTipProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverArrowTip.displayName = \"PopoverArrowTip\";\n//#endregion\nexport { PopoverArrowTip };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-close-trigger.tsx\nvar PopoverCloseTrigger = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getCloseTriggerProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverCloseTrigger.displayName = \"PopoverCloseTrigger\";\n//#endregion\nexport { PopoverCloseTrigger };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/presence/use-presence-context.ts\nvar [PresenceProvider, usePresenceContext] = createContext({\n\tname: \"PresenceContext\",\n\thookName: \"usePresenceContext\",\n\tproviderName: \"<PresenceProvider />\"\n});\n//#endregion\nexport { PresenceProvider, usePresenceContext };\n","\"use client\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-content.tsx\nvar PopoverContent = forwardRef((props, ref) => {\n\tconst popover = usePopoverContext();\n\tconst presence = usePresenceContext();\n\tconst mergedProps = mergeProps(popover.getContentProps(), presence.getPresenceProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref: composeRefs(presence.ref, ref)\n\t});\n});\nPopoverContent.displayName = \"PopoverContent\";\n//#endregion\nexport { PopoverContent };\n","\"use client\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\n//#region src/components/popover/popover-context.tsx\nvar PopoverContext = (props) => props.children(usePopoverContext());\n//#endregion\nexport { PopoverContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-description.tsx\nvar PopoverDescription = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getDescriptionProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverDescription.displayName = \"PopoverDescription\";\n//#endregion\nexport { PopoverDescription };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-indicator.tsx\nvar PopoverIndicator = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getIndicatorProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverIndicator.displayName = \"PopoverIndicator\";\n//#endregion\nexport { PopoverIndicator };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-positioner.tsx\nvar PopoverPositioner = forwardRef((props, ref) => {\n\tconst popover = usePopoverContext();\n\tconst presence = usePresenceContext();\n\tconst mergedProps = mergeProps(popover.getPositionerProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverPositioner.displayName = \"PopoverPositioner\";\n//#endregion\nexport { PopoverPositioner };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/providers/environment/use-environment-context.ts\nvar [EnvironmentContextProvider, useEnvironmentContext] = createContext({\n\tname: \"EnvironmentContext\",\n\thookName: \"useEnvironmentContext\",\n\tproviderName: \"<EnvironmentProvider />\",\n\tstrict: false,\n\tdefaultValue: {\n\t\tgetRootNode: () => document,\n\t\tgetDocument: () => document,\n\t\tgetWindow: () => window\n\t}\n});\n//#endregion\nexport { EnvironmentContextProvider, useEnvironmentContext };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/providers/locale/use-locale-context.ts\nvar [LocaleContextProvider, useLocaleContext] = createContext({\n\tname: \"LocaleContext\",\n\thookName: \"useLocaleContext\",\n\tproviderName: \"<LocaleProvider />\",\n\tstrict: false,\n\tdefaultValue: {\n\t\tdir: \"ltr\",\n\t\tlocale: \"en-US\"\n\t}\n});\n//#endregion\nexport { LocaleContextProvider, useLocaleContext };\n","\"use client\";\nimport { useEnvironmentContext } from \"../../providers/environment/use-environment-context.js\";\nimport { useLocaleContext } from \"../../providers/locale/use-locale-context.js\";\nimport * as popover from \"@zag-js/popover\";\nimport { useId } from \"react\";\nimport { normalizeProps, useMachine } from \"@zag-js/react\";\n//#region src/components/popover/use-popover.ts\nvar usePopover = (props) => {\n\tconst id = useId();\n\tconst { getRootNode } = useEnvironmentContext();\n\tconst { dir } = useLocaleContext();\n\tconst machineProps = {\n\t\tid,\n\t\tdir,\n\t\tgetRootNode,\n\t\t...props\n\t};\n\tconst service = useMachine(popover.machine, machineProps);\n\treturn popover.connect(service, normalizeProps);\n};\n//#endregion\nexport { usePopover };\n","//#region src/utils/create-split-props.ts\nvar createSplitProps = () => (props, keys) => keys.reduce((previousValue, currentValue) => {\n\tconst [target, source] = previousValue;\n\tconst key = currentValue;\n\tif (source[key] !== void 0) target[key] = source[key];\n\tdelete source[key];\n\treturn [target, source];\n}, [{}, { ...props }]);\n//#endregion\nexport { createSplitProps };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\n//#region src/components/presence/split-presence-props.ts\nvar splitPresenceProps = (props) => createSplitProps()(props, [\n\t\"immediate\",\n\t\"lazyMount\",\n\t\"onExitComplete\",\n\t\"present\",\n\t\"skipAnimationOnMount\",\n\t\"unmountOnExit\"\n]);\n//#endregion\nexport { splitPresenceProps };\n","\"use client\";\nimport { useCallback, useRef } from \"react\";\n//#region src/utils/use-event.ts\n/**\n* Returns a memoized callback that will flushSync the callback if sync is true\n*/\nfunction useEvent(callback, opts = {}) {\n\tconst { sync = false } = opts;\n\tconst callbackRef = useLatestRef(callback);\n\treturn useCallback((...args) => {\n\t\tif (sync) return queueMicrotask(() => callbackRef.current?.(...args));\n\t\treturn callbackRef.current?.(...args);\n\t}, [sync, callbackRef]);\n}\nfunction useLatestRef(value) {\n\tconst ref = useRef(value);\n\tref.current = value;\n\treturn ref;\n}\n//#endregion\nexport { useEvent };\n","// src/presence.connect.ts\nfunction connect(service, _normalize) {\n const { state, send, context } = service;\n const present = state.matches(\"mounted\", \"unmountSuspended\");\n return {\n skip: !context.get(\"initial\"),\n present,\n setNode(node) {\n if (!node) return;\n send({ type: \"NODE.SET\", node });\n },\n unmount() {\n send({ type: \"UNMOUNT\" });\n }\n };\n}\nexport {\n connect\n};\n","// src/presence.machine.ts\nimport { createMachine } from \"@zag-js/core\";\nimport { getComputedStyle, getEventTarget, getWindow, nextTick, raf, setStyle } from \"@zag-js/dom-query\";\nvar machine = createMachine({\n props({ props }) {\n return { ...props, present: !!props.present };\n },\n initialState({ prop }) {\n return prop(\"present\") ? \"mounted\" : \"unmounted\";\n },\n refs() {\n return {\n node: null,\n styles: null\n };\n },\n context({ bindable }) {\n return {\n unmountAnimationName: bindable(() => ({ defaultValue: null })),\n prevAnimationName: bindable(() => ({ defaultValue: null })),\n present: bindable(() => ({ defaultValue: false })),\n initial: bindable(() => ({\n sync: true,\n defaultValue: false\n }))\n };\n },\n exit: [\"cleanupNode\"],\n watch({ track, prop, send }) {\n track([() => prop(\"present\")], () => {\n send({ type: \"PRESENCE.CHANGED\" });\n });\n },\n on: {\n \"NODE.SET\": {\n actions: [\"setupNode\"]\n },\n \"PRESENCE.CHANGED\": {\n actions: [\"setInitial\", \"syncPresence\"]\n }\n },\n states: {\n mounted: {\n on: {\n UNMOUNT: {\n target: \"unmounted\",\n actions: [\"clearPrevAnimationName\", \"invokeOnExitComplete\"]\n },\n \"UNMOUNT.SUSPEND\": {\n target: \"unmountSuspended\"\n }\n }\n },\n unmountSuspended: {\n effects: [\"trackAnimationEvents\"],\n on: {\n MOUNT: {\n target: \"mounted\",\n actions: [\"setPrevAnimationName\"]\n },\n UNMOUNT: {\n target: \"unmounted\",\n actions: [\"clearPrevAnimationName\", \"invokeOnExitComplete\"]\n }\n }\n },\n unmounted: {\n on: {\n MOUNT: {\n target: \"mounted\",\n actions: [\"setPrevAnimationName\"]\n }\n }\n }\n },\n implementations: {\n actions: {\n setInitial: ({ context }) => {\n if (context.get(\"initial\")) return;\n queueMicrotask(() => {\n context.set(\"initial\", true);\n });\n },\n invokeOnExitComplete: ({ prop, refs }) => {\n prop(\"onExitComplete\")?.();\n const node = refs.get(\"node\");\n if (!node) return;\n const win = getWindow(node);\n const event = new win.CustomEvent(\"exitcomplete\", { bubbles: false });\n node.dispatchEvent(event);\n },\n setupNode: ({ refs, event }) => {\n if (refs.get(\"node\") === event.node) return;\n refs.set(\"node\", event.node);\n refs.set(\"styles\", getComputedStyle(event.node));\n },\n cleanupNode: ({ refs }) => {\n refs.set(\"node\", null);\n refs.set(\"styles\", null);\n },\n syncPresence: ({ context, refs, send, prop }) => {\n const presentProp = prop(\"present\");\n if (presentProp) {\n return send({ type: \"MOUNT\", src: \"presence.changed\" });\n }\n const node = refs.get(\"node\");\n if (!presentProp && node?.ownerDocument.visibilityState === \"hidden\") {\n return send({ type: \"UNMOUNT\", src: \"visibilitychange\" });\n }\n raf(() => {\n if (prop(\"present\")) return;\n const animationName = getAnimationName(refs.get(\"styles\"));\n context.set(\"unmountAnimationName\", animationName);\n if (animationName === \"none\" || animationName === context.get(\"prevAnimationName\") || refs.get(\"styles\")?.display === \"none\" || refs.get(\"styles\")?.animationDuration === \"0s\") {\n send({ type: \"UNMOUNT\", src: \"presence.changed\" });\n } else {\n send({ type: \"UNMOUNT.SUSPEND\" });\n }\n });\n },\n setPrevAnimationName: ({ context, refs }) => {\n raf(() => {\n context.set(\"prevAnimationName\", getAnimationName(refs.get(\"styles\")));\n });\n },\n clearPrevAnimationName: ({ context }) => {\n context.set(\"prevAnimationName\", null);\n }\n },\n effects: {\n trackAnimationEvents: ({ context, refs, send, prop }) => {\n const node = refs.get(\"node\");\n if (!node) return;\n const onStart = (event) => {\n const target = event.composedPath?.()?.[0] ?? event.target;\n if (target === node) {\n context.set(\"prevAnimationName\", getAnimationName(refs.get(\"styles\")));\n }\n };\n const onEnd = (event) => {\n const animationName = getAnimationName(refs.get(\"styles\"));\n const target = getEventTarget(event);\n if (target === node && animationName === context.get(\"unmountAnimationName\") && !prop(\"present\")) {\n send({ type: \"UNMOUNT\", src: \"animationend\" });\n }\n };\n const onCancel = (event) => {\n const target = getEventTarget(event);\n if (target === node && !prop(\"present\")) {\n send({ type: \"UNMOUNT\", src: \"animationcancel\" });\n }\n };\n node.addEventListener(\"animationstart\", onStart);\n node.addEventListener(\"animationcancel\", onCancel);\n node.addEventListener(\"animationend\", onEnd);\n const cleanupStyles = setStyle(node, { animationFillMode: \"forwards\" });\n return () => {\n node.removeEventListener(\"animationstart\", onStart);\n node.removeEventListener(\"animationcancel\", onCancel);\n node.removeEventListener(\"animationend\", onEnd);\n nextTick(() => cleanupStyles());\n };\n }\n }\n }\n});\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nexport {\n machine\n};\n","\"use client\";\nimport { useEvent } from \"../../utils/use-event.js\";\nimport { useRef } from \"react\";\nimport { normalizeProps, useMachine } from \"@zag-js/react\";\nimport * as presence from \"@zag-js/presence\";\n//#region src/components/presence/use-presence.ts\nvar usePresence = (props = {}) => {\n\tconst { lazyMount, unmountOnExit, present, skipAnimationOnMount = false, ...rest } = props;\n\tconst wasEverPresent = useRef(false);\n\tconst machineProps = {\n\t\t...rest,\n\t\tpresent,\n\t\tonExitComplete: useEvent(props.onExitComplete)\n\t};\n\tconst service = useMachine(presence.machine, machineProps);\n\tconst api = presence.connect(service, normalizeProps);\n\tif (api.present) wasEverPresent.current = true;\n\tconst unmounted = !api.present && !wasEverPresent.current && lazyMount || unmountOnExit && !api.present && wasEverPresent.current;\n\tconst getPresenceProps = () => ({\n\t\t\"data-state\": api.skip && skipAnimationOnMount ? void 0 : present ? \"open\" : \"closed\",\n\t\thidden: !api.present\n\t});\n\treturn {\n\t\tref: api.setNode,\n\t\tgetPresenceProps,\n\t\tpresent: api.present,\n\t\tunmounted\n\t};\n};\n//#endregion\nexport { usePresence };\n","\"use client\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { PopoverProvider } from \"./use-popover-context.js\";\nimport { usePopover } from \"./use-popover.js\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-root.tsx\nvar PopoverRoot = (props) => {\n\tconst [presenceProps, { children, ...localProps }] = splitPresenceProps(props);\n\tconst popover = usePopover(localProps);\n\treturn /* @__PURE__ */ jsx(PopoverProvider, {\n\t\tvalue: popover,\n\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\tvalue: usePresence(mergeProps({ present: popover.open }, presenceProps)),\n\t\t\tchildren\n\t\t})\n\t});\n};\n//#endregion\nexport { PopoverRoot };\n","\"use client\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { PopoverProvider } from \"./use-popover-context.js\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-root-provider.tsx\nvar PopoverRootProvider = (props) => {\n\tconst [presenceProps, { value: popover, children }] = splitPresenceProps(props);\n\treturn /* @__PURE__ */ jsx(PopoverProvider, {\n\t\tvalue: popover,\n\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\tvalue: usePresence(mergeProps({ present: popover.open }, presenceProps)),\n\t\t\tchildren\n\t\t})\n\t});\n};\n//#endregion\nexport { PopoverRootProvider };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-title.tsx\nvar PopoverTitle = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(usePopoverContext().getTitleProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverTitle.displayName = \"PopoverTitle\";\n//#endregion\nexport { PopoverTitle };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { usePopoverContext } from \"./use-popover-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/popover/popover-trigger.tsx\nvar splitTriggerProps = createSplitProps();\nvar PopoverTrigger = forwardRef((props, ref) => {\n\tconst [triggerProps, localProps] = splitTriggerProps(props, [\"value\"]);\n\tconst popover = usePopoverContext();\n\tconst presence = usePresenceContext();\n\tconst triggerPropsRaw = popover.getTriggerProps(triggerProps);\n\tconst mergedProps = mergeProps({\n\t\t...triggerPropsRaw,\n\t\t\"aria-controls\": presence.unmounted ? void 0 : triggerPropsRaw[\"aria-controls\"]\n\t}, localProps);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nPopoverTrigger.displayName = \"PopoverTrigger\";\n//#endregion\nexport { PopoverTrigger };\n","//#region \\0rolldown/runtime.js\nvar __defProp = Object.defineProperty;\nvar __exportAll = (all, no_symbols) => {\n\tlet target = {};\n\tfor (var name in all) __defProp(target, name, {\n\t\tget: all[name],\n\t\tenumerable: true\n\t});\n\tif (!no_symbols) __defProp(target, Symbol.toStringTag, { value: \"Module\" });\n\treturn target;\n};\n//#endregion\nexport { __exportAll };\n","import { __exportAll } from \"../../_virtual/_rolldown/runtime.js\";\nimport { PopoverAnchor } from \"./popover-anchor.js\";\nimport { PopoverArrow } from \"./popover-arrow.js\";\nimport { PopoverArrowTip } from \"./popover-arrow-tip.js\";\nimport { PopoverCloseTrigger } from \"./popover-close-trigger.js\";\nimport { PopoverContent } from \"./popover-content.js\";\nimport { PopoverContext } from \"./popover-context.js\";\nimport { PopoverDescription } from \"./popover-description.js\";\nimport { PopoverIndicator } from \"./popover-indicator.js\";\nimport { PopoverPositioner } from \"./popover-positioner.js\";\nimport { PopoverRoot } from \"./popover-root.js\";\nimport { PopoverRootProvider } from \"./popover-root-provider.js\";\nimport { PopoverTitle } from \"./popover-title.js\";\nimport { PopoverTrigger } from \"./popover-trigger.js\";\n//#region src/components/popover/popover.ts\nvar popover_exports = /* @__PURE__ */ __exportAll({\n\tAnchor: () => PopoverAnchor,\n\tArrow: () => PopoverArrow,\n\tArrowTip: () => PopoverArrowTip,\n\tCloseTrigger: () => PopoverCloseTrigger,\n\tContent: () => PopoverContent,\n\tContext: () => PopoverContext,\n\tDescription: () => PopoverDescription,\n\tIndicator: () => PopoverIndicator,\n\tPositioner: () => PopoverPositioner,\n\tRoot: () => PopoverRoot,\n\tRootProvider: () => PopoverRootProvider,\n\tTitle: () => PopoverTitle,\n\tTrigger: () => PopoverTrigger\n});\n//#endregion\nexport { popover_exports };\n","\"use client\";\nimport { useEnvironmentContext } from \"../../providers/environment/use-environment-context.js\";\nimport { Children, useEffect, useState, useSyncExternalStore } from \"react\";\nimport { Fragment as Fragment$1, jsx } from \"react/jsx-runtime\";\nimport { getDocument, isShadowRoot } from \"@zag-js/dom-query\";\nimport { createPortal } from \"react-dom\";\n//#region src/components/portal/portal.tsx\nvar Portal = (props) => {\n\tconst { children, disabled } = props;\n\tconst [container, setContainer] = useState(props.container?.current);\n\tconst isServer = useSyncExternalStore(subscribe, () => false, () => true);\n\tconst { getRootNode } = useEnvironmentContext();\n\tuseEffect(() => {\n\t\tsetContainer(() => props.container?.current);\n\t}, [props.container]);\n\tif (isServer || disabled) return /* @__PURE__ */ jsx(Fragment$1, { children });\n\tconst mountNode = container ?? getPortalNode(getRootNode);\n\treturn /* @__PURE__ */ jsx(Fragment$1, { children: Children.map(children, (child) => createPortal(child, mountNode)) });\n};\nvar getPortalNode = (cb) => {\n\tconst node = cb?.();\n\tconst rootNode = node.getRootNode();\n\tif (isShadowRoot(rootNode)) return rootNode;\n\treturn getDocument(node).body;\n};\nvar subscribe = () => () => {};\n//#endregion\nexport { Portal };\n","import { Popover } from \"@ark-ui/react/popover\";\nimport { Portal } from \"@ark-ui/react/portal\";\nimport type { CSSProperties, FC, ReactNode } from \"react\";\nimport { useId, useState } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nconst DEFAULT_PANEL = \"polli:rounded-lg polli:bg-surface-menu polli:shadow-lg\";\n\nexport type DropdownProps = {\n /** Trigger element; receives the current open state (e.g. to rotate a chevron). */\n trigger: (open: boolean) => ReactNode;\n /** Panel content. As a function, receives `close` to dismiss after a selection. */\n children: ReactNode | ((close: () => void) => ReactNode);\n /** Panel placement relative to the trigger. */\n align?: \"start\" | \"end\";\n side?: \"top\" | \"bottom\";\n /** Controlled open state. Omit to let the Dropdown manage its own. */\n open?: boolean;\n /** Render inside the parent dialog so its focus and accessibility scope includes the menu. */\n portalled?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Appended after the surface (widths, padding, max-height…). */\n className?: string;\n /** Theme variables for portaled content that cannot inherit from its trigger. */\n panelStyle?: CSSProperties;\n};\n\nexport const Dropdown: FC<DropdownProps> = ({\n trigger,\n children,\n align = \"start\",\n side = \"bottom\",\n open: openProp,\n portalled = true,\n onOpenChange,\n className,\n panelStyle,\n}) => {\n const triggerId = useId();\n const [internalOpen, setInternalOpen] = useState(false);\n const isControlled = openProp !== undefined;\n const open = isControlled ? openProp : internalOpen;\n\n const setOpen = (next: boolean) => {\n if (!isControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n return (\n <Popover.Root\n ids={{ trigger: triggerId }}\n open={open}\n portalled={portalled}\n onOpenChange={(details) => setOpen(details.open)}\n positioning={{\n placement: `${side}-${align}`,\n strategy: portalled ? \"absolute\" : \"fixed\",\n }}\n >\n <Popover.Trigger asChild>{trigger(open)}</Popover.Trigger>\n <Portal disabled={!portalled}>\n <Popover.Positioner>\n <Popover.Content\n aria-labelledby={triggerId}\n style={panelStyle}\n className={cn(\n \"polli:z-[120] polli:overflow-hidden polli:focus:outline-none\",\n DEFAULT_PANEL,\n className,\n )}\n >\n {typeof children === \"function\"\n ? children(() => setOpen(false))\n : children}\n </Popover.Content>\n </Popover.Positioner>\n </Portal>\n </Popover.Root>\n );\n};\n","import type { ReactNode } from \"react\";\nimport { useId } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\nimport { Dropdown, type DropdownProps } from \"../primitives/Dropdown.tsx\";\n\nfunction initials(name: string) {\n const parts = name.trim().split(/\\s+/).filter(Boolean);\n if (parts.length === 0) return \"?\";\n if (parts.length === 1) return parts[0].slice(0, 2).toUpperCase();\n return `${parts[0][0] ?? \"\"}${parts.at(-1)?.[0] ?? \"\"}`.toUpperCase();\n}\n\nfunction AccountAvatar({\n name,\n avatarUrl,\n secondaryContent,\n dashboardHref,\n}: {\n name: string;\n avatarUrl?: string | null;\n secondaryContent?: ReactNode;\n dashboardHref?: string;\n}) {\n const large = secondaryContent != null;\n const className = large ? \"polli:h-11 polli:w-11\" : \"polli:h-8 polli:w-8\";\n const avatar = avatarUrl ? (\n <img\n src={avatarUrl}\n alt=\"\"\n className={cn(\n className,\n \"polli:shrink-0 polli:rounded-full polli:object-cover\",\n )}\n />\n ) : (\n <span\n role=\"img\"\n aria-label={`${name} avatar`}\n className={cn(\n className,\n \"polli:flex polli:shrink-0 polli:items-center polli:justify-center polli:rounded-full polli:bg-theme-bg-pale polli:text-xs polli:font-semibold polli:text-theme-text-strong\",\n )}\n >\n {initials(name)}\n </span>\n );\n return dashboardHref ? (\n <a\n href={dashboardHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label=\"Open dashboard\"\n title=\"Open dashboard\"\n className=\"polli:shrink-0 polli:rounded-full polli:cursor-pointer polli:transition-transform polli:hover:scale-105 polli:hover:brightness-110 polli:focus-visible:outline-2 polli:focus-visible:outline-offset-2 polli:focus-visible:outline-current polli:motion-reduce:transition-none polli:motion-reduce:hover:scale-100\"\n >\n {avatar}\n </a>\n ) : (\n avatar\n );\n}\n\nexport type AccountIdentityProps = {\n name: string;\n avatarUrl?: string | null;\n secondaryContent?: ReactNode;\n /** Optional dashboard destination, owned by the caller. Opens in a new tab. */\n dashboardHref?: string;\n className?: string;\n};\n\nexport function AccountIdentity({\n name,\n avatarUrl,\n secondaryContent,\n dashboardHref,\n className,\n}: AccountIdentityProps) {\n return (\n <span\n className={cn(\n \"polli:flex polli:min-w-0 polli:items-center polli:gap-2 polli:rounded-full polli:bg-surface-opaque polli:p-1 polli:pr-3\",\n className,\n )}\n >\n <AccountAvatar\n name={name}\n avatarUrl={avatarUrl}\n dashboardHref={dashboardHref}\n secondaryContent={secondaryContent}\n />\n <AccountDetails name={name} secondaryContent={secondaryContent} />\n </span>\n );\n}\n\nfunction AccountDetails({\n name,\n secondaryContent,\n secondaryId,\n}: {\n name: string;\n secondaryContent?: ReactNode;\n secondaryId?: string;\n}) {\n return (\n <span className=\"polli:flex polli:min-w-0 polli:flex-col polli:items-start polli:text-left\">\n <span\n title={name}\n className=\"polli:max-w-full polli:truncate polli:text-sm polli:font-medium polli:leading-5 polli:text-theme-text-strong\"\n >\n {name}\n </span>\n {secondaryContent != null && (\n <span\n id={secondaryId}\n className=\"polli:inline-flex polli:min-h-5 polli:items-center polli:whitespace-nowrap polli:text-xs polli:leading-4 polli:text-theme-text-base\"\n >\n {secondaryContent}\n </span>\n )}\n </span>\n );\n}\n\nexport type AccountMenuProps = AccountIdentityProps & {\n /** The caller owns navigation, permissions and sign-out behavior. */\n children: DropdownProps[\"children\"];\n menuClassName?: string;\n side?: \"top\" | \"bottom\";\n menuLabel?: string;\n};\n\n/**\n * With `dashboardHref` the avatar is a link and the name/chevron open the\n * menu; without one the whole pill is the trigger.\n */\nexport function AccountMenu({\n name,\n avatarUrl,\n dashboardHref,\n secondaryContent,\n children,\n className,\n menuClassName,\n side = \"bottom\",\n menuLabel = `Account menu for ${name}`,\n}: AccountMenuProps) {\n const statusId = useId();\n const avatar = (\n <AccountAvatar\n name={name}\n avatarUrl={avatarUrl}\n dashboardHref={dashboardHref}\n secondaryContent={secondaryContent}\n />\n );\n\n return (\n <div\n data-theme=\"accent\"\n className={cn(\n \"polli:flex polli:min-w-0 polli:items-center polli:gap-2 polli:rounded-full polli:bg-theme-bg-active polli:p-1 polli:pr-3 polli:text-theme-text-strong polli:transition-colors polli:hover:bg-theme-bg-hover\",\n className,\n )}\n >\n {dashboardHref && avatar}\n <Dropdown\n align=\"end\"\n side={side}\n className={cn(\n \"polli:w-max polli:min-w-[var(--reference-width)] polli:p-1\",\n menuClassName,\n )}\n trigger={(open) => (\n <button\n type=\"button\"\n aria-label={menuLabel}\n aria-describedby={\n secondaryContent != null ? statusId : undefined\n }\n className=\"polli-control polli:flex polli:min-w-0 polli:flex-1 polli:items-center polli:gap-2 polli:self-stretch polli:rounded-full polli:text-theme-text-strong\"\n >\n {!dashboardHref && avatar}\n <AccountDetails\n name={name}\n secondaryContent={secondaryContent}\n secondaryId={statusId}\n />\n <ChevronIcon\n expanded={open}\n className=\"polli:ml-auto polli:h-4 polli:w-4 polli:text-theme-text-strong\"\n />\n </button>\n )}\n >\n {children}\n </Dropdown>\n </div>\n );\n}\n","import type { IconProps } from \"./types.ts\";\n\nconst strokeProps = {\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n} as const;\n\nexport function AppIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"4\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 20h20\" />\n </svg>\n );\n}\n\nexport function AccountIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"8\" r=\"4\" />\n <path d=\"M4 21a8 8 0 0 1 16 0\" />\n </svg>\n );\n}\n\nexport function ArrowRightIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M5 12h14M13 6l6 6-6 6\" />\n </svg>\n );\n}\n\nexport function BeakerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 3h6\" />\n <path d=\"M10 3v6.5L4.5 18a2 2 0 0 0 1.7 3h11.6a2 2 0 0 0 1.7-3L14 9.5V3\" />\n <path d=\"M7 14h10\" />\n </svg>\n );\n}\n\nexport function BotIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 8V4H8\" />\n <rect x=\"4\" y=\"8\" width=\"16\" height=\"12\" rx=\"2\" />\n <path d=\"M2 14h2M20 14h2\" />\n <path d=\"M9 13v2M15 13v2\" />\n </svg>\n );\n}\n\nexport function BookIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 4h5a3 3 0 0 1 3 3v13a2 2 0 0 0-2-2H4z\" />\n <path d=\"M20 4h-5a3 3 0 0 0-3 3v13a2 2 0 0 1 2-2h6z\" />\n </svg>\n );\n}\n\nexport function BugIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m8 2 1.9 1.9M14.1 3.9 16 2\" />\n <path d=\"M9 7V6a3 3 0 0 1 6 0v1\" />\n <path d=\"M12 20c-3.3 0-6-2.7-6-6v-3a6 6 0 0 1 12 0v3c0 3.3-2.7 6-6 6Z\" />\n <path d=\"M12 20v-9M6.5 9C4.6 8.8 3 7.1 3 5M6 13H2M3 21c0-2.1 1.7-3.9 3.8-4M17.5 9C19.4 8.8 21 7.1 21 5M18 13h4M21 21c0-2.1-1.7-3.9-3.8-4\" />\n </svg>\n );\n}\n\nexport function CheckIcon(props: IconProps) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n {...strokeProps}\n strokeWidth={2.5}\n {...props}\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n );\n}\n\nexport function ClipboardIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n );\n}\n\nexport function ClockIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <path d=\"M12 7v5l3 2\" />\n </svg>\n );\n}\n\nexport function DiscordIcon(props: IconProps) {\n return (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20.32 4.37A19.8 19.8 0 0 0 15.36 2.83a.07.07 0 0 0-.08.04c-.21.38-.45.88-.62 1.27a18.27 18.27 0 0 0-5.52 0 12.84 12.84 0 0 0-.63-1.27.08.08 0 0 0-.08-.04A19.74 19.74 0 0 0 3.47 4.37a.07.07 0 0 0-.03.03C.31 9.07-.55 13.61-.13 18.1a.08.08 0 0 0 .03.06 19.9 19.9 0 0 0 6.08 3.07.08.08 0 0 0 .09-.03c.47-.64.88-1.31 1.24-2.02a.08.08 0 0 0-.04-.1 13.08 13.08 0 0 1-1.9-.91.08.08 0 0 1-.01-.13c.13-.1.25-.2.37-.29a.07.07 0 0 1 .08-.01 14.24 14.24 0 0 0 12.38 0 .07.07 0 0 1 .08.01c.12.1.25.2.38.3a.08.08 0 0 1-.01.12 12.22 12.22 0 0 1-1.9.9.08.08 0 0 0-.04.11c.36.7.77 1.38 1.23 2.02a.08.08 0 0 0 .1.03 19.84 19.84 0 0 0 6.08-3.07.08.08 0 0 0 .03-.05c.5-5.2-.84-9.7-3.77-13.71a.06.06 0 0 0-.03-.03ZM8.02 15.37c-1.18 0-2.16-1.08-2.16-2.4 0-1.32.96-2.4 2.16-2.4 1.2 0 2.18 1.09 2.16 2.4 0 1.32-.96 2.4-2.16 2.4Zm7.96 0c-1.18 0-2.16-1.08-2.16-2.4 0-1.32.96-2.4 2.16-2.4 1.2 0 2.18 1.09 2.16 2.4 0 1.32-.95 2.4-2.16 2.4Z\"\n />\n </svg>\n );\n}\n\nexport function InstagramIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <circle\n cx=\"17.5\"\n cy=\"6.5\"\n r=\"1\"\n fill=\"currentColor\"\n stroke=\"none\"\n />\n </svg>\n );\n}\n\nexport function XSocialIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M18.24 2.25h3.31l-7.23 8.26 8.51 11.24h-6.66l-5.21-6.82-5.97 6.82H1.68l7.73-8.84L1.25 2.25h6.83l4.71 6.23 5.45-6.23Zm-1.16 17.52h1.83L7.08 4.13H5.12l11.96 15.64Z\"\n />\n </svg>\n );\n}\n\nexport function LinkedInIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M20.45 20.45h-3.56v-5.57c0-1.33-.03-3.04-1.85-3.04-1.86 0-2.14 1.45-2.14 2.94v5.67H9.34V9h3.42v1.56h.05c.47-.9 1.64-1.85 3.37-1.85 3.6 0 4.27 2.37 4.27 5.46v6.28ZM5.32 7.43a2.07 2.07 0 1 1 0-4.13 2.07 2.07 0 0 1 0 4.13ZM7.1 20.45H3.54V9H7.1v11.45Z\"\n />\n </svg>\n );\n}\n\nexport function DownloadIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4\" />\n <polyline points=\"7 10 12 15 17 10\" />\n <line x1=\"12\" y1=\"15\" x2=\"12\" y2=\"3\" />\n </svg>\n );\n}\n\nexport function ExpandIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M8 3H3v5M16 3h5v5M21 16v5h-5M3 16v5h5\" />\n </svg>\n );\n}\n\nexport function PlayIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path fill=\"currentColor\" d=\"M7 4.5v15l12-7.5z\" />\n </svg>\n );\n}\n\nexport function PauseIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...props}>\n <path fill=\"currentColor\" d=\"M6 4h4v16H6zM14 4h4v16h-4z\" />\n </svg>\n );\n}\n\nexport function CloudUploadIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M17.5 19H19a4 4 0 0 0 .4-8A7.5 7.5 0 0 0 5 9.5 5 5 0 0 0 6 19h1.5\" />\n <path d=\"m8.5 15.5 3.5-3.5 3.5 3.5M12 12v9\" />\n </svg>\n );\n}\n\nexport function ExternalLinkIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M7 17 17 7M9 7h8v8\" />\n </svg>\n );\n}\n\nexport function GenApiIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m8 3 4 1.5L16 3v18l-4-1.5L8 21z\" />\n <path d=\"M8 3v18M16 3v18\" />\n </svg>\n );\n}\n\nexport function GitBranchIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <line x1=\"6\" y1=\"3\" x2=\"6\" y2=\"15\" />\n <circle cx=\"18\" cy=\"6\" r=\"3\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <path d=\"M18 9a9 9 0 0 1-9 9\" />\n </svg>\n );\n}\n\nexport function GitPullRequestIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"6\" cy=\"6\" r=\"3\" />\n <circle cx=\"18\" cy=\"18\" r=\"3\" />\n <path d=\"M6 9v12M13 6h3a2 2 0 0 1 2 2v7\" />\n </svg>\n );\n}\n\nexport function GraduationCapIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21.42 10.92a1 1 0 0 0-.02-1.84L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.83l8.57 3.91a2 2 0 0 0 1.66 0z\" />\n <path d=\"M22 10v6\" />\n <path d=\"M6 12.5V16a6 3 0 0 0 12 0v-3.5\" />\n </svg>\n );\n}\n\nexport function SparklesIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 3l1.9 5.8a2 2 0 0 0 1.3 1.3L21 12l-5.8 1.9a2 2 0 0 0-1.3 1.3L12 21l-1.9-5.8a2 2 0 0 0-1.3-1.3L3 12l5.8-1.9a2 2 0 0 0 1.3-1.3z\" />\n </svg>\n );\n}\n\nexport function GitHubIcon(props: IconProps) {\n return (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" {...props}>\n <path\n fill=\"currentColor\"\n d=\"M12 .5A11.5 11.5 0 0 0 8.36 22.9c.58.11.79-.25.79-.56v-2.16c-3.21.7-3.89-1.38-3.89-1.38-.53-1.34-1.29-1.7-1.29-1.7-1.05-.72.08-.7.08-.7 1.16.08 1.77 1.19 1.77 1.19 1.04 1.76 2.71 1.25 3.37.96.11-.75.4-1.25.74-1.54-2.56-.29-5.26-1.28-5.26-5.7 0-1.26.45-2.29 1.19-3.1-.12-.29-.52-1.46.11-3.06 0 0 .97-.31 3.16 1.18a10.88 10.88 0 0 1 5.76 0c2.19-1.49 3.15-1.18 3.15-1.18.63 1.6.23 2.77.11 3.06.74.81 1.19 1.84 1.19 3.1 0 4.43-2.7 5.4-5.27 5.69.41.36.78 1.06.78 2.14v3.19c0 .31.21.68.8.56A11.5 11.5 0 0 0 12 .5Z\"\n />\n </svg>\n );\n}\n\nexport function ImageIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" />\n <circle cx=\"9\" cy=\"9\" r=\"2\" />\n <path d=\"m21 15-5-5L5 21\" />\n </svg>\n );\n}\n\nexport function CubeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m21 16-9 5-9-5V8l9-5 9 5z\" />\n <path d=\"m3 8 9 5 9-5\" />\n <path d=\"M12 13v8\" />\n </svg>\n );\n}\n\nexport function AudioIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 18V5l12-2v13\" />\n <circle cx=\"6\" cy=\"18\" r=\"3\" />\n <circle cx=\"18\" cy=\"16\" r=\"3\" />\n </svg>\n );\n}\n\nexport function LockIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n </svg>\n );\n}\n\nexport function LogInIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M10 17l5-5-5-5\" />\n <path d=\"M15 12H3\" />\n <path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\" />\n </svg>\n );\n}\n\nexport function LogOutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <path d=\"m16 17 5-5-5-5\" />\n <path d=\"M21 12H9\" />\n </svg>\n );\n}\n\nexport function MailIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"5\" width=\"18\" height=\"14\" rx=\"2\" />\n <path d=\"m3 7 9 7 9-7\" />\n </svg>\n );\n}\n\nexport function McpIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"4\" width=\"8\" height=\"16\" rx=\"1.5\" />\n <rect x=\"14\" y=\"4\" width=\"8\" height=\"16\" rx=\"1.5\" />\n <path d=\"M10 12h4\" />\n </svg>\n );\n}\n\nexport function MenuIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 7h16M4 12h16M4 17h16\" />\n </svg>\n );\n}\n\nexport function NewspaperIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M5 4h12a1 1 0 0 1 1 1v14a1 1 0 0 0 1 1H4a1 1 0 0 1-1-1V6a1 1 0 0 1 1-1h1z\" />\n <path d=\"M18 8h2a1 1 0 0 1 1 1v9a2 2 0 0 1-2 2\" />\n <path d=\"M7 8h7M7 12h7M7 16h4\" />\n </svg>\n );\n}\n\nexport function PlusIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n );\n}\n\nexport function TerminalIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <polyline points=\"4 8 8 12 4 16\" />\n <line x1=\"12\" y1=\"20\" x2=\"20\" y2=\"20\" />\n </svg>\n );\n}\n\nexport function ToolIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M14.7 6.3a1 1 0 0 0 0 1.4l2.1 2.1a1 1 0 0 0 1.4 0l4-4a6 6 0 0 1-8 8l-8 8a2.8 2.8 0 0 1-4-4l8-8a6 6 0 0 1 8-8l-4 4Z\" />\n </svg>\n );\n}\n\nexport function TargetIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"9\" />\n <circle cx=\"12\" cy=\"12\" r=\"5\" />\n <circle cx=\"12\" cy=\"12\" r=\"1.6\" fill=\"currentColor\" stroke=\"none\" />\n </svg>\n );\n}\n\nexport function TokensIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 9h16M4 15h16M10 3 8 21M16 3l-2 18\" />\n </svg>\n );\n}\n\nexport function UsageIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4 18a8 8 0 1 1 16 0\" />\n <path d=\"M12 18l3.5-5\" />\n <path d=\"M7 18h10\" />\n <path d=\"M7.5 12.5 6 11\" />\n <path d=\"M16.5 12.5 18 11\" />\n </svg>\n );\n}\n\nexport function WarningIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M10.3 3.1 1.8 17a2 2 0 0 0 1.7 3h17a2 2 0 0 0 1.7-3L13.7 3.1a2 2 0 0 0-3.4 0Z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n );\n}\n\nexport function TrendUpIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <polyline points=\"3 17 9 11 13 15 21 7\" />\n <polyline points=\"15 7 21 7 21 13\" />\n </svg>\n );\n}\n\nexport function EarningsIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <ellipse cx=\"10\" cy=\"6\" rx=\"6\" ry=\"3\" />\n <path d=\"M4 6v8c0 1.7 2.7 3 6 3 1.2 0 2.4-.2 3.3-.5\" />\n <path d=\"M16 6v4\" />\n <path d=\"M4 10c0 1.7 2.7 3 6 3 1.1 0 2.1-.1 3-.4\" />\n <path d=\"M18 14v6\" />\n <path d=\"M15 17h6\" />\n </svg>\n );\n}\n\nexport function WalletIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M3 7a2 2 0 0 1 2-2h13a2 2 0 0 1 2 2v2H5a2 2 0 0 0-2 2V7Z\" />\n <path d=\"M3 11a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-6Z\" />\n <circle cx=\"17\" cy=\"14\" r=\"1.25\" fill=\"currentColor\" />\n </svg>\n );\n}\n\nexport function MoonIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 12.8A9 9 0 1 1 11.2 3a7 7 0 0 0 9.8 9.8Z\" />\n </svg>\n );\n}\n\nexport function SunIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <path d=\"M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4\" />\n </svg>\n );\n}\n\nexport function XIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n );\n}\n\nexport function TrashIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M3 6h18\" />\n <path d=\"M8 6V4h8v2\" />\n <path d=\"m19 6-1 15H6L5 6\" />\n <path d=\"M10 11v6M14 11v6\" />\n </svg>\n );\n}\n\n// --- Model modality / capability / price glyphs (single-ink, replace emoji) ---\n\nexport function ChatIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" />\n </svg>\n );\n}\n\nexport function RobotIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"3\" y=\"6\" width=\"18\" height=\"15\" rx=\"3\" />\n <path d=\"M12 2v4M3 11H1v5h2M21 11h2v5h-2M8 17h8\" />\n <circle cx=\"9\" cy=\"12\" r=\"1\" />\n <circle cx=\"15\" cy=\"12\" r=\"1\" />\n </svg>\n );\n}\n\nexport function EyeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n );\n}\n\nexport function EyeOffIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n <path d=\"M3 3l18 18\" />\n </svg>\n );\n}\n\nexport function VideoIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m22 8-6 4 6 4V8z\" />\n <rect x=\"2\" y=\"6\" width=\"14\" height=\"12\" rx=\"2\" />\n </svg>\n );\n}\n\nexport function MicIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 2a3 3 0 0 0-3 3v7a3 3 0 0 0 6 0V5a3 3 0 0 0-3-3z\" />\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\" />\n <path d=\"M12 19v3\" />\n </svg>\n );\n}\n\nexport function SpeakerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M11 5 6 9H2v6h4l5 4z\" />\n <path d=\"M15.54 8.46a5 5 0 0 1 0 7.07\" />\n <path d=\"M19.07 4.93a10 10 0 0 1 0 14.14\" />\n </svg>\n );\n}\n\nexport function MegaphoneIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m3 11 18-5v12L3 14v-3z\" />\n <path d=\"m7 15 1.5 6H14l-2-7\" />\n </svg>\n );\n}\n\nexport function ReasoningIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 18h6M10 22h4M15.1 14c.2-1 .6-1.7 1.4-2.5A4.6 4.6 0 0 0 18 8 6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.8.8 1.2 1.5 1.4 2.5\" />\n </svg>\n );\n}\n\nexport function RocketIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z\" />\n <path d=\"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z\" />\n <path d=\"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0\" />\n <path d=\"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5\" />\n </svg>\n );\n}\n\nexport function SearchIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n );\n}\n\nexport function SignOutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4\" />\n <path d=\"m16 17 5-5-5-5\" />\n <path d=\"M21 12H9\" />\n </svg>\n );\n}\n\nexport function PowerIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 2v10\" />\n <path d=\"M18.4 6.6a9 9 0 1 1-12.77.04\" />\n </svg>\n );\n}\n\nexport function SparkleIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M9.94 15.5A2 2 0 0 0 8.5 14.06l-6.14-1.58a.5.5 0 0 1 0-.96L8.5 9.94A2 2 0 0 0 9.94 8.5l1.58-6.14a.5.5 0 0 1 .96 0L14.06 8.5A2 2 0 0 0 15.5 9.94l6.14 1.58a.5.5 0 0 1 0 .96L15.5 14.06a2 2 0 0 0-1.44 1.44l-1.58 6.14a.5.5 0 0 1-.96 0z\" />\n <path d=\"M20 3v4\" />\n <path d=\"M22 5h-4\" />\n <path d=\"M4 17v2\" />\n <path d=\"M5 18H3\" />\n </svg>\n );\n}\n\nexport function StarIcon({\n filled = false,\n ...props\n}: IconProps & { filled?: boolean }) {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n {...strokeProps}\n fill={filled ? \"currentColor\" : \"none\"}\n {...props}\n >\n <polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" />\n </svg>\n );\n}\n\nexport function CodeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"m16 18 6-6-6-6M8 6l-6 6 6 6\" />\n </svg>\n );\n}\n\nexport function DatabaseIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <ellipse cx=\"12\" cy=\"5\" rx=\"9\" ry=\"3\" />\n <path d=\"M3 5v14a9 3 0 0 0 18 0V5\" />\n <path d=\"M3 12a9 3 0 0 0 18 0\" />\n </svg>\n );\n}\n\nexport function CardIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <rect x=\"2\" y=\"5\" width=\"20\" height=\"14\" rx=\"2\" />\n <path d=\"M2 10h20\" />\n </svg>\n );\n}\n\nexport function SproutIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M7 20h10\" />\n <path d=\"M10 20c5.5-2.5.8-6.4 3-10\" />\n <path d=\"M9.5 9.4c1.1.8 1.8 2.2 2.3 3.7-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2 2.8-.5 4.4 0 5.5.8z\" />\n <path d=\"M14.1 6a7 7 0 0 0-1.1 4c1.9-.1 3.3-.6 4.3-1.4 1-1 1.6-2.3 1.7-4.6-2.7.1-4 1-4.9 2z\" />\n </svg>\n );\n}\n\nexport function PencilIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M12 20h9\" />\n <path d=\"M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z\" />\n </svg>\n );\n}\n\nexport function KeyIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"7.5\" cy=\"15.5\" r=\"5.5\" />\n <path d=\"m21 2-9.6 9.6\" />\n <path d=\"m15.5 7.5 3 3L22 7l-3-3\" />\n </svg>\n );\n}\n\nexport function GlobeIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20\" />\n <path d=\"M2 12h20\" />\n </svg>\n );\n}\n\nexport function ArrowLeftIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M19 12H5\" />\n <path d=\"m12 19-7-7 7-7\" />\n </svg>\n );\n}\n\nexport function RefreshIcon(props: IconProps) {\n return (\n <svg aria-hidden=\"true\" viewBox=\"0 0 24 24\" {...strokeProps} {...props}>\n <path d=\"M21 12a9 9 0 1 1-2.64-6.36\" />\n <path d=\"M21 3v6h-6\" />\n </svg>\n );\n}\n\nexport type { IconProps } from \"./types.ts\";\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n PropsWithChildren,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype HeadingSize = \"display\" | \"title\" | \"section\" | \"subsection\" | \"card\";\n\ntype TextSize = \"body\" | \"sm\" | \"xs\" | \"micro\";\ntype TextTone = \"base\" | \"strong\" | \"soft\" | \"muted\";\ntype TextWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n\nconst headingSizeClasses: Record<HeadingSize, string> = {\n display: \"polli:font-heading polli:text-5xl polli:leading-none\",\n title: \"polli:font-heading polli:text-4xl polli:leading-none\",\n section: \"polli:font-subheading polli:text-2xl polli:leading-tight\",\n subsection: \"polli:font-subheading polli:text-xl polli:leading-tight\",\n card: \"polli:font-subheading polli:text-lg polli:leading-tight\",\n};\n\nconst textSizeClasses: Record<TextSize, string> = {\n body: \"polli:text-base polli:leading-relaxed\",\n sm: \"polli:text-sm polli:leading-6\",\n xs: \"polli:text-xs polli:leading-normal\",\n micro: \"polli:text-micro polli:leading-normal\",\n};\n\nconst textToneClasses: Record<TextTone, string> = {\n base: \"polli:text-theme-text-base\",\n strong: \"polli:text-theme-text-strong\",\n soft: \"polli:text-theme-text-soft\",\n muted: \"polli:text-theme-text-muted\",\n};\n\nconst textWeightClasses: Record<TextWeight, string> = {\n normal: \"polli:font-normal\",\n medium: \"polli:font-medium\",\n semibold: \"polli:font-semibold\",\n bold: \"polli:font-bold\",\n};\n\nexport function headingClassName(size: HeadingSize, className?: string) {\n return cn(\n \"polli:break-words polli:text-theme-text-strong\",\n headingSizeClasses[size],\n className,\n );\n}\n\nfunction textClassName({\n size,\n tone,\n weight,\n className,\n}: {\n size: TextSize;\n tone: TextTone;\n weight: TextWeight;\n className?: string;\n}) {\n return cn(\n \"polli:break-words polli:font-body\",\n textSizeClasses[size],\n textToneClasses[tone],\n textWeightClasses[weight],\n className,\n );\n}\n\ntype HeadingOwnProps<T extends ElementType> = PropsWithChildren<{\n as?: T;\n size?: HeadingSize;\n className?: string;\n}>;\n\nexport type HeadingProps<T extends ElementType = \"h2\"> = HeadingOwnProps<T> &\n Omit<ComponentPropsWithoutRef<T>, keyof HeadingOwnProps<T>>;\n\nexport function Heading<T extends ElementType = \"h2\">({\n as,\n size = \"section\",\n className,\n children,\n ...rest\n}: HeadingProps<T>) {\n const Component = as || \"h2\";\n return (\n <Component {...rest} className={headingClassName(size, className)}>\n {children}\n </Component>\n );\n}\n\ntype TextOwnProps<T extends ElementType> = PropsWithChildren<{\n as?: T;\n size?: TextSize;\n tone?: TextTone;\n weight?: TextWeight;\n className?: string;\n}>;\n\nexport type TextProps<T extends ElementType = \"p\"> = TextOwnProps<T> &\n Omit<ComponentPropsWithoutRef<T>, keyof TextOwnProps<T>>;\n\nexport function Text<T extends ElementType = \"p\">({\n as,\n size = \"body\",\n tone = \"base\",\n weight = \"normal\",\n className,\n children,\n ...rest\n}: TextProps<T>) {\n const Component = as || \"p\";\n return (\n <Component\n {...rest}\n className={textClassName({ size, tone, weight, className })}\n >\n {children}\n </Component>\n );\n}\n","import type { ComponentPropsWithoutRef, FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { WarningIcon } from \"../primitives/icons/index.tsx\";\nimport { Text } from \"../primitives/Typography.tsx\";\n\ntype AlertIntent = \"info\" | \"advisory\" | \"warning\" | \"danger\";\n\nconst intentClasses: Record<AlertIntent, string> = {\n info: \"polli:bg-theme-bg-pale polli:text-theme-text-strong\",\n advisory: \"polli:bg-intent-warning-bg-light/45 polli:text-theme-text-base\",\n warning: \"polli:bg-intent-warning-bg-light polli:text-intent-warning-text\",\n danger: \"polli:bg-intent-danger-bg-light polli:text-intent-danger-text\",\n};\n\nexport type AlertProps = Omit<ComponentPropsWithoutRef<\"div\">, \"title\"> & {\n intent?: AlertIntent;\n title?: ReactNode;\n};\n\nexport const Alert: FC<AlertProps> = ({\n intent = \"info\",\n title,\n className,\n children,\n ...rest\n}) => (\n <div\n {...rest}\n role={intent === \"danger\" ? \"alert\" : \"status\"}\n className={cn(\n \"polli:rounded-xl polli:px-3 polli:py-2 polli:text-sm\",\n intent === \"advisory\" && \"polli:flex polli:items-start polli:gap-2\",\n intentClasses[intent],\n className,\n )}\n >\n {intent === \"advisory\" && (\n <WarningIcon className=\"polli:mt-0.5 polli:h-4 polli:w-4 polli:shrink-0 polli:text-intent-warning-text\" />\n )}\n <div className=\"polli:min-w-0\">\n {title &&\n (intent === \"advisory\" ? (\n <>\n <strong className=\"polli:font-semibold polli:text-theme-text-strong\">\n {title}\n </strong>{\" \"}\n —{\" \"}\n </>\n ) : (\n <Text\n as=\"div\"\n size=\"xs\"\n tone=\"strong\"\n weight=\"bold\"\n className=\"polli:mb-1 polli:uppercase polli:tracking-wide\"\n >\n {title}\n </Text>\n ))}\n {children}\n </div>\n </div>\n);\n","import type { CSSProperties, ReactNode, RefObject } from \"react\";\nimport { useEffect, useState } from \"react\";\nimport logoWordmarkUrl from \"../brand/lockup-horizontal.svg\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype ScrollTargetRef = RefObject<HTMLElement | null>;\n\nexport type AppHeaderProps = {\n children?: ReactNode;\n navLabel: string;\n autoHide?: boolean;\n scrollTargetRef?: ScrollTargetRef;\n brandHref?: string;\n brandLabel?: string;\n className?: string;\n innerClassName?: string;\n navClassName?: string;\n};\n\nconst brandWordmarkMaskUrl = `url('${logoWordmarkUrl}')`;\n\nconst brandWordmarkMask: CSSProperties = {\n WebkitMaskImage: brandWordmarkMaskUrl,\n WebkitMaskPosition: \"center\",\n WebkitMaskRepeat: \"no-repeat\",\n WebkitMaskSize: \"contain\",\n maskImage: brandWordmarkMaskUrl,\n maskPosition: \"center\",\n maskRepeat: \"no-repeat\",\n maskSize: \"contain\",\n};\n\nfunction scrollTopFor(target: HTMLElement | Window) {\n return target === window\n ? window.scrollY\n : (target as HTMLElement).scrollTop;\n}\n\nexport function AppHeader({\n children,\n navLabel,\n autoHide = false,\n scrollTargetRef,\n brandHref = \"https://pollinations.ai\",\n brandLabel = \"Pollinations\",\n className,\n innerClassName,\n navClassName,\n}: AppHeaderProps) {\n const [hidden, setHidden] = useState(false);\n\n useEffect(() => {\n if (!autoHide || typeof window === \"undefined\") {\n setHidden(false);\n return;\n }\n\n const target = scrollTargetRef?.current ?? window;\n let lastScrollTop = scrollTopFor(target);\n let frameId = 0;\n\n const handleScroll = () => {\n if (frameId) return;\n\n frameId = window.requestAnimationFrame(() => {\n frameId = 0;\n const nextScrollTop = scrollTopFor(target);\n const delta = nextScrollTop - lastScrollTop;\n\n if (nextScrollTop < 16) {\n setHidden(false);\n } else if (delta > 8) {\n setHidden(true);\n } else if (delta < -8) {\n setHidden(false);\n }\n\n lastScrollTop = nextScrollTop;\n });\n };\n\n target.addEventListener(\"scroll\", handleScroll, { passive: true });\n\n return () => {\n if (frameId) window.cancelAnimationFrame(frameId);\n target.removeEventListener(\"scroll\", handleScroll);\n };\n }, [autoHide, scrollTargetRef]);\n\n return (\n <header\n className={cn(\n \"polli:sticky polli:top-0 polli:z-30 polli:bg-app-bg polli:py-4\",\n \"polli:transition-transform polli:duration-200 polli:ease-out\",\n autoHide && \"polli:will-change-transform\",\n hidden ? \"polli:-translate-y-full\" : \"polli:translate-y-0\",\n className,\n )}\n onFocusCapture={() => setHidden(false)}\n >\n <div\n className={cn(\n \"polli:mx-auto polli:flex polli:w-full polli:max-w-5xl polli:flex-col polli:gap-4 polli:px-4 polli:sm:flex-row polli:sm:items-center polli:sm:justify-between polli:sm:px-6\",\n innerClassName,\n )}\n >\n <a\n href={brandHref}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"polli:inline-flex polli:shrink-0 polli:items-center polli:text-theme-text-strong\"\n >\n <span className=\"polli:sr-only\">{brandLabel}</span>\n <span\n aria-hidden=\"true\"\n className=\"polli:block polli:h-7 polli:w-[220px] polli:max-w-full polli:bg-current\"\n style={brandWordmarkMask}\n />\n </a>\n {children ? (\n <nav\n aria-label={navLabel}\n className={cn(\n \"polli:flex polli:min-w-0 polli:flex-wrap polli:items-center polli:gap-2\",\n navClassName,\n )}\n >\n {children}\n </nav>\n ) : null}\n </div>\n </header>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype SurfaceVariant = \"panel\" | \"card\" | \"card-themed\";\n\nconst variantClasses: Record<SurfaceVariant, string> = {\n panel: \"polli:rounded-2xl polli:bg-theme-bg-pale polli:p-6 polli:shadow-container\",\n card: \"polli:rounded-xl polli:bg-surface-opaque polli:p-4 polli:shadow-well\",\n \"card-themed\":\n \"polli:rounded-xl polli:bg-theme-bg-pale polli:p-4 polli:shadow-well\",\n};\n\ntype SurfaceOwnProps = {\n /**\n * Depth role (all opaque, elevation via shadow not borders):\n * - `panel` — Level 1 container: themed bg, container shadow\n * - `card` — Level 2 well: neutral surface, well shadow (default)\n * - `card-themed` — themed well: theme-tinted, well shadow\n */\n variant?: SurfaceVariant;\n className?: string;\n};\n\n/**\n * Polymorphic like Button, TabButton and LinkCard, so a card that is itself a\n * link renders one element instead of an anchor wrapping a div. Defaults to\n * <div>, so existing call sites are unchanged.\n */\nexport type SurfaceProps<T extends ElementType = \"div\"> = SurfaceOwnProps & {\n as?: T;\n} & Omit<ComponentPropsWithoutRef<T>, keyof SurfaceOwnProps | \"as\" | \"color\">;\n\nexport function Surface<T extends ElementType = \"div\">({\n as,\n variant = \"card\",\n className,\n children,\n ...rest\n}: SurfaceProps<T>) {\n const Component: ElementType = as || \"div\";\n\n return (\n <Component\n {...rest}\n className={cn(\"polli:min-w-0\", variantClasses[variant], className)}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Surface } from \"../primitives/Surface.tsx\";\nimport { Heading, Text } from \"../primitives/Typography.tsx\";\n\nexport type CalloutProps = {\n title: ReactNode;\n body: ReactNode;\n children: ReactNode;\n tone?: \"theme\" | \"dark\";\n className?: string;\n};\n\n/** Prominent closing panel with a title, supporting copy, and actions. */\nexport function Callout({\n title,\n body,\n children,\n tone = \"theme\",\n className,\n}: CalloutProps) {\n return (\n <Surface\n as=\"section\"\n variant=\"panel\"\n className={cn(\n \"polli:flex polli:flex-wrap polli:items-center polli:justify-between polli:gap-8 polli:rounded-3xl polli:px-6 polli:py-9 polli:sm:gap-10 polli:sm:px-10 polli:sm:py-12\",\n tone === \"dark\" ? \"dark polli:bg-brand-dark\" : undefined,\n className,\n )}\n >\n <div className=\"polli:flex polli:max-w-lg polli:flex-col polli:gap-2.5\">\n <Heading\n size=\"section\"\n className=\"polli:text-3xl polli:sm:text-4xl\"\n >\n {title}\n </Heading>\n <Text className=\"polli:text-theme-text-strong/75\">{body}</Text>\n </div>\n <div className=\"polli:flex polli:flex-wrap polli:items-center polli:gap-3\">\n {children}\n </div>\n </Surface>\n );\n}\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type MutableRefObject,\n type PropsWithChildren,\n type Ref,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype ScrollAxis = \"y\" | \"x\" | \"both\";\n\nconst axisClasses: Record<ScrollAxis, string> = {\n y: \"polli:overflow-y-auto polli:overflow-x-hidden\",\n x: \"polli:overflow-x-auto polli:overflow-y-hidden\",\n both: \"polli:overflow-auto\",\n};\n\ntype ScrollAreaOwnProps = {\n /** Scroll direction. Default `y`. */\n axis?: ScrollAxis;\n /** Use the system scrollbar instead of the custom auto-hiding track. */\n scrollbar?: \"subtle\" | \"native\";\n className?: string;\n};\n\nexport type ScrollAreaProps = PropsWithChildren<\n ScrollAreaOwnProps &\n Omit<ComponentPropsWithoutRef<\"div\">, keyof ScrollAreaOwnProps>\n>;\n\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n if (typeof ref === \"function\") ref(value);\n else if (ref) (ref as MutableRefObject<T | null>).current = value;\n}\n\n/** Scroll container with an optional themed, auto-hiding scrollbar. */\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n { axis = \"y\", scrollbar = \"subtle\", className, children, ...rest },\n externalRef,\n ) => {\n const innerRef = useRef<HTMLDivElement | null>(null);\n\n const setRef = useCallback(\n (node: HTMLDivElement | null) => {\n innerRef.current = node;\n assignRef(externalRef, node);\n },\n [externalRef],\n );\n\n useEffect(() => {\n if (scrollbar === \"native\") return;\n const element = innerRef.current;\n if (!element) return;\n\n let hideTimer: number | null = null;\n\n const clearHideTimer = () => {\n if (hideTimer !== null) {\n window.clearTimeout(hideTimer);\n hideTimer = null;\n }\n };\n\n const show = () => {\n element.dataset.scrollbarActive = \"true\";\n clearHideTimer();\n };\n\n const hide = () => {\n element.dataset.scrollbarActive = \"false\";\n clearHideTimer();\n };\n\n const scheduleHide = () => {\n clearHideTimer();\n hideTimer = window.setTimeout(hide, 2000);\n };\n\n const handleInteraction = () => {\n show();\n scheduleHide();\n };\n\n hide();\n\n element.addEventListener(\"scroll\", handleInteraction, {\n passive: true,\n });\n element.addEventListener(\"wheel\", handleInteraction, {\n passive: true,\n });\n element.addEventListener(\"touchstart\", handleInteraction, {\n passive: true,\n });\n element.addEventListener(\"pointerdown\", handleInteraction);\n element.addEventListener(\"keydown\", handleInteraction);\n element.addEventListener(\"focusin\", handleInteraction);\n element.addEventListener(\"focusout\", scheduleHide);\n\n return () => {\n clearHideTimer();\n element.removeEventListener(\"scroll\", handleInteraction);\n element.removeEventListener(\"wheel\", handleInteraction);\n element.removeEventListener(\"touchstart\", handleInteraction);\n element.removeEventListener(\"pointerdown\", handleInteraction);\n element.removeEventListener(\"keydown\", handleInteraction);\n element.removeEventListener(\"focusin\", handleInteraction);\n element.removeEventListener(\"focusout\", scheduleHide);\n };\n }, [scrollbar]);\n\n return (\n <div\n {...rest}\n ref={setRef}\n className={cn(\n scrollbar === \"subtle\" && \"polli-scrollbar-subtle\",\n \"polli:min-w-0 polli:max-w-full\",\n axisClasses[axis],\n className,\n )}\n >\n {children}\n </div>\n );\n },\n);\n\nScrollArea.displayName = \"ScrollArea\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ArrowRightIcon } from \"../primitives/icons/index.tsx\";\nimport { ScrollArea, type ScrollAreaProps } from \"../primitives/ScrollArea.tsx\";\n\nexport type ChatConversationProps = Omit<\n ScrollAreaProps,\n \"children\" | \"className\"\n> & {\n children: ReactNode;\n className?: string;\n viewportClassName?: string;\n showScrollButton?: boolean;\n onScrollToBottom?: () => void;\n scrollButtonLabel?: string;\n};\n\n/**\n * Scrollable chat transcript with an optional jump-to-latest control.\n * Message data and streaming remain the consumer's responsibility.\n */\nexport const ChatConversation = forwardRef<\n HTMLDivElement,\n ChatConversationProps\n>(\n (\n {\n children,\n className,\n viewportClassName,\n showScrollButton = false,\n onScrollToBottom,\n scrollButtonLabel = \"Scroll to latest message\",\n ...viewportProps\n },\n ref,\n ) => (\n <div className={cn(\"polli:relative polli:min-h-0\", className)}>\n <ScrollArea\n {...viewportProps}\n ref={ref}\n className={cn(\"polli:h-full polli:min-h-0\", viewportClassName)}\n >\n {children}\n </ScrollArea>\n {showScrollButton && onScrollToBottom && (\n <button\n type=\"button\"\n aria-label={scrollButtonLabel}\n title={scrollButtonLabel}\n onClick={onScrollToBottom}\n className=\"polli-control polli:absolute polli:bottom-3 polli:left-1/2 polli:flex polli:size-9 polli:-translate-x-1/2 polli:cursor-pointer polli:items-center polli:justify-center polli:rounded-full polli:border polli:border-theme-border/60 polli:bg-surface-opaque polli:text-theme-text-strong polli:shadow-well polli:transition-transform polli:hover:translate-y-0.5\"\n >\n <ArrowRightIcon className=\"polli:size-4 polli:rotate-90\" />\n </button>\n )}\n </div>\n ),\n);\n\nChatConversation.displayName = \"ChatConversation\";\n\nexport type ChatConversationContentProps = ComponentPropsWithoutRef<\"div\">;\n\nexport function ChatConversationContent({\n className,\n ...props\n}: ChatConversationContentProps) {\n return (\n <div\n className={cn(\n \"polli:flex polli:min-w-0 polli:flex-col polli:gap-5\",\n className,\n )}\n {...props}\n />\n );\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { RobotIcon } from \"../primitives/icons/index.tsx\";\nimport { Text } from \"../primitives/Typography.tsx\";\n\nexport type ChatMessageRole = \"user\" | \"assistant\" | \"system\";\n\nexport type ChatMessageProps = ComponentPropsWithoutRef<\"article\"> & {\n from: ChatMessageRole;\n};\n\n/** Protocol-neutral message surface inspired by AI Elements' Message suite. */\nexport function ChatMessage({\n from,\n className,\n children,\n ...props\n}: ChatMessageProps) {\n return (\n <article\n data-role={from}\n className={cn(\n \"polli:group/message polli:flex polli:w-fit polli:max-w-full polli:min-w-0 polli:flex-col polli:gap-3 polli:[overflow-wrap:anywhere] polli:rounded-xl polli:px-4 polli:py-3\",\n from === \"user\"\n ? \"polli:ml-auto polli:bg-theme-bg-active polli:text-theme-text-strong\"\n : \"polli:mr-auto polli:bg-surface-opaque polli:text-theme-text-base polli:shadow-well\",\n className,\n )}\n {...props}\n >\n {children}\n </article>\n );\n}\n\nexport type ChatMessageHeaderProps = ComponentPropsWithoutRef<\"header\"> & {\n from: ChatMessageRole;\n label?: ReactNode;\n icon?: ReactNode;\n};\n\nexport function ChatMessageHeader({\n from,\n label,\n icon,\n className,\n ...props\n}: ChatMessageHeaderProps) {\n const content =\n label ??\n (from === \"user\" ? \"You\" : from === \"assistant\" ? \"Agent\" : \"System\");\n return (\n <header\n className={cn(\n \"polli:flex polli:items-center polli:gap-2\",\n className,\n )}\n {...props}\n >\n {from === \"assistant\" &&\n (icon ?? (\n <span className=\"polli:flex polli:size-6 polli:items-center polli:justify-center polli:rounded-full polli:bg-theme-bg-active polli:text-theme-text-strong\">\n <RobotIcon className=\"polli:size-3.5\" />\n </span>\n ))}\n <Text\n as=\"span\"\n size=\"xs\"\n tone=\"muted\"\n weight=\"bold\"\n className=\"polli:uppercase polli:tracking-wide\"\n >\n {content}\n </Text>\n </header>\n );\n}\n\nexport type ChatMessageContentProps = ComponentPropsWithoutRef<\"div\">;\n\nexport function ChatMessageContent({\n className,\n ...props\n}: ChatMessageContentProps) {\n return (\n <div\n className={cn(\n \"polli:min-w-0 polli:[&_pre]:max-w-full polli:[&_pre]:overflow-x-auto polli:[&_table]:max-w-full polli:[&_table]:overflow-x-auto\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type ChatMessageActionsProps = ComponentPropsWithoutRef<\"footer\">;\n\nexport function ChatMessageActions({\n className,\n ...props\n}: ChatMessageActionsProps) {\n return (\n <footer\n className={cn(\n \"polli:flex polli:flex-wrap polli:items-center polli:gap-1 polli:pt-2\",\n className,\n )}\n {...props}\n />\n );\n}\n","import { forwardRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nexport type TextareaProps = React.ComponentPropsWithoutRef<\"textarea\"> & {\n error?: boolean;\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, rows = 4, ...props }, ref) => (\n <textarea\n ref={ref}\n rows={rows}\n data-error={error ? \"true\" : undefined}\n className={cn(\n \"polli-textarea polli:w-full polli:rounded-lg polli:border polli:px-3 polli:py-2\",\n \"polli:min-h-20 polli:resize-y polli:font-body polli:text-base\",\n \"polli:text-theme-text-strong\",\n \"polli:transition-colors\",\n \"polli:disabled:opacity-50 polli:disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n ),\n);\n\nTextarea.displayName = \"Textarea\";\n","import {\n type ComponentPropsWithoutRef,\n forwardRef,\n type ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Textarea, type TextareaProps } from \"../primitives/Textarea.tsx\";\n\nexport type ChatPromptInputProps = ComponentPropsWithoutRef<\"fieldset\">;\n\n/**\n * Composable prompt shell. Put attachments or controls before the textarea and\n * actions in ChatPromptInputFooter; submission stays owned by the parent form.\n */\nexport function ChatPromptInput({ className, ...props }: ChatPromptInputProps) {\n return (\n <fieldset\n className={cn(\"polli:m-0 polli:min-w-0 polli:p-0\", className)}\n {...props}\n />\n );\n}\n\nexport const ChatPromptTextarea = forwardRef<\n HTMLTextAreaElement,\n TextareaProps\n>(({ className, ...props }, ref) => (\n <Textarea\n {...props}\n ref={ref}\n className={cn(\"polli:resize-none\", className)}\n />\n));\n\nChatPromptTextarea.displayName = \"ChatPromptTextarea\";\n\nexport type ChatPromptInputFooterProps = ComponentPropsWithoutRef<\"div\"> & {\n start?: ReactNode;\n end?: ReactNode;\n};\n\nexport function ChatPromptInputFooter({\n start,\n end,\n children,\n className,\n ...props\n}: ChatPromptInputFooterProps) {\n return (\n <div\n className={cn(\n \"polli:flex polli:flex-wrap polli:items-end polli:gap-2\",\n className,\n )}\n {...props}\n >\n {children ?? (\n <>\n <div className=\"polli:flex polli:flex-wrap polli:items-center polli:gap-2\">\n {start}\n </div>\n <div className=\"polli:ml-auto polli:flex polli:items-center polli:gap-2\">\n {end}\n </div>\n </>\n )}\n </div>\n );\n}\n","import type {\n PropsWithChildren,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\n/** Semantic action roles. Label recipes live on Chip. */\ntype ButtonIntent = \"danger\" | \"info\" | \"neutral\" | \"brand\" | \"commit\";\nexport type ButtonAppearance = \"pill\" | \"raised\";\n\nconst pillSizes = {\n icon: \"polli:h-12 polli:w-12 polli:p-0\",\n xs: \"polli:h-5 polli:px-1.5 polli:py-0 polli:text-[11px] polli:leading-none\",\n sm: \"polli:min-h-7 polli:px-2 polli:pt-0.5 polli:pb-1\",\n md: \"polli:min-h-9 polli:px-4 polli:pt-1.5 polli:pb-2\",\n lg: \"polli:min-h-12 polli:px-6 polli:py-3\",\n} as const;\n\nconst raisedSizes = {\n icon: \"polli:h-12 polli:w-12 polli:p-0\",\n xs: \"polli:px-2 polli:py-1 polli:text-xs\",\n sm: \"polli:px-4 polli:py-2 polli:text-sm\",\n md: \"polli:px-7 polli:py-3.5 polli:text-base\",\n lg: \"polli:px-8 polli:py-4 polli:text-lg\",\n} as const;\n\nconst appearanceClasses: Record<ButtonAppearance, string> = {\n pill: \"polli:rounded-full\",\n raised:\n \"polli:rounded-xl polli:border-r-[3px] polli:border-b-[3px] polli:border-solid \" +\n \"polli:border-theme-text-strong/20 polli:hover:border-theme-text-strong/45\",\n};\n\n// Cascade-driven base — reads [data-theme] vars.\nconst themeClasses =\n \"polli:bg-theme-bg-active polli:text-theme-text-strong \" +\n \"polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:transition-colors\";\n\n// Primary and destructive actions use outlines at rest.\n// Two accent families share one look: `brand` for\n// signing in (identity, calm pale hover) and `commit` for granting or saving\n// (fills with the accent only under the pointer or keyboard focus).\nconst outlined =\n \"polli:border polli:border-theme-text-soft polli:bg-surface-white polli:text-theme-text-strong \" +\n \"polli:transition-colors polli:[.dark_&]:bg-transparent\";\nconst intentClasses: Record<ButtonIntent, string> = {\n brand: `${outlined} polli:hover:bg-theme-text-soft/10`,\n commit:\n `${outlined} polli:hover:border-theme-bg-active polli:hover:bg-theme-bg-active ` +\n \"polli:focus-visible:border-theme-bg-active polli:focus-visible:bg-theme-bg-active \" +\n \"polli:[.dark_&]:hover:bg-theme-bg-active polli:[.dark_&]:focus-visible:bg-theme-bg-active\",\n danger:\n \"polli:border polli:border-intent-danger-text polli:bg-transparent polli:text-intent-danger-text \" +\n \"polli:hover:bg-intent-danger-bg-hover polli:focus-visible:bg-intent-danger-bg-hover polli:transition-colors\",\n info:\n \"polli:bg-intent-info-bg-light polli:text-intent-info-text \" +\n \"polli:hover:bg-intent-info-bg-hover polli:transition-colors\",\n // Secondary actions never take the accent: one step stronger grey on hover.\n neutral:\n \"polli:bg-theme-bg-subtle polli:text-theme-text-base \" +\n \"polli:hover:bg-theme-text-muted/25 polli:hover:text-theme-text-strong polli:transition-colors\",\n};\n\ntype BaseButtonProps = {\n icon?: ReactNode;\n /** Optional semantic recipe; omit for the ambient theme button. */\n intent?: ButtonIntent;\n /** `raised` is the stronger website CTA treatment. */\n appearance?: ButtonAppearance;\n size?: keyof typeof pillSizes;\n className?: string;\n disabled?: boolean;\n};\n\nconst buttonClasses = ({\n intent,\n appearance = \"pill\",\n size,\n className,\n disabled,\n}: BaseButtonProps & { disabled?: boolean }) => {\n const colorClasses = intent ? intentClasses[intent] : themeClasses;\n const sizeClasses = appearance === \"raised\" ? raisedSizes : pillSizes;\n return cn(\n \"polli-control polli:inline-flex polli:items-center polli:justify-center polli:self-center polli:font-body polli:text-sm polli:font-medium polli:leading-normal polli:box-border polli:border polli:border-transparent\",\n disabled\n ? \"polli:opacity-50 polli:cursor-not-allowed\"\n : \"polli:hover:filter polli:hover:brightness-105 polli:cursor-pointer\",\n colorClasses,\n appearanceClasses[appearance],\n sizeClasses[size || \"md\"],\n className,\n );\n};\n\nexport type ButtonProps<T extends React.ElementType = \"button\"> =\n PropsWithChildren<BaseButtonProps> & {\n as?: T;\n } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseButtonProps | \"as\">;\n\nexport function Button<T extends React.ElementType = \"button\">({\n as,\n children,\n icon,\n intent,\n appearance,\n size,\n className,\n disabled,\n ...buttonProps\n}: ButtonProps<T>) {\n const Component: React.ElementType = as || \"button\";\n const isButton = Component === \"button\";\n const isAnchor = Component === \"a\";\n const buttonType = (\n buttonProps as {\n type?: \"button\" | \"submit\" | \"reset\";\n }\n ).type;\n const onClick = (\n buttonProps as {\n onClick?: (event: ReactMouseEvent) => void;\n }\n ).onClick;\n const handleClick = disabled\n ? (event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }\n : onClick;\n\n return (\n <Component\n {...buttonProps}\n data-intent={intent}\n {...(isButton ? { type: buttonType ?? \"button\", disabled } : {})}\n {...(!isButton && disabled\n ? { \"aria-disabled\": true, tabIndex: -1 }\n : {})}\n {...(isAnchor && disabled ? { href: undefined } : {})}\n onClick={handleClick}\n className={buttonClasses({\n intent,\n appearance,\n size,\n className,\n disabled,\n })}\n >\n {icon && (\n <span\n aria-hidden=\"true\"\n className=\"polli:mr-2 polli:flex polli:size-4 polli:shrink-0 polli:[&>svg]:size-full\"\n >\n {icon}\n </span>\n )}\n {children}\n </Component>\n );\n}\n","import {\n type CSSProperties,\n type FC,\n type KeyboardEvent,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../lib/cn.ts\";\n\nconst TOOLTIP_MAX_WIDTH = 288;\nconst TOOLTIP_VIEWPORT_MARGIN = 12;\n\ntype TooltipProps = {\n children: ReactNode;\n content: ReactNode;\n align?: \"start\" | \"center\";\n ariaLabel?: string;\n clampToViewport?: boolean;\n className?: string;\n maxWidth?: number;\n onClick?: () => void;\n stopClickPropagation?: boolean;\n style?: CSSProperties;\n tapEnabled?: boolean;\n triggerAs?: \"button\" | \"span\";\n /**\n * When true, the inner cursor wrapper uses display:contents so the\n * trigger's flex/grid layout applies directly to the caller's children\n * without an inline wrapper in the way.\n */\n displayContents?: boolean;\n};\n\nexport const Tooltip: FC<TooltipProps> = ({\n children,\n content,\n align = \"start\",\n ariaLabel,\n clampToViewport = true,\n className,\n maxWidth = TOOLTIP_MAX_WIDTH,\n onClick,\n stopClickPropagation = true,\n style,\n tapEnabled = false,\n triggerAs = \"button\",\n displayContents = false,\n}) => {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState<{\n top: number;\n left: number;\n maxWidth: number;\n transform?: CSSProperties[\"transform\"];\n }>({\n top: 0,\n left: 0,\n maxWidth,\n });\n const triggerRef = useRef<HTMLElement | null>(null);\n const tapPinnedRef = useRef(false);\n const tooltipId = useId();\n\n const closeTooltip = () => {\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n\n useEffect(() => {\n if (!showTooltip) return;\n\n const dismissOnOutsideTap = (event: PointerEvent) => {\n if (triggerRef.current?.contains(event.target as Node)) return;\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n const dismissOnEscape = (event: globalThis.KeyboardEvent) => {\n if (event.key !== \"Escape\") return;\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n const dismissOnViewportChange = () => {\n tapPinnedRef.current = false;\n setShowTooltip(false);\n };\n\n document.addEventListener(\"pointerdown\", dismissOnOutsideTap);\n document.addEventListener(\"keydown\", dismissOnEscape);\n window.addEventListener(\"scroll\", dismissOnViewportChange, {\n capture: true,\n passive: true,\n });\n window.addEventListener(\"resize\", dismissOnViewportChange);\n return () => {\n document.removeEventListener(\"pointerdown\", dismissOnOutsideTap);\n document.removeEventListener(\"keydown\", dismissOnEscape);\n window.removeEventListener(\"scroll\", dismissOnViewportChange, true);\n window.removeEventListener(\"resize\", dismissOnViewportChange);\n };\n }, [showTooltip]);\n\n const updateTooltipPosition = () => {\n if (triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const availableMaxWidth = Math.min(\n maxWidth,\n window.innerWidth - TOOLTIP_VIEWPORT_MARGIN * 2,\n );\n let left =\n align === \"center\" ? rect.left + rect.width / 2 : rect.left;\n let transform: CSSProperties[\"transform\"] =\n align === \"center\" ? \"translateX(-50%)\" : undefined;\n if (clampToViewport) {\n left = Math.min(\n Math.max(rect.left, TOOLTIP_VIEWPORT_MARGIN),\n Math.max(\n TOOLTIP_VIEWPORT_MARGIN,\n window.innerWidth -\n availableMaxWidth -\n TOOLTIP_VIEWPORT_MARGIN,\n ),\n );\n transform = undefined;\n }\n setTooltipPosition({\n top: rect.bottom + 4,\n left,\n maxWidth: availableMaxWidth,\n transform,\n });\n }\n };\n\n // Informational triggers use help; action wrappers can override the cursor.\n const triggerClassName = cn(\n \"polli-control polli:relative polli:cursor-help polli:text-left polli:inline-flex polli:items-center\",\n className,\n );\n\n const cursorClass = displayContents\n ? \"polli:contents\"\n : \"polli:cursor-inherit\";\n\n // Portal past the trigger's layout; stay inside modal dialogs so the popup\n // shares their stacking and accessible subtree.\n const popupClasses =\n \"polli:fixed polli:w-max polli:px-2 polli:py-1 polli:bg-surface-menu polli:text-theme-text-base polli:font-normal polli:leading-snug polli:tracking-normal polli:normal-case polli:not-italic polli:text-xs polli:rounded-md polli:shadow-md polli:z-[130] polli:pointer-events-none polli:transition-opacity polli:whitespace-pre-line polli:break-words\";\n\n const popupNode = content ? (\n <span\n id={tooltipId}\n role=\"tooltip\"\n aria-hidden={!showTooltip}\n style={{\n top: tooltipPosition.top,\n left: tooltipPosition.left,\n maxWidth: tooltipPosition.maxWidth,\n transform: tooltipPosition.transform,\n }}\n className={`${\n showTooltip\n ? \"polli:visible polli:opacity-100\"\n : \"polli:invisible polli:opacity-0\"\n } ${popupClasses}`}\n >\n {content}\n </span>\n ) : null;\n const tooltipPopup =\n popupNode && typeof document !== \"undefined\"\n ? createPortal(\n popupNode,\n triggerRef.current?.closest('[role=\"dialog\"]') ??\n document.body,\n )\n : popupNode;\n const contentNode = (\n <>\n <span className={cursorClass}>{children}</span>\n {tooltipPopup}\n </>\n );\n\n const sharedProps = {\n \"aria-label\": ariaLabel,\n \"aria-describedby\": content && showTooltip ? tooltipId : undefined,\n className: triggerClassName,\n onMouseEnter: () => {\n updateTooltipPosition();\n setShowTooltip(true);\n },\n onMouseLeave: () => {\n if (!tapPinnedRef.current) setShowTooltip(false);\n },\n onClick: (e: MouseEvent) => {\n if (stopClickPropagation) e.stopPropagation();\n if (onClick) {\n onClick();\n }\n if (!tapEnabled || !content) return;\n updateTooltipPosition();\n if (tapPinnedRef.current) {\n closeTooltip();\n return;\n }\n tapPinnedRef.current = true;\n setShowTooltip(true);\n },\n onFocus: () => {\n updateTooltipPosition();\n setShowTooltip(true);\n },\n onBlur: closeTooltip,\n style,\n };\n\n if (triggerAs === \"span\") {\n const handleKeyDown = (event: KeyboardEvent<HTMLSpanElement>) => {\n if (!tapEnabled || !content) return;\n if (event.key !== \"Enter\" && event.key !== \" \") return;\n event.preventDefault();\n updateTooltipPosition();\n if (tapPinnedRef.current) {\n closeTooltip();\n return;\n }\n tapPinnedRef.current = true;\n setShowTooltip(true);\n };\n const spanInteractionProps = {\n ...sharedProps,\n role: tapEnabled && content ? \"button\" : undefined,\n tabIndex: tapEnabled && content ? 0 : undefined,\n onKeyDown: tapEnabled && content ? handleKeyDown : undefined,\n };\n\n return (\n <span\n ref={(node) => {\n triggerRef.current = node;\n }}\n {...spanInteractionProps}\n >\n {contentNode}\n </span>\n );\n }\n\n return (\n <button\n ref={(node) => {\n triggerRef.current = node;\n }}\n type=\"button\"\n aria-label={ariaLabel}\n aria-describedby={content && showTooltip ? tooltipId : undefined}\n className={triggerClassName}\n onMouseEnter={sharedProps.onMouseEnter}\n onMouseLeave={sharedProps.onMouseLeave}\n onClick={sharedProps.onClick}\n onFocus={sharedProps.onFocus}\n onBlur={sharedProps.onBlur}\n style={style}\n >\n {contentNode}\n </button>\n );\n};\n","import {\n type ButtonHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Button, type ButtonProps } from \"../primitives/Button.tsx\";\nimport { Tooltip } from \"../primitives/Tooltip.tsx\";\n\ntype CopyValue = string | (() => string | Promise<string>);\n\nexport type CopyButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"className\" | \"onClick\" | \"type\" | \"value\"\n> & {\n value: CopyValue;\n children: ReactNode | ((copied: boolean) => ReactNode);\n copiedTimeoutMs?: number;\n tooltip?: ReactNode;\n tooltipAlign?: \"start\" | \"center\";\n tooltipClampToViewport?: boolean;\n tooltipMaxWidth?: number;\n copiedTooltip?: ReactNode;\n tooltipClassName?: string;\n className?: string | ((copied: boolean) => string);\n variant?: \"plain\" | \"button\";\n /** Button intent, used with `variant=\"button\"`. */\n intent?: ButtonProps<\"button\">[\"intent\"];\n onCopied?: () => void;\n onCopyError?: (error: unknown) => void;\n};\n\nexport function CopyButton({\n value,\n children,\n copiedTimeoutMs = 2000,\n tooltip = \"📋 Click to copy\",\n tooltipAlign,\n tooltipClampToViewport,\n tooltipMaxWidth,\n copiedTooltip = \"✅ Copied!\",\n tooltipClassName,\n className,\n variant = \"plain\",\n intent,\n onCopied,\n onCopyError,\n ...buttonProps\n}: CopyButtonProps) {\n const [copied, setCopied] = useState(false);\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n },\n [],\n );\n\n async function handleCopy(event: MouseEvent<HTMLButtonElement>) {\n event.stopPropagation();\n try {\n const text = typeof value === \"function\" ? await value() : value;\n await navigator.clipboard.writeText(text);\n setCopied(true);\n onCopied?.();\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(\n () => setCopied(false),\n copiedTimeoutMs,\n );\n } catch (error) {\n onCopyError?.(error);\n }\n }\n\n const Control = variant === \"button\" ? Button : \"button\";\n const button = (\n <Control\n {...buttonProps}\n {...(variant === \"button\" && intent ? { intent } : {})}\n type=\"button\"\n onClick={handleCopy}\n className={cn(\n \"polli-control\",\n buttonProps.disabled\n ? \"polli:cursor-not-allowed\"\n : \"polli:cursor-pointer\",\n typeof className === \"function\" ? className(copied) : className,\n )}\n >\n {typeof children === \"function\" ? children(copied) : children}\n </Control>\n );\n\n // A copy button with its own visible label doesn't need a hover tooltip —\n // pass tooltip={null} to opt out of the wrapper entirely.\n if (tooltip === null) {\n return button;\n }\n\n return (\n <Tooltip\n triggerAs=\"span\"\n content={copied ? copiedTooltip : tooltip}\n align={tooltipAlign}\n clampToViewport={tooltipClampToViewport}\n maxWidth={tooltipMaxWidth}\n displayContents\n tapEnabled={false}\n className={cn(\n buttonProps.disabled\n ? \"polli:cursor-not-allowed\"\n : \"polli:cursor-pointer\",\n tooltipClassName,\n )}\n >\n {button}\n </Tooltip>\n );\n}\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { CheckIcon, ClipboardIcon } from \"../primitives/icons/index.tsx\";\nimport { CopyButton } from \"./CopyButton.tsx\";\n\ntype CodeBlockOwnProps = {\n code: string;\n codeClassName?: string;\n language?: string;\n};\n\nexport type CodeBlockProps = CodeBlockOwnProps &\n Omit<ComponentPropsWithoutRef<\"div\">, keyof CodeBlockOwnProps | \"children\">;\n\nexport const CodeBlock: FC<CodeBlockProps> = ({\n code,\n codeClassName,\n language,\n className,\n ...rest\n}) => {\n const label = language || \"Code\";\n\n return (\n <div\n {...rest}\n className={cn(\n \"polli:min-w-0 polli:max-w-full polli:overflow-hidden polli:rounded-lg polli:border polli:border-theme-border polli:bg-theme-bg-pale\",\n className,\n )}\n >\n <div className=\"polli:flex polli:min-h-9 polli:items-center polli:justify-between polli:gap-3 polli:bg-theme-bg-subtle polli:px-3 polli:py-1.5\">\n <span className=\"polli:truncate polli:font-mono polli:text-[11px] polli:font-medium polli:uppercase polli:tracking-wide polli:text-theme-text-muted\">\n {label}\n </span>\n <CopyButton\n value={code}\n tooltip={null}\n aria-label=\"Copy code\"\n className=\"polli:flex polli:items-center polli:gap-1.5 polli:rounded-md polli:px-2 polli:py-1 polli:text-xs polli:font-medium polli:text-theme-text-base polli:transition-colors polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\"\n >\n {(copied) => (\n <>\n {copied ? (\n <CheckIcon className=\"polli:size-3.5\" />\n ) : (\n <ClipboardIcon className=\"polli:size-3.5\" />\n )}\n <span>{copied ? \"Copied\" : \"Copy\"}</span>\n </>\n )}\n </CopyButton>\n </div>\n <pre\n className={cn(\n \"polli:m-0 polli:min-w-0 polli:whitespace-pre-wrap polli:break-words polli:[overflow-wrap:anywhere] polli:[tab-size:4] polli:p-3 polli:font-mono polli:text-xs polli:leading-6 polli:text-theme-text-strong\",\n codeClassName,\n )}\n >\n <code>{code}</code>\n </pre>\n </div>\n );\n};\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\n\nexport type CollapsibleProps = {\n /** Header content (label, hint, etc). */\n label: ReactNode;\n expanded: boolean;\n onToggle: () => void;\n children: ReactNode;\n disabled?: boolean;\n /** Outer wrapper classes — border, rounding, etc. Keep it bg-free if the\n * expanded panel should stay transparent; put any fill on the trigger. */\n wrapperClassName?: string;\n /** Trigger/header base classes (e.g. a selected background). */\n triggerClassName?: string;\n /** Trigger hover classes. Defaults to `polli:hover:bg-theme-bg-active`. */\n hoverClassName?: string;\n /** Trigger focus classes. */\n focusClassName?: string;\n /** Expanded panel classes. Defaults to a top border separator. */\n panelClassName?: string;\n /** Accessible label for the toggle button when label is non-text. */\n ariaLabel?: string;\n};\n\n/**\n * Collapsible row composition. One chevron, one hover/rounded behaviour for\n * every collapsible in the UI. Use this for any \"click to reveal nested\n * content\" UI — nested settings, grouped controls, optional details.\n *\n * For dropdown/popover triggers (date pickers, menus) use a button with\n * <ChevronIcon /> directly — that's a different interaction.\n */\nexport const Collapsible: FC<CollapsibleProps> = ({\n label,\n expanded,\n onToggle,\n children,\n disabled = false,\n wrapperClassName,\n triggerClassName,\n hoverClassName = \"polli:hover:bg-theme-bg-active\",\n focusClassName,\n panelClassName = \"polli:border-t polli:border-theme-border polli:px-3 polli:pt-3 polli:pb-3\",\n ariaLabel,\n}) => (\n <div\n className={cn(\n \"polli:rounded-lg polli:border polli:transition-all\",\n wrapperClassName,\n disabled && \"polli:opacity-50\",\n )}\n >\n <button\n type=\"button\"\n aria-expanded={expanded}\n aria-label={ariaLabel}\n disabled={disabled}\n onClick={onToggle}\n className={cn(\n \"polli-control polli:w-full polli:flex polli:items-center polli:gap-3 polli:px-3 polli:py-2 polli:text-left polli:transition-colors\",\n expanded ? \"polli:rounded-t-lg\" : \"polli:rounded-lg\",\n triggerClassName,\n !disabled && hoverClassName,\n focusClassName,\n disabled ? \"polli:cursor-not-allowed\" : \"polli:cursor-pointer\",\n )}\n >\n <div className=\"polli:flex-1 polli:min-w-0\">{label}</div>\n <ChevronIcon\n expanded={expanded}\n className=\"polli:text-theme-text-soft\"\n />\n </button>\n {expanded && <div className={panelClassName}>{children}</div>}\n </div>\n);\n","// src/dialog.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"dialog\").parts(\n \"trigger\",\n \"backdrop\",\n \"positioner\",\n \"content\",\n \"title\",\n \"description\",\n \"closeTrigger\"\n);\nvar parts = anatomy.build();\nexport {\n anatomy,\n parts\n};\n","// src/dialog.dom.ts\nimport { queryAll } from \"@zag-js/dom-query\";\nimport { isFunction } from \"@zag-js/utils\";\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `dialog:${ctx.id}:positioner`;\nvar getBackdropId = (ctx) => ctx.ids?.backdrop ?? `dialog:${ctx.id}:backdrop`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `dialog:${ctx.id}:content`;\nvar getTriggerId = (ctx, value) => {\n const customId = ctx.ids?.trigger;\n if (customId != null) return isFunction(customId) ? customId(value) : customId;\n return value ? `dialog:${ctx.id}:trigger:${value}` : `dialog:${ctx.id}:trigger`;\n};\nvar getTitleId = (ctx) => ctx.ids?.title ?? `dialog:${ctx.id}:title`;\nvar getDescriptionId = (ctx) => ctx.ids?.description ?? `dialog:${ctx.id}:description`;\nvar getCloseTriggerId = (ctx) => ctx.ids?.closeTrigger ?? `dialog:${ctx.id}:close`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getBackdropEl = (ctx) => ctx.getById(getBackdropId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getTitleEl = (ctx) => ctx.getById(getTitleId(ctx));\nvar getDescriptionEl = (ctx) => ctx.getById(getDescriptionId(ctx));\nvar getCloseTriggerEl = (ctx) => ctx.getById(getCloseTriggerId(ctx));\nvar getTriggerEls = (ctx) => queryAll(ctx.getRootNode(), `[data-scope=\"dialog\"][data-part=\"trigger\"][data-ownedby=\"${ctx.id}\"]`);\nvar getActiveTriggerEl = (ctx, value) => {\n if (value == null) {\n return getTriggerEl(ctx) ?? getTriggerEls(ctx)[0];\n }\n return ctx.getById(getTriggerId(ctx, value));\n};\nexport {\n getActiveTriggerEl,\n getBackdropEl,\n getBackdropId,\n getCloseTriggerEl,\n getCloseTriggerId,\n getContentEl,\n getContentId,\n getDescriptionEl,\n getDescriptionId,\n getPositionerEl,\n getPositionerId,\n getTitleEl,\n getTitleId,\n getTriggerEl,\n getTriggerEls,\n getTriggerId\n};\n","// src/dialog.connect.ts\nimport { dataAttr } from \"@zag-js/dom-query\";\nimport { compact } from \"@zag-js/utils\";\nimport { parts } from \"./dialog.anatomy.mjs\";\nimport * as dom from \"./dialog.dom.mjs\";\nfunction connect(service, normalize) {\n const { state, send, context, prop, scope } = service;\n const ariaLabel = prop(\"aria-label\");\n const open = state.matches(\"open\");\n const triggerValue = context.get(\"triggerValue\");\n return {\n open,\n setOpen(nextOpen) {\n const open2 = state.matches(\"open\");\n if (open2 === nextOpen) return;\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\" });\n },\n triggerValue,\n setTriggerValue(value) {\n send({ type: \"TRIGGER_VALUE.SET\", value });\n },\n getTriggerProps(props = {}) {\n const { value } = props;\n const current = value == null ? false : triggerValue === value;\n return normalize.button({\n ...parts.trigger.attrs,\n dir: prop(\"dir\"),\n id: dom.getTriggerId(scope, value),\n \"data-ownedby\": scope.id,\n \"data-value\": value,\n \"aria-haspopup\": \"dialog\",\n type: \"button\",\n \"aria-expanded\": value == null ? open : open && current,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": dom.getContentId(scope),\n \"data-current\": dataAttr(current),\n onClick(event) {\n if (event.defaultPrevented) return;\n const shouldSwitch = open && value != null && !current;\n send({ type: shouldSwitch ? \"TRIGGER_VALUE.SET\" : \"TOGGLE\", value });\n }\n });\n },\n getBackdropProps() {\n return normalize.element({\n ...parts.backdrop.attrs,\n dir: prop(\"dir\"),\n hidden: !open,\n id: dom.getBackdropId(scope),\n \"data-state\": open ? \"open\" : \"closed\"\n });\n },\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n dir: prop(\"dir\"),\n id: dom.getPositionerId(scope),\n style: compact({\n pointerEvents: !open || !prop(\"modal\") ? \"none\" : void 0\n })\n });\n },\n getContentProps() {\n const rendered = context.get(\"rendered\");\n return normalize.element({\n ...parts.content.attrs,\n dir: prop(\"dir\"),\n role: prop(\"role\"),\n hidden: !open,\n id: dom.getContentId(scope),\n tabIndex: -1,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-modal\": prop(\"modal\"),\n \"aria-label\": ariaLabel || void 0,\n \"aria-labelledby\": ariaLabel || !rendered.title ? void 0 : dom.getTitleId(scope),\n \"aria-describedby\": rendered.description ? dom.getDescriptionId(scope) : void 0,\n style: compact({\n pointerEvents: prop(\"modal\") ? void 0 : \"auto\"\n })\n });\n },\n getTitleProps() {\n return normalize.element({\n ...parts.title.attrs,\n dir: prop(\"dir\"),\n id: dom.getTitleId(scope)\n });\n },\n getDescriptionProps() {\n return normalize.element({\n ...parts.description.attrs,\n dir: prop(\"dir\"),\n id: dom.getDescriptionId(scope)\n });\n },\n getCloseTriggerProps() {\n return normalize.button({\n ...parts.closeTrigger.attrs,\n dir: prop(\"dir\"),\n id: dom.getCloseTriggerId(scope),\n type: \"button\",\n onClick(event) {\n if (event.defaultPrevented) return;\n event.stopPropagation();\n send({ type: \"CLOSE\" });\n }\n });\n }\n };\n}\nexport {\n connect\n};\n","// src/dialog.machine.ts\nimport { ariaHidden } from \"@zag-js/aria-hidden\";\nimport { createMachine } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport { getInitialFocus, raf } from \"@zag-js/dom-query\";\nimport { trapFocus } from \"@zag-js/focus-trap\";\nimport { preventBodyScroll } from \"@zag-js/remove-scroll\";\nimport * as dom from \"./dialog.dom.mjs\";\nvar machine = createMachine({\n props({ props, scope }) {\n const alertDialog = props.role === \"alertdialog\";\n const initialFocusEl = alertDialog ? () => dom.getCloseTriggerEl(scope) : void 0;\n const modal = typeof props.modal === \"boolean\" ? props.modal : true;\n return {\n role: \"dialog\",\n modal,\n trapFocus: modal,\n preventScroll: modal,\n closeOnInteractOutside: modal && !alertDialog,\n closeOnEscape: true,\n restoreFocus: true,\n initialFocusEl,\n ...props\n };\n },\n initialState({ prop }) {\n const open = prop(\"open\") || prop(\"defaultOpen\");\n return open ? \"open\" : \"closed\";\n },\n context({ bindable, prop, scope }) {\n return {\n rendered: bindable(() => ({\n defaultValue: { title: true, description: true }\n })),\n triggerValue: bindable(() => ({\n defaultValue: prop(\"defaultTriggerValue\") ?? null,\n value: prop(\"triggerValue\"),\n onChange(value) {\n const onTriggerValueChange = prop(\"onTriggerValueChange\");\n if (!onTriggerValueChange) return;\n const triggerElement = dom.getActiveTriggerEl(scope, value);\n onTriggerValueChange({ value, triggerElement });\n }\n }))\n };\n },\n watch({ track, action, prop }) {\n track([() => prop(\"open\")], () => {\n action([\"toggleVisibility\"]);\n });\n },\n states: {\n open: {\n entry: [\"checkRenderedElements\", \"setInitialFocus\"],\n effects: [\"trackDismissableElement\", \"trapFocus\", \"preventScroll\", \"hideContentBelow\"],\n on: {\n \"CONTROLLED.CLOSE\": {\n target: \"closed\"\n },\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"TRIGGER_VALUE.SET\": {\n actions: [\"setTriggerValue\"]\n }\n }\n },\n closed: {\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n }\n ],\n TOGGLE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n },\n {\n target: \"open\",\n actions: [\"invokeOnOpen\", \"setTriggerValue\"]\n }\n ],\n \"TRIGGER_VALUE.SET\": {\n actions: [\"setTriggerValue\"]\n }\n }\n }\n },\n implementations: {\n guards: {\n isOpenControlled: ({ prop }) => prop(\"open\") != void 0\n },\n effects: {\n trackDismissableElement({ scope, send, prop }) {\n const getContentEl2 = () => dom.getContentEl(scope);\n return trackDismissableElement(getContentEl2, {\n type: \"dialog\",\n defer: true,\n pointerBlocking: prop(\"modal\"),\n layerStyleTargets: [() => dom.getBackdropEl(scope), () => dom.getPositionerEl(scope)],\n exclude: [dom.getTriggerEl(scope), ...dom.getTriggerEls(scope)].filter(Boolean),\n onInteractOutside(event) {\n prop(\"onInteractOutside\")?.(event);\n if (!prop(\"closeOnInteractOutside\")) {\n event.preventDefault();\n }\n },\n persistentElements: prop(\"persistentElements\"),\n onFocusOutside: prop(\"onFocusOutside\"),\n onPointerDownOutside: prop(\"onPointerDownOutside\"),\n onRequestDismiss: prop(\"onRequestDismiss\"),\n onEscapeKeyDown(event) {\n prop(\"onEscapeKeyDown\")?.(event);\n if (!prop(\"closeOnEscape\")) {\n event.preventDefault();\n }\n },\n onDismiss() {\n send({ type: \"CLOSE\", src: \"interact-outside\" });\n }\n });\n },\n preventScroll({ scope, prop }) {\n if (!prop(\"preventScroll\")) return;\n return preventBodyScroll(scope.getDoc());\n },\n trapFocus({ scope, prop, context }) {\n if (!prop(\"trapFocus\")) return;\n const contentEl = () => dom.getContentEl(scope);\n return trapFocus(contentEl, {\n preventScroll: true,\n returnFocusOnDeactivate: !!prop(\"restoreFocus\"),\n initialFocus: prop(\"initialFocusEl\"),\n setReturnFocus: (el) => {\n const finalFocusEl = prop(\"finalFocusEl\")?.();\n if (finalFocusEl) return finalFocusEl;\n const triggerValue = context.get(\"triggerValue\");\n if (triggerValue) {\n const activeTriggerEl = dom.getActiveTriggerEl(scope, triggerValue);\n if (activeTriggerEl) return activeTriggerEl;\n }\n const fallbackTrigger = dom.getTriggerEls(scope)[0];\n if (fallbackTrigger) return fallbackTrigger;\n return el;\n },\n getShadowRoot: true\n });\n },\n hideContentBelow({ scope, prop }) {\n if (!prop(\"modal\")) return;\n const getElements = () => [dom.getContentEl(scope)];\n return ariaHidden(getElements, { defer: true });\n }\n },\n actions: {\n setInitialFocus({ prop, scope }) {\n if (prop(\"trapFocus\")) return;\n raf(() => {\n const element = getInitialFocus({\n root: dom.getContentEl(scope),\n getInitialEl: prop(\"initialFocusEl\")\n });\n element?.focus({ preventScroll: true });\n });\n },\n checkRenderedElements({ context, scope }) {\n raf(() => {\n context.set(\"rendered\", {\n title: !!dom.getTitleEl(scope),\n description: !!dom.getDescriptionEl(scope)\n });\n });\n },\n invokeOnClose({ prop }) {\n prop(\"onOpenChange\")?.({ open: false });\n },\n invokeOnOpen({ prop }) {\n prop(\"onOpenChange\")?.({ open: true });\n },\n setTriggerValue({ context, event }) {\n if (event.value === void 0) return;\n context.set(\"triggerValue\", event.value);\n },\n toggleVisibility({ prop, send, event }) {\n send({\n type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\",\n previousEvent: event\n });\n }\n }\n }\n});\nexport {\n machine\n};\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/dialog/use-dialog-context.ts\nvar [DialogProvider, useDialogContext] = createContext({\n\tname: \"DialogContext\",\n\thookName: \"useDialogContext\",\n\tproviderName: \"<DialogProvider />\"\n});\n//#endregion\nexport { DialogProvider, useDialogContext };\n","\"use client\";\nimport { createContext } from \"./create-context.js\";\nimport { createSplitProps } from \"./create-split-props.js\";\n//#region src/utils/render-strategy.ts\nvar [RenderStrategyPropsProvider, useRenderStrategyPropsContext] = createContext({\n\tname: \"RenderStrategyContext\",\n\thookName: \"useRenderStrategyContext\",\n\tproviderName: \"<RenderStrategyPropsProvider />\"\n});\nvar splitRenderStrategyProps = (props) => createSplitProps()(props, [\"lazyMount\", \"unmountOnExit\"]);\n//#endregion\nexport { RenderStrategyPropsProvider, splitRenderStrategyProps, useRenderStrategyPropsContext };\n","\"use client\";\nimport { useRenderStrategyPropsContext } from \"../../utils/render-strategy.js\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-backdrop.tsx\nvar DialogBackdrop = forwardRef((props, ref) => {\n\tconst dialog = useDialogContext();\n\tconst presence = usePresence({\n\t\t...useRenderStrategyPropsContext(),\n\t\tpresent: dialog.open\n\t});\n\tconst mergedProps = mergeProps(dialog.getBackdropProps(), presence.getPresenceProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref: composeRefs(presence.ref, ref)\n\t});\n});\nDialogBackdrop.displayName = \"DialogBackdrop\";\n//#endregion\nexport { DialogBackdrop };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-close-trigger.tsx\nvar DialogCloseTrigger = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useDialogContext().getCloseTriggerProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nDialogCloseTrigger.displayName = \"DialogCloseTrigger\";\n//#endregion\nexport { DialogCloseTrigger };\n","\"use client\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-content.tsx\nvar DialogContent = forwardRef((props, ref) => {\n\tconst dialog = useDialogContext();\n\tconst presence = usePresenceContext();\n\tconst mergedProps = mergeProps(dialog.getContentProps(), presence.getPresenceProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref: composeRefs(presence.ref, ref)\n\t});\n});\nDialogContent.displayName = \"DialogContent\";\n//#endregion\nexport { DialogContent };\n","\"use client\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\n//#region src/components/dialog/dialog-context.tsx\nvar DialogContext = (props) => props.children(useDialogContext());\n//#endregion\nexport { DialogContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-description.tsx\nvar DialogDescription = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useDialogContext().getDescriptionProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nDialogDescription.displayName = \"DialogDescription\";\n//#endregion\nexport { DialogDescription };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-positioner.tsx\nvar DialogPositioner = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useDialogContext().getPositionerProps(), props);\n\tif (usePresenceContext().unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nDialogPositioner.displayName = \"DialogPositioner\";\n//#endregion\nexport { DialogPositioner };\n","\"use client\";\nimport { useEnvironmentContext } from \"../../providers/environment/use-environment-context.js\";\nimport { useLocaleContext } from \"../../providers/locale/use-locale-context.js\";\nimport * as dialog from \"@zag-js/dialog\";\nimport { useId } from \"react\";\nimport { normalizeProps, useMachine } from \"@zag-js/react\";\n//#region src/components/dialog/use-dialog.ts\nvar useDialog = (props) => {\n\tconst id = useId();\n\tconst { getRootNode } = useEnvironmentContext();\n\tconst { dir } = useLocaleContext();\n\tconst machineProps = {\n\t\tid,\n\t\tgetRootNode,\n\t\tdir,\n\t\t...props\n\t};\n\tconst service = useMachine(dialog.machine, machineProps);\n\treturn dialog.connect(service, normalizeProps);\n};\n//#endregion\nexport { useDialog };\n","\"use client\";\nimport { RenderStrategyPropsProvider, splitRenderStrategyProps } from \"../../utils/render-strategy.js\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { DialogProvider } from \"./use-dialog-context.js\";\nimport { useDialog } from \"./use-dialog.js\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-root.tsx\nvar DialogRoot = (props) => {\n\tconst [presenceProps, { children, ...localProps }] = splitPresenceProps(props);\n\tconst [renderStrategyProps] = splitRenderStrategyProps(presenceProps);\n\tconst dialog = useDialog(localProps);\n\treturn /* @__PURE__ */ jsx(DialogProvider, {\n\t\tvalue: dialog,\n\t\tchildren: /* @__PURE__ */ jsx(RenderStrategyPropsProvider, {\n\t\t\tvalue: renderStrategyProps,\n\t\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\t\tvalue: usePresence(mergeProps({ present: dialog.open }, presenceProps)),\n\t\t\t\tchildren\n\t\t\t})\n\t\t})\n\t});\n};\n//#endregion\nexport { DialogRoot };\n","\"use client\";\nimport { RenderStrategyPropsProvider, splitRenderStrategyProps } from \"../../utils/render-strategy.js\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { DialogProvider } from \"./use-dialog-context.js\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-root-provider.tsx\nvar DialogRootProvider = (props) => {\n\tconst [presenceProps, { value: dialog, children }] = splitPresenceProps(props);\n\tconst [renderStrategyProps] = splitRenderStrategyProps(presenceProps);\n\treturn /* @__PURE__ */ jsx(DialogProvider, {\n\t\tvalue: dialog,\n\t\tchildren: /* @__PURE__ */ jsx(RenderStrategyPropsProvider, {\n\t\t\tvalue: renderStrategyProps,\n\t\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\t\tvalue: usePresence(mergeProps({ present: dialog.open }, presenceProps)),\n\t\t\t\tchildren\n\t\t\t})\n\t\t})\n\t});\n};\n//#endregion\nexport { DialogRootProvider };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-title.tsx\nvar DialogTitle = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useDialogContext().getTitleProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.h2, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nDialogTitle.displayName = \"DialogTitle\";\n//#endregion\nexport { DialogTitle };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { useDialogContext } from \"./use-dialog-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/dialog/dialog-trigger.tsx\nvar splitTriggerProps = createSplitProps();\nvar DialogTrigger = forwardRef((props, ref) => {\n\tconst [triggerProps, localProps] = splitTriggerProps(props, [\"value\"]);\n\tconst dialog = useDialogContext();\n\tconst presence = usePresenceContext();\n\tconst triggerPropsRaw = dialog.getTriggerProps(triggerProps);\n\tconst mergedProps = mergeProps({\n\t\t...triggerPropsRaw,\n\t\t\"aria-controls\": presence.unmounted ? void 0 : triggerPropsRaw[\"aria-controls\"]\n\t}, localProps);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nDialogTrigger.displayName = \"DialogTrigger\";\n//#endregion\nexport { DialogTrigger };\n","import { __exportAll } from \"../../_virtual/_rolldown/runtime.js\";\nimport { DialogBackdrop } from \"./dialog-backdrop.js\";\nimport { DialogCloseTrigger } from \"./dialog-close-trigger.js\";\nimport { DialogContent } from \"./dialog-content.js\";\nimport { DialogContext } from \"./dialog-context.js\";\nimport { DialogDescription } from \"./dialog-description.js\";\nimport { DialogPositioner } from \"./dialog-positioner.js\";\nimport { DialogRoot } from \"./dialog-root.js\";\nimport { DialogRootProvider } from \"./dialog-root-provider.js\";\nimport { DialogTitle } from \"./dialog-title.js\";\nimport { DialogTrigger } from \"./dialog-trigger.js\";\n//#region src/components/dialog/dialog.ts\nvar dialog_exports = /* @__PURE__ */ __exportAll({\n\tBackdrop: () => DialogBackdrop,\n\tCloseTrigger: () => DialogCloseTrigger,\n\tContent: () => DialogContent,\n\tContext: () => DialogContext,\n\tDescription: () => DialogDescription,\n\tPositioner: () => DialogPositioner,\n\tRoot: () => DialogRoot,\n\tRootProvider: () => DialogRootProvider,\n\tTitle: () => DialogTitle,\n\tTrigger: () => DialogTrigger\n});\n//#endregion\nexport { dialog_exports };\n","import { Dialog as ArkDialog } from \"@ark-ui/react/dialog\";\nimport { Portal } from \"@ark-ui/react/portal\";\nimport type { ComponentPropsWithoutRef, FC, ReactNode } from \"react\";\nimport { useRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ScrollArea, type ScrollAreaProps } from \"./ScrollArea.tsx\";\nimport { headingClassName } from \"./Typography.tsx\";\n\nconst sizeClasses = {\n sm: \"polli:max-w-md\",\n md: \"polli:max-w-xl\",\n lg: \"polli:max-w-[800px]\",\n xl: \"polli:max-w-6xl\",\n} as const;\n\nexport type DialogProps = {\n open: boolean;\n onOpenChange?: (open: boolean) => void;\n trigger?: ReactNode;\n triggerAsChild?: boolean;\n triggerClassName?: string;\n title?: ReactNode;\n ariaLabel?: string;\n labelledBy?: string;\n size?: keyof typeof sizeClasses;\n showBackdrop?: boolean;\n backdropBlur?: boolean;\n positionerClassName?: string;\n contentClassName?: string;\n children: ReactNode;\n};\n\nexport const Dialog: FC<DialogProps> = ({\n open,\n onOpenChange,\n trigger,\n triggerAsChild = false,\n triggerClassName,\n title,\n ariaLabel,\n labelledBy,\n size = \"md\",\n showBackdrop = true,\n backdropBlur = true,\n positionerClassName,\n contentClassName,\n children,\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n\n return (\n <ArkDialog.Root\n open={open}\n initialFocusEl={() => contentRef.current}\n onOpenChange={(details) => onOpenChange?.(details.open)}\n >\n {trigger && (\n <ArkDialog.Trigger\n asChild={triggerAsChild}\n className={triggerClassName}\n >\n {trigger}\n </ArkDialog.Trigger>\n )}\n <Portal>\n {showBackdrop && (\n <ArkDialog.Backdrop\n // Scrim must DARKEN in both modes — ink-950 inverts\n // (near-white in dark) and would brighten the page.\n // Fixed black + a soft blur dims and de-focuses.\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[100] polli:bg-[#000]/50\",\n backdropBlur && \"polli:backdrop-blur-sm\",\n )}\n />\n )}\n <ArkDialog.Positioner\n className={cn(\n \"polli:fixed polli:inset-0 polli:z-[110] polli:flex polli:h-dvh polli:items-start polli:justify-center polli:overflow-hidden polli:p-0 polli:sm:p-4\",\n positionerClassName,\n )}\n >\n <ArkDialog.Content\n ref={contentRef}\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n className={cn(\n \"polli:flex polli:h-dvh polli:max-h-dvh polli:w-full polli:max-sm:max-w-none polli:flex-col polli:overflow-y-auto polli:bg-theme-bg-pale polli:outline-none polli:focus:outline-none polli:focus-visible:outline-none polli:sm:my-auto polli:sm:h-auto polli:sm:max-h-[calc(100dvh-2rem)] polli:sm:rounded-2xl polli:sm:shadow-container\",\n sizeClasses[size],\n contentClassName,\n )}\n >\n {title && <DialogHeader title={title} />}\n {children}\n </ArkDialog.Content>\n </ArkDialog.Positioner>\n </Portal>\n </ArkDialog.Root>\n );\n};\n\nexport const DialogTitle = ArkDialog.Title;\nexport const DialogDescription = ArkDialog.Description;\n\nexport type DialogHeaderProps = Omit<\n ComponentPropsWithoutRef<\"div\">,\n \"title\"\n> & {\n title?: ReactNode;\n description?: ReactNode;\n inBody?: boolean;\n titleClassName?: string;\n descriptionClassName?: string;\n};\n\nexport const DialogHeader: FC<DialogHeaderProps> = ({\n title,\n description,\n children,\n inBody = false,\n className,\n titleClassName,\n descriptionClassName,\n ...props\n}) => {\n return (\n <div\n className={cn(\n inBody\n ? \"polli:shrink-0 polli:pt-2 polli:pb-4\"\n : \"polli:shrink-0 polli:p-6 polli:pb-4\",\n className,\n )}\n {...props}\n >\n {title && (\n <DialogTitle\n className={cn(headingClassName(\"section\"), titleClassName)}\n >\n {title}\n </DialogTitle>\n )}\n {description && (\n <DialogDescription\n className={cn(\n \"polli:mt-1 polli:font-body polli:text-sm polli:font-normal polli:leading-5 polli:text-theme-text-base\",\n descriptionClassName,\n )}\n >\n {description}\n </DialogDescription>\n )}\n {children}\n </div>\n );\n};\n\nexport type DialogFooterProps = ComponentPropsWithoutRef<\"div\">;\n\nexport type DialogBodyProps = ScrollAreaProps & {\n actions?: ReactNode;\n footnote?: ReactNode;\n bodyClassName?: string;\n};\n\n/** Full-height scroll area with floating actions and an optional bottom link. */\nexport function DialogBody({\n children,\n actions,\n footnote,\n bodyClassName,\n className,\n ...props\n}: DialogBodyProps) {\n return (\n <ScrollArea\n {...props}\n className={cn(\n \"polli:flex polli:min-h-0 polli:flex-1 polli:flex-col polli:overscroll-contain\",\n className,\n )}\n >\n <div\n className={cn(\n \"polli:grow polli:space-y-4 polli:px-6 polli:py-4\",\n bodyClassName,\n )}\n >\n {children}\n </div>\n {(actions || footnote) && (\n <div className=\"polli-dialog-floating-controls polli:pointer-events-none polli:sticky polli:bottom-0 polli:z-10\">\n {actions && (\n <DialogFooter className=\"polli:pointer-events-auto\">\n {actions}\n </DialogFooter>\n )}\n {footnote && (\n <div className=\"polli:pointer-events-auto\">\n {footnote}\n </div>\n )}\n </div>\n )}\n </ScrollArea>\n );\n}\n\nexport const DialogFooter: FC<DialogFooterProps> = ({\n children,\n className,\n ...props\n}) => {\n return (\n <div\n className={cn(\n \"polli:flex polli:shrink-0 polli:flex-wrap polli:items-center polli:justify-end polli:gap-3 polli:bg-transparent polli:p-6 polli:pt-4\",\n className,\n )}\n {...props}\n >\n {children}\n </div>\n );\n};\n","import type { ReactNode } from \"react\";\nimport { Button } from \"../primitives/Button.tsx\";\nimport {\n Dialog,\n DialogBody,\n DialogHeader,\n type DialogProps,\n} from \"../primitives/Dialog.tsx\";\nimport { CheckIcon, TrashIcon, XIcon } from \"../primitives/icons/index.tsx\";\n\ntype ConfirmIntent = \"danger\" | \"info\" | \"neutral\" | \"commit\";\n\nconst defaultIcons: Record<ConfirmIntent, ReactNode> = {\n danger: <TrashIcon />,\n commit: <CheckIcon />,\n info: <CheckIcon />,\n neutral: <CheckIcon />,\n};\n\nexport type ConfirmationDialogProps = {\n open: boolean;\n title: ReactNode;\n /** Short explanation rendered as body text. */\n description?: ReactNode;\n /** Extra body content below the description (alerts, inputs). */\n children?: ReactNode;\n confirmLabel: ReactNode;\n /** Confirm button recipe; also picks the default confirm icon. */\n intent?: ConfirmIntent;\n /** Override the confirm icon when the action is not a plain delete/confirm. */\n confirmIcon?: ReactNode;\n confirmDisabled?: boolean;\n cancelDisabled?: boolean;\n onConfirm: () => void;\n onCancel: () => void;\n size?: DialogProps[\"size\"];\n};\n\n/** One floating Cancel + confirm action for every yes/no dialog. */\nexport function ConfirmationDialog({\n open,\n title,\n description,\n children,\n confirmLabel,\n intent = \"danger\",\n confirmIcon,\n confirmDisabled = false,\n cancelDisabled = false,\n onConfirm,\n onCancel,\n size = \"md\",\n}: ConfirmationDialogProps) {\n const actions = (\n <>\n <Button\n type=\"button\"\n intent=\"neutral\"\n icon={<XIcon />}\n onClick={onCancel}\n disabled={cancelDisabled}\n >\n Cancel\n </Button>\n <Button\n type=\"button\"\n intent={intent}\n icon={confirmIcon ?? defaultIcons[intent]}\n onClick={onConfirm}\n disabled={confirmDisabled}\n >\n {confirmLabel}\n </Button>\n </>\n );\n\n return (\n <Dialog\n open={open}\n onOpenChange={(next) => !next && onCancel()}\n size={size}\n contentClassName=\"polli:overflow-hidden\"\n >\n <DialogBody actions={actions}>\n <DialogHeader inBody title={title} />\n {description && (\n <p className=\"polli:text-sm polli:leading-relaxed\">\n {description}\n </p>\n )}\n {children}\n </DialogBody>\n </Dialog>\n );\n}\n","import type { ComponentPropsWithoutRef, ElementType, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nconst sizeClasses = {\n page: \"polli:text-sm polli:tracking-widest polli:text-theme-text-soft\",\n card: \"polli:text-xs polli:tracking-wider polli:text-theme-text-soft\",\n chrome: \"polli:text-micro polli:tracking-widest polli:text-theme-text-muted\",\n} as const;\n\ntype EyebrowOwnProps<T extends ElementType> = {\n as?: T;\n size?: keyof typeof sizeClasses;\n className?: string;\n children: ReactNode;\n};\n\nexport type EyebrowProps<T extends ElementType = \"span\"> = EyebrowOwnProps<T> &\n Omit<ComponentPropsWithoutRef<T>, keyof EyebrowOwnProps<T>>;\n\n/** Uppercase pixel label for page, card, and chrome metadata. */\nexport function Eyebrow<T extends ElementType = \"span\">({\n as,\n size = \"card\",\n className,\n children,\n ...rest\n}: EyebrowProps<T>) {\n const Component: ElementType = as || \"span\";\n\n return (\n <Component\n {...rest}\n className={cn(\n \"polli:font-pixel polli:uppercase\",\n sizeClasses[size],\n className,\n )}\n >\n {children}\n </Component>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Eyebrow } from \"../primitives/Eyebrow.tsx\";\n\nexport type ContentHeaderProps = {\n eyebrow: ReactNode;\n title: ReactNode;\n subtitle?: ReactNode;\n action?: ReactNode;\n variant?: \"page\" | \"section\";\n className?: string;\n};\n\nconst titleClasses = {\n page: \"polli:font-heading polli:text-4xl polli:leading-[1.08] polli:text-theme-text-strong polli:sm:text-5xl polli:lg:text-7xl\",\n section:\n \"polli:font-subheading polli:text-3xl polli:leading-tight polli:text-theme-text-strong polli:sm:text-4xl\",\n} as const;\n\nconst subtitleClasses = {\n page: \"polli:max-w-lg polli:text-base polli:leading-relaxed polli:text-theme-text-base polli:sm:text-lg\",\n section: \"polli:max-w-xl polli:leading-relaxed polli:text-theme-text-base\",\n} as const;\n\n/** Shared page/section heading rhythm with an optional trailing action. */\nexport function ContentHeader({\n eyebrow,\n title,\n subtitle,\n action,\n variant = \"section\",\n className,\n}: ContentHeaderProps) {\n const Title = variant === \"page\" ? \"h1\" : \"h2\";\n\n return (\n <header\n className={cn(\n \"polli:flex polli:flex-wrap polli:items-end polli:justify-between polli:gap-6\",\n className,\n )}\n >\n <div className=\"polli:flex polli:max-w-2xl polli:flex-col polli:gap-3\">\n <Eyebrow size=\"page\">{eyebrow}</Eyebrow>\n <Title className={titleClasses[variant]}>{title}</Title>\n {subtitle && (\n <p\n className={cn(\n subtitleClasses[variant],\n \"polli:[&_strong]:text-theme-text-strong\",\n )}\n >\n {subtitle}\n </p>\n )}\n </div>\n {action}\n </header>\n );\n}\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { CheckIcon, ClipboardIcon } from \"../primitives/icons/index.tsx\";\nimport { CopyButton, type CopyButtonProps } from \"./CopyButton.tsx\";\n\nexport type CopyFieldProps = Pick<\n CopyButtonProps,\n \"value\" | \"onCopied\" | \"onCopyError\" | \"copiedTimeoutMs\"\n> & {\n /** Accessible name, e.g. \"Copy secret key\". */\n label: string;\n /** What to show; defaults to the value itself (lists pass a truncated form). */\n display?: ReactNode;\n className?: string;\n};\n\n/**\n * A value the user copies but never edits: looks like a field, behaves like a\n * button. The whole surface copies on click; the end icon confirms.\n */\nexport function CopyField({\n value,\n label,\n display,\n className,\n ...copy\n}: CopyFieldProps) {\n return (\n <CopyButton\n {...copy}\n value={value}\n tooltip={null}\n aria-label={label}\n className={(copied) =>\n cn(\n \"polli-input-shell polli:flex polli:min-h-10 polli:w-full polli:cursor-pointer polli:items-center polli:gap-3 polli:rounded-lg polli:border polli:px-3 polli:py-2 polli:text-left polli:font-mono polli:text-xs polli:transition-colors\",\n copied\n ? \"polli:text-intent-success-text\"\n : \"polli:text-theme-text-base polli:hover:text-theme-text-strong\",\n className,\n )\n }\n >\n {(copied) => (\n <>\n <span className=\"polli:min-w-0 polli:flex-1 polli:select-all polli:break-all\">\n {copied ? \"Copied\" : (display ?? String(value))}\n </span>\n <span\n aria-hidden=\"true\"\n className=\"polli:flex polli:size-4 polli:shrink-0 polli:[&>svg]:size-full\"\n >\n {copied ? <CheckIcon /> : <ClipboardIcon />}\n </span>\n </>\n )}\n </CopyButton>\n );\n}\n","var __defProp = Object.defineProperty;\nvar __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;\nvar __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== \"symbol\" ? key + \"\" : key, value);\n\nexport {\n __publicField\n};\n","import {\n __publicField\n} from \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/list-collection.ts\nimport { hasProp, isEqual, isObject } from \"@zag-js/utils\";\nvar fallback = {\n itemToValue(item) {\n if (typeof item === \"string\") return item;\n if (isObject(item) && hasProp(item, \"value\")) return item.value;\n return \"\";\n },\n itemToString(item) {\n if (typeof item === \"string\") return item;\n if (isObject(item) && hasProp(item, \"label\")) return item.label;\n return fallback.itemToValue(item);\n },\n isItemDisabled(item) {\n if (isObject(item) && hasProp(item, \"disabled\")) return !!item.disabled;\n return false;\n }\n};\nvar ListCollection = class _ListCollection {\n constructor(options) {\n __publicField(this, \"options\", options);\n /**\n * The items in the collection\n */\n __publicField(this, \"items\");\n __publicField(this, \"indexMap\", null);\n /**\n * Copy the collection\n */\n __publicField(this, \"copy\", (items) => {\n return new _ListCollection({ ...this.options, items: items ?? [...this.items] });\n });\n /**\n * Check if the collection is equal to another collection\n */\n __publicField(this, \"isEqual\", (other) => {\n return isEqual(this.items, other.items);\n });\n /**\n * Function to update the collection items\n */\n __publicField(this, \"setItems\", (items) => {\n return this.copy(items);\n });\n /**\n * Returns all the values in the collection\n */\n __publicField(this, \"getValues\", (items = this.items) => {\n const values = [];\n for (const item of items) {\n const value = this.getItemValue(item);\n if (value != null) values.push(value);\n }\n return values;\n });\n /**\n * Get the item based on its value\n */\n __publicField(this, \"find\", (value) => {\n if (value == null) return null;\n const index = this.indexOf(value);\n return index !== -1 ? this.at(index) : null;\n });\n /**\n * Get the items based on its values\n */\n __publicField(this, \"findMany\", (values) => {\n const result = [];\n for (const value of values) {\n const item = this.find(value);\n if (item != null) result.push(item);\n }\n return result;\n });\n /**\n * Get the item based on its index\n */\n __publicField(this, \"at\", (index) => {\n if (!this.options.groupBy && !this.options.groupSort) {\n return this.items[index] ?? null;\n }\n let idx = 0;\n const groups = this.group();\n for (const [, items] of groups) {\n for (const item of items) {\n if (idx === index) return item;\n idx++;\n }\n }\n return null;\n });\n __publicField(this, \"sortFn\", (valueA, valueB) => {\n const indexA = this.indexOf(valueA);\n const indexB = this.indexOf(valueB);\n return (indexA ?? 0) - (indexB ?? 0);\n });\n /**\n * Sort the values based on their index\n */\n __publicField(this, \"sort\", (values) => {\n return [...values].sort(this.sortFn.bind(this));\n });\n /**\n * Convert an item to a value\n */\n __publicField(this, \"getItemValue\", (item) => {\n if (item == null) return null;\n return this.options.itemToValue?.(item) ?? fallback.itemToValue(item);\n });\n /**\n * Whether an item is disabled\n */\n __publicField(this, \"getItemDisabled\", (item) => {\n if (item == null) return false;\n return this.options.isItemDisabled?.(item) ?? fallback.isItemDisabled(item);\n });\n /**\n * Convert an item to a string\n */\n __publicField(this, \"stringifyItem\", (item) => {\n if (item == null) return null;\n return this.options.itemToString?.(item) ?? fallback.itemToString(item);\n });\n /**\n * Convert a value to a string\n */\n __publicField(this, \"stringify\", (value) => {\n if (value == null) return null;\n return this.stringifyItem(this.find(value));\n });\n /**\n * Convert an array of items to a string\n */\n __publicField(this, \"stringifyItems\", (items, separator = \", \") => {\n const strs = [];\n for (const item of items) {\n const str = this.stringifyItem(item);\n if (str != null) strs.push(str);\n }\n return strs.join(separator);\n });\n /**\n * Convert an array of items to a string\n */\n __publicField(this, \"stringifyMany\", (value, separator) => {\n return this.stringifyItems(this.findMany(value), separator);\n });\n /**\n * Whether the collection has a value\n */\n __publicField(this, \"has\", (value) => {\n return this.indexOf(value) !== -1;\n });\n /**\n * Whether the collection has an item\n */\n __publicField(this, \"hasItem\", (item) => {\n if (item == null) return false;\n return this.has(this.getItemValue(item));\n });\n /**\n * Group items by the groupBy function provided in options\n * Returns an array of [groupKey, items] tuples\n */\n __publicField(this, \"group\", () => {\n const { groupBy, groupSort } = this.options;\n if (!groupBy) return [[\"\", [...this.items]]];\n const groups = /* @__PURE__ */ new Map();\n this.items.forEach((item, index) => {\n const groupKey = groupBy(item, index);\n if (!groups.has(groupKey)) {\n groups.set(groupKey, []);\n }\n groups.get(groupKey).push(item);\n });\n let entries = Array.from(groups.entries());\n if (groupSort) {\n entries.sort(([a], [b]) => {\n if (typeof groupSort === \"function\") return groupSort(a, b);\n if (Array.isArray(groupSort)) {\n const indexA = groupSort.indexOf(a);\n const indexB = groupSort.indexOf(b);\n if (indexA === -1) return 1;\n if (indexB === -1) return -1;\n return indexA - indexB;\n }\n if (groupSort === \"asc\") return a.localeCompare(b);\n if (groupSort === \"desc\") return b.localeCompare(a);\n return 0;\n });\n }\n return entries;\n });\n /**\n * Returns the next value in the collection\n */\n __publicField(this, \"getNextValue\", (value, step = 1, clamp = false) => {\n let index = this.indexOf(value);\n if (index === -1) return null;\n index = clamp ? Math.min(index + step, this.size - 1) : index + step;\n while (index <= this.size && this.getItemDisabled(this.at(index))) index++;\n return this.getItemValue(this.at(index));\n });\n /**\n * Returns the previous value in the collection\n */\n __publicField(this, \"getPreviousValue\", (value, step = 1, clamp = false) => {\n let index = this.indexOf(value);\n if (index === -1) return null;\n index = clamp ? Math.max(index - step, 0) : index - step;\n while (index >= 0 && this.getItemDisabled(this.at(index))) index--;\n return this.getItemValue(this.at(index));\n });\n /**\n * Get the index of an item based on its key\n */\n __publicField(this, \"indexOf\", (value) => {\n if (value == null) return -1;\n if (!this.options.groupBy && !this.options.groupSort) {\n return this.items.findIndex((item) => this.getItemValue(item) === value);\n }\n if (!this.indexMap) {\n this.indexMap = /* @__PURE__ */ new Map();\n let idx = 0;\n const groups = this.group();\n for (const [, items] of groups) {\n for (const item of items) {\n const itemValue = this.getItemValue(item);\n if (itemValue != null) {\n this.indexMap.set(itemValue, idx);\n }\n idx++;\n }\n }\n }\n return this.indexMap.get(value) ?? -1;\n });\n __publicField(this, \"getByText\", (text, current) => {\n const currentIndex = current != null ? this.indexOf(current) : -1;\n const isSingleKey = text.length === 1;\n for (let i = 0; i < this.items.length; i++) {\n const item = this.items[(currentIndex + i + 1) % this.items.length];\n if (isSingleKey && this.getItemValue(item) === current) continue;\n if (this.getItemDisabled(item)) continue;\n if (match(this.stringifyItem(item), text)) return item;\n }\n return void 0;\n });\n /**\n * Search for a value based on a query\n */\n __publicField(this, \"search\", (queryString, options) => {\n const { state, currentValue, timeout = 350 } = options;\n const search = state.keysSoFar + queryString;\n const isRepeated = search.length > 1 && Array.from(search).every((char) => char === search[0]);\n const query = isRepeated ? search[0] : search;\n const item = this.getByText(query, currentValue);\n const value = this.getItemValue(item);\n function cleanup() {\n clearTimeout(state.timer);\n state.timer = -1;\n }\n function update(value2) {\n state.keysSoFar = value2;\n cleanup();\n if (value2 !== \"\") {\n state.timer = +setTimeout(() => {\n update(\"\");\n cleanup();\n }, timeout);\n }\n }\n update(search);\n return value;\n });\n /**\n * Update an item in the collection\n */\n __publicField(this, \"update\", (value, item) => {\n let index = this.indexOf(value);\n if (index === -1) return this;\n return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n });\n /**\n * Update an item in the collection if it exists, otherwise append it\n */\n __publicField(this, \"upsert\", (value, item, mode = \"append\") => {\n let index = this.indexOf(value);\n if (index === -1) {\n const fn = mode === \"append\" ? this.append : this.prepend;\n return fn(item);\n }\n return this.copy([...this.items.slice(0, index), item, ...this.items.slice(index + 1)]);\n });\n /**\n * Insert items at a specific index\n */\n __publicField(this, \"insert\", (index, ...items) => {\n return this.copy(insert(this.items, index, ...items));\n });\n /**\n * Insert items before a specific value\n */\n __publicField(this, \"insertBefore\", (value, ...items) => {\n let toIndex = this.indexOf(value);\n if (toIndex === -1) {\n if (this.items.length === 0) toIndex = 0;\n else return this;\n }\n return this.copy(insert(this.items, toIndex, ...items));\n });\n /**\n * Insert items after a specific value\n */\n __publicField(this, \"insertAfter\", (value, ...items) => {\n let toIndex = this.indexOf(value);\n if (toIndex === -1) {\n if (this.items.length === 0) toIndex = 0;\n else return this;\n }\n return this.copy(insert(this.items, toIndex + 1, ...items));\n });\n /**\n * Prepend items to the collection\n */\n __publicField(this, \"prepend\", (...items) => {\n return this.copy(insert(this.items, 0, ...items));\n });\n /**\n * Append items to the collection\n */\n __publicField(this, \"append\", (...items) => {\n return this.copy(insert(this.items, this.items.length, ...items));\n });\n /**\n * Filter the collection\n */\n __publicField(this, \"filter\", (fn) => {\n const filteredItems = this.items.filter((item, index) => fn(this.stringifyItem(item), index, item));\n return this.copy(filteredItems);\n });\n /**\n * Remove items from the collection\n */\n __publicField(this, \"remove\", (...itemsOrValues) => {\n const values = itemsOrValues.map(\n (itemOrValue) => typeof itemOrValue === \"string\" ? itemOrValue : this.getItemValue(itemOrValue)\n );\n return this.copy(\n this.items.filter((item) => {\n const value = this.getItemValue(item);\n if (value == null) return false;\n return !values.includes(value);\n })\n );\n });\n /**\n * Move an item to a specific index\n */\n __publicField(this, \"move\", (value, toIndex) => {\n const fromIndex = this.indexOf(value);\n if (fromIndex === -1) return this;\n return this.copy(move(this.items, [fromIndex], toIndex));\n });\n /**\n * Move items before a specific value\n */\n __publicField(this, \"moveBefore\", (value, ...values) => {\n let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n if (toIndex === -1) return this;\n let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n return this.copy(move(this.items, indices, toIndex));\n });\n /**\n * Move items after a specific value\n */\n __publicField(this, \"moveAfter\", (value, ...values) => {\n let toIndex = this.items.findIndex((item) => this.getItemValue(item) === value);\n if (toIndex === -1) return this;\n let indices = values.map((value2) => this.items.findIndex((item) => this.getItemValue(item) === value2)).sort((a, b) => a - b);\n return this.copy(move(this.items, indices, toIndex + 1));\n });\n /**\n * Reorder items\n */\n __publicField(this, \"reorder\", (fromIndex, toIndex) => {\n return this.copy(move(this.items, [fromIndex], toIndex));\n });\n /**\n * Compare two values\n */\n __publicField(this, \"compareValue\", (a, b) => {\n const indexA = this.indexOf(a);\n const indexB = this.indexOf(b);\n if (indexA < indexB) return -1;\n if (indexA > indexB) return 1;\n return 0;\n });\n /**\n * Get the range of values between two values\n */\n __publicField(this, \"range\", (from, to) => {\n let keys = [];\n let key = from;\n while (key != null) {\n let item = this.find(key);\n if (item) keys.push(key);\n if (key === to) return keys;\n key = this.getNextValue(key);\n }\n return [];\n });\n /**\n * Get the range of values between two values\n */\n __publicField(this, \"getValueRange\", (from, to) => {\n if (from && to) {\n if (this.compareValue(from, to) <= 0) {\n return this.range(from, to);\n }\n return this.range(to, from);\n }\n return [];\n });\n /**\n * Convert the collection to a string\n */\n __publicField(this, \"toString\", () => {\n let result = \"\";\n for (const item of this.items) {\n const value = this.getItemValue(item);\n const label = this.stringifyItem(item);\n const disabled = this.getItemDisabled(item);\n const itemString = [value, label, disabled].filter(Boolean).join(\":\");\n result += itemString + \",\";\n }\n return result;\n });\n /**\n * Convert the collection to a JSON object\n */\n __publicField(this, \"toJSON\", () => {\n return {\n size: this.size,\n first: this.firstValue,\n last: this.lastValue\n };\n });\n this.items = [...options.items];\n }\n /**\n * Returns the number of items in the collection\n */\n get size() {\n return this.items.length;\n }\n /**\n * Returns the first value in the collection\n */\n get firstValue() {\n let index = 0;\n while (this.getItemDisabled(this.at(index))) index++;\n return this.getItemValue(this.at(index));\n }\n /**\n * Returns the last value in the collection\n */\n get lastValue() {\n let index = this.size - 1;\n while (this.getItemDisabled(this.at(index))) index--;\n return this.getItemValue(this.at(index));\n }\n *[Symbol.iterator]() {\n yield* this.items;\n }\n};\nvar match = (label, query) => {\n return !!label?.toLowerCase().startsWith(query.toLowerCase());\n};\nfunction isListCollection(v) {\n return v instanceof ListCollection;\n}\nfunction insert(items, index, ...values) {\n return [...items.slice(0, index), ...values, ...items.slice(index)];\n}\nfunction move(items, indices, toIndex) {\n indices = [...indices].sort((a, b) => a - b);\n const itemsToMove = indices.map((i) => items[i]);\n for (let i = indices.length - 1; i >= 0; i--) {\n items = [...items.slice(0, indices[i]), ...items.slice(indices[i] + 1)];\n }\n toIndex = Math.max(0, toIndex - indices.filter((i) => i < toIndex).length);\n return [...items.slice(0, toIndex), ...itemsToMove, ...items.slice(toIndex)];\n}\nexport {\n ListCollection,\n isListCollection\n};\n","import \"./chunk-QZ7TP4HQ.mjs\";\n\n// src/selection-map.ts\nfunction resolveSelectedItems({\n values,\n collection,\n selectedItemMap\n}) {\n const result = [];\n for (const value of values) {\n const item = collection.find(value) ?? selectedItemMap.get(value);\n if (item != null) result.push(item);\n }\n return result;\n}\nfunction updateSelectedItemMap({\n selectedItemMap,\n values,\n selectedItems,\n collection\n}) {\n const nextMap = new Map(selectedItemMap);\n for (const item of selectedItems) {\n const value = collection.getItemValue(item);\n if (value != null) nextMap.set(value, item);\n }\n const allowedValues = new Set(values);\n for (const value of nextMap.keys()) {\n if (!allowedValues.has(value)) nextMap.delete(value);\n }\n return nextMap;\n}\nfunction deriveSelectionState({\n values,\n collection,\n selectedItemMap\n}) {\n const selectedItems = resolveSelectedItems({ values, collection, selectedItemMap });\n const nextSelectedItemMap = updateSelectedItemMap({\n selectedItemMap,\n values,\n selectedItems,\n collection\n });\n return { selectedItems, nextSelectedItemMap };\n}\nfunction createSelectedItemMap({\n selectedItems,\n collection\n}) {\n return updateSelectedItemMap({\n selectedItemMap: /* @__PURE__ */ new Map(),\n values: selectedItems.map((item) => collection.getItemValue(item)).filter(Boolean),\n selectedItems,\n collection\n });\n}\nexport {\n createSelectedItemMap,\n deriveSelectionState,\n resolveSelectedItems,\n updateSelectedItemMap\n};\n","\"use client\";\nimport { ListCollection } from \"@zag-js/collection\";\n//#region src/components/collection/list-collection.ts\nvar createListCollection = (options) => new ListCollection(options);\n//#endregion\nexport { createListCollection };\n","// src/combobox.anatomy.ts\nimport { createAnatomy } from \"@zag-js/anatomy\";\nvar anatomy = createAnatomy(\"combobox\").parts(\n \"root\",\n \"clearTrigger\",\n \"content\",\n \"control\",\n \"input\",\n \"item\",\n \"itemGroup\",\n \"itemGroupLabel\",\n \"itemIndicator\",\n \"itemText\",\n \"label\",\n \"list\",\n \"positioner\",\n \"trigger\"\n);\nvar parts = anatomy.build();\nexport {\n anatomy,\n parts\n};\n","// src/combobox.collection.ts\nimport { ListCollection } from \"@zag-js/collection\";\nvar collection = (options) => {\n return new ListCollection(options);\n};\ncollection.empty = () => {\n return new ListCollection({ items: [] });\n};\nexport {\n collection\n};\n","// src/combobox.dom.ts\nimport { query, setCaretToEnd } from \"@zag-js/dom-query\";\nvar getRootId = (ctx) => ctx.ids?.root ?? `combobox:${ctx.id}`;\nvar getLabelId = (ctx) => ctx.ids?.label ?? `combobox:${ctx.id}:label`;\nvar getControlId = (ctx) => ctx.ids?.control ?? `combobox:${ctx.id}:control`;\nvar getInputId = (ctx) => ctx.ids?.input ?? `combobox:${ctx.id}:input`;\nvar getContentId = (ctx) => ctx.ids?.content ?? `combobox:${ctx.id}:content`;\nvar getPositionerId = (ctx) => ctx.ids?.positioner ?? `combobox:${ctx.id}:popper`;\nvar getTriggerId = (ctx) => ctx.ids?.trigger ?? `combobox:${ctx.id}:toggle-btn`;\nvar getClearTriggerId = (ctx) => ctx.ids?.clearTrigger ?? `combobox:${ctx.id}:clear-btn`;\nvar getItemGroupId = (ctx, id) => ctx.ids?.itemGroup?.(id) ?? `combobox:${ctx.id}:optgroup:${id}`;\nvar getItemGroupLabelId = (ctx, id) => ctx.ids?.itemGroupLabel?.(id) ?? `combobox:${ctx.id}:optgroup-label:${id}`;\nvar getItemId = (ctx, id) => ctx.ids?.item?.(id) ?? `combobox:${ctx.id}:option:${id}`;\nvar getContentEl = (ctx) => ctx.getById(getContentId(ctx));\nvar getInputEl = (ctx) => ctx.getById(getInputId(ctx));\nvar getPositionerEl = (ctx) => ctx.getById(getPositionerId(ctx));\nvar getControlEl = (ctx) => ctx.getById(getControlId(ctx));\nvar getTriggerEl = (ctx) => ctx.getById(getTriggerId(ctx));\nvar getClearTriggerEl = (ctx) => ctx.getById(getClearTriggerId(ctx));\nvar getItemEl = (ctx, value) => {\n if (value == null) return null;\n const selector = `[role=option][data-value=\"${CSS.escape(value)}\"]`;\n return query(getContentEl(ctx), selector);\n};\nvar focusInputEl = (ctx) => {\n const inputEl = getInputEl(ctx);\n if (!ctx.isActiveElement(inputEl)) {\n inputEl?.focus({ preventScroll: true });\n }\n setCaretToEnd(inputEl);\n};\nvar focusTriggerEl = (ctx) => {\n const triggerEl = getTriggerEl(ctx);\n if (ctx.isActiveElement(triggerEl)) return;\n triggerEl?.focus({ preventScroll: true });\n};\nexport {\n focusInputEl,\n focusTriggerEl,\n getClearTriggerEl,\n getClearTriggerId,\n getContentEl,\n getContentId,\n getControlEl,\n getControlId,\n getInputEl,\n getInputId,\n getItemEl,\n getItemGroupId,\n getItemGroupLabelId,\n getItemId,\n getLabelId,\n getPositionerEl,\n getPositionerId,\n getRootId,\n getTriggerEl,\n getTriggerId\n};\n","// src/combobox.connect.ts\nimport {\n ariaAttr,\n dataAttr,\n getEventKey,\n isAnchorElement,\n isComposingEvent,\n isContextMenuEvent,\n isDownloadingEvent,\n isLeftClick,\n isOpeningInNewTab\n} from \"@zag-js/dom-query\";\nimport { getPlacementSide, getPlacementStyles } from \"@zag-js/popper\";\nimport { ensure } from \"@zag-js/utils\";\nimport { parts } from \"./combobox.anatomy.mjs\";\nimport * as dom from \"./combobox.dom.mjs\";\nfunction connect(service, normalize) {\n const { context, prop, state, send, scope, computed, event } = service;\n const translations = prop(\"translations\");\n const collection = prop(\"collection\");\n const disabled = !!prop(\"disabled\");\n const interactive = computed(\"isInteractive\");\n const invalid = !!prop(\"invalid\");\n const required = !!prop(\"required\");\n const readOnly = !!prop(\"readOnly\");\n const open = state.hasTag(\"open\");\n const focused = state.hasTag(\"focused\");\n const composite = prop(\"composite\");\n const highlightedValue = context.get(\"highlightedValue\");\n const currentPlacement = context.get(\"currentPlacement\");\n const currentPlacementSide = currentPlacement ? getPlacementSide(currentPlacement) : void 0;\n const popperStyles = getPlacementStyles({\n ...prop(\"positioning\"),\n placement: currentPlacement\n });\n function getItemState(props) {\n const itemDisabled = collection.getItemDisabled(props.item);\n const value = collection.getItemValue(props.item);\n ensure(value, () => `[zag-js] No value found for item ${JSON.stringify(props.item)}`);\n return {\n value,\n disabled: Boolean(disabled || itemDisabled),\n highlighted: highlightedValue === value,\n selected: context.get(\"value\").includes(value)\n };\n }\n return {\n focused,\n open,\n inputValue: context.get(\"inputValue\"),\n highlightedValue,\n highlightedItem: context.get(\"highlightedItem\"),\n value: context.get(\"value\"),\n valueAsString: computed(\"valueAsString\"),\n hasSelectedItems: computed(\"hasSelectedItems\"),\n selectedItems: computed(\"selectedItems\"),\n collection: prop(\"collection\"),\n multiple: !!prop(\"multiple\"),\n disabled: !!disabled,\n syncSelectedItems() {\n send({ type: \"SELECTED_ITEMS.SYNC\" });\n },\n reposition(options = {}) {\n send({ type: \"POSITIONING.SET\", options });\n },\n setHighlightValue(value) {\n send({ type: \"HIGHLIGHTED_VALUE.SET\", value });\n },\n clearHighlightValue() {\n send({ type: \"HIGHLIGHTED_VALUE.CLEAR\" });\n },\n selectValue(value) {\n send({ type: \"ITEM.SELECT\", value });\n },\n setValue(value) {\n send({ type: \"VALUE.SET\", value });\n },\n setInputValue(value, reason = \"script\") {\n send({ type: \"INPUT_VALUE.SET\", value, src: reason });\n },\n clearValue(value) {\n if (value != null) {\n send({ type: \"ITEM.CLEAR\", value });\n } else {\n send({ type: \"VALUE.CLEAR\" });\n }\n },\n focus() {\n dom.getInputEl(scope)?.focus();\n },\n setOpen(nextOpen, reason = \"script\") {\n const open2 = state.hasTag(\"open\");\n if (open2 === nextOpen) return;\n send({ type: nextOpen ? \"OPEN\" : \"CLOSE\", src: reason });\n },\n getRootProps() {\n return normalize.element({\n ...parts.root.attrs,\n dir: prop(\"dir\"),\n id: dom.getRootId(scope),\n \"data-invalid\": dataAttr(invalid),\n \"data-readonly\": dataAttr(readOnly)\n });\n },\n getLabelProps() {\n return normalize.label({\n ...parts.label.attrs,\n dir: prop(\"dir\"),\n htmlFor: dom.getInputId(scope),\n id: dom.getLabelId(scope),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid),\n \"data-required\": dataAttr(required),\n \"data-focus\": dataAttr(focused),\n onClick(event2) {\n if (composite) return;\n event2.preventDefault();\n dom.getTriggerEl(scope)?.focus({ preventScroll: true });\n }\n });\n },\n getControlProps() {\n return normalize.element({\n ...parts.control.attrs,\n dir: prop(\"dir\"),\n id: dom.getControlId(scope),\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-focus\": dataAttr(focused),\n \"data-disabled\": dataAttr(disabled),\n \"data-invalid\": dataAttr(invalid)\n });\n },\n getPositionerProps() {\n return normalize.element({\n ...parts.positioner.attrs,\n dir: prop(\"dir\"),\n id: dom.getPositionerId(scope),\n style: popperStyles.floating\n });\n },\n getInputProps() {\n return normalize.input({\n ...parts.input.attrs,\n dir: prop(\"dir\"),\n \"aria-invalid\": ariaAttr(invalid),\n \"data-invalid\": dataAttr(invalid),\n \"data-autofocus\": dataAttr(prop(\"autoFocus\")),\n name: prop(\"name\"),\n form: prop(\"form\"),\n disabled,\n required: prop(\"required\"),\n autoComplete: \"off\",\n autoCorrect: \"off\",\n autoCapitalize: \"none\",\n spellCheck: \"false\",\n readOnly,\n placeholder: prop(\"placeholder\"),\n id: dom.getInputId(scope),\n type: \"text\",\n role: \"combobox\",\n defaultValue: context.get(\"inputValue\"),\n \"aria-autocomplete\": computed(\"autoComplete\") ? \"both\" : \"list\",\n \"aria-controls\": dom.getContentId(scope),\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-activedescendant\": highlightedValue ? dom.getItemId(scope, highlightedValue) : void 0,\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!prop(\"openOnClick\")) return;\n if (!interactive) return;\n send({ type: \"INPUT.CLICK\", src: \"input-click\" });\n },\n onFocus() {\n if (disabled) return;\n send({ type: \"INPUT.FOCUS\" });\n },\n onBlur() {\n if (disabled) return;\n send({ type: \"INPUT.BLUR\" });\n },\n onChange(event2) {\n send({ type: \"INPUT.CHANGE\", value: event2.currentTarget.value, src: \"input-change\" });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (event2.ctrlKey || event2.shiftKey || isComposingEvent(event2)) return;\n const openOnKeyPress = prop(\"openOnKeyPress\");\n const isModifierKey = event2.ctrlKey || event2.metaKey || event2.shiftKey;\n const keypress = true;\n const keymap = {\n ArrowDown(event3) {\n if (!openOnKeyPress && !open) return;\n send({ type: event3.altKey ? \"OPEN\" : \"INPUT.ARROW_DOWN\", keypress, src: \"arrow-key\" });\n event3.preventDefault();\n },\n ArrowUp() {\n if (!openOnKeyPress && !open) return;\n send({ type: event2.altKey ? \"CLOSE\" : \"INPUT.ARROW_UP\", keypress, src: \"arrow-key\" });\n event2.preventDefault();\n },\n Home(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.HOME\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n End(event3) {\n if (isModifierKey) return;\n send({ type: \"INPUT.END\", keypress });\n if (open) {\n event3.preventDefault();\n }\n },\n Enter(event3) {\n send({ type: \"INPUT.ENTER\", keypress, src: \"item-select\" });\n const hasHighlight = highlightedValue != null;\n const alwaysSubmit = prop(\"alwaysSubmitOnEnter\");\n const willBeRejected = computed(\"isCustomValue\") && !prop(\"allowCustomValue\");\n if (open && !alwaysSubmit && (hasHighlight || willBeRejected)) {\n event3.preventDefault();\n }\n if (highlightedValue == null) return;\n const itemEl = dom.getItemEl(scope, highlightedValue);\n if (isAnchorElement(itemEl)) {\n prop(\"navigate\")?.({ value: highlightedValue, node: itemEl, href: itemEl.href });\n }\n },\n Escape() {\n send({ type: \"INPUT.ESCAPE\", keypress, src: \"escape-key\" });\n event2.preventDefault();\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keymap[key];\n exec?.(event2);\n }\n });\n },\n getTriggerProps(props = {}) {\n return normalize.button({\n ...parts.trigger.attrs,\n dir: prop(\"dir\"),\n id: dom.getTriggerId(scope),\n \"aria-haspopup\": composite ? \"listbox\" : \"dialog\",\n type: \"button\",\n tabIndex: props.focusable ? void 0 : -1,\n \"aria-label\": translations.triggerLabel,\n \"aria-expanded\": open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"aria-controls\": open ? dom.getContentId(scope) : void 0,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"data-focusable\": dataAttr(props.focusable),\n \"data-readonly\": dataAttr(readOnly),\n \"data-disabled\": dataAttr(disabled),\n onFocus() {\n if (!props.focusable) return;\n send({ type: \"INPUT.FOCUS\", src: \"trigger\" });\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n if (!isLeftClick(event2)) return;\n send({ type: \"TRIGGER.CLICK\", src: \"trigger-click\" });\n },\n onPointerDown(event2) {\n if (!interactive) return;\n if (event2.pointerType === \"touch\") return;\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n queueMicrotask(() => {\n dom.focusInputEl(scope);\n });\n },\n onKeyDown(event2) {\n if (event2.defaultPrevented) return;\n if (composite) return;\n const keyMap = {\n ArrowDown() {\n send({ type: \"INPUT.ARROW_DOWN\", src: \"arrow-key\" });\n },\n ArrowUp() {\n send({ type: \"INPUT.ARROW_UP\", src: \"arrow-key\" });\n }\n };\n const key = getEventKey(event2, { dir: prop(\"dir\") });\n const exec = keyMap[key];\n if (exec) {\n exec(event2);\n event2.preventDefault();\n }\n }\n });\n },\n getContentProps() {\n return normalize.element({\n ...parts.content.attrs,\n dir: prop(\"dir\"),\n id: dom.getContentId(scope),\n role: !composite ? \"dialog\" : \"listbox\",\n tabIndex: -1,\n hidden: !open,\n \"data-state\": open ? \"open\" : \"closed\",\n \"data-placement\": currentPlacement,\n \"data-side\": currentPlacementSide,\n \"aria-labelledby\": dom.getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && composite ? true : void 0,\n \"data-empty\": dataAttr(collection.size === 0),\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n }\n });\n },\n getListProps() {\n return normalize.element({\n ...parts.list.attrs,\n role: !composite ? \"listbox\" : void 0,\n \"data-empty\": dataAttr(collection.size === 0),\n \"aria-labelledby\": dom.getLabelId(scope),\n \"aria-multiselectable\": prop(\"multiple\") && !composite ? true : void 0\n });\n },\n getClearTriggerProps() {\n return normalize.button({\n ...parts.clearTrigger.attrs,\n dir: prop(\"dir\"),\n id: dom.getClearTriggerId(scope),\n type: \"button\",\n tabIndex: -1,\n disabled,\n \"data-invalid\": dataAttr(invalid),\n \"aria-label\": translations.clearTriggerLabel,\n \"aria-controls\": dom.getInputId(scope),\n hidden: !context.get(\"value\").length,\n onPointerDown(event2) {\n if (!isLeftClick(event2)) return;\n event2.preventDefault();\n },\n onClick(event2) {\n if (event2.defaultPrevented) return;\n if (!interactive) return;\n send({ type: \"VALUE.CLEAR\", src: \"clear-trigger\" });\n }\n });\n },\n getItemState,\n getItemProps(props) {\n const itemState = getItemState(props);\n const value = itemState.value;\n return normalize.element({\n ...parts.item.attrs,\n dir: prop(\"dir\"),\n id: dom.getItemId(scope, value),\n role: \"option\",\n tabIndex: -1,\n \"data-highlighted\": dataAttr(itemState.highlighted),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"aria-selected\": ariaAttr(itemState.selected),\n \"aria-disabled\": ariaAttr(itemState.disabled),\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-value\": itemState.value,\n onPointerMove() {\n if (itemState.disabled) return;\n if (itemState.highlighted) return;\n send({ type: \"ITEM.POINTER_MOVE\", value });\n },\n onPointerLeave() {\n if (props.persistFocus) return;\n if (itemState.disabled) return;\n const prev = event.previous();\n const mouseMoved = prev?.type.includes(\"POINTER\");\n if (!mouseMoved) return;\n send({ type: \"ITEM.POINTER_LEAVE\", value });\n },\n onClick(event2) {\n if (isDownloadingEvent(event2)) return;\n if (isOpeningInNewTab(event2)) return;\n if (isContextMenuEvent(event2)) return;\n if (itemState.disabled) return;\n send({ type: \"ITEM.CLICK\", src: \"item-select\", value });\n }\n });\n },\n getItemTextProps(props) {\n const itemState = getItemState(props);\n return normalize.element({\n ...parts.itemText.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n \"data-disabled\": dataAttr(itemState.disabled),\n \"data-highlighted\": dataAttr(itemState.highlighted)\n });\n },\n getItemIndicatorProps(props) {\n const itemState = getItemState(props);\n return normalize.element({\n \"aria-hidden\": true,\n ...parts.itemIndicator.attrs,\n dir: prop(\"dir\"),\n \"data-state\": itemState.selected ? \"checked\" : \"unchecked\",\n hidden: !itemState.selected\n });\n },\n getItemGroupProps(props) {\n const { id } = props;\n return normalize.element({\n ...parts.itemGroup.attrs,\n dir: prop(\"dir\"),\n id: dom.getItemGroupId(scope, id),\n \"aria-labelledby\": dom.getItemGroupLabelId(scope, id),\n \"data-empty\": dataAttr(collection.size === 0),\n role: \"group\"\n });\n },\n getItemGroupLabelProps(props) {\n const { htmlFor } = props;\n return normalize.element({\n ...parts.itemGroupLabel.attrs,\n dir: prop(\"dir\"),\n id: dom.getItemGroupLabelId(scope, htmlFor),\n role: \"presentation\"\n });\n }\n };\n}\nexport {\n connect\n};\n","// src/index.ts\nimport { getActiveElement, getDocument, getEventTarget, getWindow, isMac, isVirtualClick } from \"@zag-js/dom-query\";\nfunction isValidKey(e) {\n return !(e.metaKey || !isMac() && e.altKey || e.ctrlKey || e.key === \"Control\" || e.key === \"Shift\" || e.key === \"Meta\");\n}\nvar nonTextInputTypes = /* @__PURE__ */ new Set([\"checkbox\", \"radio\", \"range\", \"color\", \"file\", \"image\", \"button\", \"submit\", \"reset\"]);\nfunction isKeyboardFocusEvent(isTextInput, modality, e) {\n const eventTarget = e ? getEventTarget(e) : null;\n const doc = getDocument(eventTarget);\n const win = getWindow(eventTarget);\n const activeElement = getActiveElement(doc);\n isTextInput = isTextInput || activeElement instanceof win.HTMLInputElement && !nonTextInputTypes.has(activeElement?.type) || activeElement instanceof win.HTMLTextAreaElement || activeElement instanceof win.HTMLElement && activeElement.isContentEditable;\n return !(isTextInput && modality === \"keyboard\" && e instanceof win.KeyboardEvent && !Reflect.has(FOCUS_VISIBLE_INPUT_KEYS, e.key));\n}\nvar currentModality = null;\nvar changeHandlers = /* @__PURE__ */ new Set();\nvar listenerMap = /* @__PURE__ */ new Map();\nvar hasEventBeforeFocus = false;\nvar hasBlurredWindowRecently = false;\nvar ignoreFocusEvent = false;\nvar FOCUS_VISIBLE_INPUT_KEYS = {\n Tab: true,\n Escape: true\n};\nfunction triggerChangeHandlers(modality, e) {\n for (let handler of changeHandlers) {\n handler(modality, e);\n }\n}\nfunction handleKeyboardEvent(e) {\n hasEventBeforeFocus = true;\n if (isValidKey(e)) {\n currentModality = \"keyboard\";\n triggerChangeHandlers(\"keyboard\", e);\n }\n}\nfunction handlePointerEvent(e) {\n currentModality = \"pointer\";\n if (e.type === \"mousedown\" || e.type === \"pointerdown\") {\n hasEventBeforeFocus = true;\n triggerChangeHandlers(\"pointer\", e);\n }\n}\nfunction handleClickEvent(e) {\n if (isVirtualClick(e)) {\n hasEventBeforeFocus = true;\n currentModality = \"virtual\";\n }\n}\nfunction handleFocusEvent(e) {\n const target = getEventTarget(e);\n if (target === getWindow(target) || target === getDocument(target) || ignoreFocusEvent || !e.isTrusted) {\n return;\n }\n if (!hasEventBeforeFocus && !hasBlurredWindowRecently) {\n currentModality = \"virtual\";\n triggerChangeHandlers(\"virtual\", e);\n }\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = false;\n}\nfunction handleWindowBlur() {\n if (ignoreFocusEvent) return;\n hasEventBeforeFocus = false;\n hasBlurredWindowRecently = true;\n}\nfunction setupGlobalFocusEvents(root) {\n if (typeof window === \"undefined\" || listenerMap.get(getWindow(root))) {\n return;\n }\n const win = getWindow(root);\n const doc = getDocument(root);\n let focus = win.HTMLElement.prototype.focus;\n function patchedFocus() {\n hasEventBeforeFocus = true;\n focus.apply(this, arguments);\n }\n try {\n Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n configurable: true,\n value: patchedFocus\n });\n } catch {\n }\n doc.addEventListener(\"keydown\", handleKeyboardEvent, true);\n doc.addEventListener(\"keyup\", handleKeyboardEvent, true);\n doc.addEventListener(\"click\", handleClickEvent, true);\n win.addEventListener(\"focus\", handleFocusEvent, true);\n win.addEventListener(\"blur\", handleWindowBlur, false);\n if (typeof win.PointerEvent !== \"undefined\") {\n doc.addEventListener(\"pointerdown\", handlePointerEvent, true);\n doc.addEventListener(\"pointermove\", handlePointerEvent, true);\n doc.addEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n doc.addEventListener(\"mousedown\", handlePointerEvent, true);\n doc.addEventListener(\"mousemove\", handlePointerEvent, true);\n doc.addEventListener(\"mouseup\", handlePointerEvent, true);\n }\n win.addEventListener(\n \"beforeunload\",\n () => {\n tearDownWindowFocusTracking(root);\n },\n { once: true }\n );\n listenerMap.set(win, { focus });\n}\nvar tearDownWindowFocusTracking = (root, loadListener) => {\n const win = getWindow(root);\n const doc = getDocument(root);\n if (loadListener) {\n doc.removeEventListener(\"DOMContentLoaded\", loadListener);\n }\n const listenerData = listenerMap.get(win);\n if (!listenerData) {\n return;\n }\n try {\n Object.defineProperty(win.HTMLElement.prototype, \"focus\", {\n configurable: true,\n value: listenerData.focus\n });\n } catch {\n }\n doc.removeEventListener(\"keydown\", handleKeyboardEvent, true);\n doc.removeEventListener(\"keyup\", handleKeyboardEvent, true);\n doc.removeEventListener(\"click\", handleClickEvent, true);\n win.removeEventListener(\"focus\", handleFocusEvent, true);\n win.removeEventListener(\"blur\", handleWindowBlur, false);\n if (typeof win.PointerEvent !== \"undefined\") {\n doc.removeEventListener(\"pointerdown\", handlePointerEvent, true);\n doc.removeEventListener(\"pointermove\", handlePointerEvent, true);\n doc.removeEventListener(\"pointerup\", handlePointerEvent, true);\n } else {\n doc.removeEventListener(\"mousedown\", handlePointerEvent, true);\n doc.removeEventListener(\"mousemove\", handlePointerEvent, true);\n doc.removeEventListener(\"mouseup\", handlePointerEvent, true);\n }\n listenerMap.delete(win);\n};\nfunction getInteractionModality() {\n return currentModality;\n}\nfunction setInteractionModality(modality) {\n currentModality = modality;\n triggerChangeHandlers(modality, null);\n}\nfunction trackInteractionModality(props) {\n const { onChange, root } = props;\n setupGlobalFocusEvents(root);\n onChange({ modality: currentModality });\n const handler = () => onChange({ modality: currentModality });\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n}\nfunction isFocusVisible() {\n return currentModality === \"keyboard\" || currentModality === \"virtual\";\n}\nfunction trackFocusVisible(props = {}) {\n const { isTextInput, autoFocus, onChange, root } = props;\n setupGlobalFocusEvents(root);\n onChange?.({ isFocusVisible: autoFocus || isFocusVisible(), modality: currentModality });\n const handler = (modality, e) => {\n if (!isKeyboardFocusEvent(!!isTextInput, modality, e)) return;\n onChange?.({ isFocusVisible: isFocusVisible(), modality });\n };\n changeHandlers.add(handler);\n return () => {\n changeHandlers.delete(handler);\n };\n}\nexport {\n getInteractionModality,\n ignoreFocusEvent,\n isFocusVisible,\n listenerMap,\n setInteractionModality,\n trackFocusVisible,\n trackInteractionModality\n};\n","// src/index.ts\nvar ID = \"__live-region__\";\nvar DEBUG_ID = \"__live-region-debug__\";\nvar DEBUG_STYLES = \"position:fixed;inset-inline:0;bottom:0;z-index:2147483647;padding:12px 16px;background:black;color:white;font-size:14px;line-height:20px;text-align:center;pointer-events:none;\";\nfunction createLiveRegion(opts = {}) {\n const { level = \"polite\", document: doc = document, root, delay: _delay = 0, debug = false } = opts;\n const win = doc.defaultView ?? window;\n const parent = root ?? doc.body;\n function getDebugRegion() {\n if (!debug) return;\n let region = doc.getElementById(DEBUG_ID);\n if (region) return region;\n region = doc.createElement(\"div\");\n region.id = DEBUG_ID;\n region.dataset.liveAnnouncerDebug = \"true\";\n region.setAttribute(\"aria-hidden\", \"true\");\n region.style.cssText = DEBUG_STYLES;\n parent.appendChild(region);\n return region;\n }\n function announce(message, delay) {\n const oldRegion = doc.getElementById(ID);\n oldRegion?.remove();\n delay = delay ?? _delay;\n const region = doc.createElement(\"span\");\n region.id = ID;\n region.dataset.liveAnnouncer = \"true\";\n const role = level !== \"assertive\" ? \"status\" : \"alert\";\n region.setAttribute(\"aria-live\", level);\n region.setAttribute(\"role\", role);\n Object.assign(region.style, {\n border: \"0\",\n clip: \"rect(0 0 0 0)\",\n height: \"1px\",\n margin: \"-1px\",\n overflow: \"hidden\",\n padding: \"0\",\n position: \"absolute\",\n width: \"1px\",\n whiteSpace: \"nowrap\",\n wordWrap: \"normal\"\n });\n parent.appendChild(region);\n win.setTimeout(() => {\n if (!region.isConnected) return;\n region.textContent = message;\n const debugRegion = getDebugRegion();\n if (debugRegion) debugRegion.textContent = message;\n }, delay);\n }\n function destroy() {\n const oldRegion = doc.getElementById(ID);\n oldRegion?.remove();\n const debugRegion = doc.getElementById(DEBUG_ID);\n debugRegion?.remove();\n }\n return {\n announce,\n destroy,\n toJSON() {\n return ID;\n }\n };\n}\nexport {\n createLiveRegion\n};\n","// src/combobox.machine.ts\nimport {\n createSelectedItemMap,\n deriveSelectionState,\n resolveSelectedItems\n} from \"@zag-js/collection\";\nimport { setup } from \"@zag-js/core\";\nimport { trackDismissableElement } from \"@zag-js/dismissable\";\nimport {\n clickIfLink,\n isApple,\n nextTick,\n observeAttributes,\n raf,\n scrollIntoView,\n setCaretToEnd\n} from \"@zag-js/dom-query\";\nimport { getInteractionModality, setInteractionModality, trackFocusVisible } from \"@zag-js/focus-visible\";\nimport { createLiveRegion } from \"@zag-js/live-region\";\nimport { getPlacement } from \"@zag-js/popper\";\nimport { addOrRemove, isBoolean, isEqual, match, remove } from \"@zag-js/utils\";\nimport { collection } from \"./combobox.collection.mjs\";\nimport * as dom from \"./combobox.dom.mjs\";\nvar { guards, createMachine, choose } = setup();\nvar { and, not } = guards;\nvar machine = createMachine({\n props({ props }) {\n return {\n loopFocus: true,\n openOnClick: false,\n defaultValue: [],\n defaultInputValue: \"\",\n closeOnSelect: !props.multiple,\n allowCustomValue: false,\n alwaysSubmitOnEnter: false,\n inputBehavior: \"none\",\n selectionBehavior: props.multiple ? \"clear\" : \"replace\",\n openOnKeyPress: true,\n openOnChange: true,\n composite: true,\n navigate({ node }) {\n clickIfLink(node);\n },\n collection: collection.empty(),\n ...props,\n positioning: {\n placement: \"bottom\",\n sameWidth: true,\n ...props.positioning\n },\n translations: {\n triggerLabel: \"Toggle suggestions\",\n clearTriggerLabel: \"Clear value\",\n ...props.translations\n }\n };\n },\n initialState({ prop }) {\n const open = prop(\"open\") || prop(\"defaultOpen\");\n return open ? \"open.suggesting\" : \"closed.idle\";\n },\n context({ prop, bindable, getContext, getEvent }) {\n const initialValue = prop(\"value\") ?? prop(\"defaultValue\") ?? [];\n const initialSelectedItems = prop(\"collection\").findMany(initialValue);\n return {\n currentPlacement: bindable(() => ({\n defaultValue: void 0\n })),\n value: bindable(() => ({\n defaultValue: prop(\"defaultValue\"),\n value: prop(\"value\"),\n isEqual,\n hash(value) {\n return value.join(\",\");\n },\n onChange(value) {\n const context = getContext();\n const collection2 = prop(\"collection\");\n const selectedItemMap = context.get(\"selectedItemMap\");\n const proposed = deriveSelectionState({\n values: value,\n collection: collection2,\n selectedItemMap\n });\n const effectiveValue = prop(\"value\") ?? value;\n const effective = effectiveValue === value ? proposed : deriveSelectionState({\n values: effectiveValue,\n collection: collection2,\n selectedItemMap: proposed.nextSelectedItemMap\n });\n context.set(\"selectedItemMap\", effective.nextSelectedItemMap);\n prop(\"onValueChange\")?.({ value, items: proposed.selectedItems });\n }\n })),\n highlightedValue: bindable(() => ({\n defaultValue: prop(\"defaultHighlightedValue\") || null,\n value: prop(\"highlightedValue\"),\n onChange(value) {\n const item = prop(\"collection\").find(value);\n prop(\"onHighlightChange\")?.({ highlightedValue: value, highlightedItem: item });\n }\n })),\n inputValue: bindable(() => {\n let inputValue = prop(\"inputValue\") || prop(\"defaultInputValue\");\n const value = prop(\"value\") || prop(\"defaultValue\");\n if (!inputValue.trim() && !prop(\"multiple\")) {\n const valueAsString = prop(\"collection\").stringifyMany(value);\n inputValue = match(prop(\"selectionBehavior\"), {\n preserve: inputValue || valueAsString,\n replace: valueAsString,\n clear: \"\"\n });\n }\n return {\n defaultValue: inputValue,\n value: prop(\"inputValue\"),\n onChange(value2) {\n const event = getEvent();\n const reason = (event.previousEvent || event).src;\n prop(\"onInputValueChange\")?.({ inputValue: value2, reason });\n }\n };\n }),\n highlightedItem: bindable(() => {\n const highlightedValue = prop(\"highlightedValue\");\n const highlightedItem = prop(\"collection\").find(highlightedValue);\n return { defaultValue: highlightedItem };\n }),\n selectedItemMap: bindable(() => {\n return {\n defaultValue: createSelectedItemMap({\n selectedItems: initialSelectedItems,\n collection: prop(\"collection\")\n })\n };\n })\n };\n },\n computed: {\n isInputValueEmpty: ({ context }) => context.get(\"inputValue\").length === 0,\n isInteractive: ({ prop }) => !(prop(\"readOnly\") || prop(\"disabled\")),\n autoComplete: ({ prop }) => prop(\"inputBehavior\") === \"autocomplete\",\n autoHighlight: ({ prop }) => prop(\"inputBehavior\") === \"autohighlight\",\n hasSelectedItems: ({ context }) => context.get(\"value\").length > 0,\n selectedItems: ({ context, prop }) => resolveSelectedItems({\n values: context.get(\"value\"),\n collection: prop(\"collection\"),\n selectedItemMap: context.get(\"selectedItemMap\")\n }),\n valueAsString: ({ computed, prop }) => prop(\"collection\").stringifyItems(computed(\"selectedItems\")),\n isCustomValue: ({ context, computed }) => context.get(\"inputValue\") !== computed(\"valueAsString\")\n },\n watch({ context, prop, track, action, send }) {\n track([() => context.hash(\"value\")], () => {\n action([\"syncSelectedItems\"]);\n });\n track([() => context.get(\"inputValue\")], () => {\n action([\"syncInputValue\"]);\n });\n track([() => context.get(\"highlightedValue\")], () => {\n action([\"syncHighlightedItem\", \"autofillInputValue\", \"announceHighlightedItem\"]);\n });\n track([() => prop(\"open\")], () => {\n action([\"toggleVisibility\"]);\n });\n track([() => prop(\"collection\").toString()], () => {\n send({ type: \"CHILDREN_CHANGE\" });\n });\n },\n on: {\n \"SELECTED_ITEMS.SYNC\": {\n actions: [\"syncSelectedItems\"]\n },\n \"HIGHLIGHTED_VALUE.SET\": {\n actions: [\"setHighlightedValue\"]\n },\n \"HIGHLIGHTED_VALUE.CLEAR\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"ITEM.SELECT\": {\n actions: [\"selectItem\"]\n },\n \"ITEM.CLEAR\": {\n actions: [\"clearItem\"]\n },\n \"VALUE.SET\": {\n actions: [\"setValue\"]\n },\n \"INPUT_VALUE.SET\": {\n actions: [\"setInputValue\"]\n },\n \"POSITIONING.SET\": {\n actions: [\"reposition\"]\n }\n },\n entry: choose([\n {\n guard: \"autoFocus\",\n actions: [\"setInitialFocus\"]\n }\n ]),\n states: {\n closed: {\n tags: [\"closed\"],\n initial: \"idle\",\n states: {\n idle: {\n tags: [\"idle\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": {\n target: \"open.interacting\"\n },\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.FOCUS\": {\n target: \"focused\"\n },\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n target: \"focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"setInitialFocus\"]\n }\n }\n },\n focused: {\n tags: [\"focused\"],\n entry: [\"scrollContentToTop\", \"clearHighlightedValue\"],\n on: {\n \"CONTROLLED.OPEN\": [\n {\n guard: \"isChangeEvent\",\n target: \"open.suggesting\"\n },\n {\n target: \"open.interacting\"\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: and(\"isOpenControlled\", \"openOnChange\"),\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n guard: \"openOnChange\",\n target: \"open.suggesting\",\n actions: [\"setInputValue\", \"invokeOnOpen\", \"highlightFirstItemIfNeeded\"]\n },\n {\n actions: [\"setInputValue\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": {\n target: \"idle\"\n },\n \"INPUT.ESCAPE\": {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\"]\n },\n \"INPUT.BLUR\": {\n target: \"idle\"\n },\n \"INPUT.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"setInitialFocus\", \"highlightFirstSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"open.interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"highlightFirstOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"invokeOnOpen\"]\n },\n {\n guard: \"autoComplete\",\n target: \"open.interacting\",\n actions: [\"invokeOnOpen\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"highlightLastOrSelectedItem\", \"invokeOnOpen\"]\n }\n ],\n OPEN: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnOpen\"]\n },\n {\n target: \"open.interacting\",\n actions: [\"invokeOnOpen\"]\n }\n ],\n \"VALUE.CLEAR\": {\n actions: [\"clearInputValue\", \"clearSelectedItems\"]\n }\n }\n }\n }\n },\n open: {\n tags: [\"open\", \"focused\"],\n entry: [\"setInitialFocus\"],\n effects: [\n \"trackFocusVisible\",\n \"scrollToHighlightedItem\",\n \"trackDismissableLayer\",\n \"trackPlacement\",\n \"trackLiveRegion\"\n ],\n on: {\n \"CONTROLLED.CLOSE\": [\n {\n guard: \"restoreFocus\",\n target: \"closed.focused\",\n actions: [\"setFinalFocus\"]\n },\n {\n target: \"closed.idle\"\n }\n ],\n \"INPUT.ENTER\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"hasHighlightedItem\"), not(\"allowCustomValue\")),\n target: \"closed.focused\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectHighlightedItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"closed.focused\",\n actions: [\"selectHighlightedItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectHighlightedItem\"]\n }\n ],\n \"ITEM.CLICK\": [\n {\n guard: and(\"isOpenControlled\", \"closeOnSelect\"),\n actions: [\"selectItem\", \"invokeOnClose\"]\n },\n {\n guard: \"closeOnSelect\",\n target: \"closed.focused\",\n actions: [\"selectItem\", \"invokeOnClose\", \"setFinalFocus\"]\n },\n {\n actions: [\"selectItem\"]\n }\n ],\n \"TRIGGER.CLICK\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed.focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"LAYER.INTERACT_OUTSIDE\": [\n // == group 1 ==\n {\n guard: and(\"isOpenControlled\", \"isCustomValue\", not(\"allowCustomValue\")),\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n {\n guard: and(\"isCustomValue\", not(\"allowCustomValue\")),\n target: \"closed.idle\",\n actions: [\"revertInputValue\", \"invokeOnClose\"]\n },\n // == group 2 ==\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed.idle\",\n actions: [\"invokeOnClose\"]\n }\n ],\n CLOSE: [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed.focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ],\n \"VALUE.CLEAR\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\"]\n },\n {\n target: \"closed.focused\",\n actions: [\"clearInputValue\", \"clearSelectedItems\", \"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n },\n initial: \"interacting\",\n states: {\n interacting: {\n on: {\n CHILDREN_CHANGE: [\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"scrollToHighlightedItem\"]\n }\n ],\n \"INPUT.HOME\": {\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.ARROW_DOWN\": [\n {\n guard: and(\"autoComplete\", \"isLastItemHighlighted\"),\n actions: [\"clearHighlightedValue\", \"scrollContentToTop\"]\n },\n {\n actions: [\"highlightNextItem\"]\n }\n ],\n \"INPUT.ARROW_UP\": [\n {\n guard: and(\"autoComplete\", \"isFirstItemHighlighted\"),\n actions: [\"clearHighlightedValue\"]\n },\n {\n actions: [\"highlightPrevItem\"]\n }\n ],\n \"INPUT.CHANGE\": [\n {\n guard: \"autoComplete\",\n target: \"suggesting\",\n actions: [\"setInputValue\"]\n },\n {\n target: \"suggesting\",\n actions: [\"clearHighlightedValue\", \"setInputValue\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n },\n \"LAYER.ESCAPE\": [\n {\n guard: and(\"isOpenControlled\", \"autoComplete\"),\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"autoComplete\",\n target: \"closed.focused\",\n actions: [\"syncInputValue\", \"invokeOnClose\"]\n },\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed.focused\",\n actions: [\"invokeOnClose\", \"setFinalFocus\"]\n }\n ]\n }\n },\n suggesting: {\n on: {\n CHILDREN_CHANGE: [\n {\n guard: and(\"isHighlightedItemRemoved\", \"hasCollectionItems\", \"autoHighlight\"),\n actions: [\"clearHighlightedValue\", \"highlightFirstItem\"]\n },\n {\n guard: \"isHighlightedItemRemoved\",\n actions: [\"clearHighlightedValue\"]\n },\n {\n guard: \"autoHighlight\",\n actions: [\"highlightFirstItem\"]\n }\n ],\n \"INPUT.ARROW_DOWN\": {\n target: \"interacting\",\n actions: [\"highlightNextItem\"]\n },\n \"INPUT.ARROW_UP\": {\n target: \"interacting\",\n actions: [\"highlightPrevItem\"]\n },\n \"INPUT.HOME\": {\n target: \"interacting\",\n actions: [\"highlightFirstItem\"]\n },\n \"INPUT.END\": {\n target: \"interacting\",\n actions: [\"highlightLastItem\"]\n },\n \"INPUT.CHANGE\": {\n actions: [\"setInputValue\"]\n },\n \"LAYER.ESCAPE\": [\n {\n guard: \"isOpenControlled\",\n actions: [\"invokeOnClose\"]\n },\n {\n target: \"closed.focused\",\n actions: [\"invokeOnClose\"]\n }\n ],\n \"ITEM.POINTER_MOVE\": {\n target: \"interacting\",\n actions: [\"setHighlightedValue\"]\n },\n \"ITEM.POINTER_LEAVE\": {\n actions: [\"clearHighlightedValue\"]\n }\n }\n }\n }\n }\n },\n implementations: {\n guards: {\n isInputValueEmpty: ({ computed }) => computed(\"isInputValueEmpty\"),\n autoComplete: ({ computed, prop }) => computed(\"autoComplete\") && !prop(\"multiple\"),\n autoHighlight: ({ computed }) => computed(\"autoHighlight\"),\n isFirstItemHighlighted: ({ prop, context }) => prop(\"collection\").firstValue === context.get(\"highlightedValue\"),\n isLastItemHighlighted: ({ prop, context }) => prop(\"collection\").lastValue === context.get(\"highlightedValue\"),\n isCustomValue: ({ computed }) => computed(\"isCustomValue\"),\n allowCustomValue: ({ prop }) => !!prop(\"allowCustomValue\"),\n hasHighlightedItem: ({ context }) => context.get(\"highlightedValue\") != null,\n closeOnSelect: ({ prop }) => !!prop(\"closeOnSelect\"),\n isOpenControlled: ({ prop }) => prop(\"open\") != null,\n openOnChange: ({ prop, context }) => {\n const openOnChange = prop(\"openOnChange\");\n if (isBoolean(openOnChange)) return openOnChange;\n return !!openOnChange?.({ inputValue: context.get(\"inputValue\") });\n },\n restoreFocus: ({ event }) => {\n const restoreFocus = event.restoreFocus ?? event.previousEvent?.restoreFocus;\n return restoreFocus == null ? true : !!restoreFocus;\n },\n isChangeEvent: ({ event }) => event.previousEvent?.type === \"INPUT.CHANGE\",\n autoFocus: ({ prop }) => !!prop(\"autoFocus\"),\n isHighlightedItemRemoved: ({ prop, context }) => !prop(\"collection\").has(context.get(\"highlightedValue\")),\n hasCollectionItems: ({ prop }) => prop(\"collection\").size > 0\n },\n effects: {\n trackFocusVisible({ scope }) {\n return trackFocusVisible({ root: scope.getRootNode?.() });\n },\n trackDismissableLayer({ send, prop, scope }) {\n if (prop(\"disableLayer\")) return;\n const contentEl = () => dom.getContentEl(scope);\n return trackDismissableElement(contentEl, {\n type: \"listbox\",\n defer: true,\n exclude: () => [dom.getInputEl(scope), dom.getTriggerEl(scope), dom.getClearTriggerEl(scope)],\n onFocusOutside: prop(\"onFocusOutside\"),\n onPointerDownOutside: prop(\"onPointerDownOutside\"),\n onInteractOutside: prop(\"onInteractOutside\"),\n onEscapeKeyDown(event) {\n event.preventDefault();\n event.stopPropagation();\n send({ type: \"LAYER.ESCAPE\", src: \"escape-key\" });\n },\n onDismiss() {\n send({ type: \"LAYER.INTERACT_OUTSIDE\", src: \"interact-outside\", restoreFocus: false });\n }\n });\n },\n trackLiveRegion({ refs, scope }) {\n const liveRegion = createLiveRegion({\n level: \"assertive\",\n document: scope.getDoc()\n });\n refs.set(\"liveRegion\", liveRegion);\n return () => liveRegion.destroy();\n },\n trackPlacement({ context, prop, scope }) {\n const anchorEl = () => dom.getControlEl(scope) || dom.getTriggerEl(scope);\n const positionerEl = () => dom.getPositionerEl(scope);\n context.set(\"currentPlacement\", prop(\"positioning\").placement);\n return getPlacement(anchorEl, positionerEl, {\n ...prop(\"positioning\"),\n defer: true,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n scrollToHighlightedItem({ context, prop, scope }) {\n const inputEl = dom.getInputEl(scope);\n let cleanups = [];\n const exec = (immediate) => {\n const modality = getInteractionModality();\n if (modality === \"pointer\") return;\n const highlightedValue = context.get(\"highlightedValue\");\n if (!highlightedValue) return;\n const contentEl = dom.getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({\n index: highlightedIndex,\n immediate,\n getElement: () => dom.getItemEl(scope, highlightedValue)\n });\n return;\n }\n const itemEl = dom.getItemEl(scope, highlightedValue);\n const raf_cleanup = raf(() => {\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n cleanups.push(raf_cleanup);\n };\n const rafCleanup = raf(() => {\n setInteractionModality(\"virtual\");\n exec(true);\n });\n cleanups.push(rafCleanup);\n const observerCleanup = observeAttributes(inputEl, {\n attributes: [\"aria-activedescendant\"],\n callback: () => exec(false)\n });\n cleanups.push(observerCleanup);\n return () => {\n cleanups.forEach((cleanup) => cleanup());\n };\n }\n },\n actions: {\n reposition({ context, prop, scope, event }) {\n const controlEl = () => dom.getControlEl(scope);\n const positionerEl = () => dom.getPositionerEl(scope);\n getPlacement(controlEl, positionerEl, {\n ...prop(\"positioning\"),\n ...event.options,\n defer: true,\n listeners: false,\n onComplete(data) {\n context.set(\"currentPlacement\", data.placement);\n }\n });\n },\n setHighlightedValue({ context, event }) {\n if (event.value == null) return;\n context.set(\"highlightedValue\", event.value);\n },\n clearHighlightedValue({ context }) {\n context.set(\"highlightedValue\", null);\n },\n selectHighlightedItem(params) {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const highlightedValue = context.get(\"highlightedValue\");\n if (!highlightedValue || !collection2.has(highlightedValue)) return;\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), highlightedValue) : [highlightedValue];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: highlightedValue });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n scrollToHighlightedItem({ context, prop, scope }) {\n nextTick(() => {\n const highlightedValue = context.get(\"highlightedValue\");\n if (highlightedValue == null) return;\n const itemEl = dom.getItemEl(scope, highlightedValue);\n const contentEl = dom.getContentEl(scope);\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const highlightedIndex = prop(\"collection\").indexOf(highlightedValue);\n scrollToIndexFn({\n index: highlightedIndex,\n immediate: true,\n getElement: () => dom.getItemEl(scope, highlightedValue)\n });\n return;\n }\n scrollIntoView(itemEl, { rootEl: contentEl, block: \"nearest\" });\n });\n },\n selectItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = prop(\"multiple\") ? addOrRemove(context.get(\"value\"), event.value) : [event.value];\n prop(\"onSelect\")?.({ value: nextValue, itemValue: event.value });\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearItem(params) {\n const { context, event, flush, prop } = params;\n if (event.value == null) return;\n flush(() => {\n const nextValue = remove(context.get(\"value\"), event.value);\n context.set(\"value\", nextValue);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(nextValue),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n setInitialFocus({ scope }) {\n raf(() => {\n dom.focusInputEl(scope);\n });\n },\n setFinalFocus({ scope }) {\n raf(() => {\n const triggerEl = dom.getTriggerEl(scope);\n if (triggerEl?.dataset.focusable == null) {\n dom.focusInputEl(scope);\n } else {\n dom.focusTriggerEl(scope);\n }\n });\n },\n syncInputValue({ context, scope, event }) {\n const inputEl = dom.getInputEl(scope);\n if (!inputEl) return;\n inputEl.value = context.get(\"inputValue\");\n queueMicrotask(() => {\n if (event.current().type === \"INPUT.CHANGE\") return;\n setCaretToEnd(inputEl);\n });\n },\n setInputValue({ context, event }) {\n context.set(\"inputValue\", event.value);\n },\n clearInputValue({ context }) {\n context.set(\"inputValue\", \"\");\n },\n revertInputValue({ context, prop, computed }) {\n const selectionBehavior = prop(\"selectionBehavior\");\n const inputValue = match(selectionBehavior, {\n replace: computed(\"hasSelectedItems\") ? computed(\"valueAsString\") : \"\",\n preserve: context.get(\"inputValue\"),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n },\n setValue(params) {\n const { context, flush, event, prop } = params;\n flush(() => {\n context.set(\"value\", event.value);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany(event.value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n clearSelectedItems(params) {\n const { context, flush, prop } = params;\n flush(() => {\n context.set(\"value\", []);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: prop(\"collection\").stringifyMany([]),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n scrollContentToTop({ prop, scope }) {\n const scrollToIndexFn = prop(\"scrollToIndexFn\");\n if (scrollToIndexFn) {\n const firstValue = prop(\"collection\").firstValue;\n scrollToIndexFn({\n index: 0,\n immediate: true,\n getElement: () => dom.getItemEl(scope, firstValue)\n });\n } else {\n const contentEl = dom.getContentEl(scope);\n if (!contentEl) return;\n contentEl.scrollTop = 0;\n }\n },\n invokeOnOpen({ prop, event, context }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: true, reason, value: context.get(\"value\") });\n },\n invokeOnClose({ prop, event, context }) {\n const reason = getOpenChangeReason(event);\n prop(\"onOpenChange\")?.({ open: false, reason, value: context.get(\"value\") });\n },\n highlightFirstItem({ context, prop, scope }) {\n const exec = dom.getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").firstValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstItemIfNeeded({ computed, action }) {\n if (!computed(\"autoHighlight\")) return;\n action([\"highlightFirstItem\"]);\n },\n highlightLastItem({ context, prop, scope }) {\n const exec = dom.getContentEl(scope) ? queueMicrotask : raf;\n exec(() => {\n const value = prop(\"collection\").lastValue;\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightNextItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getNextValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.firstValue;\n } else {\n value = collection2.firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightPrevItem({ context, prop }) {\n let value = null;\n const highlightedValue = context.get(\"highlightedValue\");\n const collection2 = prop(\"collection\");\n if (highlightedValue) {\n value = collection2.getPreviousValue(highlightedValue);\n if (!value && prop(\"loopFocus\")) value = collection2.lastValue;\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n },\n highlightFirstSelectedItem({ context, prop }) {\n raf(() => {\n const [value] = prop(\"collection\").sort(context.get(\"value\"));\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightFirstOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = prop(\"collection\").sort(context.get(\"value\"))[0];\n } else {\n value = prop(\"collection\").firstValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n highlightLastOrSelectedItem({ context, prop, computed }) {\n raf(() => {\n const collection2 = prop(\"collection\");\n let value = null;\n if (computed(\"hasSelectedItems\")) {\n value = collection2.sort(context.get(\"value\"))[0];\n } else {\n value = collection2.lastValue;\n }\n if (value) context.set(\"highlightedValue\", value);\n });\n },\n autofillInputValue({ context, computed, prop, event, scope }) {\n const inputEl = dom.getInputEl(scope);\n const collection2 = prop(\"collection\");\n if (!computed(\"autoComplete\") || !inputEl || !event.keypress) return;\n const valueText = collection2.stringify(context.get(\"highlightedValue\"));\n raf(() => {\n inputEl.value = valueText || context.get(\"inputValue\");\n });\n },\n syncSelectedItems(params) {\n queueMicrotask(() => {\n const { context, prop } = params;\n const collection2 = prop(\"collection\");\n const value = context.get(\"value\");\n const selectedItemMap = context.get(\"selectedItemMap\");\n const next = deriveSelectionState({ values: value, collection: collection2, selectedItemMap });\n context.set(\"selectedItemMap\", next.nextSelectedItemMap);\n const inputValue = match(prop(\"selectionBehavior\"), {\n preserve: context.get(\"inputValue\"),\n replace: collection2.stringifyMany(value),\n clear: \"\"\n });\n context.set(\"inputValue\", inputValue);\n });\n },\n syncHighlightedItem({ context, prop }) {\n const item = prop(\"collection\").find(context.get(\"highlightedValue\"));\n context.set(\"highlightedItem\", item);\n },\n announceHighlightedItem({ context, prop, refs }) {\n if (!isApple()) return;\n const value = context.get(\"highlightedValue\");\n const optionText = value ? prop(\"collection\").stringifyItem(prop(\"collection\").find(value)) : null;\n if (!optionText) return;\n const isSelected = value ? context.get(\"value\").includes(value) : false;\n refs.get(\"liveRegion\")?.announce(isSelected ? `${optionText}, selected` : optionText);\n },\n toggleVisibility({ event, send, prop }) {\n send({ type: prop(\"open\") ? \"CONTROLLED.OPEN\" : \"CONTROLLED.CLOSE\", previousEvent: event });\n }\n }\n }\n});\nfunction getOpenChangeReason(event) {\n return (event.previousEvent || event).src;\n}\nexport {\n machine\n};\n","\"use client\";\nimport { anatomy } from \"@zag-js/combobox\";\n//#region src/components/combobox/combobox.anatomy.ts\nvar comboboxAnatomy = anatomy.extendWith(\"empty\");\n//#endregion\nexport { comboboxAnatomy };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/combobox/use-combobox-context.ts\nvar [ComboboxProvider, useComboboxContext] = createContext({\n\tname: \"ComboboxContext\",\n\thookName: \"useComboboxContext\",\n\tproviderName: \"<ComboboxProvider />\"\n});\n//#endregion\nexport { ComboboxProvider, useComboboxContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-clear-trigger.tsx\nvar ComboboxClearTrigger = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useComboboxContext().getClearTriggerProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxClearTrigger.displayName = \"ComboboxClearTrigger\";\n//#endregion\nexport { ComboboxClearTrigger };\n","\"use client\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-content.tsx\nvar ComboboxContent = forwardRef((props, ref) => {\n\tconst combobox = useComboboxContext();\n\tconst presence = usePresenceContext();\n\tconst mergedProps = mergeProps(combobox.getContentProps(), presence.getPresenceProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref: composeRefs(presence.ref, ref)\n\t});\n});\nComboboxContent.displayName = \"ComboboxContent\";\n//#endregion\nexport { ComboboxContent };\n","\"use client\";\nimport { comboboxAnatomy } from \"./combobox.anatomy.js\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-empty.tsx\nvar parts = comboboxAnatomy.build();\nvar ComboboxEmpty = forwardRef((props, ref) => {\n\tif (useComboboxContext().collection.size !== 0) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...parts.empty.attrs,\n\t\t...props,\n\t\trole: \"presentation\",\n\t\tref\n\t});\n});\nComboboxEmpty.displayName = \"ComboboxEmpty\";\n//#endregion\nexport { ComboboxEmpty };\n","\"use client\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\n//#region src/components/combobox/combobox-context.tsx\nvar ComboboxContext = (props) => props.children(useComboboxContext());\n//#endregion\nexport { ComboboxContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-control.tsx\nvar ComboboxControl = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useComboboxContext().getControlProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxControl.displayName = \"ComboboxControl\";\n//#endregion\nexport { ComboboxControl };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/field/use-field-context.ts\nvar [FieldProvider, useFieldContext] = createContext({\n\tname: \"FieldContext\",\n\thookName: \"useFieldContext\",\n\tproviderName: \"<FieldProvider />\",\n\tstrict: false\n});\n//#endregion\nexport { FieldProvider, useFieldContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"../field/use-field-context.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-input.tsx\nvar ComboboxInput = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useComboboxContext().getInputProps(), props);\n\tconst field = useFieldContext();\n\treturn /* @__PURE__ */ jsx(ark.input, {\n\t\t\"aria-describedby\": field?.ariaDescribedby,\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxInput.displayName = \"ComboboxInput\";\n//#endregion\nexport { ComboboxInput };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/combobox/use-combobox-item-context.ts\nvar [ComboboxItemProvider, useComboboxItemContext] = createContext({\n\tname: \"ComboboxItemContext\",\n\thookName: \"useComboboxItemContext\",\n\tproviderName: \"<ComboboxItemProvider />\"\n});\n//#endregion\nexport { ComboboxItemProvider, useComboboxItemContext };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/combobox/use-combobox-item-props-context.ts\nvar [ComboboxItemPropsProvider, useComboboxItemPropsContext] = createContext({\n\tname: \"ComboboxItemPropsContext\",\n\thookName: \"useComboboxItemPropsContext\",\n\tproviderName: \"<ComboboxItemPropsProvider />\"\n});\n//#endregion\nexport { ComboboxItemPropsProvider, useComboboxItemPropsContext };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { ComboboxItemProvider } from \"./use-combobox-item-context.js\";\nimport { ComboboxItemPropsProvider } from \"./use-combobox-item-props-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-item.tsx\nvar splitItemProps = createSplitProps();\nvar ComboboxItem = forwardRef((props, ref) => {\n\tconst [itemProps, localProps] = splitItemProps(props, [\"item\", \"persistFocus\"]);\n\tconst combobox = useComboboxContext();\n\tconst mergedProps = mergeProps(combobox.getItemProps(itemProps), localProps);\n\treturn /* @__PURE__ */ jsx(ComboboxItemPropsProvider, {\n\t\tvalue: itemProps,\n\t\tchildren: /* @__PURE__ */ jsx(ComboboxItemProvider, {\n\t\t\tvalue: combobox.getItemState(itemProps),\n\t\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t\t...mergedProps,\n\t\t\t\tref\n\t\t\t})\n\t\t})\n\t});\n});\nComboboxItem.displayName = \"ComboboxItem\";\n//#endregion\nexport { ComboboxItem };\n","\"use client\";\nimport { useComboboxItemContext } from \"./use-combobox-item-context.js\";\n//#region src/components/combobox/combobox-item-context.tsx\nvar ComboboxItemContext = (props) => props.children(useComboboxItemContext());\n//#endregion\nexport { ComboboxItemContext };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/combobox/use-combobox-item-group-props-context.ts\nvar [ComboboxItemGroupPropsProvider, useComboboxItemGroupPropsContext] = createContext({\n\tname: \"ComboboxItemGroupPropsContext\",\n\thookName: \"useComboboxItemGroupPropsContext\",\n\tproviderName: \"<ComboboxItemGroupPropsProvider />\"\n});\n//#endregion\nexport { ComboboxItemGroupPropsProvider, useComboboxItemGroupPropsContext };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { ComboboxItemGroupPropsProvider } from \"./use-combobox-item-group-props-context.js\";\nimport { forwardRef, useId } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-item-group.tsx\nvar splitItemGroupProps = createSplitProps();\nvar ComboboxItemGroup = forwardRef((props, ref) => {\n\tconst id = useId();\n\tconst [_itemGroupProps, localProps] = splitItemGroupProps(props, [\"id\"]);\n\tconst itemGroupProps = {\n\t\tid,\n\t\t..._itemGroupProps\n\t};\n\tconst mergedProps = mergeProps(useComboboxContext().getItemGroupProps(itemGroupProps), localProps);\n\treturn /* @__PURE__ */ jsx(ComboboxItemGroupPropsProvider, {\n\t\tvalue: itemGroupProps,\n\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t...mergedProps,\n\t\t\tref\n\t\t})\n\t});\n});\nComboboxItemGroup.displayName = \"ComboboxItemGroup\";\n//#endregion\nexport { ComboboxItemGroup };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { useComboboxItemGroupPropsContext } from \"./use-combobox-item-group-props-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-item-group-label.tsx\nvar ComboboxItemGroupLabel = forwardRef((props, ref) => {\n\tconst combobox = useComboboxContext();\n\tconst itemGroupProps = useComboboxItemGroupPropsContext();\n\tconst mergedProps = mergeProps(combobox.getItemGroupLabelProps({ htmlFor: itemGroupProps.id }), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxItemGroupLabel.displayName = \"ComboboxItemGroupLabel\";\n//#endregion\nexport { ComboboxItemGroupLabel };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { useComboboxItemPropsContext } from \"./use-combobox-item-props-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-item-indicator.tsx\nvar ComboboxItemIndicator = forwardRef((props, ref) => {\n\tconst combobox = useComboboxContext();\n\tconst itemProps = useComboboxItemPropsContext();\n\tconst mergedProps = mergeProps(combobox.getItemIndicatorProps(itemProps), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxItemIndicator.displayName = \"ComboboxItemIndicator\";\n//#endregion\nexport { ComboboxItemIndicator };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { useComboboxItemPropsContext } from \"./use-combobox-item-props-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-item-text.tsx\nvar ComboboxItemText = forwardRef((props, ref) => {\n\tconst combobox = useComboboxContext();\n\tconst itemProps = useComboboxItemPropsContext();\n\tconst mergedProps = mergeProps(combobox.getItemTextProps(itemProps), props);\n\treturn /* @__PURE__ */ jsx(ark.span, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxItemText.displayName = \"ComboboxItemText\";\n//#endregion\nexport { ComboboxItemText };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-label.tsx\nvar ComboboxLabel = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useComboboxContext().getLabelProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.label, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxLabel.displayName = \"ComboboxLabel\";\n//#endregion\nexport { ComboboxLabel };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-list.tsx\nvar ComboboxList = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useComboboxContext().getListProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxList.displayName = \"ComboboxList\";\n//#endregion\nexport { ComboboxList };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { usePresenceContext } from \"../presence/use-presence-context.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-positioner.tsx\nvar ComboboxPositioner = forwardRef((props, ref) => {\n\tconst combobox = useComboboxContext();\n\tconst presence = usePresenceContext();\n\tconst mergedProps = mergeProps(combobox.getPositionerProps(), props);\n\tif (presence.unmounted) return null;\n\treturn /* @__PURE__ */ jsx(ark.div, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxPositioner.displayName = \"ComboboxPositioner\";\n//#endregion\nexport { ComboboxPositioner };\n","\"use client\";\nimport { useEnvironmentContext } from \"../../providers/environment/use-environment-context.js\";\nimport { useLocaleContext } from \"../../providers/locale/use-locale-context.js\";\nimport { useFieldContext } from \"../field/use-field-context.js\";\nimport * as combobox from \"@zag-js/combobox\";\nimport { useId } from \"react\";\nimport { normalizeProps, useMachine } from \"@zag-js/react\";\n//#region src/components/combobox/use-combobox.ts\nvar useCombobox = (props) => {\n\tconst id = useId();\n\tconst { dir } = useLocaleContext();\n\tconst { getRootNode } = useEnvironmentContext();\n\tconst field = useFieldContext();\n\tconst machineProps = {\n\t\tid,\n\t\tids: {\n\t\t\tlabel: field?.ids.label,\n\t\t\tinput: field?.ids.control\n\t\t},\n\t\tdisabled: field?.disabled,\n\t\treadOnly: field?.readOnly,\n\t\trequired: field?.required,\n\t\tinvalid: field?.invalid,\n\t\tdir,\n\t\tgetRootNode,\n\t\t...props\n\t};\n\tconst service = useMachine(combobox.machine, machineProps);\n\treturn combobox.connect(service, normalizeProps);\n};\n//#endregion\nexport { useCombobox };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { ComboboxProvider } from \"./use-combobox-context.js\";\nimport { useCombobox } from \"./use-combobox.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-root.tsx\nvar ComboboxImpl = (props, ref) => {\n\tconst [presenceProps, comboboxProps] = splitPresenceProps(props);\n\tconst [useComboboxProps, localProps] = createSplitProps()(comboboxProps, [\n\t\t\"allowCustomValue\",\n\t\t\"alwaysSubmitOnEnter\",\n\t\t\"autoFocus\",\n\t\t\"closeOnSelect\",\n\t\t\"collection\",\n\t\t\"composite\",\n\t\t\"defaultHighlightedValue\",\n\t\t\"defaultInputValue\",\n\t\t\"defaultOpen\",\n\t\t\"defaultValue\",\n\t\t\"disabled\",\n\t\t\"disableLayer\",\n\t\t\"form\",\n\t\t\"highlightedValue\",\n\t\t\"id\",\n\t\t\"ids\",\n\t\t\"inputBehavior\",\n\t\t\"inputValue\",\n\t\t\"invalid\",\n\t\t\"loopFocus\",\n\t\t\"multiple\",\n\t\t\"name\",\n\t\t\"navigate\",\n\t\t\"onFocusOutside\",\n\t\t\"onHighlightChange\",\n\t\t\"onInputValueChange\",\n\t\t\"onInteractOutside\",\n\t\t\"onOpenChange\",\n\t\t\"onPointerDownOutside\",\n\t\t\"onSelect\",\n\t\t\"onValueChange\",\n\t\t\"open\",\n\t\t\"openOnChange\",\n\t\t\"openOnClick\",\n\t\t\"openOnKeyPress\",\n\t\t\"placeholder\",\n\t\t\"positioning\",\n\t\t\"readOnly\",\n\t\t\"required\",\n\t\t\"scrollToIndexFn\",\n\t\t\"selectionBehavior\",\n\t\t\"translations\",\n\t\t\"value\"\n\t]);\n\tconst combobox = useCombobox(useComboboxProps);\n\tconst presence = usePresence(mergeProps({ present: combobox.open }, presenceProps));\n\tconst mergedProps = mergeProps(combobox.getRootProps(), localProps);\n\treturn /* @__PURE__ */ jsx(ComboboxProvider, {\n\t\tvalue: combobox,\n\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\tvalue: presence,\n\t\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t\t...mergedProps,\n\t\t\t\tref\n\t\t\t})\n\t\t})\n\t});\n};\nvar ComboboxRoot = forwardRef(ComboboxImpl);\n//#endregion\nexport { ComboboxRoot };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { splitPresenceProps } from \"../presence/split-presence-props.js\";\nimport { usePresence } from \"../presence/use-presence.js\";\nimport { PresenceProvider } from \"../presence/use-presence-context.js\";\nimport { ComboboxProvider } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-root-provider.tsx\nvar ComboboxImpl = (props, ref) => {\n\tconst [presenceProps, comboboxProps] = splitPresenceProps(props);\n\tconst [{ value: combobox }, localProps] = createSplitProps()(comboboxProps, [\"value\"]);\n\tconst presence = usePresence(mergeProps({ present: combobox.open }, presenceProps));\n\tconst mergedProps = mergeProps(combobox.getRootProps(), localProps);\n\treturn /* @__PURE__ */ jsx(ComboboxProvider, {\n\t\tvalue: combobox,\n\t\tchildren: /* @__PURE__ */ jsx(PresenceProvider, {\n\t\t\tvalue: presence,\n\t\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t\t...mergedProps,\n\t\t\t\tref\n\t\t\t})\n\t\t})\n\t});\n};\nvar ComboboxRootProvider = forwardRef(ComboboxImpl);\n//#endregion\nexport { ComboboxRootProvider };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { useComboboxContext } from \"./use-combobox-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/combobox/combobox-trigger.tsx\nvar splitTriggerProps = createSplitProps();\nvar ComboboxTrigger = forwardRef((props, ref) => {\n\tconst [triggerProps, localProps] = splitTriggerProps(props, [\"focusable\"]);\n\tconst mergedProps = mergeProps(useComboboxContext().getTriggerProps(triggerProps), localProps);\n\treturn /* @__PURE__ */ jsx(ark.button, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nComboboxTrigger.displayName = \"ComboboxTrigger\";\n//#endregion\nexport { ComboboxTrigger };\n","import { __exportAll } from \"../../_virtual/_rolldown/runtime.js\";\nimport { ComboboxClearTrigger } from \"./combobox-clear-trigger.js\";\nimport { ComboboxContent } from \"./combobox-content.js\";\nimport { ComboboxEmpty } from \"./combobox-empty.js\";\nimport { ComboboxContext } from \"./combobox-context.js\";\nimport { ComboboxControl } from \"./combobox-control.js\";\nimport { ComboboxInput } from \"./combobox-input.js\";\nimport { ComboboxItem } from \"./combobox-item.js\";\nimport { ComboboxItemContext } from \"./combobox-item-context.js\";\nimport { ComboboxItemGroup } from \"./combobox-item-group.js\";\nimport { ComboboxItemGroupLabel } from \"./combobox-item-group-label.js\";\nimport { ComboboxItemIndicator } from \"./combobox-item-indicator.js\";\nimport { ComboboxItemText } from \"./combobox-item-text.js\";\nimport { ComboboxLabel } from \"./combobox-label.js\";\nimport { ComboboxList } from \"./combobox-list.js\";\nimport { ComboboxPositioner } from \"./combobox-positioner.js\";\nimport { ComboboxRoot } from \"./combobox-root.js\";\nimport { ComboboxRootProvider } from \"./combobox-root-provider.js\";\nimport { ComboboxTrigger } from \"./combobox-trigger.js\";\n//#region src/components/combobox/combobox.ts\nvar combobox_exports = /* @__PURE__ */ __exportAll({\n\tClearTrigger: () => ComboboxClearTrigger,\n\tContent: () => ComboboxContent,\n\tContext: () => ComboboxContext,\n\tControl: () => ComboboxControl,\n\tEmpty: () => ComboboxEmpty,\n\tInput: () => ComboboxInput,\n\tItem: () => ComboboxItem,\n\tItemContext: () => ComboboxItemContext,\n\tItemGroup: () => ComboboxItemGroup,\n\tItemGroupLabel: () => ComboboxItemGroupLabel,\n\tItemIndicator: () => ComboboxItemIndicator,\n\tItemText: () => ComboboxItemText,\n\tLabel: () => ComboboxLabel,\n\tList: () => ComboboxList,\n\tPositioner: () => ComboboxPositioner,\n\tRoot: () => ComboboxRoot,\n\tRootProvider: () => ComboboxRootProvider,\n\tTrigger: () => ComboboxTrigger\n});\n//#endregion\nexport { combobox_exports };\n","import { forwardRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nexport type InputProps = React.ComponentPropsWithoutRef<\"input\"> & {\n error?: boolean;\n hideNumberSteppers?: boolean;\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n ({ className, error, hideNumberSteppers, ...props }, ref) => (\n <input\n ref={ref}\n data-error={error ? \"true\" : undefined}\n className={cn(\n \"polli-input polli:px-3 polli:py-2 polli:border polli:rounded-lg\",\n \"polli:font-body polli:text-base polli:font-normal polli:leading-6 polli:text-theme-text-strong\",\n \"polli:transition-colors\",\n \"polli:disabled:opacity-50 polli:disabled:cursor-not-allowed\",\n hideNumberSteppers && \"polli-input-number-clean\",\n className,\n )}\n {...props}\n />\n ),\n);\n","import { createListCollection } from \"@ark-ui/react/collection\";\nimport { Combobox } from \"@ark-ui/react/combobox\";\nimport {\n type ComponentPropsWithoutRef,\n type ReactNode,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\nimport { Input, type InputProps } from \"../primitives/Input.tsx\";\nimport { ScrollArea } from \"../primitives/ScrollArea.tsx\";\n\nexport type EditableComboboxProps = Omit<InputProps, \"onChange\" | \"value\"> & {\n value: string;\n options: string[];\n onChange: (value: string) => void;\n emptyMessage?: string;\n align?: \"start\" | \"end\";\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n /** Controlled filter inputs can keep incomplete selections open. */\n closeOnSelect?: boolean;\n /**\n * Content rendered inside the input shell before the text field. Enables\n * the wrapped shell layout and replaces the standalone chevron trigger.\n */\n startContent?: ReactNode;\n /** Optional class for the suggestions panel. */\n contentClassName?: string;\n};\n\nexport type EditableComboboxTokenProps = Omit<\n ComponentPropsWithoutRef<\"button\">,\n \"children\" | \"type\"\n> & {\n label: string;\n value: string;\n highlighted?: boolean;\n};\n\n/** Interactive filter token intended for an EditableCombobox startContent slot. */\nexport function EditableComboboxToken({\n label,\n value,\n highlighted = false,\n className,\n ...buttonProps\n}: EditableComboboxTokenProps) {\n return (\n <button\n type=\"button\"\n data-highlighted={highlighted ? \"\" : undefined}\n className={cn(\n \"polli-control polli:flex polli:h-7 polli:max-w-full polli:shrink-0 polli:items-center polli:gap-1 polli:rounded polli:px-1.5 polli:text-xs polli:transition-colors polli:hover:bg-theme-bg-hover polli:data-[highlighted]:bg-theme-bg-active\",\n className,\n )}\n {...buttonProps}\n >\n <span className=\"polli:text-theme-text-muted\">{label}:</span>\n <span className=\"polli:truncate polli:text-theme-text-base\">\n {value}\n </span>\n <ChevronIcon className=\"polli:h-3 polli:w-3 polli:text-theme-text-muted\" />\n </button>\n );\n}\n\nexport function EditableCombobox({\n value,\n options,\n onChange,\n emptyMessage = \"No options match.\",\n align = \"start\",\n open,\n onOpenChange,\n closeOnSelect,\n startContent,\n contentClassName,\n className,\n disabled,\n name,\n placeholder,\n required,\n ...inputProps\n}: EditableComboboxProps) {\n const visibleOptions = useMemo(() => {\n const query = value.trim().toLowerCase();\n return query === \"\"\n ? options\n : options.filter((option) => option.toLowerCase().includes(query));\n }, [options, value]);\n const collection = useMemo(\n () =>\n createListCollection({\n items: visibleOptions,\n itemToString: (item) => item,\n itemToValue: (item) => item,\n }),\n [visibleOptions],\n );\n const hasOptions = options.length > 0;\n const hasStartContent = Boolean(startContent);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Zag renders the field with defaultValue. Keep its DOM value aligned when\n // a controlled value projects an input event back to the same string.\n useEffect(() => {\n if (inputRef.current && inputRef.current.value !== value) {\n inputRef.current.value = value;\n }\n });\n\n return (\n <Combobox.Root\n collection={collection}\n inputValue={value}\n value={[]}\n allowCustomValue\n openOnClick={hasOptions}\n openOnChange={() => hasOptions}\n open={open}\n closeOnSelect={closeOnSelect}\n disabled={disabled}\n name={name}\n required={required}\n positioning={{\n placement: align === \"end\" ? \"bottom-end\" : \"bottom-start\",\n sameWidth: true,\n strategy: \"fixed\",\n }}\n onInputValueChange={(details) => onChange(details.inputValue)}\n onOpenChange={(details) => onOpenChange?.(details.open)}\n >\n <Combobox.Control\n className={cn(\n \"polli:relative polli:w-full\",\n hasStartContent &&\n \"polli-input-shell polli:flex polli:min-h-10 polli:flex-wrap polli:items-center polli:gap-2 polli:border polli:rounded-lg polli:px-2 polli:py-1\",\n )}\n >\n {startContent}\n <Combobox.Input asChild>\n <Input\n ref={inputRef}\n {...inputProps}\n name={name}\n placeholder={placeholder}\n className={cn(\n hasStartContent\n ? \"polli:min-w-28 polli:flex-1 polli:px-1 polli:py-1\"\n : \"polli:w-full polli:pr-10\",\n className,\n )}\n />\n </Combobox.Input>\n {hasOptions && !hasStartContent && (\n <Combobox.Trigger\n aria-label=\"Show options\"\n className=\"polli-control polli:absolute polli:right-0 polli:top-0 polli:flex polli:h-full polli:w-10 polli:cursor-pointer polli:items-center polli:justify-center polli:rounded-r-lg polli:text-theme-text-muted polli:hover:text-theme-text-strong\"\n >\n <Combobox.Context>\n {(context) => (\n <ChevronIcon\n expanded={context.open}\n className=\"polli:h-4 polli:w-4 polli:transition-transform\"\n />\n )}\n </Combobox.Context>\n </Combobox.Trigger>\n )}\n </Combobox.Control>\n <Combobox.Positioner>\n <Combobox.Content\n className={cn(\n \"polli:z-[120] polli:overflow-hidden polli:rounded-lg polli:bg-surface-menu polli:p-1 polli:shadow-lg polli:focus:outline-none\",\n contentClassName,\n )}\n >\n <ScrollArea className=\"polli:max-h-64\">\n <Combobox.List className=\"polli:flex polli:flex-col\">\n {visibleOptions.map((option) => (\n <Combobox.Item\n key={option}\n item={option}\n className={cn(\n \"polli-control polli:flex polli:w-full polli:cursor-pointer polli:items-center polli:rounded-lg polli:bg-transparent polli:px-3 polli:py-2 polli:text-left polli:text-sm polli:font-medium polli:text-theme-text-base polli:transition-colors polli:hover:bg-theme-bg-hover polli:data-[highlighted]:bg-theme-bg-hover\",\n value === option &&\n \"polli:bg-theme-bg-active polli:text-theme-text-strong\",\n )}\n >\n <Combobox.ItemText className=\"polli:truncate polli:font-mono\">\n {option}\n </Combobox.ItemText>\n </Combobox.Item>\n ))}\n {visibleOptions.length === 0 && (\n <Combobox.Empty className=\"polli:m-0 polli:px-2 polli:py-2 polli:text-sm polli:text-theme-text-soft\">\n {emptyMessage}\n </Combobox.Empty>\n )}\n </Combobox.List>\n </ScrollArea>\n </Combobox.Content>\n </Combobox.Positioner>\n </Combobox.Root>\n );\n}\n","/** Relative URLs and same-origin absolute URLs stay in the current app. */\nexport function isExternalHref(\n href: unknown,\n origin = globalThis.location?.origin,\n): boolean {\n if (typeof href !== \"string\" || !/^(https?:)?\\/\\//i.test(href))\n return false;\n if (!origin) return true;\n try {\n return new URL(href, origin).origin !== origin;\n } catch {\n return false;\n }\n}\n","import type { ComponentPropsWithoutRef, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { isExternalHref } from \"../lib/link.ts\";\nimport {\n Button,\n type ButtonAppearance,\n type ButtonProps,\n} from \"../primitives/Button.tsx\";\nimport { ExternalLinkIcon } from \"../primitives/icons/index.tsx\";\n\ntype ExternalLinkButtonBaseProps = {\n size?: \"sm\" | \"md\" | \"lg\";\n appearance?: ButtonAppearance;\n intent?: ButtonProps[\"intent\"];\n /** Set false for another Pollinations property that should behave as product navigation. */\n external?: boolean;\n showIcon?: boolean;\n /** Leading icon, rendered before the label. */\n icon?: ReactNode;\n className?: string;\n children: ReactNode;\n};\n\ntype ExternalLinkButtonAnchorProps = ExternalLinkButtonBaseProps & {\n href: string;\n} & Omit<ComponentPropsWithoutRef<\"a\">, \"children\" | \"className\" | \"href\">;\n\ntype ExternalLinkButtonNativeButtonProps = ExternalLinkButtonBaseProps &\n Omit<ComponentPropsWithoutRef<\"button\">, \"children\" | \"className\">;\n\nexport type ExternalLinkButtonProps =\n | ExternalLinkButtonAnchorProps\n | ExternalLinkButtonNativeButtonProps;\n\n/** Primary flow actions such as checkout or authorization. Use InlineLink for navigation. */\nexport function ExternalLinkButton(props: ExternalLinkButtonProps) {\n const {\n size = \"md\",\n appearance,\n external = \"href\" in props ? isExternalHref(props.href) : true,\n showIcon = true,\n icon,\n className,\n children,\n } = props;\n const content = (\n <>\n {icon}\n <span>{children}</span>\n {external && showIcon ? (\n <ExternalLinkIcon\n className=\"polli:h-4 polli:w-4 polli:shrink-0 polli:opacity-60\"\n aria-hidden=\"true\"\n />\n ) : null}\n </>\n );\n\n if (\"href\" in props) {\n const {\n href,\n target = external ? \"_blank\" : undefined,\n rel = target === \"_blank\" ? \"noopener noreferrer\" : undefined,\n size: _size,\n appearance: _appearance,\n external: _external,\n showIcon: _showIcon,\n icon: _icon,\n className: _className,\n children: _children,\n ...anchorProps\n } = props;\n\n return (\n <Button\n as=\"a\"\n href={href}\n target={target}\n rel={rel}\n size={size}\n appearance={appearance}\n className={cn(\"polli:gap-2\", className)}\n {...anchorProps}\n >\n {content}\n </Button>\n );\n }\n\n const {\n type = \"button\",\n size: _size,\n appearance: _appearance,\n external: _external,\n showIcon: _showIcon,\n icon: _icon,\n className: _className,\n children: _children,\n ...buttonProps\n } = props;\n\n return (\n <Button\n as=\"button\"\n type={type}\n size={size}\n appearance={appearance}\n className={cn(\"polli:gap-2\", className)}\n {...buttonProps}\n >\n {content}\n </Button>\n );\n}\n","\"use client\";\nimport { createAnatomy } from \"@zag-js/anatomy\";\n//#region src/components/field/field.anatomy.ts\nvar fieldAnatomy = createAnatomy(\"field\").parts(\"root\", \"errorText\", \"helperText\", \"input\", \"label\", \"select\", \"textarea\", \"requiredIndicator\");\nvar parts = fieldAnatomy.build();\n//#endregion\nexport { fieldAnatomy, parts };\n","\"use client\";\nimport { useFieldContext } from \"./use-field-context.js\";\n//#region src/components/field/field-context.tsx\nvar FieldContext = (props) => props.children(useFieldContext());\n//#endregion\nexport { FieldContext };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-error-text.tsx\nvar FieldErrorText = forwardRef((props, ref) => {\n\tconst field = useFieldContext();\n\tconst mergedProps = mergeProps(field.getErrorTextProps(), props);\n\tif (field?.invalid) return /* @__PURE__ */ jsx(ark.span, {\n\t\t...mergedProps,\n\t\tref\n\t});\n\treturn null;\n});\nFieldErrorText.displayName = \"FieldErrorText\";\n//#endregion\nexport { FieldErrorText };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-helper-text.tsx\nvar FieldHelperText = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useFieldContext()?.getHelperTextProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.span, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nFieldHelperText.displayName = \"FieldHelperText\";\n//#endregion\nexport { FieldHelperText };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-input.tsx\nvar FieldInput = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useFieldContext()?.getInputProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.input, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nFieldInput.displayName = \"FieldInput\";\n//#endregion\nexport { FieldInput };\n","\"use client\";\nimport { parts } from \"./field.anatomy.js\";\nimport { FieldProvider, useFieldContext } from \"./use-field-context.js\";\nimport { useMemo } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-item.tsx\nvar FieldItem = (props) => {\n\tconst { value, children } = props;\n\tconst parentField = useFieldContext();\n\treturn /* @__PURE__ */ jsx(FieldProvider, {\n\t\tvalue: useMemo(() => {\n\t\t\tif (!parentField) throw new Error(\"Field.Item must be used within Field.Root\");\n\t\t\tconst controlId = `field::${parentField.ids.control}::item::${value}`;\n\t\t\tconst labelId = `${controlId}::label`;\n\t\t\tconst getControlProps = () => ({\n\t\t\t\t...parentField.getInputProps(),\n\t\t\t\tid: controlId\n\t\t\t});\n\t\t\treturn {\n\t\t\t\t...parentField,\n\t\t\t\tids: {\n\t\t\t\t\t...parentField.ids,\n\t\t\t\t\tcontrol: controlId,\n\t\t\t\t\tlabel: labelId\n\t\t\t\t},\n\t\t\t\tgetLabelProps: () => ({\n\t\t\t\t\t...parentField.getLabelProps(),\n\t\t\t\t\tid: labelId,\n\t\t\t\t\thtmlFor: controlId\n\t\t\t\t}),\n\t\t\t\tgetInputProps: () => ({\n\t\t\t\t\t...getControlProps(),\n\t\t\t\t\t...parts.input.attrs\n\t\t\t\t}),\n\t\t\t\tgetSelectProps: () => ({\n\t\t\t\t\t...getControlProps(),\n\t\t\t\t\t...parts.select.attrs\n\t\t\t\t}),\n\t\t\t\tgetTextareaProps: () => ({\n\t\t\t\t\t...getControlProps(),\n\t\t\t\t\t...parts.textarea.attrs\n\t\t\t\t})\n\t\t\t};\n\t\t}, [parentField, value]),\n\t\tchildren\n\t});\n};\nFieldItem.displayName = \"FieldItem\";\n//#endregion\nexport { FieldItem };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-label.tsx\nvar FieldLabel = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useFieldContext()?.getLabelProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.label, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nFieldLabel.displayName = \"FieldLabel\";\n//#endregion\nexport { FieldLabel };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { mergeProps } from \"@zag-js/core\";\n//#region src/components/field/field-required-indicator.tsx\nvar FieldRequiredIndicator = forwardRef(({ fallback, ...props }, ref) => {\n\tconst field = useFieldContext();\n\tif (!field.required) return fallback;\n\tconst mergedProps = mergeProps(field.getRequiredIndicatorProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.span, {\n\t\t...mergedProps,\n\t\tref,\n\t\tchildren: props.children ?? \"*\"\n\t});\n});\nFieldRequiredIndicator.displayName = \"FieldRequiredIndicator\";\n//#endregion\nexport { FieldRequiredIndicator };\n","\"use client\";\nimport { createContext } from \"../../utils/create-context.js\";\n//#region src/components/fieldset/use-fieldset-context.ts\nvar [FieldsetProvider, useFieldsetContext] = createContext({\n\tname: \"FieldsetContext\",\n\thookName: \"useFieldsetContext\",\n\tproviderName: \"<FieldsetProvider />\",\n\tstrict: false\n});\n//#endregion\nexport { FieldsetProvider, useFieldsetContext };\n","\"use client\";\nimport { useEffect, useLayoutEffect } from \"react\";\n//#region src/utils/use-safe-layout-effect.ts\nvar useSafeLayoutEffect = typeof window !== \"undefined\" ? useLayoutEffect : useEffect;\n//#endregion\nexport { useSafeLayoutEffect };\n","\"use client\";\nimport { parts } from \"./field.anatomy.js\";\nimport { useEnvironmentContext } from \"../../providers/environment/use-environment-context.js\";\nimport { useFieldsetContext } from \"../fieldset/use-fieldset-context.js\";\nimport { useSafeLayoutEffect } from \"../../utils/use-safe-layout-effect.js\";\nimport { useId, useMemo, useRef, useState } from \"react\";\nimport { ariaAttr, dataAttr } from \"@zag-js/dom-query\";\n//#region src/components/field/use-field.ts\nvar useField = (props = {}) => {\n\tconst fieldset = useFieldsetContext();\n\tconst env = useEnvironmentContext();\n\tconst { ids, target, disabled = Boolean(fieldset?.disabled), invalid = false, readOnly = false, required = false } = props;\n\tconst [hasErrorText, setHasErrorText] = useState(false);\n\tconst [hasHelperText, setHasHelperText] = useState(false);\n\tconst uid = useId();\n\tconst id = props.id ?? uid;\n\tconst rootRef = useRef(null);\n\tconst rootId = ids?.control ?? `field::${id}`;\n\tconst errorTextId = ids?.errorText ?? `field::${id}::error-text`;\n\tconst helperTextId = ids?.helperText ?? `field::${id}::helper-text`;\n\tconst labelId = ids?.label ?? `field::${id}::label`;\n\tuseSafeLayoutEffect(() => {\n\t\tconst rootNode = rootRef.current;\n\t\tif (!rootNode) return;\n\t\tconst checkTextElements = () => {\n\t\t\tconst docOrShadowRoot = env.getRootNode();\n\t\t\tsetHasErrorText(!!docOrShadowRoot.getElementById(errorTextId));\n\t\t\tsetHasHelperText(!!docOrShadowRoot.getElementById(helperTextId));\n\t\t};\n\t\tcheckTextElements();\n\t\tconst observer = new (env.getWindow()).MutationObserver(checkTextElements);\n\t\tobserver.observe(rootNode, {\n\t\t\tchildList: true,\n\t\t\tsubtree: true\n\t\t});\n\t\treturn () => observer.disconnect();\n\t}, [\n\t\tenv,\n\t\terrorTextId,\n\t\thelperTextId\n\t]);\n\tconst labelIds = useMemo(() => {\n\t\tconst ids = [];\n\t\tif (hasErrorText && invalid) ids.push(errorTextId);\n\t\tif (hasHelperText) ids.push(helperTextId);\n\t\treturn ids.join(\" \") || void 0;\n\t}, [\n\t\tinvalid,\n\t\terrorTextId,\n\t\thelperTextId,\n\t\thasErrorText,\n\t\thasHelperText\n\t]);\n\tconst getRootProps = useMemo(() => () => ({\n\t\t...parts.root.attrs,\n\t\tid: rootId,\n\t\tref: rootRef,\n\t\trole: \"group\",\n\t\t\"data-disabled\": dataAttr(disabled),\n\t\t\"data-invalid\": dataAttr(invalid),\n\t\t\"data-readonly\": dataAttr(readOnly)\n\t}), [\n\t\tdisabled,\n\t\tinvalid,\n\t\treadOnly,\n\t\trootId\n\t]);\n\tconst targetControlId = target ? `field::${id}::item::${target}` : void 0;\n\tconst getLabelProps = useMemo(() => () => ({\n\t\t...parts.label.attrs,\n\t\tid: labelId,\n\t\t\"data-disabled\": dataAttr(disabled),\n\t\t\"data-invalid\": dataAttr(invalid),\n\t\t\"data-readonly\": dataAttr(readOnly),\n\t\t\"data-required\": dataAttr(required),\n\t\thtmlFor: targetControlId ?? id\n\t}), [\n\t\tdisabled,\n\t\tinvalid,\n\t\treadOnly,\n\t\trequired,\n\t\tid,\n\t\tlabelId,\n\t\ttargetControlId\n\t]);\n\tconst getControlProps = useMemo(() => () => ({\n\t\t\"aria-describedby\": labelIds,\n\t\t\"aria-invalid\": ariaAttr(invalid),\n\t\t\"data-invalid\": dataAttr(invalid),\n\t\t\"data-required\": dataAttr(required),\n\t\t\"data-readonly\": dataAttr(readOnly),\n\t\tid,\n\t\trequired,\n\t\tdisabled,\n\t\treadOnly\n\t}), [\n\t\tlabelIds,\n\t\tinvalid,\n\t\trequired,\n\t\treadOnly,\n\t\tid,\n\t\tdisabled\n\t]);\n\tconst getInputProps = useMemo(() => () => ({\n\t\t...getControlProps(),\n\t\t...parts.input.attrs\n\t}), [getControlProps]);\n\tconst getTextareaProps = useMemo(() => () => ({\n\t\t...getControlProps(),\n\t\t...parts.textarea.attrs\n\t}), [getControlProps]);\n\tconst getSelectProps = useMemo(() => () => ({\n\t\t...getControlProps(),\n\t\t...parts.select.attrs\n\t}), [getControlProps]);\n\tconst getHelperTextProps = useMemo(() => () => ({\n\t\tid: helperTextId,\n\t\t...parts.helperText.attrs,\n\t\t\"data-disabled\": dataAttr(disabled)\n\t}), [disabled, helperTextId]);\n\tconst getErrorTextProps = useMemo(() => () => ({\n\t\tid: errorTextId,\n\t\t...parts.errorText.attrs,\n\t\t\"aria-live\": \"polite\"\n\t}), [errorTextId]);\n\tconst getRequiredIndicatorProps = useMemo(() => () => ({\n\t\t\"aria-hidden\": true,\n\t\t...parts.requiredIndicator.attrs\n\t}), []);\n\treturn {\n\t\tariaDescribedby: labelIds,\n\t\tids: {\n\t\t\troot: rootId,\n\t\t\tcontrol: id,\n\t\t\tlabel: labelId,\n\t\t\terrorText: errorTextId,\n\t\t\thelperText: helperTextId\n\t\t},\n\t\trefs: { rootRef },\n\t\tdisabled,\n\t\tinvalid,\n\t\treadOnly,\n\t\trequired,\n\t\tgetLabelProps,\n\t\tgetRootProps,\n\t\tgetInputProps,\n\t\tgetTextareaProps,\n\t\tgetSelectProps,\n\t\tgetHelperTextProps,\n\t\tgetErrorTextProps,\n\t\tgetRequiredIndicatorProps\n\t};\n};\n//#endregion\nexport { useField };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { FieldProvider } from \"./use-field-context.js\";\nimport { useField } from \"./use-field.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-root.tsx\nvar splitRootProps = createSplitProps();\nvar FieldRoot = forwardRef((props, ref) => {\n\tconst [useFieldProps, localProps] = splitRootProps(props, [\n\t\t\"id\",\n\t\t\"ids\",\n\t\t\"disabled\",\n\t\t\"invalid\",\n\t\t\"readOnly\",\n\t\t\"required\",\n\t\t\"target\"\n\t]);\n\tconst field = useField(useFieldProps);\n\tconst mergedProps = mergeProps(field.getRootProps(), localProps);\n\treturn /* @__PURE__ */ jsx(FieldProvider, {\n\t\tvalue: field,\n\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t...mergedProps,\n\t\t\tref: composeRefs(ref, field.refs.rootRef)\n\t\t})\n\t});\n});\nFieldRoot.displayName = \"FieldRoot\";\n//#endregion\nexport { FieldRoot };\n","\"use client\";\nimport { createSplitProps } from \"../../utils/create-split-props.js\";\nimport { ark } from \"../factory.js\";\nimport { FieldProvider } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-root-provider.tsx\nvar splitRootProviderProps = createSplitProps();\nvar FieldRootProvider = forwardRef((props, ref) => {\n\tconst [{ value: field }, localProps] = splitRootProviderProps(props, [\"value\"]);\n\tconst mergedProps = mergeProps(field.getRootProps(), localProps);\n\treturn /* @__PURE__ */ jsx(FieldProvider, {\n\t\tvalue: field,\n\t\tchildren: /* @__PURE__ */ jsx(ark.div, {\n\t\t\t...mergedProps,\n\t\t\tref\n\t\t})\n\t});\n});\nFieldRootProvider.displayName = \"FieldRootProvider\";\n//#endregion\nexport { FieldRootProvider };\n","\"use client\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\n//#region src/components/field/field-select.tsx\nvar FieldSelect = forwardRef((props, ref) => {\n\tconst mergedProps = mergeProps(useFieldContext()?.getSelectProps(), props);\n\treturn /* @__PURE__ */ jsx(ark.select, {\n\t\t...mergedProps,\n\t\tref\n\t});\n});\nFieldSelect.displayName = \"FieldSelect\";\n//#endregion\nexport { FieldSelect };\n","// src/autoresize-textarea.ts\nimport { getComputedStyle, getDocument, getWindow } from \"@zag-js/dom-query\";\nvar autoresizeTextarea = (el) => {\n if (!el) return;\n const style = getComputedStyle(el);\n const win = getWindow(el);\n const doc = getDocument(el);\n const resize = () => {\n requestAnimationFrame(() => {\n el.style.height = \"auto\";\n let newHeight;\n if (style.boxSizing === \"content-box\") {\n newHeight = el.scrollHeight - (parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));\n } else {\n newHeight = el.scrollHeight + parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);\n }\n if (style.maxHeight !== \"none\" && newHeight > parseFloat(style.maxHeight)) {\n if (style.overflowY === \"hidden\") {\n el.style.overflowY = \"scroll\";\n }\n newHeight = parseFloat(style.maxHeight);\n } else if (style.overflowY !== \"hidden\") {\n el.style.overflowY = \"hidden\";\n }\n el.style.height = `${newHeight}px`;\n });\n };\n el.addEventListener(\"input\", resize);\n el.form?.addEventListener(\"reset\", resize);\n const elementPrototype = Object.getPrototypeOf(el);\n const descriptor = Object.getOwnPropertyDescriptor(elementPrototype, \"value\");\n if (descriptor) {\n Object.defineProperty(el, \"value\", {\n ...descriptor,\n set(newValue) {\n const prevValue = descriptor.get?.call(this);\n descriptor.set?.call(this, newValue);\n resize();\n if (prevValue !== newValue) {\n queueMicrotask(() => {\n el.dispatchEvent(new win.InputEvent(\"input\", { bubbles: true }));\n });\n }\n }\n });\n }\n const resizeObserver = new win.ResizeObserver(() => {\n requestAnimationFrame(() => resize());\n });\n resizeObserver.observe(el);\n const attrObserver = new win.MutationObserver(() => resize());\n attrObserver.observe(el, { attributes: true, attributeFilter: [\"rows\", \"placeholder\"] });\n doc.fonts?.addEventListener(\"loadingdone\", resize);\n return () => {\n el.removeEventListener(\"input\", resize);\n el.form?.removeEventListener(\"reset\", resize);\n doc.fonts?.removeEventListener(\"loadingdone\", resize);\n resizeObserver.disconnect();\n attrObserver.disconnect();\n };\n};\nexport {\n autoresizeTextarea\n};\n","\"use client\";\nimport { composeRefs } from \"../../utils/compose-refs.js\";\nimport { ark } from \"../factory.js\";\nimport { useFieldContext } from \"./use-field-context.js\";\nimport { forwardRef, useEffect, useRef } from \"react\";\nimport { mergeProps } from \"@zag-js/react\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { autoresizeTextarea } from \"@zag-js/auto-resize\";\n//#region src/components/field/field-textarea.tsx\nvar FieldTextarea = forwardRef((props, ref) => {\n\tconst { autoresize, ...textareaProps } = props;\n\tconst textareaRef = useRef(null);\n\tconst mergedProps = mergeProps(useFieldContext()?.getTextareaProps(), { style: { resize: autoresize ? \"none\" : void 0 } }, textareaProps);\n\tuseEffect(() => {\n\t\tif (!autoresize) return;\n\t\treturn autoresizeTextarea(textareaRef.current);\n\t}, [autoresize]);\n\treturn /* @__PURE__ */ jsx(ark.textarea, {\n\t\t...mergedProps,\n\t\tref: composeRefs(ref, textareaRef)\n\t});\n});\nFieldTextarea.displayName = \"FieldTextarea\";\n//#endregion\nexport { FieldTextarea };\n","import { __exportAll } from \"../../_virtual/_rolldown/runtime.js\";\nimport { FieldContext } from \"./field-context.js\";\nimport { FieldErrorText } from \"./field-error-text.js\";\nimport { FieldHelperText } from \"./field-helper-text.js\";\nimport { FieldInput } from \"./field-input.js\";\nimport { FieldItem } from \"./field-item.js\";\nimport { FieldLabel } from \"./field-label.js\";\nimport { FieldRequiredIndicator } from \"./field-required-indicator.js\";\nimport { FieldRoot } from \"./field-root.js\";\nimport { FieldRootProvider } from \"./field-root-provider.js\";\nimport { FieldSelect } from \"./field-select.js\";\nimport { FieldTextarea } from \"./field-textarea.js\";\n//#region src/components/field/field.ts\nvar field_exports = /* @__PURE__ */ __exportAll({\n\tContext: () => FieldContext,\n\tErrorText: () => FieldErrorText,\n\tHelperText: () => FieldHelperText,\n\tInput: () => FieldInput,\n\tItem: () => FieldItem,\n\tLabel: () => FieldLabel,\n\tRequiredIndicator: () => FieldRequiredIndicator,\n\tRoot: () => FieldRoot,\n\tRootProvider: () => FieldRootProvider,\n\tSelect: () => FieldSelect,\n\tTextarea: () => FieldTextarea\n});\n//#endregion\nexport { field_exports };\n","import type { ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Field } from \"../primitives/Field.tsx\";\n\nexport type FieldStackProps = {\n /** Omit for a self-describing control; label the input itself. */\n label?: ReactNode;\n children: ReactNode;\n helper?: ReactNode;\n action?: ReactNode;\n error?: ReactNode;\n alignLabelRow?: boolean;\n className?: string;\n labelClassName?: string;\n helperClassName?: string;\n errorClassName?: string;\n};\n\nexport function FieldStack({\n label,\n children,\n helper,\n action,\n error,\n alignLabelRow = false,\n className,\n labelClassName,\n helperClassName,\n errorClassName,\n}: FieldStackProps) {\n return (\n <Field.Root\n className={cn(\n \"polli:flex polli:flex-col polli:gap-2 polli:font-body\",\n className,\n )}\n invalid={Boolean(error)}\n >\n {(label || action) && (\n <div\n className={cn(\n \"polli:flex polli:items-center polli:justify-between polli:gap-2\",\n alignLabelRow && \"polli:min-h-8\",\n )}\n >\n {label && (\n <Field.Label\n className={cn(\n \"polli:text-sm polli:font-semibold polli:leading-5 polli:text-theme-text-strong\",\n labelClassName,\n )}\n >\n {label}\n </Field.Label>\n )}\n {action}\n </div>\n )}\n {children}\n {error ? (\n <Field.ErrorText\n className={cn(\n \"polli:text-xs polli:font-medium polli:leading-5 polli:text-intent-danger-text\",\n errorClassName,\n )}\n >\n {error}\n </Field.ErrorText>\n ) : helper ? (\n <Field.HelperText\n className={cn(\n \"polli:text-xs polli:font-normal polli:leading-normal polli:text-theme-text-muted\",\n helperClassName,\n )}\n >\n {helper}\n </Field.HelperText>\n ) : null}\n </Field.Root>\n );\n}\n","type GuardState = {\n consumers: number;\n preventFileNavigation: EventListener;\n};\n\nconst guards = new WeakMap<Document, GuardState>();\n\n/**\n * Prevents the browser from navigating to a dropped file while at least one\n * upload control is mounted. One listener pair is shared per document.\n */\nexport function acquireDocumentFileDropGuard(document: Document): () => void {\n let guard = guards.get(document);\n\n if (!guard) {\n const preventFileNavigation: EventListener = (event) => {\n const types = (event as DragEvent).dataTransfer?.types;\n if (types?.includes(\"Files\")) event.preventDefault();\n };\n\n guard = { consumers: 0, preventFileNavigation };\n guards.set(document, guard);\n document.addEventListener(\"dragover\", preventFileNavigation);\n document.addEventListener(\"drop\", preventFileNavigation);\n }\n\n guard.consumers += 1;\n let released = false;\n\n return () => {\n if (released) return;\n released = true;\n guard.consumers -= 1;\n\n if (guard.consumers > 0) return;\n document.removeEventListener(\"dragover\", guard.preventFileNavigation);\n document.removeEventListener(\"drop\", guard.preventFileNavigation);\n guards.delete(document);\n };\n}\n","export type RejectReason = \"type\" | \"size\" | \"count\";\n\nexport type RejectedFile = { file: File; reason: RejectReason };\n\nexport type PartitionOptions = {\n maxFiles: number;\n maxSizeBytes: number;\n /** Comma-separated list: mime (\"image/png\"), wildcard (\"image/*\"), or extension (\".webp\"). */\n accept?: string;\n};\n\nexport type PartitionResult = {\n accepted: File[];\n rejected: RejectedFile[];\n};\n\nfunction matchesAccept(file: File, accept: string | undefined): boolean {\n if (!accept) return true;\n const tokens = accept\n .split(\",\")\n .map((t) => t.trim())\n .filter(Boolean);\n if (tokens.length === 0) return true;\n return tokens.some((token) => {\n if (token.startsWith(\".\")) {\n return file.name.toLowerCase().endsWith(token.toLowerCase());\n }\n if (token.endsWith(\"/*\")) {\n const prefix = token.slice(0, token.length - 1); // \"image/\"\n return file.type.startsWith(prefix);\n }\n return file.type === token;\n });\n}\n\n/**\n * Partition `incoming` files against the already-selected `current` files.\n * Deterministic: order preserved; every rejection carries a reason.\n * The count limit counts `current.length` against `maxFiles`.\n */\nexport function partitionFiles(\n incoming: File[],\n current: File[],\n { maxFiles, maxSizeBytes, accept }: PartitionOptions,\n): PartitionResult {\n const accepted: File[] = [];\n const rejected: RejectedFile[] = [];\n let slots = Math.max(0, maxFiles - current.length);\n\n for (const file of incoming) {\n if (!matchesAccept(file, accept)) {\n rejected.push({ file, reason: \"type\" });\n } else if (file.size > maxSizeBytes) {\n rejected.push({ file, reason: \"size\" });\n } else if (slots <= 0) {\n rejected.push({ file, reason: \"count\" });\n } else {\n accepted.push(file);\n slots -= 1;\n }\n }\n\n return { accepted, rejected };\n}\n","import { type ButtonHTMLAttributes, forwardRef, type ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Tooltip } from \"./Tooltip.tsx\";\n\n/** `danger` (delete, red) and `info` (edit/links, blue). */\nexport type IconButtonIntent = \"danger\" | \"info\";\nexport type IconButtonVariant = \"tile\" | \"ghost\";\n\nconst intentClasses: Record<IconButtonIntent, string> = {\n danger: \"polli:bg-intent-danger-bg-light polli:text-intent-danger-text\",\n info: \"polli:bg-intent-info-bg-light polli:text-intent-info-text\",\n};\n\nconst intentHoverClasses: Record<IconButtonIntent, string> = {\n danger: \"polli:hover:bg-intent-danger-bg-hover\",\n info: \"polli:hover:bg-intent-info-bg-hover\",\n};\n\nconst variantClasses: Record<IconButtonVariant, string> = {\n tile: \"polli:bg-theme-bg-active polli:text-theme-text-soft\",\n ghost: \"polli:bg-transparent polli:text-theme-text-muted\",\n};\n\nconst variantHoverClasses: Record<IconButtonVariant, string> = {\n tile: \"polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\",\n ghost: \"polli:hover:bg-transparent polli:hover:text-theme-text-soft\",\n};\n\nexport type IconButtonProps = Omit<\n ButtonHTMLAttributes<HTMLButtonElement>,\n \"children\" | \"className\" | \"title\"\n> & {\n intent?: IconButtonIntent;\n variant?: IconButtonVariant;\n pressed?: boolean;\n title?: string;\n tooltip?: ReactNode;\n tooltipAlign?: \"start\" | \"center\";\n tooltipClampToViewport?: boolean;\n children: ReactNode;\n className?: string;\n size?: \"sm\" | \"md\";\n};\n\nconst sizeClasses = {\n sm: \"polli:h-6 polli:w-6 polli:rounded\",\n md: \"polli:h-9 polli:w-9 polli:rounded-full\",\n} as const;\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n intent,\n variant = \"tile\",\n pressed,\n title,\n tooltip,\n tooltipAlign,\n tooltipClampToViewport,\n children,\n className,\n size = \"sm\",\n disabled = false,\n ...buttonProps\n },\n ref,\n ) => {\n const button = (\n <button\n {...buttonProps}\n ref={ref}\n type=\"button\"\n disabled={disabled}\n aria-label={buttonProps[\"aria-label\"] ?? title}\n aria-pressed={pressed}\n data-intent={intent}\n className={cn(\n \"polli-control polli:inline-flex polli:items-center polli:justify-center polli:transition-colors\",\n disabled\n ? \"polli:cursor-not-allowed polli:opacity-50\"\n : \"polli:cursor-pointer\",\n sizeClasses[size],\n intent ? intentClasses[intent] : variantClasses[variant],\n !disabled &&\n (intent\n ? intentHoverClasses[intent]\n : variantHoverClasses[variant]),\n className,\n )}\n >\n {children}\n </button>\n );\n\n const tooltipContent = tooltip ?? title;\n if (!tooltipContent) return button;\n\n return (\n <Tooltip\n triggerAs=\"span\"\n content={tooltipContent}\n align={tooltipAlign}\n clampToViewport={tooltipClampToViewport}\n tapEnabled={false}\n className={\n disabled\n ? \"polli:cursor-not-allowed\"\n : \"polli:cursor-pointer\"\n }\n >\n {button}\n </Tooltip>\n );\n },\n);\n\nIconButton.displayName = \"IconButton\";\n","import {\n type ChangeEvent,\n type ReactNode,\n useEffect,\n useId,\n useRef,\n useState,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { acquireDocumentFileDropGuard } from \"../lib/document-file-drop-guard.ts\";\nimport { partitionFiles, type RejectedFile } from \"../lib/partition-files.ts\";\nimport { IconButton } from \"../primitives/IconButton.tsx\";\nimport { ImageIcon, PlusIcon, XIcon } from \"../primitives/icons/index.tsx\";\n\nconst PREVIEWABLE_IMAGE_TYPES = new Set([\n \"image/gif\",\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\",\n]);\nconst PREVIEW_SIZE = 64;\nconst LARGE_PREVIEW_SIZE = 112;\n\nconst previewSizeClasses = {\n sm: \"polli:h-16 polli:w-16\",\n lg: \"polli:h-28 polli:w-28\",\n} as const;\n\nfunction isPreviewableImage(file: File): boolean {\n return PREVIEWABLE_IMAGE_TYPES.has(file.type);\n}\n\nfunction formatFileSize(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${Math.round(bytes / 1024)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nfunction attachmentSummary(files: File[]): string {\n const kinds = new Set(\n files.map((file) => file.type.split(\"/\")[0]).filter(Boolean),\n );\n if (kinds.size !== 1) return `${files.length} files attached`;\n const [kind] = kinds;\n return `${files.length} ${kind}${files.length === 1 ? \"\" : \"s\"} attached`;\n}\n\nfunction PreviewPlaceholder({\n icon,\n size,\n}: {\n icon: ReactNode;\n size: \"sm\" | \"lg\";\n}) {\n return (\n <div\n className={cn(\n \"polli:flex polli:items-center polli:justify-center polli:rounded-xl polli:bg-theme-bg-active polli:text-theme-text-soft\",\n previewSizeClasses[size],\n )}\n >\n {icon}\n </div>\n );\n}\n\nfunction FilePreview({\n file,\n placeholderIcon,\n size = \"sm\",\n}: {\n file: File;\n placeholderIcon: ReactNode;\n size?: \"sm\" | \"lg\";\n}) {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const [canPreview, setCanPreview] = useState(() =>\n isPreviewableImage(file),\n );\n const previewSize = size === \"lg\" ? LARGE_PREVIEW_SIZE : PREVIEW_SIZE;\n\n useEffect(() => {\n if (!isPreviewableImage(file)) {\n setCanPreview(false);\n return;\n }\n\n let cancelled = false;\n setCanPreview(true);\n\n async function drawPreview() {\n try {\n const bitmap = await createImageBitmap(file);\n if (cancelled) {\n bitmap.close();\n return;\n }\n\n const canvas = canvasRef.current;\n const context = canvas?.getContext(\"2d\");\n if (!canvas || !context) {\n bitmap.close();\n setCanPreview(false);\n return;\n }\n\n canvas.width = previewSize;\n canvas.height = previewSize;\n\n const scale = Math.max(\n previewSize / bitmap.width,\n previewSize / bitmap.height,\n );\n const width = bitmap.width * scale;\n const height = bitmap.height * scale;\n const x = (previewSize - width) / 2;\n const y = (previewSize - height) / 2;\n\n context.clearRect(0, 0, previewSize, previewSize);\n context.drawImage(bitmap, x, y, width, height);\n bitmap.close();\n } catch {\n if (!cancelled) setCanPreview(false);\n }\n }\n\n void drawPreview();\n\n return () => {\n cancelled = true;\n };\n }, [file, previewSize]);\n\n if (!canPreview) {\n return <PreviewPlaceholder icon={placeholderIcon} size={size} />;\n }\n\n return (\n <canvas\n ref={canvasRef}\n role=\"img\"\n aria-label={file.name}\n className={cn(\"polli:rounded-xl\", previewSizeClasses[size])}\n width={previewSize}\n height={previewSize}\n />\n );\n}\n\nexport type FileUploadProps = {\n value: File[];\n onChange: (files: File[]) => void;\n onReject?: (rejected: RejectedFile[]) => void;\n maxFiles?: number;\n maxSizeBytes?: number;\n accept?: string;\n icon?: ReactNode;\n label?: ReactNode;\n previewIcon?: ReactNode;\n /** Compact drop zone, or preview-only strip for a parent drop target. */\n variant?: \"default\" | \"compact\" | \"inline\";\n /** Fully locks the field: no add, no remove, drops ignored. */\n disabled?: boolean;\n className?: string;\n};\n\nexport function FileUpload({\n value,\n onChange,\n onReject,\n maxFiles = 4,\n maxSizeBytes = 10 * 1024 * 1024,\n accept = \"image/*\",\n icon = <ImageIcon className=\"polli:h-6 polli:w-6\" />,\n label = (\n <>\n Drag images here or <span className=\"polli:underline\">browse</span>\n </>\n ),\n previewIcon = <ImageIcon className=\"polli:h-5 polli:w-5\" />,\n variant = \"default\",\n disabled = false,\n className,\n}: FileUploadProps) {\n // A near-miss file drop should not navigate the browser away from the app.\n // Mounted upload controls share one document-level guard.\n useEffect(() => acquireDocumentFileDropGuard(document), []);\n\n // Only `disabled` blocks drop handling. At the file limit the browse/add\n // controls disappear, but over-limit drops still flow through partitionFiles\n // and are reported as `{ reason: \"count\" }` via onReject.\n function addFiles(incoming: File[]) {\n if (disabled || incoming.length === 0) return;\n const { accepted, rejected } = partitionFiles(incoming, value, {\n maxFiles,\n maxSizeBytes,\n accept,\n });\n if (accepted.length > 0) onChange([...value, ...accepted]);\n if (rejected.length > 0) onReject?.(rejected);\n }\n\n const hasFiles = value.length > 0;\n const canAdd = !disabled && value.length < maxFiles;\n const isSingleFile = maxFiles === 1;\n const compact = variant !== \"default\";\n const inline = variant === \"inline\";\n const previewSize = compact ? \"sm\" : isSingleFile ? \"lg\" : \"sm\";\n const inputId = useId();\n const addInputId = `${inputId}-add`;\n\n function handleInputChange(event: ChangeEvent<HTMLInputElement>) {\n addFiles(Array.from(event.target.files ?? []));\n event.target.value = \"\";\n }\n\n if (inline && !hasFiles) return null;\n\n return (\n <div className={cn(\"polli:flex polli:flex-col polli:gap-2\", className)}>\n <fieldset\n disabled={disabled}\n className={cn(\n \"polli:m-0\",\n !inline &&\n \"polli:rounded-xl polli:border polli:border-dashed polli:border-theme-border polli:bg-theme-bg-pale\",\n \"polli:text-sm\",\n inline\n ? \"polli:border-0 polli:bg-transparent polli:p-0 polli:text-left\"\n : compact\n ? \"polli:min-h-16 polli:px-3 polli:py-2 polli:text-left\"\n : \"polli:px-4 polli:py-4 polli:text-center\",\n \"polli:text-theme-text-soft polli:transition-colors\",\n disabled\n ? \"polli:opacity-50\"\n : \"polli:hover:bg-theme-bg-hover\",\n )}\n // Always prevent the browser's default file-drop navigation,\n // even when disabled; only the file handling is gated.\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => {\n e.preventDefault();\n if (disabled) return;\n addFiles(Array.from(e.dataTransfer.files));\n }}\n >\n {!hasFiles ? (\n <label\n htmlFor={inputId}\n className={cn(\n \"polli-control polli:flex polli:items-center polli:gap-2 polli:rounded-lg\",\n compact\n ? \"polli:min-h-12 polli:flex-row polli:justify-start\"\n : \"polli:min-h-32 polli:flex-col polli:justify-center\",\n canAdd\n ? \"polli:cursor-pointer\"\n : \"polli:cursor-not-allowed\",\n )}\n >\n {icon}\n <span>{label}</span>\n <input\n id={inputId}\n type=\"file\"\n accept={accept}\n multiple={maxFiles > 1}\n disabled={disabled || !canAdd}\n className=\"polli:sr-only\"\n onChange={handleInputChange}\n />\n </label>\n ) : (\n <div\n className={cn(\n \"polli:flex polli:gap-3\",\n compact ? \"polli:items-center\" : \"polli:flex-col\",\n )}\n >\n {compact && !inline && (\n <span className=\"polli:text-xs polli:font-medium polli:text-theme-text-muted\">\n {attachmentSummary(value)}\n </span>\n )}\n <ul\n className={cn(\n \"polli:m-0 polli:gap-3 polli:p-0\",\n compact\n ? cn(\n \"polli:flex polli:min-w-0 polli:flex-1 polli:flex-wrap\",\n inline\n ? \"polli:justify-start\"\n : \"polli:ml-auto polli:justify-end\",\n )\n : \"polli:grid polli:grid-cols-[repeat(auto-fill,minmax(5rem,1fr))]\",\n isSingleFile &&\n !compact &&\n \"polli:flex polli:justify-center\",\n )}\n >\n {value.map((file, index) => (\n <li\n key={`${file.name}-${index}`}\n className={cn(\n \"polli:relative polli:flex polli:min-w-0 polli:list-none polli:flex-col polli:items-center polli:gap-1\",\n isSingleFile && \"polli:max-w-full\",\n )}\n >\n <FilePreview\n file={file}\n placeholderIcon={previewIcon}\n size={previewSize}\n />\n {!compact && (\n <>\n <span\n className={cn(\n \"polli:max-w-full polli:truncate polli:text-xs polli:font-medium polli:text-theme-text-base\",\n isSingleFile\n ? \"polli:w-36\"\n : \"polli:w-16\",\n )}\n >\n {file.name}\n </span>\n <span className=\"polli:text-micro polli:text-theme-text-muted\">\n {formatFileSize(file.size)}\n </span>\n </>\n )}\n {!disabled && (\n <div className=\"polli:absolute polli:-top-2 polli:right-1\">\n <IconButton\n intent=\"danger\"\n title={`Remove ${file.name}`}\n onClick={() =>\n onChange(\n value.filter(\n (_, i) =>\n i !== index,\n ),\n )\n }\n >\n <XIcon className=\"polli:h-3 polli:w-3\" />\n </IconButton>\n </div>\n )}\n </li>\n ))}\n\n {!inline && !isSingleFile && canAdd && (\n <li className=\"polli:flex polli:list-none\">\n <label\n htmlFor={addInputId}\n className={cn(\n \"polli-control polli:flex polli:cursor-pointer polli:flex-col polli:items-center polli:justify-center polli:gap-1 polli:rounded-lg polli:bg-theme-bg-active polli:text-theme-text-soft polli:transition-colors polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-strong\",\n compact\n ? \"polli:h-16 polli:w-16 polli:px-2 polli:py-1\"\n : \"polli:min-h-20 polli:w-full polli:px-3 polli:py-2\",\n )}\n >\n <PlusIcon className=\"polli:h-5 polli:w-5\" />\n {!compact && (\n <span className=\"polli:text-xs polli:font-medium\">\n Add\n </span>\n )}\n <input\n id={addInputId}\n type=\"file\"\n aria-label=\"Add files\"\n accept={accept}\n multiple\n disabled={disabled || !canAdd}\n className=\"polli:sr-only\"\n onChange={handleInputChange}\n />\n </label>\n </li>\n )}\n </ul>\n\n {Number.isFinite(maxFiles) &&\n maxFiles > 1 &&\n !compact && (\n <span className=\"polli:text-xs polli:text-theme-text-muted\">\n {value.length} / {maxFiles} files\n </span>\n )}\n </div>\n )}\n </fieldset>\n </div>\n );\n}\n","import type { FC, ReactNode } from \"react\";\nimport { Tooltip } from \"../primitives/Tooltip.tsx\";\n\ntype InfoTipProps = {\n text?: ReactNode;\n content?: ReactNode;\n label?: string;\n};\n\n/**\n * Small \"i\" badge that opens a tooltip on hover, click, or focus.\n *\n * Quiet neutral badge and shared, viewport-clamped tooltip popup.\n * The help cursor indicates that more information is available.\n */\nexport const InfoTip: FC<InfoTipProps> = ({\n text,\n content,\n label = \"More info\",\n}) => (\n <Tooltip content={content ?? text} ariaLabel={label} className=\"polli:ml-1\">\n <span className=\"polli:inline-flex polli:h-4 polli:w-4 polli:items-center polli:justify-center polli:rounded-full polli:bg-surface-menu polli:font-bold polli:text-[10px] polli:leading-none polli:text-theme-text-muted polli:transition-colors polli:hover:text-theme-text-strong\">\n i\n </span>\n </Tooltip>\n);\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\n/** Semantic chip labels for status and metadata badges. */\ntype ChipIntent =\n | \"news\"\n | \"new\"\n | \"free\"\n | \"alpha\"\n | \"neutral\"\n | \"success\"\n | \"warning\"\n | \"info\"\n | \"danger\";\n\nconst chipSizes = {\n icon: \"polli:h-5 polli:w-5 polli:p-0 polli:text-xs\",\n sm: \"polli:h-5 polli:px-2 polli:text-xs\",\n md: \"polli:h-6 polli:px-2.5 polli:text-sm\",\n lg: \"polli:h-7 polli:px-3 polli:text-sm\",\n} as const;\n\nconst intentClasses: Record<ChipIntent, string> = {\n news: \"polli:bg-intent-news-bg-light polli:text-intent-news-text\",\n new: \"polli:bg-intent-new-bg-light polli:text-intent-new-text\",\n free: \"polli:bg-intent-free-bg-light polli:text-intent-free-text\",\n alpha: \"polli:bg-intent-alpha-bg-light polli:text-intent-alpha-text\",\n neutral: \"polli:bg-ink-100/80 polli:text-ink-900\",\n success:\n \"polli:bg-intent-success-bg-bright/15 polli:text-intent-success-text\",\n warning: \"polli:bg-intent-warning-bg-light polli:text-intent-warning-text\",\n info: \"polli:bg-intent-info-bg-light polli:text-intent-info-text\",\n danger: \"polli:bg-intent-danger-bg-light polli:text-intent-danger-text\",\n};\n\nexport type ChipProps = ComponentPropsWithoutRef<\"span\"> & {\n /** Semantic intent. */\n intent?: ChipIntent;\n size?: keyof typeof chipSizes;\n};\n\n// Static, rectangular colored container. Round shapes are reserved for buttons.\n// Reads `bg-theme-bg-active` / `text-theme-text-strong` from the cascade unless\n// `intent` is set (semantic, theme-independent).\nexport const Chip: FC<ChipProps> = ({\n intent,\n size = \"md\",\n className,\n children,\n ...rest\n}) => {\n const intentClass = intent\n ? intentClasses[intent]\n : \"polli:bg-theme-bg-active polli:text-theme-text-strong\";\n return (\n <span\n {...rest}\n className={cn(\n \"polli:inline-flex polli:shrink-0 polli:items-center polli:justify-center polli:gap-1 polli:rounded-lg polli:font-medium polli:leading-none\",\n chipSizes[size],\n intentClass,\n className,\n )}\n >\n {children}\n </span>\n );\n};\n","import { cn } from \"../lib/cn.ts\";\nimport { Chip } from \"../primitives/Chip.tsx\";\nimport { CheckIcon, ClipboardIcon } from \"../primitives/icons/index.tsx\";\nimport { CopyButton } from \"./CopyButton.tsx\";\n\nexport type KeyChipProps = {\n /** The visible start of the key, e.g. \"sk_0ysBCkH\". */\n prefix: string;\n /** The full key, when known: the chip then copies it on click. */\n value?: string | null;\n /** Accessible name for the copy action. */\n label?: string;\n className?: string;\n};\n\nconst chipClassName =\n \"polli:gap-1.5 polli:font-mono polli:font-normal polli:[&>svg]:size-3.5 polli:[&>svg]:shrink-0\";\n\n/**\n * One badge for every key: prefix and ellipsis, nothing else. A secret key\n * only ever shows its prefix; a key whose value is known copies on click and\n * carries the clipboard icon.\n */\nexport function KeyChip({\n prefix,\n value,\n label = \"Copy key\",\n className,\n}: KeyChipProps) {\n const text = `${prefix}…`;\n if (!value) {\n return (\n <Chip intent=\"neutral\" className={cn(chipClassName, className)}>\n {text}\n </Chip>\n );\n }\n return (\n <CopyButton\n value={value}\n tooltip={null}\n aria-label={label}\n className=\"polli:inline-flex polli:cursor-pointer polli:rounded-lg\"\n >\n {(copied) => (\n <Chip\n intent={copied ? \"success\" : \"neutral\"}\n className={cn(\n chipClassName,\n \"polli:transition-colors\",\n className,\n )}\n >\n {copied ? (\n <CheckIcon aria-hidden=\"true\" />\n ) : (\n <ClipboardIcon aria-hidden=\"true\" />\n )}\n {copied ? \"Copied\" : text}\n </Chip>\n )}\n </CopyButton>\n );\n}\n","import type { PropsWithChildren } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { isExternalHref } from \"../lib/link.ts\";\nimport { ExternalLinkIcon } from \"../primitives/icons/index.tsx\";\nimport { Surface } from \"../primitives/Surface.tsx\";\n\ntype BaseLinkCardProps = {\n external?: boolean;\n showIcon?: boolean;\n className?: string;\n surfaceClassName?: string;\n};\n\nexport type LinkCardProps<T extends React.ElementType = \"a\"> =\n PropsWithChildren<BaseLinkCardProps> & {\n as?: T;\n } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseLinkCardProps | \"as\">;\n\nexport function LinkCard<T extends React.ElementType = \"a\">({\n as,\n external,\n showIcon = true,\n className,\n surfaceClassName,\n children,\n ...linkProps\n}: LinkCardProps<T>) {\n const Component: React.ElementType = as || \"a\";\n const isExternal =\n external ?? isExternalHref((linkProps as { href?: unknown }).href);\n\n return (\n <Surface\n as={Component}\n variant=\"card\"\n target={isExternal ? \"_blank\" : undefined}\n rel={isExternal ? \"noopener noreferrer\" : undefined}\n {...linkProps}\n className={cn(\n \"polli:relative polli:flex polli:h-full polli:flex-col polli:gap-2 polli:bg-surface-opaque/80 polli:p-5 polli:outline-none\",\n showIcon && isExternal && \"polli:pr-10\",\n \"polli:transition-colors polli:hover:bg-surface-opaque/95\",\n \"polli:focus-visible:ring-2 polli:focus-visible:ring-theme-border\",\n className,\n surfaceClassName,\n )}\n >\n {showIcon && isExternal && (\n <ExternalLinkIcon\n aria-hidden=\"true\"\n className=\"polli:absolute polli:top-4 polli:right-4 polli:h-3.5 polli:w-3.5 polli:text-theme-text-soft\"\n />\n )}\n {children}\n </Surface>\n );\n}\n","import type { ComponentPropsWithoutRef, FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Text } from \"../primitives/Typography.tsx\";\n\nexport type MediaPlaceholderProps = ComponentPropsWithoutRef<\"div\"> & {\n icon?: ReactNode;\n label?: ReactNode;\n detail?: ReactNode;\n};\n\nexport const MediaPlaceholder: FC<MediaPlaceholderProps> = ({\n icon,\n label,\n detail,\n children,\n className,\n ...rest\n}) => (\n <div\n {...rest}\n className={cn(\n \"polli:flex polli:aspect-video polli:min-h-40 polli:flex-col polli:items-center polli:justify-center polli:gap-3 polli:rounded-lg polli:border polli:border-dashed polli:border-theme-border polli:bg-theme-bg-pale polli:p-6 polli:text-center\",\n className,\n )}\n >\n {icon && (\n <div className=\"polli:flex polli:h-10 polli:w-10 polli:items-center polli:justify-center polli:rounded-full polli:bg-theme-bg-active polli:text-theme-text-base\">\n {icon}\n </div>\n )}\n {(label || detail) && (\n <div className=\"polli:max-w-sm\">\n {label && (\n <Text as=\"p\" size=\"sm\" tone=\"strong\" weight=\"semibold\">\n {label}\n </Text>\n )}\n {detail && (\n <Text as=\"p\" size=\"sm\" tone=\"soft\" className=\"polli:mt-1\">\n {detail}\n </Text>\n )}\n </div>\n )}\n {children}\n </div>\n);\n","import type { FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\nimport { Dropdown } from \"../primitives/Dropdown.tsx\";\nimport { ScrollArea } from \"../primitives/ScrollArea.tsx\";\nimport { Tooltip } from \"../primitives/Tooltip.tsx\";\n\nexport type MultiSelectOption = {\n value: string;\n label: string;\n};\n\nexport type MultiSelectProps = {\n options: MultiSelectOption[];\n selected: string[];\n onChange: (selected: string[]) => void;\n placeholder: string;\n disabled?: boolean;\n disabledText?: string;\n disabledTooltip?: string;\n align?: \"start\" | \"end\";\n label?: string;\n /** Accessible name when the visible label is supplied by the caller. */\n ariaLabel?: string;\n /** Fill the available width, allowing the trigger label to truncate. */\n fullWidth?: boolean;\n};\n\nconst TRIGGER_BASE =\n \"polli-control polli:inline-flex polli:min-h-8 polli:min-w-[140px] polli:items-center polli:gap-2 polli:rounded-full polli:px-3 polli:py-1.5 polli:text-xs polli:font-medium polli:transition-all polli:duration-200\";\n\nconst ROW_BASE =\n \"polli-control polli:flex polli:w-full polli:items-center polli:gap-3 polli:px-3 polli:py-2 polli:text-left polli:text-xs polli:transition-colors\";\n\nconst CHECK_BASE =\n \"polli:flex polli:h-4 polli:w-4 polli:flex-shrink-0 polli:items-center polli:justify-center polli:rounded polli:border polli:border-theme-border polli:text-xs\";\n\nexport const MultiSelect: FC<MultiSelectProps> = ({\n options,\n selected,\n onChange,\n placeholder,\n disabled,\n disabledText,\n disabledTooltip,\n align = \"start\",\n label,\n ariaLabel,\n fullWidth = false,\n}) => {\n const isAllSelected = selected.length === 0;\n\n const toggleItem = (itemId: string) => {\n if (selected.includes(itemId)) {\n onChange(selected.filter((m) => m !== itemId));\n } else {\n onChange([...selected, itemId]);\n }\n };\n\n const selectAll = () => onChange([]);\n\n const displayText = disabled\n ? disabledText\n : isAllSelected\n ? placeholder\n : selected.length === 1\n ? (options.find((option) => option.value === selected[0])?.label ??\n \"1 selected\")\n : `${selected.length} selected`;\n\n const labelNode = label ? (\n <span className=\"polli:text-xs polli:font-medium polli:text-theme-text-soft\">\n {label}\n </span>\n ) : null;\n\n if (disabled) {\n return (\n <div\n className={cn(\n \"polli:flex polli:items-center polli:gap-2\",\n fullWidth && \"polli:w-full polli:min-w-0\",\n )}\n >\n {labelNode}\n <Tooltip\n triggerAs=\"span\"\n content={disabledTooltip || \"No items available\"}\n align=\"center\"\n className={cn(\n \"polli:inline-flex polli:cursor-not-allowed\",\n fullWidth && \"polli:min-w-0 polli:flex-1\",\n )}\n >\n <button\n type=\"button\"\n disabled\n aria-label={ariaLabel || label || placeholder}\n className={cn(\n TRIGGER_BASE,\n fullWidth && \"polli:w-full polli:min-w-0\",\n \"polli:cursor-not-allowed polli:bg-theme-bg-active polli:opacity-50\",\n )}\n >\n <span className=\"polli:flex-1 polli:truncate polli:text-left polli:text-theme-text-strong\">\n {displayText}\n </span>\n <ChevronIcon\n expanded={false}\n className=\"polli:h-3 polli:w-3 polli:text-theme-text-soft\"\n />\n </button>\n </Tooltip>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"polli:flex polli:items-center polli:gap-2\",\n fullWidth && \"polli:w-full polli:min-w-0\",\n )}\n >\n {labelNode}\n <Dropdown\n align={align}\n className=\"polli:w-[min(20rem,calc(100vw-2rem))]\"\n trigger={(open) => (\n <button\n type=\"button\"\n aria-label={ariaLabel || label || placeholder}\n className={cn(\n TRIGGER_BASE,\n fullWidth && \"polli:w-full polli:min-w-0\",\n open\n ? \"polli:bg-theme-bg-hover\"\n : \"polli:bg-theme-bg-active polli:hover:bg-theme-bg-hover\",\n )}\n >\n <span\n className={cn(\n \"polli:flex-1 polli:truncate polli:text-left\",\n open\n ? \"polli:text-theme-text-strong\"\n : \"polli:text-theme-text-base\",\n )}\n >\n {displayText}\n </span>\n <ChevronIcon\n expanded={open}\n className={cn(\n \"polli:h-3 polli:w-3 polli:transition-transform\",\n open\n ? \"polli:text-theme-text-strong\"\n : \"polli:text-theme-text-soft\",\n )}\n />\n </button>\n )}\n >\n <ScrollArea className=\"polli:max-h-64\">\n <button\n type=\"button\"\n onClick={selectAll}\n aria-pressed={isAllSelected}\n className={cn(\n ROW_BASE,\n isAllSelected\n ? \"polli:bg-theme-bg-active polli:font-medium polli:text-theme-text-strong\"\n : \"polli:text-theme-text-base polli:hover:bg-theme-bg-subtle\",\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n CHECK_BASE,\n isAllSelected &&\n \"polli:bg-theme-bg-active polli:text-theme-text-strong\",\n )}\n >\n {isAllSelected && \"✓\"}\n </span>\n {placeholder}\n </button>\n {options.map((opt) => {\n const isChecked = selected.includes(opt.value);\n return (\n <button\n type=\"button\"\n key={opt.value}\n onClick={() => toggleItem(opt.value)}\n aria-pressed={isChecked}\n className={cn(\n ROW_BASE,\n isChecked\n ? \"polli:bg-theme-bg-active polli:text-theme-text-strong\"\n : \"polli:text-theme-text-base polli:hover:bg-theme-bg-subtle\",\n )}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n CHECK_BASE,\n isChecked &&\n \"polli:bg-theme-bg-active polli:text-theme-text-strong\",\n )}\n >\n {isChecked && \"✓\"}\n </span>\n <span className=\"polli:min-w-0 polli:[overflow-wrap:anywhere]\">\n {opt.label}\n </span>\n </button>\n );\n })}\n </ScrollArea>\n </Dropdown>\n </div>\n );\n};\n","import type { ComponentType, PropsWithChildren } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype BaseNavItemProps = {\n /** Current/selected item — fills with the accent + sets `aria-current`. */\n active?: boolean;\n /** Optional leading icon. */\n icon?: ComponentType<{ className?: string }>;\n className?: string;\n};\n\n// Neutral/quiet when inactive; filled with the accent when active. The leading\n// icon is the section marker.\nconst base =\n \"polli-control polli:flex polli:items-center polli:gap-2 polli:rounded-full polli:px-3 polli:py-2 polli:text-left polli:text-sm polli:font-medium polli:whitespace-nowrap polli:transition-colors\";\nconst activeClasses = \"polli:bg-theme-bg-active polli:text-theme-text-strong\";\nconst inactiveClasses =\n \"polli:text-ink-800 polli:hover:bg-surface-opaque/60 polli:hover:text-ink-950\";\n\nexport type NavItemProps<T extends React.ElementType = \"button\"> =\n PropsWithChildren<BaseNavItemProps> & {\n as?: T;\n } & Omit<React.ComponentPropsWithoutRef<T>, keyof BaseNavItemProps | \"as\">;\n\n/**\n * Minimal nav item — a pill that's neutral when inactive and filled with the\n * accent when active, with an optional leading icon. Polymorphic: `<NavItem>`\n * (button) for in-page nav, `<NavItem as={Link} active={…}>` for routed nav.\n * Shared by the enter dashboard rail and apps so both use one design.\n */\nexport function NavItem<T extends React.ElementType = \"button\">({\n as,\n active = false,\n icon: Icon,\n className,\n children,\n ...rest\n}: NavItemProps<T>) {\n const Component: React.ElementType = as || \"button\";\n return (\n <Component\n aria-current={active ? \"page\" : undefined}\n className={cn(\n base,\n active ? activeClasses : inactiveClasses,\n className,\n )}\n {...rest}\n >\n {Icon ? (\n <Icon className=\"polli:h-4 polli:w-4 polli:shrink-0\" />\n ) : null}\n {children}\n </Component>\n );\n}\n","const MS_PER_DAY = 86400000;\n\nexport type PeriodGranularity = \"day\" | \"week\" | \"month\";\n\nexport type PeriodSelection = {\n granularity: PeriodGranularity;\n period: string;\n};\n\nexport type PeriodWindow = {\n start: Date;\n end: Date;\n};\n\nexport function startOfUtcDay(date = new Date()): Date {\n return new Date(\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate()),\n );\n}\n\nexport function addUtcDays(date: Date, days: number): Date {\n const next = new Date(date);\n next.setUTCDate(next.getUTCDate() + days);\n return next;\n}\n\nfunction startOfUtcMonth(date: Date): Date {\n return new Date(Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), 1));\n}\n\nfunction addUtcMonths(date: Date, months: number): Date {\n return new Date(\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + months, 1),\n );\n}\n\nfunction startOfUtcIsoWeek(date: Date): Date {\n const day = date.getUTCDay() || 7;\n return addUtcDays(startOfUtcDay(date), 1 - day);\n}\n\nfunction getUtcIsoWeekPeriod(date: Date): string {\n const day = date.getUTCDay() || 7;\n const thursday = addUtcDays(startOfUtcDay(date), 4 - day);\n const isoYear = thursday.getUTCFullYear();\n const yearStart = new Date(Date.UTC(isoYear, 0, 1));\n const isoWeek = Math.ceil(\n ((thursday.getTime() - yearStart.getTime()) / MS_PER_DAY + 1) / 7,\n );\n return `${isoYear}-W${String(isoWeek).padStart(2, \"0\")}`;\n}\n\nfunction formatUtcDatePeriod(date: Date): string {\n return date.toISOString().slice(0, 10);\n}\n\nfunction formatUtcHourPeriod(date: Date): string {\n return date.toISOString().slice(0, 13).replace(\"T\", \" \");\n}\n\nfunction formatUtcMonthPeriod(date: Date): string {\n return date.toISOString().slice(0, 7);\n}\n\nexport function periodFromDate(\n granularity: PeriodGranularity,\n date = new Date(),\n): PeriodSelection {\n if (granularity === \"day\") {\n return {\n granularity,\n period: formatUtcDatePeriod(startOfUtcDay(date)),\n };\n }\n if (granularity === \"week\") {\n return { granularity, period: getUtcIsoWeekPeriod(date) };\n }\n return { granularity, period: formatUtcMonthPeriod(startOfUtcMonth(date)) };\n}\n\nexport function currentPeriod(): PeriodSelection {\n return periodFromDate(\"day\");\n}\n\nexport function periodToWindow(selection: PeriodSelection): PeriodWindow {\n if (selection.granularity === \"day\") {\n const start = new Date(`${selection.period}T00:00:00.000Z`);\n return { start, end: addUtcDays(start, 1) };\n }\n\n if (selection.granularity === \"week\") {\n const [yearText, weekText] = selection.period.split(\"-W\");\n const isoYear = Number(yearText);\n const isoWeek = Number(weekText);\n const jan4 = new Date(Date.UTC(isoYear, 0, 4));\n const start = addUtcDays(startOfUtcIsoWeek(jan4), (isoWeek - 1) * 7);\n return { start, end: addUtcDays(start, 7) };\n }\n\n const [yearText, monthText] = selection.period.split(\"-\");\n const start = new Date(\n Date.UTC(Number(yearText), Number(monthText) - 1, 1),\n );\n return { start, end: addUtcMonths(start, 1) };\n}\n\nexport function getPeriodBucketKeys(selection: PeriodSelection): string[] {\n const { start, end } = periodToWindow(selection);\n const bucketKeys: string[] = [];\n const cursor = new Date(start);\n if (selection.granularity === \"day\") {\n while (cursor < end) {\n bucketKeys.push(`${formatUtcHourPeriod(cursor)}:00:00`);\n cursor.setUTCHours(cursor.getUTCHours() + 1);\n }\n return bucketKeys;\n }\n\n while (cursor < end) {\n bucketKeys.push(formatUtcDatePeriod(cursor));\n cursor.setUTCDate(cursor.getUTCDate() + 1);\n }\n return bucketKeys;\n}\n\nexport function periodBucketKeyToDate(\n bucketKey: string,\n granularity: PeriodGranularity,\n): Date {\n if (granularity === \"day\") {\n return new Date(`${bucketKey.replace(\" \", \"T\")}.000Z`);\n }\n return new Date(`${bucketKey}T00:00:00.000Z`);\n}\n\nexport function isPeriodSelectable(\n selection: PeriodSelection,\n minDate = new Date(0),\n maxDate = startOfUtcDay(),\n): boolean {\n const { start, end } = periodToWindow(selection);\n return end > minDate && start <= maxDate;\n}\n","import type {\n ComponentPropsWithoutRef,\n ElementType,\n MouseEvent as ReactMouseEvent,\n ReactNode,\n} from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype TabButtonOwnProps = {\n active: boolean;\n /** Omit when rendering as a link (`as`) and navigation carries the change. */\n onClick?: () => void;\n children: ReactNode;\n size?: \"lg\" | \"md\" | \"sm\" | \"xs\";\n variant?: \"soft\" | \"ghost\";\n intent?: \"neutral\";\n ariaLabel?: string;\n disabled?: boolean;\n className?: string;\n};\n\n/**\n * Polymorphic like Button, so a tab that navigates can render a real anchor\n * instead of a click handler — middle-click, right-click and crawlers all\n * depend on that. Defaults to <button>, so existing call sites are unchanged.\n */\nexport type TabButtonProps<T extends ElementType = \"button\"> =\n TabButtonOwnProps & { as?: T } & Omit<\n ComponentPropsWithoutRef<T>,\n keyof TabButtonOwnProps | \"as\"\n >;\n\n/**\n * Shared pill shape (no colors) — used by every TabButton variant.\n *\n * `transition-colors`, not `transition-all`: only background and text colour\n * change between the variants, and `all` additionally animates any layout\n * property that happens to differ — which is the usual cause of a control\n * jittering under the pointer on hover.\n */\nconst tabButtonBaseClass =\n \"polli-control polli:inline-flex polli:items-center polli:justify-center polli:rounded-full polli:font-medium polli:leading-normal polli:transition-colors polli:duration-200\";\n\nconst tabButtonSizeClass = {\n xs: \"polli:px-2.5 polli:py-1 polli:text-xs\",\n lg: \"polli:px-5 polli:py-2 polli:text-lg\",\n md: \"polli:px-4 polli:py-1.5 polli:text-base\",\n sm: \"polli:px-3 polli:py-1.5 polli:text-sm\",\n} as const;\n\nconst variantClasses = {\n // The default tab look: borderless and monochrome. Selected uses `bg-active`\n // — the same light resting fill as the site's normal buttons. Both states\n // deepen to `bg-hover` and use the theme's hover label color. Non-selected\n // uses the quiet `bg-subtle` token until then.\n soft: {\n base: \"\",\n active: \"polli:bg-theme-bg-active polli:text-theme-text-strong polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\",\n inactive:\n \"polli:bg-theme-bg-subtle polli:text-theme-text-base polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\",\n },\n // Transparent until hovered or selected — for multi-select toggles and\n // inline rows where a filled idle pill would read as a hard selection.\n ghost: {\n base: \"polli:border polli:border-transparent\",\n active: \"polli:bg-theme-bg-active polli:text-theme-text-strong polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\",\n inactive:\n \"polli:bg-transparent polli:text-theme-text-base polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover\",\n },\n} as const;\n\nexport function TabButton<T extends ElementType = \"button\">({\n as,\n active,\n onClick,\n children,\n size = \"md\",\n variant = \"soft\",\n intent,\n ariaLabel,\n disabled = false,\n className,\n ...rest\n}: TabButtonProps<T>) {\n const Component: ElementType = as || \"button\";\n const isButton = Component === \"button\";\n const colors = variantClasses[intent === \"neutral\" ? \"soft\" : variant];\n const handleClick = disabled\n ? (event: ReactMouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n }\n : onClick;\n\n return (\n <Component\n {...rest}\n {...(isButton ? { type: \"button\", disabled } : {})}\n {...(!isButton && disabled\n ? { \"aria-disabled\": true, tabIndex: -1 }\n : {})}\n {...(Component === \"a\" && disabled ? { href: undefined } : {})}\n onClick={handleClick}\n {...(ariaLabel !== undefined ? { \"aria-label\": ariaLabel } : {})}\n // aria-pressed is for toggles; a link that navigates announces its\n // selected state with aria-current instead.\n {...(isButton\n ? { \"aria-pressed\": active }\n : { \"aria-current\": active ? \"page\" : undefined })}\n className={cn(\n tabButtonBaseClass,\n variantClasses[variant].base,\n active ? colors.active : colors.inactive,\n disabled &&\n \"polli:pointer-events-none polli:cursor-not-allowed polli:opacity-50\",\n tabButtonSizeClass[size],\n className,\n )}\n >\n {children}\n </Component>\n );\n}\n","import type { FC, ReactNode } from \"react\";\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport {\n addUtcDays,\n isPeriodSelectable,\n type PeriodGranularity,\n type PeriodSelection,\n periodFromDate,\n periodToWindow,\n startOfUtcDay,\n} from \"../lib/period.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\nimport { Dropdown } from \"../primitives/Dropdown.tsx\";\nimport { TabButton } from \"../primitives/TabButton.tsx\";\n\nexport type PeriodPickerProps = {\n value: PeriodSelection;\n onChange: (value: PeriodSelection) => void;\n minDate?: Date;\n maxDate?: Date;\n /** Custom trigger for a calendar with a fixed granularity. */\n trigger?: (open: boolean) => ReactNode;\n /** Optional controls above the calendar grid. */\n header?: ReactNode;\n};\n\nconst WEEKDAY_LABELS = [\"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\", \"Sun\"];\nconst MONTH_LABELS = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n];\n\nconst NAV_BUTTON =\n \"polli-control polli:rounded-full polli:px-2 polli:py-1 polli:text-xs polli:font-semibold polli:text-theme-text-base polli:transition-colors polli:hover:bg-theme-bg-subtle\";\n\nfunction addUtcMonths(date: Date, months: number): Date {\n return new Date(\n Date.UTC(date.getUTCFullYear(), date.getUTCMonth() + months, 1),\n );\n}\n\nfunction monthGridDates(viewMonth: Date): Date[] {\n const firstDay = new Date(\n Date.UTC(viewMonth.getUTCFullYear(), viewMonth.getUTCMonth(), 1),\n );\n const firstWeekday = firstDay.getUTCDay() || 7;\n const cursor = addUtcDays(firstDay, 1 - firstWeekday);\n return Array.from({ length: 42 }, (_, index) => addUtcDays(cursor, index));\n}\n\nfunction sameUtcDay(left: Date, right: Date): boolean {\n return left.getTime() === right.getTime();\n}\n\nfunction periodDate(value: PeriodSelection): Date {\n return periodToWindow(value).start;\n}\n\nfunction selectionKey(value: PeriodSelection): string {\n return `${value.granularity}:${value.period}`;\n}\n\nfunction formatMonthYear(date: Date, month: \"short\" | \"long\" = \"short\") {\n return date.toLocaleDateString(\"en-US\", {\n timeZone: \"UTC\",\n month,\n year: \"numeric\",\n });\n}\n\nfunction formatFullDate(date: Date) {\n return date.toLocaleDateString(\"en-US\", {\n timeZone: \"UTC\",\n month: \"short\",\n day: \"numeric\",\n year: \"numeric\",\n });\n}\n\nfunction formatWeekSummary(start: Date, end: Date) {\n const weekEnd = addUtcDays(end, -1);\n const sameMonth =\n start.getUTCFullYear() === weekEnd.getUTCFullYear() &&\n start.getUTCMonth() === weekEnd.getUTCMonth();\n\n if (sameMonth) {\n const month = start.toLocaleDateString(\"en-US\", {\n timeZone: \"UTC\",\n month: \"short\",\n });\n return `${month} ${start.getUTCDate()}-${weekEnd.getUTCDate()}, ${weekEnd.getUTCFullYear()}`;\n }\n\n return `${formatFullDate(start)} - ${formatFullDate(weekEnd)}`;\n}\n\nfunction formatPeriodSummary(value: PeriodSelection): string {\n const { start, end } = periodToWindow(value);\n if (value.granularity === \"day\") return formatFullDate(start);\n if (value.granularity === \"week\") return formatWeekSummary(start, end);\n return formatMonthYear(start, \"long\");\n}\n\nfunction viewBounds(\n viewDate: Date,\n granularity: PeriodGranularity,\n): { start: Date; end: Date } {\n if (granularity === \"month\") {\n const start = new Date(Date.UTC(viewDate.getUTCFullYear(), 0, 1));\n return { start, end: addUtcMonths(start, 12) };\n }\n\n const start = new Date(\n Date.UTC(viewDate.getUTCFullYear(), viewDate.getUTCMonth(), 1),\n );\n return { start, end: addUtcMonths(start, 1) };\n}\n\nexport const PeriodPicker: FC<PeriodPickerProps> = ({\n value,\n onChange,\n minDate = new Date(0),\n maxDate,\n trigger,\n header,\n}) => {\n const [open, setOpen] = useState(false);\n const [viewDate, setViewDate] = useState<Date>(() => periodDate(value));\n const [anchorDate, setAnchorDate] = useState<Date>(() => periodDate(value));\n const emittedSelectionRef = useRef<string | null>(null);\n const { granularity, period } = value;\n\n useEffect(() => {\n const currentSelectionKey = selectionKey({ granularity, period });\n if (emittedSelectionRef.current === currentSelectionKey) {\n emittedSelectionRef.current = null;\n return;\n }\n const nextAnchorDate = periodDate({ granularity, period });\n setAnchorDate(nextAnchorDate);\n setViewDate(nextAnchorDate);\n }, [granularity, period]);\n\n const dates = useMemo(() => monthGridDates(viewDate), [viewDate]);\n const selectedWindow = periodToWindow(value);\n const today = startOfUtcDay(maxDate);\n const previousViewDate =\n value.granularity === \"month\"\n ? addUtcMonths(viewDate, -12)\n : addUtcMonths(viewDate, -1);\n const nextViewDate =\n value.granularity === \"month\"\n ? addUtcMonths(viewDate, 12)\n : addUtcMonths(viewDate, 1);\n const previousBounds = viewBounds(previousViewDate, value.granularity);\n const nextBounds = viewBounds(nextViewDate, value.granularity);\n const previousDisabled = previousBounds.end <= minDate;\n const nextDisabled = nextBounds.start > today;\n const summaryLabel = formatPeriodSummary(value);\n\n const commitSelection = (selection: PeriodSelection, anchor: Date) => {\n emittedSelectionRef.current = selectionKey(selection);\n setAnchorDate(anchor);\n setViewDate(anchor);\n onChange(selection);\n };\n\n const setGranularity = (granularity: PeriodGranularity) => {\n commitSelection(periodFromDate(granularity, anchorDate), anchorDate);\n };\n\n const selectDate = (date: Date) => {\n commitSelection(periodFromDate(value.granularity, date), date);\n setOpen(false);\n };\n\n const viewLabel =\n value.granularity === \"month\"\n ? String(viewDate.getUTCFullYear())\n : formatMonthYear(viewDate, \"long\");\n\n return (\n <div\n className={\n trigger\n ? \"polli:contents\"\n : \"polli:flex polli:w-full polli:flex-wrap polli:items-center polli:gap-2\"\n }\n >\n {!trigger && (\n <div className=\"polli:flex polli:flex-wrap polli:gap-1.5\">\n {([\"day\", \"week\", \"month\"] as PeriodGranularity[]).map(\n (granularity) => (\n <TabButton\n key={granularity}\n active={value.granularity === granularity}\n onClick={() => setGranularity(granularity)}\n >\n {granularity[0].toUpperCase() +\n granularity.slice(1)}\n </TabButton>\n ),\n )}\n </div>\n )}\n <Dropdown\n open={open}\n onOpenChange={setOpen}\n className=\"polli:w-[320px] polli:max-w-[calc(100vw-2rem)] polli:rounded-xl polli:border polli:border-divider polli:bg-surface-opaque polli:p-3.5 polli:shadow-container\"\n trigger={\n trigger ??\n ((isOpen) => (\n <button\n type=\"button\"\n aria-label={`Select period, current ${summaryLabel}`}\n className={cn(\n \"polli-control polli:inline-flex polli:w-[320px] polli:max-w-full polli:items-center polli:justify-between polli:gap-2 polli:rounded-full polli:px-4 polli:py-1.5 polli:text-left polli:text-base polli:font-medium polli:leading-normal\",\n \"polli:bg-theme-bg-active polli:text-theme-text-base\",\n \"polli:transition-all polli:duration-200 polli:ease-out polli:hover:bg-theme-bg-hover\",\n isOpen &&\n \"polli:bg-theme-bg-hover polli:text-theme-text-strong\",\n )}\n >\n <span className=\"polli:truncate\">\n {summaryLabel}\n </span>\n <ChevronIcon expanded={isOpen} />\n </button>\n ))\n }\n >\n {header}\n <div className=\"polli:mb-3 polli:flex polli:items-center polli:justify-between\">\n <button\n type=\"button\"\n aria-label=\"Previous\"\n disabled={previousDisabled}\n onClick={() => setViewDate(previousViewDate)}\n className={cn(\n NAV_BUTTON,\n previousDisabled &&\n \"polli:cursor-not-allowed polli:opacity-30 polli:hover:bg-transparent\",\n )}\n >\n {\"<\"}\n </button>\n <div className=\"polli:text-base polli:font-bold polli:text-theme-text-base\">\n {viewLabel}\n </div>\n <button\n type=\"button\"\n aria-label=\"Next\"\n disabled={nextDisabled}\n onClick={() => setViewDate(nextViewDate)}\n className={cn(\n NAV_BUTTON,\n nextDisabled &&\n \"polli:cursor-not-allowed polli:opacity-30 polli:hover:bg-transparent\",\n )}\n >\n {\">\"}\n </button>\n </div>\n\n {value.granularity === \"month\" ? (\n <div className=\"polli:grid polli:grid-cols-3 polli:gap-1.5\">\n {MONTH_LABELS.map((label, monthIndex) => {\n const date = new Date(\n Date.UTC(\n viewDate.getUTCFullYear(),\n monthIndex,\n 1,\n ),\n );\n const selectable = isPeriodSelectable(\n periodFromDate(\"month\", date),\n minDate,\n today,\n );\n const ariaLabel = date.toLocaleDateString(\"en-US\", {\n timeZone: \"UTC\",\n month: \"long\",\n year: \"numeric\",\n });\n const selected =\n date.getUTCFullYear() ===\n selectedWindow.start.getUTCFullYear() &&\n date.getUTCMonth() ===\n selectedWindow.start.getUTCMonth();\n return (\n <button\n type=\"button\"\n key={label}\n aria-label={ariaLabel}\n aria-pressed={selected}\n disabled={!selectable}\n onClick={() => selectDate(date)}\n className={cn(\n \"polli-control polli:rounded-lg polli:px-3 polli:py-2 polli:text-sm polli:font-medium polli:transition-colors polli:duration-150\",\n selected\n ? \"polli:bg-theme-bg-active polli:text-theme-text-strong\"\n : \"polli:text-ink-700 polli:hover:bg-theme-bg-subtle\",\n !selectable &&\n \"polli:cursor-not-allowed polli:text-theme-text-muted polli:hover:bg-transparent\",\n )}\n >\n {label}\n </button>\n );\n })}\n </div>\n ) : (\n <>\n <div className=\"polli:mb-1 polli:grid polli:grid-cols-7 polli:gap-1 polli:text-center polli:text-xs polli:font-bold polli:uppercase polli:text-theme-text-muted\">\n {WEEKDAY_LABELS.map((label) => (\n <div key={label}>{label}</div>\n ))}\n </div>\n <div className=\"polli:grid polli:grid-cols-7 polli:gap-1\">\n {dates.map((date) => {\n const inCurrentMonth =\n date.getUTCMonth() ===\n viewDate.getUTCMonth();\n const selectable = isPeriodSelectable(\n periodFromDate(value.granularity, date),\n minDate,\n today,\n );\n const ariaLabel =\n value.granularity === \"week\"\n ? `Select ${formatPeriodSummary(periodFromDate(\"week\", date))}`\n : `Select ${date.toLocaleDateString(\n \"en-US\",\n {\n timeZone: \"UTC\",\n weekday: \"long\",\n month: \"long\",\n day: \"numeric\",\n year: \"numeric\",\n },\n )}`;\n const selected =\n value.granularity === \"day\"\n ? sameUtcDay(date, selectedWindow.start)\n : date >= selectedWindow.start &&\n date < selectedWindow.end;\n return (\n <button\n type=\"button\"\n key={date.toISOString()}\n aria-label={ariaLabel}\n aria-pressed={selected}\n disabled={!selectable}\n onClick={() => selectDate(date)}\n className={cn(\n \"polli-control polli:aspect-square polli:rounded-lg polli:text-sm polli:font-medium polli:transition-colors polli:duration-150\",\n !inCurrentMonth &&\n \"polli:text-theme-text-muted\",\n sameUtcDay(date, today) &&\n \"polli:ring-1 polli:ring-theme-border\",\n selected\n ? \"polli:bg-theme-bg-active polli:text-theme-text-strong\"\n : \"polli:text-ink-700 polli:hover:bg-theme-bg-subtle\",\n !selectable &&\n \"polli:cursor-not-allowed polli:text-theme-text-muted polli:hover:bg-transparent\",\n )}\n >\n {date.getUTCDate()}\n </button>\n );\n })}\n </div>\n </>\n )}\n </Dropdown>\n </div>\n );\n};\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Surface } from \"../primitives/Surface.tsx\";\nimport { Heading, Text } from \"../primitives/Typography.tsx\";\n\nexport type SectionProps = {\n title: string;\n id?: string;\n framed?: boolean;\n intro?: ReactNode;\n action?: ReactNode;\n actionClassName?: string;\n panelClassName?: string;\n titleClassName?: string;\n children: ReactNode;\n className?: string;\n};\n\nexport const Section: FC<SectionProps> = ({\n title,\n id,\n framed = true,\n intro,\n action,\n actionClassName,\n panelClassName,\n titleClassName,\n children,\n className,\n}) => {\n const body = (\n <>\n {intro && (\n <Text as=\"div\" className=\"polli:max-w-2xl\">\n {intro}\n </Text>\n )}\n {children}\n </>\n );\n\n const content = (\n <>\n <header className=\"polli:flex polli:flex-wrap polli:items-center polli:justify-between polli:gap-3\">\n <Heading\n as=\"h2\"\n size=\"section\"\n className={cn(\"polli:text-left\", titleClassName)}\n >\n {title}\n </Heading>\n {action && (\n <div className={cn(\"polli:shrink-0\", actionClassName)}>\n {action}\n </div>\n )}\n </header>\n {body}\n </>\n );\n\n return (\n <section id={id} className={cn(\"polli:scroll-mt-10\", className)}>\n {framed ? (\n <Surface\n variant=\"panel\"\n className={cn(\n \"polli:flex polli:flex-col polli:gap-5\",\n panelClassName,\n )}\n >\n {content}\n </Surface>\n ) : (\n <div className=\"polli:flex polli:flex-col polli:gap-4\">\n {content}\n </div>\n )}\n </section>\n );\n};\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { Text } from \"../primitives/Typography.tsx\";\n\n/**\n * - `stat` — large numeric value (default)\n * - `fact` — small wrapping prose value (labeled fact tile)\n */\ntype StatCardVariant = \"stat\" | \"fact\";\n\nconst valueVariantClasses: Record<StatCardVariant, string> = {\n stat: \"polli:min-h-8 polli:text-2xl polli:font-bold polli:leading-tight polli:tabular-nums polli:text-theme-text-base\",\n fact: \"polli:text-sm polli:leading-6 polli:text-theme-text-soft\",\n};\n\nexport type StatCardProps = {\n label: ReactNode;\n value: ReactNode;\n detail?: ReactNode;\n variant?: StatCardVariant;\n className?: string;\n labelClassName?: string;\n valueClassName?: string;\n detailClassName?: string;\n};\n\nexport const StatCard: FC<StatCardProps> = ({\n label,\n value,\n detail,\n variant = \"stat\",\n className,\n labelClassName,\n valueClassName,\n detailClassName,\n}) => (\n <div className={cn(\"polli:text-sm\", className)}>\n <Text\n as=\"div\"\n size=\"micro\"\n tone=\"soft\"\n weight=\"bold\"\n className={cn(\n \"polli:uppercase polli:tracking-wide\",\n labelClassName,\n )}\n >\n {label}\n </Text>\n <div\n className={cn(\n \"polli:mt-1 polli:break-words\",\n valueVariantClasses[variant],\n valueClassName,\n )}\n >\n {value}\n </div>\n {detail && (\n <Text\n as=\"div\"\n size=\"xs\"\n tone=\"soft\"\n className={cn(\"polli:mt-2\", detailClassName)}\n >\n {detail}\n </Text>\n )}\n </div>\n);\n","import type { PropsWithChildren } from \"react\";\nimport { isExternalHref } from \"../lib/link.ts\";\nimport { ExternalLinkIcon } from \"./icons/index.tsx\";\n\ntype BaseInlineLinkProps = {\n /** Set explicitly for non-http external links, or false for custom routing components. */\n external?: boolean;\n showIcon?: boolean;\n /** Inline text inherits its size; footers use 13px and standalone links 14px. */\n size?: \"inherit\" | \"footer\" | \"sm\";\n /** Accent for prominent links; quiet for secondary navigation. */\n tone?: \"accent\" | \"quiet\";\n className?: string;\n};\n\nexport type InlineLinkProps<T extends React.ElementType = \"a\"> =\n PropsWithChildren<BaseInlineLinkProps> & {\n as?: T;\n } & Omit<\n React.ComponentPropsWithoutRef<T>,\n keyof BaseInlineLinkProps | \"as\"\n >;\n\n/** Shared text-link rule: surrounding font, selectable ink, persistent underline,\n * visible keyboard focus, and an external arrow only when leaving the app.\n * Navigation and button-shaped actions use their own primitives.\n */\nexport function InlineLink<T extends React.ElementType = \"a\">({\n as,\n external,\n showIcon = true,\n size = \"inherit\",\n tone = \"accent\",\n className,\n children,\n ...linkProps\n}: InlineLinkProps<T>) {\n const Component: React.ElementType = as || \"a\";\n const isExternal =\n external ?? isExternalHref((linkProps as { href?: unknown }).href);\n\n return (\n <Component\n target={isExternal && as !== \"button\" ? \"_blank\" : undefined}\n rel={\n isExternal && as !== \"button\"\n ? \"noopener noreferrer\"\n : undefined\n }\n className={[\"polli-link\", className].filter(Boolean).join(\" \")}\n data-size={size}\n data-tone={tone}\n {...linkProps}\n >\n {children}\n {showIcon && isExternal && (\n <ExternalLinkIcon\n aria-hidden=\"true\"\n className=\"polli-link-external-icon\"\n />\n )}\n </Component>\n );\n}\n","import { type ReactNode, useState } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"../primitives/ChevronIcon.tsx\";\nimport { InlineLink } from \"../primitives/InlineLink.tsx\";\nimport {\n CheckIcon,\n ClockIcon,\n ToolIcon,\n XIcon,\n} from \"../primitives/icons/index.tsx\";\nimport { Text } from \"../primitives/Typography.tsx\";\n\nexport type ToolCallStatus =\n | \"pending\"\n | \"running\"\n | \"approval-requested\"\n | \"approval-responded\"\n | \"complete\"\n | \"error\"\n | \"denied\";\n\nexport interface ToolCallDetailsProps {\n name: string;\n input?: unknown;\n output?: unknown;\n error?: unknown;\n status?: ToolCallStatus;\n defaultOpen?: boolean;\n className?: string;\n}\n\nfunction formattedValue(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n\nfunction linkedValue(value: unknown): ReactNode[] {\n const formatted = formattedValue(value);\n const segments = formatted.split(/(https:\\/\\/[^\\s\"\\\\]+)/g);\n let offset = 0;\n return segments.map((segment) => {\n const key = `${offset}:${segment}`;\n offset += segment.length;\n return segment.startsWith(\"https://\") ? (\n <InlineLink key={key} href={segment}>\n {segment}\n </InlineLink>\n ) : (\n segment\n );\n });\n}\n\nfunction ToolValue({\n value,\n error = false,\n}: {\n value: unknown;\n error?: boolean;\n}) {\n return (\n <pre\n className={cn(\n \"polli:max-h-72 polli:overflow-auto polli:whitespace-pre-wrap polli:break-words polli:rounded-lg polli:border polli:p-3 polli:text-xs polli:leading-relaxed\",\n error\n ? \"polli:border-intent-danger-border/30 polli:bg-intent-danger-bg-light polli:text-intent-danger-text\"\n : \"polli:border-theme-border/20 polli:bg-theme-bg-pale polli:text-theme-text-base\",\n )}\n >\n {linkedValue(value)}\n </pre>\n );\n}\n\nconst STATUS_LABELS: Record<ToolCallStatus, string> = {\n pending: \"Pending\",\n running: \"Running\",\n \"approval-requested\": \"Awaiting approval\",\n \"approval-responded\": \"Responded\",\n complete: \"Completed\",\n error: \"Error\",\n denied: \"Denied\",\n};\n\nfunction ToolStatus({ status }: { status: ToolCallStatus }) {\n const icon =\n status === \"complete\" || status === \"approval-responded\" ? (\n <CheckIcon className=\"polli:size-3\" />\n ) : status === \"error\" || status === \"denied\" ? (\n <XIcon className=\"polli:size-3\" />\n ) : (\n <ClockIcon\n className={cn(\n \"polli:size-3\",\n status === \"running\" && \"polli:animate-pulse\",\n )}\n />\n );\n return (\n <span\n data-status={status}\n className={cn(\n \"polli:ml-auto polli:inline-flex polli:shrink-0 polli:items-center polli:gap-1 polli:rounded-full polli:px-2 polli:py-1 polli:text-[11px] polli:font-semibold\",\n status === \"complete\" || status === \"approval-responded\"\n ? \"polli:bg-theme-bg-active polli:text-intent-success-text\"\n : status === \"error\" || status === \"denied\"\n ? \"polli:bg-intent-danger-bg-light polli:text-intent-danger-text\"\n : \"polli:bg-intent-info-bg-light polli:text-intent-info-text\",\n )}\n >\n {icon}\n {STATUS_LABELS[status]}\n </span>\n );\n}\n\n/** Framework-neutral disclosure for server- or client-executed tool calls. */\nexport function ToolCallDetails({\n name,\n input,\n output,\n error,\n status = error === undefined ? \"complete\" : \"error\",\n defaultOpen = false,\n className,\n}: ToolCallDetailsProps) {\n const result = error === undefined ? output : error;\n const [open, setOpen] = useState(defaultOpen);\n return (\n <div\n data-tool-status={status}\n className={cn(\n \"polli:overflow-hidden polli:rounded-xl polli:border polli:border-theme-border/35 polli:bg-surface-opaque polli:shadow-well\",\n className,\n )}\n >\n <button\n type=\"button\"\n aria-expanded={open}\n onClick={() => setOpen((current) => !current)}\n className=\"polli-control polli:flex polli:w-full polli:cursor-pointer polli:items-center polli:gap-2 polli:px-3 polli:py-2.5 polli:text-left polli:hover:bg-theme-bg-hover/50\"\n >\n <span className=\"polli:flex polli:size-7 polli:shrink-0 polli:items-center polli:justify-center polli:rounded-lg polli:bg-theme-bg-active polli:text-theme-text-strong\">\n <ToolIcon className=\"polli:size-3.5\" />\n </span>\n <code className=\"polli:min-w-0 polli:truncate polli:text-xs polli:font-semibold polli:text-theme-text-strong\">\n {name}\n </code>\n <ToolStatus status={status} />\n <ChevronIcon\n expanded={open}\n className=\"polli:size-4 polli:shrink-0 polli:text-theme-text-soft\"\n />\n </button>\n {open && (\n <div className=\"polli:flex polli:flex-col polli:gap-4 polli:border-theme-border/30 polli:border-t polli:bg-theme-bg-pale/35 polli:px-3 polli:py-3\">\n {input !== undefined && (\n <div className=\"polli:flex polli:flex-col polli:gap-1\">\n <Text size=\"xs\" tone=\"muted\" weight=\"bold\">\n Parameters\n </Text>\n <ToolValue value={input} />\n </div>\n )}\n {result !== undefined && (\n <div className=\"polli:flex polli:flex-col polli:gap-1\">\n <Text size=\"xs\" tone=\"muted\" weight=\"bold\">\n {error === undefined ? \"Result\" : \"Error\"}\n </Text>\n <ToolValue\n value={result}\n error={error !== undefined}\n />\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n","import { clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/** Class merge for apps consuming the unprefixed Tailwind bridge in app.css. */\nexport function cn(...inputs: (string | undefined | null | false)[]) {\n return twMerge(clsx(...inputs));\n}\n","import { useEffect } from \"react\";\n\n/**\n * Locks page scroll while enabled and restores the original overflow values on\n * cleanup.\n */\nexport function useScrollLock(enabled = true): void {\n useEffect(() => {\n if (!enabled) return;\n\n const originalBody = document.body.style.overflow;\n const originalHtml = document.documentElement.style.overflow;\n document.body.style.overflow = \"hidden\";\n document.documentElement.style.overflow = \"hidden\";\n\n return () => {\n document.body.style.overflow = originalBody;\n document.documentElement.style.overflow = originalHtml;\n };\n }, [enabled]);\n}\n","import type { ComponentPropsWithoutRef, FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nexport type ButtonGroupProps = ComponentPropsWithoutRef<\"div\">;\n\nexport const ButtonGroup: FC<ButtonGroupProps> = ({\n className,\n children,\n role = \"group\",\n ...rest\n}) => (\n <div\n {...rest}\n role={role}\n className={cn(\n \"polli:flex polli:min-w-0 polli:flex-wrap polli:items-center polli:gap-1.5\",\n className,\n )}\n >\n {children}\n </div>\n);\n","import { type FC, useSyncExternalStore } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { MoonIcon, SunIcon } from \"./icons/index.tsx\";\n\n/**\n * Light/dark colour mode. The chosen mode is reflected as `class=\"dark\"` on\n * <html>, which flips the design-system tokens (see styles/tokens.css: `.dark`\n * + `.dark [data-theme]`). One shared module-level store backs every\n * `useColorMode()` consumer, so duplicate toggles never desync and changes\n * propagate across tabs.\n *\n * The chosen mode is persisted to localStorage (per-origin), which also powers\n * the cross-tab `storage` sync below. Read priority: localStorage → system\n * preference.\n *\n * Host apps should set the initial class pre-paint (a tiny inline script in the\n * document head, reading the same key) to avoid a flash of light before React\n * mounts; this store is the source of truth after hydration.\n *\n * Side-effect-free on import: the <html> sync and the cross-tab listener are\n * attached lazily on first subscribe, so importing this module (e.g. via the\n * package barrel) never mutates the DOM on its own.\n */\ntype ColorMode = \"light\" | \"dark\";\n\nconst STORAGE_KEY = \"polli-color-mode\";\n\nfunction readStored(): ColorMode | null {\n try {\n const value = localStorage.getItem(STORAGE_KEY);\n return value === \"light\" || value === \"dark\" ? value : null;\n } catch {\n return null;\n }\n}\n\nfunction systemPrefersDark(): boolean {\n return (\n typeof window !== \"undefined\" &&\n window.matchMedia?.(\"(prefers-color-scheme: dark)\").matches === true\n );\n}\n\nlet current: ColorMode =\n readStored() ?? (systemPrefersDark() ? \"dark\" : \"light\");\nconst listeners = new Set<() => void>();\n\nfunction apply(): void {\n if (typeof document === \"undefined\") return;\n document.documentElement.classList.toggle(\"dark\", current === \"dark\");\n syncThemeColor();\n}\n\n// Match the browser chrome (theme-color) to the resolved desk color by reading\n// the computed --polli-color-app-bg token — never a hardcoded value. Runs on\n// mount / mode change, after styles load, so the token resolves per mode.\nfunction syncThemeColor(): void {\n if (typeof document === \"undefined\") return;\n const appBg = getComputedStyle(document.documentElement)\n .getPropertyValue(\"--polli-color-app-bg\")\n .trim();\n if (!appBg) return;\n let meta = document.querySelector('meta[name=\"theme-color\"]');\n if (!meta) {\n meta = document.createElement(\"meta\");\n meta.setAttribute(\"name\", \"theme-color\");\n document.head.appendChild(meta);\n }\n meta.setAttribute(\"content\", appBg);\n}\n\nfunction emit(): void {\n for (const listener of listeners) listener();\n}\n\nfunction handleStorage(event: StorageEvent): void {\n if (event.key !== STORAGE_KEY) return;\n const next: ColorMode = event.newValue === \"dark\" ? \"dark\" : \"light\";\n if (next === current) return;\n current = next;\n apply();\n emit();\n}\n\nfunction subscribe(listener: () => void): () => void {\n if (listeners.size === 0 && typeof window !== \"undefined\") {\n apply(); // safety-net sync once a consumer mounts\n window.addEventListener(\"storage\", handleStorage);\n }\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n if (listeners.size === 0 && typeof window !== \"undefined\") {\n window.removeEventListener(\"storage\", handleStorage);\n }\n };\n}\n\nfunction getSnapshot(): ColorMode {\n return current;\n}\n\nfunction getServerSnapshot(): ColorMode {\n return \"light\";\n}\n\n/**\n * Set the color mode programmatically. Updates the shared store (so every\n * `useColorMode()` consumer re-renders), flips the `.dark` class, and persists\n * to localStorage.\n */\nexport function setColorMode(mode: ColorMode): void {\n if (mode === current) return;\n current = mode;\n apply();\n try {\n localStorage.setItem(STORAGE_KEY, mode);\n } catch {\n // ignore write failures (private mode / storage disabled)\n }\n emit();\n}\n\nexport function useColorMode(): {\n mode: ColorMode;\n isDark: boolean;\n toggle: () => void;\n} {\n const mode = useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot,\n );\n return {\n mode,\n isDark: mode === \"dark\",\n toggle: () => setColorMode(mode === \"dark\" ? \"light\" : \"dark\"),\n };\n}\n\n/**\n * Sliding sun/moon switch. Light/dark is a two-state choice, not an on/off\n * affordance, so this uses `Switch`'s shape but its own palette. The thumb\n * carries the active mode's icon tinted with the accent (`text-soft`); the\n * mode you'd switch to sits ghosted (faint neutral) on the\n * empty side. Self-contained — wires itself to `useColorMode`.\n */\nexport const ColorModeToggle: FC = () => {\n const { isDark, toggle } = useColorMode();\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={isDark}\n aria-label=\"Toggle dark mode\"\n onClick={toggle}\n className=\"polli-control polli:relative polli:inline-block polli:h-7 polli:w-[52px] polli:shrink-0 polli:cursor-pointer polli:rounded-full polli:border polli:border-theme-text-strong/10 polli:bg-surface-opaque polli:transition-colors\"\n >\n {isDark ? (\n <SunIcon className=\"polli:absolute polli:top-1/2 polli:left-[7px] polli:h-3.5 polli:w-3.5 polli:-translate-y-1/2 polli:text-theme-text-strong/40\" />\n ) : (\n <MoonIcon className=\"polli:absolute polli:top-1/2 polli:right-[7px] polli:h-3.5 polli:w-3.5 polli:-translate-y-1/2 polli:text-theme-text-strong/40\" />\n )}\n <span\n className={cn(\n \"polli:absolute polli:top-1/2 polli:left-0.5 polli:flex polli:h-5 polli:w-5 polli:-translate-y-1/2 polli:items-center polli:justify-center polli:rounded-full polli:bg-app-bg polli:text-theme-text-soft polli:shadow-sm polli:transition-transform\",\n isDark ? \"polli:translate-x-[26px]\" : \"polli:translate-x-0\",\n )}\n >\n {isDark ? (\n <MoonIcon className=\"polli:h-3.5 polli:w-3.5\" />\n ) : (\n <SunIcon className=\"polli:h-3.5 polli:w-3.5\" />\n )}\n </span>\n </button>\n );\n};\n","import { Dialog as ArkDialog } from \"@ark-ui/react/dialog\";\nimport { Portal } from \"@ark-ui/react/portal\";\nimport type { FC, ReactNode } from \"react\";\nimport { useRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nexport type DrawerProps = {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n ariaLabel: string;\n children: ReactNode;\n side?: \"left\" | \"right\";\n contentClassName?: string;\n};\n\n/** Accessible side drawer for mobile navigation and compact tools. */\nexport const Drawer: FC<DrawerProps> = ({\n open,\n onOpenChange,\n ariaLabel,\n children,\n side = \"left\",\n contentClassName,\n}) => {\n const contentRef = useRef<HTMLDivElement>(null);\n\n return (\n <ArkDialog.Root\n open={open}\n initialFocusEl={() => contentRef.current}\n onOpenChange={(details) => onOpenChange(details.open)}\n >\n <Portal>\n <ArkDialog.Backdrop className=\"polli:fixed polli:inset-0 polli:z-[100] polli:bg-[#000]/40 polli:backdrop-blur-sm\" />\n <ArkDialog.Positioner className=\"polli:pointer-events-none polli:fixed polli:inset-0 polli:z-[110] polli:h-dvh polli:overflow-hidden\">\n <ArkDialog.Content\n ref={contentRef}\n aria-label={ariaLabel}\n className={cn(\n \"polli:pointer-events-auto polli:flex polli:h-dvh polli:w-[min(20rem,86vw)] polli:flex-col polli:overflow-hidden polli:border-theme-text-strong/10 polli:bg-app-bg polli:shadow-xl polli:outline-none\",\n side === \"right\"\n ? \"polli:ml-auto polli:border-l\"\n : \"polli:border-r\",\n contentClassName,\n )}\n >\n {children}\n </ArkDialog.Content>\n </ArkDialog.Positioner>\n </Portal>\n </ArkDialog.Root>\n );\n};\n","import type { PropsWithChildren } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype BaseDropdownItemProps = {\n className?: string;\n};\n\nexport type DropdownItemProps<T extends React.ElementType = \"button\"> =\n PropsWithChildren<BaseDropdownItemProps> & {\n as?: T;\n } & Omit<\n React.ComponentPropsWithoutRef<T>,\n keyof BaseDropdownItemProps | \"as\"\n >;\n\nexport function DropdownItem<T extends React.ElementType = \"button\">({\n as,\n className,\n children,\n ...rest\n}: DropdownItemProps<T>) {\n const Component: React.ElementType = as || \"button\";\n return (\n <Component\n {...(Component === \"button\" ? { type: \"button\" } : undefined)}\n {...rest}\n className={cn(\n \"polli-control polli:flex polli:w-full polli:cursor-pointer polli:items-center polli:gap-2 polli:rounded-lg polli:bg-transparent polli:px-3 polli:py-2 polli:text-left polli:text-sm polli:font-medium polli:text-theme-text-base polli:no-underline polli:transition-colors polli:hover:bg-theme-bg-hover polli:hover:text-theme-text-hover polli:focus-visible:bg-theme-bg-hover\",\n className,\n )}\n >\n {children}\n </Component>\n );\n}\n","import { type CSSProperties, forwardRef } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nconst toNumber = (value: unknown): number | undefined => {\n if (typeof value === \"number\") return value;\n if (typeof value !== \"string\" || value.trim() === \"\") return undefined;\n const numericValue = Number(value);\n return Number.isFinite(numericValue) ? numericValue : undefined;\n};\n\nconst clampPercent = (value: number): number =>\n Math.min(100, Math.max(0, value));\n\nconst getProgressPercent = ({\n progress,\n value,\n defaultValue,\n min,\n max,\n}: {\n progress?: number;\n value: React.ComponentPropsWithoutRef<\"input\">[\"value\"];\n defaultValue: React.ComponentPropsWithoutRef<\"input\">[\"defaultValue\"];\n min: React.ComponentPropsWithoutRef<\"input\">[\"min\"];\n max: React.ComponentPropsWithoutRef<\"input\">[\"max\"];\n}): number | undefined => {\n if (typeof progress === \"number\" && Number.isFinite(progress)) {\n return clampPercent(progress);\n }\n\n const numericValue = toNumber(value ?? defaultValue);\n if (numericValue === undefined) return undefined;\n\n const numericMin = toNumber(min) ?? 0;\n const numericMax = toNumber(max) ?? 100;\n if (numericMax <= numericMin) return 100;\n\n return clampPercent(\n ((numericValue - numericMin) / (numericMax - numericMin)) * 100,\n );\n};\n\nexport type SliderProps = Omit<\n React.ComponentPropsWithoutRef<\"input\">,\n \"type\"\n> & {\n /** Fill percentage from 0-100. Falls back to value/min/max when omitted. */\n progress?: number;\n};\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n { className, defaultValue, max, min, progress, style, value, ...props },\n ref,\n ) => {\n const progressPercent = getProgressPercent({\n progress,\n value,\n defaultValue,\n min,\n max,\n });\n const sliderStyle = {\n ...style,\n ...(progressPercent === undefined\n ? null\n : { \"--polli-slider-progress\": `${progressPercent}%` }),\n } as CSSProperties;\n\n return (\n <input\n ref={ref}\n type=\"range\"\n min={min}\n max={max}\n value={value}\n defaultValue={defaultValue}\n style={sliderStyle}\n className={cn(\"polli-slider\", className)}\n {...props}\n />\n );\n },\n);\n","import type { FC } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\nexport type SwitchStatus = \"off\" | \"on\" | \"invalid\";\n\nexport type SwitchProps = {\n checked: boolean;\n onChange: (next: boolean) => void;\n /** Visual status. Drives track colour only. Defaults to `checked ? \"on\" : \"off\"`. */\n status?: SwitchStatus;\n /** Accessible label (aria-label). Not rendered visibly. */\n ariaLabel?: string;\n disabled?: boolean;\n className?: string;\n};\n\n// Switch is theme-independent. Universal, mode-aware palette (tokens in\n// tokens.css). The thumb stays light in BOTH modes; tracks:\n// off — neutral grey (light in light mode, mid-grey in dark)\n// on — vivid green (universal \"enabled\" affordance)\n// invalid — vivid red (incomplete / error / setup needed)\nconst trackClasses: Record<SwitchStatus, string> = {\n off: \"polli:bg-switch-track-off\",\n on: \"polli:bg-switch-track-on\",\n invalid: \"polli:bg-switch-track-invalid\",\n};\n\n/**\n * Binary toggle primitive. Universal palette — does NOT follow the page\n * theme. Light thumb in both modes; track states: off (grey), on (green),\n * invalid (red, for \"enabled but needs attention\").\n *\n * `checked` drives thumb position; `status` drives track colour. So\n * `checked={true} status=\"invalid\"` renders thumb-right with a red track.\n */\nexport const Switch: FC<SwitchProps> = ({\n checked,\n onChange,\n status,\n ariaLabel,\n disabled = false,\n className,\n}) => {\n const effectiveStatus: SwitchStatus = status ?? (checked ? \"on\" : \"off\");\n const resolvedAriaLabel =\n ariaLabel ?? (checked ? \"Turn off toggle\" : \"Turn on toggle\");\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={resolvedAriaLabel}\n onClick={() => onChange(!checked)}\n disabled={disabled}\n className={cn(\n \"polli-control polli:relative polli:inline-flex polli:h-7 polli:w-12 polli:shrink-0 polli:items-center polli:rounded-full polli:transition polli:disabled:cursor-not-allowed polli:disabled:opacity-60\",\n trackClasses[effectiveStatus],\n className,\n )}\n >\n <span\n className={cn(\n \"polli:inline-block polli:h-5 polli:w-5 polli:rounded-full polli:bg-switch-thumb polli:shadow-sm polli:transition-transform\",\n checked ? \"polli:translate-x-6\" : \"polli:translate-x-1\",\n )}\n />\n </button>\n );\n};\n","import type { ComponentPropsWithoutRef, FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\n\ntype Align = \"left\" | \"center\" | \"right\";\ntype RowIntent = \"default\" | \"warning\" | \"danger\";\ntype SortDirection = \"asc\" | \"desc\";\n\nconst alignClasses: Record<Align, string> = {\n left: \"polli:text-left\",\n center: \"polli:text-center\",\n right: \"polli:text-right\",\n};\n\nconst rowIntentClasses: Record<RowIntent, string> = {\n default: \"\",\n warning: \"polli:bg-intent-warning-bg-light/65\",\n danger: \"polli:bg-intent-danger-bg-light/65\",\n};\n\nexport type TableProps = ComponentPropsWithoutRef<\"table\">;\n\nexport const Table: FC<TableProps> = ({ className, ...rest }) => (\n <table\n {...rest}\n className={cn(\n \"polli:w-full polli:border-collapse polli:text-sm\",\n className,\n )}\n />\n);\n\nexport type TableHeadProps = ComponentPropsWithoutRef<\"thead\">;\n\nexport const TableHead: FC<TableHeadProps> = ({ className, ...rest }) => (\n <thead\n {...rest}\n className={cn(\n \"polli:bg-transparent polli:text-micro polli:text-theme-text-muted\",\n className,\n )}\n />\n);\n\nexport type TableBodyProps = ComponentPropsWithoutRef<\"tbody\"> & {\n divider?: \"themed\" | \"neutral\";\n};\n\nexport const TableBody: FC<TableBodyProps> = ({\n className,\n divider = \"themed\",\n ...rest\n}) => (\n <tbody\n {...rest}\n className={cn(\n \"polli:divide-y\",\n divider === \"neutral\"\n ? \"polli:divide-divider\"\n : \"polli:divide-theme-border/65\",\n className,\n )}\n />\n);\n\nexport type TableRowProps = ComponentPropsWithoutRef<\"tr\"> & {\n intent?: RowIntent;\n};\n\nexport const TableRow: FC<TableRowProps> = ({\n intent = \"default\",\n className,\n ...rest\n}) => (\n <tr\n {...rest}\n className={cn(\n \"polli:transition-colors polli:hover:bg-theme-bg-subtle\",\n rowIntentClasses[intent],\n className,\n )}\n />\n);\n\nexport type TableHeaderCellProps = Omit<\n ComponentPropsWithoutRef<\"th\">,\n \"children\"\n> & {\n align?: Align;\n active?: boolean;\n sortDirection?: SortDirection;\n onSort?: () => void;\n children: ReactNode;\n};\n\nexport const TableHeaderCell: FC<TableHeaderCellProps> = ({\n align = \"left\",\n active = false,\n sortDirection,\n onSort,\n className,\n children,\n ...rest\n}) => {\n const content = (\n <>\n <span>{children}</span>\n {onSort && (\n <span\n aria-hidden=\"true\"\n className=\"polli:inline-flex polli:w-3 polli:justify-center\"\n >\n {active && sortDirection\n ? sortDirection === \"asc\"\n ? \"↑\"\n : \"↓\"\n : \"\"}\n </span>\n )}\n </>\n );\n\n const classes = cn(\n \"polli:px-3 polli:py-2 polli:font-bold polli:normal-case polli:tracking-wide\",\n alignClasses[align],\n active && \"polli:text-theme-text-strong\",\n onSort &&\n \"polli:cursor-pointer polli:select-none polli:hover:text-theme-text-strong\",\n className,\n );\n\n if (!onSort) {\n return (\n <th {...rest} className={classes}>\n {content}\n </th>\n );\n }\n\n return (\n <th\n {...rest}\n aria-sort={\n active && sortDirection\n ? sortDirection === \"asc\"\n ? \"ascending\"\n : \"descending\"\n : \"none\"\n }\n className={classes}\n >\n <button\n type=\"button\"\n onClick={onSort}\n className={cn(\n \"polli-control polli:inline-flex polli:w-full polli:items-center polli:gap-1 polli:bg-transparent polli:p-0 polli:font-bold polli:text-inherit\",\n align === \"right\" && \"polli:justify-end\",\n align === \"center\" && \"polli:justify-center\",\n )}\n >\n {content}\n </button>\n </th>\n );\n};\n\nexport type TableCellProps = ComponentPropsWithoutRef<\"td\"> & {\n align?: Align;\n numeric?: boolean;\n muted?: boolean;\n};\n\nexport const TableCell: FC<TableCellProps> = ({\n align = \"left\",\n numeric = false,\n muted = false,\n className,\n ...rest\n}) => (\n <td\n {...rest}\n className={cn(\n \"polli:px-3 polli:py-2 polli:align-middle\",\n alignClasses[align],\n numeric && \"polli:tabular-nums\",\n muted && \"polli:text-theme-text-muted\",\n className,\n )}\n />\n);\n","import type { FC, ReactNode } from \"react\";\nimport { cn } from \"../lib/cn.ts\";\nimport { ChevronIcon } from \"./ChevronIcon.tsx\";\n\nexport type TableDisclosureButtonProps = {\n children: ReactNode;\n disabled?: boolean;\n expanded: boolean;\n onClick: () => void;\n className?: string;\n};\n\n/** Compact disclosure trigger for expandable table rows. */\nexport const TableDisclosureButton: FC<TableDisclosureButtonProps> = ({\n children,\n disabled = false,\n expanded,\n onClick,\n className,\n}) => (\n <button\n type=\"button\"\n aria-expanded={expanded}\n disabled={disabled}\n onClick={onClick}\n className={cn(\n \"polli-control polli:inline-flex polli:items-center polli:gap-1.5 polli:rounded-sm polli:text-left polli:text-theme-text-strong polli:transition-colors\",\n disabled\n ? \"polli:cursor-default polli:opacity-60\"\n : \"polli:cursor-pointer polli:hover:text-theme-text-soft\",\n className,\n )}\n >\n <ChevronIcon\n expanded={expanded}\n className=\"polli:text-theme-text-soft\"\n />\n {children}\n </button>\n);\n"],"mappings":"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","names":["src_exports","__export","AccountIcon","AccountIdentity","AccountMenu","Alert","AppHeader","AppIcon","ArrowLeftIcon","ArrowRightIcon","AudioIcon","BeakerIcon","BookIcon","BotIcon","BugIcon","Button","ButtonGroup","Callout","CardIcon","ChatConversation","ChatConversationContent","ChatIcon","ChatMessage","ChatMessageActions","ChatMessageContent","ChatMessageHeader","ChatPromptInput","ChatPromptInputFooter","ChatPromptTextarea","CheckIcon","ChevronIcon","Chip","ClipboardIcon","ClockIcon","CloudUploadIcon","CodeBlock","CodeIcon","Collapsible","ColorModeToggle","ConfirmationDialog","ContentHeader","CopyButton","CopyField","CubeIcon","DatabaseIcon","Dialog","DialogBody","DialogDescription","DialogFooter","DialogHeader","DialogTitle","DiscordIcon","DownloadIcon","Drawer","Dropdown","DropdownItem","EarningsIcon","EditableCombobox","EditableComboboxToken","ExpandIcon","ExternalLinkButton","ExternalLinkIcon","EyeIcon","EyeOffIcon","Eyebrow","field_exports","FieldStack","FileUpload","GenApiIcon","GitBranchIcon","GitHubIcon","GitPullRequestIcon","GlobeIcon","GraduationCapIcon","Heading","IconButton","ImageIcon","InfoTip","InlineLink","Input","InstagramIcon","KeyChip","KeyIcon","LinkCard","LinkedInIcon","LockIcon","LogInIcon","LogOutIcon","MailIcon","McpIcon","MediaPlaceholder","MegaphoneIcon","MenuIcon","MicIcon","MoonIcon","MultiSelect","NavItem","NewspaperIcon","PauseIcon","PencilIcon","PeriodPicker","PlayIcon","PlusIcon","PowerIcon","ReasoningIcon","RefreshIcon","RobotIcon","RocketIcon","ScrollArea","SearchIcon","Section","SignOutIcon","Slider","SparkleIcon","SparklesIcon","SpeakerIcon","SproutIcon","StarIcon","StatCard","SunIcon","Surface","Switch","TabButton","Table","TableBody","TableCell","TableDisclosureButton","TableHead","TableHeaderCell","TableRow","TargetIcon","TerminalIcon","Text","Textarea","TokensIcon","ToolCallDetails","ToolIcon","Tooltip","TrashIcon","TrendUpIcon","UsageIcon","VideoIcon","WalletIcon","WarningIcon","XIcon","XSocialIcon","cn","currentPeriod","getPeriodBucketKeys","isPeriodSelectable","periodBucketKeyToDate","periodFromDate","periodToWindow","setColorMode","useColorMode","useScrollLock","getReact","React","Children","Component","Fragment","Profiler","PureComponent","StrictMode","Suspense","cache","cloneElement","createContext","createElement","createRef","forwardRef","isValidElement","lazy","memo","startTransition","use","useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useEffectEvent","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition","version","React","r","f","n","o","clsx","concatArrays","array1","array2","combinedArray","Array","length","i","createClassValidatorObject","classGroupId","validator","createClassPartObject","nextPart","Map","validators","EMPTY_CONFLICTS","ARBITRARY_PROPERTY_PREFIX","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","startsWith","endsWith","getGroupIdForArbitraryProperty","classParts","split","CLASS_PART_SEPARATOR","startIndex","length","getGroupRecursive","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","modifierConflicts","baseConflicts","concatArrays","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","result","validators","classRest","join","slice","validatorsLength","i","validatorObj","validator","indexOf","undefined","content","colonIndex","property","theme","classGroups","processClassGroups","createClassPartObject","group","processClassesRecursively","classGroup","len","classDefinition","processClassDefinition","processStringDefinition","processFunctionDefinition","processObjectDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","createClassValidatorObject","entries","Object","key","value","path","current","parts","part","next","set","func","createLruCache","maxCacheSize","cacheSize","cache","create","previousCache","update","EMPTY_MODIFIERS","createResultObject","modifiers","hasImportantModifier","baseClassName","maybePostfixModifierPosition","isExternal","createParseClassName","config","prefix","experimentalParseClassName","parseClassName","className","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","len","length","index","currentCharacter","MODIFIER_SEPARATOR","push","slice","baseClassNameWithImportantModifier","endsWith","IMPORTANT_MODIFIER","startsWith","undefined","fullPrefix","parseClassNameOriginal","createSortModifiers","modifierWeights","Map","orderSensitiveModifiers","forEach","mod","set","result","currentSegment","i","modifier","isArbitrary","isOrderSensitive","has","sort","createConfigUtils","cache","createLruCache","cacheSize","sortModifiers","createClassGroupUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","classGroupsInConflict","classNames","trim","split","originalClassName","hasPostfixModifier","classGroupId","substring","variantModifier","join","modifierId","classId","indexOf","conflictGroups","group","twJoin","classLists","argument","resolvedValue","string","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","get","tailwindMerge","cachedResult","args","fallbackThemeArr","fromTheme","key","themeGetter","theme","isThemeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","value","test","isNumber","Number","isNaN","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","exec","shouldMatchNoLabel","label","getDefaultConfig","themeColor","fromTheme","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","isArbitraryVariable","isArbitraryValue","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","isFraction","scaleGridTemplateColsRows","isInteger","scaleGridColRowStartAndEnd","span","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","isArbitraryVariablePosition","isArbitraryPosition","position","scaleBgRepeat","repeat","scaleBgSize","isArbitraryVariableSize","isArbitrarySize","size","scaleGradientStopPosition","isPercent","isArbitraryVariableLength","isArbitraryLength","scaleRadius","scaleBorderWidth","isNumber","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","cacheSize","theme","animate","aspect","blur","isTshirtSize","breakpoint","color","isAny","container","ease","font","isAnyNonArbitrary","leading","perspective","radius","shadow","spacing","text","tracking","classGroups","columns","box","display","sr","float","clear","isolation","object","overflow","overscroll","inset","start","end","top","right","bottom","left","visibility","z","basis","flex","grow","shrink","order","col","row","gap","justify","content","items","baseline","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","isArbitraryNumber","isArbitraryVariableFamilyName","list","placeholder","decoration","indent","align","whitespace","break","wrap","hyphens","bg","linear","to","radial","conic","isArbitraryVariableImage","isArbitraryImage","from","via","rounded","border","divide","outline","isArbitraryVariableShadow","isArbitraryShadow","ring","opacity","mask","closest","farthest","filter","brightness","contrast","grayscale","invert","saturate","sepia","table","caption","transition","duration","delay","backface","rotate","scale","skew","transform","origin","translate","accent","appearance","caret","scheme","cursor","resize","scroll","snap","touch","select","fill","stroke","conflictingClassGroups","conflictingClassGroupModifiers","orderSensitiveModifiers","mergeConfigs","baseConfig","prefix","experimentalParseClassName","extend","override","overrideProperty","overrideConfigProperties","mergeConfigProperties","mergeArrayProperties","baseObject","overrideKey","overrideValue","undefined","overrideObject","key","mergeObject","mergeValue","concat","extendTailwindMerge","configExtension","createConfig","createTailwindMerge","twMerge","twMerge","extendTailwindMerge","cn","inputs","clsx","createElementFromRuntime","createElement","jsx","type","props","key","nextProps","jsxs","ChevronIcon","expanded","className","jsx","cn","createAnatomy","name","parts","values","isEmpty","part","newName","prev","toKebabCase","value","v","anatomy","createAnatomy","parts","__defProp","__defNormalProp","obj","key","value","__publicField","setCaretToEnd","input","len","noop","isObject","v","dataAttr","guard","ariaAttr","ELEMENT_NODE","DOCUMENT_NODE","DOCUMENT_FRAGMENT_NODE","isHTMLElement","el","isObject","ELEMENT_NODE","isDocument","DOCUMENT_NODE","isWindow","getNodeName","node","isHTMLElement","isRootElement","isNode","el","isObject","isShadowRoot","DOCUMENT_FRAGMENT_NODE","isInputElement","isAnchorElement","isElementVisible","isActiveElement","element","rootNode","getActiveElement","TEXTAREA_SELECT_REGEX","isEditableElement","contains","parent","child","isHTMLElement","isNode","rootNode","isShadowRoot","next","getDocument","el","isDocument","isWindow","getDocumentElement","getWindow","getActiveElement","activeElement","getParentNode","node","getNodeName","result","getRootNode","styleCache","getComputedStyle","el","getWindow","INTERACTIVE_CONTAINER_ROLE","isInteractiveContainerRole","role","getAriaControls","element","isControlledElement","container","visitedIds","rootNode","getRootNode","checkElement","searchRoot","controllingElements","controller","controlledIds","id","controlledElement","modal","findControlledElements","callback","findRecursive","root","getControlledElements","controlledElements","isInteractiveContainerElement","isControllerElement","hasControllerElements","isControlledByExpandedController","escapedId","selector","isDom","getPlatform","getUserAgent","ua2","brand","version","pt","v","ua","vn","isTouchDevice","isIPhone","isIPad","isMac","isIos","isApple","isSafari","isFirefox","isAndroid","ua","getComposedPath","event","getEventTarget","isOpeningInNewTab","element","isMiddleClick","isModKeyClick","isCtrlOrMetaKey","isDownloadingEvent","localName","isComposingEvent","getNativeEvent","isCtrlOrMetaKey","isMac","isVirtualClick","isAndroid","isLeftClick","isContextMenuEvent","isMac","keyMap","rtlKeyMap","getEventKey","event","options","dir","orientation","key","getNativeEvent","addDomEvent","target","eventName","handler","options","node","isFrame","el","isHTMLElement","NATURALLY_TABBABLE_REGEX","parseTabIndex","attr","hasTabIndex","hasNegativeTabIndex","isRadioInput","element","isInputElement","isTabbableRadio","selector","scope","group","radio","isFocusable","checked","getShadowRootForNode","getShadowRoot","result","collectElementsWithShadowDOM","elements","filterFn","allElements","toProcess","processed","positionMap","i","processIndex","shadowRoot","shadowElements","focusableSelector","hostIndex","insertPosition","getFocusables","container","options","includeContainer","focusableElements","frameBody","isElementVisible","getTabbables","container","options","includeContainer","getShadowRoot","elements","focusableSelector","isTabbable","tabbableElements","element","isFrame","frameBody","allElements","collectElementsWithShadowDOM","el","isHTMLElement","isFocusable","hasNegativeTabIndex","isTabbableRadio","getTabbableEdges","container","options","elements","getTabbables","first","last","getNextTabbable","current","getShadowRoot","tabbables","doc","currentElement","getActiveElement","index","getTabIndex","node","NATURALLY_TABBABLE_REGEX","isEditableElement","hasTabIndex","getInitialFocus","options","root","getInitialEl","filter","enabled","node","tabbables","getTabbables","AnimationFrame","_AnimationFrame","__publicField","fn","raf","frame","nextTick","set","raf2","fn2","id","queueBeforeEvent","el","type","cb","cancelTimer","exec","observeAttributesImpl","node","options","attributes","fn","win","obs","changes","change","observeAttributes","nodeOrFn","defer","func","raf","v","cleanups","clickIfLink","el","click","win","getWindow","isFirefox","queueBeforeEvent","getNearestOverflowAncestor","el","parentNode","getParentNode","isRootElement","getDocument","isHTMLElement","isOverflowElement","OVERFLOW_RE","nonOverflowValues","isOverflowElement","el","win","getWindow","overflow","overflowX","overflowY","display","proxyTabFocusImpl","container","options","triggerElement","onFocus","onFocusEnter","getShadowRoot","doc","body","onKeyDown","event","elementToFocus","firstTabbable","lastTabbable","getTabbableEdges","nextTabbableAfterTrigger","getNextTabbable","noTabbableElements","isActiveElement","addDomEvent","proxyTabFocus","defer","restOptions","func","raf","v","cleanups","node","trigger","fn","queryAll","root","selector","query","isScrollable","el","scrollIntoView","options","rootEl","scrollOptions","isOverflowElement","setStyle","el","style","noop","prev","acc","key","isEqual","setStyleProperty","prop","value","a","b","waitForPromise","promise","controller","timeout","signal","resolve","reject","timeoutId","result","error","waitForElement","target","options","rootNode","win","getWindow","doc","getDocument","el","observer","el2","sides","min","max","oppositeSideMap","clamp","start","value","end","max","min","evaluate","param","getSide","placement","getAlignment","getOppositeAxis","axis","getAxisLength","getSideAxis","firstChar","getAlignmentAxis","getAlignmentSides","rects","rtl","alignment","alignmentAxis","length","mainAlignmentSide","getOppositePlacement","getExpandedPlacements","oppositePlacement","getOppositeAlignmentPlacement","lrPlacement","rlPlacement","tbPlacement","btPlacement","getSideList","side","isStart","getOppositeAxisPlacements","flipAlignment","direction","list","expandPaddingObject","padding","getPaddingObject","rectToClientRect","rect","x","y","width","height","computeCoordsFromPlacement","_ref","placement","rtl","reference","floating","sideAxis","getSideAxis","alignmentAxis","getAlignmentAxis","alignLength","getAxisLength","side","getSide","isVertical","commonX","commonY","commonAlign","coords","getAlignment","detectOverflow","state","options","_await$platform$isEle","x","y","platform","rects","elements","strategy","boundary","rootBoundary","elementContext","altBoundary","padding","evaluate","paddingObject","getPaddingObject","element","clippingClientRect","rectToClientRect","rect","offsetParent","offsetScale","elementClientRect","MAX_RESET_COUNT","computePosition","config","middleware","platformWithDetectOverflow","statefulPlacement","resetCount","middlewareData","i","currentMiddleware","name","fn","nextX","nextY","data","reset","arrow","axis","length","arrowDimensions","isYAxis","minProp","maxProp","clientProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","largestPossiblePadding","minPadding","min","maxPadding","min$1","max","center","offset","clamp","shouldAddOffset","alignmentOffset","flip","options","state","_middlewareData$arrow","_middlewareData$flip","placement","middlewareData","rects","initialPlacement","platform","elements","checkMainAxis","checkCrossAxis","specifiedFallbackPlacements","fallbackStrategy","fallbackAxisSideDirection","flipAlignment","detectOverflowOptions","evaluate","side","getSide","initialSideAxis","getSideAxis","isBasePlacement","rtl","fallbackPlacements","getOppositePlacement","getExpandedPlacements","hasFallbackAxisSideDirection","getOppositeAxisPlacements","placements","overflow","overflows","overflowsData","sides","getAlignmentSides","_middlewareData$flip2","_overflowsData$filter","nextIndex","nextPlacement","d","resetPlacement","a","b","_overflowsData$filter2","currentSideAxis","acc","getSideOffsets","rect","isAnySideFullyClipped","hide","strategy","offsets","originSides","convertValueToCoords","state","options","placement","platform","elements","rtl","side","getSide","alignment","getAlignment","isVertical","getSideAxis","mainAxisMulti","crossAxisMulti","rawValue","evaluate","mainAxis","crossAxis","alignmentAxis","offset","_middlewareData$offse","_middlewareData$arrow","x","y","middlewareData","diffCoords","shift","checkMainAxis","checkCrossAxis","limiter","_ref","detectOverflowOptions","coords","overflow","getOppositeAxis","mainAxisCoord","crossAxisCoord","minSide","maxSide","min","max","clamp","limitedCoords","limitShift","rects","rawOffset","computedOffset","len","limitMin","limitMax","_middlewareData$offse2","isOriginSide","size","_state$middlewareData","_state$middlewareData2","apply","isYAxis","width","height","heightSide","widthSide","maximumClippingHeight","maximumClippingWidth","overflowAvailableHeight","overflowAvailableWidth","noShift","availableHeight","availableWidth","xMin","xMax","yMin","yMax","nextDimensions","min","max","round","floor","createCoords","v","hasWindow","getNodeName","node","isNode","getWindow","_node$ownerDocument","getDocumentElement","_ref","value","isElement","isHTMLElement","isShadowRoot","isOverflowElement","element","overflow","overflowX","overflowY","display","getComputedStyle","isTableElement","isTopLayer","willChangeRe","containRe","isNotNone","isWebKitValue","isContainingBlock","elementOrCss","css","isWebKit","getContainingBlock","currentNode","getParentNode","isLastTraversableNode","getNodeScroll","result","getNearestOverflowAncestor","parentNode","getOverflowAncestors","list","traverseIframes","_node$ownerDocument2","scrollableAncestor","isBody","win","frameElement","getFrameElement","getCssDimensions","element","css","getComputedStyle","width","height","hasOffset","isHTMLElement","offsetWidth","offsetHeight","shouldFallback","round","unwrapElement","isElement","getScale","domElement","createCoords","rect","$","x","y","noOffsets","getVisualOffsets","win","getWindow","isWebKit","shouldAddVisualOffsets","isFixed","floatingOffsetParent","getBoundingClientRect","includeScale","isFixedStrategy","offsetParent","clientRect","scale","visualOffsets","offsetWin","currentWin","currentIFrame","getFrameElement","iframeScale","iframeRect","left","top","rectToClientRect","getWindowScrollBarX","leftScroll","getNodeScroll","getDocumentElement","getHTMLOffset","documentElement","scroll","htmlRect","convertOffsetParentRelativeRectToViewportRelativeRect","_ref","elements","strategy","topLayer","isTopLayer","offsets","isOffsetParentAnElement","getNodeName","isOverflowElement","offsetRect","htmlOffset","getClientRects","getDocumentRect","html","body","max","SCROLLBAR_MAX","getViewportRect","visualViewport","visualViewportBased","windowScrollbarX","doc","bodyStyles","bodyMarginInline","clippingStableScrollbarWidth","getInnerBoundingClientRect","getClientRectFromClippingAncestor","clippingAncestor","hasFixedPositionAncestor","stopNode","parentNode","getParentNode","isLastTraversableNode","getClippingElementAncestors","cache","cachedResult","result","getOverflowAncestors","el","currentContainingBlockComputedStyle","elementIsFixed","currentNode","computedStyle","currentNodeIsContaining","isContainingBlock","ancestor","getClippingRect","boundary","rootBoundary","clippingAncestors","firstRect","right","bottom","i","min","getDimensions","getRectRelativeToOffsetParent","setLeftRTLScrollbarOffset","isStaticPositioned","getTrueOffsetParent","polyfill","rawOffsetParent","getOffsetParent","svgOffsetParent","isTableElement","getContainingBlock","getElementRects","data","getOffsetParentFn","getDimensionsFn","floatingDimensions","isRTL","platform","rectsAreEqual","a","b","observeMove","onMove","io","timeoutId","root","cleanup","_io","refresh","skip","threshold","elementRectForRootMargin","insetTop","floor","insetRight","insetBottom","insetLeft","options","isFirstUpdate","handleObserve","entries","ratio","autoUpdate","reference","floating","update","ancestorScroll","ancestorResize","elementResize","layoutShift","animationFrame","referenceEl","ancestors","cleanupIo","reobserveFrame","resizeObserver","firstEntry","_resizeObserver","frameId","prevRefRect","frameLoop","nextRefRect","_resizeObserver2","offset","shift","flip","size","hide","arrow","limitShift","computePosition","reference","floating","options","cache","mergedOptions","platform","platformWithCache","toArray","v","has","v","add","items","remove","t","addOrRemove","v","item","has","remove","add","isArrayLike","value","isArrayEqual","a","b","i","isEqual","keys","length","key","isArray","v","isBoolean","isObjectLike","isObject","isString","v","isFunction","isNull","hasProp","obj","prop","baseGetTag","fnToString","objectCtorString","isPlainObject","isObjectLike","isFrameworkElement","proto","Ctor","isReactElement","x","isVueElement","identity","v","noop","callAll","fns","a","fn","match","key","record","args","fn","isFunction","error","compact","obj","isPlainObject","keys2","key","filtered","value","warn","a","m","c","invariant","ensure","createDOMRect","x","y","width","height","rect","getDOMRect","anchorRect","getAnchorElement","anchorElement","getAnchorRect","isHTMLElement","anchor","toVar","value","cssVars","getSideAxis","side","createTransformOriginMiddleware","opts","arrowEl","state","elements","middlewareData","placement","rects","y","axis","arrowX","arrowY","arrowWidth","arrowHeight","transformX","transformY","shiftY","halfAnchorHeight","arrowOffset","gutter","sideOffsetValue","isOverlappingAnchor","adjacentTransformOrigin","overlapTransformOrigin","useOverlap","rectMiddleware","shiftArrowMiddleware","x","dir","getPlacementDetails","placement","side","align","getPlacementSide","defaultOptions","roundByDpr","win","value","dpr","isApproximatelyEqual","a","b","resolveBoundaryOption","boundary","getArrowMiddleware","arrowElement","doc","opts","element","arrow","getOffsetMiddleware","isNull","offset","placement","arrowOffset","gutter","mainAxis","hasAlign","getPlacementDetails","shift2","crossAxis","compact","getFlipMiddleware","flip","getShiftMiddleware","shift","limitShift","getSizeMiddleware","lastReferenceWidth","lastReferenceHeight","lastAvailableWidth","lastAvailableHeight","size","elements","rects","availableHeight","availableWidth","floating","referenceWidth","referenceHeight","hideWhenDetachedMiddleware","hide","getAutoUpdateOptions","floatingStyleProps","arrowStyleProps","createStyleCleanup","el","props","noop","prev","prop","anchorIdentity","anchor","isHTMLElement","getPlacementImpl","referenceOrVirtual","floatingOrVirtual","resolveFloating","resolveAnchor","raw","resolveReference","getAnchorElement","options","middleware","cachedMiddlewareFloating","restoreFloatingStyles","restoreArrowStyles","rebuildMiddlewareForFloating","arrowEl","shiftArrowMiddleware","createTransformOriginMiddleware","rectMiddleware","strategy","onComplete","onPositioned","lastX","lastY","zIndexComputed","lastAnchorForObserve","lastFloatingForObserve","cancelAutoUpdate","autoUpdateOptions","syncAutoUpdateObservers","reference","autoUpdate","runUpdate","updatePosition","pos","computePosition","getWindow","x","y","contentEl","getComputedStyle","getPlacement","referenceOrFn","floatingOrFn","defer","func","raf","v","cleanups","fn","ARROW_FLOATING_STYLE","getPlacementStyles","options","placement","sameWidth","fitViewport","strategy","cssVars","getAnchorId","scope","getTriggerId","value","customId","isFunction","getContentId","getPositionerId","getArrowId","getTitleId","getDescriptionId","getCloseTriggerId","getAnchorEl","getTriggerEl","getTriggerEls","queryAll","getActiveTriggerEl","getContentEl","getPositionerEl","getTitleEl","getDescriptionEl","connect","service","normalize","state","context","send","computed","prop","scope","translations","open","currentPlacement","currentPlacementSide","getPlacementSide","portalled","rendered","triggerValue","popperStyles","getPlacementStyles","nextOpen","value","options","getArrowId","parts","getAnchorId","props","current","getTriggerId","dataAttr","getContentId","event","isLeftClick","isSafari","shouldSwitch","getPositionerId","ariaAttr","getTitleId","getDescriptionId","getCloseTriggerId","counterMap","uncontrolledNodes","markerMap","lockCount","unwrapHost","node","correctTargets","parent","targets","target","correctedTarget","x","ignoreableNodes","isIgnoredNode","walkTreeOutside","originalTarget","props","parentNode","markerName","controlAttribute","explicitBooleanValue","followControlledElements","markerCounter","hiddenNodes","elementsToKeep","elementsToStop","keep","el","isHTMLElement","findControlledElements","controlledElement","deep","attr","alreadyHidden","counterValue","markerValue","e","getParentNode","originalTarget","hideOthers","parentNode","markerName","followControlledElements","walkTreeOutside","raf","fn","frameId","ariaHidden","targetsOrFn","options","defer","func","v","cleanups","elements","hideOthers","clsx","args","str","CSS_REGEX","serialize","style","res","match","css","a","b","isString","mergeProps","result","props","key","callAll","symbols","symbol","STATE_DELIMITER","ABSOLUTE_PREFIX","stateIndexCache","stateIdIndexCache","joinStatePath","parts","isAbsoluteStatePath","value","isExplicitAbsoluteStatePath","isChildTarget","stripAbsolutePrefix","appendStatePath","base","segment","buildStateIndex","machine","index","idIndex","visit","basePath","state","stateId","invariant","childStates","ensure","childKey","childState","childPath","topKey","topState","ensureStateIndex","cached","getStatePathById","toSegments","getStateChain","stateIndex","segments","chain","statePath","path","current","resolveAbsoluteStateValue","resolved","resolvedPath","nextPath","nextState","hasStatePath","resolveStateValue","source","stateValue","sourceSegments","candidate","findTransition","machine","state","eventType","chain","getStateChain","index","transition","getExitEnterStates","prevState","nextState","reenter","prevChain","nextChain","commonIndex","exiting","entering","sameLeaf","matchesState","current","value","STATE_DELIMITER","hasTag","tag","item","createGuards","guards","params","str","guard","createMachine","config","ensureStateIndex","setup","transitions","choose","MachineStatus","MachineStatus2","INIT_STATE","createScope","props","getRootNode","getDoc","getDocument","getActiveElement","isActiveElement","id","getWindowFrames","win","frames","cb","i","frame","event","listener","options","getParentWindow","parent","POINTER_OUTSIDE_EVENT","FOCUS_OUTSIDE_EVENT","isComposedPathFocusable","composedPath","node","isHTMLElement","isFocusable","isPointerEvent","event","isEventPointWithin","rect","isPointInRect","point","isEventWithinScrollbar","ancestor","isScrollableY","onScrollbarY","isScrollableX","onScrollbarX","trackInteractOutsideImpl","options","exclude","onFocusOutside","onPointerDownOutside","onInteractOutside","defer","followControlledElements","doc","getDocument","win","getWindow","frames","getWindowFrames","parentWin","getParentWindow","isEventOutside","target","contains","isControlledElement","triggerEl","triggerAncestor","getNearestOverflowAncestor","nodeAncestor","pointerdownCleanups","isInShadowRoot","isShadowRoot","isPointerDown","onPointerDown","onPointerUp","handler","clickEvent","func","isTouchDevice","raf","v","evt","getEventTarget","handler2","callAll","fireCustomEvent","isContextMenuEvent","fn","addDomEvent","cleanups","timer","onFocusin","trackInteractOutside","nodeOrFn","el","type","init","trackEscapeKeydown","node","fn","handleKeyDown","event","addDomEvent","getDocument","LAYER_REQUEST_DISMISS_EVENT","layerStack","layer","node","index","highestBlockingIndex","type","target","contains","branch","existingIndex","getTarget","clearLayerStyleMirror","nextTick","layer2","applyLayerStackMetadata","zIndex","getComputedStyle","parent","addListenerOnce","event","fireCustomEvent","el","nestedCount","detail","win","callback","originalBodyPointerEvents","layerObservers","getDesiredPointerEvents","node","layerStack","applyPointerEvents","desired","ensurePointerEventsObserver","win","getWindow","observer","assignPointerEventToLayers","clearPointerEvent","disablePointerEventsOutside","persistentElements","doc","getDocument","cleanups","body","el","promise","abort","waitForElement","node2","isHTMLElement","el2","setStyle","original","fn","trackDismissableElementImpl","node","options","warnOnMissingNode","warn","onDismiss","onRequestDismiss","pointerBlocking","excludeContainers","debug","type","layerStyleTargets","layer","layerStack","assignPointerEventToLayers","onPointerDownOutside","event","target","getEventTarget","onFocusOutside","onEscapeKeyDown","exclude","containers","_containers","persistentElements","fn","isHTMLElement","node2","contains","cleanups","disablePointerEventsOutside","trackEscapeKeydown","trackInteractOutside","clearPointerEvent","trackDismissableElement","nodeOrFn","defer","func","raf","v","isFunction","__defProp","__defNormalProp","obj","key","value","__publicField","activeFocusTraps","trapStack","trap","activeTrap","trapIndex","sharedTrapStack","FocusTrap","elements","options","__publicField","event","target","getEventTarget","targetContained","isDocument","nextNode","navAcrossContainers","getTabIndex","mruContainerIdx","tabbableNodes","mruTabIdx","node","g","n","valueOrHandler","isBackward","destinationNode","isTabEvent","isEscapeEvent","win","mutations","mutation","element","hasControllerElements","c","isControlledByExpandedController","container","portalContainer","isFocusable","activeElement","getActiveElement","firstTabbableGroup","isSelectableInput","deactivateOptions","onDeactivate","onPostDeactivate","checkCanReturnFocus","returnFocus","finishDeactivation","delay","returnFocusNode","pauseOptions","onPause","onPostPause","unpauseOptions","onUnpause","onPostUnpause","containerElements","previousActiveElement","configOverrideOptions","optionName","configOptionName","hasFallback","params","optionValue","err","opts","containerIndex","containerGroup","startOfGroupIndex","firstTabbableNode","isTabbable","destinationGroupIndex","destinationGroup","lastOfGroupIndex","lastTabbableNode","config","isKeyForward","isKeyBackward","getDocument","controlledElement","getControlledElements","composedPath","isControlledElement","getTabbables","focusableNodes","getFocusables","firstDomTabbableNode","lastDomTabbableNode","posTabIndexesFound","i","nextTabbableNode","forward","nodeIdx","focusableIdx","group","addDomEvent","cleanup","activateOptions","onActivate","onPostActivate","checkCanFocusTrap","finishActivation","isKeyboardEvent","value","fn","trapFocus","el","options","trap","cleanup","raf","resolvedElements","e","primaryEl","FocusTrap","getDocument","LOCK_CLASSNAME","lockMap","getPaddingProperty","documentElement","documentLeft","hasStableScrollbarGutter","element","scrollbarGutter","getComputedStyle","applyLock","doc","win","body","hasStableGutter","scrollbarWidth","setScrollbarWidthProperty","setStyleProperty","paddingProperty","setBodyStyle","styles","setStyle","setBodyStyleIOS","scrollX","scrollY","visualViewport","offsetLeft","offsetTop","restoreStyle","cleanups","isIos","fn","preventBodyScroll","_document","state","lockState","released","machine","createMachine","props","prop","bindable","scope","value","onTriggerValueChange","triggerElement","getActiveTriggerEl","track","action","context","anchorEl","getAnchorEl","getPlacement","getPositionerEl","data","send","getContentEl2","getContentEl","restoreFocus","trackDismissableElement","getTriggerEl","getTriggerEls","event","proxyTabFocus","el","ariaHidden","preventBodyScroll","trapFocus","getInitialFocus","finalFocusEl","triggerValue","activeTriggerEl","fallbackTrigger","raf","getTitleEl","getDescriptionEl","eventRestoreFocus","flush","createNormalizer","fn","_target","key","props","getErrorMessage","hook","provider","createContext$1","options","name","strict","hookName","providerName","errorMessage","defaultValue","Context","createContext","useContext$1","context","useContext","error","hasProp","isFunction","PopoverProvider","usePopoverContext","createContext$1","composeRefs","refs","node","cleanUps","ref","cb","cleanUp","getRef","element","getter","mayWarn","withAsChild","Component","Comp","memo","forwardRef","props","ref","asChild","children","restProps","createElement","isValidElement","onlyChild","Children","childRef","cloneElement","mergeProps","composeRefs","jsxFactory","cache","_target","_thisArg","argArray","_","asElement","ark","getReactDOM","ReactDOM","createPortal","flushSync","ReactDOM","useSafeLayoutEffect","useLayoutEffect","useEffect","useBindable","props","initial","eq","initialValue","useState","value","setValue","controlled","valueRef","useRef","prevValue","useSafeLayoutEffect","setFn","value2","prev","next","isFunction","get","flushSync","identity","nextValue","prevValue2","fn","useEffect","defaultValue","useRefs","refs","ref","useRef","key","value","useTrack","deps","effect","render","useRef","called","useEffect","d","useMachine","machine","userProps","scope","useMemo","id","ids","getRootNode","createScope","debug","args","props","compact","prop","useProp","context","useBindable","flush","ctx","computed","refs","getEvent","contextRef","useLiveRef","key","value","current","effects","useRef","transitionRef","previousEventRef","eventRef","getState","state","values","matchesState","tag","hasTag","useRefs","getParams","send","action","guard","useTrack","choose","keys","strs","isFunction","fns","s","fn","warn","str","effect","cleanups","cleanup","transitions","toArray","t","result","isString","ensure","resolveStateValue","nextState","prevState","exiting","entering","getExitEnterStates","item","existing","callAll","INIT_STATE","hydratedStateRef","statusRef","MachineStatus","useSafeLayoutEffect","started","initialState","currentState","getCurrentState","event","source","findTransition","transition","target","flushSync","ref","normalizeProps","createNormalizer","v","PopoverAnchor","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PopoverArrow","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PopoverArrowTip","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PopoverCloseTrigger","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PresenceProvider","usePresenceContext","createContext$1","PopoverContent","forwardRef","props","ref","popover","usePopoverContext","presence","usePresenceContext","mergedProps","mergeProps","jsx","ark","composeRefs","PopoverContext","props","usePopoverContext","PopoverDescription","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PopoverIndicator","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","PopoverPositioner","forwardRef","props","ref","popover","usePopoverContext","presence","usePresenceContext","mergedProps","mergeProps","jsx","ark","EnvironmentContextProvider","useEnvironmentContext","createContext$1","LocaleContextProvider","useLocaleContext","createContext$1","usePopover","props","id","useId","getRootNode","useEnvironmentContext","dir","useLocaleContext","machineProps","service","useMachine","machine","connect","normalizeProps","createSplitProps","props","keys","previousValue","currentValue","target","source","key","splitPresenceProps","props","createSplitProps","useEvent","callback","opts","sync","callbackRef","useLatestRef","useCallback","args","value","ref","useRef","connect","service","_normalize","state","send","context","present","node","machine","createMachine","props","prop","bindable","track","send","context","refs","node","win","getWindow","event","getComputedStyle","presentProp","raf","animationName","getAnimationName","onStart","onEnd","getEventTarget","onCancel","cleanupStyles","setStyle","nextTick","styles","usePresence","props","lazyMount","unmountOnExit","present","skipAnimationOnMount","rest","wasEverPresent","useRef","machineProps","useEvent","service","useMachine","machine","api","connect","normalizeProps","unmounted","getPresenceProps","PopoverRoot","props","presenceProps","children","localProps","splitPresenceProps","popover","usePopover","jsx","PopoverProvider","PresenceProvider","usePresence","mergeProps","PopoverRootProvider","props","presenceProps","popover","children","splitPresenceProps","jsx","PopoverProvider","PresenceProvider","usePresence","mergeProps","PopoverTitle","forwardRef","props","ref","mergedProps","mergeProps","usePopoverContext","jsx","ark","splitTriggerProps","createSplitProps","PopoverTrigger","forwardRef","props","ref","triggerProps","localProps","popover","usePopoverContext","presence","usePresenceContext","triggerPropsRaw","mergedProps","mergeProps","jsx","ark","__defProp","__exportAll","all","no_symbols","target","name","popover_exports","__exportAll","PopoverAnchor","PopoverArrow","PopoverArrowTip","PopoverCloseTrigger","PopoverContent","PopoverContext","PopoverDescription","PopoverIndicator","PopoverPositioner","PopoverRoot","PopoverRootProvider","PopoverTitle","PopoverTrigger","Portal","props","children","disabled","container","setContainer","useState","isServer","useSyncExternalStore","subscribe","getRootNode","useEnvironmentContext","useEffect","jsx","Fragment","mountNode","getPortalNode","Children","child","createPortal","cb","node","rootNode","isShadowRoot","getDocument","DEFAULT_PANEL","Dropdown","trigger","children","align","side","openProp","portalled","onOpenChange","className","panelStyle","triggerId","useId","internalOpen","setInternalOpen","useState","isControlled","open","setOpen","next","jsxs","popover_exports","details","jsx","Portal","cn","initials","name","parts","AccountAvatar","avatarUrl","secondaryContent","dashboardHref","className","avatar","jsx","cn","AccountIdentity","jsxs","AccountDetails","secondaryId","AccountMenu","children","menuClassName","side","menuLabel","statusId","useId","Dropdown","open","ChevronIcon","strokeProps","AppIcon","props","jsxs","jsx","AccountIcon","ArrowRightIcon","BeakerIcon","BotIcon","BookIcon","BugIcon","CheckIcon","ClipboardIcon","ClockIcon","DiscordIcon","InstagramIcon","XSocialIcon","LinkedInIcon","DownloadIcon","ExpandIcon","PlayIcon","PauseIcon","CloudUploadIcon","ExternalLinkIcon","GenApiIcon","GitBranchIcon","GitPullRequestIcon","GraduationCapIcon","SparklesIcon","GitHubIcon","ImageIcon","CubeIcon","AudioIcon","LockIcon","LogInIcon","LogOutIcon","MailIcon","McpIcon","MenuIcon","NewspaperIcon","PlusIcon","TerminalIcon","ToolIcon","TargetIcon","TokensIcon","UsageIcon","WarningIcon","TrendUpIcon","EarningsIcon","WalletIcon","MoonIcon","SunIcon","XIcon","TrashIcon","ChatIcon","RobotIcon","EyeIcon","EyeOffIcon","VideoIcon","MicIcon","SpeakerIcon","MegaphoneIcon","ReasoningIcon","RocketIcon","SearchIcon","SignOutIcon","PowerIcon","SparkleIcon","StarIcon","filled","CodeIcon","DatabaseIcon","CardIcon","SproutIcon","PencilIcon","KeyIcon","GlobeIcon","ArrowLeftIcon","RefreshIcon","headingSizeClasses","textSizeClasses","textToneClasses","textWeightClasses","headingClassName","size","className","cn","textClassName","tone","weight","Heading","as","children","rest","jsx","Text","intentClasses","Alert","intent","title","className","children","rest","jsxs","cn","jsx","WarningIcon","Fragment","Text","brandWordmarkMaskUrl","lockup_horizontal_default","brandWordmarkMask","scrollTopFor","target","AppHeader","children","navLabel","autoHide","scrollTargetRef","brandHref","brandLabel","className","innerClassName","navClassName","hidden","setHidden","useState","useEffect","lastScrollTop","frameId","handleScroll","nextScrollTop","delta","jsx","cn","jsxs","variantClasses","Surface","as","variant","className","children","rest","jsx","cn","Callout","title","body","children","tone","className","jsxs","Surface","cn","jsx","Heading","Text","axisClasses","assignRef","ref","value","ScrollArea","forwardRef","axis","scrollbar","className","children","rest","externalRef","innerRef","useRef","setRef","useCallback","node","useEffect","element","hideTimer","clearHideTimer","show","hide","scheduleHide","handleInteraction","jsx","cn","ChatConversation","forwardRef","children","className","viewportClassName","showScrollButton","onScrollToBottom","scrollButtonLabel","viewportProps","ref","jsxs","cn","jsx","ScrollArea","ArrowRightIcon","ChatConversationContent","props","ChatMessage","from","className","children","props","jsx","cn","ChatMessageHeader","label","icon","content","jsxs","RobotIcon","Text","ChatMessageContent","ChatMessageActions","Textarea","forwardRef","className","error","rows","props","ref","jsx","cn","ChatPromptInput","className","props","jsx","cn","ChatPromptTextarea","forwardRef","ref","Textarea","ChatPromptInputFooter","start","end","children","jsxs","Fragment","pillSizes","raisedSizes","appearanceClasses","themeClasses","outlined","intentClasses","buttonClasses","intent","appearance","size","className","disabled","colorClasses","sizeClasses","cn","Button","as","children","icon","buttonProps","Component","isButton","isAnchor","buttonType","onClick","jsxs","event","jsx","TOOLTIP_MAX_WIDTH","TOOLTIP_VIEWPORT_MARGIN","Tooltip","children","content","align","ariaLabel","clampToViewport","className","maxWidth","onClick","stopClickPropagation","style","tapEnabled","triggerAs","displayContents","showTooltip","setShowTooltip","useState","tooltipPosition","setTooltipPosition","triggerRef","useRef","tapPinnedRef","tooltipId","useId","closeTooltip","useEffect","dismissOnOutsideTap","event","dismissOnEscape","dismissOnViewportChange","updateTooltipPosition","rect","availableMaxWidth","left","transform","triggerClassName","cn","cursorClass","popupNode","jsx","tooltipPopup","createPortal","contentNode","jsxs","Fragment","sharedProps","e","spanInteractionProps","node","CopyButton","value","children","copiedTimeoutMs","tooltip","tooltipAlign","tooltipClampToViewport","tooltipMaxWidth","copiedTooltip","tooltipClassName","className","variant","intent","onCopied","onCopyError","buttonProps","copied","setCopied","useState","timeoutRef","useRef","useEffect","handleCopy","event","text","error","button","jsx","Button","cn","Tooltip","CodeBlock","code","codeClassName","language","className","rest","label","jsxs","cn","jsx","CopyButton","copied","Fragment","CheckIcon","ClipboardIcon","Collapsible","label","expanded","onToggle","children","disabled","wrapperClassName","triggerClassName","hoverClassName","focusClassName","panelClassName","ariaLabel","jsxs","cn","jsx","ChevronIcon","anatomy","createAnatomy","parts","getPositionerId","ctx","getBackdropId","getContentId","getTriggerId","value","customId","isFunction","getTitleId","getDescriptionId","getCloseTriggerId","getContentEl","getPositionerEl","getBackdropEl","getTriggerEl","getTitleEl","getDescriptionEl","getCloseTriggerEl","getTriggerEls","queryAll","getActiveTriggerEl","connect","service","normalize","state","send","context","prop","scope","ariaLabel","open","triggerValue","nextOpen","value","props","current","parts","getTriggerId","getContentId","dataAttr","event","shouldSwitch","getBackdropId","getPositionerId","compact","rendered","getTitleId","getDescriptionId","getCloseTriggerId","machine","createMachine","props","scope","alertDialog","initialFocusEl","getCloseTriggerEl","modal","prop","bindable","value","onTriggerValueChange","triggerElement","getActiveTriggerEl","track","action","send","trackDismissableElement","getContentEl","getBackdropEl","getPositionerEl","getTriggerEl","getTriggerEls","event","preventBodyScroll","context","trapFocus","el","finalFocusEl","triggerValue","activeTriggerEl","fallbackTrigger","ariaHidden","raf","getInitialFocus","getTitleEl","getDescriptionEl","DialogProvider","useDialogContext","createContext$1","RenderStrategyPropsProvider","useRenderStrategyPropsContext","createContext$1","splitRenderStrategyProps","props","createSplitProps","DialogBackdrop","forwardRef","props","ref","dialog","useDialogContext","presence","usePresence","useRenderStrategyPropsContext","mergedProps","mergeProps","jsx","ark","composeRefs","DialogCloseTrigger","forwardRef","props","ref","mergedProps","mergeProps","useDialogContext","jsx","ark","DialogContent","forwardRef","props","ref","dialog","useDialogContext","presence","usePresenceContext","mergedProps","mergeProps","jsx","ark","composeRefs","DialogContext","props","useDialogContext","DialogDescription","forwardRef","props","ref","mergedProps","mergeProps","useDialogContext","jsx","ark","DialogPositioner","forwardRef","props","ref","mergedProps","mergeProps","useDialogContext","usePresenceContext","jsx","ark","useDialog","props","id","useId","getRootNode","useEnvironmentContext","dir","useLocaleContext","machineProps","service","useMachine","machine","connect","normalizeProps","DialogRoot","props","presenceProps","children","localProps","splitPresenceProps","renderStrategyProps","splitRenderStrategyProps","dialog","useDialog","jsx","DialogProvider","RenderStrategyPropsProvider","PresenceProvider","usePresence","mergeProps","DialogRootProvider","props","presenceProps","dialog","children","splitPresenceProps","renderStrategyProps","splitRenderStrategyProps","jsx","DialogProvider","RenderStrategyPropsProvider","PresenceProvider","usePresence","mergeProps","DialogTitle","forwardRef","props","ref","mergedProps","mergeProps","useDialogContext","jsx","ark","splitTriggerProps","createSplitProps","DialogTrigger","forwardRef","props","ref","triggerProps","localProps","dialog","useDialogContext","presence","usePresenceContext","triggerPropsRaw","mergedProps","mergeProps","jsx","ark","dialog_exports","__exportAll","DialogBackdrop","DialogCloseTrigger","DialogContent","DialogContext","DialogDescription","DialogPositioner","DialogRoot","DialogRootProvider","DialogTitle","DialogTrigger","sizeClasses","Dialog","open","onOpenChange","trigger","triggerAsChild","triggerClassName","title","ariaLabel","labelledBy","size","showBackdrop","backdropBlur","positionerClassName","contentClassName","children","contentRef","useRef","jsxs","dialog_exports","details","jsx","Portal","cn","DialogHeader","DialogTitle","DialogDescription","description","inBody","className","titleClassName","descriptionClassName","props","headingClassName","DialogBody","actions","footnote","bodyClassName","ScrollArea","DialogFooter","defaultIcons","jsx","TrashIcon","CheckIcon","ConfirmationDialog","open","title","description","children","confirmLabel","intent","confirmIcon","confirmDisabled","cancelDisabled","onConfirm","onCancel","size","actions","jsxs","Fragment","Button","XIcon","Dialog","next","DialogBody","DialogHeader","sizeClasses","Eyebrow","as","size","className","children","rest","jsx","cn","titleClasses","subtitleClasses","ContentHeader","eyebrow","title","subtitle","action","variant","className","Title","jsxs","cn","jsx","Eyebrow","CopyField","value","label","display","className","copy","jsx","CopyButton","copied","cn","jsxs","Fragment","CheckIcon","ClipboardIcon","__defProp","__defNormalProp","obj","key","value","__publicField","fallback","item","isObject","hasProp","ListCollection","_ListCollection","options","__publicField","items","other","isEqual","values","value","index","result","idx","groups","valueA","valueB","indexA","indexB","separator","strs","str","groupBy","groupSort","groupKey","entries","a","b","step","clamp","itemValue","text","current","currentIndex","isSingleKey","i","match","queryString","state","currentValue","timeout","search","query","char","cleanup","update","value2","mode","insert","toIndex","fn","filteredItems","itemsOrValues","itemOrValue","fromIndex","move","indices","from","to","keys","key","label","disabled","itemString","insert","items","index","values","move","indices","toIndex","a","b","itemsToMove","i","resolveSelectedItems","values","collection","selectedItemMap","result","value","item","updateSelectedItemMap","selectedItems","nextMap","allowedValues","deriveSelectionState","nextSelectedItemMap","createSelectedItemMap","createListCollection","options","ListCollection","anatomy","createAnatomy","parts","collection","options","ListCollection","getRootId","ctx","getLabelId","getControlId","getInputId","getContentId","getPositionerId","getTriggerId","getClearTriggerId","getItemGroupId","id","getItemGroupLabelId","getItemId","getContentEl","getInputEl","getPositionerEl","getControlEl","getTriggerEl","getClearTriggerEl","getItemEl","value","selector","query","focusInputEl","inputEl","setCaretToEnd","focusTriggerEl","triggerEl","connect","service","normalize","context","prop","state","send","scope","computed","event","translations","collection","disabled","interactive","invalid","required","readOnly","open","focused","composite","highlightedValue","currentPlacement","currentPlacementSide","getPlacementSide","popperStyles","getPlacementStyles","getItemState","props","itemDisabled","value","ensure","options","reason","getInputEl","nextOpen","parts","getRootId","dataAttr","getInputId","getLabelId","event2","getTriggerEl","getControlId","getPositionerId","ariaAttr","getContentId","getItemId","isComposingEvent","openOnKeyPress","isModifierKey","keypress","keymap","event3","hasHighlight","alwaysSubmit","willBeRejected","itemEl","getItemEl","isAnchorElement","key","getEventKey","exec","getTriggerId","isLeftClick","focusInputEl","keyMap","getClearTriggerId","itemState","isDownloadingEvent","isOpeningInNewTab","isContextMenuEvent","id","getItemGroupId","getItemGroupLabelId","htmlFor","isValidKey","isMac","nonTextInputTypes","isKeyboardFocusEvent","isTextInput","modality","e","eventTarget","getEventTarget","doc","getDocument","win","getWindow","activeElement","getActiveElement","FOCUS_VISIBLE_INPUT_KEYS","currentModality","changeHandlers","listenerMap","hasEventBeforeFocus","hasBlurredWindowRecently","ignoreFocusEvent","triggerChangeHandlers","handler","handleKeyboardEvent","handlePointerEvent","handleClickEvent","isVirtualClick","handleFocusEvent","target","handleWindowBlur","setupGlobalFocusEvents","root","focus","patchedFocus","tearDownWindowFocusTracking","loadListener","listenerData","getInteractionModality","setInteractionModality","isFocusVisible","currentModality","trackFocusVisible","props","isTextInput","autoFocus","onChange","root","setupGlobalFocusEvents","handler","modality","e","isKeyboardFocusEvent","changeHandlers","ID","DEBUG_ID","DEBUG_STYLES","createLiveRegion","opts","level","doc","root","_delay","debug","win","parent","getDebugRegion","region","announce","message","delay","role","debugRegion","destroy","guards","createMachine","choose","setup","and","not","machine","props","node","clickIfLink","collection","prop","bindable","getContext","getEvent","initialValue","initialSelectedItems","isEqual","value","context","collection2","selectedItemMap","proposed","deriveSelectionState","effectiveValue","effective","item","inputValue","valueAsString","match","value2","event","reason","highlightedValue","createSelectedItemMap","resolveSelectedItems","computed","track","action","send","openOnChange","isBoolean","restoreFocus","scope","trackFocusVisible","trackDismissableElement","getContentEl","getInputEl","getTriggerEl","getClearTriggerEl","refs","liveRegion","createLiveRegion","anchorEl","getControlEl","positionerEl","getPositionerEl","getPlacement","data","inputEl","cleanups","exec","immediate","getInteractionModality","contentEl","scrollToIndexFn","highlightedIndex","getItemEl","itemEl","raf_cleanup","raf","scrollIntoView","rafCleanup","setInteractionModality","observerCleanup","observeAttributes","cleanup","params","nextValue","addOrRemove","nextTick","flush","remove","focusInputEl","focusTriggerEl","setCaretToEnd","selectionBehavior","firstValue","getOpenChangeReason","valueText","next","isApple","optionText","isSelected","comboboxAnatomy","anatomy","ComboboxProvider","useComboboxContext","createContext$1","ComboboxClearTrigger","forwardRef","props","ref","mergedProps","mergeProps","useComboboxContext","jsx","ark","ComboboxContent","forwardRef","props","ref","combobox","useComboboxContext","presence","usePresenceContext","mergedProps","mergeProps","jsx","ark","composeRefs","parts","comboboxAnatomy","ComboboxEmpty","forwardRef","props","ref","useComboboxContext","jsx","ark","ComboboxContext","props","useComboboxContext","ComboboxControl","forwardRef","props","ref","mergedProps","mergeProps","useComboboxContext","jsx","ark","FieldProvider","useFieldContext","createContext$1","ComboboxInput","forwardRef","props","ref","mergedProps","mergeProps","useComboboxContext","field","useFieldContext","jsx","ark","ComboboxItemProvider","useComboboxItemContext","createContext$1","ComboboxItemPropsProvider","useComboboxItemPropsContext","createContext$1","splitItemProps","createSplitProps","ComboboxItem","forwardRef","props","ref","itemProps","localProps","combobox","useComboboxContext","mergedProps","mergeProps","jsx","ComboboxItemPropsProvider","ComboboxItemProvider","ark","ComboboxItemContext","props","useComboboxItemContext","ComboboxItemGroupPropsProvider","useComboboxItemGroupPropsContext","createContext$1","splitItemGroupProps","createSplitProps","ComboboxItemGroup","forwardRef","props","ref","id","useId","_itemGroupProps","localProps","itemGroupProps","mergedProps","mergeProps","useComboboxContext","jsx","ComboboxItemGroupPropsProvider","ark","ComboboxItemGroupLabel","forwardRef","props","ref","combobox","useComboboxContext","itemGroupProps","useComboboxItemGroupPropsContext","mergedProps","mergeProps","jsx","ark","ComboboxItemIndicator","forwardRef","props","ref","combobox","useComboboxContext","itemProps","useComboboxItemPropsContext","mergedProps","mergeProps","jsx","ark","ComboboxItemText","forwardRef","props","ref","combobox","useComboboxContext","itemProps","useComboboxItemPropsContext","mergedProps","mergeProps","jsx","ark","ComboboxLabel","forwardRef","props","ref","mergedProps","mergeProps","useComboboxContext","jsx","ark","ComboboxList","forwardRef","props","ref","mergedProps","mergeProps","useComboboxContext","jsx","ark","ComboboxPositioner","forwardRef","props","ref","combobox","useComboboxContext","presence","usePresenceContext","mergedProps","mergeProps","jsx","ark","useCombobox","props","id","useId","dir","useLocaleContext","getRootNode","useEnvironmentContext","field","useFieldContext","machineProps","service","useMachine","machine","connect","normalizeProps","ComboboxImpl","props","ref","presenceProps","comboboxProps","splitPresenceProps","useComboboxProps","localProps","createSplitProps","combobox","useCombobox","presence","usePresence","mergeProps","mergedProps","jsx","ComboboxProvider","PresenceProvider","ark","ComboboxRoot","forwardRef","ComboboxImpl","props","ref","presenceProps","comboboxProps","splitPresenceProps","combobox","localProps","createSplitProps","presence","usePresence","mergeProps","mergedProps","jsx","ComboboxProvider","PresenceProvider","ark","ComboboxRootProvider","forwardRef","splitTriggerProps","createSplitProps","ComboboxTrigger","forwardRef","props","ref","triggerProps","localProps","mergedProps","mergeProps","useComboboxContext","jsx","ark","combobox_exports","__exportAll","ComboboxClearTrigger","ComboboxContent","ComboboxContext","ComboboxControl","ComboboxEmpty","ComboboxInput","ComboboxItem","ComboboxItemContext","ComboboxItemGroup","ComboboxItemGroupLabel","ComboboxItemIndicator","ComboboxItemText","ComboboxLabel","ComboboxList","ComboboxPositioner","ComboboxRoot","ComboboxRootProvider","ComboboxTrigger","Input","forwardRef","className","error","hideNumberSteppers","props","ref","jsx","cn","EditableComboboxToken","label","value","highlighted","className","buttonProps","jsxs","cn","jsx","ChevronIcon","EditableCombobox","options","onChange","emptyMessage","align","open","onOpenChange","closeOnSelect","startContent","contentClassName","disabled","name","placeholder","required","inputProps","visibleOptions","useMemo","query","option","collection","createListCollection","item","hasOptions","hasStartContent","inputRef","useRef","useEffect","combobox_exports","details","Input","context","ScrollArea","isExternalHref","href","origin","ExternalLinkButton","props","size","appearance","external","isExternalHref","showIcon","icon","className","children","content","jsxs","Fragment","jsx","ExternalLinkIcon","href","target","rel","_size","_appearance","_external","_showIcon","_icon","_className","_children","anchorProps","Button","cn","type","buttonProps","fieldAnatomy","createAnatomy","parts","FieldContext","props","useFieldContext","FieldErrorText","forwardRef","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldHelperText","forwardRef","props","ref","mergedProps","mergeProps","useFieldContext","jsx","ark","FieldInput","forwardRef","props","ref","mergedProps","mergeProps","useFieldContext","jsx","ark","FieldItem","props","value","children","parentField","useFieldContext","jsx","FieldProvider","useMemo","controlId","labelId","getControlProps","parts","FieldLabel","forwardRef","props","ref","mergedProps","mergeProps","useFieldContext","jsx","ark","FieldRequiredIndicator","forwardRef","fallback","props","ref","field","useFieldContext","mergedProps","mergeProps","jsx","ark","FieldsetProvider","useFieldsetContext","createContext$1","useSafeLayoutEffect","useLayoutEffect","useEffect","useField","props","fieldset","useFieldsetContext","env","useEnvironmentContext","ids","target","disabled","invalid","readOnly","required","hasErrorText","setHasErrorText","useState","hasHelperText","setHasHelperText","uid","useId","id","rootRef","useRef","rootId","errorTextId","helperTextId","labelId","useSafeLayoutEffect","rootNode","checkTextElements","docOrShadowRoot","observer","labelIds","useMemo","getRootProps","parts","dataAttr","targetControlId","getLabelProps","getControlProps","ariaAttr","getInputProps","getTextareaProps","getSelectProps","getHelperTextProps","getErrorTextProps","getRequiredIndicatorProps","splitRootProps","createSplitProps","FieldRoot","forwardRef","props","ref","useFieldProps","localProps","field","useField","mergedProps","mergeProps","jsx","FieldProvider","ark","composeRefs","splitRootProviderProps","createSplitProps","FieldRootProvider","forwardRef","props","ref","field","localProps","mergedProps","mergeProps","jsx","FieldProvider","ark","FieldSelect","forwardRef","props","ref","mergedProps","mergeProps","useFieldContext","jsx","ark","autoresizeTextarea","el","style","getComputedStyle","win","getWindow","doc","getDocument","resize","newHeight","elementPrototype","descriptor","newValue","prevValue","resizeObserver","attrObserver","FieldTextarea","forwardRef","props","ref","autoresize","textareaProps","textareaRef","useRef","mergedProps","mergeProps","useFieldContext","useEffect","autoresizeTextarea","jsx","ark","composeRefs","field_exports","__exportAll","FieldContext","FieldErrorText","FieldHelperText","FieldInput","FieldItem","FieldLabel","FieldRequiredIndicator","FieldRoot","FieldRootProvider","FieldSelect","FieldTextarea","FieldStack","label","children","helper","action","error","alignLabelRow","className","labelClassName","helperClassName","errorClassName","jsxs","field_exports","cn","jsx","guards","acquireDocumentFileDropGuard","document","guard","preventFileNavigation","event","released","matchesAccept","file","accept","tokens","t","token","prefix","partitionFiles","incoming","current","maxFiles","maxSizeBytes","accepted","rejected","slots","intentClasses","intentHoverClasses","variantClasses","variantHoverClasses","sizeClasses","IconButton","forwardRef","intent","variant","pressed","title","tooltip","tooltipAlign","tooltipClampToViewport","children","className","size","disabled","buttonProps","ref","button","jsx","cn","tooltipContent","Tooltip","PREVIEWABLE_IMAGE_TYPES","PREVIEW_SIZE","LARGE_PREVIEW_SIZE","previewSizeClasses","isPreviewableImage","file","formatFileSize","bytes","attachmentSummary","files","kinds","kind","PreviewPlaceholder","icon","size","jsx","cn","FilePreview","placeholderIcon","canvasRef","useRef","canPreview","setCanPreview","useState","previewSize","useEffect","cancelled","drawPreview","bitmap","canvas","context","scale","width","height","x","y","FileUpload","value","onChange","onReject","maxFiles","maxSizeBytes","accept","ImageIcon","label","jsxs","Fragment","previewIcon","variant","disabled","className","acquireDocumentFileDropGuard","addFiles","incoming","accepted","rejected","partitionFiles","hasFiles","canAdd","isSingleFile","compact","inline","inputId","useId","addInputId","handleInputChange","event","e","index","IconButton","_","i","XIcon","PlusIcon","InfoTip","text","content","label","jsx","Tooltip","chipSizes","intentClasses","Chip","intent","size","className","children","rest","intentClass","jsx","cn","chipClassName","KeyChip","prefix","value","label","className","text","jsx","CopyButton","copied","jsxs","Chip","cn","CheckIcon","ClipboardIcon","LinkCard","as","external","showIcon","className","surfaceClassName","children","linkProps","Component","isExternal","isExternalHref","jsxs","Surface","cn","jsx","ExternalLinkIcon","MediaPlaceholder","icon","label","detail","children","className","rest","jsxs","cn","jsx","Text","TRIGGER_BASE","ROW_BASE","CHECK_BASE","MultiSelect","options","selected","onChange","placeholder","disabled","disabledText","disabledTooltip","align","label","ariaLabel","fullWidth","isAllSelected","toggleItem","itemId","m","selectAll","displayText","option","labelNode","jsx","jsxs","cn","Tooltip","ChevronIcon","Dropdown","open","ScrollArea","opt","isChecked","base","activeClasses","inactiveClasses","NavItem","as","active","Icon","className","children","rest","jsxs","cn","jsx","startOfUtcDay","date","addUtcDays","days","next","startOfUtcMonth","addUtcMonths","months","startOfUtcIsoWeek","day","getUtcIsoWeekPeriod","thursday","isoYear","yearStart","isoWeek","formatUtcDatePeriod","formatUtcHourPeriod","formatUtcMonthPeriod","periodFromDate","granularity","currentPeriod","periodToWindow","selection","start","yearText","weekText","jan4","monthText","getPeriodBucketKeys","end","bucketKeys","cursor","periodBucketKeyToDate","bucketKey","isPeriodSelectable","minDate","maxDate","tabButtonBaseClass","tabButtonSizeClass","variantClasses","TabButton","as","active","onClick","children","size","variant","intent","ariaLabel","disabled","className","rest","Component","isButton","colors","jsx","event","cn","WEEKDAY_LABELS","MONTH_LABELS","NAV_BUTTON","addUtcMonths","date","months","monthGridDates","viewMonth","firstDay","firstWeekday","cursor","addUtcDays","_","index","sameUtcDay","left","right","periodDate","value","periodToWindow","selectionKey","formatMonthYear","month","formatFullDate","formatWeekSummary","start","end","weekEnd","formatPeriodSummary","viewBounds","viewDate","granularity","PeriodPicker","onChange","minDate","maxDate","trigger","header","open","setOpen","useState","setViewDate","anchorDate","setAnchorDate","emittedSelectionRef","useRef","period","useEffect","currentSelectionKey","nextAnchorDate","dates","useMemo","selectedWindow","today","startOfUtcDay","previousViewDate","nextViewDate","previousBounds","nextBounds","previousDisabled","nextDisabled","summaryLabel","commitSelection","selection","anchor","setGranularity","periodFromDate","selectDate","viewLabel","jsxs","jsx","TabButton","Dropdown","isOpen","cn","ChevronIcon","label","monthIndex","selectable","isPeriodSelectable","ariaLabel","selected","Fragment","inCurrentMonth","Section","title","id","framed","intro","action","actionClassName","panelClassName","titleClassName","children","className","body","jsxs","Fragment","jsx","Text","content","Heading","cn","Surface","valueVariantClasses","StatCard","label","value","detail","variant","className","labelClassName","valueClassName","detailClassName","jsxs","cn","jsx","Text","InlineLink","as","external","showIcon","size","tone","className","children","linkProps","Component","isExternal","isExternalHref","jsxs","jsx","ExternalLinkIcon","formattedValue","value","linkedValue","segments","offset","segment","key","jsx","InlineLink","ToolValue","error","cn","STATUS_LABELS","ToolStatus","status","icon","CheckIcon","XIcon","ClockIcon","jsxs","ToolCallDetails","name","input","output","defaultOpen","className","result","open","setOpen","useState","current","ToolIcon","ChevronIcon","Text","cn","inputs","twMerge","clsx","useScrollLock","enabled","useEffect","originalBody","originalHtml","ButtonGroup","className","children","role","rest","jsx","cn","STORAGE_KEY","readStored","value","systemPrefersDark","current","listeners","apply","syncThemeColor","appBg","meta","emit","listener","handleStorage","event","next","subscribe","getSnapshot","getServerSnapshot","setColorMode","mode","useColorMode","useSyncExternalStore","ColorModeToggle","isDark","toggle","jsxs","jsx","SunIcon","MoonIcon","cn","Drawer","open","onOpenChange","ariaLabel","children","side","contentClassName","contentRef","useRef","jsx","dialog_exports","details","jsxs","Portal","cn","DropdownItem","as","className","children","rest","Component","jsx","cn","toNumber","value","numericValue","clampPercent","getProgressPercent","progress","defaultValue","min","max","numericMin","numericMax","Slider","forwardRef","className","style","props","ref","progressPercent","sliderStyle","jsx","cn","trackClasses","Switch","checked","onChange","status","ariaLabel","disabled","className","jsx","cn","alignClasses","rowIntentClasses","Table","className","rest","jsx","cn","TableHead","TableBody","divider","TableRow","intent","TableHeaderCell","align","active","sortDirection","onSort","children","content","jsxs","Fragment","classes","TableCell","numeric","muted","TableDisclosureButton","children","disabled","expanded","onClick","className","jsxs","cn","jsx","ChevronIcon"]}