@athenaintel/react 0.19.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +97 -11
- package/dist/assets/AssetPanel.cjs +277 -0
- package/dist/assets/AssetPanel.cjs.map +1 -0
- package/dist/assets/AssetPanel.js +277 -0
- package/dist/assets/AssetPanel.js.map +1 -0
- package/dist/assets/AthenaAssetEmbed.cjs +151 -0
- package/dist/assets/AthenaAssetEmbed.cjs.map +1 -0
- package/dist/assets/AthenaAssetEmbed.js +151 -0
- package/dist/assets/AthenaAssetEmbed.js.map +1 -0
- package/dist/assets/AthenaLayout.cjs +69 -0
- package/dist/assets/AthenaLayout.cjs.map +1 -0
- package/dist/assets/AthenaLayout.js +69 -0
- package/dist/assets/AthenaLayout.js.map +1 -0
- package/dist/assets/asset-embed-messages.cjs +39 -0
- package/dist/assets/asset-embed-messages.cjs.map +1 -0
- package/dist/assets/asset-embed-messages.js +39 -0
- package/dist/assets/asset-embed-messages.js.map +1 -0
- package/dist/assets/asset-panel-store.cjs +124 -0
- package/dist/assets/asset-panel-store.cjs.map +1 -0
- package/dist/assets/asset-panel-store.js +124 -0
- package/dist/assets/asset-panel-store.js.map +1 -0
- package/dist/assets/asset-panel-url.cjs +40 -0
- package/dist/assets/asset-panel-url.cjs.map +1 -0
- package/dist/assets/asset-panel-url.js +40 -0
- package/dist/assets/asset-panel-url.js.map +1 -0
- package/dist/assets/use-asset-embed.cjs +362 -0
- package/dist/assets/use-asset-embed.cjs.map +1 -0
- package/dist/assets/use-asset-embed.js +362 -0
- package/dist/assets/use-asset-embed.js.map +1 -0
- package/dist/{AthenaAuthContext-B3AwLA5Z.cjs → auth/AthenaAuthContext.cjs} +5 -4
- package/dist/auth/AthenaAuthContext.cjs.map +1 -0
- package/dist/{AthenaAuthContext-DQsdayH2.js → auth/AthenaAuthContext.js} +3 -3
- package/dist/auth/AthenaAuthContext.js.map +1 -0
- package/dist/auth/AthenaAuthProvider.cjs +141 -0
- package/dist/auth/AthenaAuthProvider.cjs.map +1 -0
- package/dist/auth/AthenaAuthProvider.js +141 -0
- package/dist/auth/AthenaAuthProvider.js.map +1 -0
- package/dist/{auth.cjs → auth/AthenaSSOProvider.cjs} +14 -151
- package/dist/auth/AthenaSSOProvider.cjs.map +1 -0
- package/dist/{auth.js → auth/AthenaSSOProvider.js} +4 -142
- package/dist/auth/AthenaSSOProvider.js.map +1 -0
- package/dist/auth/index.cjs +10 -0
- package/dist/auth/index.cjs.map +1 -0
- package/dist/auth/index.js +10 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/chat/AthenaChat.cjs +753 -0
- package/dist/chat/AthenaChat.cjs.map +1 -0
- package/dist/chat/AthenaChat.d.ts +3 -2
- package/dist/chat/AthenaChat.js +753 -0
- package/dist/chat/AthenaChat.js.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs +53 -0
- package/dist/chat/AthenaChatErrorBoundary.cjs.map +1 -0
- package/dist/chat/AthenaChatErrorBoundary.js +53 -0
- package/dist/chat/AthenaChatErrorBoundary.js.map +1 -0
- package/dist/chat/StatewireApprovalCard.cjs +171 -0
- package/dist/chat/StatewireApprovalCard.cjs.map +1 -0
- package/dist/chat/StatewireApprovalCard.js +171 -0
- package/dist/chat/StatewireApprovalCard.js.map +1 -0
- package/dist/chat/StatewireClientToolBridge.cjs +50 -0
- package/dist/chat/StatewireClientToolBridge.cjs.map +1 -0
- package/dist/chat/StatewireClientToolBridge.js +50 -0
- package/dist/chat/StatewireClientToolBridge.js.map +1 -0
- package/dist/chat/StatewireQueuedMessages.cjs +432 -0
- package/dist/chat/StatewireQueuedMessages.cjs.map +1 -0
- package/dist/chat/StatewireQueuedMessages.d.ts +3 -4
- package/dist/chat/StatewireQueuedMessages.js +432 -0
- package/dist/chat/StatewireQueuedMessages.js.map +1 -0
- package/dist/chat/athena-citation-links.cjs +326 -0
- package/dist/chat/athena-citation-links.cjs.map +1 -0
- package/dist/chat/athena-citation-links.js +326 -0
- package/dist/chat/athena-citation-links.js.map +1 -0
- package/dist/chat/run-activity.cjs +28 -0
- package/dist/chat/run-activity.cjs.map +1 -0
- package/dist/chat/run-activity.js +28 -0
- package/dist/chat/run-activity.js.map +1 -0
- package/dist/chat/statewire-banners.cjs +83 -0
- package/dist/chat/statewire-banners.cjs.map +1 -0
- package/dist/chat/statewire-banners.js +83 -0
- package/dist/chat/statewire-banners.js.map +1 -0
- package/dist/chat/statewire-client-tools.cjs +73 -0
- package/dist/chat/statewire-client-tools.cjs.map +1 -0
- package/dist/chat/statewire-client-tools.js +73 -0
- package/dist/chat/statewire-client-tools.js.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.cjs.map +1 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js +158 -0
- package/dist/chat/super-grouping/CollapsibleGroup.js.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.cjs.map +1 -0
- package/dist/chat/super-grouping/SuperGroupingCard.d.ts +4 -1
- package/dist/chat/super-grouping/SuperGroupingCard.js +361 -0
- package/dist/chat/super-grouping/SuperGroupingCard.js.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.cjs +151 -0
- package/dist/chat/super-grouping/activity-timeline.cjs.map +1 -0
- package/dist/chat/super-grouping/activity-timeline.d.ts +3 -3
- package/dist/chat/super-grouping/activity-timeline.js +151 -0
- package/dist/chat/super-grouping/activity-timeline.js.map +1 -0
- package/dist/chat/super-grouping/grouping-function.cjs +55 -0
- package/dist/chat/super-grouping/grouping-function.cjs.map +1 -0
- package/dist/chat/super-grouping/grouping-function.js +55 -0
- package/dist/chat/super-grouping/grouping-function.js.map +1 -0
- package/dist/chat/super-grouping/index.cjs +26 -0
- package/dist/chat/super-grouping/index.cjs.map +1 -0
- package/dist/chat/super-grouping/index.js +26 -0
- package/dist/chat/super-grouping/index.js.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.cjs +96 -0
- package/dist/chat/super-grouping/toolkit-map.cjs.map +1 -0
- package/dist/chat/super-grouping/toolkit-map.js +96 -0
- package/dist/chat/super-grouping/toolkit-map.js.map +1 -0
- package/dist/chat/tiptap-text.cjs +101 -0
- package/dist/chat/tiptap-text.cjs.map +1 -0
- package/dist/chat/tiptap-text.js +101 -0
- package/dist/chat/tiptap-text.js.map +1 -0
- package/dist/chat/tooltip-icon-button.cjs +32 -0
- package/dist/chat/tooltip-icon-button.cjs.map +1 -0
- package/dist/chat/tooltip-icon-button.js +32 -0
- package/dist/chat/tooltip-icon-button.js.map +1 -0
- package/dist/chat/use-athena-run-live.cjs +23 -0
- package/dist/chat/use-athena-run-live.cjs.map +1 -0
- package/dist/chat/use-athena-run-live.d.ts +10 -0
- package/dist/chat/use-athena-run-live.js +23 -0
- package/dist/chat/use-athena-run-live.js.map +1 -0
- package/dist/chat/use-statewire-approval-request.cjs +46 -0
- package/dist/chat/use-statewire-approval-request.cjs.map +1 -0
- package/dist/chat/use-statewire-approval-request.js +46 -0
- package/dist/chat/use-statewire-approval-request.js.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.cjs +128 -0
- package/dist/chat-ui/auth/sign-in-card.cjs.map +1 -0
- package/dist/chat-ui/auth/sign-in-card.js +128 -0
- package/dist/chat-ui/auth/sign-in-card.js.map +1 -0
- package/dist/chat-ui/composer/composer-action.cjs +11 -0
- package/dist/chat-ui/composer/composer-action.cjs.map +1 -0
- package/dist/chat-ui/composer/composer-action.d.ts +5 -8
- package/dist/chat-ui/composer/composer-action.js +11 -0
- package/dist/chat-ui/composer/composer-action.js.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.cjs.map +1 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js +25 -0
- package/dist/chat-ui/composer/pending-attachment-uploads.js.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs +590 -0
- package/dist/chat-ui/composer/tiptap-composer.cjs.map +1 -0
- package/dist/chat-ui/composer/tiptap-composer.d.ts +44 -7
- package/dist/chat-ui/composer/tiptap-composer.js +590 -0
- package/dist/chat-ui/composer/tiptap-composer.js.map +1 -0
- package/dist/chat-ui/header/chat-header.cjs +33 -0
- package/dist/chat-ui/header/chat-header.cjs.map +1 -0
- package/dist/chat-ui/header/chat-header.js +33 -0
- package/dist/chat-ui/header/chat-header.js.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs +369 -0
- package/dist/chat-ui/header/conversation-history-panel.cjs.map +1 -0
- package/dist/chat-ui/header/conversation-history-panel.js +369 -0
- package/dist/chat-ui/header/conversation-history-panel.js.map +1 -0
- package/dist/chat-ui/index.cjs +139 -0
- package/dist/chat-ui/index.cjs.map +1 -0
- package/dist/chat-ui/index.d.ts +4 -3
- package/dist/chat-ui/index.js +139 -0
- package/dist/chat-ui/index.js.map +1 -0
- package/dist/chat-ui/lib/asset-urls.cjs +18 -0
- package/dist/chat-ui/lib/asset-urls.cjs.map +1 -0
- package/dist/chat-ui/lib/asset-urls.js +18 -0
- package/dist/chat-ui/lib/asset-urls.js.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.cjs +208 -0
- package/dist/chat-ui/mentions/mention-chip.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-chip.js +208 -0
- package/dist/chat-ui/mentions/mention-chip.js.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.cjs +184 -0
- package/dist/chat-ui/mentions/mention-extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/mention-extension.d.ts +24 -2
- package/dist/chat-ui/mentions/mention-extension.js +184 -0
- package/dist/chat-ui/mentions/mention-extension.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js +35 -0
- package/dist/chat-ui/mentions/suggestions/components/get-scope-name.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.d.ts +5 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js +95 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-icon.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js +116 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js +31 -0
- package/dist/chat-ui/mentions/suggestions/components/mention-suggestion-popup.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js +27 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-breadcrumbs.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs +62 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js +62 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-item.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js +63 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-list.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js +11 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-skeleton.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js +33 -0
- package/dist/chat-ui/mentions/suggestions/components/menu-summary.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js +58 -0
- package/dist/chat-ui/mentions/suggestions/components/use-keyboard-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js +81 -0
- package/dist/chat-ui/mentions/suggestions/components/use-menu-navigation.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js +18 -0
- package/dist/chat-ui/mentions/suggestions/components/utils.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs +123 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.d.ts +10 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js +123 -0
- package/dist/chat-ui/mentions/suggestions/data/api-client.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js +37 -0
- package/dist/chat-ui/mentions/suggestions/data/item-cache.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js +134 -0
- package/dist/chat-ui/mentions/suggestions/data/orchestrator.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js +91 -0
- package/dist/chat-ui/mentions/suggestions/data/scope-registry.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js +137 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/asset-type-icons.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.d.ts +16 -1
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js +375 -0
- package/dist/chat-ui/mentions/suggestions/data/sources/index.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/types.d.ts +14 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js +9 -0
- package/dist/chat-ui/mentions/suggestions/data/types.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.d.ts +14 -4
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js +173 -0
- package/dist/chat-ui/mentions/suggestions/data/use-mention-suggestions.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js +45 -0
- package/dist/chat-ui/mentions/suggestions/data/use-menu-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js +43 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/filter-items.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js +14 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/match-query.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js +48 -0
- package/dist/chat-ui/mentions/suggestions/data/utils/score-match.js.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.cjs.map +1 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js +71 -0
- package/dist/chat-ui/mentions/suggestions/mention-suggestions.extension.js.map +1 -0
- package/dist/chat-ui/messages/continue-pill.cjs +54 -0
- package/dist/chat-ui/messages/continue-pill.cjs.map +1 -0
- package/dist/chat-ui/messages/continue-pill.js +54 -0
- package/dist/chat-ui/messages/continue-pill.js.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.cjs +12 -0
- package/dist/chat-ui/messages/message-actions-config.cjs.map +1 -0
- package/dist/chat-ui/messages/message-actions-config.js +12 -0
- package/dist/chat-ui/messages/message-actions-config.js.map +1 -0
- package/dist/chat-ui/messages/message-components.cjs +343 -0
- package/dist/chat-ui/messages/message-components.cjs.map +1 -0
- package/dist/chat-ui/messages/message-components.d.ts +13 -1
- package/dist/chat-ui/messages/message-components.js +343 -0
- package/dist/chat-ui/messages/message-components.js.map +1 -0
- package/dist/chat-ui/messages/running-indicator.cjs +49 -0
- package/dist/chat-ui/messages/running-indicator.cjs.map +1 -0
- package/dist/chat-ui/messages/running-indicator.js +49 -0
- package/dist/chat-ui/messages/running-indicator.js.map +1 -0
- package/dist/chat-ui/messages/runtime-message.cjs +65 -0
- package/dist/chat-ui/messages/runtime-message.cjs.map +1 -0
- package/dist/chat-ui/messages/runtime-message.js +65 -0
- package/dist/chat-ui/messages/runtime-message.js.map +1 -0
- package/dist/{statewire-continue-run-nE9VCKUh.cjs → chat-ui/messages/statewire-continue-run.cjs} +39 -16
- package/dist/chat-ui/messages/statewire-continue-run.cjs.map +1 -0
- package/dist/chat-ui/messages/statewire-continue-run.d.ts +5 -1
- package/dist/{statewire-continue-run-D34gS7_1.js → chat-ui/messages/statewire-continue-run.js} +29 -7
- package/dist/chat-ui/messages/statewire-continue-run.js.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs +61 -0
- package/dist/chat-ui/messages/user-edit-composer.cjs.map +1 -0
- package/dist/chat-ui/messages/user-edit-composer.js +61 -0
- package/dist/chat-ui/messages/user-edit-composer.js.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.cjs.map +1 -0
- package/dist/chat-ui/messages/voice-delegation-card.d.ts +26 -0
- package/dist/chat-ui/messages/voice-delegation-card.js +51 -0
- package/dist/chat-ui/messages/voice-delegation-card.js.map +1 -0
- package/dist/chat-ui/statewire.cjs +39 -0
- package/dist/chat-ui/statewire.cjs.map +1 -0
- package/dist/chat-ui/statewire.js +39 -0
- package/dist/chat-ui/statewire.js.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-composer-dock.js +37 -0
- package/dist/chat-ui/thread/chat-composer-dock.js.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.cjs.map +1 -0
- package/dist/chat-ui/thread/chat-thread-shell.js +102 -0
- package/dist/chat-ui/thread/chat-thread-shell.js.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.cjs.map +1 -0
- package/dist/chat-ui/thread/composer-send-or-stop.d.ts +0 -6
- package/dist/chat-ui/thread/composer-send-or-stop.js +75 -0
- package/dist/chat-ui/thread/composer-send-or-stop.js.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs +134 -0
- package/dist/chat-ui/thread/statewire-history-edge.cjs.map +1 -0
- package/dist/chat-ui/thread/statewire-history-edge.js +134 -0
- package/dist/chat-ui/thread/statewire-history-edge.js.map +1 -0
- package/dist/{collab.cjs → collab/client.cjs} +6 -166
- package/dist/collab/client.cjs.map +1 -0
- package/dist/{collab.js → collab/client.js} +5 -164
- package/dist/collab/client.js.map +1 -0
- package/dist/collab/close-policy.cjs +14 -0
- package/dist/collab/close-policy.cjs.map +1 -0
- package/dist/collab/close-policy.js +14 -0
- package/dist/collab/close-policy.js.map +1 -0
- package/dist/collab/index.cjs +17 -0
- package/dist/collab/index.cjs.map +1 -0
- package/dist/collab/index.js +17 -0
- package/dist/collab/index.js.map +1 -0
- package/dist/collab/mint.cjs +59 -0
- package/dist/collab/mint.cjs.map +1 -0
- package/dist/collab/mint.js +59 -0
- package/dist/collab/mint.js.map +1 -0
- package/dist/collab/react.cjs +58 -0
- package/dist/collab/react.cjs.map +1 -0
- package/dist/collab/react.js +58 -0
- package/dist/collab/react.js.map +1 -0
- package/dist/collab/shape.cjs +45 -0
- package/dist/collab/shape.cjs.map +1 -0
- package/dist/collab/shape.js +45 -0
- package/dist/collab/shape.js.map +1 -0
- package/dist/composer/AttachmentContext.cjs +40 -0
- package/dist/composer/AttachmentContext.cjs.map +1 -0
- package/dist/composer/AttachmentContext.js +40 -0
- package/dist/composer/AttachmentContext.js.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.cjs +39 -0
- package/dist/composer/ComposerAttachmentPreview.cjs.map +1 -0
- package/dist/composer/ComposerAttachmentPreview.js +39 -0
- package/dist/composer/ComposerAttachmentPreview.js.map +1 -0
- package/dist/composer/ComposerDropZone.cjs +61 -0
- package/dist/composer/ComposerDropZone.cjs.map +1 -0
- package/dist/composer/ComposerDropZone.d.ts +1 -1
- package/dist/composer/ComposerDropZone.js +61 -0
- package/dist/composer/ComposerDropZone.js.map +1 -0
- package/dist/composer/ComposerQuotePreview.cjs +42 -0
- package/dist/composer/ComposerQuotePreview.cjs.map +1 -0
- package/dist/composer/ComposerQuotePreview.js +42 -0
- package/dist/composer/ComposerQuotePreview.js.map +1 -0
- package/dist/composer/FileUploadButton.cjs +65 -0
- package/dist/composer/FileUploadButton.cjs.map +1 -0
- package/dist/composer/FileUploadButton.d.ts +1 -1
- package/dist/composer/FileUploadButton.js +65 -0
- package/dist/composer/FileUploadButton.js.map +1 -0
- package/dist/composer/QuoteContext.cjs +68 -0
- package/dist/composer/QuoteContext.cjs.map +1 -0
- package/dist/composer/QuoteContext.js +68 -0
- package/dist/composer/QuoteContext.js.map +1 -0
- package/dist/composer/build-composed-message.cjs +25 -0
- package/dist/composer/build-composed-message.cjs.map +1 -0
- package/dist/composer/build-composed-message.js +25 -0
- package/dist/composer/build-composed-message.js.map +1 -0
- package/dist/composer/clipboard.cjs +62 -0
- package/dist/composer/clipboard.cjs.map +1 -0
- package/dist/composer/clipboard.d.ts +27 -3
- package/dist/composer/clipboard.js +62 -0
- package/dist/composer/clipboard.js.map +1 -0
- package/dist/composer/useAppendToComposer.cjs +21 -0
- package/dist/composer/useAppendToComposer.cjs.map +1 -0
- package/dist/composer/useAppendToComposer.js +21 -0
- package/dist/composer/useAppendToComposer.js.map +1 -0
- package/dist/composer/useAttachFiles.cjs +40 -0
- package/dist/composer/useAttachFiles.cjs.map +1 -0
- package/dist/composer/useAttachFiles.d.ts +24 -0
- package/dist/composer/useAttachFiles.js +40 -0
- package/dist/composer/useAttachFiles.js.map +1 -0
- package/dist/composer/useComposerAttachment.cjs +25 -0
- package/dist/composer/useComposerAttachment.cjs.map +1 -0
- package/dist/composer/useComposerAttachment.js +25 -0
- package/dist/composer/useComposerAttachment.js.map +1 -0
- package/dist/composer/useFileUpload.cjs +123 -0
- package/dist/composer/useFileUpload.cjs.map +1 -0
- package/dist/composer/useFileUpload.js +123 -0
- package/dist/composer/useFileUpload.js.map +1 -0
- package/dist/composer/useSendMessage.cjs +22 -0
- package/dist/composer/useSendMessage.cjs.map +1 -0
- package/dist/composer/useSendMessage.js +22 -0
- package/dist/composer/useSendMessage.js.map +1 -0
- package/dist/diagnostics/athena-diagnostics.cjs +329 -0
- package/dist/diagnostics/athena-diagnostics.cjs.map +1 -0
- package/dist/diagnostics/athena-diagnostics.js +329 -0
- package/dist/diagnostics/athena-diagnostics.js.map +1 -0
- package/dist/diagnostics/errors.cjs +89 -0
- package/dist/diagnostics/errors.cjs.map +1 -0
- package/dist/diagnostics/errors.js +89 -0
- package/dist/diagnostics/errors.js.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.cjs.map +1 -0
- package/dist/diagnostics/useAthenaDiagnostics.js +16 -0
- package/dist/diagnostics/useAthenaDiagnostics.js.map +1 -0
- package/dist/index.cjs +274 -27882
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.js +161 -27759
- package/dist/index.js.map +1 -1
- package/dist/lib/athena-urls.cjs +194 -0
- package/dist/lib/athena-urls.cjs.map +1 -0
- package/dist/lib/athena-urls.d.ts +20 -5
- package/dist/lib/athena-urls.js +194 -0
- package/dist/lib/athena-urls.js.map +1 -0
- package/dist/lib/posthog/before-send.cjs +58 -0
- package/dist/lib/posthog/before-send.cjs.map +1 -0
- package/dist/lib/posthog/before-send.js +58 -0
- package/dist/lib/posthog/before-send.js.map +1 -0
- package/dist/lib/posthog/capture-gate.cjs +322 -0
- package/dist/lib/posthog/capture-gate.cjs.map +1 -0
- package/dist/lib/posthog/capture-gate.js +322 -0
- package/dist/lib/posthog/capture-gate.js.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs +163 -0
- package/dist/lib/posthog/wrap-posthog-client.cjs.map +1 -0
- package/dist/lib/posthog/wrap-posthog-client.js +163 -0
- package/dist/lib/posthog/wrap-posthog-client.js.map +1 -0
- package/dist/lib/utils.cjs +12 -0
- package/dist/lib/utils.cjs.map +1 -0
- package/dist/lib/utils.js +9 -0
- package/dist/lib/utils.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js +77 -0
- package/dist/node_modules/@assistant-ui/react-langchain/dist/converter.js.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.cjs.map +1 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js +181 -0
- package/dist/node_modules/@assistant-ui/react-langgraph/dist/convertLangChainMessages.js.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js +19 -0
- package/dist/packages/agent-runtime/src/asset-attachment.js.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/auth-denial.js +28 -0
- package/dist/packages/agent-runtime/src/auth-denial.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs +270 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js +270 -0
- package/dist/packages/agent-runtime/src/client-tool-bridge.js.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs +137 -0
- package/dist/packages/agent-runtime/src/client-tools.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/client-tools.js +137 -0
- package/dist/packages/agent-runtime/src/client-tools.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-index.js +80 -0
- package/dist/packages/agent-runtime/src/conversation-index.js.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs +86 -0
- package/dist/packages/agent-runtime/src/conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/conversation-list.js +86 -0
- package/dist/packages/agent-runtime/src/conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js +55 -0
- package/dist/packages/agent-runtime/src/deep-agent-transport-recipe.js.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs +89 -0
- package/dist/packages/agent-runtime/src/edit-command.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/edit-command.js +89 -0
- package/dist/packages/agent-runtime/src/edit-command.js.map +1 -0
- package/dist/packages/agent-runtime/src/errors.cjs +95 -0
- package/dist/packages/agent-runtime/src/errors.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/errors.js +95 -0
- package/dist/packages/agent-runtime/src/errors.js.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js +236 -0
- package/dist/packages/agent-runtime/src/generated/runconfig-contract.js.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs +117 -0
- package/dist/packages/agent-runtime/src/interrupts.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/interrupts.js +117 -0
- package/dist/packages/agent-runtime/src/interrupts.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.cjs +31 -0
- package/dist/packages/agent-runtime/src/message-author.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-author.js +31 -0
- package/dist/packages/agent-runtime/src/message-author.js.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.cjs +85 -0
- package/dist/packages/agent-runtime/src/message-window.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/message-window.js +85 -0
- package/dist/packages/agent-runtime/src/message-window.js.map +1 -0
- package/dist/packages/agent-runtime/src/messages.cjs +433 -0
- package/dist/packages/agent-runtime/src/messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/messages.js +433 -0
- package/dist/packages/agent-runtime/src/messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.cjs +13 -0
- package/dist/packages/agent-runtime/src/model-context.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/model-context.js +13 -0
- package/dist/packages/agent-runtime/src/model-context.js.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js +17 -0
- package/dist/packages/agent-runtime/src/optimistic-content.js.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.cjs +33 -0
- package/dist/packages/agent-runtime/src/protocol.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/protocol.js +33 -0
- package/dist/packages/agent-runtime/src/protocol.js.map +1 -0
- package/dist/packages/agent-runtime/src/queue.cjs +67 -0
- package/dist/packages/agent-runtime/src/queue.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/queue.js +67 -0
- package/dist/packages/agent-runtime/src/queue.js.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs +47 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js +47 -0
- package/dist/packages/agent-runtime/src/quota-safe-local-storage-session.js.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js +187 -0
- package/dist/packages/agent-runtime/src/runtime-messages.js.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/send-recovery.js +128 -0
- package/dist/packages/agent-runtime/src/send-recovery.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js +249 -0
- package/dist/packages/agent-runtime/src/statewire-attach-observer.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-state.js +16 -0
- package/dist/packages/agent-runtime/src/statewire-state.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js +41 -0
- package/dist/packages/agent-runtime/src/statewire-suspended.js.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs +6 -0
- package/dist/packages/agent-runtime/src/statewire-transport.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js +6 -0
- package/dist/packages/agent-runtime/src/statewire-transport.js.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js +214 -0
- package/dist/packages/agent-runtime/src/streaming-markdown.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-extras.js +38 -0
- package/dist/packages/agent-runtime/src/thread-extras.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js +90 -0
- package/dist/packages/agent-runtime/src/thread-snapshot-cache.js.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs +49 -0
- package/dist/packages/agent-runtime/src/thread-status.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/thread-status.js +49 -0
- package/dist/packages/agent-runtime/src/thread-status.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs +1802 -0
- package/dist/packages/agent-runtime/src/tool-metadata.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js +1802 -0
- package/dist/packages/agent-runtime/src/tool-metadata.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js +46 -0
- package/dist/packages/agent-runtime/src/tool-outputs.js.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs +151 -0
- package/dist/packages/agent-runtime/src/tool-result.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/tool-result.js +151 -0
- package/dist/packages/agent-runtime/src/tool-result.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js +139 -0
- package/dist/packages/agent-runtime/src/use-conversation-list.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs +28 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js +28 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-edit-submit.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs +138 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js +138 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-runtime.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs +387 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js +387 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-thread.js.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js +133 -0
- package/dist/packages/agent-runtime/src/use-deep-agent-window-sync.js.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.cjs.map +1 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js +37 -0
- package/dist/packages/agent-runtime/src/voice-presentation.js.map +1 -0
- package/dist/packages/react/package.json.cjs +9 -0
- package/dist/packages/react/package.json.cjs.map +1 -0
- package/dist/packages/react/package.json.js +9 -0
- package/dist/packages/react/package.json.js.map +1 -0
- package/dist/{AthenaContext-B1QMhIP-.cjs → provider/AthenaContext.cjs} +5 -4
- package/dist/provider/AthenaContext.cjs.map +1 -0
- package/dist/{AthenaContext-MOslgOmE.js → provider/AthenaContext.js} +3 -3
- package/dist/provider/AthenaContext.js.map +1 -0
- package/dist/provider/AthenaProvider.cjs +403 -0
- package/dist/provider/AthenaProvider.cjs.map +1 -0
- package/dist/provider/AthenaProvider.js +403 -0
- package/dist/provider/AthenaProvider.js.map +1 -0
- package/dist/provider/PostHogProvider.cjs +81 -0
- package/dist/provider/PostHogProvider.cjs.map +1 -0
- package/dist/provider/PostHogProvider.js +59 -0
- package/dist/provider/PostHogProvider.js.map +1 -0
- package/dist/provider/config.d.ts +8 -7
- package/dist/provider/statewire-lifecycle-context.cjs +10 -0
- package/dist/provider/statewire-lifecycle-context.cjs.map +1 -0
- package/dist/provider/statewire-lifecycle-context.js +10 -0
- package/dist/provider/statewire-lifecycle-context.js.map +1 -0
- package/dist/provider/statewire-window-context.cjs +10 -0
- package/dist/provider/statewire-window-context.cjs.map +1 -0
- package/dist/provider/statewire-window-context.js +10 -0
- package/dist/provider/statewire-window-context.js.map +1 -0
- package/dist/runtime/auth.cjs +309 -0
- package/dist/runtime/auth.cjs.map +1 -0
- package/dist/runtime/auth.d.ts +19 -18
- package/dist/runtime/auth.js +309 -0
- package/dist/runtime/auth.js.map +1 -0
- package/dist/runtime/statewire-auth-headers.cjs +18 -0
- package/dist/runtime/statewire-auth-headers.cjs.map +1 -0
- package/dist/runtime/statewire-auth-headers.js +18 -0
- package/dist/runtime/statewire-auth-headers.js.map +1 -0
- package/dist/runtime/statewire-lifecycle.cjs +67 -0
- package/dist/runtime/statewire-lifecycle.cjs.map +1 -0
- package/dist/runtime/statewire-lifecycle.js +67 -0
- package/dist/runtime/statewire-lifecycle.js.map +1 -0
- package/dist/runtime/statewire-run-config.cjs +68 -0
- package/dist/runtime/statewire-run-config.cjs.map +1 -0
- package/dist/runtime/statewire-run-config.js +68 -0
- package/dist/runtime/statewire-run-config.js.map +1 -0
- package/dist/runtime/statewire-session-key.cjs +11 -0
- package/dist/runtime/statewire-session-key.cjs.map +1 -0
- package/dist/runtime/statewire-session-key.js +11 -0
- package/dist/runtime/statewire-session-key.js.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs +179 -0
- package/dist/runtime/useAthenaStatewireRuntime.cjs.map +1 -0
- package/dist/runtime/useAthenaStatewireRuntime.js +180 -0
- package/dist/runtime/useAthenaStatewireRuntime.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/theme/index.cjs +182 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.js +182 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/threads/ThreadList.cjs +55 -0
- package/dist/threads/ThreadList.cjs.map +1 -0
- package/dist/threads/ThreadList.js +55 -0
- package/dist/threads/ThreadList.js.map +1 -0
- package/dist/threads/api.cjs +208 -0
- package/dist/threads/api.cjs.map +1 -0
- package/dist/threads/api.js +208 -0
- package/dist/threads/api.js.map +1 -0
- package/dist/threads/conversation-list-fetcher.cjs +70 -0
- package/dist/threads/conversation-list-fetcher.cjs.map +1 -0
- package/dist/threads/conversation-list-fetcher.js +70 -0
- package/dist/threads/conversation-list-fetcher.js.map +1 -0
- package/dist/threads/mint-thread-id.cjs +7 -0
- package/dist/threads/mint-thread-id.cjs.map +1 -0
- package/dist/threads/mint-thread-id.js +7 -0
- package/dist/threads/mint-thread-id.js.map +1 -0
- package/dist/threads/statewire-thread-list.cjs +231 -0
- package/dist/threads/statewire-thread-list.cjs.map +1 -0
- package/dist/threads/statewire-thread-list.js +231 -0
- package/dist/threads/statewire-thread-list.js.map +1 -0
- package/dist/threads/thread-id-context.cjs +22 -0
- package/dist/threads/thread-id-context.cjs.map +1 -0
- package/dist/threads/thread-id-context.d.ts +9 -0
- package/dist/threads/thread-id-context.js +22 -0
- package/dist/threads/thread-id-context.js.map +1 -0
- package/dist/threads/title.cjs +95 -0
- package/dist/threads/title.cjs.map +1 -0
- package/dist/threads/title.js +95 -0
- package/dist/threads/title.js.map +1 -0
- package/dist/threads/use-rest-conversation-history.cjs +79 -0
- package/dist/threads/use-rest-conversation-history.cjs.map +1 -0
- package/dist/threads/use-rest-conversation-history.js +79 -0
- package/dist/threads/use-rest-conversation-history.js.map +1 -0
- package/dist/threads/use-statewire-conversation-history.cjs +243 -0
- package/dist/threads/use-statewire-conversation-history.cjs.map +1 -0
- package/dist/threads/use-statewire-conversation-history.js +243 -0
- package/dist/threads/use-statewire-conversation-history.js.map +1 -0
- package/dist/threads/useAthenaThreadManager.cjs +24 -0
- package/dist/threads/useAthenaThreadManager.cjs.map +1 -0
- package/dist/threads/useAthenaThreadManager.js +24 -0
- package/dist/threads/useAthenaThreadManager.js.map +1 -0
- package/dist/toolkits/index.cjs +279 -0
- package/dist/toolkits/index.cjs.map +1 -0
- package/dist/toolkits/index.js +279 -0
- package/dist/toolkits/index.js.map +1 -0
- package/dist/tools/NestedPtcMessages.cjs +46 -0
- package/dist/tools/NestedPtcMessages.cjs.map +1 -0
- package/dist/tools/NestedPtcMessages.js +46 -0
- package/dist/tools/NestedPtcMessages.js.map +1 -0
- package/dist/tools/append-document-tool-ui.cjs +145 -0
- package/dist/tools/append-document-tool-ui.cjs.map +1 -0
- package/dist/tools/append-document-tool-ui.js +145 -0
- package/dist/tools/append-document-tool-ui.js.map +1 -0
- package/dist/tools/asset-utils.cjs +16 -0
- package/dist/tools/asset-utils.cjs.map +1 -0
- package/dist/tools/asset-utils.js +16 -0
- package/dist/tools/asset-utils.js.map +1 -0
- package/dist/tools/auto-open-tools.cjs +121 -0
- package/dist/tools/auto-open-tools.cjs.map +1 -0
- package/dist/tools/auto-open-tools.js +121 -0
- package/dist/tools/auto-open-tools.js.map +1 -0
- package/dist/tools/file-tool-uis.cjs +108 -0
- package/dist/tools/file-tool-uis.cjs.map +1 -0
- package/dist/tools/file-tool-uis.js +108 -0
- package/dist/tools/file-tool-uis.js.map +1 -0
- package/dist/tools/index.cjs +56 -0
- package/dist/tools/index.cjs.map +1 -0
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.js +56 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/misc-tool-uis.cjs +54 -0
- package/dist/tools/misc-tool-uis.cjs.map +1 -0
- package/dist/{misc-tool-uis-gAiQw0Yl.js → tools/misc-tool-uis.js} +17 -7
- package/dist/tools/misc-tool-uis.js.map +1 -0
- package/dist/tools/primitives.cjs +166 -0
- package/dist/tools/primitives.cjs.map +1 -0
- package/dist/tools/primitives.js +166 -0
- package/dist/tools/primitives.js.map +1 -0
- package/dist/tools/read-asset-tool-ui.cjs +284 -0
- package/dist/tools/read-asset-tool-ui.cjs.map +1 -0
- package/dist/tools/read-asset-tool-ui.js +284 -0
- package/dist/tools/read-asset-tool-ui.js.map +1 -0
- package/dist/tools/todo-plan-store.cjs +88 -0
- package/dist/tools/todo-plan-store.cjs.map +1 -0
- package/dist/tools/todo-plan-store.js +88 -0
- package/dist/tools/todo-plan-store.js.map +1 -0
- package/dist/tools/tool-fallback.cjs +667 -0
- package/dist/tools/tool-fallback.cjs.map +1 -0
- package/dist/tools/tool-fallback.js +667 -0
- package/dist/tools/tool-fallback.js.map +1 -0
- package/dist/tools/tool-icons.cjs +61 -0
- package/dist/tools/tool-icons.cjs.map +1 -0
- package/dist/tools/tool-icons.js +61 -0
- package/dist/tools/tool-icons.js.map +1 -0
- package/dist/tools/tool-uis.cjs +3049 -0
- package/dist/tools/tool-uis.cjs.map +1 -0
- package/dist/tools/tool-uis.js +3049 -0
- package/dist/tools/tool-uis.js.map +1 -0
- package/dist/tools/voice-update-tool-ui.cjs +89 -0
- package/dist/tools/voice-update-tool-ui.cjs.map +1 -0
- package/dist/tools/voice-update-tool-ui.d.ts +27 -0
- package/dist/tools/voice-update-tool-ui.js +89 -0
- package/dist/tools/voice-update-tool-ui.js.map +1 -0
- package/dist/tools/write-todos-tool-ui.cjs +270 -0
- package/dist/tools/write-todos-tool-ui.cjs.map +1 -0
- package/dist/tools/write-todos-tool-ui.js +270 -0
- package/dist/tools/write-todos-tool-ui.js.map +1 -0
- package/dist/ui/button.cjs +57 -0
- package/dist/ui/button.cjs.map +1 -0
- package/dist/ui/button.js +57 -0
- package/dist/ui/button.js.map +1 -0
- package/dist/ui/collapsible.cjs +17 -0
- package/dist/ui/collapsible.cjs.map +1 -0
- package/dist/ui/collapsible.js +17 -0
- package/dist/ui/collapsible.js.map +1 -0
- package/dist/ui/tooltip.cjs +48 -0
- package/dist/ui/tooltip.cjs.map +1 -0
- package/dist/ui/tooltip.js +48 -0
- package/dist/ui/tooltip.js.map +1 -0
- package/dist/version.cjs +6 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +18 -20
- package/dist/AthenaAuthContext-B3AwLA5Z.cjs.map +0 -1
- package/dist/AthenaAuthContext-DQsdayH2.js.map +0 -1
- package/dist/AthenaContext-B1QMhIP-.cjs.map +0 -1
- package/dist/AthenaContext-MOslgOmE.js.map +0 -1
- package/dist/SuperGroupingCard-BsWbHyV_.js +0 -795
- package/dist/SuperGroupingCard-BsWbHyV_.js.map +0 -1
- package/dist/SuperGroupingCard-CRRFUgjN.cjs +0 -794
- package/dist/SuperGroupingCard-CRRFUgjN.cjs.map +0 -1
- package/dist/auth.cjs.map +0 -1
- package/dist/auth.js.map +0 -1
- package/dist/chat/ComposerEditorContext.d.ts +0 -36
- package/dist/chat/tiptap-composer.d.ts +0 -7
- package/dist/chat-ui-statewire.cjs +0 -25
- package/dist/chat-ui-statewire.cjs.map +0 -1
- package/dist/chat-ui-statewire.js +0 -25
- package/dist/chat-ui-statewire.js.map +0 -1
- package/dist/chat-ui.cjs +0 -2484
- package/dist/chat-ui.cjs.map +0 -1
- package/dist/chat-ui.js +0 -2486
- package/dist/chat-ui.js.map +0 -1
- package/dist/collab.cjs.map +0 -1
- package/dist/collab.js.map +0 -1
- package/dist/mentions/composer-keybinds.d.ts +0 -5
- package/dist/mentions/mention-extension.d.ts +0 -6
- package/dist/mentions/mention-icons.d.ts +0 -4
- package/dist/mentions/mention-node-view.d.ts +0 -2
- package/dist/mentions/mention-suggestion-list.d.ts +0 -14
- package/dist/mentions/mention-suggestion-popup.d.ts +0 -15
- package/dist/mentions/mention-suggestions-extension.d.ts +0 -11
- package/dist/mentions/mention-types.d.ts +0 -21
- package/dist/mentions/mention-utils.d.ts +0 -23
- package/dist/mentions/use-mention-suggestions.d.ts +0 -29
- package/dist/misc-tool-uis-B2e0Okkn.cjs +0 -43
- package/dist/misc-tool-uis-B2e0Okkn.cjs.map +0 -1
- package/dist/misc-tool-uis-gAiQw0Yl.js.map +0 -1
- package/dist/statewire-continue-run-D34gS7_1.js.map +0 -1
- package/dist/statewire-continue-run-nE9VCKUh.cjs.map +0 -1
- package/dist/statewire-history-edge-C8uyTEjX.cjs +0 -1711
- package/dist/statewire-history-edge-C8uyTEjX.cjs.map +0 -1
- package/dist/statewire-history-edge-CPohUKMt.js +0 -1712
- package/dist/statewire-history-edge-CPohUKMt.js.map +0 -1
- package/dist/super-grouping.cjs +0 -22
- package/dist/super-grouping.cjs.map +0 -1
- package/dist/super-grouping.js +0 -22
- package/dist/super-grouping.js.map +0 -1
- package/dist/tool-fallback-DkQ3DLkn.js +0 -4281
- package/dist/tool-fallback-DkQ3DLkn.js.map +0 -1
- package/dist/tool-fallback-kfhpJQZa.cjs +0 -4297
- package/dist/tool-fallback-kfhpJQZa.cjs.map +0 -1
- package/dist/tools.cjs +0 -41
- package/dist/tools.cjs.map +0 -1
- package/dist/tools.js +0 -41
- package/dist/tools.js.map +0 -1
- package/dist/trash-2-B5OaNAL7.cjs +0 -5096
- package/dist/trash-2-B5OaNAL7.cjs.map +0 -1
- package/dist/trash-2-CCwSURL-.js +0 -5081
- package/dist/trash-2-CCwSURL-.js.map +0 -1
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs +0 -32397
- package/dist/use-rest-conversation-history-Cm8qMRxp.cjs.map +0 -1
- package/dist/use-rest-conversation-history-veDZS-oL.js +0 -32361
- package/dist/use-rest-conversation-history-veDZS-oL.js.map +0 -1
- package/dist/wrench-BEf72cyP.cjs +0 -417
- package/dist/wrench-BEf72cyP.cjs.map +0 -1
- package/dist/wrench-CbrOlVYm.js +0 -418
- package/dist/wrench-CbrOlVYm.js.map +0 -1
- package/dist/x-Dfd2NzK0.cjs +0 -42
- package/dist/x-Dfd2NzK0.cjs.map +0 -1
- package/dist/x-_DntAa_a.js +0 -43
- package/dist/x-_DntAa_a.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trash-2-CCwSURL-.js","sources":["../../agent-runtime/src/generated/runconfig-contract.ts","../../agent-runtime/src/statewire-suspended.ts","../../agent-runtime/src/statewire-state.ts","../../agent-runtime/src/message-author.ts","../../agent-runtime/src/message-window.ts","../../agent-runtime/src/optimistic-content.ts","../../agent-runtime/src/messages.ts","../../agent-runtime/src/quota-safe-local-storage-session.ts","../../agent-runtime/src/statewire-attach-observer.ts","../../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../../node_modules/cnfast/dist/index.mjs","../../../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js","../../../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js","../../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js","../../../node_modules/lucide-react/dist/esm/Icon.js","../../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../../node_modules/lucide-react/dist/esm/icons/circle-alert.js","../../../node_modules/lucide-react/dist/esm/icons/pause.js","../../../node_modules/lucide-react/dist/esm/icons/play.js","../../../node_modules/lucide-react/dist/esm/icons/trash-2.js"],"sourcesContent":["// GENERATED FILE — DO NOT EDIT BY HAND.\n//\n// Source of truth (agora):\n// agora/agora/graphs/athena_deep_agent/run_config.py (_PARSED_CUSTOM_KEYS / _COMPANION_CUSTOM_KEYS)\n// agora/agora/graphs/athena_deep_agent/session_asset.py (KNOWN_START_CHANNELS / DEEP_AGENT_RUNTIME_MARKER)\n// agora/agora/graphs/athena_deep_agent/client_tools.py (client-tool interrupt + result-envelope literals)\n// agora/agora/graphs/athena_deep_agent/protocol_version.py (wire-contract version negotiation)\n// agora/agora/graphs/athena_deep_agent/message_window.py (windowed hello negotiation + history commands)\n//\n// Regenerate:\n// cd agora && mise exec -- infisical run --command 'uv run python scripts/export_runconfig_contract.py'\n//\n// CI verifies this file matches the Python source (agora-check runs the\n// exporter with --check), so hand edits and un-regenerated key changes fail.\n\n/** `runConfig.custom` keys parsed by agora's `parse_deep_agent_run_config`. */\nexport const RUN_CONFIG_PARSED_CUSTOM_KEYS = [\n \"agent_catalog_asset_ids\",\n \"async_subagents\",\n \"catalog_asset_ids\",\n \"coding_worker_asset_id\",\n \"coding_workers\",\n \"compiled_subagents\",\n \"declined_toolkit_ids\",\n \"drive_mounts\",\n \"enable_interpreter\",\n \"enable_persistent_fs\",\n \"enable_sandbox\",\n \"enable_skills\",\n \"enabled_tools\",\n \"environment\",\n \"environment_asset_id\",\n \"environment_id\",\n \"environment_name\",\n \"excluded_middleware\",\n \"excluded_tools\",\n \"extra_middleware\",\n \"include_citation_instructions\",\n \"interpreter_max_ptc_calls\",\n \"interpreter_mode\",\n \"interpreter_ptc\",\n \"interpreter_ptc_exclusive\",\n \"interpreter_runtime\",\n \"interpreter_subagents\",\n \"interpreter_timeout_seconds\",\n \"interrupt_on\",\n \"knowledge_base\",\n \"mcp_server_configs\",\n \"mcp_servers\",\n \"memory\",\n \"permissions\",\n \"project_id\",\n \"recursion_limit\",\n \"run_label\",\n \"sandbox_runtime\",\n \"secret_asset_ids\",\n \"session_vm_retention\",\n \"skill_asset_ids\",\n \"skills\",\n \"subagents\",\n \"system_prompt\",\n \"tool_description_overrides\",\n \"voice_update_handle\",\n \"workbench\",\n] as const;\n\n/** `runConfig.custom` keys consumed by the surrounding deep-agent request machinery rather than the capability parser. */\nexport const RUN_CONFIG_COMPANION_CUSTOM_KEYS = [\n \"agent\",\n \"allowed_tab_ids\",\n \"app_id\",\n \"channel\",\n \"client_tools\",\n \"collab_agent_id\",\n \"collab_channel_id\",\n \"custom_tool_configs\",\n \"deterministic\",\n \"device_id\",\n \"dry_run\",\n \"enabled_toolkits\",\n \"frontend_available\",\n \"github_identity\",\n \"max_tokens\",\n \"middleware\",\n \"model\",\n \"muses_enabled\",\n \"muses_recall_enabled\",\n \"office_context\",\n \"panel_config\",\n \"runtime\",\n \"session_id\",\n \"session_origin_kind\",\n \"session_tab_id\",\n \"skip_title_generation\",\n \"source_aop_id\",\n \"start_channel\",\n \"structured_output\",\n \"temperature\",\n \"tool_limit_override\",\n \"trigger_type\",\n \"workspace_id\",\n] as const;\n\n/** Every `runConfig.custom` key some deep-agent request consumer reads. A key outside this set is invisible to the run and trips agora's unknown-key telemetry. */\nexport const RUN_CONFIG_CUSTOM_KEYS = [\n \"agent\",\n \"agent_catalog_asset_ids\",\n \"allowed_tab_ids\",\n \"app_id\",\n \"async_subagents\",\n \"catalog_asset_ids\",\n \"channel\",\n \"client_tools\",\n \"coding_worker_asset_id\",\n \"coding_workers\",\n \"collab_agent_id\",\n \"collab_channel_id\",\n \"compiled_subagents\",\n \"custom_tool_configs\",\n \"declined_toolkit_ids\",\n \"deterministic\",\n \"device_id\",\n \"drive_mounts\",\n \"dry_run\",\n \"enable_interpreter\",\n \"enable_persistent_fs\",\n \"enable_sandbox\",\n \"enable_skills\",\n \"enabled_toolkits\",\n \"enabled_tools\",\n \"environment\",\n \"environment_asset_id\",\n \"environment_id\",\n \"environment_name\",\n \"excluded_middleware\",\n \"excluded_tools\",\n \"extra_middleware\",\n \"frontend_available\",\n \"github_identity\",\n \"include_citation_instructions\",\n \"interpreter_max_ptc_calls\",\n \"interpreter_mode\",\n \"interpreter_ptc\",\n \"interpreter_ptc_exclusive\",\n \"interpreter_runtime\",\n \"interpreter_subagents\",\n \"interpreter_timeout_seconds\",\n \"interrupt_on\",\n \"knowledge_base\",\n \"max_tokens\",\n \"mcp_server_configs\",\n \"mcp_servers\",\n \"memory\",\n \"middleware\",\n \"model\",\n \"muses_enabled\",\n \"muses_recall_enabled\",\n \"office_context\",\n \"panel_config\",\n \"permissions\",\n \"project_id\",\n \"recursion_limit\",\n \"run_label\",\n \"runtime\",\n \"sandbox_runtime\",\n \"secret_asset_ids\",\n \"session_id\",\n \"session_origin_kind\",\n \"session_tab_id\",\n \"session_vm_retention\",\n \"skill_asset_ids\",\n \"skills\",\n \"skip_title_generation\",\n \"source_aop_id\",\n \"start_channel\",\n \"structured_output\",\n \"subagents\",\n \"system_prompt\",\n \"temperature\",\n \"tool_description_overrides\",\n \"tool_limit_override\",\n \"trigger_type\",\n \"voice_update_handle\",\n \"workbench\",\n \"workspace_id\",\n] as const;\n\nexport type RunConfigCustomKey = (typeof RUN_CONFIG_CUSTOM_KEYS)[number];\n\n/** Fast membership checks for builder/test assertions. */\nexport const RUN_CONFIG_CUSTOM_KEY_SET: ReadonlySet<string> = new Set(\n RUN_CONFIG_CUSTOM_KEYS,\n);\n\n/** `start_channel` values the session substrate stamps as provenance; anything else clamps to \"web\". */\nexport const KNOWN_START_CHANNELS = [\n \"api\",\n \"chrome_extension\",\n \"cli\",\n \"comment_agent\",\n \"default_voice\",\n \"email\",\n \"mobile_app\",\n \"office_addin\",\n \"orchestration\",\n \"programmatic\",\n \"slack\",\n \"sms\",\n \"task\",\n \"teams\",\n \"voice\",\n \"web\",\n] as const;\n\nexport type KnownStartChannel = (typeof KNOWN_START_CHANNELS)[number];\n\n/** Fast membership checks for builder/test assertions. */\nexport const KNOWN_START_CHANNEL_SET: ReadonlySet<string> = new Set(\n KNOWN_START_CHANNELS,\n);\n\n/** `runConfig.custom.runtime` marker selecting the deep-agent runtime. */\nexport const DEEP_AGENT_RUNTIME_MARKER = \"athena_deep_agent\";\n\n/** `source`/`type` stamped on client-tool interrupt payloads by agora. */\nexport const CLIENT_TOOL_INTERRUPT_SOURCE = \"client_tool\";\n\n/** `status` literals of the result envelope a client resumes a parked client-tool call with. */\nexport const CLIENT_TOOL_RESULT_STATUSES = [\"error\", \"success\"] as const;\n\nexport type ClientToolResultStatus =\n (typeof CLIENT_TOOL_RESULT_STATUSES)[number];\n\nexport const CLIENT_TOOL_RESULT_STATUS_SUCCESS = \"success\";\n\nexport const CLIENT_TOOL_RESULT_STATUS_ERROR = \"error\";\n\n/**\n * Result envelope a client resumes a parked client-tool call with,\n * keyed by interrupt id:\n * `{ client_tool_results: { <interrupt_id>: <envelope> } }`.\n * Agora relays the envelope to the model verbatim.\n */\nexport type ClientToolResultEnvelopeContract =\n | { status: typeof CLIENT_TOOL_RESULT_STATUS_SUCCESS; result: unknown }\n | { status: typeof CLIENT_TOOL_RESULT_STATUS_ERROR; error: string };\n\n/**\n * The deep-agent wire-contract version this client build speaks —\n * declared on every attach and compared against the server's\n * advertised `minClientVersion` (the `protocol` state lane).\n */\nexport const DEEP_AGENT_PROTOCOL_VERSION = 1;\n\n/** Attach header carrying the client's declared contract version. */\nexport const DEEP_AGENT_PROTOCOL_VERSION_HEADER =\n \"x-athena-deep-agent-protocol-version\";\n\n/** Replicated-state key of the server-advertised version lane. */\nexport const DEEP_AGENT_PROTOCOL_STATE_KEY = \"protocol\";\n\n/**\n * Attach header opting into a windowed hello: its value is the window\n * size the client wants (the host clamps it). Undeclared clients keep\n * receiving the full snapshot.\n */\nexport const DEEP_AGENT_MESSAGE_WINDOW_HEADER = \"x-athena-deep-agent-window\";\n\n/** Attach header opting a windowed client back into the provenance blobs. */\nexport const DEEP_AGENT_PROVENANCE_HEADER = \"x-athena-deep-agent-provenance\";\n\n/** The `DEEP_AGENT_PROVENANCE_HEADER` value that keeps full provenance. */\nexport const DEEP_AGENT_PROVENANCE_FULL = \"full\";\n\n/** Window size a declaring client asks for by default. */\nexport const DEEP_AGENT_DEFAULT_MESSAGE_WINDOW = 40;\n\n/** Host clamp bounds on a declared window size. */\nexport const DEEP_AGENT_MIN_MESSAGE_WINDOW = 8;\n\nexport const DEEP_AGENT_MAX_MESSAGE_WINDOW = 200;\n\n/** Upper bound on the `limit` of one `history/load`. */\nexport const DEEP_AGENT_HISTORY_LOAD_MAX_LIMIT = 200;\n\n/** Replicated-state key of the window lane a windowed hello carries. */\nexport const DEEP_AGENT_MESSAGES_WINDOW_STATE_KEY = \"messagesWindow\";\n\n/** Command loading older messages into a windowed client's view. */\nexport const DEEP_AGENT_HISTORY_LOAD_COMMAND = \"history/load\";\n\n/** Command returning a truncated tool output whole. */\nexport const DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND = \"history/tool_output\";\n\n/** Wire key marking a tool message whose content was truncated. */\nexport const DEEP_AGENT_TRUNCATED_CONTENT_KEY = \"athena_content_truncated\";\n","import { resource } from '@assistant-ui/tap';\nimport type { ResourceElement } from '@assistant-ui/tap';\nimport { useRef, useState } from 'react';\nimport type { Statewire, StatewireClient } from 'statewire';\nimport { StatewireSendError } from 'statewire';\n\nexport interface SuspendedStatewireOptions {\n /** Why the transport is parked; surfaced as the connection message. */\n message: string;\n /**\n * Invoked when a surface asks the parked connection to `reconnect()` (the\n * connection indicator's retry affordance). Hosts that park for a reason\n * only they can clear (e.g. the user has no workspace) omit it.\n */\n onReconnectRequested?: (() => void) | undefined;\n}\n\nconst suspendedCommands = <TCommands extends Statewire.Commands>(): Statewire.CommandsProxy<TCommands> =>\n new Proxy({} as Statewire.CommandsProxy<TCommands>, {\n get: (_target, method) => {\n if (typeof method !== 'string') return undefined;\n // Settle like a locally-dead channel: hosts already classify\n // non-\"server\" causes as channel teardown (quiet log, no user error).\n return () =>\n Promise.reject(new StatewireSendError({ fate: 'aborted', cause: 'stream-gone' }));\n },\n });\n\nconst useSuspendedStatewire = <TCommands extends Statewire.Commands = Statewire.Commands>(\n options: SuspendedStatewireOptions\n): Statewire<undefined, TCommands> => {\n const latest = useRef(options);\n latest.current = options;\n // `state` stays undefined so the thread keeps serving its `initialState`\n // (the same contract a live transport has before its attach snapshot).\n const [value] = useState((): Statewire<undefined, TCommands> => {\n const connection: StatewireClient.Connection = {\n status: 'disconnected',\n reason: 'deferred',\n get message() {\n return latest.current.message;\n },\n reconnect: () => latest.current.onReconnectRequested?.(),\n degraded: false,\n };\n return {\n state: undefined,\n commands: suspendedCommands<TCommands>(),\n connection,\n isBusy: false,\n setContext: () => {},\n };\n });\n return value;\n};\n\n/**\n * A statewire transport that never dials.\n *\n * Swapped in for the live WS/SSE transport when attaching is known to be\n * pointless — the host gates it (no workspace) or repeated `unauthorized`\n * denials parked it — so the thread element stays mounted for assistant-ui\n * consumers while the reconnect loop stops entirely.\n */\nexport const StatewireSuspended = resource(useSuspendedStatewire) as <\n TCommands extends Statewire.Commands = Statewire.Commands,\n>(\n options: SuspendedStatewireOptions\n) => ResourceElement<Statewire<undefined, TCommands>>;\n","import type { DeepAgentStreamValues } from './types';\n\n/**\n * Typed pre-stream default for the deep-agent statewire state.\n *\n * The statewire client's replicated state is `undefined` (and can transiently\n * be `null`/non-object on a replay boundary) until an attach snapshot applies —\n * `@assistant-ui/react-statewire` derives its `\"loading\"` thread status from\n * exactly that absence, so the raw wire value must keep carrying it. Consumers\n * of OUR conversion layer, however, should never have to null-check the whole\n * state: they read through {@link readDeepAgentStreamValues}, which substitutes\n * this constant while the state is not hydrated.\n *\n * Module-level constant on purpose: selector fallbacks must be referentially\n * stable (`useStatewireState` compares selector results with `Object.is`, so a\n * fresh `[]`/`{}` per call re-renders forever). Frozen so a consumer cannot\n * mutate the shared default.\n */\nconst preStreamState: DeepAgentStreamValues = { messages: [], todos: [] };\nObject.freeze(preStreamState.messages);\nObject.freeze(preStreamState.todos);\nexport const DEEP_AGENT_PRE_STREAM_STATE: DeepAgentStreamValues = Object.freeze(preStreamState);\n\n/**\n * Read the deep-agent stream values off a raw statewire state, substituting\n * {@link DEEP_AGENT_PRE_STREAM_STATE} while the state is not an object yet\n * (pre-attach, or a replay boundary republishing `undefined`).\n *\n * Identity-preserving: a hydrated state returns the same object reference it\n * was given and the pre-stream branch always returns the same module constant,\n * so this is safe to call inside `useStatewireState` selectors.\n */\nexport function readDeepAgentStreamValues(state: unknown): DeepAgentStreamValues {\n return typeof state === 'object' && state !== null\n ? (state as DeepAgentStreamValues)\n : DEEP_AGENT_PRE_STREAM_STATE;\n}\n\n/**\n * Whether a state (raw, or already normalized through\n * {@link readDeepAgentStreamValues}) carries a real wire payload. `false`\n * exactly while the pre-stream default stands in — the explicit signal for\n * code that must distinguish \"empty thread\" from \"no snapshot yet\".\n */\nexport function isDeepAgentStateHydrated(state: unknown): boolean {\n return typeof state === 'object' && state !== null && state !== DEEP_AGENT_PRE_STREAM_STATE;\n}\n","import type { StatewireThread } from '@assistant-ui/react-statewire';\n\n/**\n * `metadata.custom` key carrying who sent a human turn.\n *\n * The backend stamps it on every persisted human turn from the authenticated\n * sender (`agora/.../message_author.py`), and on the host `meta` of every\n * run-lane entry it admits (`statewire_host._op_meta`), so a queued or\n * just-sent bubble is attributable before the turn is materialised — on every\n * client on the thread, not only the sender's.\n */\nexport const ATHENA_MESSAGE_AUTHOR_KEY = 'author';\n\n/** Identity of the human who sent a message, as the backend stamps it. */\nexport interface DeepAgentMessageAuthor {\n user_id: string;\n name: string | null;\n email: string | null;\n avatar_url: string | null;\n}\n\nconst optionalString = (value: unknown): string | null =>\n typeof value === 'string' && value.length > 0 ? value : null;\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\n/**\n * Parse an author envelope off a wire value.\n *\n * Tolerates absent optional fields (a principal without a name or picture);\n * an envelope without a string `user_id` is no author at all — an\n * identity-less stamp would only mislead the gate that decides whether a\n * transcript has several human participants.\n */\nexport function readMessageAuthor(value: unknown): DeepAgentMessageAuthor | null {\n if (!isRecord(value)) return null;\n const userId = value.user_id;\n if (typeof userId !== 'string' || userId.length === 0) return null;\n return {\n user_id: userId,\n name: optionalString(value.name),\n email: optionalString(value.email),\n avatar_url: optionalString(value.avatar_url),\n };\n}\n\n/** Field-wise equality, so hosts can hold a stable identity across renders. */\nexport function isSameMessageAuthor(\n a: DeepAgentMessageAuthor | null,\n b: DeepAgentMessageAuthor | null\n): boolean {\n if (a === b) return true;\n if (a === null || b === null) return false;\n return (\n a.user_id === b.user_id &&\n a.name === b.name &&\n a.email === b.email &&\n a.avatar_url === b.avatar_url\n );\n}\n\n/**\n * Who sent a run-lane entry, for its optimistic bubble.\n *\n * Only two sources are trusted. The host stamps `meta` on every entry it\n * admits, so `meta.author` is the server's word on the submitter and is what\n * every OTHER client on the thread renders. An entry with no `meta` at all is\n * this client's own optimistic fold — the send is still in flight — so it is\n * the viewer's (`selfAuthor`), matching what the host stamps on\n * acknowledgment. The entry's client-supplied `metadata` is never consulted:\n * a client that could set it could attribute its words to another\n * collaborator. A host-stamped entry without an author (a host predating the\n * stamp) yields none, so the surface falls back to its own attribution rule.\n */\nexport function laneEntryAuthor(\n entry: StatewireThread.RunsQueueEntry,\n selfAuthor: DeepAgentMessageAuthor | null | undefined\n): DeepAgentMessageAuthor | null {\n if (entry.meta === undefined) return selfAuthor ?? null;\n if (!isRecord(entry.meta)) return null;\n return readMessageAuthor(entry.meta[ATHENA_MESSAGE_AUTHOR_KEY]);\n}\n","import {\n DEEP_AGENT_DEFAULT_MESSAGE_WINDOW,\n DEEP_AGENT_HISTORY_LOAD_COMMAND,\n DEEP_AGENT_HISTORY_LOAD_MAX_LIMIT,\n DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND,\n DEEP_AGENT_MAX_MESSAGE_WINDOW,\n DEEP_AGENT_MESSAGE_WINDOW_HEADER,\n DEEP_AGENT_MESSAGES_WINDOW_STATE_KEY,\n DEEP_AGENT_MIN_MESSAGE_WINDOW,\n DEEP_AGENT_PROVENANCE_FULL,\n DEEP_AGENT_PROVENANCE_HEADER,\n DEEP_AGENT_TRUNCATED_CONTENT_KEY,\n} from './generated/runconfig-contract';\n\n/**\n * The windowed hello — the client half of agora's\n * `agora/graphs/athena_deep_agent/message_window.py`.\n *\n * A surface that declares a message window on its attach headers\n * ({@link withDeclaredMessageWindow}) receives a hello carrying only the last\n * N messages plus the `messagesWindow` lane, and its op stream re-addressed\n * to that window by the host — so `state.messages` is always exactly\n * `server.messages[start:]` and the ordinary converter renders it unchanged.\n * Older ranges arrive through `history/load` ({@link buildHistoryLoadCommand})\n * as ops for this client alone; a truncated tool output comes back whole\n * through `history/tool_output` ({@link buildToolOutputCommand}).\n *\n * Undeclared surfaces (no header) are untouched: full snapshot, no lane.\n * Skew-tolerant both ways — an old server ignores the header and advertises\n * no lane (read as \"everything is loaded\"), a malformed lane reads as absent.\n */\nexport interface DeepAgentMessagesWindow {\n /** Index in the server transcript of the client's first loaded message. */\n start: number;\n /** Server transcript length. */\n total: number;\n /** Whether older messages exist that the client has not loaded (`start > 0`). */\n truncated: boolean;\n /** The window size the host clamped the declaration to. */\n size: number;\n /**\n * Id of the message just before the window (`null` at the beginning): the\n * host parent of the first loaded message, so an edit or reload at the\n * window edge can assert its `runAnchorMessageId` without loading first.\n */\n anchorBefore: string | null;\n}\n\nconst isIndex = (value: unknown): value is number =>\n typeof value === 'number' && Number.isInteger(value) && value >= 0;\n\n/**\n * The window lane off a raw statewire state, or `null` when the wire is not\n * windowed (an undeclared attach, a pre-window server, pre-attach) or the lane\n * is malformed (tolerated as absent — never thrown on).\n */\nexport function readDeepAgentMessagesWindow(state: unknown): DeepAgentMessagesWindow | null {\n if (typeof state !== 'object' || state === null) return null;\n const lane = (state as Record<string, unknown>)[DEEP_AGENT_MESSAGES_WINDOW_STATE_KEY];\n if (typeof lane !== 'object' || lane === null) return null;\n const { start, total, truncated, size, anchorBefore } = lane as Record<string, unknown>;\n if (!isIndex(start) || !isIndex(total) || !isIndex(size) || typeof truncated !== 'boolean') {\n return null;\n }\n if (anchorBefore !== null && typeof anchorBefore !== 'string') return null;\n return { start, total, truncated, size, anchorBefore };\n}\n\n/** How many messages older than the loaded window the server still holds. */\nexport function olderMessageCount(window: DeepAgentMessagesWindow | null): number {\n return window === null ? 0 : window.start;\n}\n\n/** What a surface declares on its attach: a window size and the provenance mode. */\nexport interface DeepAgentMessageWindowDeclaration {\n /** Messages the hello should carry (the host clamps to its bounds). */\n size?: number;\n /** `'full'` keeps the model-provenance blobs on the wire; default strips them. */\n provenance?: 'full' | 'compact';\n}\n\nconst clampWindowSize = (size: number): number =>\n Math.max(\n DEEP_AGENT_MIN_MESSAGE_WINDOW,\n Math.min(DEEP_AGENT_MAX_MESSAGE_WINDOW, Math.trunc(size))\n );\n\n/**\n * Attach headers with a message window declared. Applied by\n * `useDeepAgentThread` when a surface passes `messageWindow`; an explicit\n * entry (tests, forced overrides) wins.\n */\nexport function withDeclaredMessageWindow(\n headers: Record<string, string>,\n declaration: DeepAgentMessageWindowDeclaration = {}\n): Record<string, string> {\n const declared: Record<string, string> = { ...headers };\n if (!(DEEP_AGENT_MESSAGE_WINDOW_HEADER in declared)) {\n const size = declaration.size ?? DEEP_AGENT_DEFAULT_MESSAGE_WINDOW;\n declared[DEEP_AGENT_MESSAGE_WINDOW_HEADER] = String(\n Number.isFinite(size) ? clampWindowSize(size) : DEEP_AGENT_DEFAULT_MESSAGE_WINDOW\n );\n }\n if (declaration.provenance === 'full' && !(DEEP_AGENT_PROVENANCE_HEADER in declared)) {\n declared[DEEP_AGENT_PROVENANCE_HEADER] = DEEP_AGENT_PROVENANCE_FULL;\n }\n return declared;\n}\n\n/**\n * The windowed wire's read commands on the statewire command union, so\n * `sendCommand({ type: 'history/load', … })` typechecks wherever the deep-agent\n * host is driven (`DeepAgentThread.history_load` / `history_tool_output`, both\n * attach-ACL reads). The augmentation is part of this module so every surface\n * that imports the builders gets the typed commands with them.\n */\ndeclare module '@assistant-ui/core' {\n namespace Assistant {\n interface Commands {\n /** Prepend older messages to this client's windowed view. */\n historyLoad: HistoryLoadCommand;\n /** A tool output the windowed wire carried cut, whole. */\n historyToolOutput: ToolOutputCommand;\n }\n }\n}\n\n/** The `history/load` command: older messages prepended to this client's view. */\nexport interface HistoryLoadCommand {\n readonly type: typeof DEEP_AGENT_HISTORY_LOAD_COMMAND;\n /** The `start` this load extends — the host answers `stale` for any other. */\n readonly beforeIndex: number;\n readonly limit: number;\n}\n\n/**\n * The next page of older history for `window`, or `null` when the beginning of\n * the transcript is already loaded. `limit` defaults to the window size and is\n * capped at the host's bound.\n */\nexport function buildHistoryLoadCommand({\n window,\n limit,\n}: {\n window: DeepAgentMessagesWindow;\n limit?: number;\n}): HistoryLoadCommand | null {\n if (window.start <= 0) return null;\n const requested = limit ?? window.size;\n return {\n type: DEEP_AGENT_HISTORY_LOAD_COMMAND,\n beforeIndex: window.start,\n limit: Math.max(1, Math.min(DEEP_AGENT_HISTORY_LOAD_MAX_LIMIT, Math.trunc(requested))),\n };\n}\n\n/** The host's answer to `history/load`. */\nexport interface HistoryLoadResult {\n start: number;\n total: number;\n loaded: number;\n /** The load named a `start` the client no longer held; nothing was loaded. */\n stale: boolean;\n}\n\nexport function readHistoryLoadResult(payload: unknown): HistoryLoadResult | null {\n if (typeof payload !== 'object' || payload === null) return null;\n const { start, total, loaded, stale } = payload as Record<string, unknown>;\n if (!isIndex(start) || !isIndex(total) || !isIndex(loaded)) return null;\n return { start, total, loaded, stale: stale === true };\n}\n\n/** The `history/tool_output` command: a truncated tool output, whole. */\nexport interface ToolOutputCommand {\n readonly type: typeof DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND;\n readonly messageId: string;\n}\n\nexport function buildToolOutputCommand({ messageId }: { messageId: string }): ToolOutputCommand {\n return { type: DEEP_AGENT_HISTORY_TOOL_OUTPUT_COMMAND, messageId };\n}\n\nexport interface ToolOutputResult {\n messageId: string;\n content: unknown;\n}\n\nexport function readToolOutputResult(payload: unknown): ToolOutputResult | null {\n if (typeof payload !== 'object' || payload === null) return null;\n const { messageId, content } = payload as Record<string, unknown>;\n if (typeof messageId !== 'string' || !messageId) return null;\n return { messageId, content };\n}\n\n/** The wire marker on a tool message whose content the host cut. */\nexport interface TruncatedToolContent {\n /** Length of the full output, in characters. */\n chars: number;\n}\n\n/**\n * The truncation marker off a raw wire message, or `null` when the message's\n * content is whole. Pure and selector-safe on the marker object.\n */\nexport function readTruncatedToolContent(message: unknown): TruncatedToolContent | null {\n if (typeof message !== 'object' || message === null) return null;\n const marker = (message as Record<string, unknown>)[DEEP_AGENT_TRUNCATED_CONTENT_KEY];\n if (typeof marker !== 'object' || marker === null) return null;\n const chars = (marker as Record<string, unknown>).chars;\n return isIndex(chars) ? { chars } : null;\n}\n\n/**\n * `artifact` key the shared converter lifts a truncated tool output's marker\n * into (with the tool message id), so a tool card can ask for the full output\n * — the converter joins the ToolMessage into its tool-call part and would\n * otherwise drop the wire marker.\n */\nexport const ATHENA_TRUNCATED_TOOL_OUTPUT_ARTIFACT_KEY = '_athena_content_truncated';\n\nexport interface TruncatedToolOutputArtifact extends TruncatedToolContent {\n /** The tool message to name in `history/tool_output`. */\n messageId: string;\n}\n\n/**\n * The lifted truncation marker off a tool-call part's `artifact`, or `null`.\n */\nexport function readTruncatedToolOutputArtifact(\n artifact: unknown\n): TruncatedToolOutputArtifact | null {\n if (typeof artifact !== 'object' || artifact === null) return null;\n const lifted = (artifact as Record<string, unknown>)[ATHENA_TRUNCATED_TOOL_OUTPUT_ARTIFACT_KEY];\n if (typeof lifted !== 'object' || lifted === null) return null;\n const { chars, messageId } = lifted as Record<string, unknown>;\n if (!isIndex(chars) || typeof messageId !== 'string' || !messageId) return null;\n return { chars, messageId };\n}\n","import type { LangChainMessage } from '@assistant-ui/react-langgraph';\n\n/** Parts of a pending user message the optimistic bubble can render. */\nexport type OptimisticContentPart =\n | { type: 'text'; text: string }\n | { type: 'image'; image: string };\n\ntype HumanMessageContent = Extract<LangChainMessage, { type: 'human' }>['content'];\n\n/**\n * Content for the optimistic human bubble built from a pending send. Image\n * attachment parts become LangChain `image_url` blocks so the just-sent\n * message renders its images immediately instead of waiting for the backend\n * echo (which only carries images after server-side mention extraction).\n * Text-only sends keep the plain joined string.\n */\nexport const buildOptimisticHumanContent = (\n parts: readonly OptimisticContentPart[]\n): HumanMessageContent => {\n const imageParts = parts.filter(\n (part): part is Extract<OptimisticContentPart, { type: 'image' }> => part.type === 'image'\n );\n const text = parts\n .filter((part): part is Extract<OptimisticContentPart, { type: 'text' }> => part.type === 'text')\n .map((part) => part.text)\n .join('\\n');\n if (imageParts.length === 0) {\n return text;\n }\n return [\n { type: 'text' as const, text },\n ...imageParts.map((part) => ({ type: 'image_url' as const, image_url: { url: part.image } })),\n ];\n};\n","import { getExternalStoreMessages } from '@assistant-ui/core';\nimport { createMessageConverter } from '@assistant-ui/core/react';\nimport { convertLangChainMessages, type LangChainMessage } from '@assistant-ui/react-langgraph';\nimport { runsMaterialize, type StatewireThread } from '@assistant-ui/react-statewire';\nimport {\n ATHENA_MESSAGE_AUTHOR_KEY,\n type DeepAgentMessageAuthor,\n laneEntryAuthor,\n} from './message-author';\nimport { DEEP_AGENT_TRUNCATED_CONTENT_KEY } from './generated/runconfig-contract';\nimport {\n ATHENA_TRUNCATED_TOOL_OUTPUT_ARTIFACT_KEY,\n readTruncatedToolContent,\n} from './message-window';\nimport { buildOptimisticHumanContent, type OptimisticContentPart } from './optimistic-content';\nimport { readDeepAgentStreamValues } from './statewire-state';\nimport type { DeepAgentToolOutputStore } from './tool-outputs';\nimport type {\n DeepAgentLaneProjection,\n DeepAgentStreamValues,\n LangGraphState,\n} from './types';\n\n/**\n * Native message converter for the deep-agent runtime.\n *\n * This is the entire \"conversion\" layer: assistant-ui's shipped\n * `convertLangChainMessages` (from `@assistant-ui/react-langgraph`) wired\n * through `createMessageConverter`. No bespoke per-message mapping — the agora\n * `athena_deep_agent` graph streams standard LangChain messages via\n * `append_langgraph_event`, and the shipped converter renders them.\n */\nexport const messageConverter = createMessageConverter(convertLangChainMessages);\n\nconst wirePartsToOptimisticParts = (\n parts: StatewireThread.UserMessage['parts']\n): OptimisticContentPart[] =>\n parts.flatMap((part): OptimisticContentPart[] => {\n if (part.type === 'text') return [part];\n // Image attachments travel as `file` parts on the run/* commands; map\n // them back to `image` parts so the optimistic bubble renders them.\n if (part.mediaType.startsWith('image/')) return [{ type: 'image', image: part.url }];\n return [];\n });\n\n/**\n * `metadata.custom` flag marking a bubble that is a projection of a run-lane\n * entry — a message the server holds and has NOT dispatched yet.\n *\n * The lane is server-owned and replicated to every client on the thread, so\n * an item queued on one surface projects onto all of them. Surfaces without a\n * queue panel must therefore be able to tell a queued projection apart from a\n * submitted turn, or a message another device queued renders as if this device\n * had already sent it.\n *\n * `convertLangChainMessages` exposes `additional_kwargs.metadata` (and nothing\n * else) as the thread message's `metadata.custom`.\n */\nexport const ATHENA_QUEUED_LANE_KEY = 'athena_queued_lane';\n\n/**\n * Whether a thread message's `metadata.custom` marks it as an undispatched\n * lane projection. Returns a primitive, so it is safe to use directly as a\n * `useAuiState` selector.\n */\nexport function isQueuedLaneMessage(custom: Record<string, unknown> | undefined): boolean {\n return custom?.[ATHENA_QUEUED_LANE_KEY] === true;\n}\n\n/**\n * Project one run-lane entry into the optimistic human message shape.\n *\n * `queued` marks entries still waiting in a lane; a dispatched entry becomes an\n * ordinary submitted turn and carries no marker. Either way the bubble carries\n * its author (see {@link laneEntryAuthor}) under the same `metadata.custom`\n * key the backend stamps on the persisted turn, so the optimistic and\n * authoritative copies of one send render identically — and a second poster's\n * avatar shows on their own send without waiting for the acknowledgment.\n */\nconst laneEntryMessage = ({\n entry,\n queued,\n selfAuthor,\n}: {\n entry: StatewireThread.RunsQueueEntry;\n queued: boolean;\n selfAuthor: DeepAgentMessageAuthor | null;\n}): LangChainMessage => {\n const author = laneEntryAuthor(entry, selfAuthor);\n const metadata: Record<string, unknown> = {\n ...(queued ? { [ATHENA_QUEUED_LANE_KEY]: true } : {}),\n ...(author ? { [ATHENA_MESSAGE_AUTHOR_KEY]: author } : {}),\n };\n return {\n id: entry.id,\n type: 'human',\n content: buildOptimisticHumanContent(wirePartsToOptimisticParts(entry.parts)),\n ...(Object.keys(metadata).length > 0 ? { additional_kwargs: { metadata } } : {}),\n };\n};\n\nexport interface DeepAgentMaterializeOptions {\n /** The viewer, stamped onto this client's own not-yet-acknowledged sends. */\n selfAuthor?: DeepAgentMessageAuthor | null;\n}\n\n/**\n * Materialize fold for the statewire path: makes the server's dispatch record\n * concrete in the LangGraph state itself, so direct state reads see dispatched\n * messages and the lib's post-converter dispatch merge stays off.\n */\nexport const createDeepAgentMaterialize =\n ({ selfAuthor = null }: DeepAgentMaterializeOptions = {}) =>\n (draft: DeepAgentStreamValues): void => {\n runsMaterialize(draft, {\n append: (message) => {\n (draft.messages ??= []).push(\n laneEntryMessage({ entry: message, queued: false, selfAuthor })\n );\n },\n rollback: (to) => {\n if (to === null) {\n draft.messages = [];\n return;\n }\n const messages = draft.messages ?? [];\n const keepIndex = messages.findIndex((message) => message.id === to);\n // Unresolved rollback anchor: fail OPEN with the full history (mirrors the edit fold).\n if (keepIndex !== -1) messages.splice(keepIndex + 1);\n },\n });\n };\n\n/** The materialize fold without a viewer identity (surfaces that pass none). */\nexport const deepAgentMaterialize = createDeepAgentMaterialize();\n\n/**\n * Project run lanes into human messages for the converter tail, so a queued or\n * steered item stays visible below the pending-assistant placeholder until its\n * dispatch. Surfaces with a queue panel project only the steer lane\n * (`'steer-only'`); surfaces without one project both lanes (`'both'`).\n *\n * Every projected entry carries {@link ATHENA_QUEUED_LANE_KEY} so a surface\n * without a queue panel can render it as queued rather than as a submitted\n * turn.\n */\nexport const laneTailMessages = (\n state: unknown,\n laneProjection: DeepAgentLaneProjection = 'both',\n selfAuthor: DeepAgentMessageAuthor | null = null\n): LangChainMessage[] => {\n const run = (state as DeepAgentStreamValues | null)?.runs?.[0];\n if (!run) return [];\n const entries =\n laneProjection === 'steer-only' ? run.steerQueue : [...run.queue, ...run.steerQueue];\n return entries.map((entry) => laneEntryMessage({ entry, queued: true, selfAuthor }));\n};\n\n/** Stable id for the derived running-assistant placeholder. */\nexport const PENDING_ASSISTANT_MESSAGE_ID = '__athena_deep_agent_pending_assistant__';\n\n/**\n * Append an empty assistant turn while a run is in flight and the visible\n * history does not already end in one, so the thread shows its \"Thinking…\"\n * status line from the moment a message is submitted.\n *\n * Mirrors `hasUpcomingMessage` in assistant-ui's legacy external-store runtime,\n * which synthesized this placeholder itself. `StatewireThread` renders the\n * converter's message list verbatim, so the placeholder has to come from here —\n * derived from the replicated run status on every render (never written into\n * transport state) so it cannot outlive the run, and carrying a stable id so\n * the streaming bubble's identity does not churn when the real assistant\n * message arrives.\n *\n * `tool` messages convert into assistant turns too, so a mid-run tool result\n * must not produce a second placeholder row.\n */\nexport function withPendingAssistantMessage(\n messages: LangChainMessage[],\n isRunning: boolean\n): LangChainMessage[] {\n if (!isRunning) return messages;\n const lastType = messages.at(-1)?.type;\n if (lastType === 'ai' || lastType === 'tool') return messages;\n // Empty-array content plus an explicit running status — the thinking shimmer\n // keys on `status running && zero content parts`, and the explicit status\n // keeps it pulsing when lane entries render below (the last-message auto\n // status would demote a mid-list placeholder to an empty complete bubble).\n // Never persisted, so it cannot outlive the run.\n return [\n ...messages,\n {\n type: 'ai',\n content: [],\n id: PENDING_ASSISTANT_MESSAGE_ID,\n status: { type: 'running' },\n } satisfies LangChainMessage,\n ];\n}\n\n/** Stable id for the synthetic assistant turn that carries a failure when the run produced none. */\nconst RUN_ERROR_SYNTHETIC_AI_ID = '__athena_deep_agent_run_error__';\n\n/**\n * Surface a run failure the base-correct way: stamp `status: { type:'incomplete',\n * reason:'error', error }` onto the assistant turn so `<Thread/>` renders it via\n * `ErrorPrimitive`. This is the core runtime's model (see `useLanggraphRuntime`\n * `onError`) — NOT a fabricated `⚠️ The run failed` assistant text message, and\n * NOT a magic-string contract shared with the agora backend.\n *\n * Stamps a trailing assistant message; if the visible history does not already\n * end with an assistant turn, appends a synthetic empty assistant turn with a\n * STABLE id so it never churns across renders. A `null` error is a no-op. The\n * shipped `convertLangChainMessages` converter passes `message.status` through.\n */\nexport function applyRunErrorStatus(\n messages: LangChainMessage[],\n errorMessage: string | null\n): LangChainMessage[] {\n if (errorMessage === null) return messages;\n const status = { type: 'incomplete', reason: 'error', error: errorMessage } as const;\n const lastMessage = messages.at(-1);\n if (lastMessage?.type !== 'ai') {\n return [\n ...messages,\n { type: 'ai', content: '', id: RUN_ERROR_SYNTHETIC_AI_ID, status } satisfies LangChainMessage,\n ];\n }\n return [...messages.slice(0, -1), { ...lastMessage, status }];\n}\n\n/**\n * `additional_kwargs` flag the backend stamps on run-lifecycle marker messages\n * (agora `athena_deep_agent/run_markers.py`) — e.g. the \"⏹️ Run stopped by\n * user.\" message persisted when a run is cancelled.\n */\nexport const ATHENA_RUN_MARKER_KEY = 'athena_run_marker';\n\n/** The {@link ATHENA_RUN_MARKER_KEY} value for a user-cancelled run. */\nexport const ATHENA_RUN_MARKER_CANCELLED = 'cancelled';\n\n/**\n * `additional_kwargs` key carrying the stop source behind a cancellation\n * marker (agora `stop_signals.py`: `user_stop`, `send_now`, `transport_cancel`,\n * `unattributed`).\n */\nexport const ATHENA_RUN_MARKER_SOURCE_KEY = 'athena_run_marker_source';\n\n/** The stop source for a \"Send now\" promotion pre-empting the live run. */\nexport const ATHENA_STOP_SOURCE_SEND_NOW = 'send_now';\n\n/** The stop source for a pod-drain pause (server update), not a user stop. */\nexport const ATHENA_STOP_SOURCE_POD_DRAIN = 'pod_drain';\n\n/**\n * The {@link ATHENA_RUN_MARKER_KEY} value for a failed run (graph error,\n * including the `GraphRecursionError` \"tool call limit was reached\" case).\n * The marker message's text content carries the user-facing failure copy.\n */\nexport const ATHENA_RUN_MARKER_FAILED = 'failed';\n\n/**\n * `additional_kwargs` key carrying the canonical reason a run ended (agora\n * `athena_deep_agent/termination.py`): `user_stop`, `recursion_limit`,\n * `duplicate_call_guard`, `step_budget`, `ended_after_tools`, `model_refusal`,\n * `completed`, …\n * Stamped on run-lifecycle markers and on handoff messages.\n */\nexport const ATHENA_TERMINATION_REASON_KEY = 'athena_termination_reason';\n\n/**\n * `additional_kwargs` flag on the closing message the runtime's **handoff\n * turn** wrote (one tools-disabled model call made when a guard or the step\n * budget ends the run). The message text is the agent's closing summary; the\n * flag lets clients frame it as a runtime ending rather than a normal reply.\n */\nexport const ATHENA_HANDOFF_KEY = 'athena_handoff';\n\n/**\n * Read a run-lifecycle marker out of a thread message's **bound source\n * messages**, bypassing the converter's metadata join entirely.\n *\n * Why this exists: assistant-ui chunks consecutive assistant/tool messages\n * into ONE `ThreadMessage`, and the upstream join copies `metadata.custom`\n * only from the FIRST assistant message of the chunk\n * (`external-message-converter.ts`: the merge sits inside\n * `if (assistantMessage.content.length === 0)`). A failure marker appended\n * after the assistant's own turn is therefore never the first message in its\n * chunk, so `message.metadata.custom.athena_run_marker` is silently dropped\n * and the whole-message gate can't fire.\n *\n * `getExternalStoreMessages` returns the raw LangChain messages bound to the\n * joined thread message, so the marker is found wherever it sits in the chunk.\n * Returns the marker value plus its text content (the user-facing copy).\n */\nexport interface RunMarkerInfo {\n marker: string;\n /** The stop source stamped by the backend, when the marker carries one. */\n source: string | undefined;\n /** The marker message's text — the user-facing copy. */\n text: string | undefined;\n /**\n * True when the marker is the ONLY source message behind this thread message,\n * i.e. it owns the whole row (a cancelled run drops its partial turn, so its\n * marker stands alone).\n *\n * False when the chunk also holds the assistant's own work. Replacing the row\n * in that case would hide completed prose and tool cards — the marker must be\n * styled in place instead.\n */\n isSoleSourceMessage: boolean;\n}\n\nexport function readRunMarkerFromSourceMessages(\n message: Parameters<typeof getExternalStoreMessages>[0] & {\n metadata?: { custom?: Record<string, unknown> | undefined } | undefined;\n content?: unknown;\n }\n): RunMarkerInfo | undefined {\n const sources = getExternalStoreMessages<LangChainMessage>(message);\n for (const source of sources) {\n if (source?.type !== 'ai') continue;\n const kwargs = source.additional_kwargs as Record<string, unknown> | undefined;\n const marker = kwargs?.[ATHENA_RUN_MARKER_KEY];\n if (typeof marker !== 'string') continue;\n const markerSource = kwargs?.[ATHENA_RUN_MARKER_SOURCE_KEY];\n return {\n marker,\n source: typeof markerSource === 'string' ? markerSource : undefined,\n text: typeof source.content === 'string' ? source.content : undefined,\n isSoleSourceMessage: sources.length === 1,\n };\n }\n // Fallback for surfaces whose messages carry no bound source messages (or a\n // converter that already merged the flag): read the joined metadata. Without\n // sources to count, a single text part is the best available \"marker owns the\n // row\" signal.\n const joined = message.metadata?.custom?.[ATHENA_RUN_MARKER_KEY];\n if (typeof joined !== 'string') return undefined;\n const joinedSource = message.metadata?.custom?.[ATHENA_RUN_MARKER_SOURCE_KEY];\n const parts = message.content;\n return {\n marker: joined,\n source: typeof joinedSource === 'string' ? joinedSource : undefined,\n text: undefined,\n isSoleSourceMessage: Array.isArray(parts) ? parts.length <= 1 : true,\n };\n}\n\n/**\n * The marker value when the marker is the SOLE source message behind a thread\n * message (it owns the whole row), else `undefined`.\n *\n * Returns a primitive so it is safe to use directly as a `useAuiState`\n * selector: `readRunMarkerFromSourceMessages` builds a fresh object on every\n * call, and selector snapshots are compared with `Object.is` — returning that\n * object from a selector makes `getSnapshot` unstable and loops the render.\n */\nexport function readSoleRunMarker(\n message: Parameters<typeof readRunMarkerFromSourceMessages>[0]\n): string | undefined {\n const found = readRunMarkerFromSourceMessages(message);\n return found?.isSoleSourceMessage ? found.marker : undefined;\n}\n\n/**\n * Whether a run marker renders nothing: a `send_now` promotion cancels the\n * live run as plumbing, not as a user-visible stop, so its cancellation\n * marker stays in the data for provenance but paints no divider.\n */\nexport function isSilentRunMarker(found: RunMarkerInfo): boolean {\n return (\n found.marker === ATHENA_RUN_MARKER_CANCELLED && found.source === ATHENA_STOP_SOURCE_SEND_NOW\n );\n}\n\n/**\n * Whether a cancellation marker records a pod-drain pause (server update)\n * rather than a stop the user asked for — rendered with distinct \"paused by a\n * server update\" copy instead of the \"Conversation stopped\" pill.\n */\nexport function isDrainRunMarker(found: RunMarkerInfo): boolean {\n return (\n found.marker === ATHENA_RUN_MARKER_CANCELLED && found.source === ATHENA_STOP_SOURCE_POD_DRAIN\n );\n}\n\n/**\n * Surface the backend's top-level `additional_kwargs.athena_run_marker` flag\n * where the shipped converter can see it.\n *\n * `convertLangChainMessages` exposes ONLY `additional_kwargs.metadata` as the\n * thread message's `metadata.custom`; every other `additional_kwargs` key is\n * dropped. Marker messages persisted before the backend mirrored the flag into\n * `metadata` carry it top-level only, so this lift keeps those threads styling\n * correctly. Non-marker messages pass through with their identity unchanged,\n * and already-mirrored markers are left as-is (idempotent).\n */\nexport function liftRunMarkerIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'ai') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const marker = kwargs?.[ATHENA_RUN_MARKER_KEY];\n if (typeof marker !== 'string') return message;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (metadata[ATHENA_RUN_MARKER_KEY] === marker) return message;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: { ...metadata, [ATHENA_RUN_MARKER_KEY]: marker },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror the termination reason and handoff flag into the converter's metadata\n * channel. The backend dual-writes both (top-level + `metadata`), so this lift\n * is the back-compat path for messages persisted before the mirror existed and\n * for any emitter that only stamps the top-level key. Idempotent; identity for\n * messages without the keys.\n */\nexport function liftTerminationIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'ai') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const reason = kwargs?.[ATHENA_TERMINATION_REASON_KEY];\n const handoff = kwargs?.[ATHENA_HANDOFF_KEY];\n const hasReason = typeof reason === 'string';\n const hasHandoff = handoff === true;\n if (!hasReason && !hasHandoff) return message;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n const reasonMirrored = !hasReason || metadata[ATHENA_TERMINATION_REASON_KEY] === reason;\n const handoffMirrored = !hasHandoff || metadata[ATHENA_HANDOFF_KEY] === true;\n if (reasonMirrored && handoffMirrored) return message;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: {\n ...metadata,\n ...(hasReason ? { [ATHENA_TERMINATION_REASON_KEY]: reason } : {}),\n ...(hasHandoff ? { [ATHENA_HANDOFF_KEY]: true } : {}),\n },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror the producing model into the converter's metadata channel. Wire AI\n * messages are full LangChain dumps whose `response_metadata` reports the model\n * that generated them (`model_name` / `model`), but the shipped converter maps\n * only `additional_kwargs.metadata` into `metadata.custom` — so without this\n * lift a surface can only show the CURRENT run config's model, mislabeling\n * earlier messages after a mid-thread model switch. A model already present in\n * the metadata channel (backend-stamped provenance) wins; no-ops are identity.\n */\nexport function liftModelIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'ai') return message;\n const responseMetadata = (\n message as { response_metadata?: { model_name?: unknown; model?: unknown } }\n ).response_metadata;\n let model: string | undefined;\n if (typeof responseMetadata?.model_name === 'string' && responseMetadata.model_name) {\n model = responseMetadata.model_name;\n } else if (typeof responseMetadata?.model === 'string' && responseMetadata.model) {\n model = responseMetadata.model;\n }\n if (!model) return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (typeof metadata.model === 'string' && metadata.model) return message;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: { ...metadata, model },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror a per-message conversation-stats snapshot into the converter's\n * metadata channel. Backends stamp the snapshot at the legacy location —\n * top-level `additional_kwargs.conversation_stats` (the deep-agent stats\n * middleware and the legacy agent node both write it there) — but the shipped\n * converter maps only `additional_kwargs.metadata` into `metadata.custom`, so\n * without this lift the model badge can never show a message's OWN context and\n * falls back to thread-level live numbers. A snapshot already present in the\n * metadata channel wins; no-ops are identity.\n */\nexport function liftConversationStatsIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'ai') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const stats = kwargs?.conversation_stats;\n if (typeof stats !== 'object' || stats === null) return message;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (typeof metadata.conversation_stats === 'object' && metadata.conversation_stats !== null) {\n return message;\n }\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: { ...metadata, conversation_stats: stats },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror the compaction boundary flag into the converter's metadata channel.\n * A manual `/compact` persists its summary as a human message tagged with\n * top-level `additional_kwargs.compaction_start` (plus `_created_at` for the\n * divider timestamp) — the same location the legacy runtime used — but the\n * shipped converter maps only `additional_kwargs.metadata` into\n * `metadata.custom`, so without this lift the transcript's\n * \"Previous conversation summarized\" divider can never render. A flag already\n * present in the metadata channel wins; no-ops are identity.\n */\nexport function liftCompactionBoundaryIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'human') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n if (kwargs?.compaction_start !== true) return message;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (metadata.compaction_start === true) return message;\n const createdAt = kwargs?._created_at;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: {\n ...metadata,\n compaction_start: true,\n ...(typeof createdAt === 'string' ? { _created_at: createdAt } : {}),\n },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror the handoff summary flag into the converter's metadata channel.\n * Handoff summaries are persisted as human messages tagged with top-level\n * `additional_kwargs.handoff_summary` (plus `_created_at`) — the same location\n * the backend uses for message metadata — but the shipped converter maps only\n * `additional_kwargs.metadata` into `metadata.custom`, so without this lift\n * the summary would render as a normal user bubble. A flag already present in\n * the metadata channel wins; no-ops are identity.\n */\nexport function liftHandoffSummaryIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'human') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n if (kwargs?.handoff_summary !== true) return message;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (metadata.handoff_summary === true) return message;\n const createdAt = kwargs?._created_at;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: {\n ...metadata,\n handoff_summary: true,\n ...(typeof createdAt === 'string' ? { _created_at: createdAt } : {}),\n },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * Mirror an AOP run's provenance into the converter's metadata channel. The\n * backend stamps the kicking-off user message with top-level\n * `additional_kwargs.aop_source` (agora `events/helpers.py`\n * `_build_aop_source_metadata`), which the legacy converter surfaced as\n * `metadata.custom.aop_source` — where the \"AOP · <title>\" badge reads it. The\n * shipped `convertLangChainMessages` maps only `additional_kwargs.metadata`\n * into `metadata.custom`, so without this lift an AOP run's conversation never\n * shows which AOP asset kicked it off. Provenance already present in the\n * metadata channel wins; no-ops are identity.\n */\nexport function liftAopSourceIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'human') return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const aopSource = kwargs?.aop_source;\n if (typeof aopSource !== 'object' || aopSource === null || Array.isArray(aopSource)) {\n return message;\n }\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (typeof metadata.aop_source === 'object' && metadata.aop_source !== null) return message;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: { ...metadata, aop_source: aopSource },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\nexport function liftBranchIntoMetadata(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'human' && message.type !== 'ai') return message;\n const branch = (message as { branch?: unknown }).branch;\n if (typeof branch !== 'object' || branch === null || Array.isArray(branch)) return message;\n const kwargs = message.additional_kwargs as Record<string, unknown> | undefined;\n const existingMetadata = kwargs?.metadata;\n const metadata =\n typeof existingMetadata === 'object' && existingMetadata !== null\n ? (existingMetadata as Record<string, unknown>)\n : {};\n if (typeof metadata.branch === 'object' && metadata.branch !== null) return message;\n return {\n ...message,\n additional_kwargs: {\n ...kwargs,\n metadata: { ...metadata, branch },\n } as (typeof message)['additional_kwargs'],\n };\n}\n\n/**\n * `additional_kwargs` keys on a ToolMessage that are infrastructure rather than\n * user-set metadata. The filter below additionally skips every `_`-prefixed key.\n */\nconst TOOL_MESSAGE_INTERNAL_KWARGS: ReadonlySet<string> = new Set([\n 'reasoning',\n 'tool_outputs',\n 'hide_from_frontend',\n]);\n\n/**\n * Mirror a ToolMessage's user-set `additional_kwargs` into\n * `artifact._tool_message_metadata` — the location `useToolCallMetadata` reads\n * persisted per-tool-call metadata from (`email_sent_at`, draft edits,\n * `calendar_event_created_at`, …).\n *\n * The `setMessageMetadata` mutation persists those keys onto the ToolMessage's\n * `additional_kwargs` in the checkpoint, and the legacy converter lifted them\n * into the artifact. The shipped `convertLangChainMessages` forwards only\n * `artifact` and drops `additional_kwargs` for tool messages, so without this\n * lift the metadata survives in the checkpoint but never reaches a tool card\n * after a reload. Kwargs values win over same-key artifact entries (the kwargs\n * are the durable write target); messages with no user-set kwargs pass through\n * by identity.\n */\nexport function liftToolMessageMetadataIntoArtifact(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'tool') return message;\n const kwargs = (message as { additional_kwargs?: Record<string, unknown> }).additional_kwargs;\n if (!kwargs) return message;\n const lifted: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(kwargs)) {\n if (key.startsWith('_') || TOOL_MESSAGE_INTERNAL_KWARGS.has(key)) continue;\n lifted[key] = value;\n }\n if (Object.keys(lifted).length === 0) return message;\n const artifact: unknown = message.artifact;\n const artifactRecord =\n typeof artifact === 'object' && artifact !== null && !Array.isArray(artifact)\n ? (artifact as Record<string, unknown>)\n : {};\n const existing = artifactRecord._tool_message_metadata;\n const existingRecord =\n typeof existing === 'object' && existing !== null && !Array.isArray(existing)\n ? (existing as Record<string, unknown>)\n : {};\n return {\n ...message,\n artifact: {\n ...artifactRecord,\n _tool_message_metadata: { ...existingRecord, ...lifted },\n },\n };\n}\n\n/**\n * Lift a windowed wire's tool-output truncation marker into the tool-call\n * part's `artifact` (`_athena_content_truncated: { chars, messageId }`).\n *\n * The host cuts long plain-text tool outputs on a windowed wire and stamps\n * `athena_content_truncated` on the wire message; the shipped converter joins\n * a ToolMessage into its assistant turn's tool-call part and keeps only\n * `artifact` and the result, so without this lift no tool card could tell the\n * output is cut nor which message to ask `history/tool_output` for. Messages\n * without the marker pass through by identity.\n */\nexport function liftTruncatedToolOutputIntoArtifact(message: LangChainMessage): LangChainMessage {\n if (message.type !== 'tool') return message;\n const marker = readTruncatedToolContent(message);\n if (marker === null || typeof message.id !== 'string') return message;\n const artifact: unknown = message.artifact;\n const artifactRecord =\n typeof artifact === 'object' && artifact !== null && !Array.isArray(artifact)\n ? (artifact as Record<string, unknown>)\n : {};\n return {\n ...message,\n artifact: {\n ...artifactRecord,\n [ATHENA_TRUNCATED_TOOL_OUTPUT_ARTIFACT_KEY]: { chars: marker.chars, messageId: message.id },\n },\n };\n}\n\n/**\n * Per-source cache for {@link substituteToolOutput}: a substituted copy is\n * reused while the wire message and the fetched output are both unchanged, so\n * the lift cache downstream keeps its identity contract.\n */\nconst substitutedToolOutputCache = new WeakMap<\n LangChainMessage,\n { content: unknown; substituted: LangChainMessage }\n>();\n\n/**\n * A cut tool message with its full output put back, when the store holds one\n * fetched for this very output (`history/tool_output` answered for the same\n * `chars` the wire's marker reports); the marker leaves with the cut.\n * Messages that are whole, whose output has not been fetched, or whose fetched\n * output belongs to a length the host has since replaced, pass through by\n * identity — the loader sees the mismatch and fetches again.\n */\nexport function substituteToolOutput(\n message: LangChainMessage,\n toolOutputs: DeepAgentToolOutputStore\n): LangChainMessage {\n if (message.type !== 'tool' || typeof message.id !== 'string') return message;\n const marker = readTruncatedToolContent(message);\n if (marker === null) return message;\n const entry = toolOutputs.entry(message.id);\n if (entry === undefined || entry.chars !== marker.chars) return message;\n const { content } = entry;\n const cached = substitutedToolOutputCache.get(message);\n if (cached !== undefined && cached.content === content) return cached.substituted;\n const { [DEEP_AGENT_TRUNCATED_CONTENT_KEY]: _marker, ...rest } = message as Record<\n string,\n unknown\n >;\n const substituted = { ...rest, content } as unknown as LangChainMessage;\n substitutedToolOutputCache.set(message, { content, substituted });\n return substituted;\n}\n\nconst hasHiddenFrontendFlag = (value: unknown): boolean => {\n if (typeof value !== 'object' || value === null || Array.isArray(value)) {\n return false;\n }\n const record = value as Record<string, unknown>;\n if (record.hide_from_frontend === true) return true;\n return hasHiddenFrontendFlag(record.custom);\n};\n\n/**\n * Internal orchestration messages are useful in a trace export but must never\n * become conversation bubbles. Agora stores the flag in `additional_kwargs`;\n * live converter state can expose the same value under `metadata.custom`.\n */\nexport function isMessageHiddenFromFrontend(message: unknown): boolean {\n if (typeof message !== 'object' || message === null || Array.isArray(message)) {\n return false;\n }\n const record = message as Record<string, unknown>;\n return (\n hasHiddenFrontendFlag(record.additional_kwargs) || hasHiddenFrontendFlag(record.metadata)\n );\n}\n\n/**\n * The message `type`s `convertLangChainMessages` actually maps: its\n * `switch (message.type)` covers exactly these four and has no `default`, so it\n * returns `undefined` for anything else (a `RemoveMessage` `type: \"remove\"`\n * from summarization/compaction, a partial chunk, a future type).\n */\nconst CONVERTIBLE_MESSAGE_TYPES: ReadonlySet<string> = new Set(['system', 'human', 'ai', 'tool']);\n\n/**\n * Whether `convertLangChainMessages` can map this message at all.\n *\n * An unmappable entry converts to `undefined`, which assistant-ui's\n * `convertExternalMessages` wraps as `outputs: [undefined]` and then reads\n * `output.role` off — throwing `Cannot read property 'role' of undefined` and\n * taking the entire thread down instead of dropping one message.\n */\nexport function isConvertibleChatMessage(message: unknown): boolean {\n if (typeof message !== 'object' || message === null || Array.isArray(message)) {\n return false;\n }\n const type: unknown = (message as Record<string, unknown>).type;\n return typeof type === 'string' && CONVERTIBLE_MESSAGE_TYPES.has(type);\n}\n\n/**\n * Per-source cache for the lift pipeline in {@link sanitizeLangChainMessages}.\n *\n * The pipeline runs on EVERY state pass (once per streamed token), and the two\n * lifts that fire for essentially every message — {@link liftBranchIntoMetadata}\n * (the backend stamps `branch` on all indexed messages) and\n * {@link liftModelIntoMetadata} — allocate a fresh object each time they lift.\n * Without a cache, every message's identity churns on every token, defeating\n * all downstream per-source memoization (`getExternalStoreMessages`-keyed\n * reads, converter callback caches) and re-deriving the whole thread per token.\n *\n * Object identity is a sound cache key here: every statewire fold (op apply,\n * optimistic, materialize) runs through `statewire`'s copy-on-write\n * `recordMutations`, whose `finalize` returns the ORIGINAL object for\n * untouched nodes and a fresh copy for touched ones. A message is therefore\n * REPLACED — never mutated in place — whenever any of its fields change\n * (including the streaming tail's string-insert content growth), and an\n * unchanged message keeps its exact identity across passes. The corpus test\n * (`statewire-corpus.test.ts`) pins this identity contract against the real\n * client, so a statewire upgrade that switched to in-place mutation would fail\n * there rather than silently serving stale lifts from this cache.\n *\n * Module-level on purpose: keys are the wire message objects themselves, so\n * entries die with their state trees and threads cannot collide.\n */\nconst liftedMessageCache = new WeakMap<LangChainMessage, LangChainMessage>();\n\n/** The full lift chain for one message, memoized per source object. */\nfunction liftMessageIntoMetadataChannels(message: LangChainMessage): LangChainMessage {\n const cached = liftedMessageCache.get(message);\n if (cached !== undefined) return cached;\n const lifted = liftBranchIntoMetadata(\n liftTruncatedToolOutputIntoArtifact(\n liftToolMessageMetadataIntoArtifact(\n liftAopSourceIntoMetadata(\n liftHandoffSummaryIntoMetadata(\n liftCompactionBoundaryIntoMetadata(\n liftConversationStatsIntoMetadata(\n liftModelIntoMetadata(\n liftTerminationIntoMetadata(liftRunMarkerIntoMetadata(message))\n )\n )\n )\n )\n )\n )\n )\n );\n liftedMessageCache.set(message, lifted);\n return lifted;\n}\n\n/**\n * The one message pipeline every deep-agent surface renders through:\n *\n * 1. drop messages the shipped converter cannot map (`RemoveMessage` etc. —\n * an unmappable entry would crash the whole thread) and internal\n * orchestration messages flagged hidden-from-frontend;\n * 2. lift run-lifecycle markers into the converter's `metadata` channel\n * (see {@link liftRunMarkerIntoMetadata}) so the cancellation row styles as\n * a status divider instead of a plain assistant bubble, and the termination\n * reason + handoff flag alongside them (see\n * {@link liftTerminationIntoMetadata}) so every surface can render a\n * runtime ending (see `runtime-messages.ts`);\n * 3. lift each AI message's producing model into the same channel\n * (see {@link liftModelIntoMetadata}) so model badges reflect the model that\n * actually generated the message, not the currently configured one;\n * 4. lift each AI message's per-message conversation-stats snapshot into the\n * same channel (see {@link liftConversationStatsIntoMetadata}) so the model\n * badge's hover card shows that message's own context usage;\n * 5. lift the compaction boundary flag on `/compact` summary messages into the\n * same channel (see {@link liftCompactionBoundaryIntoMetadata}) so the\n * transcript renders its \"Previous conversation summarized\" divider;\n * 6. lift the handoff summary flag on carried-over context messages into the\n * same channel (see {@link liftHandoffSummaryIntoMetadata}) so the\n * transcript keeps the summary behind its context panel;\n * 7. lift an AOP run's provenance on its kicking-off user message into the\n * same channel (see {@link liftAopSourceIntoMetadata}) so the message\n * renders its \"AOP · <title>\" origin badge;\n * 8. lift each ToolMessage's user-set `additional_kwargs` into\n * `artifact._tool_message_metadata` (see\n * {@link liftToolMessageMetadataIntoArtifact}) so persisted per-tool-call\n * metadata reaches tool cards after a reload;\n * 9. lift a windowed wire's tool-output truncation marker into the tool-call\n * part's `artifact` (see {@link liftTruncatedToolOutputIntoArtifact}) so a\n * tool card can fetch the whole output — after first putting back any\n * output already fetched (see {@link substituteToolOutput});\n * 10. lift the host's per-message branch stamp into the same channel\n * (see {@link liftBranchIntoMetadata}) so the branch picker renders each\n * message's edit fan-out.\n *\n * Identity-stable per source: an unchanged source message maps to the\n * IDENTICAL lifted object across passes (see {@link liftedMessageCache}).\n */\nexport function sanitizeLangChainMessages(\n messages: readonly LangChainMessage[],\n { toolOutputs }: { toolOutputs?: DeepAgentToolOutputStore } = {}\n): LangChainMessage[] {\n return messages\n .filter((message) => isConvertibleChatMessage(message) && !isMessageHiddenFromFrontend(message))\n .map((message) =>\n liftMessageIntoMetadataChannels(\n toolOutputs ? substituteToolOutput(message, toolOutputs) : message\n )\n );\n}\n\n/** Type guard for the runtime state — an object carrying a `messages` array. */\nexport function isLangGraphState(value: unknown): value is LangGraphState {\n return (\n typeof value === 'object' &&\n value !== null &&\n 'messages' in value &&\n Array.isArray((value as LangGraphState).messages)\n );\n}\n\nexport interface ConvertDeepAgentStateOptions {\n laneProjection?: DeepAgentLaneProjection;\n /**\n * The viewer, as the backend would stamp them: the author of this client's\n * own not-yet-acknowledged lane entries (see {@link laneEntryAuthor}).\n */\n selfAuthor?: DeepAgentMessageAuthor | null;\n /**\n * Full tool outputs fetched back for a windowed wire's cut tool messages\n * (see {@link substituteToolOutput}); omitted on surfaces that never\n * declare a window.\n */\n toolOutputs?: DeepAgentToolOutputStore;\n}\n\n/**\n * Map server state → assistant-ui thread messages.\n *\n * `state.messages` is the authoritative LangChain history streamed by the\n * backend. The replicated run status (`runs[0].status`) drives the\n * pending-assistant placeholder and the running status. Lane entries render at\n * the tail, after the placeholder, while the run is live (the run is still\n * working the history above them); once the thread rests stopped/errored they\n * are omitted (surfaces with a queue panel list them there instead).\n */\nexport function convertDeepAgentState(\n state: unknown,\n { laneProjection = 'both', selfAuthor = null, toolOutputs }: ConvertDeepAgentStateOptions = {}\n) {\n // A wire without a snapshot yet (pre-attach, replay boundary) converts as the\n // typed pre-stream default: an empty resting thread, never `undefined`.\n const values = readDeepAgentStreamValues(state);\n const status = values.runs?.[0]?.status;\n const isRunning = status === 'running';\n const laneTail =\n status === 'stopped' || status === 'error'\n ? []\n : laneTailMessages(values, laneProjection, selfAuthor);\n const stateMessages = isLangGraphState(values)\n ? sanitizeLangChainMessages(values.messages, { toolOutputs })\n : [];\n return {\n messages: messageConverter.toThreadMessages(\n [...withPendingAssistantMessage(stateMessages, isRunning), ...laneTail],\n isRunning\n ),\n isRunning,\n };\n}\n","import { resource } from '@assistant-ui/tap';\nimport { useMemo } from 'react';\nimport type { StatewireClient } from 'statewire';\n\n/**\n * Quota-safe drop-in for `@assistant-ui/react-statewire/local-storage`'s\n * `LocalStorageSession`.\n *\n * The vendor session's `save()` is a bare `localStorage.setItem` and the\n * `aui:statewire-session:*` keys are never swept, so on an origin at\n * localStorage quota every command send throws QuotaExceededError up through\n * the statewire client. This implementation keeps the vendor contract\n * (same key namespace, same JSON record shape plus a `savedAt` recency stamp,\n * Web-Locks sharing, storage-event subscription — see\n * `StatewireClient.SessionStorage`: `save` must persist synchronously) and\n * adds recovery: on a quota error it evicts the OLDEST other\n * `aui:statewire-session:` entries (never all — session records are not pure\n * caches) and retries once; if storage is still full it logs a warning\n * instead of throwing, degrading to the pre-persistence behavior (the lane\n * simply won't survive a reload).\n *\n * It also sweeps on mount ({@link sweepStaleStatewireSessions}): every mounted\n * thread — every never-started chat included — mints a record, and quota\n * eviction only runs when a save fails, so without the sweep an origin keeps\n * one record per chat ever opened.\n *\n * Quota-error detection mirrors `isStorageQuotaError` in\n * `olympus/src/lib/paragon-auth.ts` (the package boundary prevents importing\n * it) — keep the two in sync.\n *\n * This package compiles without the DOM lib (React Native honesty — see\n * `globals.d.ts`), so the browser surface below is typed structurally and\n * resolved through `globalThis`. This seam is browser-only by contract, like\n * the vendor's: it throws when localStorage / Web Locks are unavailable.\n */\n\n/** Structural view of `Storage` — the subset this seam touches. */\ntype WebStorage = {\n readonly length: number;\n key(index: number): string | null;\n getItem(key: string): string | null;\n setItem(key: string, value: string): void;\n removeItem(key: string): void;\n};\n\ntype StorageEventLike = { key: string | null };\n\n/** Structural view of the browser globals this seam needs. */\ntype BrowserGlobals = {\n localStorage?: WebStorage;\n navigator?: {\n locks?: { request<T>(name: string, callback: () => T | Promise<T>): Promise<T> };\n };\n addEventListener?: (type: 'storage', listener: (event: StorageEventLike) => void) => void;\n removeEventListener?: (type: 'storage', listener: (event: StorageEventLike) => void) => void;\n};\n\nconst browserGlobals = globalThis as BrowserGlobals;\n\nfunction requireLocalStorage(): WebStorage {\n const storage = browserGlobals.localStorage;\n if (!storage) {\n throw new Error('statewire: QuotaSafeLocalStorageSession requires localStorage');\n }\n return storage;\n}\n\nconst SESSION_PREFIX = 'aui:statewire-session:';\nconst SESSION_LOCK_PREFIX = 'aui:statewire-session-lock:';\n\n/** Mount-sweep defaults, mirroring the vendor `LocalStorageComposerDrafts`\n * (7 days, 50 newest) so the two per-thread localStorage seams age out together. */\nconst DEFAULT_SESSION_TTL_MS = 7 * 24 * 60 * 60 * 1000;\nconst DEFAULT_SESSION_MAX = 50;\n\nexport function isStorageQuotaError(error: unknown): boolean {\n if (typeof DOMException !== 'undefined' && error instanceof DOMException) {\n return (\n error.name === 'QuotaExceededError' ||\n error.name === 'NS_ERROR_DOM_QUOTA_REACHED' ||\n error.code === 22 ||\n error.code === 1014\n );\n }\n if (error instanceof Error) {\n return /exceeded the quota|quotaexceedederror|ns_error_dom_quota_reached/i.test(error.message);\n }\n return false;\n}\n\n/**\n * Eviction metadata parsed off a stored record: the `savedAt` recency stamp\n * (0 for vendor-written entries, treated oldest) and whether the record still\n * holds commands awaiting a durable verdict — dropping a command-free record\n * only costs a re-minted lane identity, while dropping one with unsettled\n * commands loses that thread's resend buffer.\n */\nfunction readEvictionMeta(raw: string | null): { savedAt: number; hasPendingCommands: boolean } {\n if (!raw) return { savedAt: 0, hasPendingCommands: false };\n try {\n const parsed = JSON.parse(raw) as { savedAt?: unknown; commands?: unknown } | null;\n return {\n savedAt: typeof parsed?.savedAt === 'number' ? parsed.savedAt : 0,\n hasPendingCommands: Array.isArray(parsed?.commands) && parsed.commands.length > 0,\n };\n } catch {\n return { savedAt: 0, hasPendingCommands: false };\n }\n}\n\ninterface SessionCandidate {\n key: string;\n savedAt: number;\n hasPendingCommands: boolean;\n}\n\n/** Eviction order: command-free records first, then least-recently saved. */\nconst byEvictionPriority = (a: SessionCandidate, b: SessionCandidate): number =>\n Number(a.hasPendingCommands) - Number(b.hasPendingCommands) || a.savedAt - b.savedAt;\n\n/** Every OTHER session record on the origin, with its eviction metadata. */\nfunction otherSessionRecords(storage: WebStorage, currentKey: string): SessionCandidate[] {\n const candidates: SessionCandidate[] = [];\n for (let i = 0; i < storage.length; i++) {\n const key = storage.key(i);\n if (!key || !key.startsWith(SESSION_PREFIX) || key === currentKey) continue;\n candidates.push({ key, ...readEvictionMeta(storage.getItem(key)) });\n }\n return candidates;\n}\n\nfunction removeSessionRecords(storage: WebStorage, keys: readonly string[]): number {\n let removed = 0;\n for (const key of keys) {\n try {\n storage.removeItem(key);\n removed++;\n } catch {\n // Keep removing the rest; the caller decides whether it was enough.\n }\n }\n return removed;\n}\n\n/**\n * Evict the oldest half (at least one) of the OTHER `aui:statewire-session:`\n * entries, preferring records that carry NO unsettled commands (their loss\n * only re-mints a lane identity) and only then the least-recently-saved ones\n * that do. Returns the number of keys removed.\n */\nexport function evictOldestStatewireSessions(currentKey: string): number {\n const storage = requireLocalStorage();\n const candidates = otherSessionRecords(storage, currentKey).sort(byEvictionPriority);\n const evictCount = Math.min(candidates.length, Math.max(1, Math.ceil(candidates.length / 2)));\n return removeSessionRecords(\n storage,\n candidates.slice(0, evictCount).map((candidate) => candidate.key)\n );\n}\n\n/**\n * Mount sweep over the OTHER `aui:statewire-session:` records: drop stamped\n * command-free records not saved within `ttlMs`, then trim the command-free\n * remainder so that at most `max` such records (this thread's included) stay,\n * least-recently-saved first.\n *\n * A record still holding commands awaiting a durable verdict is that thread's\n * resend buffer, so housekeeping never removes it — neither bound counts it;\n * only the quota-pressure eviction (`evictOldestStatewireSessions`) may, and\n * it too prefers command-free records. Dropping a command-free record only\n * costs a re-minted lane identity, which is what makes the never-started chats\n * this sweep exists for safe to clear.\n *\n * Vendor-written records carry no `savedAt` stamp: their age is unknown, so\n * the TTL never touches them, but they sort oldest for the cap.\n *\n * Returns the number of keys removed.\n */\nexport function sweepStaleStatewireSessions({\n currentKey,\n ttlMs = DEFAULT_SESSION_TTL_MS,\n max = DEFAULT_SESSION_MAX,\n now = Date.now(),\n}: {\n currentKey: string;\n ttlMs?: number;\n max?: number;\n now?: number;\n}): number {\n const storage = requireLocalStorage();\n const candidates = otherSessionRecords(storage, currentKey).filter(\n (candidate) => !candidate.hasPendingCommands\n );\n const isExpired = (candidate: SessionCandidate): boolean =>\n candidate.savedAt > 0 && now - candidate.savedAt > ttlMs;\n const expired = candidates.filter(isExpired);\n const retained = candidates.filter((candidate) => !isExpired(candidate)).sort(byEvictionPriority);\n // `max` counts this thread's own record, so the others may fill `max - 1`.\n const overflow = Math.max(0, retained.length - Math.max(0, max - 1));\n return removeSessionRecords(storage, [\n ...expired.map((candidate) => candidate.key),\n ...retained.slice(0, overflow).map((candidate) => candidate.key),\n ]);\n}\n\n/**\n * Send stamps (message id → epoch ms of the original send) off the persisted\n * session record's failed lane, for the send-recovery freshness gate.\n * `sessionKey` is the same thread-scoped key the session storage was mounted\n * with (`QuotaSafeLocalStorageSession.Options.key(threadId)`).\n *\n * Returns `null` when no record is readable (storage unavailable, no record,\n * corrupt JSON) — the caller then treats every failed entry as fresh, which is\n * correct for in-memory-only sessions (their failed lane can only hold this\n * page session's failures).\n */\nexport function readPersistedFailedSendStamps(\n sessionKey: string\n): ReadonlyMap<string, number> | null {\n const storage = browserGlobals.localStorage;\n if (!storage) return null;\n let record: { failed?: unknown } | null;\n try {\n const raw = storage.getItem(SESSION_PREFIX + sessionKey);\n record = raw === null ? null : (JSON.parse(raw) as { failed?: unknown } | null);\n } catch {\n return null;\n }\n return readFailedSendStampsFromRecord(record);\n}\n\n/**\n * Send stamps (message id → epoch ms of the original send) off an already\n * loaded session record's failed lane — the storage-agnostic half of\n * {@link readPersistedFailedSendStamps}, for hosts whose session store is not\n * localStorage (the React Native AsyncStorage-backed store reads its record\n * synchronously through `SessionStorage.load()`).\n *\n * Returns `null` for no record (every failed entry then counts as fresh) and\n * an empty map for a record without failures.\n */\nexport function readFailedSendStampsFromRecord(\n record: { failed?: unknown } | null | undefined\n): ReadonlyMap<string, number> | null {\n if (!record || typeof record !== 'object') return null;\n const stamps = new Map<string, number>();\n if (!Array.isArray(record.failed)) return stamps;\n for (const entry of record.failed) {\n const failed = entry as {\n ts?: unknown;\n params?: readonly { message?: { id?: unknown } }[];\n } | null;\n const messageId = failed?.params?.[0]?.message?.id;\n if (typeof messageId === 'string' && typeof failed?.ts === 'number') {\n stamps.set(messageId, failed.ts);\n }\n }\n return stamps;\n}\n\n/**\n * Build the session-storage object for one key pair. Exported for tests; the\n * resource below is the seam the thread options consume.\n */\nexport function createQuotaSafeSessionStorage({\n storageKey,\n lockName,\n}: {\n storageKey: string;\n lockName: string;\n}): StatewireClient.SessionStorage {\n return {\n load: () => {\n const raw = requireLocalStorage().getItem(storageKey);\n if (raw === null) return null;\n // The extra `savedAt` property rides along harmlessly — SessionRecord is\n // structural and vendor-written records (no stamp) parse identically.\n return JSON.parse(raw) as StatewireClient.SessionRecord;\n },\n save: (record) => {\n const storage = requireLocalStorage();\n const serialized = JSON.stringify({ ...record, savedAt: Date.now() });\n try {\n storage.setItem(storageKey, serialized);\n } catch (error) {\n if (!isStorageQuotaError(error)) throw error;\n evictOldestStatewireSessions(storageKey);\n try {\n storage.setItem(storageKey, serialized);\n } catch (retryError) {\n if (!isStorageQuotaError(retryError)) throw retryError;\n console.warn(\n '[statewire] session save skipped — localStorage quota exhausted even after evicting old statewire sessions; the lane will not survive a reload',\n { storageKey }\n );\n }\n }\n },\n // localStorage is shared across tabs: record mutations serialize through a\n // per-key Web Lock, and `subscribe` mirrors other sharers' saves. In\n // browsers `globalThis` IS `window`, so the storage events land here.\n lock: (fn) => {\n const locks = browserGlobals.navigator?.locks;\n if (!locks) {\n throw new Error(\n 'statewire: QuotaSafeLocalStorageSession requires the Web Locks API (navigator.locks)'\n );\n }\n return locks.request(lockName, async () => fn());\n },\n subscribe: (listener) => {\n const onStorage = (event: StorageEventLike) => {\n if (event.key === storageKey) listener();\n };\n browserGlobals.addEventListener?.('storage', onStorage);\n return () => browserGlobals.removeEventListener?.('storage', onStorage);\n },\n };\n}\n\nconst useQuotaSafeLocalStorageSession = ({\n threadId,\n key = (id) => id,\n ttl,\n max,\n}: QuotaSafeLocalStorageSession.Options): StatewireClient.SessionStorage => {\n // Same preconditions as the vendor LocalStorageSession, checked at mount.\n requireLocalStorage();\n if (browserGlobals.navigator?.locks === undefined)\n throw new Error(\n 'statewire: QuotaSafeLocalStorageSession requires the Web Locks API (navigator.locks)'\n );\n\n const storageKey = SESSION_PREFIX + key(threadId);\n const lockName = SESSION_LOCK_PREFIX + key(threadId);\n return useMemo(() => {\n // Once per mounted storage, like the vendor's draft sweep. A sweep that\n // cannot read the origin's keys must not block the mount — the record\n // this thread is about to write is what matters.\n try {\n sweepStaleStatewireSessions({\n currentKey: storageKey,\n ...(ttl !== undefined && { ttlMs: ttl }),\n ...(max !== undefined && { max }),\n });\n } catch {\n // Sweeping is best-effort housekeeping.\n }\n return createQuotaSafeSessionStorage({ storageKey, lockName });\n }, [storageKey, lockName, ttl, max]);\n};\n\n/**\n * Session storage on localStorage, keyed per thread, with QuotaExceededError\n * recovery and a mount sweep of stale records. Same seam as the vendor\n * `LocalStorageSession`; use this one from app code so a full origin cannot\n * take down command sends.\n */\nexport const QuotaSafeLocalStorageSession = resource(useQuotaSafeLocalStorageSession);\n\nexport namespace QuotaSafeLocalStorageSession {\n export type Options = {\n /** The thread whose session this storage holds. */\n threadId: string;\n /** Derives the storage key from the thread id; defaults to the id itself. */\n key?: ((threadId: string) => string) | undefined;\n /** Record lifetime in milliseconds, enforced by the mount sweep. Default 7 days. */\n ttl?: number | undefined;\n /** Newest records kept across all keys (this thread's included), enforced by the mount sweep. Default 50. */\n max?: number | undefined;\n };\n}\n","/**\n * Attach-path instrumentation for the deep-agent statewire transport, wired\n * through the two injection points statewire already exposes — the\n * `webSocket` constructor (`StatewireClient.WSOptions`) and `fetch`\n * (`StatewireClient.SSEOptions`) — so the runtime can observe what the library\n * does not surface:\n *\n * - socket open latency (`ws_open_ms`), the hello frame's size and its\n * synchronous handler cost (`hello_bytes`, `hello_handler_ms`), and close\n * codes/reasons, for the thread-switch telemetry;\n * - a server `Retry-After` hint, honoured as a floor under the next dial.\n *\n * Retry-After today: statewire honours `retry-after` only on 429 command-frame\n * refusals (folded into the refusal `syn.retry`); its attach paths treat a 503\n * as a generic `HTTP 503` / `network` failure and back off exponentially with\n * no server input. Browsers never expose the response headers of a refused\n * WebSocket upgrade at all, so for the WS transport the hint can only ride\n * something the client can read: the close frame. The contract this module\n * reads is a close `reason` carrying `retry-after=<seconds>` (or\n * `retry-after-ms=<ms>`) — the pinboard half of that contract is a separate\n * change; until it lands the WS path simply sees no hint. The SSE attach\n * (`POST …/stream`) is a plain fetch, so its `Retry-After` header is read here\n * directly.\n *\n * This package compiles without the DOM lib (React Native honesty), so the\n * browser surface is typed structurally and resolved through `globalThis`.\n */\n\n/**\n * Who refused a wake (503/429), read off the response body against the two\n * refusal vocabularies the iris scaler also classifies data-plane 503s by\n * (`iris/scaler/src/v2AccessLog.ts`):\n *\n * - `\"placement\"` — the pinboard's own refusal, `{\"error\": …}` with one of its\n * known strings (\"no live workers for hostname\", \"registry cold start,\n * retry\", \"takeover in progress, retry\", …): the thread has no worker to\n * dial right now.\n * - `\"worker\"` — a pinned instance-lifecycle refusal, `{\"detail\": …}` with one\n * of its known strings (\"instance closing; retry\", \"activation queue full;\n * retry\", \"host draining; retry\", …): one instance on the worker the thread\n * is already placed on, cleared in the time a teardown takes.\n * - `\"unknown\"` — any other 503/429 body (unreadable, an unfamiliar string, a\n * real worker failure such as \"Thread history load failed\"): treated\n * conservatively — the full `Retry-After`, no dial dropped.\n * - `null` — not a refusal status.\n */\nexport type DeepAgentWakeRefusal = \"placement\" | \"worker\" | \"unknown\" | null;\n\nexport type DeepAgentAttachTimingEvent =\n | { type: \"socket-open\"; url: string; openMs: number }\n | {\n type: \"hello\";\n url: string;\n /** UTF-16 length of the hello frame — bytes for the ASCII JSON the wire carries. */\n bytes: number;\n /** Synchronous cost of statewire's message handler for the hello (parse + apply + flush). */\n handlerMs: number;\n /** Hello arrival relative to the socket open; `null` when the open was not observed. */\n sinceOpenMs: number | null;\n }\n | {\n type: \"socket-close\";\n url: string;\n code: number | undefined;\n reason: string | undefined;\n sinceOpenMs: number | null;\n }\n | {\n type: \"retry-after\";\n url: string;\n delayMs: number;\n source: \"ws-close\" | \"http-header\";\n }\n | {\n /** `POST …/prewarm` answered (see `wakeDeepAgentThread`). */\n type: \"wake\";\n url: string;\n status: number;\n durationMs: number;\n /** How the host sourced the history: already resident (`warm`) or loaded by this call. */\n history: \"fresh_load\" | \"warm\" | null;\n /** Who refused a 503/429 (see {@link DeepAgentWakeRefusal}); `null` otherwise. */\n refusal: DeepAgentWakeRefusal;\n };\n\n/** Longest server hint honoured — a buggy or hostile hint must not park a client. */\nexport const MAX_RETRY_AFTER_MS = 30_000;\n\nconst clampRetryAfter = (ms: number): number | null => {\n if (!Number.isFinite(ms)) return null;\n return Math.min(Math.max(0, Math.round(ms)), MAX_RETRY_AFTER_MS);\n};\n\n/**\n * Parse an HTTP `Retry-After` header value: delta-seconds or an HTTP-date.\n * Returns the delay in ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null` when\n * the value is absent or unparseable.\n */\nexport function parseRetryAfterHeaderMs(\n value: string | null | undefined,\n now: () => number = () => Date.now(),\n): number | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n if (trimmed === \"\") return null;\n if (/^\\d+$/.test(trimmed)) return clampRetryAfter(Number(trimmed) * 1000);\n // An HTTP-date always names a weekday/month; anything else numeric-looking\n // (\"1.5\") would otherwise parse as some far-off calendar date.\n if (!/[A-Za-z]/.test(trimmed)) return null;\n const at = Date.parse(trimmed);\n if (Number.isNaN(at)) return null;\n return clampRetryAfter(at - now());\n}\n\n/**\n * Parse a retry hint off a WebSocket close reason: `retry-after=<seconds>` or\n * `retry-after-ms=<ms>` anywhere in the reason text (case-insensitive, `=` or\n * `:`). Returns ms clamped to {@link MAX_RETRY_AFTER_MS}, or `null`.\n */\nexport function parseRetryAfterFromCloseReason(\n reason: string | undefined,\n): number | null {\n if (typeof reason !== \"string\" || reason === \"\") return null;\n const match = /retry-after(-ms)?\\s*[=:]\\s*(\\d+)/i.exec(reason);\n if (!match) return null;\n const amount = Number(match[2]);\n return clampRetryAfter(match[1] ? amount : amount * 1000);\n}\n\nexport interface AttachRetryGate {\n /** Record a hint: no dial for `key` before `now + delayMs` (clamped). */\n noteRetryAfter(key: string, delayMs: number): void;\n /** Resolves once the recorded floor for `key` has passed (immediately when none). */\n waitForDial(key: string): Promise<void>;\n /** Remaining floor for `key` in ms (0 when none). */\n remainingMs(key: string): number;\n /** Drop one key's floor, or every floor. */\n reset(key?: string): void;\n}\n\n/**\n * Per-key dial floors. Keyed by the thread's attach URL so a hint delivered\n * for one thread never delays another. The floor is a minimum under\n * statewire's own backoff, never a replacement for it: the transport still\n * schedules its retry, and the dial simply waits out the remainder inside the\n * headers resolve (both attach paths resolve headers before they dial).\n */\nexport function createAttachRetryGate({\n now = () => Date.now(),\n wait = (ms: number) =>\n new Promise<void>((resolve) => setTimeout(resolve, ms)),\n}: {\n now?: () => number;\n wait?: (ms: number) => Promise<void>;\n} = {}): AttachRetryGate {\n const floors = new Map<string, number>();\n const remainingMs = (key: string): number => {\n const until = floors.get(key);\n if (until === undefined) return 0;\n const remaining = until - now();\n if (remaining <= 0) {\n floors.delete(key);\n return 0;\n }\n return remaining;\n };\n return {\n noteRetryAfter(key, delayMs) {\n const clamped = clampRetryAfter(delayMs);\n if (clamped === null || clamped === 0) return;\n const until = now() + clamped;\n const existing = floors.get(key);\n if (existing === undefined || existing < until) floors.set(key, until);\n },\n async waitForDial(key) {\n // A hint that arrives while the dial sleeps extends the floor; re-check\n // after every wait rather than trusting the deadline the sleep began with.\n for (\n let remaining = remainingMs(key);\n remaining > 0;\n remaining = remainingMs(key)\n ) {\n await wait(remaining);\n }\n },\n remainingMs,\n reset(key) {\n if (key === undefined) floors.clear();\n else floors.delete(key);\n },\n };\n}\n\n/** Process-wide gate shared by every deep-agent transport in the host. */\nexport const attachRetryGate: AttachRetryGate = createAttachRetryGate();\n\n/** Structural subset of the browser `WebSocket` that statewire's WS transport touches. */\nexport interface AttachSocketLike {\n readonly readyState: number;\n onopen: ((event: unknown) => void) | null;\n onmessage: ((event: { data: unknown }) => void) | null;\n onclose: ((event: { code?: number; reason?: string }) => void) | null;\n onerror: ((event: unknown) => void) | null;\n send(data: string): void;\n close(code?: number, reason?: string): void;\n}\n\nexport type AttachWebSocketConstructor = new (\n url: string,\n protocols?: string | string[],\n) => AttachSocketLike;\n\nconst defaultNow = (): number =>\n typeof performance !== \"undefined\" && typeof performance.now === \"function\"\n ? performance.now()\n : Date.now();\n\n/** Statewire's keep-alive frame — never the hello. */\nconst isHeartbeatFrame = (data: unknown): boolean => {\n const text = String(data);\n return text === \"\" || text === \"{}\";\n};\n\n/**\n * Wrap a socket in a forwarding facade whose handler setters time the events\n * statewire attaches to (`onopen`, `onmessage`, `onclose`). A facade rather\n * than a subclass so the same instrumentation works over any host `WebSocket`\n * implementation, including test fakes.\n */\nexport function instrumentAttachSocket({\n socket,\n url,\n onEvent,\n now = defaultNow,\n}: {\n socket: AttachSocketLike;\n /** The thread attach URL the events are attributed to (not the socket URL). */\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachSocketLike {\n const createdAt = now();\n let openedAt: number | null = null;\n let helloSeen = false;\n const emit = (event: DeepAgentAttachTimingEvent): void => {\n try {\n onEvent(event);\n } catch {\n // Observers are best-effort; the wire must never fail on telemetry.\n }\n };\n let openHandler: AttachSocketLike[\"onopen\"] = null;\n let messageHandler: AttachSocketLike[\"onmessage\"] = null;\n let closeHandler: AttachSocketLike[\"onclose\"] = null;\n socket.onopen = (event) => {\n openedAt = now();\n emit({ type: \"socket-open\", url, openMs: openedAt - createdAt });\n openHandler?.(event);\n };\n socket.onmessage = (event) => {\n if (helloSeen || isHeartbeatFrame(event.data)) {\n messageHandler?.(event);\n return;\n }\n helloSeen = true;\n const startedAt = now();\n try {\n messageHandler?.(event);\n } finally {\n const finishedAt = now();\n emit({\n type: \"hello\",\n url,\n bytes: String(event.data).length,\n handlerMs: finishedAt - startedAt,\n sinceOpenMs: openedAt === null ? null : startedAt - openedAt,\n });\n }\n };\n socket.onclose = (event) => {\n const closedAt = now();\n emit({\n type: \"socket-close\",\n url,\n code: event?.code,\n reason: event?.reason,\n sinceOpenMs: openedAt === null ? null : closedAt - openedAt,\n });\n const retryAfter = parseRetryAfterFromCloseReason(event?.reason);\n if (retryAfter !== null) {\n emit({\n type: \"retry-after\",\n url,\n delayMs: retryAfter,\n source: \"ws-close\",\n });\n }\n closeHandler?.(event);\n };\n return {\n get readyState() {\n return socket.readyState;\n },\n get onopen() {\n return openHandler;\n },\n set onopen(handler) {\n openHandler = handler;\n },\n get onmessage() {\n return messageHandler;\n },\n set onmessage(handler) {\n messageHandler = handler;\n },\n get onclose() {\n return closeHandler;\n },\n set onclose(handler) {\n closeHandler = handler;\n },\n get onerror() {\n return socket.onerror;\n },\n set onerror(handler) {\n socket.onerror = handler;\n },\n send: (data) => socket.send(data),\n close: (code, reason) => socket.close(code, reason),\n };\n}\n\n/**\n * A `WebSocket`-shaped constructor that dials through `Base` and reports the\n * attach events for `url`. Constructor semantics (`new` returns the facade)\n * match what statewire's `webSocket` option expects.\n */\nexport function instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent,\n now,\n}: {\n Base: AttachWebSocketConstructor;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): AttachWebSocketConstructor {\n function InstrumentedWebSocket(\n socketUrl: string,\n protocols?: string | string[],\n ) {\n return instrumentAttachSocket({\n socket: new Base(socketUrl, protocols),\n url,\n onEvent,\n ...(now && { now }),\n });\n }\n return InstrumentedWebSocket as unknown as AttachWebSocketConstructor;\n}\n\n/** Structural `fetch` — what statewire's SSE transport calls. */\nexport type AttachFetch = (\n input: string | URL,\n init?: unknown,\n) => Promise<{\n ok: boolean;\n status: number;\n headers: { get(name: string): string | null };\n}>;\n\n/**\n * A `fetch` that reports a `Retry-After` header on refused attach requests\n * (the SSE `POST …/stream`) before handing the response back untouched.\n */\nexport function instrumentedAttachFetch<TFetch extends AttachFetch>({\n baseFetch,\n url,\n onEvent,\n now,\n}: {\n baseFetch: TFetch;\n url: string;\n onEvent: (event: DeepAgentAttachTimingEvent) => void;\n now?: () => number;\n}): TFetch {\n const wrapped: AttachFetch = async (input, init) => {\n const response = await baseFetch(input, init);\n if (!response.ok && (response.status === 503 || response.status === 429)) {\n const delayMs = parseRetryAfterHeaderMs(\n response.headers.get(\"retry-after\"),\n now,\n );\n if (delayMs !== null) {\n try {\n onEvent({ type: \"retry-after\", url, delayMs, source: \"http-header\" });\n } catch {\n // Observers are best-effort.\n }\n }\n }\n return response;\n };\n return wrapped as TFetch;\n}\n\n/** Structural view of the host globals the instrumentation resolves. */\ntype AttachGlobals = {\n WebSocket?: AttachWebSocketConstructor;\n fetch?: AttachFetch;\n};\n\n/**\n * The transport option overrides for one attach: an instrumented `webSocket`\n * (WS) or `fetch` (SSE) that reports attach events for `url` and feeds\n * `Retry-After` hints into the gate. Returns `{}` where the host has no such\n * global (a server render, a non-browser runtime) so the transport keeps its\n * defaults.\n */\nexport function createAttachInstrumentation({\n url,\n sse,\n onEvent,\n retryGate = attachRetryGate,\n now,\n}: {\n url: string;\n sse: boolean;\n onEvent?: ((event: DeepAgentAttachTimingEvent) => void) | undefined;\n retryGate?: AttachRetryGate;\n now?: () => number;\n}): { webSocket?: AttachWebSocketConstructor; fetch?: AttachFetch } {\n const globals = globalThis as AttachGlobals;\n const observe = (event: DeepAgentAttachTimingEvent): void => {\n if (event.type === \"retry-after\")\n retryGate.noteRetryAfter(url, event.delayMs);\n onEvent?.(event);\n };\n if (sse) {\n const baseFetch = globals.fetch;\n if (typeof baseFetch !== \"function\") return {};\n return {\n fetch: instrumentedAttachFetch({\n baseFetch: (input, init) => baseFetch(input, init),\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n }\n const Base = globals.WebSocket;\n if (typeof Base !== \"function\") return {};\n return {\n webSocket: instrumentedWebSocketConstructor({\n Base,\n url,\n onEvent: observe,\n ...(now && { now }),\n }),\n };\n}\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\n__name(setRef, \"setRef\");\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\n__name(composeRefs, \"composeRefs\");\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\n__name(useComposedRefs, \"useComposedRefs\");\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","var __defProp = Object.defineProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\n\n// src/slot.tsx\nimport * as React from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n let { children, ...slotProps } = props;\n let slottableElement = null;\n let hasSlottable = false;\n const newChildren = [];\n if (isLazyComponent(children) && typeof use === \"function\") {\n children = use(children._payload);\n }\n React.Children.forEach(children, (maybeSlottable) => {\n if (isSlottable(maybeSlottable)) {\n hasSlottable = true;\n const slottable = maybeSlottable;\n let child = \"child\" in slottable.props ? slottable.props.child : slottable.props.children;\n if (isLazyComponent(child) && typeof use === \"function\") {\n child = use(child._payload);\n }\n slottableElement = getSlottableElementFromSlottable(slottable, child);\n newChildren.push(slottableElement?.props?.children);\n } else {\n newChildren.push(maybeSlottable);\n }\n });\n if (slottableElement) {\n slottableElement = React.cloneElement(slottableElement, void 0, newChildren);\n } else if (\n // A `Slottable` was found but it didn't resolve to a single element (e.g.\n // it wrapped multiple elements, text, or a render-prop `child` that\n // wasn't an element). Don't fall back to treating the `Slottable` wrapper\n // itself as the slot target — throw a descriptive error below instead.\n !hasSlottable && React.Children.count(children) === 1 && React.isValidElement(children)\n ) {\n slottableElement = children;\n }\n const slottableElementRef = slottableElement ? getElementRef(slottableElement) : void 0;\n const composedRef = useComposedRefs(forwardedRef, slottableElementRef);\n if (!slottableElement) {\n if (children || children === 0) {\n throw new Error(\n hasSlottable ? createSlottableError(ownerName) : createSlotError(ownerName)\n );\n }\n return children;\n }\n const mergedProps = mergeProps(slotProps, slottableElement.props ?? {});\n if (slottableElement.type !== React.Fragment) {\n mergedProps.ref = forwardedRef ? composedRef : slottableElementRef;\n }\n return React.cloneElement(slottableElement, mergedProps);\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\n__name(createSlot, \"createSlot\");\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\nvar SLOTTABLE_IDENTIFIER = Symbol.for(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = /* @__PURE__ */ __name((props) => \"child\" in props ? props.children(props.child) : props.children, \"Slottable\");\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\n__name(createSlottable, \"createSlottable\");\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nvar getSlottableElementFromSlottable = /* @__PURE__ */ __name((slottable, child) => {\n if (\"child\" in slottable.props) {\n const child2 = slottable.props.child;\n if (!React.isValidElement(child2)) return null;\n return React.cloneElement(child2, void 0, slottable.props.children(child2.props.children));\n }\n return React.isValidElement(child) ? child : null;\n}, \"getSlottableElementFromSlottable\");\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\n__name(mergeProps, \"mergeProps\");\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\n__name(getElementRef, \"getElementRef\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\n__name(isSlottable, \"isSlottable\");\nvar REACT_LAZY_TYPE = Symbol.for(\"react.lazy\");\nfunction isLazyComponent(element) {\n return element != null && typeof element === \"object\" && \"$$typeof\" in element && element.$$typeof === REACT_LAZY_TYPE && \"_payload\" in element && isPromiseLike(element._payload);\n}\n__name(isLazyComponent, \"isLazyComponent\");\nfunction isPromiseLike(value) {\n return typeof value === \"object\" && value !== null && \"then\" in value;\n}\n__name(isPromiseLike, \"isPromiseLike\");\nvar createSlotError = /* @__PURE__ */ __name((ownerName) => {\n return `${ownerName} failed to slot onto its children. Expected a single React element child or \\`Slottable\\`.`;\n}, \"createSlotError\");\nvar createSlottableError = /* @__PURE__ */ __name((ownerName) => {\n return `${ownerName} failed to slot onto its \\`Slottable\\`. Expected \\`Slottable\\` to receive a single React element child.`;\n}, \"createSlottableError\");\nvar use = React[\" use \".trim().toString()];\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","//#region src/clsx.ts\nconst isArray = Array.isArray;\nconst resolveClassValue = (value) => {\n\tif (!value) return \"\";\n\tif (typeof value === \"string\") return value;\n\tif (typeof value === \"number\") return \"\" + value;\n\tlet result = \"\";\n\tif (isArray(value)) {\n\t\tconst length = value.length;\n\t\tfor (let index = 0; index < length; index++) {\n\t\t\tconst item = value[index];\n\t\t\tif (!item) continue;\n\t\t\tconst resolved = typeof item === \"string\" ? item : resolveClassValue(item);\n\t\t\tif (resolved) {\n\t\t\t\tif (result) result += \" \";\n\t\t\t\tresult += resolved;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\tif (typeof value === \"object\") {\n\t\tfor (const key in value) if (value[key]) {\n\t\t\tif (result) result += \" \";\n\t\t\tresult += key;\n\t\t}\n\t}\n\treturn result;\n};\nconst clsx = (...inputs) => resolveClassValue(inputs);\n\n//#endregion\n//#region src/lib/utils.ts\n/**\n* Concatenates two arrays faster than the array spread operator.\n*/\nconst concatArrays = (array1, array2) => {\n\tconst length1 = array1.length;\n\tconst length2 = array2.length;\n\tconst combinedArray = new Array(length1 + length2);\n\tfor (let i = 0; i < length1; i++) combinedArray[i] = array1[i];\n\tfor (let i = 0; i < length2; i++) combinedArray[length1 + i] = array2[i];\n\treturn combinedArray;\n};\n\n//#endregion\n//#region src/lib/class-group-utils.ts\nconst createClassValidatorObject = (classGroupId, validator) => ({\n\tclassGroupId,\n\tvalidator\n});\nconst createClassPartObject = (nextPart = /* @__PURE__ */ new Map(), validators = null, classGroupId) => ({\n\tnextPart,\n\tvalidators,\n\tclassGroupId\n});\nconst CLASS_PART_SEPARATOR = \"-\";\nconst EMPTY_CONFLICTS = [];\nconst ARBITRARY_PROPERTY_PREFIX = \"arbitrary..\";\nconst createClassGroupUtils = (config) => {\n\tconst classMap = createClassMap(config);\n\tconst { conflictingClassGroups, conflictingClassGroupModifiers } = config;\n\tconst getClassGroupId = (className) => {\n\t\tif (className[0] === \"[\" && className[className.length - 1] === \"]\") return getGroupIdForArbitraryProperty(className);\n\t\tconst classParts = className.split(CLASS_PART_SEPARATOR);\n\t\treturn getGroupRecursive(classParts, classParts[0] === \"\" && classParts.length > 1 ? 1 : 0, classMap);\n\t};\n\tconst getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n\t\tif (hasPostfixModifier) {\n\t\t\tconst modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n\t\t\tconst baseConflicts = conflictingClassGroups[classGroupId];\n\t\t\tif (modifierConflicts) {\n\t\t\t\tif (baseConflicts) return concatArrays(baseConflicts, modifierConflicts);\n\t\t\t\treturn modifierConflicts;\n\t\t\t}\n\t\t\treturn baseConflicts || EMPTY_CONFLICTS;\n\t\t}\n\t\treturn conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n\t};\n\treturn {\n\t\tgetClassGroupId,\n\t\tgetConflictingClassGroupIds\n\t};\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n\tif (classParts.length - startIndex === 0) return classPartObject.classGroupId;\n\tconst currentClassPart = classParts[startIndex];\n\tconst nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n\tif (nextClassPartObject) {\n\t\tconst result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n\t\tif (result) return result;\n\t}\n\tconst validators = classPartObject.validators;\n\tif (validators === null) return;\n\tconst classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n\tconst validatorsLength = validators.length;\n\tfor (let index = 0; index < validatorsLength; index++) {\n\t\tconst validatorObject = validators[index];\n\t\tif (validatorObject.validator(classRest)) return validatorObject.classGroupId;\n\t}\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) => {\n\tconst content = className.slice(1, -1);\n\tconst colonIndex = content.indexOf(\":\");\n\tif (colonIndex === -1) return;\n\tconst property = content.slice(0, colonIndex);\n\treturn property ? ARBITRARY_PROPERTY_PREFIX + property : void 0;\n};\n/**\n* Exported for testing only\n*/\nconst createClassMap = (config) => {\n\tconst { theme, classGroups } = config;\n\treturn processClassGroups(classGroups, theme);\n};\nconst processClassGroups = (classGroups, theme) => {\n\tconst classMap = createClassPartObject();\n\tfor (const classGroupId in classGroups) {\n\t\tconst group = classGroups[classGroupId];\n\t\tprocessClassesRecursively(group, classMap, classGroupId, theme);\n\t}\n\treturn classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n\tconst length = classGroup.length;\n\tfor (let index = 0; index < length; index++) {\n\t\tconst classDefinition = classGroup[index];\n\t\tprocessClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n\t}\n};\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n\tif (typeof classDefinition === \"string\") {\n\t\tprocessStringDefinition(classDefinition, classPartObject, classGroupId);\n\t\treturn;\n\t}\n\tif (typeof classDefinition === \"function\") {\n\t\tprocessFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n\t\treturn;\n\t}\n\tprocessObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n\tconst classPartObjectToEdit = classDefinition === \"\" ? classPartObject : getPart(classPartObject, classDefinition);\n\tclassPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n\tif (isThemeGetter(classDefinition)) {\n\t\tprocessClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n\t\treturn;\n\t}\n\tif (classPartObject.validators === null) classPartObject.validators = [];\n\tclassPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n\tconst entries = Object.entries(classDefinition);\n\tconst length = entries.length;\n\tfor (let index = 0; index < length; index++) {\n\t\tconst [key, value] = entries[index];\n\t\tprocessClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n\t}\n};\nconst getPart = (classPartObject, path) => {\n\tlet current = classPartObject;\n\tconst parts = path.split(CLASS_PART_SEPARATOR);\n\tconst length = parts.length;\n\tfor (let index = 0; index < length; index++) {\n\t\tconst part = parts[index];\n\t\tlet next = current.nextPart.get(part);\n\t\tif (!next) {\n\t\t\tnext = createClassPartObject();\n\t\t\tcurrent.nextPart.set(part, next);\n\t\t}\n\t\tcurrent = next;\n\t}\n\treturn current;\n};\nconst isThemeGetter = (classDefinition) => \"isThemeGetter\" in classDefinition && classDefinition.isThemeGetter === true;\n\n//#endregion\n//#region src/lib/parse-class-name.ts\nconst CHAR_MODIFIER_SEPARATOR = 58;\nconst CHAR_POSTFIX_SEPARATOR = 47;\nconst CHAR_OPEN_BRACKET = 91;\nconst CHAR_CLOSE_BRACKET = 93;\nconst CHAR_OPEN_PAREN = 40;\nconst CHAR_CLOSE_PAREN = 41;\nconst CHAR_IMPORTANT = 33;\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition) => ({\n\tmodifiers,\n\thasImportantModifier,\n\tbaseClassName,\n\tmaybePostfixModifierPosition,\n\tisExternal: void 0\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*/\nconst parseClassName = (className) => {\n\tconst modifiers = [];\n\tlet bracketDepth = 0;\n\tlet parenDepth = 0;\n\tlet modifierStart = 0;\n\tlet postfixModifierPosition;\n\tconst len = className.length;\n\tfor (let index = 0; index < len; index++) {\n\t\tconst charCode = className.charCodeAt(index);\n\t\tif (bracketDepth === 0 && parenDepth === 0) {\n\t\t\tif (charCode === CHAR_MODIFIER_SEPARATOR) {\n\t\t\t\tmodifiers.push(className.slice(modifierStart, index));\n\t\t\t\tmodifierStart = index + 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (charCode === CHAR_POSTFIX_SEPARATOR) {\n\t\t\t\tpostfixModifierPosition = index;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\tif (charCode === CHAR_OPEN_BRACKET) bracketDepth++;\n\t\telse if (charCode === CHAR_CLOSE_BRACKET) bracketDepth--;\n\t\telse if (charCode === CHAR_OPEN_PAREN) parenDepth++;\n\t\telse if (charCode === CHAR_CLOSE_PAREN) parenDepth--;\n\t}\n\tconst baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n\tlet baseClassName = baseClassNameWithImportantModifier;\n\tlet hasImportantModifier = false;\n\tconst lastIndex = baseClassNameWithImportantModifier.length - 1;\n\tif (baseClassNameWithImportantModifier.charCodeAt(lastIndex) === CHAR_IMPORTANT) {\n\t\tbaseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n\t\thasImportantModifier = true;\n\t} else if (baseClassNameWithImportantModifier.charCodeAt(0) === CHAR_IMPORTANT) {\n\t\tbaseClassName = baseClassNameWithImportantModifier.slice(1);\n\t\thasImportantModifier = true;\n\t}\n\tconst maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : void 0;\n\treturn createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n};\n\n//#endregion\n//#region src/lib/sort-modifiers.ts\n/**\n* Sorts modifiers according to following schema:\n* - Predefined modifiers are sorted alphabetically\n* - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n*/\nconst createSortModifiers = (config) => {\n\tconst orderSensitiveModifiers = new Set(config.orderSensitiveModifiers);\n\treturn (modifiers) => {\n\t\tconst result = [];\n\t\tlet currentSegment = [];\n\t\tfor (let index = 0; index < modifiers.length; index++) {\n\t\t\tconst modifier = modifiers[index];\n\t\t\tconst isArbitrary = modifier[0] === \"[\";\n\t\t\tconst isOrderSensitive = orderSensitiveModifiers.has(modifier);\n\t\t\tif (isArbitrary || isOrderSensitive) {\n\t\t\t\tif (currentSegment.length > 0) {\n\t\t\t\t\tcurrentSegment.sort();\n\t\t\t\t\tfor (let segmentIndex = 0; segmentIndex < currentSegment.length; segmentIndex++) result.push(currentSegment[segmentIndex]);\n\t\t\t\t\tcurrentSegment = [];\n\t\t\t\t}\n\t\t\t\tresult.push(modifier);\n\t\t\t} else currentSegment.push(modifier);\n\t\t}\n\t\tif (currentSegment.length > 0) {\n\t\t\tcurrentSegment.sort();\n\t\t\tfor (let segmentIndex = 0; segmentIndex < currentSegment.length; segmentIndex++) result.push(currentSegment[segmentIndex]);\n\t\t}\n\t\treturn result;\n\t};\n};\n\n//#endregion\n//#region src/lib/config-utils.ts\nconst EXTERNAL_DESCRIPTOR = {\n\tisExternal: true,\n\tclassId: -1,\n\tconflictIds: []\n};\n/**\n* Per-token descriptor cache capacity (entries). Larger than the whole-string LRU because\n* individual tokens are far more numerous but cheap to store; the LRU bound prevents\n* unbounded growth when callers pass dynamically generated arbitrary values (e.g. `w-[123px]`).\n*/\nconst DESCRIPTOR_CACHE_SIZE = 4096;\nconst createConfigUtils = (config) => {\n\tconst sortModifiers = createSortModifiers(config);\n\tconst postfixLookupClassGroupIds = createPostfixLookupClassGroupIds(config);\n\tconst { getClassGroupId, getConflictingClassGroupIds } = createClassGroupUtils(config);\n\tlet descriptorCache = Object.create(null);\n\tlet previousDescriptorCache = Object.create(null);\n\tlet descriptorCacheSize = 0;\n\tlet claimedGeneration = new Int32Array(256);\n\tlet currentGeneration = 0;\n\tlet keepFlags = new Uint8Array(64);\n\tlet splitSawNonSpaceWhitespace = false;\n\tconst splitClassList = (classList) => {\n\t\tconst tokens = [];\n\t\tconst length = classList.length;\n\t\tlet tokenStart = -1;\n\t\tsplitSawNonSpaceWhitespace = false;\n\t\tfor (let index = 0; index < length; index++) {\n\t\t\tconst charCode = classList.charCodeAt(index);\n\t\t\tif (charCode === 32) {\n\t\t\t\tif (tokenStart !== -1) {\n\t\t\t\t\ttokens.push(classList.slice(tokenStart, index));\n\t\t\t\t\ttokenStart = -1;\n\t\t\t\t}\n\t\t\t} else if (charCode >= 9 && charCode <= 13) {\n\t\t\t\tsplitSawNonSpaceWhitespace = true;\n\t\t\t\tif (tokenStart !== -1) {\n\t\t\t\t\ttokens.push(classList.slice(tokenStart, index));\n\t\t\t\t\ttokenStart = -1;\n\t\t\t\t}\n\t\t\t} else if (tokenStart === -1) tokenStart = index;\n\t\t}\n\t\tif (tokenStart !== -1) tokens.push(classList.slice(tokenStart));\n\t\treturn tokens;\n\t};\n\tconst conflictKeyIds = /* @__PURE__ */ new Map();\n\tlet nextConflictKeyId = 0;\n\tconst internConflictKey = (conflictKey) => {\n\t\tlet id = conflictKeyIds.get(conflictKey);\n\t\tif (id === void 0) {\n\t\t\tid = nextConflictKeyId++;\n\t\t\tconflictKeyIds.set(conflictKey, id);\n\t\t\tif (id >= claimedGeneration.length) {\n\t\t\t\tconst grown = new Int32Array(claimedGeneration.length * 2);\n\t\t\t\tgrown.set(claimedGeneration);\n\t\t\t\tclaimedGeneration = grown;\n\t\t\t}\n\t\t}\n\t\treturn id;\n\t};\n\tconst computeClassDescriptor = (originalClassName) => {\n\t\tconst { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName);\n\t\tif (isExternal) return EXTERNAL_DESCRIPTOR;\n\t\tlet hasPostfixModifier = Boolean(maybePostfixModifierPosition);\n\t\tlet classGroupId;\n\t\tif (hasPostfixModifier) {\n\t\t\tclassGroupId = getClassGroupId(baseClassName.substring(0, maybePostfixModifierPosition));\n\t\t\tconst classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : void 0;\n\t\t\tif (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n\t\t\t\tclassGroupId = classGroupIdWithPostfix;\n\t\t\t\thasPostfixModifier = false;\n\t\t\t}\n\t\t} else classGroupId = getClassGroupId(baseClassName);\n\t\tif (!classGroupId) {\n\t\t\tif (!hasPostfixModifier) return EXTERNAL_DESCRIPTOR;\n\t\t\tclassGroupId = getClassGroupId(baseClassName);\n\t\t\tif (!classGroupId) return EXTERNAL_DESCRIPTOR;\n\t\t\thasPostfixModifier = false;\n\t\t}\n\t\tconst variantModifier = modifiers.length === 0 ? \"\" : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(\":\");\n\t\tconst modifierId = hasImportantModifier ? variantModifier + \"!\" : variantModifier;\n\t\tconst conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n\t\tconst conflictIds = [];\n\t\tfor (let index = 0; index < conflictGroups.length; index++) conflictIds.push(internConflictKey(modifierId + conflictGroups[index]));\n\t\treturn {\n\t\t\tisExternal: false,\n\t\t\tclassId: internConflictKey(modifierId + classGroupId),\n\t\t\tconflictIds\n\t\t};\n\t};\n\tconst getClassDescriptor = (originalClassName) => {\n\t\tlet descriptor = descriptorCache[originalClassName];\n\t\tif (descriptor !== void 0) return descriptor;\n\t\tdescriptor = previousDescriptorCache[originalClassName];\n\t\tif (descriptor === void 0) descriptor = computeClassDescriptor(originalClassName);\n\t\tdescriptorCache[originalClassName] = descriptor;\n\t\tif (++descriptorCacheSize > DESCRIPTOR_CACHE_SIZE) {\n\t\t\tdescriptorCacheSize = 0;\n\t\t\tpreviousDescriptorCache = descriptorCache;\n\t\t\tdescriptorCache = Object.create(null);\n\t\t}\n\t\treturn descriptor;\n\t};\n\tconst mergeClassList = (classList) => {\n\t\tconst classNames = splitClassList(classList);\n\t\tconst classCount = classNames.length;\n\t\tif (classCount === 1) return classNames[0];\n\t\tcurrentGeneration = currentGeneration + 1 | 0;\n\t\tif (currentGeneration === 0) currentGeneration = 1;\n\t\tconst generation = currentGeneration;\n\t\tif (classCount > keepFlags.length) {\n\t\t\tlet capacity = keepFlags.length;\n\t\t\twhile (capacity < classCount) capacity *= 2;\n\t\t\tkeepFlags = new Uint8Array(capacity);\n\t\t}\n\t\tlet didDrop = false;\n\t\tlet tokenCharCount = 0;\n\t\tfor (let index = classCount - 1; index >= 0; index -= 1) {\n\t\t\tconst className = classNames[index];\n\t\t\ttokenCharCount += className.length;\n\t\t\tconst descriptor = getClassDescriptor(className);\n\t\t\tif (descriptor.isExternal) {\n\t\t\t\tkeepFlags[index] = 1;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst classId = descriptor.classId;\n\t\t\tif (claimedGeneration[classId] === generation) {\n\t\t\t\tkeepFlags[index] = 0;\n\t\t\t\tdidDrop = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tclaimedGeneration[classId] = generation;\n\t\t\tconst conflictIds = descriptor.conflictIds;\n\t\t\tfor (let conflictIndex = 0; conflictIndex < conflictIds.length; conflictIndex++) claimedGeneration[conflictIds[conflictIndex]] = generation;\n\t\t\tkeepFlags[index] = 1;\n\t\t}\n\t\tif (!didDrop && !splitSawNonSpaceWhitespace && classList.length === tokenCharCount + classCount - 1) return classList;\n\t\tlet result = \"\";\n\t\tfor (let index = 0; index < classCount; index++) if (keepFlags[index] === 1) {\n\t\t\tif (result) result += \" \";\n\t\t\tresult += classNames[index];\n\t\t}\n\t\treturn result;\n\t};\n\treturn {\n\t\tparseClassName,\n\t\tsortModifiers,\n\t\tpostfixLookupClassGroupIds,\n\t\tgetClassGroupId,\n\t\tgetConflictingClassGroupIds,\n\t\tgetClassDescriptor,\n\t\tmergeClassList\n\t};\n};\nconst createPostfixLookupClassGroupIds = (config) => {\n\tconst lookup = Object.create(null);\n\tconst classGroupIds = config.postfixLookupClassGroups;\n\tif (classGroupIds) for (let index = 0; index < classGroupIds.length; index++) lookup[classGroupIds[index]] = true;\n\treturn lookup;\n};\n\n//#endregion\n//#region src/lib/tw-join.ts\nconst twJoin = (...classLists) => {\n\tlet index = 0;\n\tlet argument;\n\tlet resolvedValue;\n\tlet string = \"\";\n\twhile (index < classLists.length) if (argument = classLists[index++]) {\n\t\tif (resolvedValue = toValue(argument)) {\n\t\t\tif (string) string += \" \";\n\t\t\tstring += resolvedValue;\n\t\t}\n\t}\n\treturn string;\n};\nconst toValue = (value) => {\n\tif (typeof value === \"string\") return value;\n\tlet resolvedValue;\n\tlet string = \"\";\n\tfor (let index = 0; index < value.length; index++) if (value[index]) {\n\t\tif (resolvedValue = toValue(value[index])) {\n\t\t\tif (string) string += \" \";\n\t\t\tstring += resolvedValue;\n\t\t}\n\t}\n\treturn string;\n};\n\n//#endregion\n//#region src/lib/create-tailwind-merge.ts\n/**\n* Whole-string result cache capacity. Matches tailwind-merge's default; cnfast ships a single,\n* non-configurable config so it is baked in rather than exposed as an option.\n*/\nconst MERGE_CACHE_SIZE = 500;\nconst createTailwindMerge = (createConfig) => {\n\tlet configUtils;\n\tlet mergeClassList;\n\tlet cache = Object.create(null);\n\tlet previousCache = Object.create(null);\n\tlet cacheSize = 0;\n\tconst initTailwindMerge = (classList) => {\n\t\tconfigUtils = createConfigUtils(createConfig());\n\t\tmergeClassList = configUtils.mergeClassList;\n\t\tmerge.mergeString = tailwindMerge;\n\t\treturn tailwindMerge(classList);\n\t};\n\tconst tailwindMerge = (classList) => {\n\t\tlet result = cache[classList];\n\t\tif (result !== void 0) return result;\n\t\tresult = previousCache[classList];\n\t\tif (result === void 0) result = mergeClassList(classList);\n\t\tcache[classList] = result;\n\t\tif (++cacheSize > MERGE_CACHE_SIZE) {\n\t\t\tcacheSize = 0;\n\t\t\tpreviousCache = cache;\n\t\t\tcache = Object.create(null);\n\t\t}\n\t\treturn result;\n\t};\n\tconst merge = (...args) => merge.mergeString(twJoin(...args));\n\tmerge.mergeString = initTailwindMerge;\n\treturn merge;\n};\n\n//#endregion\n//#region src/lib/from-theme.ts\nconst fallbackThemeArr = [];\nconst fromTheme = (key) => {\n\tconst themeGetter = (theme) => theme[key] || fallbackThemeArr;\n\tthemeGetter.isThemeGetter = true;\n\treturn themeGetter;\n};\n\n//#endregion\n//#region src/lib/validators.ts\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst toNumber = Number;\nconst numberIsNaN = Number.isNaN;\nconst numberIsInteger = Number.isInteger;\nconst isFraction = (value) => fractionRegex.test(value);\nconst isNumber = (value) => Boolean(value) && !numberIsNaN(toNumber(value));\nconst isInteger = (value) => Boolean(value) && numberIsInteger(toNumber(value));\nconst isPercent = (value) => value.endsWith(\"%\") && isNumber(value.slice(0, -1));\nconst isTshirtSize = (value) => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = (value) => lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = (value) => shadowRegex.test(value);\nconst isImage = (value) => imageRegex.test(value);\nconst isAnyNonArbitrary = (value) => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isNamedContainerQuery = (value) => value.startsWith(\"@container\") && (value[10] === \"/\" && value[11] !== void 0 || value[11] === \"s\" && value[16] !== void 0 && value.startsWith(\"-size/\", 10) || value[11] === \"n\" && value[18] !== void 0 && value.startsWith(\"-normal/\", 10));\nconst isArbitrarySize = (value) => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = (value) => arbitraryValueRegex.test(value);\nconst isArbitraryLength = (value) => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = (value) => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = (value) => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = (value) => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = (value) => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = (value) => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = (value) => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = (value) => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = (value) => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = (value) => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = (value) => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = (value) => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = (value) => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = (value) => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = (value) => getIsArbitraryVariable(value, isLabelWeight, true);\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n\tconst result = arbitraryValueRegex.exec(value);\n\tif (result) {\n\t\tif (result[1]) return testLabel(result[1]);\n\t\treturn testValue(result[2]);\n\t}\n\treturn false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n\tconst result = arbitraryVariableRegex.exec(value);\n\tif (result) {\n\t\tif (result[1]) return testLabel(result[1]);\n\t\treturn shouldMatchNoLabel;\n\t}\n\treturn false;\n};\nconst isLabelPosition = (label) => label === \"position\" || label === \"percentage\";\nconst isLabelImage = (label) => label === \"image\" || label === \"url\";\nconst isLabelSize = (label) => label === \"length\" || label === \"size\" || label === \"bg-size\";\nconst isLabelLength = (label) => label === \"length\";\nconst isLabelNumber = (label) => label === \"number\";\nconst isLabelFamilyName = (label) => label === \"family-name\";\nconst isLabelWeight = (label) => label === \"number\" || label === \"weight\";\nconst isLabelShadow = (label) => label === \"shadow\";\n\n//#endregion\n//#region src/lib/default-config.ts\nconst getDefaultConfig = () => {\n\t/**\n\t* Theme getters for theme variable namespaces\n\t* @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n\t*/\n\tconst themeColor = fromTheme(\"color\");\n\tconst themeFont = fromTheme(\"font\");\n\tconst themeText = fromTheme(\"text\");\n\tconst themeFontWeight = fromTheme(\"font-weight\");\n\tconst themeTracking = fromTheme(\"tracking\");\n\tconst themeLeading = fromTheme(\"leading\");\n\tconst themeBreakpoint = fromTheme(\"breakpoint\");\n\tconst themeContainer = fromTheme(\"container\");\n\tconst themeSpacing = fromTheme(\"spacing\");\n\tconst themeRadius = fromTheme(\"radius\");\n\tconst themeShadow = fromTheme(\"shadow\");\n\tconst themeInsetShadow = fromTheme(\"inset-shadow\");\n\tconst themeTextShadow = fromTheme(\"text-shadow\");\n\tconst themeDropShadow = fromTheme(\"drop-shadow\");\n\tconst themeBlur = fromTheme(\"blur\");\n\tconst themePerspective = fromTheme(\"perspective\");\n\tconst themeAspect = fromTheme(\"aspect\");\n\tconst themeEase = fromTheme(\"ease\");\n\tconst themeAnimate = fromTheme(\"animate\");\n\t/**\n\t* Helpers to avoid repeating the same scales\n\t*\n\t* We use functions that create a new array every time they're called instead of static arrays.\n\t* 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\t*/\n\tconst scaleBreak = () => [\n\t\t\"auto\",\n\t\t\"avoid\",\n\t\t\"all\",\n\t\t\"avoid-page\",\n\t\t\"page\",\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"column\"\n\t];\n\tconst scalePosition = () => [\n\t\t\"center\",\n\t\t\"top\",\n\t\t\"bottom\",\n\t\t\"left\",\n\t\t\"right\",\n\t\t\"top-left\",\n\t\t\"left-top\",\n\t\t\"top-right\",\n\t\t\"right-top\",\n\t\t\"bottom-right\",\n\t\t\"right-bottom\",\n\t\t\"bottom-left\",\n\t\t\"left-bottom\"\n\t];\n\tconst scalePositionWithArbitrary = () => [\n\t\t...scalePosition(),\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleOverflow = () => [\n\t\t\"auto\",\n\t\t\"hidden\",\n\t\t\"clip\",\n\t\t\"visible\",\n\t\t\"scroll\"\n\t];\n\tconst scaleOverscroll = () => [\n\t\t\"auto\",\n\t\t\"contain\",\n\t\t\"none\"\n\t];\n\tconst scaleUnambiguousSpacing = () => [\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue,\n\t\tthemeSpacing\n\t];\n\tconst scaleInset = () => [\n\t\tisFraction,\n\t\t\"full\",\n\t\t\"auto\",\n\t\t...scaleUnambiguousSpacing()\n\t];\n\tconst scaleGridTemplateColsRows = () => [\n\t\tisInteger,\n\t\t\"none\",\n\t\t\"subgrid\",\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleGridColRowStartAndEnd = () => [\n\t\t\"auto\",\n\t\t{ span: [\n\t\t\t\"full\",\n\t\t\tisInteger,\n\t\t\tisArbitraryVariable,\n\t\t\tisArbitraryValue\n\t\t] },\n\t\tisInteger,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleGridColRowStartOrEnd = () => [\n\t\tisInteger,\n\t\t\"auto\",\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleGridAutoColsRows = () => [\n\t\t\"auto\",\n\t\t\"min\",\n\t\t\"max\",\n\t\t\"fr\",\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleAlignPrimaryAxis = () => [\n\t\t\"start\",\n\t\t\"end\",\n\t\t\"center\",\n\t\t\"between\",\n\t\t\"around\",\n\t\t\"evenly\",\n\t\t\"stretch\",\n\t\t\"baseline\",\n\t\t\"center-safe\",\n\t\t\"end-safe\"\n\t];\n\tconst scaleAlignSecondaryAxis = () => [\n\t\t\"start\",\n\t\t\"end\",\n\t\t\"center\",\n\t\t\"stretch\",\n\t\t\"center-safe\",\n\t\t\"end-safe\"\n\t];\n\tconst scaleMargin = () => [\"auto\", ...scaleUnambiguousSpacing()];\n\tconst scaleSizing = () => [\n\t\tisFraction,\n\t\t\"auto\",\n\t\t\"full\",\n\t\t\"dvw\",\n\t\t\"dvh\",\n\t\t\"lvw\",\n\t\t\"lvh\",\n\t\t\"svw\",\n\t\t\"svh\",\n\t\t\"min\",\n\t\t\"max\",\n\t\t\"fit\",\n\t\t...scaleUnambiguousSpacing()\n\t];\n\tconst scaleSizingInline = () => [\n\t\tisFraction,\n\t\t\"screen\",\n\t\t\"full\",\n\t\t\"dvw\",\n\t\t\"lvw\",\n\t\t\"svw\",\n\t\t\"min\",\n\t\t\"max\",\n\t\t\"fit\",\n\t\t...scaleUnambiguousSpacing()\n\t];\n\tconst scaleSizingBlock = () => [\n\t\tisFraction,\n\t\t\"screen\",\n\t\t\"full\",\n\t\t\"lh\",\n\t\t\"dvh\",\n\t\t\"lvh\",\n\t\t\"svh\",\n\t\t\"min\",\n\t\t\"max\",\n\t\t\"fit\",\n\t\t...scaleUnambiguousSpacing()\n\t];\n\tconst scaleColor = () => [\n\t\tthemeColor,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleBgPosition = () => [\n\t\t...scalePosition(),\n\t\tisArbitraryVariablePosition,\n\t\tisArbitraryPosition,\n\t\t{ position: [isArbitraryVariable, isArbitraryValue] }\n\t];\n\tconst scaleBgRepeat = () => [\"no-repeat\", { repeat: [\n\t\t\"\",\n\t\t\"x\",\n\t\t\"y\",\n\t\t\"space\",\n\t\t\"round\"\n\t] }];\n\tconst scaleBgSize = () => [\n\t\t\"auto\",\n\t\t\"cover\",\n\t\t\"contain\",\n\t\tisArbitraryVariableSize,\n\t\tisArbitrarySize,\n\t\t{ size: [isArbitraryVariable, isArbitraryValue] }\n\t];\n\tconst scaleGradientStopPosition = () => [\n\t\tisPercent,\n\t\tisArbitraryVariableLength,\n\t\tisArbitraryLength\n\t];\n\tconst scaleRadius = () => [\n\t\t\"\",\n\t\t\"none\",\n\t\t\"full\",\n\t\tthemeRadius,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleBorderWidth = () => [\n\t\t\"\",\n\t\tisNumber,\n\t\tisArbitraryVariableLength,\n\t\tisArbitraryLength\n\t];\n\tconst scaleLineStyle = () => [\n\t\t\"solid\",\n\t\t\"dashed\",\n\t\t\"dotted\",\n\t\t\"double\"\n\t];\n\tconst scaleBlendMode = () => [\n\t\t\"normal\",\n\t\t\"multiply\",\n\t\t\"screen\",\n\t\t\"overlay\",\n\t\t\"darken\",\n\t\t\"lighten\",\n\t\t\"color-dodge\",\n\t\t\"color-burn\",\n\t\t\"hard-light\",\n\t\t\"soft-light\",\n\t\t\"difference\",\n\t\t\"exclusion\",\n\t\t\"hue\",\n\t\t\"saturation\",\n\t\t\"color\",\n\t\t\"luminosity\"\n\t];\n\tconst scaleMaskImagePosition = () => [\n\t\tisNumber,\n\t\tisPercent,\n\t\tisArbitraryVariablePosition,\n\t\tisArbitraryPosition\n\t];\n\tconst scaleBlur = () => [\n\t\t\"\",\n\t\t\"none\",\n\t\tthemeBlur,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleRotate = () => [\n\t\t\"none\",\n\t\tisNumber,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleScale = () => [\n\t\t\"none\",\n\t\tisNumber,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleSkew = () => [\n\t\tisNumber,\n\t\tisArbitraryVariable,\n\t\tisArbitraryValue\n\t];\n\tconst scaleTranslate = () => [\n\t\tisFraction,\n\t\t\"full\",\n\t\t...scaleUnambiguousSpacing()\n\t];\n\treturn {\n\t\ttheme: {\n\t\t\tanimate: [\n\t\t\t\t\"spin\",\n\t\t\t\t\"ping\",\n\t\t\t\t\"pulse\",\n\t\t\t\t\"bounce\"\n\t\t\t],\n\t\t\taspect: [\"video\"],\n\t\t\tblur: [isTshirtSize],\n\t\t\tbreakpoint: [isTshirtSize],\n\t\t\tcolor: [isAny],\n\t\t\tcontainer: [isTshirtSize],\n\t\t\t\"drop-shadow\": [isTshirtSize],\n\t\t\tease: [\n\t\t\t\t\"in\",\n\t\t\t\t\"out\",\n\t\t\t\t\"in-out\"\n\t\t\t],\n\t\t\tfont: [isAnyNonArbitrary],\n\t\t\t\"font-weight\": [\n\t\t\t\t\"thin\",\n\t\t\t\t\"extralight\",\n\t\t\t\t\"light\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"medium\",\n\t\t\t\t\"semibold\",\n\t\t\t\t\"bold\",\n\t\t\t\t\"extrabold\",\n\t\t\t\t\"black\"\n\t\t\t],\n\t\t\t\"inset-shadow\": [isTshirtSize],\n\t\t\tleading: [\n\t\t\t\t\"none\",\n\t\t\t\t\"tight\",\n\t\t\t\t\"snug\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"relaxed\",\n\t\t\t\t\"loose\"\n\t\t\t],\n\t\t\tperspective: [\n\t\t\t\t\"dramatic\",\n\t\t\t\t\"near\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"midrange\",\n\t\t\t\t\"distant\",\n\t\t\t\t\"none\"\n\t\t\t],\n\t\t\tradius: [isTshirtSize],\n\t\t\tshadow: [isTshirtSize],\n\t\t\tspacing: [\"px\", isNumber],\n\t\t\ttext: [isTshirtSize],\n\t\t\t\"text-shadow\": [isTshirtSize],\n\t\t\ttracking: [\n\t\t\t\t\"tighter\",\n\t\t\t\t\"tight\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"wide\",\n\t\t\t\t\"wider\",\n\t\t\t\t\"widest\"\n\t\t\t]\n\t\t},\n\t\tclassGroups: {\n\t\t\t/**\n\t\t\t* Aspect Ratio\n\t\t\t* @see https://tailwindcss.com/docs/aspect-ratio\n\t\t\t*/\n\t\t\taspect: [{ aspect: [\n\t\t\t\t\"auto\",\n\t\t\t\t\"square\",\n\t\t\t\tisFraction,\n\t\t\t\tisArbitraryValue,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tthemeAspect\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Container\n\t\t\t* @see https://tailwindcss.com/docs/container\n\t\t\t* @deprecated since Tailwind CSS v4.0.0\n\t\t\t*/\n\t\t\tcontainer: [\"container\"],\n\t\t\t/**\n\t\t\t* Container Type\n\t\t\t* @see https://tailwindcss.com/docs/responsive-design#container-queries\n\t\t\t*/\n\t\t\t\"container-type\": [{ \"@container\": [\n\t\t\t\t\"\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"size\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Container Name\n\t\t\t* @see https://tailwindcss.com/docs/responsive-design#named-containers\n\t\t\t*/\n\t\t\t\"container-named\": [isNamedContainerQuery],\n\t\t\t/**\n\t\t\t* Columns\n\t\t\t* @see https://tailwindcss.com/docs/columns\n\t\t\t*/\n\t\t\tcolumns: [{ columns: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryValue,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tthemeContainer\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Break After\n\t\t\t* @see https://tailwindcss.com/docs/break-after\n\t\t\t*/\n\t\t\t\"break-after\": [{ \"break-after\": scaleBreak() }],\n\t\t\t/**\n\t\t\t* Break Before\n\t\t\t* @see https://tailwindcss.com/docs/break-before\n\t\t\t*/\n\t\t\t\"break-before\": [{ \"break-before\": scaleBreak() }],\n\t\t\t/**\n\t\t\t* Break Inside\n\t\t\t* @see https://tailwindcss.com/docs/break-inside\n\t\t\t*/\n\t\t\t\"break-inside\": [{ \"break-inside\": [\n\t\t\t\t\"auto\",\n\t\t\t\t\"avoid\",\n\t\t\t\t\"avoid-page\",\n\t\t\t\t\"avoid-column\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Box Decoration Break\n\t\t\t* @see https://tailwindcss.com/docs/box-decoration-break\n\t\t\t*/\n\t\t\t\"box-decoration\": [{ \"box-decoration\": [\"slice\", \"clone\"] }],\n\t\t\t/**\n\t\t\t* Box Sizing\n\t\t\t* @see https://tailwindcss.com/docs/box-sizing\n\t\t\t*/\n\t\t\tbox: [{ box: [\"border\", \"content\"] }],\n\t\t\t/**\n\t\t\t* Display\n\t\t\t* @see https://tailwindcss.com/docs/display\n\t\t\t*/\n\t\t\tdisplay: [\n\t\t\t\t\"block\",\n\t\t\t\t\"inline-block\",\n\t\t\t\t\"inline\",\n\t\t\t\t\"flex\",\n\t\t\t\t\"inline-flex\",\n\t\t\t\t\"table\",\n\t\t\t\t\"inline-table\",\n\t\t\t\t\"table-caption\",\n\t\t\t\t\"table-cell\",\n\t\t\t\t\"table-column\",\n\t\t\t\t\"table-column-group\",\n\t\t\t\t\"table-footer-group\",\n\t\t\t\t\"table-header-group\",\n\t\t\t\t\"table-row-group\",\n\t\t\t\t\"table-row\",\n\t\t\t\t\"flow-root\",\n\t\t\t\t\"grid\",\n\t\t\t\t\"inline-grid\",\n\t\t\t\t\"contents\",\n\t\t\t\t\"list-item\",\n\t\t\t\t\"hidden\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Screen Reader Only\n\t\t\t* @see https://tailwindcss.com/docs/display#screen-reader-only\n\t\t\t*/\n\t\t\tsr: [\"sr-only\", \"not-sr-only\"],\n\t\t\t/**\n\t\t\t* Floats\n\t\t\t* @see https://tailwindcss.com/docs/float\n\t\t\t*/\n\t\t\tfloat: [{ float: [\n\t\t\t\t\"right\",\n\t\t\t\t\"left\",\n\t\t\t\t\"none\",\n\t\t\t\t\"start\",\n\t\t\t\t\"end\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Clear\n\t\t\t* @see https://tailwindcss.com/docs/clear\n\t\t\t*/\n\t\t\tclear: [{ clear: [\n\t\t\t\t\"left\",\n\t\t\t\t\"right\",\n\t\t\t\t\"both\",\n\t\t\t\t\"none\",\n\t\t\t\t\"start\",\n\t\t\t\t\"end\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Isolation\n\t\t\t* @see https://tailwindcss.com/docs/isolation\n\t\t\t*/\n\t\t\tisolation: [\"isolate\", \"isolation-auto\"],\n\t\t\t/**\n\t\t\t* Object Fit\n\t\t\t* @see https://tailwindcss.com/docs/object-fit\n\t\t\t*/\n\t\t\t\"object-fit\": [{ object: [\n\t\t\t\t\"contain\",\n\t\t\t\t\"cover\",\n\t\t\t\t\"fill\",\n\t\t\t\t\"none\",\n\t\t\t\t\"scale-down\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Object Position\n\t\t\t* @see https://tailwindcss.com/docs/object-position\n\t\t\t*/\n\t\t\t\"object-position\": [{ object: scalePositionWithArbitrary() }],\n\t\t\t/**\n\t\t\t* Overflow\n\t\t\t* @see https://tailwindcss.com/docs/overflow\n\t\t\t*/\n\t\t\toverflow: [{ overflow: scaleOverflow() }],\n\t\t\t/**\n\t\t\t* Overflow X\n\t\t\t* @see https://tailwindcss.com/docs/overflow\n\t\t\t*/\n\t\t\t\"overflow-x\": [{ \"overflow-x\": scaleOverflow() }],\n\t\t\t/**\n\t\t\t* Overflow Y\n\t\t\t* @see https://tailwindcss.com/docs/overflow\n\t\t\t*/\n\t\t\t\"overflow-y\": [{ \"overflow-y\": scaleOverflow() }],\n\t\t\t/**\n\t\t\t* Overscroll Behavior\n\t\t\t* @see https://tailwindcss.com/docs/overscroll-behavior\n\t\t\t*/\n\t\t\toverscroll: [{ overscroll: scaleOverscroll() }],\n\t\t\t/**\n\t\t\t* Overscroll Behavior X\n\t\t\t* @see https://tailwindcss.com/docs/overscroll-behavior\n\t\t\t*/\n\t\t\t\"overscroll-x\": [{ \"overscroll-x\": scaleOverscroll() }],\n\t\t\t/**\n\t\t\t* Overscroll Behavior Y\n\t\t\t* @see https://tailwindcss.com/docs/overscroll-behavior\n\t\t\t*/\n\t\t\t\"overscroll-y\": [{ \"overscroll-y\": scaleOverscroll() }],\n\t\t\t/**\n\t\t\t* Position\n\t\t\t* @see https://tailwindcss.com/docs/position\n\t\t\t*/\n\t\t\tposition: [\n\t\t\t\t\"static\",\n\t\t\t\t\"fixed\",\n\t\t\t\t\"absolute\",\n\t\t\t\t\"relative\",\n\t\t\t\t\"sticky\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Inset\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\tinset: [{ inset: scaleInset() }],\n\t\t\t/**\n\t\t\t* Inset Inline\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\t\"inset-x\": [{ \"inset-x\": scaleInset() }],\n\t\t\t/**\n\t\t\t* Inset Block\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\t\"inset-y\": [{ \"inset-y\": scaleInset() }],\n\t\t\t/**\n\t\t\t* Inset Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t* @todo class group will be renamed to `inset-s` in next major release\n\t\t\t*/\n\t\t\tstart: [{\n\t\t\t\t\"inset-s\": scaleInset(),\n\t\t\t\t/**\n\t\t\t\t* @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n\t\t\t\t* @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n\t\t\t\t*/\n\t\t\t\tstart: scaleInset()\n\t\t\t}],\n\t\t\t/**\n\t\t\t* Inset Inline End\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t* @todo class group will be renamed to `inset-e` in next major release\n\t\t\t*/\n\t\t\tend: [{\n\t\t\t\t\"inset-e\": scaleInset(),\n\t\t\t\t/**\n\t\t\t\t* @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n\t\t\t\t* @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n\t\t\t\t*/\n\t\t\t\tend: scaleInset()\n\t\t\t}],\n\t\t\t/**\n\t\t\t* Inset Block Start\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\t\"inset-bs\": [{ \"inset-bs\": scaleInset() }],\n\t\t\t/**\n\t\t\t* Inset Block End\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\t\"inset-be\": [{ \"inset-be\": scaleInset() }],\n\t\t\t/**\n\t\t\t* Top\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\ttop: [{ top: scaleInset() }],\n\t\t\t/**\n\t\t\t* Right\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\tright: [{ right: scaleInset() }],\n\t\t\t/**\n\t\t\t* Bottom\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\tbottom: [{ bottom: scaleInset() }],\n\t\t\t/**\n\t\t\t* Left\n\t\t\t* @see https://tailwindcss.com/docs/top-right-bottom-left\n\t\t\t*/\n\t\t\tleft: [{ left: scaleInset() }],\n\t\t\t/**\n\t\t\t* Visibility\n\t\t\t* @see https://tailwindcss.com/docs/visibility\n\t\t\t*/\n\t\t\tvisibility: [\n\t\t\t\t\"visible\",\n\t\t\t\t\"invisible\",\n\t\t\t\t\"collapse\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Z-Index\n\t\t\t* @see https://tailwindcss.com/docs/z-index\n\t\t\t*/\n\t\t\tz: [{ z: [\n\t\t\t\tisInteger,\n\t\t\t\t\"auto\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex Basis\n\t\t\t* @see https://tailwindcss.com/docs/flex-basis\n\t\t\t*/\n\t\t\tbasis: [{ basis: [\n\t\t\t\tisFraction,\n\t\t\t\t\"full\",\n\t\t\t\t\"auto\",\n\t\t\t\tthemeContainer,\n\t\t\t\t...scaleUnambiguousSpacing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex Direction\n\t\t\t* @see https://tailwindcss.com/docs/flex-direction\n\t\t\t*/\n\t\t\t\"flex-direction\": [{ flex: [\n\t\t\t\t\"row\",\n\t\t\t\t\"row-reverse\",\n\t\t\t\t\"col\",\n\t\t\t\t\"col-reverse\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex Wrap\n\t\t\t* @see https://tailwindcss.com/docs/flex-wrap\n\t\t\t*/\n\t\t\t\"flex-wrap\": [{ flex: [\n\t\t\t\t\"nowrap\",\n\t\t\t\t\"wrap\",\n\t\t\t\t\"wrap-reverse\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex\n\t\t\t* @see https://tailwindcss.com/docs/flex\n\t\t\t*/\n\t\t\tflex: [{ flex: [\n\t\t\t\tisNumber,\n\t\t\t\tisFraction,\n\t\t\t\t\"auto\",\n\t\t\t\t\"initial\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex Grow\n\t\t\t* @see https://tailwindcss.com/docs/flex-grow\n\t\t\t*/\n\t\t\tgrow: [{ grow: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Flex Shrink\n\t\t\t* @see https://tailwindcss.com/docs/flex-shrink\n\t\t\t*/\n\t\t\tshrink: [{ shrink: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Order\n\t\t\t* @see https://tailwindcss.com/docs/order\n\t\t\t*/\n\t\t\torder: [{ order: [\n\t\t\t\tisInteger,\n\t\t\t\t\"first\",\n\t\t\t\t\"last\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Grid Template Columns\n\t\t\t* @see https://tailwindcss.com/docs/grid-template-columns\n\t\t\t*/\n\t\t\t\"grid-cols\": [{ \"grid-cols\": scaleGridTemplateColsRows() }],\n\t\t\t/**\n\t\t\t* Grid Column Start / End\n\t\t\t* @see https://tailwindcss.com/docs/grid-column\n\t\t\t*/\n\t\t\t\"col-start-end\": [{ col: scaleGridColRowStartAndEnd() }],\n\t\t\t/**\n\t\t\t* Grid Column Start\n\t\t\t* @see https://tailwindcss.com/docs/grid-column\n\t\t\t*/\n\t\t\t\"col-start\": [{ \"col-start\": scaleGridColRowStartOrEnd() }],\n\t\t\t/**\n\t\t\t* Grid Column End\n\t\t\t* @see https://tailwindcss.com/docs/grid-column\n\t\t\t*/\n\t\t\t\"col-end\": [{ \"col-end\": scaleGridColRowStartOrEnd() }],\n\t\t\t/**\n\t\t\t* Grid Template Rows\n\t\t\t* @see https://tailwindcss.com/docs/grid-template-rows\n\t\t\t*/\n\t\t\t\"grid-rows\": [{ \"grid-rows\": scaleGridTemplateColsRows() }],\n\t\t\t/**\n\t\t\t* Grid Row Start / End\n\t\t\t* @see https://tailwindcss.com/docs/grid-row\n\t\t\t*/\n\t\t\t\"row-start-end\": [{ row: scaleGridColRowStartAndEnd() }],\n\t\t\t/**\n\t\t\t* Grid Row Start\n\t\t\t* @see https://tailwindcss.com/docs/grid-row\n\t\t\t*/\n\t\t\t\"row-start\": [{ \"row-start\": scaleGridColRowStartOrEnd() }],\n\t\t\t/**\n\t\t\t* Grid Row End\n\t\t\t* @see https://tailwindcss.com/docs/grid-row\n\t\t\t*/\n\t\t\t\"row-end\": [{ \"row-end\": scaleGridColRowStartOrEnd() }],\n\t\t\t/**\n\t\t\t* Grid Auto Flow\n\t\t\t* @see https://tailwindcss.com/docs/grid-auto-flow\n\t\t\t*/\n\t\t\t\"grid-flow\": [{ \"grid-flow\": [\n\t\t\t\t\"row\",\n\t\t\t\t\"col\",\n\t\t\t\t\"dense\",\n\t\t\t\t\"row-dense\",\n\t\t\t\t\"col-dense\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Grid Auto Columns\n\t\t\t* @see https://tailwindcss.com/docs/grid-auto-columns\n\t\t\t*/\n\t\t\t\"auto-cols\": [{ \"auto-cols\": scaleGridAutoColsRows() }],\n\t\t\t/**\n\t\t\t* Grid Auto Rows\n\t\t\t* @see https://tailwindcss.com/docs/grid-auto-rows\n\t\t\t*/\n\t\t\t\"auto-rows\": [{ \"auto-rows\": scaleGridAutoColsRows() }],\n\t\t\t/**\n\t\t\t* Gap\n\t\t\t* @see https://tailwindcss.com/docs/gap\n\t\t\t*/\n\t\t\tgap: [{ gap: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Gap X\n\t\t\t* @see https://tailwindcss.com/docs/gap\n\t\t\t*/\n\t\t\t\"gap-x\": [{ \"gap-x\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Gap Y\n\t\t\t* @see https://tailwindcss.com/docs/gap\n\t\t\t*/\n\t\t\t\"gap-y\": [{ \"gap-y\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Justify Content\n\t\t\t* @see https://tailwindcss.com/docs/justify-content\n\t\t\t*/\n\t\t\t\"justify-content\": [{ justify: [...scaleAlignPrimaryAxis(), \"normal\"] }],\n\t\t\t/**\n\t\t\t* Justify Items\n\t\t\t* @see https://tailwindcss.com/docs/justify-items\n\t\t\t*/\n\t\t\t\"justify-items\": [{ \"justify-items\": [...scaleAlignSecondaryAxis(), \"normal\"] }],\n\t\t\t/**\n\t\t\t* Justify Self\n\t\t\t* @see https://tailwindcss.com/docs/justify-self\n\t\t\t*/\n\t\t\t\"justify-self\": [{ \"justify-self\": [\"auto\", ...scaleAlignSecondaryAxis()] }],\n\t\t\t/**\n\t\t\t* Align Content\n\t\t\t* @see https://tailwindcss.com/docs/align-content\n\t\t\t*/\n\t\t\t\"align-content\": [{ content: [\"normal\", ...scaleAlignPrimaryAxis()] }],\n\t\t\t/**\n\t\t\t* Align Items\n\t\t\t* @see https://tailwindcss.com/docs/align-items\n\t\t\t*/\n\t\t\t\"align-items\": [{ items: [...scaleAlignSecondaryAxis(), { baseline: [\"\", \"last\"] }] }],\n\t\t\t/**\n\t\t\t* Align Self\n\t\t\t* @see https://tailwindcss.com/docs/align-self\n\t\t\t*/\n\t\t\t\"align-self\": [{ self: [\n\t\t\t\t\"auto\",\n\t\t\t\t...scaleAlignSecondaryAxis(),\n\t\t\t\t{ baseline: [\"\", \"last\"] }\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Place Content\n\t\t\t* @see https://tailwindcss.com/docs/place-content\n\t\t\t*/\n\t\t\t\"place-content\": [{ \"place-content\": scaleAlignPrimaryAxis() }],\n\t\t\t/**\n\t\t\t* Place Items\n\t\t\t* @see https://tailwindcss.com/docs/place-items\n\t\t\t*/\n\t\t\t\"place-items\": [{ \"place-items\": [...scaleAlignSecondaryAxis(), \"baseline\"] }],\n\t\t\t/**\n\t\t\t* Place Self\n\t\t\t* @see https://tailwindcss.com/docs/place-self\n\t\t\t*/\n\t\t\t\"place-self\": [{ \"place-self\": [\"auto\", ...scaleAlignSecondaryAxis()] }],\n\t\t\t/**\n\t\t\t* Padding\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tp: [{ p: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Inline\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpx: [{ px: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Block\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpy: [{ py: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tps: [{ ps: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Inline End\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpe: [{ pe: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Block Start\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpbs: [{ pbs: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Block End\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpbe: [{ pbe: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Top\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpt: [{ pt: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Right\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpr: [{ pr: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Bottom\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpb: [{ pb: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Padding Left\n\t\t\t* @see https://tailwindcss.com/docs/padding\n\t\t\t*/\n\t\t\tpl: [{ pl: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Margin\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tm: [{ m: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Inline\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmx: [{ mx: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Block\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmy: [{ my: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tms: [{ ms: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Inline End\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tme: [{ me: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Block Start\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmbs: [{ mbs: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Block End\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmbe: [{ mbe: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Top\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmt: [{ mt: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Right\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmr: [{ mr: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Bottom\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tmb: [{ mb: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Margin Left\n\t\t\t* @see https://tailwindcss.com/docs/margin\n\t\t\t*/\n\t\t\tml: [{ ml: scaleMargin() }],\n\t\t\t/**\n\t\t\t* Space Between X\n\t\t\t* @see https://tailwindcss.com/docs/margin#adding-space-between-children\n\t\t\t*/\n\t\t\t\"space-x\": [{ \"space-x\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Space Between X Reverse\n\t\t\t* @see https://tailwindcss.com/docs/margin#adding-space-between-children\n\t\t\t*/\n\t\t\t\"space-x-reverse\": [\"space-x-reverse\"],\n\t\t\t/**\n\t\t\t* Space Between Y\n\t\t\t* @see https://tailwindcss.com/docs/margin#adding-space-between-children\n\t\t\t*/\n\t\t\t\"space-y\": [{ \"space-y\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Space Between Y Reverse\n\t\t\t* @see https://tailwindcss.com/docs/margin#adding-space-between-children\n\t\t\t*/\n\t\t\t\"space-y-reverse\": [\"space-y-reverse\"],\n\t\t\t/**\n\t\t\t* Size\n\t\t\t* @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n\t\t\t*/\n\t\t\tsize: [{ size: scaleSizing() }],\n\t\t\t/**\n\t\t\t* Inline Size\n\t\t\t* @see https://tailwindcss.com/docs/width\n\t\t\t*/\n\t\t\t\"inline-size\": [{ inline: [\"auto\", ...scaleSizingInline()] }],\n\t\t\t/**\n\t\t\t* Min-Inline Size\n\t\t\t* @see https://tailwindcss.com/docs/min-width\n\t\t\t*/\n\t\t\t\"min-inline-size\": [{ \"min-inline\": [\"auto\", ...scaleSizingInline()] }],\n\t\t\t/**\n\t\t\t* Max-Inline Size\n\t\t\t* @see https://tailwindcss.com/docs/max-width\n\t\t\t*/\n\t\t\t\"max-inline-size\": [{ \"max-inline\": [\"none\", ...scaleSizingInline()] }],\n\t\t\t/**\n\t\t\t* Block Size\n\t\t\t* @see https://tailwindcss.com/docs/height\n\t\t\t*/\n\t\t\t\"block-size\": [{ block: [\"auto\", ...scaleSizingBlock()] }],\n\t\t\t/**\n\t\t\t* Min-Block Size\n\t\t\t* @see https://tailwindcss.com/docs/min-height\n\t\t\t*/\n\t\t\t\"min-block-size\": [{ \"min-block\": [\"auto\", ...scaleSizingBlock()] }],\n\t\t\t/**\n\t\t\t* Max-Block Size\n\t\t\t* @see https://tailwindcss.com/docs/max-height\n\t\t\t*/\n\t\t\t\"max-block-size\": [{ \"max-block\": [\"none\", ...scaleSizingBlock()] }],\n\t\t\t/**\n\t\t\t* Width\n\t\t\t* @see https://tailwindcss.com/docs/width\n\t\t\t*/\n\t\t\tw: [{ w: [\n\t\t\t\tthemeContainer,\n\t\t\t\t\"screen\",\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Min-Width\n\t\t\t* @see https://tailwindcss.com/docs/min-width\n\t\t\t*/\n\t\t\t\"min-w\": [{ \"min-w\": [\n\t\t\t\tthemeContainer,\n\t\t\t\t\"screen\",\n\t\t\t\t\"none\",\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Max-Width\n\t\t\t* @see https://tailwindcss.com/docs/max-width\n\t\t\t*/\n\t\t\t\"max-w\": [{ \"max-w\": [\n\t\t\t\tthemeContainer,\n\t\t\t\t\"screen\",\n\t\t\t\t\"none\",\n\t\t\t\t\"prose\",\n\t\t\t\t(\n\t\t\t\t/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n\t\t\t\t{ screen: [themeBreakpoint] }),\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Height\n\t\t\t* @see https://tailwindcss.com/docs/height\n\t\t\t*/\n\t\t\th: [{ h: [\n\t\t\t\t\"screen\",\n\t\t\t\t\"lh\",\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Min-Height\n\t\t\t* @see https://tailwindcss.com/docs/min-height\n\t\t\t*/\n\t\t\t\"min-h\": [{ \"min-h\": [\n\t\t\t\t\"screen\",\n\t\t\t\t\"lh\",\n\t\t\t\t\"none\",\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Max-Height\n\t\t\t* @see https://tailwindcss.com/docs/max-height\n\t\t\t*/\n\t\t\t\"max-h\": [{ \"max-h\": [\n\t\t\t\t\"screen\",\n\t\t\t\t\"lh\",\n\t\t\t\t...scaleSizing()\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Font Size\n\t\t\t* @see https://tailwindcss.com/docs/font-size\n\t\t\t*/\n\t\t\t\"font-size\": [{ text: [\n\t\t\t\t\"base\",\n\t\t\t\tthemeText,\n\t\t\t\tisArbitraryVariableLength,\n\t\t\t\tisArbitraryLength\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Font Smoothing\n\t\t\t* @see https://tailwindcss.com/docs/font-smoothing\n\t\t\t*/\n\t\t\t\"font-smoothing\": [\"antialiased\", \"subpixel-antialiased\"],\n\t\t\t/**\n\t\t\t* Font Style\n\t\t\t* @see https://tailwindcss.com/docs/font-style\n\t\t\t*/\n\t\t\t\"font-style\": [\"italic\", \"not-italic\"],\n\t\t\t/**\n\t\t\t* Font Weight\n\t\t\t* @see https://tailwindcss.com/docs/font-weight\n\t\t\t*/\n\t\t\t\"font-weight\": [{ font: [\n\t\t\t\tthemeFontWeight,\n\t\t\t\tisArbitraryVariableWeight,\n\t\t\t\tisArbitraryWeight\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Font Stretch\n\t\t\t* @see https://tailwindcss.com/docs/font-stretch\n\t\t\t*/\n\t\t\t\"font-stretch\": [{ \"font-stretch\": [\n\t\t\t\t\"ultra-condensed\",\n\t\t\t\t\"extra-condensed\",\n\t\t\t\t\"condensed\",\n\t\t\t\t\"semi-condensed\",\n\t\t\t\t\"normal\",\n\t\t\t\t\"semi-expanded\",\n\t\t\t\t\"expanded\",\n\t\t\t\t\"extra-expanded\",\n\t\t\t\t\"ultra-expanded\",\n\t\t\t\tisPercent,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Font Family\n\t\t\t* @see https://tailwindcss.com/docs/font-family\n\t\t\t*/\n\t\t\t\"font-family\": [{ font: [\n\t\t\t\tisArbitraryVariableFamilyName,\n\t\t\t\tisArbitraryFamilyName,\n\t\t\t\tthemeFont\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Font Feature Settings\n\t\t\t* @see https://tailwindcss.com/docs/font-feature-settings\n\t\t\t*/\n\t\t\t\"font-features\": [{ \"font-features\": [isArbitraryValue] }],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-normal\": [\"normal-nums\"],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-ordinal\": [\"ordinal\"],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-slashed-zero\": [\"slashed-zero\"],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-figure\": [\"lining-nums\", \"oldstyle-nums\"],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-spacing\": [\"proportional-nums\", \"tabular-nums\"],\n\t\t\t/**\n\t\t\t* Font Variant Numeric\n\t\t\t* @see https://tailwindcss.com/docs/font-variant-numeric\n\t\t\t*/\n\t\t\t\"fvn-fraction\": [\"diagonal-fractions\", \"stacked-fractions\"],\n\t\t\t/**\n\t\t\t* Letter Spacing\n\t\t\t* @see https://tailwindcss.com/docs/letter-spacing\n\t\t\t*/\n\t\t\ttracking: [{ tracking: [\n\t\t\t\tthemeTracking,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Line Clamp\n\t\t\t* @see https://tailwindcss.com/docs/line-clamp\n\t\t\t*/\n\t\t\t\"line-clamp\": [{ \"line-clamp\": [\n\t\t\t\tisNumber,\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryNumber\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Line Height\n\t\t\t* @see https://tailwindcss.com/docs/line-height\n\t\t\t*/\n\t\t\tleading: [{ leading: [themeLeading, ...scaleUnambiguousSpacing()] }],\n\t\t\t/**\n\t\t\t* List Style Image\n\t\t\t* @see https://tailwindcss.com/docs/list-style-image\n\t\t\t*/\n\t\t\t\"list-image\": [{ \"list-image\": [\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* List Style Position\n\t\t\t* @see https://tailwindcss.com/docs/list-style-position\n\t\t\t*/\n\t\t\t\"list-style-position\": [{ list: [\"inside\", \"outside\"] }],\n\t\t\t/**\n\t\t\t* List Style Type\n\t\t\t* @see https://tailwindcss.com/docs/list-style-type\n\t\t\t*/\n\t\t\t\"list-style-type\": [{ list: [\n\t\t\t\t\"disc\",\n\t\t\t\t\"decimal\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Text Alignment\n\t\t\t* @see https://tailwindcss.com/docs/text-align\n\t\t\t*/\n\t\t\t\"text-alignment\": [{ text: [\n\t\t\t\t\"left\",\n\t\t\t\t\"center\",\n\t\t\t\t\"right\",\n\t\t\t\t\"justify\",\n\t\t\t\t\"start\",\n\t\t\t\t\"end\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Placeholder Color\n\t\t\t* @deprecated since Tailwind CSS v3.0.0\n\t\t\t* @see https://v3.tailwindcss.com/docs/placeholder-color\n\t\t\t*/\n\t\t\t\"placeholder-color\": [{ placeholder: scaleColor() }],\n\t\t\t/**\n\t\t\t* Text Color\n\t\t\t* @see https://tailwindcss.com/docs/text-color\n\t\t\t*/\n\t\t\t\"text-color\": [{ text: scaleColor() }],\n\t\t\t/**\n\t\t\t* Text Decoration\n\t\t\t* @see https://tailwindcss.com/docs/text-decoration\n\t\t\t*/\n\t\t\t\"text-decoration\": [\n\t\t\t\t\"underline\",\n\t\t\t\t\"overline\",\n\t\t\t\t\"line-through\",\n\t\t\t\t\"no-underline\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Text Decoration Style\n\t\t\t* @see https://tailwindcss.com/docs/text-decoration-style\n\t\t\t*/\n\t\t\t\"text-decoration-style\": [{ decoration: [...scaleLineStyle(), \"wavy\"] }],\n\t\t\t/**\n\t\t\t* Text Decoration Thickness\n\t\t\t* @see https://tailwindcss.com/docs/text-decoration-thickness\n\t\t\t*/\n\t\t\t\"text-decoration-thickness\": [{ decoration: [\n\t\t\t\tisNumber,\n\t\t\t\t\"from-font\",\n\t\t\t\t\"auto\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryLength\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Text Decoration Color\n\t\t\t* @see https://tailwindcss.com/docs/text-decoration-color\n\t\t\t*/\n\t\t\t\"text-decoration-color\": [{ decoration: scaleColor() }],\n\t\t\t/**\n\t\t\t* Text Underline Offset\n\t\t\t* @see https://tailwindcss.com/docs/text-underline-offset\n\t\t\t*/\n\t\t\t\"underline-offset\": [{ \"underline-offset\": [\n\t\t\t\tisNumber,\n\t\t\t\t\"auto\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Text Transform\n\t\t\t* @see https://tailwindcss.com/docs/text-transform\n\t\t\t*/\n\t\t\t\"text-transform\": [\n\t\t\t\t\"uppercase\",\n\t\t\t\t\"lowercase\",\n\t\t\t\t\"capitalize\",\n\t\t\t\t\"normal-case\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Text Overflow\n\t\t\t* @see https://tailwindcss.com/docs/text-overflow\n\t\t\t*/\n\t\t\t\"text-overflow\": [\n\t\t\t\t\"truncate\",\n\t\t\t\t\"text-ellipsis\",\n\t\t\t\t\"text-clip\"\n\t\t\t],\n\t\t\t/**\n\t\t\t* Text Wrap\n\t\t\t* @see https://tailwindcss.com/docs/text-wrap\n\t\t\t*/\n\t\t\t\"text-wrap\": [{ text: [\n\t\t\t\t\"wrap\",\n\t\t\t\t\"nowrap\",\n\t\t\t\t\"balance\",\n\t\t\t\t\"pretty\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Text Indent\n\t\t\t* @see https://tailwindcss.com/docs/text-indent\n\t\t\t*/\n\t\t\tindent: [{ indent: scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Tab Size\n\t\t\t* @see https://tailwindcss.com/docs/tab-size\n\t\t\t*/\n\t\t\t\"tab-size\": [{ tab: [\n\t\t\t\tisInteger,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Vertical Alignment\n\t\t\t* @see https://tailwindcss.com/docs/vertical-align\n\t\t\t*/\n\t\t\t\"vertical-align\": [{ align: [\n\t\t\t\t\"baseline\",\n\t\t\t\t\"top\",\n\t\t\t\t\"middle\",\n\t\t\t\t\"bottom\",\n\t\t\t\t\"text-top\",\n\t\t\t\t\"text-bottom\",\n\t\t\t\t\"sub\",\n\t\t\t\t\"super\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Whitespace\n\t\t\t* @see https://tailwindcss.com/docs/whitespace\n\t\t\t*/\n\t\t\twhitespace: [{ whitespace: [\n\t\t\t\t\"normal\",\n\t\t\t\t\"nowrap\",\n\t\t\t\t\"pre\",\n\t\t\t\t\"pre-line\",\n\t\t\t\t\"pre-wrap\",\n\t\t\t\t\"break-spaces\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Word Break\n\t\t\t* @see https://tailwindcss.com/docs/word-break\n\t\t\t*/\n\t\t\tbreak: [{ break: [\n\t\t\t\t\"normal\",\n\t\t\t\t\"words\",\n\t\t\t\t\"all\",\n\t\t\t\t\"keep\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Overflow Wrap\n\t\t\t* @see https://tailwindcss.com/docs/overflow-wrap\n\t\t\t*/\n\t\t\twrap: [{ wrap: [\n\t\t\t\t\"break-word\",\n\t\t\t\t\"anywhere\",\n\t\t\t\t\"normal\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Hyphens\n\t\t\t* @see https://tailwindcss.com/docs/hyphens\n\t\t\t*/\n\t\t\thyphens: [{ hyphens: [\n\t\t\t\t\"none\",\n\t\t\t\t\"manual\",\n\t\t\t\t\"auto\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Content\n\t\t\t* @see https://tailwindcss.com/docs/content\n\t\t\t*/\n\t\t\tcontent: [{ content: [\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Attachment\n\t\t\t* @see https://tailwindcss.com/docs/background-attachment\n\t\t\t*/\n\t\t\t\"bg-attachment\": [{ bg: [\n\t\t\t\t\"fixed\",\n\t\t\t\t\"local\",\n\t\t\t\t\"scroll\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Clip\n\t\t\t* @see https://tailwindcss.com/docs/background-clip\n\t\t\t*/\n\t\t\t\"bg-clip\": [{ \"bg-clip\": [\n\t\t\t\t\"border\",\n\t\t\t\t\"padding\",\n\t\t\t\t\"content\",\n\t\t\t\t\"text\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Origin\n\t\t\t* @see https://tailwindcss.com/docs/background-origin\n\t\t\t*/\n\t\t\t\"bg-origin\": [{ \"bg-origin\": [\n\t\t\t\t\"border\",\n\t\t\t\t\"padding\",\n\t\t\t\t\"content\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Position\n\t\t\t* @see https://tailwindcss.com/docs/background-position\n\t\t\t*/\n\t\t\t\"bg-position\": [{ bg: scaleBgPosition() }],\n\t\t\t/**\n\t\t\t* Background Repeat\n\t\t\t* @see https://tailwindcss.com/docs/background-repeat\n\t\t\t*/\n\t\t\t\"bg-repeat\": [{ bg: scaleBgRepeat() }],\n\t\t\t/**\n\t\t\t* Background Size\n\t\t\t* @see https://tailwindcss.com/docs/background-size\n\t\t\t*/\n\t\t\t\"bg-size\": [{ bg: scaleBgSize() }],\n\t\t\t/**\n\t\t\t* Background Image\n\t\t\t* @see https://tailwindcss.com/docs/background-image\n\t\t\t*/\n\t\t\t\"bg-image\": [{ bg: [\n\t\t\t\t\"none\",\n\t\t\t\t{\n\t\t\t\t\tlinear: [\n\t\t\t\t\t\t{ to: [\n\t\t\t\t\t\t\t\"t\",\n\t\t\t\t\t\t\t\"tr\",\n\t\t\t\t\t\t\t\"r\",\n\t\t\t\t\t\t\t\"br\",\n\t\t\t\t\t\t\t\"b\",\n\t\t\t\t\t\t\t\"bl\",\n\t\t\t\t\t\t\t\"l\",\n\t\t\t\t\t\t\t\"tl\"\n\t\t\t\t\t\t] },\n\t\t\t\t\t\tisInteger,\n\t\t\t\t\t\tisArbitraryVariable,\n\t\t\t\t\t\tisArbitraryValue\n\t\t\t\t\t],\n\t\t\t\t\tradial: [\n\t\t\t\t\t\t\"\",\n\t\t\t\t\t\tisArbitraryVariable,\n\t\t\t\t\t\tisArbitraryValue\n\t\t\t\t\t],\n\t\t\t\t\tconic: [\n\t\t\t\t\t\tisInteger,\n\t\t\t\t\t\tisArbitraryVariable,\n\t\t\t\t\t\tisArbitraryValue\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\tisArbitraryVariableImage,\n\t\t\t\tisArbitraryImage\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Color\n\t\t\t* @see https://tailwindcss.com/docs/background-color\n\t\t\t*/\n\t\t\t\"bg-color\": [{ bg: scaleColor() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops From Position\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-from-pos\": [{ from: scaleGradientStopPosition() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops Via Position\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-via-pos\": [{ via: scaleGradientStopPosition() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops To Position\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-to-pos\": [{ to: scaleGradientStopPosition() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops From\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-from\": [{ from: scaleColor() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops Via\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-via\": [{ via: scaleColor() }],\n\t\t\t/**\n\t\t\t* Gradient Color Stops To\n\t\t\t* @see https://tailwindcss.com/docs/gradient-color-stops\n\t\t\t*/\n\t\t\t\"gradient-to\": [{ to: scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Radius\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\trounded: [{ rounded: scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Start\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-s\": [{ \"rounded-s\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius End\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-e\": [{ \"rounded-e\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Top\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-t\": [{ \"rounded-t\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Right\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-r\": [{ \"rounded-r\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Bottom\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-b\": [{ \"rounded-b\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Left\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-l\": [{ \"rounded-l\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Start Start\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-ss\": [{ \"rounded-ss\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Start End\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-se\": [{ \"rounded-se\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius End End\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-ee\": [{ \"rounded-ee\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius End Start\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-es\": [{ \"rounded-es\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Top Left\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-tl\": [{ \"rounded-tl\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Top Right\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-tr\": [{ \"rounded-tr\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Bottom Right\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-br\": [{ \"rounded-br\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Radius Bottom Left\n\t\t\t* @see https://tailwindcss.com/docs/border-radius\n\t\t\t*/\n\t\t\t\"rounded-bl\": [{ \"rounded-bl\": scaleRadius() }],\n\t\t\t/**\n\t\t\t* Border Width\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w\": [{ border: scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Inline\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-x\": [{ \"border-x\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Block\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-y\": [{ \"border-y\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-s\": [{ \"border-s\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Inline End\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-e\": [{ \"border-e\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Block Start\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-bs\": [{ \"border-bs\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Block End\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-be\": [{ \"border-be\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Top\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-t\": [{ \"border-t\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Right\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-r\": [{ \"border-r\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Bottom\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-b\": [{ \"border-b\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Border Width Left\n\t\t\t* @see https://tailwindcss.com/docs/border-width\n\t\t\t*/\n\t\t\t\"border-w-l\": [{ \"border-l\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Divide Width X\n\t\t\t* @see https://tailwindcss.com/docs/border-width#between-children\n\t\t\t*/\n\t\t\t\"divide-x\": [{ \"divide-x\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Divide Width X Reverse\n\t\t\t* @see https://tailwindcss.com/docs/border-width#between-children\n\t\t\t*/\n\t\t\t\"divide-x-reverse\": [\"divide-x-reverse\"],\n\t\t\t/**\n\t\t\t* Divide Width Y\n\t\t\t* @see https://tailwindcss.com/docs/border-width#between-children\n\t\t\t*/\n\t\t\t\"divide-y\": [{ \"divide-y\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Divide Width Y Reverse\n\t\t\t* @see https://tailwindcss.com/docs/border-width#between-children\n\t\t\t*/\n\t\t\t\"divide-y-reverse\": [\"divide-y-reverse\"],\n\t\t\t/**\n\t\t\t* Border Style\n\t\t\t* @see https://tailwindcss.com/docs/border-style\n\t\t\t*/\n\t\t\t\"border-style\": [{ border: [\n\t\t\t\t...scaleLineStyle(),\n\t\t\t\t\"hidden\",\n\t\t\t\t\"none\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Divide Style\n\t\t\t* @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n\t\t\t*/\n\t\t\t\"divide-style\": [{ divide: [\n\t\t\t\t...scaleLineStyle(),\n\t\t\t\t\"hidden\",\n\t\t\t\t\"none\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Border Color\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color\": [{ border: scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Inline\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-x\": [{ \"border-x\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Block\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-y\": [{ \"border-y\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-s\": [{ \"border-s\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Inline End\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-e\": [{ \"border-e\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Block Start\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-bs\": [{ \"border-bs\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Block End\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-be\": [{ \"border-be\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Top\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-t\": [{ \"border-t\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Right\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-r\": [{ \"border-r\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Bottom\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-b\": [{ \"border-b\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Border Color Left\n\t\t\t* @see https://tailwindcss.com/docs/border-color\n\t\t\t*/\n\t\t\t\"border-color-l\": [{ \"border-l\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Divide Color\n\t\t\t* @see https://tailwindcss.com/docs/divide-color\n\t\t\t*/\n\t\t\t\"divide-color\": [{ divide: scaleColor() }],\n\t\t\t/**\n\t\t\t* Outline Style\n\t\t\t* @see https://tailwindcss.com/docs/outline-style\n\t\t\t*/\n\t\t\t\"outline-style\": [{ outline: [\n\t\t\t\t...scaleLineStyle(),\n\t\t\t\t\"none\",\n\t\t\t\t\"hidden\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Outline Offset\n\t\t\t* @see https://tailwindcss.com/docs/outline-offset\n\t\t\t*/\n\t\t\t\"outline-offset\": [{ \"outline-offset\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Outline Width\n\t\t\t* @see https://tailwindcss.com/docs/outline-width\n\t\t\t*/\n\t\t\t\"outline-w\": [{ outline: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariableLength,\n\t\t\t\tisArbitraryLength\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Outline Color\n\t\t\t* @see https://tailwindcss.com/docs/outline-color\n\t\t\t*/\n\t\t\t\"outline-color\": [{ outline: scaleColor() }],\n\t\t\t/**\n\t\t\t* Box Shadow\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow\n\t\t\t*/\n\t\t\tshadow: [{ shadow: [\n\t\t\t\t\"\",\n\t\t\t\t\"none\",\n\t\t\t\tthemeShadow,\n\t\t\t\tisArbitraryVariableShadow,\n\t\t\t\tisArbitraryShadow\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Box Shadow Color\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n\t\t\t*/\n\t\t\t\"shadow-color\": [{ shadow: scaleColor() }],\n\t\t\t/**\n\t\t\t* Inset Box Shadow\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n\t\t\t*/\n\t\t\t\"inset-shadow\": [{ \"inset-shadow\": [\n\t\t\t\t\"none\",\n\t\t\t\tthemeInsetShadow,\n\t\t\t\tisArbitraryVariableShadow,\n\t\t\t\tisArbitraryShadow\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Inset Box Shadow Color\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n\t\t\t*/\n\t\t\t\"inset-shadow-color\": [{ \"inset-shadow\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Ring Width\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n\t\t\t*/\n\t\t\t\"ring-w\": [{ ring: scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Ring Width Inset\n\t\t\t* @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n\t\t\t* @deprecated since Tailwind CSS v4.0.0\n\t\t\t* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n\t\t\t*/\n\t\t\t\"ring-w-inset\": [\"ring-inset\"],\n\t\t\t/**\n\t\t\t* Ring Color\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n\t\t\t*/\n\t\t\t\"ring-color\": [{ ring: scaleColor() }],\n\t\t\t/**\n\t\t\t* Ring Offset Width\n\t\t\t* @see https://v3.tailwindcss.com/docs/ring-offset-width\n\t\t\t* @deprecated since Tailwind CSS v4.0.0\n\t\t\t* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n\t\t\t*/\n\t\t\t\"ring-offset-w\": [{ \"ring-offset\": [isNumber, isArbitraryLength] }],\n\t\t\t/**\n\t\t\t* Ring Offset Color\n\t\t\t* @see https://v3.tailwindcss.com/docs/ring-offset-color\n\t\t\t* @deprecated since Tailwind CSS v4.0.0\n\t\t\t* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n\t\t\t*/\n\t\t\t\"ring-offset-color\": [{ \"ring-offset\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Inset Ring Width\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n\t\t\t*/\n\t\t\t\"inset-ring-w\": [{ \"inset-ring\": scaleBorderWidth() }],\n\t\t\t/**\n\t\t\t* Inset Ring Color\n\t\t\t* @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n\t\t\t*/\n\t\t\t\"inset-ring-color\": [{ \"inset-ring\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Text Shadow\n\t\t\t* @see https://tailwindcss.com/docs/text-shadow\n\t\t\t*/\n\t\t\t\"text-shadow\": [{ \"text-shadow\": [\n\t\t\t\t\"none\",\n\t\t\t\tthemeTextShadow,\n\t\t\t\tisArbitraryVariableShadow,\n\t\t\t\tisArbitraryShadow\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Text Shadow Color\n\t\t\t* @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n\t\t\t*/\n\t\t\t\"text-shadow-color\": [{ \"text-shadow\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Opacity\n\t\t\t* @see https://tailwindcss.com/docs/opacity\n\t\t\t*/\n\t\t\topacity: [{ opacity: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Mix Blend Mode\n\t\t\t* @see https://tailwindcss.com/docs/mix-blend-mode\n\t\t\t*/\n\t\t\t\"mix-blend\": [{ \"mix-blend\": [\n\t\t\t\t...scaleBlendMode(),\n\t\t\t\t\"plus-darker\",\n\t\t\t\t\"plus-lighter\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Background Blend Mode\n\t\t\t* @see https://tailwindcss.com/docs/background-blend-mode\n\t\t\t*/\n\t\t\t\"bg-blend\": [{ \"bg-blend\": scaleBlendMode() }],\n\t\t\t/**\n\t\t\t* Mask Clip\n\t\t\t* @see https://tailwindcss.com/docs/mask-clip\n\t\t\t*/\n\t\t\t\"mask-clip\": [{ \"mask-clip\": [\n\t\t\t\t\"border\",\n\t\t\t\t\"padding\",\n\t\t\t\t\"content\",\n\t\t\t\t\"fill\",\n\t\t\t\t\"stroke\",\n\t\t\t\t\"view\"\n\t\t\t] }, \"mask-no-clip\"],\n\t\t\t/**\n\t\t\t* Mask Composite\n\t\t\t* @see https://tailwindcss.com/docs/mask-composite\n\t\t\t*/\n\t\t\t\"mask-composite\": [{ mask: [\n\t\t\t\t\"add\",\n\t\t\t\t\"subtract\",\n\t\t\t\t\"intersect\",\n\t\t\t\t\"exclude\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Mask Image\n\t\t\t* @see https://tailwindcss.com/docs/mask-image\n\t\t\t*/\n\t\t\t\"mask-image-linear-pos\": [{ \"mask-linear\": [isNumber] }],\n\t\t\t\"mask-image-linear-from-pos\": [{ \"mask-linear-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-linear-to-pos\": [{ \"mask-linear-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-linear-from-color\": [{ \"mask-linear-from\": scaleColor() }],\n\t\t\t\"mask-image-linear-to-color\": [{ \"mask-linear-to\": scaleColor() }],\n\t\t\t\"mask-image-t-from-pos\": [{ \"mask-t-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-t-to-pos\": [{ \"mask-t-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-t-from-color\": [{ \"mask-t-from\": scaleColor() }],\n\t\t\t\"mask-image-t-to-color\": [{ \"mask-t-to\": scaleColor() }],\n\t\t\t\"mask-image-r-from-pos\": [{ \"mask-r-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-r-to-pos\": [{ \"mask-r-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-r-from-color\": [{ \"mask-r-from\": scaleColor() }],\n\t\t\t\"mask-image-r-to-color\": [{ \"mask-r-to\": scaleColor() }],\n\t\t\t\"mask-image-b-from-pos\": [{ \"mask-b-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-b-to-pos\": [{ \"mask-b-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-b-from-color\": [{ \"mask-b-from\": scaleColor() }],\n\t\t\t\"mask-image-b-to-color\": [{ \"mask-b-to\": scaleColor() }],\n\t\t\t\"mask-image-l-from-pos\": [{ \"mask-l-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-l-to-pos\": [{ \"mask-l-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-l-from-color\": [{ \"mask-l-from\": scaleColor() }],\n\t\t\t\"mask-image-l-to-color\": [{ \"mask-l-to\": scaleColor() }],\n\t\t\t\"mask-image-x-from-pos\": [{ \"mask-x-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-x-to-pos\": [{ \"mask-x-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-x-from-color\": [{ \"mask-x-from\": scaleColor() }],\n\t\t\t\"mask-image-x-to-color\": [{ \"mask-x-to\": scaleColor() }],\n\t\t\t\"mask-image-y-from-pos\": [{ \"mask-y-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-y-to-pos\": [{ \"mask-y-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-y-from-color\": [{ \"mask-y-from\": scaleColor() }],\n\t\t\t\"mask-image-y-to-color\": [{ \"mask-y-to\": scaleColor() }],\n\t\t\t\"mask-image-radial\": [{ \"mask-radial\": [isArbitraryVariable, isArbitraryValue] }],\n\t\t\t\"mask-image-radial-from-pos\": [{ \"mask-radial-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-radial-to-pos\": [{ \"mask-radial-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-radial-from-color\": [{ \"mask-radial-from\": scaleColor() }],\n\t\t\t\"mask-image-radial-to-color\": [{ \"mask-radial-to\": scaleColor() }],\n\t\t\t\"mask-image-radial-shape\": [{ \"mask-radial\": [\"circle\", \"ellipse\"] }],\n\t\t\t\"mask-image-radial-size\": [{ \"mask-radial\": [{\n\t\t\t\tclosest: [\"side\", \"corner\"],\n\t\t\t\tfarthest: [\"side\", \"corner\"]\n\t\t\t}] }],\n\t\t\t\"mask-image-radial-pos\": [{ \"mask-radial-at\": scalePosition() }],\n\t\t\t\"mask-image-conic-pos\": [{ \"mask-conic\": [isNumber] }],\n\t\t\t\"mask-image-conic-from-pos\": [{ \"mask-conic-from\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-conic-to-pos\": [{ \"mask-conic-to\": scaleMaskImagePosition() }],\n\t\t\t\"mask-image-conic-from-color\": [{ \"mask-conic-from\": scaleColor() }],\n\t\t\t\"mask-image-conic-to-color\": [{ \"mask-conic-to\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Mask Mode\n\t\t\t* @see https://tailwindcss.com/docs/mask-mode\n\t\t\t*/\n\t\t\t\"mask-mode\": [{ mask: [\n\t\t\t\t\"alpha\",\n\t\t\t\t\"luminance\",\n\t\t\t\t\"match\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Mask Origin\n\t\t\t* @see https://tailwindcss.com/docs/mask-origin\n\t\t\t*/\n\t\t\t\"mask-origin\": [{ \"mask-origin\": [\n\t\t\t\t\"border\",\n\t\t\t\t\"padding\",\n\t\t\t\t\"content\",\n\t\t\t\t\"fill\",\n\t\t\t\t\"stroke\",\n\t\t\t\t\"view\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Mask Position\n\t\t\t* @see https://tailwindcss.com/docs/mask-position\n\t\t\t*/\n\t\t\t\"mask-position\": [{ mask: scaleBgPosition() }],\n\t\t\t/**\n\t\t\t* Mask Repeat\n\t\t\t* @see https://tailwindcss.com/docs/mask-repeat\n\t\t\t*/\n\t\t\t\"mask-repeat\": [{ mask: scaleBgRepeat() }],\n\t\t\t/**\n\t\t\t* Mask Size\n\t\t\t* @see https://tailwindcss.com/docs/mask-size\n\t\t\t*/\n\t\t\t\"mask-size\": [{ mask: scaleBgSize() }],\n\t\t\t/**\n\t\t\t* Mask Type\n\t\t\t* @see https://tailwindcss.com/docs/mask-type\n\t\t\t*/\n\t\t\t\"mask-type\": [{ \"mask-type\": [\"alpha\", \"luminance\"] }],\n\t\t\t/**\n\t\t\t* Mask Image\n\t\t\t* @see https://tailwindcss.com/docs/mask-image\n\t\t\t*/\n\t\t\t\"mask-image\": [{ mask: [\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Filter\n\t\t\t* @see https://tailwindcss.com/docs/filter\n\t\t\t*/\n\t\t\tfilter: [{ filter: [\n\t\t\t\t\"\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Blur\n\t\t\t* @see https://tailwindcss.com/docs/blur\n\t\t\t*/\n\t\t\tblur: [{ blur: scaleBlur() }],\n\t\t\t/**\n\t\t\t* Brightness\n\t\t\t* @see https://tailwindcss.com/docs/brightness\n\t\t\t*/\n\t\t\tbrightness: [{ brightness: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Contrast\n\t\t\t* @see https://tailwindcss.com/docs/contrast\n\t\t\t*/\n\t\t\tcontrast: [{ contrast: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Drop Shadow\n\t\t\t* @see https://tailwindcss.com/docs/drop-shadow\n\t\t\t*/\n\t\t\t\"drop-shadow\": [{ \"drop-shadow\": [\n\t\t\t\t\"\",\n\t\t\t\t\"none\",\n\t\t\t\tthemeDropShadow,\n\t\t\t\tisArbitraryVariableShadow,\n\t\t\t\tisArbitraryShadow\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Drop Shadow Color\n\t\t\t* @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n\t\t\t*/\n\t\t\t\"drop-shadow-color\": [{ \"drop-shadow\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Grayscale\n\t\t\t* @see https://tailwindcss.com/docs/grayscale\n\t\t\t*/\n\t\t\tgrayscale: [{ grayscale: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Hue Rotate\n\t\t\t* @see https://tailwindcss.com/docs/hue-rotate\n\t\t\t*/\n\t\t\t\"hue-rotate\": [{ \"hue-rotate\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Invert\n\t\t\t* @see https://tailwindcss.com/docs/invert\n\t\t\t*/\n\t\t\tinvert: [{ invert: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Saturate\n\t\t\t* @see https://tailwindcss.com/docs/saturate\n\t\t\t*/\n\t\t\tsaturate: [{ saturate: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Sepia\n\t\t\t* @see https://tailwindcss.com/docs/sepia\n\t\t\t*/\n\t\t\tsepia: [{ sepia: [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Filter\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-filter\n\t\t\t*/\n\t\t\t\"backdrop-filter\": [{ \"backdrop-filter\": [\n\t\t\t\t\"\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Blur\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-blur\n\t\t\t*/\n\t\t\t\"backdrop-blur\": [{ \"backdrop-blur\": scaleBlur() }],\n\t\t\t/**\n\t\t\t* Backdrop Brightness\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-brightness\n\t\t\t*/\n\t\t\t\"backdrop-brightness\": [{ \"backdrop-brightness\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Contrast\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-contrast\n\t\t\t*/\n\t\t\t\"backdrop-contrast\": [{ \"backdrop-contrast\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Grayscale\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-grayscale\n\t\t\t*/\n\t\t\t\"backdrop-grayscale\": [{ \"backdrop-grayscale\": [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Hue Rotate\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-hue-rotate\n\t\t\t*/\n\t\t\t\"backdrop-hue-rotate\": [{ \"backdrop-hue-rotate\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Invert\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-invert\n\t\t\t*/\n\t\t\t\"backdrop-invert\": [{ \"backdrop-invert\": [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Opacity\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-opacity\n\t\t\t*/\n\t\t\t\"backdrop-opacity\": [{ \"backdrop-opacity\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Saturate\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-saturate\n\t\t\t*/\n\t\t\t\"backdrop-saturate\": [{ \"backdrop-saturate\": [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backdrop Sepia\n\t\t\t* @see https://tailwindcss.com/docs/backdrop-sepia\n\t\t\t*/\n\t\t\t\"backdrop-sepia\": [{ \"backdrop-sepia\": [\n\t\t\t\t\"\",\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Border Collapse\n\t\t\t* @see https://tailwindcss.com/docs/border-collapse\n\t\t\t*/\n\t\t\t\"border-collapse\": [{ border: [\"collapse\", \"separate\"] }],\n\t\t\t/**\n\t\t\t* Border Spacing\n\t\t\t* @see https://tailwindcss.com/docs/border-spacing\n\t\t\t*/\n\t\t\t\"border-spacing\": [{ \"border-spacing\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Border Spacing X\n\t\t\t* @see https://tailwindcss.com/docs/border-spacing\n\t\t\t*/\n\t\t\t\"border-spacing-x\": [{ \"border-spacing-x\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Border Spacing Y\n\t\t\t* @see https://tailwindcss.com/docs/border-spacing\n\t\t\t*/\n\t\t\t\"border-spacing-y\": [{ \"border-spacing-y\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Table Layout\n\t\t\t* @see https://tailwindcss.com/docs/table-layout\n\t\t\t*/\n\t\t\t\"table-layout\": [{ table: [\"auto\", \"fixed\"] }],\n\t\t\t/**\n\t\t\t* Caption Side\n\t\t\t* @see https://tailwindcss.com/docs/caption-side\n\t\t\t*/\n\t\t\tcaption: [{ caption: [\"top\", \"bottom\"] }],\n\t\t\t/**\n\t\t\t* Transition Property\n\t\t\t* @see https://tailwindcss.com/docs/transition-property\n\t\t\t*/\n\t\t\ttransition: [{ transition: [\n\t\t\t\t\"\",\n\t\t\t\t\"all\",\n\t\t\t\t\"colors\",\n\t\t\t\t\"opacity\",\n\t\t\t\t\"shadow\",\n\t\t\t\t\"transform\",\n\t\t\t\t\"none\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Transition Behavior\n\t\t\t* @see https://tailwindcss.com/docs/transition-behavior\n\t\t\t*/\n\t\t\t\"transition-behavior\": [{ transition: [\"normal\", \"discrete\"] }],\n\t\t\t/**\n\t\t\t* Transition Duration\n\t\t\t* @see https://tailwindcss.com/docs/transition-duration\n\t\t\t*/\n\t\t\tduration: [{ duration: [\n\t\t\t\tisNumber,\n\t\t\t\t\"initial\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Transition Timing Function\n\t\t\t* @see https://tailwindcss.com/docs/transition-timing-function\n\t\t\t*/\n\t\t\tease: [{ ease: [\n\t\t\t\t\"linear\",\n\t\t\t\t\"initial\",\n\t\t\t\tthemeEase,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Transition Delay\n\t\t\t* @see https://tailwindcss.com/docs/transition-delay\n\t\t\t*/\n\t\t\tdelay: [{ delay: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Animation\n\t\t\t* @see https://tailwindcss.com/docs/animation\n\t\t\t*/\n\t\t\tanimate: [{ animate: [\n\t\t\t\t\"none\",\n\t\t\t\tthemeAnimate,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Backface Visibility\n\t\t\t* @see https://tailwindcss.com/docs/backface-visibility\n\t\t\t*/\n\t\t\tbackface: [{ backface: [\"hidden\", \"visible\"] }],\n\t\t\t/**\n\t\t\t* Perspective\n\t\t\t* @see https://tailwindcss.com/docs/perspective\n\t\t\t*/\n\t\t\tperspective: [{ perspective: [\n\t\t\t\tthemePerspective,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Perspective Origin\n\t\t\t* @see https://tailwindcss.com/docs/perspective-origin\n\t\t\t*/\n\t\t\t\"perspective-origin\": [{ \"perspective-origin\": scalePositionWithArbitrary() }],\n\t\t\t/**\n\t\t\t* Rotate\n\t\t\t* @see https://tailwindcss.com/docs/rotate\n\t\t\t*/\n\t\t\trotate: [{ rotate: scaleRotate() }],\n\t\t\t/**\n\t\t\t* Rotate X\n\t\t\t* @see https://tailwindcss.com/docs/rotate\n\t\t\t*/\n\t\t\t\"rotate-x\": [{ \"rotate-x\": scaleRotate() }],\n\t\t\t/**\n\t\t\t* Rotate Y\n\t\t\t* @see https://tailwindcss.com/docs/rotate\n\t\t\t*/\n\t\t\t\"rotate-y\": [{ \"rotate-y\": scaleRotate() }],\n\t\t\t/**\n\t\t\t* Rotate Z\n\t\t\t* @see https://tailwindcss.com/docs/rotate\n\t\t\t*/\n\t\t\t\"rotate-z\": [{ \"rotate-z\": scaleRotate() }],\n\t\t\t/**\n\t\t\t* Scale\n\t\t\t* @see https://tailwindcss.com/docs/scale\n\t\t\t*/\n\t\t\tscale: [{ scale: scaleScale() }],\n\t\t\t/**\n\t\t\t* Scale X\n\t\t\t* @see https://tailwindcss.com/docs/scale\n\t\t\t*/\n\t\t\t\"scale-x\": [{ \"scale-x\": scaleScale() }],\n\t\t\t/**\n\t\t\t* Scale Y\n\t\t\t* @see https://tailwindcss.com/docs/scale\n\t\t\t*/\n\t\t\t\"scale-y\": [{ \"scale-y\": scaleScale() }],\n\t\t\t/**\n\t\t\t* Scale Z\n\t\t\t* @see https://tailwindcss.com/docs/scale\n\t\t\t*/\n\t\t\t\"scale-z\": [{ \"scale-z\": scaleScale() }],\n\t\t\t/**\n\t\t\t* Scale 3D\n\t\t\t* @see https://tailwindcss.com/docs/scale\n\t\t\t*/\n\t\t\t\"scale-3d\": [\"scale-3d\"],\n\t\t\t/**\n\t\t\t* Skew\n\t\t\t* @see https://tailwindcss.com/docs/skew\n\t\t\t*/\n\t\t\tskew: [{ skew: scaleSkew() }],\n\t\t\t/**\n\t\t\t* Skew X\n\t\t\t* @see https://tailwindcss.com/docs/skew\n\t\t\t*/\n\t\t\t\"skew-x\": [{ \"skew-x\": scaleSkew() }],\n\t\t\t/**\n\t\t\t* Skew Y\n\t\t\t* @see https://tailwindcss.com/docs/skew\n\t\t\t*/\n\t\t\t\"skew-y\": [{ \"skew-y\": scaleSkew() }],\n\t\t\t/**\n\t\t\t* Transform\n\t\t\t* @see https://tailwindcss.com/docs/transform\n\t\t\t*/\n\t\t\ttransform: [{ transform: [\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue,\n\t\t\t\t\"\",\n\t\t\t\t\"none\",\n\t\t\t\t\"gpu\",\n\t\t\t\t\"cpu\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Transform Origin\n\t\t\t* @see https://tailwindcss.com/docs/transform-origin\n\t\t\t*/\n\t\t\t\"transform-origin\": [{ origin: scalePositionWithArbitrary() }],\n\t\t\t/**\n\t\t\t* Transform Style\n\t\t\t* @see https://tailwindcss.com/docs/transform-style\n\t\t\t*/\n\t\t\t\"transform-style\": [{ transform: [\"3d\", \"flat\"] }],\n\t\t\t/**\n\t\t\t* Translate\n\t\t\t* @see https://tailwindcss.com/docs/translate\n\t\t\t*/\n\t\t\ttranslate: [{ translate: scaleTranslate() }],\n\t\t\t/**\n\t\t\t* Translate X\n\t\t\t* @see https://tailwindcss.com/docs/translate\n\t\t\t*/\n\t\t\t\"translate-x\": [{ \"translate-x\": scaleTranslate() }],\n\t\t\t/**\n\t\t\t* Translate Y\n\t\t\t* @see https://tailwindcss.com/docs/translate\n\t\t\t*/\n\t\t\t\"translate-y\": [{ \"translate-y\": scaleTranslate() }],\n\t\t\t/**\n\t\t\t* Translate Z\n\t\t\t* @see https://tailwindcss.com/docs/translate\n\t\t\t*/\n\t\t\t\"translate-z\": [{ \"translate-z\": scaleTranslate() }],\n\t\t\t/**\n\t\t\t* Translate None\n\t\t\t* @see https://tailwindcss.com/docs/translate\n\t\t\t*/\n\t\t\t\"translate-none\": [\"translate-none\"],\n\t\t\t/**\n\t\t\t* Zoom\n\t\t\t* @see https://tailwindcss.com/docs/zoom\n\t\t\t*/\n\t\t\tzoom: [{ zoom: [\n\t\t\t\tisInteger,\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Accent Color\n\t\t\t* @see https://tailwindcss.com/docs/accent-color\n\t\t\t*/\n\t\t\taccent: [{ accent: scaleColor() }],\n\t\t\t/**\n\t\t\t* Appearance\n\t\t\t* @see https://tailwindcss.com/docs/appearance\n\t\t\t*/\n\t\t\tappearance: [{ appearance: [\"none\", \"auto\"] }],\n\t\t\t/**\n\t\t\t* Caret Color\n\t\t\t* @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n\t\t\t*/\n\t\t\t\"caret-color\": [{ caret: scaleColor() }],\n\t\t\t/**\n\t\t\t* Color Scheme\n\t\t\t* @see https://tailwindcss.com/docs/color-scheme\n\t\t\t*/\n\t\t\t\"color-scheme\": [{ scheme: [\n\t\t\t\t\"normal\",\n\t\t\t\t\"dark\",\n\t\t\t\t\"light\",\n\t\t\t\t\"light-dark\",\n\t\t\t\t\"only-dark\",\n\t\t\t\t\"only-light\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Cursor\n\t\t\t* @see https://tailwindcss.com/docs/cursor\n\t\t\t*/\n\t\t\tcursor: [{ cursor: [\n\t\t\t\t\"auto\",\n\t\t\t\t\"default\",\n\t\t\t\t\"pointer\",\n\t\t\t\t\"wait\",\n\t\t\t\t\"text\",\n\t\t\t\t\"move\",\n\t\t\t\t\"help\",\n\t\t\t\t\"not-allowed\",\n\t\t\t\t\"none\",\n\t\t\t\t\"context-menu\",\n\t\t\t\t\"progress\",\n\t\t\t\t\"cell\",\n\t\t\t\t\"crosshair\",\n\t\t\t\t\"vertical-text\",\n\t\t\t\t\"alias\",\n\t\t\t\t\"copy\",\n\t\t\t\t\"no-drop\",\n\t\t\t\t\"grab\",\n\t\t\t\t\"grabbing\",\n\t\t\t\t\"all-scroll\",\n\t\t\t\t\"col-resize\",\n\t\t\t\t\"row-resize\",\n\t\t\t\t\"n-resize\",\n\t\t\t\t\"e-resize\",\n\t\t\t\t\"s-resize\",\n\t\t\t\t\"w-resize\",\n\t\t\t\t\"ne-resize\",\n\t\t\t\t\"nw-resize\",\n\t\t\t\t\"se-resize\",\n\t\t\t\t\"sw-resize\",\n\t\t\t\t\"ew-resize\",\n\t\t\t\t\"ns-resize\",\n\t\t\t\t\"nesw-resize\",\n\t\t\t\t\"nwse-resize\",\n\t\t\t\t\"zoom-in\",\n\t\t\t\t\"zoom-out\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Field Sizing\n\t\t\t* @see https://tailwindcss.com/docs/field-sizing\n\t\t\t*/\n\t\t\t\"field-sizing\": [{ \"field-sizing\": [\"fixed\", \"content\"] }],\n\t\t\t/**\n\t\t\t* Pointer Events\n\t\t\t* @see https://tailwindcss.com/docs/pointer-events\n\t\t\t*/\n\t\t\t\"pointer-events\": [{ \"pointer-events\": [\"auto\", \"none\"] }],\n\t\t\t/**\n\t\t\t* Resize\n\t\t\t* @see https://tailwindcss.com/docs/resize\n\t\t\t*/\n\t\t\tresize: [{ resize: [\n\t\t\t\t\"none\",\n\t\t\t\t\"\",\n\t\t\t\t\"y\",\n\t\t\t\t\"x\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Scroll Behavior\n\t\t\t* @see https://tailwindcss.com/docs/scroll-behavior\n\t\t\t*/\n\t\t\t\"scroll-behavior\": [{ scroll: [\"auto\", \"smooth\"] }],\n\t\t\t/**\n\t\t\t* Scrollbar Thumb Color\n\t\t\t* @see https://tailwindcss.com/docs/scrollbar-color\n\t\t\t*/\n\t\t\t\"scrollbar-thumb-color\": [{ \"scrollbar-thumb\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Scrollbar Track Color\n\t\t\t* @see https://tailwindcss.com/docs/scrollbar-color\n\t\t\t*/\n\t\t\t\"scrollbar-track-color\": [{ \"scrollbar-track\": scaleColor() }],\n\t\t\t/**\n\t\t\t* Scrollbar Gutter\n\t\t\t* @see https://tailwindcss.com/docs/scrollbar-gutter\n\t\t\t*/\n\t\t\t\"scrollbar-gutter\": [{ \"scrollbar-gutter\": [\n\t\t\t\t\"auto\",\n\t\t\t\t\"stable\",\n\t\t\t\t\"both\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Scrollbar Width\n\t\t\t* @see https://tailwindcss.com/docs/scrollbar-width\n\t\t\t*/\n\t\t\t\"scrollbar-w\": [{ scrollbar: [\n\t\t\t\t\"auto\",\n\t\t\t\t\"thin\",\n\t\t\t\t\"none\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Scroll Margin\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-m\": [{ \"scroll-m\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Inline\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mx\": [{ \"scroll-mx\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Block\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-my\": [{ \"scroll-my\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-ms\": [{ \"scroll-ms\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Inline End\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-me\": [{ \"scroll-me\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Block Start\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mbs\": [{ \"scroll-mbs\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Block End\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mbe\": [{ \"scroll-mbe\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Top\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mt\": [{ \"scroll-mt\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Right\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mr\": [{ \"scroll-mr\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Bottom\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-mb\": [{ \"scroll-mb\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Margin Left\n\t\t\t* @see https://tailwindcss.com/docs/scroll-margin\n\t\t\t*/\n\t\t\t\"scroll-ml\": [{ \"scroll-ml\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-p\": [{ \"scroll-p\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Inline\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-px\": [{ \"scroll-px\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Block\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-py\": [{ \"scroll-py\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Inline Start\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-ps\": [{ \"scroll-ps\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Inline End\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pe\": [{ \"scroll-pe\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Block Start\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pbs\": [{ \"scroll-pbs\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Block End\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pbe\": [{ \"scroll-pbe\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Top\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pt\": [{ \"scroll-pt\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Right\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pr\": [{ \"scroll-pr\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Bottom\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pb\": [{ \"scroll-pb\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Padding Left\n\t\t\t* @see https://tailwindcss.com/docs/scroll-padding\n\t\t\t*/\n\t\t\t\"scroll-pl\": [{ \"scroll-pl\": scaleUnambiguousSpacing() }],\n\t\t\t/**\n\t\t\t* Scroll Snap Align\n\t\t\t* @see https://tailwindcss.com/docs/scroll-snap-align\n\t\t\t*/\n\t\t\t\"snap-align\": [{ snap: [\n\t\t\t\t\"start\",\n\t\t\t\t\"end\",\n\t\t\t\t\"center\",\n\t\t\t\t\"align-none\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Scroll Snap Stop\n\t\t\t* @see https://tailwindcss.com/docs/scroll-snap-stop\n\t\t\t*/\n\t\t\t\"snap-stop\": [{ snap: [\"normal\", \"always\"] }],\n\t\t\t/**\n\t\t\t* Scroll Snap Type\n\t\t\t* @see https://tailwindcss.com/docs/scroll-snap-type\n\t\t\t*/\n\t\t\t\"snap-type\": [{ snap: [\n\t\t\t\t\"none\",\n\t\t\t\t\"x\",\n\t\t\t\t\"y\",\n\t\t\t\t\"both\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Scroll Snap Type Strictness\n\t\t\t* @see https://tailwindcss.com/docs/scroll-snap-type\n\t\t\t*/\n\t\t\t\"snap-strictness\": [{ snap: [\"mandatory\", \"proximity\"] }],\n\t\t\t/**\n\t\t\t* Touch Action\n\t\t\t* @see https://tailwindcss.com/docs/touch-action\n\t\t\t*/\n\t\t\ttouch: [{ touch: [\n\t\t\t\t\"auto\",\n\t\t\t\t\"none\",\n\t\t\t\t\"manipulation\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Touch Action X\n\t\t\t* @see https://tailwindcss.com/docs/touch-action\n\t\t\t*/\n\t\t\t\"touch-x\": [{ \"touch-pan\": [\n\t\t\t\t\"x\",\n\t\t\t\t\"left\",\n\t\t\t\t\"right\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Touch Action Y\n\t\t\t* @see https://tailwindcss.com/docs/touch-action\n\t\t\t*/\n\t\t\t\"touch-y\": [{ \"touch-pan\": [\n\t\t\t\t\"y\",\n\t\t\t\t\"up\",\n\t\t\t\t\"down\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Touch Action Pinch Zoom\n\t\t\t* @see https://tailwindcss.com/docs/touch-action\n\t\t\t*/\n\t\t\t\"touch-pz\": [\"touch-pinch-zoom\"],\n\t\t\t/**\n\t\t\t* User Select\n\t\t\t* @see https://tailwindcss.com/docs/user-select\n\t\t\t*/\n\t\t\tselect: [{ select: [\n\t\t\t\t\"none\",\n\t\t\t\t\"text\",\n\t\t\t\t\"all\",\n\t\t\t\t\"auto\"\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Will Change\n\t\t\t* @see https://tailwindcss.com/docs/will-change\n\t\t\t*/\n\t\t\t\"will-change\": [{ \"will-change\": [\n\t\t\t\t\"auto\",\n\t\t\t\t\"scroll\",\n\t\t\t\t\"contents\",\n\t\t\t\t\"transform\",\n\t\t\t\tisArbitraryVariable,\n\t\t\t\tisArbitraryValue\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Fill\n\t\t\t* @see https://tailwindcss.com/docs/fill\n\t\t\t*/\n\t\t\tfill: [{ fill: [\"none\", ...scaleColor()] }],\n\t\t\t/**\n\t\t\t* Stroke Width\n\t\t\t* @see https://tailwindcss.com/docs/stroke-width\n\t\t\t*/\n\t\t\t\"stroke-w\": [{ stroke: [\n\t\t\t\tisNumber,\n\t\t\t\tisArbitraryVariableLength,\n\t\t\t\tisArbitraryLength,\n\t\t\t\tisArbitraryNumber\n\t\t\t] }],\n\t\t\t/**\n\t\t\t* Stroke\n\t\t\t* @see https://tailwindcss.com/docs/stroke\n\t\t\t*/\n\t\t\tstroke: [{ stroke: [\"none\", ...scaleColor()] }],\n\t\t\t/**\n\t\t\t* Forced Color Adjust\n\t\t\t* @see https://tailwindcss.com/docs/forced-color-adjust\n\t\t\t*/\n\t\t\t\"forced-color-adjust\": [{ \"forced-color-adjust\": [\"auto\", \"none\"] }]\n\t\t},\n\t\tconflictingClassGroups: {\n\t\t\t\"container-named\": [\"container-type\"],\n\t\t\toverflow: [\"overflow-x\", \"overflow-y\"],\n\t\t\toverscroll: [\"overscroll-x\", \"overscroll-y\"],\n\t\t\tinset: [\n\t\t\t\t\"inset-x\",\n\t\t\t\t\"inset-y\",\n\t\t\t\t\"inset-bs\",\n\t\t\t\t\"inset-be\",\n\t\t\t\t\"start\",\n\t\t\t\t\"end\",\n\t\t\t\t\"top\",\n\t\t\t\t\"right\",\n\t\t\t\t\"bottom\",\n\t\t\t\t\"left\"\n\t\t\t],\n\t\t\t\"inset-x\": [\"right\", \"left\"],\n\t\t\t\"inset-y\": [\"top\", \"bottom\"],\n\t\t\tflex: [\n\t\t\t\t\"basis\",\n\t\t\t\t\"grow\",\n\t\t\t\t\"shrink\"\n\t\t\t],\n\t\t\tgap: [\"gap-x\", \"gap-y\"],\n\t\t\tp: [\n\t\t\t\t\"px\",\n\t\t\t\t\"py\",\n\t\t\t\t\"ps\",\n\t\t\t\t\"pe\",\n\t\t\t\t\"pbs\",\n\t\t\t\t\"pbe\",\n\t\t\t\t\"pt\",\n\t\t\t\t\"pr\",\n\t\t\t\t\"pb\",\n\t\t\t\t\"pl\"\n\t\t\t],\n\t\t\tpx: [\"pr\", \"pl\"],\n\t\t\tpy: [\"pt\", \"pb\"],\n\t\t\tm: [\n\t\t\t\t\"mx\",\n\t\t\t\t\"my\",\n\t\t\t\t\"ms\",\n\t\t\t\t\"me\",\n\t\t\t\t\"mbs\",\n\t\t\t\t\"mbe\",\n\t\t\t\t\"mt\",\n\t\t\t\t\"mr\",\n\t\t\t\t\"mb\",\n\t\t\t\t\"ml\"\n\t\t\t],\n\t\t\tmx: [\"mr\", \"ml\"],\n\t\t\tmy: [\"mt\", \"mb\"],\n\t\t\tsize: [\"w\", \"h\"],\n\t\t\t\"font-size\": [\"leading\"],\n\t\t\t\"fvn-normal\": [\n\t\t\t\t\"fvn-ordinal\",\n\t\t\t\t\"fvn-slashed-zero\",\n\t\t\t\t\"fvn-figure\",\n\t\t\t\t\"fvn-spacing\",\n\t\t\t\t\"fvn-fraction\"\n\t\t\t],\n\t\t\t\"fvn-ordinal\": [\"fvn-normal\"],\n\t\t\t\"fvn-slashed-zero\": [\"fvn-normal\"],\n\t\t\t\"fvn-figure\": [\"fvn-normal\"],\n\t\t\t\"fvn-spacing\": [\"fvn-normal\"],\n\t\t\t\"fvn-fraction\": [\"fvn-normal\"],\n\t\t\t\"line-clamp\": [\"display\", \"overflow\"],\n\t\t\trounded: [\n\t\t\t\t\"rounded-s\",\n\t\t\t\t\"rounded-e\",\n\t\t\t\t\"rounded-t\",\n\t\t\t\t\"rounded-r\",\n\t\t\t\t\"rounded-b\",\n\t\t\t\t\"rounded-l\",\n\t\t\t\t\"rounded-ss\",\n\t\t\t\t\"rounded-se\",\n\t\t\t\t\"rounded-ee\",\n\t\t\t\t\"rounded-es\",\n\t\t\t\t\"rounded-tl\",\n\t\t\t\t\"rounded-tr\",\n\t\t\t\t\"rounded-br\",\n\t\t\t\t\"rounded-bl\"\n\t\t\t],\n\t\t\t\"rounded-s\": [\"rounded-ss\", \"rounded-es\"],\n\t\t\t\"rounded-e\": [\"rounded-se\", \"rounded-ee\"],\n\t\t\t\"rounded-t\": [\"rounded-tl\", \"rounded-tr\"],\n\t\t\t\"rounded-r\": [\"rounded-tr\", \"rounded-br\"],\n\t\t\t\"rounded-b\": [\"rounded-br\", \"rounded-bl\"],\n\t\t\t\"rounded-l\": [\"rounded-tl\", \"rounded-bl\"],\n\t\t\t\"border-spacing\": [\"border-spacing-x\", \"border-spacing-y\"],\n\t\t\t\"border-w\": [\n\t\t\t\t\"border-w-x\",\n\t\t\t\t\"border-w-y\",\n\t\t\t\t\"border-w-s\",\n\t\t\t\t\"border-w-e\",\n\t\t\t\t\"border-w-bs\",\n\t\t\t\t\"border-w-be\",\n\t\t\t\t\"border-w-t\",\n\t\t\t\t\"border-w-r\",\n\t\t\t\t\"border-w-b\",\n\t\t\t\t\"border-w-l\"\n\t\t\t],\n\t\t\t\"border-w-x\": [\"border-w-r\", \"border-w-l\"],\n\t\t\t\"border-w-y\": [\"border-w-t\", \"border-w-b\"],\n\t\t\t\"border-color\": [\n\t\t\t\t\"border-color-x\",\n\t\t\t\t\"border-color-y\",\n\t\t\t\t\"border-color-s\",\n\t\t\t\t\"border-color-e\",\n\t\t\t\t\"border-color-bs\",\n\t\t\t\t\"border-color-be\",\n\t\t\t\t\"border-color-t\",\n\t\t\t\t\"border-color-r\",\n\t\t\t\t\"border-color-b\",\n\t\t\t\t\"border-color-l\"\n\t\t\t],\n\t\t\t\"border-color-x\": [\"border-color-r\", \"border-color-l\"],\n\t\t\t\"border-color-y\": [\"border-color-t\", \"border-color-b\"],\n\t\t\ttranslate: [\n\t\t\t\t\"translate-x\",\n\t\t\t\t\"translate-y\",\n\t\t\t\t\"translate-none\"\n\t\t\t],\n\t\t\t\"translate-none\": [\n\t\t\t\t\"translate\",\n\t\t\t\t\"translate-x\",\n\t\t\t\t\"translate-y\",\n\t\t\t\t\"translate-z\"\n\t\t\t],\n\t\t\t\"scroll-m\": [\n\t\t\t\t\"scroll-mx\",\n\t\t\t\t\"scroll-my\",\n\t\t\t\t\"scroll-ms\",\n\t\t\t\t\"scroll-me\",\n\t\t\t\t\"scroll-mbs\",\n\t\t\t\t\"scroll-mbe\",\n\t\t\t\t\"scroll-mt\",\n\t\t\t\t\"scroll-mr\",\n\t\t\t\t\"scroll-mb\",\n\t\t\t\t\"scroll-ml\"\n\t\t\t],\n\t\t\t\"scroll-mx\": [\"scroll-mr\", \"scroll-ml\"],\n\t\t\t\"scroll-my\": [\"scroll-mt\", \"scroll-mb\"],\n\t\t\t\"scroll-p\": [\n\t\t\t\t\"scroll-px\",\n\t\t\t\t\"scroll-py\",\n\t\t\t\t\"scroll-ps\",\n\t\t\t\t\"scroll-pe\",\n\t\t\t\t\"scroll-pbs\",\n\t\t\t\t\"scroll-pbe\",\n\t\t\t\t\"scroll-pt\",\n\t\t\t\t\"scroll-pr\",\n\t\t\t\t\"scroll-pb\",\n\t\t\t\t\"scroll-pl\"\n\t\t\t],\n\t\t\t\"scroll-px\": [\"scroll-pr\", \"scroll-pl\"],\n\t\t\t\"scroll-py\": [\"scroll-pt\", \"scroll-pb\"],\n\t\t\ttouch: [\n\t\t\t\t\"touch-x\",\n\t\t\t\t\"touch-y\",\n\t\t\t\t\"touch-pz\"\n\t\t\t],\n\t\t\t\"touch-x\": [\"touch\"],\n\t\t\t\"touch-y\": [\"touch\"],\n\t\t\t\"touch-pz\": [\"touch\"]\n\t\t},\n\t\tconflictingClassGroupModifiers: { \"font-size\": [\"leading\"] },\n\t\tpostfixLookupClassGroups: [\"container-type\"],\n\t\torderSensitiveModifiers: [\n\t\t\t\"*\",\n\t\t\t\"**\",\n\t\t\t\"after\",\n\t\t\t\"backdrop\",\n\t\t\t\"before\",\n\t\t\t\"details-content\",\n\t\t\t\"file\",\n\t\t\t\"first-letter\",\n\t\t\t\"first-line\",\n\t\t\t\"marker\",\n\t\t\t\"placeholder\",\n\t\t\t\"selection\"\n\t\t]\n\t};\n};\n\n//#endregion\n//#region src/lib/tw-merge.ts\nconst twMerge = createTailwindMerge(getDefaultConfig);\n\n//#endregion\n//#region src/lib/merge-template.ts\n/**\n* Max distinct interpolation tuples remembered per call site. Real tagged-template sites cycle\n* through a tiny set of dynamic values (a boolean toggling one class, a small variant union), so\n* this stays small; the bound only guards a site that interpolates high-cardinality values (e.g. a\n* live color) from growing its per-site list without limit.\n*/\nconst TEMPLATE_SITE_CACHE = 8;\nconst templateCache = /* @__PURE__ */ new WeakMap();\nconst mergeTemplate = (strings, values) => {\n\tconst valueCount = values.length;\n\tlet isCacheable = true;\n\tfor (let index = 0; index < valueCount; index++) {\n\t\tconst value = values[index];\n\t\tif (value && typeof value !== \"string\") {\n\t\t\tisCacheable = false;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (isCacheable) {\n\t\tconst entries = templateCache.get(strings);\n\t\tif (entries !== void 0) for (let entryIndex = 0; entryIndex < entries.length; entryIndex++) {\n\t\t\tconst entry = entries[entryIndex];\n\t\t\tconst entryValues = entry.values;\n\t\t\tlet isMatch = true;\n\t\t\tfor (let index = 0; index < valueCount; index++) if (entryValues[index] !== values[index]) {\n\t\t\t\tisMatch = false;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (isMatch) return entry.result;\n\t\t}\n\t}\n\tlet joined = strings[0];\n\tfor (let index = 0; index < valueCount; index++) {\n\t\tconst value = values[index];\n\t\tif (value) joined += typeof value === \"string\" ? value : resolveClassValue(value);\n\t\tjoined += strings[index + 1];\n\t}\n\tconst result = twMerge.mergeString(joined);\n\tif (isCacheable) {\n\t\tlet entries = templateCache.get(strings);\n\t\tif (entries === void 0) {\n\t\t\tentries = [];\n\t\t\ttemplateCache.set(strings, entries);\n\t\t}\n\t\tif (entries.length >= TEMPLATE_SITE_CACHE) entries.shift();\n\t\tentries.push({\n\t\t\tvalues,\n\t\t\tresult\n\t\t});\n\t}\n\treturn result;\n};\n\n//#endregion\n//#region src/index.ts\nconst IS_V8 = (() => {\n\tconst error = /* @__PURE__ */ new Error();\n\treturn !(\"line\" in error) && !(\"lineNumber\" in error);\n})();\nconst ARG_CACHE_BUCKET_SIZE = 64;\n/** First-arg buckets kept before a generation rotates into `previousArgCache`. */\nconst ARG_CACHE_SIZE = 500;\nlet argCache = /* @__PURE__ */ new Map();\nlet previousArgCache = /* @__PURE__ */ new Map();\nlet argCacheCount = 0;\nconst mergeVariadicCached = (inputs) => {\n\tconst length = inputs.length;\n\tlet firstKey = \"\";\n\tlet firstKeyIndex = -1;\n\tlet truthyStringCount = 0;\n\tlet everyTruthyIsString = true;\n\tfor (let index = 0; index < length; index++) {\n\t\tconst item = inputs[index];\n\t\tif (!item) continue;\n\t\tif (typeof item !== \"string\") {\n\t\t\teveryTruthyIsString = false;\n\t\t\tbreak;\n\t\t}\n\t\tif (firstKeyIndex === -1) {\n\t\t\tfirstKey = item;\n\t\t\tfirstKeyIndex = index;\n\t\t}\n\t\ttruthyStringCount++;\n\t}\n\tif (everyTruthyIsString) {\n\t\tif (truthyStringCount === 0) return \"\";\n\t\tif (truthyStringCount === 1) return twMerge.mergeString(firstKey);\n\t\tlet bucket = argCache.get(firstKey);\n\t\tif (bucket === void 0) bucket = previousArgCache.get(firstKey);\n\t\tif (bucket !== void 0) for (let entryIndex = 0; entryIndex < bucket.length; entryIndex++) {\n\t\t\tconst entry = bucket[entryIndex];\n\t\t\tconst rest = entry.rest;\n\t\t\tif (rest.length !== truthyStringCount - 1) continue;\n\t\t\tlet restIndex = 0;\n\t\t\tlet isMatch = true;\n\t\t\tfor (let index = firstKeyIndex + 1; index < length; index++) {\n\t\t\t\tconst item = inputs[index];\n\t\t\t\tif (!item) continue;\n\t\t\t\tif (item !== rest[restIndex++]) {\n\t\t\t\t\tisMatch = false;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isMatch) return entry.result;\n\t\t}\n\t\tlet joined = firstKey;\n\t\tconst rest = [];\n\t\tfor (let index = firstKeyIndex + 1; index < length; index++) {\n\t\t\tconst item = inputs[index];\n\t\t\tif (!item) continue;\n\t\t\tjoined += \" \" + item;\n\t\t\trest.push(item);\n\t\t}\n\t\tconst result = twMerge.mergeString(joined);\n\t\tlet target = argCache.get(firstKey);\n\t\tif (target === void 0) {\n\t\t\ttarget = [];\n\t\t\targCache.set(firstKey, target);\n\t\t}\n\t\tif (target.length >= ARG_CACHE_BUCKET_SIZE) target.shift();\n\t\ttarget.push({\n\t\t\trest,\n\t\t\tresult\n\t\t});\n\t\tif (++argCacheCount > ARG_CACHE_SIZE) {\n\t\t\targCacheCount = 0;\n\t\t\tpreviousArgCache = argCache;\n\t\t\targCache = /* @__PURE__ */ new Map();\n\t\t}\n\t\treturn result;\n\t}\n\tlet result = \"\";\n\tfor (let index = 0; index < length; index++) {\n\t\tconst item = inputs[index];\n\t\tif (!item) continue;\n\t\tconst resolved = typeof item === \"string\" ? item : resolveClassValue(item);\n\t\tif (resolved) {\n\t\t\tif (result) result += \" \";\n\t\t\tresult += resolved;\n\t\t}\n\t}\n\treturn twMerge.mergeString(result);\n};\nconst cn = function() {\n\tconst first = arguments[0];\n\tif (Array.isArray(first) && \"raw\" in first) {\n\t\tconst strings = first;\n\t\tconst length = arguments.length;\n\t\tconst values = [];\n\t\tfor (let index = 1; index < length; index++) values.push(arguments[index]);\n\t\treturn mergeTemplate(strings, values);\n\t}\n\tconst length = arguments.length;\n\tif (length === 1) return typeof first === \"string\" ? twMerge.mergeString(first) : twMerge.mergeString(resolveClassValue(first));\n\tif (IS_V8) {\n\t\tconst inputs = [];\n\t\tfor (let index = 0; index < length; index++) inputs.push(arguments[index]);\n\t\treturn mergeVariadicCached(inputs);\n\t}\n\tlet result = \"\";\n\tfor (let index = 0; index < length; index++) {\n\t\tconst item = arguments[index];\n\t\tif (!item) continue;\n\t\tconst resolved = typeof item === \"string\" ? item : resolveClassValue(item);\n\t\tif (resolved) {\n\t\t\tif (result) result += \" \";\n\t\t\tresult += resolved;\n\t\t}\n\t}\n\treturn twMerge.mergeString(result);\n};\n\n//#endregion\nexport { clsx, cn, cn as default, twJoin, twMerge };","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.js';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.js';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.js';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.js';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]];\nconst ChevronDown = createLucideIcon(\"chevron-down\", __iconNode);\n\nexport { __iconNode, ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"8\", y2: \"12\", key: \"1pkeuh\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"16\", y2: \"16\", key: \"4dfq90\" }]\n];\nconst CircleAlert = createLucideIcon(\"circle-alert\", __iconNode);\n\nexport { __iconNode, CircleAlert as default };\n//# sourceMappingURL=circle-alert.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { x: \"14\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"kaeet6\" }],\n [\"rect\", { x: \"5\", y: \"3\", width: \"5\", height: \"18\", rx: \"1\", key: \"1wsw3u\" }]\n];\nconst Pause = createLucideIcon(\"pause\", __iconNode);\n\nexport { __iconNode, Pause as default };\n//# sourceMappingURL=pause.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z\",\n key: \"10ikf1\"\n }\n ]\n];\nconst Play = createLucideIcon(\"play\", __iconNode);\n\nexport { __iconNode, Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.575.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M10 11v6\", key: \"nco0om\" }],\n [\"path\", { d: \"M14 11v6\", key: \"outv1u\" }],\n [\"path\", { d: \"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6\", key: \"miytrc\" }],\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2\", key: \"e791ji\" }]\n];\nconst Trash2 = createLucideIcon(\"trash-2\", __iconNode);\n\nexport { __iconNode, Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n"],"names":["_a","__defProp","__name","rest","result","length","__iconNode"],"mappings":"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","x_google_ignoreList":[9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]}
|