@assistant-ui/react 0.12.25 → 0.12.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/augmentations.d.ts.map +1 -1
- package/dist/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/client/InMemoryThreadList.js +1 -0
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/client/SingleThreadList.d.ts.map +1 -1
- package/dist/client/SingleThreadList.js +1 -0
- package/dist/client/SingleThreadList.js.map +1 -1
- package/dist/context/providers/MessageProvider.d.ts +1 -1
- package/dist/context/providers/MessageProvider.d.ts.map +1 -1
- package/dist/context/react/ThreadViewportContext.d.ts +3 -3
- package/dist/context/react/ThreadViewportContext.d.ts.map +1 -1
- package/dist/context/react/utils/createContextHook.d.ts +1 -1
- package/dist/context/react/utils/createContextHook.d.ts.map +1 -1
- package/dist/context/react/utils/createContextHook.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.d.ts +1 -1
- package/dist/context/react/utils/createContextStoreHook.d.ts.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.d.ts +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js +1 -0
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/devtools/DevToolsHooks.d.ts +1 -1
- package/dist/devtools/DevToolsHooks.d.ts.map +1 -1
- package/dist/devtools/DevToolsHooks.js +4 -0
- package/dist/devtools/DevToolsHooks.js.map +1 -1
- package/dist/index.d.ts +3 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -32
- package/dist/index.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts +3 -3
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.d.ts +3 -3
- package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +2 -2
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +14 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.d.ts +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.d.ts.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts +5 -2
- package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js +3 -2
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts +7 -4
- package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js +2 -2
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts +7 -4
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +2 -2
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts +7 -4
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +2 -2
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.d.ts +1 -1
- package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.d.ts +1 -1
- package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.d.ts +1 -1
- package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.d.ts +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +3 -2
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.d.ts +1 -1
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.d.ts +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +28 -0
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts +11 -3
- package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.js +13 -9
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.d.ts +1 -1
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerSend.d.ts +1 -1
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts +60 -0
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopover.js +108 -0
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +31 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js +39 -0
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +3 -3
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +11 -9
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +28 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +37 -0
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +9 -6
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +16 -17
- package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js +53 -248
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +60 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +117 -0
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -0
- package/dist/primitives/composer/trigger/detectTrigger.js +1 -1
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
- package/dist/primitives/composer/trigger/index.d.ts +16 -3
- package/dist/primitives/composer/trigger/index.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/index.js +9 -2
- package/dist/primitives/composer/trigger/index.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +22 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.js +17 -0
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +45 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +94 -0
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +31 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.js +94 -0
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +42 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +62 -0
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -0
- package/dist/primitives/composer.d.ts +8 -13
- package/dist/primitives/composer.d.ts.map +1 -1
- package/dist/primitives/composer.js +7 -17
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.d.ts +14 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.js +7 -0
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -0
- package/dist/primitives/error/ErrorMessage.d.ts +1 -1
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +1 -1
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.d.ts +1 -1
- package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
- package/dist/primitives/error/ErrorRoot.js +1 -1
- package/dist/primitives/error/ErrorRoot.js.map +1 -1
- package/dist/primitives/message/MessageError.d.ts +1 -1
- package/dist/primitives/message/MessageError.d.ts.map +1 -1
- package/dist/primitives/message/MessageIf.js +1 -1
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessageRoot.d.ts +1 -1
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.d.ts +1 -1
- package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js +2 -1
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.d.ts +2 -2
- package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.d.ts +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.d.ts +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.d.ts +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.d.ts +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.d.ts +1 -1
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +1 -1
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +0 -2
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.d.ts +1 -1
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.d.ts +1 -1
- package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts +5 -2
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +3 -2
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts +7 -4
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +2 -2
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts +7 -4
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +2 -2
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts +7 -4
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +2 -2
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
- package/dist/unstable/useMentionAdapter.d.ts +80 -0
- package/dist/unstable/useMentionAdapter.d.ts.map +1 -0
- package/dist/unstable/useMentionAdapter.js +129 -0
- package/dist/unstable/useMentionAdapter.js.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.d.ts +32 -17
- package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -1
- package/dist/unstable/useSlashCommandAdapter.js +56 -32
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
- package/dist/utils/Primitive.d.ts +6 -4
- package/dist/utils/Primitive.d.ts.map +1 -1
- package/dist/utils/Primitive.js +15 -8
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.d.ts +1 -1
- package/dist/utils/createActionButton.d.ts.map +1 -1
- package/dist/utils/hooks/useManagedRef.d.ts +1 -1
- package/dist/utils/hooks/useManagedRef.d.ts.map +1 -1
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/json/is-json.d.ts +1 -1
- package/dist/utils/json/is-json.d.ts.map +1 -1
- package/dist/utils/smooth/SmoothContext.d.ts +2 -2
- package/dist/utils/smooth/SmoothContext.d.ts.map +1 -1
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/package.json +10 -10
- package/src/augmentations.ts +2 -0
- package/src/client/InMemoryThreadList.ts +1 -0
- package/src/client/SingleThreadList.ts +1 -0
- package/src/context/providers/MessageProvider.tsx +1 -1
- package/src/context/providers/ThreadViewportProvider.tsx +1 -1
- package/src/context/react/ThreadViewportContext.ts +3 -3
- package/src/context/react/utils/createContextHook.ts +1 -1
- package/src/context/react/utils/createContextStoreHook.ts +2 -2
- package/src/context/react/utils/createStateHookForRuntime.ts +2 -1
- package/src/devtools/DevToolsHooks.ts +5 -1
- package/src/index.ts +27 -56
- package/src/legacy-runtime/AssistantRuntimeProvider.tsx +3 -3
- package/src/legacy-runtime/cloud/auiV0.ts +6 -3
- package/src/legacy-runtime/cloud/useCloudThreadListRuntime.ts +1 -1
- package/src/legacy-runtime/hooks/AssistantContext.ts +1 -1
- package/src/legacy-runtime/hooks/AttachmentContext.ts +1 -1
- package/src/legacy-runtime/hooks/ComposerContext.ts +1 -1
- package/src/legacy-runtime/hooks/MessageContext.ts +1 -1
- package/src/legacy-runtime/hooks/MessagePartContext.ts +1 -1
- package/src/legacy-runtime/hooks/ThreadContext.ts +1 -1
- package/src/legacy-runtime/hooks/ThreadListItemContext.ts +1 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts +1 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +2 -2
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +20 -4
- package/src/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.test.ts +8 -2
- package/src/model-context/frame/useAssistantFrameHost.ts +1 -1
- package/src/model-context/makeAssistantVisible.tsx +3 -3
- package/src/primitives/actionBar/ActionBarCopy.tsx +1 -1
- package/src/primitives/actionBar/ActionBarEdit.ts +2 -2
- package/src/primitives/actionBar/ActionBarExportMarkdown.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
- package/src/primitives/actionBar/ActionBarReload.ts +2 -2
- package/src/primitives/actionBar/ActionBarRoot.tsx +1 -1
- package/src/primitives/actionBar/ActionBarSpeak.ts +2 -2
- package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +1 -1
- package/src/primitives/actionBarMore/ActionBarMoreContent.tsx +10 -4
- package/src/primitives/actionBarMore/ActionBarMoreItem.tsx +7 -7
- package/src/primitives/actionBarMore/ActionBarMoreRoot.tsx +2 -2
- package/src/primitives/actionBarMore/ActionBarMoreSeparator.tsx +7 -5
- package/src/primitives/actionBarMore/ActionBarMoreTrigger.tsx +7 -7
- package/src/primitives/assistantModal/AssistantModalAnchor.tsx +6 -2
- package/src/primitives/assistantModal/AssistantModalContent.tsx +6 -2
- package/src/primitives/assistantModal/AssistantModalRoot.tsx +2 -2
- package/src/primitives/assistantModal/AssistantModalTrigger.tsx +6 -2
- package/src/primitives/attachment/AttachmentRemove.ts +2 -2
- package/src/primitives/attachment/AttachmentRoot.tsx +5 -1
- package/src/primitives/attachment/AttachmentThumb.tsx +5 -1
- package/src/primitives/branchPicker/BranchPickerNext.ts +2 -2
- package/src/primitives/branchPicker/BranchPickerPrevious.ts +2 -2
- package/src/primitives/branchPicker/BranchPickerRoot.tsx +5 -1
- package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts +2 -2
- package/src/primitives/chainOfThought/ChainOfThoughtRoot.tsx +5 -1
- package/src/primitives/composer/ComposerAddAttachment.ts +2 -2
- package/src/primitives/composer/ComposerAttachmentDropzone.test.tsx +125 -0
- package/src/primitives/composer/ComposerAttachmentDropzone.tsx +11 -8
- package/src/primitives/composer/ComposerCancel.ts +2 -2
- package/src/primitives/composer/ComposerDictationTranscript.tsx +5 -1
- package/src/primitives/composer/ComposerInput.tsx +33 -1
- package/src/primitives/composer/ComposerInputPluginContext.tsx +37 -24
- package/src/primitives/composer/ComposerRoot.tsx +1 -1
- package/src/primitives/composer/ComposerSend.ts +2 -2
- package/src/primitives/composer/trigger/TriggerPopover.tsx +207 -0
- package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +61 -0
- package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +4 -3
- package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +14 -17
- package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +57 -0
- package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +44 -40
- package/src/primitives/composer/trigger/TriggerPopoverResource.ts +76 -315
- package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +212 -0
- package/src/primitives/composer/trigger/detectTrigger.test.ts +36 -0
- package/src/primitives/composer/trigger/detectTrigger.ts +1 -1
- package/src/primitives/composer/trigger/index.ts +21 -5
- package/src/primitives/composer/trigger/triggerDetectionResource.ts +43 -0
- package/src/primitives/composer/trigger/triggerKeyboardResource.ts +151 -0
- package/src/primitives/composer/trigger/triggerNavigationResource.ts +145 -0
- package/src/primitives/composer/trigger/triggerSelectionResource.ts +122 -0
- package/src/primitives/composer.ts +8 -18
- package/src/primitives/dropdownMenuRenderPrimitives.test.tsx +64 -0
- package/src/primitives/dropdownMenuRenderPrimitives.ts +15 -0
- package/src/primitives/error/ErrorMessage.tsx +5 -1
- package/src/primitives/error/ErrorRoot.tsx +5 -1
- package/src/primitives/message/MessageError.ts +1 -1
- package/src/primitives/message/MessageIf.ts +1 -1
- package/src/primitives/message/MessagePartsGrouped.tsx +1 -1
- package/src/primitives/message/MessageRoot.tsx +1 -1
- package/src/primitives/messagePart/MessagePartImage.tsx +6 -1
- package/src/primitives/messagePart/MessagePartInProgress.ts +1 -1
- package/src/primitives/messagePart/MessagePartText.tsx +3 -3
- package/src/primitives/queueItem/QueueItemRemove.ts +2 -2
- package/src/primitives/queueItem/QueueItemSteer.ts +2 -2
- package/src/primitives/suggestion/SuggestionDescription.tsx +5 -1
- package/src/primitives/suggestion/SuggestionTitle.tsx +5 -1
- package/src/primitives/suggestion/SuggestionTrigger.ts +2 -2
- package/src/primitives/thread/ThreadRoot.tsx +5 -1
- package/src/primitives/thread/ThreadScrollToBottom.ts +2 -2
- package/src/primitives/thread/ThreadSuggestion.ts +2 -4
- package/src/primitives/thread/ThreadViewport.tsx +1 -1
- package/src/primitives/thread/ThreadViewportFooter.tsx +1 -1
- package/src/primitives/threadList/ThreadListNew.tsx +1 -1
- package/src/primitives/threadList/ThreadListRoot.tsx +5 -1
- package/src/primitives/threadListItem/ThreadListItemArchive.ts +2 -2
- package/src/primitives/threadListItem/ThreadListItemDelete.ts +2 -2
- package/src/primitives/threadListItem/ThreadListItemRoot.tsx +5 -1
- package/src/primitives/threadListItem/ThreadListItemTrigger.ts +2 -2
- package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +2 -2
- package/src/primitives/threadListItemMore/ThreadListItemMoreContent.tsx +10 -4
- package/src/primitives/threadListItemMore/ThreadListItemMoreItem.tsx +7 -7
- package/src/primitives/threadListItemMore/ThreadListItemMoreRoot.tsx +2 -2
- package/src/primitives/threadListItemMore/ThreadListItemMoreSeparator.tsx +7 -5
- package/src/primitives/threadListItemMore/ThreadListItemMoreTrigger.tsx +7 -7
- package/src/tests/BaseComposerRuntimeCore.test.ts +143 -0
- package/src/tests/DataRenderers.test.ts +174 -41
- package/src/tests/MessageParts.loading.test.tsx +104 -0
- package/src/tests/RemoteThreadListRuntime.deferredProvider.test.tsx +79 -0
- package/src/unstable/useMentionAdapter.ts +220 -0
- package/src/unstable/useSlashCommandAdapter.ts +79 -50
- package/src/utils/Primitive.test.tsx +7 -1
- package/src/utils/Primitive.tsx +49 -16
- package/src/utils/createActionButton.tsx +3 -3
- package/src/utils/hooks/useManagedRef.ts +2 -2
- package/src/utils/json/is-json.ts +1 -1
- package/src/utils/smooth/SmoothContext.tsx +5 -5
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts +0 -25
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts.map +0 -1
- package/dist/primitives/composer/mention/ComposerMentionContext.js +0 -74
- package/dist/primitives/composer/mention/ComposerMentionContext.js.map +0 -1
- package/dist/primitives/composer/mention/index.d.ts +0 -6
- package/dist/primitives/composer/mention/index.d.ts.map +0 -1
- package/dist/primitives/composer/mention/index.js +0 -8
- package/dist/primitives/composer/mention/index.js.map +0 -1
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts +0 -36
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.d.ts.map +0 -1
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js +0 -36
- package/dist/primitives/composer/slash-command/ComposerSlashCommandRoot.js.map +0 -1
- package/dist/primitives/composer/slash-command/index.d.ts +0 -2
- package/dist/primitives/composer/slash-command/index.d.ts.map +0 -1
- package/dist/primitives/composer/slash-command/index.js +0 -2
- package/dist/primitives/composer/slash-command/index.js.map +0 -1
- package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts +0 -37
- package/dist/primitives/composer/trigger/TriggerPopoverContext.d.ts.map +0 -1
- package/dist/primitives/composer/trigger/TriggerPopoverContext.js +0 -70
- package/dist/primitives/composer/trigger/TriggerPopoverContext.js.map +0 -1
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts +0 -26
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.d.ts.map +0 -1
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.js +0 -28
- package/dist/primitives/composer/trigger/TriggerPopoverPopover.js.map +0 -1
- package/dist/unstable/useToolMentionAdapter.d.ts +0 -42
- package/dist/unstable/useToolMentionAdapter.d.ts.map +0 -1
- package/dist/unstable/useToolMentionAdapter.js +0 -65
- package/dist/unstable/useToolMentionAdapter.js.map +0 -1
- package/src/primitives/composer/mention/ComposerMentionContext.tsx +0 -175
- package/src/primitives/composer/mention/index.ts +0 -19
- package/src/primitives/composer/slash-command/ComposerSlashCommandRoot.tsx +0 -76
- package/src/primitives/composer/slash-command/index.ts +0 -1
- package/src/primitives/composer/trigger/TriggerPopoverContext.tsx +0 -129
- package/src/primitives/composer/trigger/TriggerPopoverPopover.tsx +0 -51
- package/src/unstable/useToolMentionAdapter.ts +0 -114
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
export {
|
|
2
2
|
ComposerPrimitiveTriggerPopoverRoot,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
useTriggerPopoverRootContext,
|
|
4
|
+
useTriggerPopoverRootContextOptional,
|
|
5
|
+
useTriggerPopoverTriggers,
|
|
6
|
+
useTriggerPopoverTriggersOptional,
|
|
7
|
+
type RegisteredTrigger,
|
|
8
|
+
type TriggerPopoverRootContextValue,
|
|
9
|
+
} from "./TriggerPopoverRootContext";
|
|
10
|
+
export {
|
|
11
|
+
useTriggerPopoverScopeContext,
|
|
12
|
+
useTriggerPopoverScopeContextOptional,
|
|
13
|
+
} from "./TriggerPopover";
|
|
7
14
|
export {
|
|
8
15
|
ComposerPrimitiveTriggerPopoverCategories,
|
|
9
16
|
ComposerPrimitiveTriggerPopoverCategoryItem,
|
|
@@ -13,4 +20,13 @@ export {
|
|
|
13
20
|
ComposerPrimitiveTriggerPopoverItem,
|
|
14
21
|
} from "./TriggerPopoverItems";
|
|
15
22
|
export { ComposerPrimitiveTriggerPopoverBack } from "./TriggerPopoverBack";
|
|
16
|
-
export type {
|
|
23
|
+
export type { TriggerBehavior } from "./triggerSelectionResource";
|
|
24
|
+
|
|
25
|
+
import { ComposerPrimitiveTriggerPopover as Base } from "./TriggerPopover";
|
|
26
|
+
import { ComposerPrimitiveTriggerPopoverAction } from "./TriggerPopoverAction";
|
|
27
|
+
import { ComposerPrimitiveTriggerPopoverDirective } from "./TriggerPopoverDirective";
|
|
28
|
+
|
|
29
|
+
export const ComposerPrimitiveTriggerPopover = Object.assign(Base, {
|
|
30
|
+
Directive: ComposerPrimitiveTriggerPopoverDirective,
|
|
31
|
+
Action: ComposerPrimitiveTriggerPopoverAction,
|
|
32
|
+
});
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { resource, tapMemo, tapState } from "@assistant-ui/tap";
|
|
2
|
+
import { detectTrigger } from "./detectTrigger";
|
|
3
|
+
|
|
4
|
+
/** Detected trigger position within the composer text. */
|
|
5
|
+
export type DetectedTrigger = {
|
|
6
|
+
readonly offset: number;
|
|
7
|
+
readonly query: string;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type TriggerDetectionResourceOutput = {
|
|
11
|
+
/** Detected trigger (or `null` when inactive). */
|
|
12
|
+
readonly trigger: DetectedTrigger | null;
|
|
13
|
+
/** Current query string (empty when no trigger active). */
|
|
14
|
+
readonly query: string;
|
|
15
|
+
/** Update the tracked cursor position (wired to composer input). */
|
|
16
|
+
setCursorPosition(pos: number): void;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/** Tracks cursor position and derives the active trigger + query from composer text. */
|
|
20
|
+
export const TriggerDetectionResource = resource(
|
|
21
|
+
({
|
|
22
|
+
text,
|
|
23
|
+
triggerChar,
|
|
24
|
+
}: {
|
|
25
|
+
text: string;
|
|
26
|
+
triggerChar: string;
|
|
27
|
+
}): TriggerDetectionResourceOutput => {
|
|
28
|
+
const [cursorPosition, setCursorPosition] = tapState(text.length);
|
|
29
|
+
|
|
30
|
+
const trigger = tapMemo(() => {
|
|
31
|
+
const pos = Math.min(cursorPosition, text.length);
|
|
32
|
+
return detectTrigger(text, triggerChar, pos);
|
|
33
|
+
}, [cursorPosition, text, triggerChar]);
|
|
34
|
+
|
|
35
|
+
const query = trigger?.query ?? "";
|
|
36
|
+
|
|
37
|
+
return {
|
|
38
|
+
trigger,
|
|
39
|
+
query,
|
|
40
|
+
setCursorPosition,
|
|
41
|
+
};
|
|
42
|
+
},
|
|
43
|
+
);
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resource,
|
|
3
|
+
tapEffect,
|
|
4
|
+
tapEffectEvent,
|
|
5
|
+
tapState,
|
|
6
|
+
} from "@assistant-ui/tap";
|
|
7
|
+
import type {
|
|
8
|
+
Unstable_TriggerCategory,
|
|
9
|
+
Unstable_TriggerItem,
|
|
10
|
+
} from "@assistant-ui/core";
|
|
11
|
+
|
|
12
|
+
/** Relies on `Unstable_TriggerCategory` never carrying a `type` field. */
|
|
13
|
+
function isTriggerItem(
|
|
14
|
+
x: Unstable_TriggerItem | Unstable_TriggerCategory,
|
|
15
|
+
): x is Unstable_TriggerItem {
|
|
16
|
+
return "type" in x;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/** Key event shape accepted by the keyboard handler. */
|
|
20
|
+
export type TriggerPopoverKeyEvent = {
|
|
21
|
+
readonly key: string;
|
|
22
|
+
readonly shiftKey: boolean;
|
|
23
|
+
preventDefault(): void;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export type TriggerKeyboardResourceOutput = {
|
|
27
|
+
/** Index of the currently highlighted entry within the navigable list. */
|
|
28
|
+
readonly highlightedIndex: number;
|
|
29
|
+
/** ID of the currently highlighted item (for `aria-activedescendant`). */
|
|
30
|
+
readonly highlightedItemId: string | undefined;
|
|
31
|
+
/** Move the highlight to an entry index (e.g. from pointer hover). Out-of-range values are ignored. */
|
|
32
|
+
highlightIndex(index: number): void;
|
|
33
|
+
/** Handle a key event; returns `true` if it was consumed. */
|
|
34
|
+
handleKeyDown(e: TriggerPopoverKeyEvent): boolean;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Owns keyboard-driven highlight state for the popover. Delegates selection,
|
|
39
|
+
* category drill-in, back, and close to the callbacks supplied by the parent.
|
|
40
|
+
*/
|
|
41
|
+
export const TriggerKeyboardResource = resource(
|
|
42
|
+
({
|
|
43
|
+
navigableList,
|
|
44
|
+
isSearchMode,
|
|
45
|
+
activeCategoryId,
|
|
46
|
+
query,
|
|
47
|
+
popoverId,
|
|
48
|
+
open,
|
|
49
|
+
selectItem,
|
|
50
|
+
selectCategory,
|
|
51
|
+
goBack,
|
|
52
|
+
close,
|
|
53
|
+
}: {
|
|
54
|
+
navigableList: readonly (Unstable_TriggerCategory | Unstable_TriggerItem)[];
|
|
55
|
+
isSearchMode: boolean;
|
|
56
|
+
activeCategoryId: string | null;
|
|
57
|
+
query: string;
|
|
58
|
+
popoverId: string;
|
|
59
|
+
open: boolean;
|
|
60
|
+
selectItem: (item: Unstable_TriggerItem) => void;
|
|
61
|
+
selectCategory: (categoryId: string) => void;
|
|
62
|
+
goBack: () => void;
|
|
63
|
+
close: () => void;
|
|
64
|
+
}): TriggerKeyboardResourceOutput => {
|
|
65
|
+
const [highlightedIndex, setHighlightedIndex] = tapState(0);
|
|
66
|
+
|
|
67
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: intentional reset on list change
|
|
68
|
+
tapEffect(() => {
|
|
69
|
+
setHighlightedIndex(0);
|
|
70
|
+
}, [navigableList]);
|
|
71
|
+
|
|
72
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: intentional reset
|
|
73
|
+
tapEffect(() => {
|
|
74
|
+
setHighlightedIndex(0);
|
|
75
|
+
}, [isSearchMode, activeCategoryId]);
|
|
76
|
+
|
|
77
|
+
const highlightIndex = tapEffectEvent((index: number) => {
|
|
78
|
+
if (index < 0 || index >= navigableList.length) return;
|
|
79
|
+
if (index === highlightedIndex) return;
|
|
80
|
+
setHighlightedIndex(index);
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const handleKeyDown = tapEffectEvent(
|
|
84
|
+
(e: TriggerPopoverKeyEvent): boolean => {
|
|
85
|
+
if (!open) return false;
|
|
86
|
+
|
|
87
|
+
switch (e.key) {
|
|
88
|
+
case "ArrowDown": {
|
|
89
|
+
e.preventDefault();
|
|
90
|
+
setHighlightedIndex((prev) => {
|
|
91
|
+
const len = navigableList.length;
|
|
92
|
+
if (len === 0) return 0;
|
|
93
|
+
return prev < len - 1 ? prev + 1 : 0;
|
|
94
|
+
});
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
case "ArrowUp": {
|
|
98
|
+
e.preventDefault();
|
|
99
|
+
setHighlightedIndex((prev) => {
|
|
100
|
+
const len = navigableList.length;
|
|
101
|
+
if (len === 0) return 0;
|
|
102
|
+
return prev > 0 ? prev - 1 : len - 1;
|
|
103
|
+
});
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
case "Enter": {
|
|
107
|
+
if (e.shiftKey) return false;
|
|
108
|
+
e.preventDefault();
|
|
109
|
+
const item = navigableList[highlightedIndex];
|
|
110
|
+
if (!item) return true;
|
|
111
|
+
|
|
112
|
+
if (isTriggerItem(item)) {
|
|
113
|
+
selectItem(item);
|
|
114
|
+
} else {
|
|
115
|
+
selectCategory(item.id);
|
|
116
|
+
}
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
case "Escape": {
|
|
120
|
+
e.preventDefault();
|
|
121
|
+
close();
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
case "Backspace": {
|
|
125
|
+
if (activeCategoryId && query === "") {
|
|
126
|
+
e.preventDefault();
|
|
127
|
+
goBack();
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
default:
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
);
|
|
137
|
+
|
|
138
|
+
const highlightedEntry = navigableList[highlightedIndex];
|
|
139
|
+
const highlightedItemId =
|
|
140
|
+
open && highlightedEntry
|
|
141
|
+
? `${popoverId}-option-${highlightedEntry.id}`
|
|
142
|
+
: undefined;
|
|
143
|
+
|
|
144
|
+
return {
|
|
145
|
+
highlightedIndex,
|
|
146
|
+
highlightedItemId,
|
|
147
|
+
highlightIndex,
|
|
148
|
+
handleKeyDown,
|
|
149
|
+
};
|
|
150
|
+
},
|
|
151
|
+
);
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import {
|
|
2
|
+
resource,
|
|
3
|
+
tapEffect,
|
|
4
|
+
tapEffectEvent,
|
|
5
|
+
tapMemo,
|
|
6
|
+
tapState,
|
|
7
|
+
} from "@assistant-ui/tap";
|
|
8
|
+
import type {
|
|
9
|
+
Unstable_TriggerAdapter,
|
|
10
|
+
Unstable_TriggerCategory,
|
|
11
|
+
Unstable_TriggerItem,
|
|
12
|
+
} from "@assistant-ui/core";
|
|
13
|
+
|
|
14
|
+
function matchesQuery(item: Unstable_TriggerItem, lower: string): boolean {
|
|
15
|
+
return (
|
|
16
|
+
item.id.toLowerCase().includes(lower) ||
|
|
17
|
+
item.label.toLowerCase().includes(lower) ||
|
|
18
|
+
(item.description?.toLowerCase().includes(lower) ?? false)
|
|
19
|
+
);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export type TriggerNavigationResourceOutput = {
|
|
23
|
+
/** Filtered categories visible in the list (empty in search mode). */
|
|
24
|
+
readonly categories: readonly Unstable_TriggerCategory[];
|
|
25
|
+
/** Filtered items visible in the list. */
|
|
26
|
+
readonly items: readonly Unstable_TriggerItem[];
|
|
27
|
+
/** `true` when the current list is search results rather than categories. */
|
|
28
|
+
readonly isSearchMode: boolean;
|
|
29
|
+
/** Currently drilled-into category id (or `null` for the top level). */
|
|
30
|
+
readonly activeCategoryId: string | null;
|
|
31
|
+
/** Flat list used for keyboard navigation (categories or items). */
|
|
32
|
+
readonly navigableList: readonly (
|
|
33
|
+
| Unstable_TriggerCategory
|
|
34
|
+
| Unstable_TriggerItem
|
|
35
|
+
)[];
|
|
36
|
+
/** Drill into a category. */
|
|
37
|
+
selectCategory(categoryId: string): void;
|
|
38
|
+
/** Return to the top-level category list. */
|
|
39
|
+
goBack(): void;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Computes categories, items, search results, and navigation state from the
|
|
44
|
+
* adapter + current query. Pure derivation — no side effects on the composer.
|
|
45
|
+
*/
|
|
46
|
+
export const TriggerNavigationResource = resource(
|
|
47
|
+
({
|
|
48
|
+
adapter,
|
|
49
|
+
query,
|
|
50
|
+
open,
|
|
51
|
+
}: {
|
|
52
|
+
adapter: Unstable_TriggerAdapter | undefined;
|
|
53
|
+
query: string;
|
|
54
|
+
open: boolean;
|
|
55
|
+
}): TriggerNavigationResourceOutput => {
|
|
56
|
+
const [activeCategoryId, setActiveCategoryId] = tapState<string | null>(
|
|
57
|
+
null,
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
tapEffect(() => {
|
|
61
|
+
if (!open) setActiveCategoryId(null);
|
|
62
|
+
}, [open]);
|
|
63
|
+
|
|
64
|
+
const categories = tapMemo<readonly Unstable_TriggerCategory[]>(() => {
|
|
65
|
+
if (!open || !adapter) return [];
|
|
66
|
+
return adapter.categories();
|
|
67
|
+
}, [open, adapter]);
|
|
68
|
+
|
|
69
|
+
const effectiveActiveCategoryId = open ? activeCategoryId : null;
|
|
70
|
+
|
|
71
|
+
const allItems = tapMemo<readonly Unstable_TriggerItem[]>(() => {
|
|
72
|
+
if (!effectiveActiveCategoryId || !adapter) return [];
|
|
73
|
+
return adapter.categoryItems(effectiveActiveCategoryId);
|
|
74
|
+
}, [effectiveActiveCategoryId, adapter]);
|
|
75
|
+
|
|
76
|
+
const searchResults = tapMemo<
|
|
77
|
+
readonly Unstable_TriggerItem[] | null
|
|
78
|
+
>(() => {
|
|
79
|
+
if (!open || !adapter || effectiveActiveCategoryId) return null;
|
|
80
|
+
// If categories exist and query is empty, show categories first (not search)
|
|
81
|
+
if (!query && categories.length > 0) return null;
|
|
82
|
+
if (adapter.search) return adapter.search(query);
|
|
83
|
+
|
|
84
|
+
// fallback: no adapter.search
|
|
85
|
+
const all: Unstable_TriggerItem[] = [];
|
|
86
|
+
const lower = query.toLowerCase();
|
|
87
|
+
for (const cat of categories) {
|
|
88
|
+
for (const item of adapter.categoryItems(cat.id)) {
|
|
89
|
+
if (matchesQuery(item, lower)) {
|
|
90
|
+
all.push(item);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return all;
|
|
95
|
+
}, [open, adapter, query, effectiveActiveCategoryId, categories]);
|
|
96
|
+
|
|
97
|
+
const isSearchMode = searchResults !== null;
|
|
98
|
+
|
|
99
|
+
const filteredCategories = tapMemo(() => {
|
|
100
|
+
if (isSearchMode) return [];
|
|
101
|
+
if (!query) return categories;
|
|
102
|
+
const lower = query.toLowerCase();
|
|
103
|
+
return categories.filter((cat) =>
|
|
104
|
+
cat.label.toLowerCase().includes(lower),
|
|
105
|
+
);
|
|
106
|
+
}, [categories, query, isSearchMode]);
|
|
107
|
+
|
|
108
|
+
const filteredItems = tapMemo(() => {
|
|
109
|
+
if (isSearchMode) return searchResults ?? [];
|
|
110
|
+
if (!query) return allItems;
|
|
111
|
+
const lower = query.toLowerCase();
|
|
112
|
+
return allItems.filter((item) => matchesQuery(item, lower));
|
|
113
|
+
}, [allItems, query, isSearchMode, searchResults]);
|
|
114
|
+
|
|
115
|
+
const navigableList = tapMemo(() => {
|
|
116
|
+
if (isSearchMode) return searchResults ?? [];
|
|
117
|
+
if (effectiveActiveCategoryId) return filteredItems;
|
|
118
|
+
return filteredCategories;
|
|
119
|
+
}, [
|
|
120
|
+
isSearchMode,
|
|
121
|
+
searchResults,
|
|
122
|
+
effectiveActiveCategoryId,
|
|
123
|
+
filteredItems,
|
|
124
|
+
filteredCategories,
|
|
125
|
+
]);
|
|
126
|
+
|
|
127
|
+
const selectCategory = tapEffectEvent((categoryId: string) => {
|
|
128
|
+
setActiveCategoryId(categoryId);
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
const goBack = tapEffectEvent(() => {
|
|
132
|
+
setActiveCategoryId(null);
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
return {
|
|
136
|
+
categories: filteredCategories,
|
|
137
|
+
items: filteredItems,
|
|
138
|
+
isSearchMode,
|
|
139
|
+
activeCategoryId: effectiveActiveCategoryId,
|
|
140
|
+
navigableList,
|
|
141
|
+
selectCategory,
|
|
142
|
+
goBack,
|
|
143
|
+
};
|
|
144
|
+
},
|
|
145
|
+
);
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { resource, tapEffectEvent, tapRef } from "@assistant-ui/tap";
|
|
2
|
+
import type {
|
|
3
|
+
Unstable_DirectiveFormatter,
|
|
4
|
+
Unstable_TriggerItem,
|
|
5
|
+
} from "@assistant-ui/core";
|
|
6
|
+
import type { AssistantClient } from "@assistant-ui/store";
|
|
7
|
+
import type { DetectedTrigger } from "./triggerDetectionResource";
|
|
8
|
+
|
|
9
|
+
/** External override for selection (used by Lexical's DirectivePlugin). */
|
|
10
|
+
export type SelectItemOverride = (item: Unstable_TriggerItem) => boolean;
|
|
11
|
+
|
|
12
|
+
export type TriggerBehavior =
|
|
13
|
+
| {
|
|
14
|
+
readonly kind: "directive";
|
|
15
|
+
readonly formatter: Unstable_DirectiveFormatter;
|
|
16
|
+
readonly onInserted?: (item: Unstable_TriggerItem) => void;
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
readonly kind: "action";
|
|
20
|
+
readonly formatter: Unstable_DirectiveFormatter;
|
|
21
|
+
readonly onExecute: (item: Unstable_TriggerItem) => void;
|
|
22
|
+
readonly removeOnExecute?: boolean;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
export type TriggerSelectionResourceOutput = {
|
|
26
|
+
/** Select an item — runs override (if any) then applies behavior. */
|
|
27
|
+
selectItem(item: Unstable_TriggerItem): void;
|
|
28
|
+
/** Close the popover (moves cursor before trigger to deactivate detection). */
|
|
29
|
+
close(): void;
|
|
30
|
+
/** Register a Lexical-style selection override. Returns unregister fn. */
|
|
31
|
+
registerSelectItemOverride(fn: SelectItemOverride): () => void;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/** Owns composer text mutation + behavior dispatch on item selection. */
|
|
35
|
+
export const TriggerSelectionResource = resource(
|
|
36
|
+
({
|
|
37
|
+
behavior,
|
|
38
|
+
trigger,
|
|
39
|
+
aui,
|
|
40
|
+
triggerChar,
|
|
41
|
+
setCursorPosition,
|
|
42
|
+
onSelected,
|
|
43
|
+
}: {
|
|
44
|
+
behavior: TriggerBehavior | undefined;
|
|
45
|
+
trigger: DetectedTrigger | null;
|
|
46
|
+
aui: AssistantClient;
|
|
47
|
+
triggerChar: string;
|
|
48
|
+
setCursorPosition: (pos: number) => void;
|
|
49
|
+
/** Called after a successful selection so the parent can reset nav state. */
|
|
50
|
+
onSelected: () => void;
|
|
51
|
+
}): TriggerSelectionResourceOutput => {
|
|
52
|
+
// Select-item override: lets Lexical's DirectivePlugin intercept selection
|
|
53
|
+
// and drive its own node insertion.
|
|
54
|
+
const selectItemOverrideRef = tapRef<SelectItemOverride | null>(null);
|
|
55
|
+
|
|
56
|
+
const registerSelectItemOverride = tapEffectEvent(
|
|
57
|
+
(fn: SelectItemOverride) => {
|
|
58
|
+
selectItemOverrideRef.current = fn;
|
|
59
|
+
return () => {
|
|
60
|
+
if (selectItemOverrideRef.current === fn) {
|
|
61
|
+
selectItemOverrideRef.current = null;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
const selectItem = tapEffectEvent((item: Unstable_TriggerItem) => {
|
|
68
|
+
if (!trigger || !behavior) return;
|
|
69
|
+
|
|
70
|
+
if (selectItemOverrideRef.current?.(item)) {
|
|
71
|
+
onSelected();
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const currentText = aui.composer().getState().text;
|
|
76
|
+
const before = currentText.slice(0, trigger.offset);
|
|
77
|
+
const after = currentText.slice(
|
|
78
|
+
trigger.offset + triggerChar.length + trigger.query.length,
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
const insertDirective = () => {
|
|
82
|
+
const directive = behavior.formatter.serialize(item);
|
|
83
|
+
aui
|
|
84
|
+
.composer()
|
|
85
|
+
.setText(
|
|
86
|
+
before + directive + (after.startsWith(" ") ? after : ` ${after}`),
|
|
87
|
+
);
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
if (behavior.kind === "directive") {
|
|
91
|
+
insertDirective();
|
|
92
|
+
behavior.onInserted?.(item);
|
|
93
|
+
} else {
|
|
94
|
+
if (behavior.removeOnExecute) {
|
|
95
|
+
aui
|
|
96
|
+
.composer()
|
|
97
|
+
.setText(before + (after.startsWith(" ") ? after.slice(1) : after));
|
|
98
|
+
} else {
|
|
99
|
+
// Leave directive chip in the composer as an audit trail
|
|
100
|
+
insertDirective();
|
|
101
|
+
}
|
|
102
|
+
behavior.onExecute(item);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
onSelected();
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const close = tapEffectEvent(() => {
|
|
109
|
+
onSelected();
|
|
110
|
+
// Move cursor before the trigger so trigger detection deactivates
|
|
111
|
+
if (trigger) {
|
|
112
|
+
setCursorPosition(trigger.offset);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
|
|
116
|
+
return {
|
|
117
|
+
selectItem,
|
|
118
|
+
close,
|
|
119
|
+
registerSelectItemOverride,
|
|
120
|
+
};
|
|
121
|
+
},
|
|
122
|
+
);
|
|
@@ -14,28 +14,18 @@ export { ComposerPrimitiveQuote as Quote } from "./composer/ComposerQuote";
|
|
|
14
14
|
export { ComposerPrimitiveQuoteText as QuoteText } from "./composer/ComposerQuote";
|
|
15
15
|
export { ComposerPrimitiveQuoteDismiss as QuoteDismiss } from "./composer/ComposerQuote";
|
|
16
16
|
export { ComposerPrimitiveQueue as Queue } from "./composer/ComposerQueue";
|
|
17
|
-
export { ComposerPrimitiveMentionRoot as Unstable_MentionRoot } from "./composer/mention";
|
|
18
|
-
export { ComposerPrimitiveMentionPopover as Unstable_MentionPopover } from "./composer/mention";
|
|
19
|
-
export { ComposerPrimitiveMentionCategories as Unstable_MentionCategories } from "./composer/mention";
|
|
20
|
-
export { ComposerPrimitiveMentionCategoryItem as Unstable_MentionCategoryItem } from "./composer/mention";
|
|
21
|
-
export { ComposerPrimitiveMentionItems as Unstable_MentionItems } from "./composer/mention";
|
|
22
|
-
export { ComposerPrimitiveMentionItem as Unstable_MentionItem } from "./composer/mention";
|
|
23
|
-
export { ComposerPrimitiveMentionBack as Unstable_MentionBack } from "./composer/mention";
|
|
24
|
-
export { useMentionContext as unstable_useMentionContext } from "./composer/mention";
|
|
25
|
-
export { useMentionContextOptional as unstable_useMentionContextOptional } from "./composer/mention";
|
|
26
17
|
|
|
27
|
-
|
|
18
|
+
export { ComposerPrimitiveTriggerPopover as Unstable_TriggerPopover } from "./composer/trigger";
|
|
28
19
|
export { ComposerPrimitiveTriggerPopoverRoot as Unstable_TriggerPopoverRoot } from "./composer/trigger";
|
|
29
|
-
export { ComposerPrimitiveTriggerPopoverPopover as Unstable_TriggerPopoverPopover } from "./composer/trigger";
|
|
30
20
|
export { ComposerPrimitiveTriggerPopoverCategories as Unstable_TriggerPopoverCategories } from "./composer/trigger";
|
|
31
21
|
export { ComposerPrimitiveTriggerPopoverCategoryItem as Unstable_TriggerPopoverCategoryItem } from "./composer/trigger";
|
|
32
22
|
export { ComposerPrimitiveTriggerPopoverItems as Unstable_TriggerPopoverItems } from "./composer/trigger";
|
|
33
23
|
export { ComposerPrimitiveTriggerPopoverItem as Unstable_TriggerPopoverItem } from "./composer/trigger";
|
|
34
24
|
export { ComposerPrimitiveTriggerPopoverBack as Unstable_TriggerPopoverBack } from "./composer/trigger";
|
|
35
|
-
export {
|
|
36
|
-
export {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export {
|
|
25
|
+
export { useTriggerPopoverRootContext as unstable_useTriggerPopoverRootContext } from "./composer/trigger";
|
|
26
|
+
export { useTriggerPopoverRootContextOptional as unstable_useTriggerPopoverRootContextOptional } from "./composer/trigger";
|
|
27
|
+
export { useTriggerPopoverScopeContext as unstable_useTriggerPopoverScopeContext } from "./composer/trigger";
|
|
28
|
+
export { useTriggerPopoverScopeContextOptional as unstable_useTriggerPopoverScopeContextOptional } from "./composer/trigger";
|
|
29
|
+
export { useTriggerPopoverTriggers as unstable_useTriggerPopoverTriggers } from "./composer/trigger";
|
|
30
|
+
export { useTriggerPopoverTriggersOptional as unstable_useTriggerPopoverTriggersOptional } from "./composer/trigger";
|
|
31
|
+
export type { RegisteredTrigger as Unstable_RegisteredTrigger } from "./composer/trigger";
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { renderToStaticMarkup } from "react-dom/server";
|
|
2
|
+
import { describe, expect, it } from "vitest";
|
|
3
|
+
import * as ActionBarMorePrimitive from "./actionBarMore";
|
|
4
|
+
import * as ThreadListItemMorePrimitive from "./threadListItemMore";
|
|
5
|
+
|
|
6
|
+
describe("dropdown menu primitive render props", () => {
|
|
7
|
+
it.each([
|
|
8
|
+
[
|
|
9
|
+
"ActionBarMorePrimitive.Trigger",
|
|
10
|
+
ActionBarMorePrimitive.Root,
|
|
11
|
+
ActionBarMorePrimitive.Trigger,
|
|
12
|
+
],
|
|
13
|
+
[
|
|
14
|
+
"ThreadListItemMorePrimitive.Trigger",
|
|
15
|
+
ThreadListItemMorePrimitive.Root,
|
|
16
|
+
ThreadListItemMorePrimitive.Trigger,
|
|
17
|
+
],
|
|
18
|
+
])("%s render matches asChild", (_name, Root, Trigger) => {
|
|
19
|
+
const renderHtml = renderToStaticMarkup(
|
|
20
|
+
<Root open>
|
|
21
|
+
<Trigger render={<button type="button" className="trigger" />}>
|
|
22
|
+
More
|
|
23
|
+
</Trigger>
|
|
24
|
+
</Root>,
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
const asChildHtml = renderToStaticMarkup(
|
|
28
|
+
<Root open>
|
|
29
|
+
<Trigger asChild>
|
|
30
|
+
<button type="button" className="trigger">
|
|
31
|
+
More
|
|
32
|
+
</button>
|
|
33
|
+
</Trigger>
|
|
34
|
+
</Root>,
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
expect(renderHtml).toBe(asChildHtml);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it("accepts render on all affected dropdown menu primitives", () => {
|
|
41
|
+
const actionBarTree = (
|
|
42
|
+
<ActionBarMorePrimitive.Root open>
|
|
43
|
+
<ActionBarMorePrimitive.Trigger render={<button type="button" />} />
|
|
44
|
+
<ActionBarMorePrimitive.Content render={<div />} />
|
|
45
|
+
<ActionBarMorePrimitive.Item render={<div />} />
|
|
46
|
+
<ActionBarMorePrimitive.Separator render={<div />} />
|
|
47
|
+
</ActionBarMorePrimitive.Root>
|
|
48
|
+
);
|
|
49
|
+
|
|
50
|
+
const threadListItemTree = (
|
|
51
|
+
<ThreadListItemMorePrimitive.Root open>
|
|
52
|
+
<ThreadListItemMorePrimitive.Trigger
|
|
53
|
+
render={<button type="button" />}
|
|
54
|
+
/>
|
|
55
|
+
<ThreadListItemMorePrimitive.Content render={<div />} />
|
|
56
|
+
<ThreadListItemMorePrimitive.Item render={<div />} />
|
|
57
|
+
<ThreadListItemMorePrimitive.Separator render={<div />} />
|
|
58
|
+
</ThreadListItemMorePrimitive.Root>
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
expect(actionBarTree).toBeTruthy();
|
|
62
|
+
expect(threadListItemTree).toBeTruthy();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { DropdownMenu as DropdownMenuPrimitive } from "radix-ui";
|
|
2
|
+
import { withRenderProp } from "../utils/Primitive";
|
|
3
|
+
|
|
4
|
+
export const DropdownMenuRenderTrigger = withRenderProp(
|
|
5
|
+
DropdownMenuPrimitive.Trigger,
|
|
6
|
+
);
|
|
7
|
+
export const DropdownMenuRenderContent = withRenderProp(
|
|
8
|
+
DropdownMenuPrimitive.Content,
|
|
9
|
+
);
|
|
10
|
+
export const DropdownMenuRenderItem = withRenderProp(
|
|
11
|
+
DropdownMenuPrimitive.Item,
|
|
12
|
+
);
|
|
13
|
+
export const DropdownMenuRenderSeparator = withRenderProp(
|
|
14
|
+
DropdownMenuPrimitive.Separator,
|
|
15
|
+
);
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { Primitive } from "../../utils/Primitive";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type ComponentRef,
|
|
6
|
+
forwardRef,
|
|
7
|
+
type ComponentPropsWithoutRef,
|
|
8
|
+
} from "react";
|
|
5
9
|
import { useMessageError } from "@assistant-ui/core/react";
|
|
6
10
|
|
|
7
11
|
export namespace ErrorPrimitiveMessage {
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import { Primitive } from "../../utils/Primitive";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
type ComponentRef,
|
|
6
|
+
forwardRef,
|
|
7
|
+
type ComponentPropsWithoutRef,
|
|
8
|
+
} from "react";
|
|
5
9
|
|
|
6
10
|
export namespace ErrorPrimitiveRoot {
|
|
7
11
|
export type Element = ComponentRef<typeof Primitive.div>;
|