@assistant-ui/mcp-docs-server 0.2.3 → 0.3.1
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 +16 -43
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -91
- package/dist/index.js.map +1 -1
- package/dist/proxy.d.ts +9 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +91 -0
- package/dist/proxy.js.map +1 -0
- package/package.json +8 -12
- package/src/index.ts +3 -115
- package/src/proxy.test.ts +385 -0
- package/src/proxy.ts +126 -0
- package/.docs/organized/code-examples/waterfall.md +0 -807
- package/.docs/organized/code-examples/with-a2a.md +0 -675
- package/.docs/organized/code-examples/with-ag-ui.md +0 -553
- package/.docs/organized/code-examples/with-ai-sdk-v7.md +0 -466
- package/.docs/organized/code-examples/with-artifacts.md +0 -815
- package/.docs/organized/code-examples/with-assistant-transport.md +0 -576
- package/.docs/organized/code-examples/with-browser-extension.md +0 -371
- package/.docs/organized/code-examples/with-chain-of-thought.md +0 -962
- package/.docs/organized/code-examples/with-cloud-standalone.md +0 -681
- package/.docs/organized/code-examples/with-cloud.md +0 -439
- package/.docs/organized/code-examples/with-custom-thread-list.md +0 -569
- package/.docs/organized/code-examples/with-elevenlabs-conversational.md +0 -527
- package/.docs/organized/code-examples/with-elevenlabs-scribe.md +0 -697
- package/.docs/organized/code-examples/with-eve.md +0 -405
- package/.docs/organized/code-examples/with-expo.md +0 -2246
- package/.docs/organized/code-examples/with-external-store.md +0 -421
- package/.docs/organized/code-examples/with-ffmpeg.md +0 -829
- package/.docs/organized/code-examples/with-generative-ui.md +0 -1810
- package/.docs/organized/code-examples/with-google-adk.md +0 -368
- package/.docs/organized/code-examples/with-heat-graph.md +0 -304
- package/.docs/organized/code-examples/with-image-generation.md +0 -463
- package/.docs/organized/code-examples/with-interactables.md +0 -733
- package/.docs/organized/code-examples/with-langchain.md +0 -446
- package/.docs/organized/code-examples/with-langgraph.md +0 -855
- package/.docs/organized/code-examples/with-livekit.md +0 -643
- package/.docs/organized/code-examples/with-mcp.md +0 -782
- package/.docs/organized/code-examples/with-nuxt.md +0 -2428
- package/.docs/organized/code-examples/with-opencode.md +0 -1974
- package/.docs/organized/code-examples/with-openui.md +0 -450
- package/.docs/organized/code-examples/with-pi.md +0 -2084
- package/.docs/organized/code-examples/with-react-hook-form.md +0 -727
- package/.docs/organized/code-examples/with-react-ink-web.md +0 -740
- package/.docs/organized/code-examples/with-react-ink.md +0 -473
- package/.docs/organized/code-examples/with-react-router.md +0 -936
- package/.docs/organized/code-examples/with-resumable-stream.md +0 -668
- package/.docs/organized/code-examples/with-store.md +0 -679
- package/.docs/organized/code-examples/with-svelte.md +0 -415
- package/.docs/organized/code-examples/with-sveltekit.md +0 -1061
- package/.docs/organized/code-examples/with-tanstack.md +0 -812
- package/.docs/organized/code-examples/with-tap-runtime.md +0 -813
- package/.docs/organized/code-examples/with-virtualized-thread.md +0 -681
- package/.docs/organized/code-examples/with-vue.md +0 -408
- package/.docs/raw/docs/(getting-started)/architecture.mdx +0 -146
- package/.docs/raw/docs/(getting-started)/base-ui.mdx +0 -39
- package/.docs/raw/docs/(getting-started)/cli.mdx +0 -542
- package/.docs/raw/docs/(getting-started)/devtools.mdx +0 -79
- package/.docs/raw/docs/(getting-started)/index.mdx +0 -23
- package/.docs/raw/docs/(getting-started)/installation.mdx +0 -483
- package/.docs/raw/docs/(getting-started)/llm.mdx +0 -211
- package/.docs/raw/docs/(getting-started)/rtl.mdx +0 -78
- package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +0 -36
- package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +0 -34
- package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +0 -44
- package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +0 -59
- package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +0 -26
- package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +0 -84
- package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +0 -64
- package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +0 -57
- package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +0 -49
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/a2ui.mdx +0 -40
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/actions.mdx +0 -56
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/components.mdx +0 -86
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +0 -39
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/json-generative-ui.mdx +0 -42
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +0 -84
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +0 -85
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +0 -45
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +0 -93
- package/.docs/raw/docs/(reference)/api-reference/generative-ui/tokens.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +0 -129
- package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +0 -31
- package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +0 -34
- package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +0 -350
- package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +0 -28
- package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +0 -97
- package/.docs/raw/docs/(reference)/api-reference/integrations/ai-sdk.mdx +0 -200
- package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +0 -118
- package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +0 -28
- package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -37
- package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +0 -50
- package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/overview.mdx +0 -566
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +0 -152
- package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +0 -239
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +0 -208
- package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +0 -108
- package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +0 -99
- package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +0 -145
- package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +0 -82
- package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +0 -637
- package/.docs/raw/docs/(reference)/api-reference/primitives/composition.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +0 -65
- package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +0 -73
- package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +0 -117
- package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +0 -339
- package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +0 -77
- package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +0 -88
- package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +0 -81
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +0 -129
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +0 -138
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +0 -122
- package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +0 -289
- package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +0 -32
- package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +0 -43
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +0 -43
- package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +0 -20
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +0 -24
- package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +0 -36
- package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +0 -85
- package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +0 -45
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +0 -55
- package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +0 -151
- package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +0 -106
- package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +0 -178
- package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +0 -48
- package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +0 -62
- package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +0 -19
- package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +0 -152
- package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +0 -22
- package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +0 -54
- package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +0 -36
- package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +0 -527
- package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -604
- package/.docs/raw/docs/cloud/authorization.mdx +0 -252
- package/.docs/raw/docs/cloud/index.mdx +0 -46
- package/.docs/raw/docs/cloud/langgraph.mdx +0 -554
- package/.docs/raw/docs/copilots/assistant-frame.mdx +0 -411
- package/.docs/raw/docs/copilots/make-assistant-visible.mdx +0 -82
- package/.docs/raw/docs/copilots/model-context.mdx +0 -156
- package/.docs/raw/docs/copilots/motivation.mdx +0 -202
- package/.docs/raw/docs/copilots/use-assistant-instructions.mdx +0 -64
- package/.docs/raw/docs/guides/attachments.mdx +0 -619
- package/.docs/raw/docs/guides/branching.mdx +0 -76
- package/.docs/raw/docs/guides/chain-of-thought.mdx +0 -164
- package/.docs/raw/docs/guides/chatgpt-subscription.mdx +0 -108
- package/.docs/raw/docs/guides/context-api.mdx +0 -619
- package/.docs/raw/docs/guides/dictation.mdx +0 -298
- package/.docs/raw/docs/guides/editing.mdx +0 -102
- package/.docs/raw/docs/guides/electron.mdx +0 -369
- package/.docs/raw/docs/guides/headless-composer-input.mdx +0 -113
- package/.docs/raw/docs/guides/image-generation.mdx +0 -74
- package/.docs/raw/docs/guides/index.mdx +0 -117
- package/.docs/raw/docs/guides/input-history.mdx +0 -55
- package/.docs/raw/docs/guides/latex.mdx +0 -158
- package/.docs/raw/docs/guides/mentions.mdx +0 -575
- package/.docs/raw/docs/guides/message-timing.mdx +0 -215
- package/.docs/raw/docs/guides/quoting.mdx +0 -169
- package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +0 -212
- package/.docs/raw/docs/guides/resumable-stream-stores.mdx +0 -152
- package/.docs/raw/docs/guides/resumable-streams.mdx +0 -292
- package/.docs/raw/docs/guides/slash-commands.mdx +0 -358
- package/.docs/raw/docs/guides/speech.mdx +0 -172
- package/.docs/raw/docs/guides/suggestions.mdx +0 -384
- package/.docs/raw/docs/guides/virtualization.mdx +0 -133
- package/.docs/raw/docs/guides/voice.mdx +0 -310
- package/.docs/raw/docs/ink/adapters.mdx +0 -99
- package/.docs/raw/docs/ink/custom-backend.mdx +0 -254
- package/.docs/raw/docs/ink/hooks.mdx +0 -469
- package/.docs/raw/docs/ink/index.mdx +0 -237
- package/.docs/raw/docs/ink/migration.mdx +0 -138
- package/.docs/raw/docs/ink/primitives.mdx +0 -1259
- package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +0 -528
- package/.docs/raw/docs/integrations/auth/better-auth.mdx +0 -188
- package/.docs/raw/docs/integrations/auth/clerk.mdx +0 -166
- package/.docs/raw/docs/integrations/auth/next-auth.mdx +0 -191
- package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +0 -88
- package/.docs/raw/docs/integrations/frameworks/cloudflare-agents.mdx +0 -283
- package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +0 -188
- package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +0 -57
- package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +0 -201
- package/.docs/raw/docs/integrations/gateways/index.mdx +0 -162
- package/.docs/raw/docs/integrations/index.mdx +0 -178
- package/.docs/raw/docs/integrations/observability/helicone.mdx +0 -129
- package/.docs/raw/docs/integrations/observability/langfuse.mdx +0 -161
- package/.docs/raw/docs/integrations/observability/langsmith.mdx +0 -151
- package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +0 -773
- package/.docs/raw/docs/migrations/deprecation-policy.mdx +0 -42
- package/.docs/raw/docs/migrations/index.mdx +0 -50
- package/.docs/raw/docs/migrations/react-compatibility.mdx +0 -74
- package/.docs/raw/docs/migrations/react-langgraph-v0-7.mdx +0 -328
- package/.docs/raw/docs/migrations/toolkit-tools.mdx +0 -236
- package/.docs/raw/docs/migrations/v0-11.mdx +0 -172
- package/.docs/raw/docs/migrations/v0-12.mdx +0 -302
- package/.docs/raw/docs/migrations/v0-14.mdx +0 -297
- package/.docs/raw/docs/migrations/v0-15.mdx +0 -270
- package/.docs/raw/docs/primitives/action-bar.mdx +0 -352
- package/.docs/raw/docs/primitives/assistant-modal.mdx +0 -216
- package/.docs/raw/docs/primitives/attachment.mdx +0 -217
- package/.docs/raw/docs/primitives/branch-picker.mdx +0 -222
- package/.docs/raw/docs/primitives/chain-of-thought.mdx +0 -315
- package/.docs/raw/docs/primitives/composer.mdx +0 -659
- package/.docs/raw/docs/primitives/error.mdx +0 -142
- package/.docs/raw/docs/primitives/index.mdx +0 -99
- package/.docs/raw/docs/primitives/message.mdx +0 -618
- package/.docs/raw/docs/primitives/selection-toolbar.mdx +0 -191
- package/.docs/raw/docs/primitives/suggestion.mdx +0 -254
- package/.docs/raw/docs/primitives/thread-list.mdx +0 -467
- package/.docs/raw/docs/primitives/thread.mdx +0 -509
- package/.docs/raw/docs/react-native/adapters.mdx +0 -94
- package/.docs/raw/docs/react-native/custom-backend.mdx +0 -207
- package/.docs/raw/docs/react-native/hooks.mdx +0 -339
- package/.docs/raw/docs/react-native/index.mdx +0 -289
- package/.docs/raw/docs/react-native/migration.mdx +0 -142
- package/.docs/raw/docs/react-native/primitives.mdx +0 -976
- package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +0 -399
- package/.docs/raw/docs/runtimes/a2a/overview.mdx +0 -60
- package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +0 -216
- package/.docs/raw/docs/runtimes/ag-ui/agent-state.mdx +0 -124
- package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +0 -70
- package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +0 -243
- package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +0 -267
- package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +0 -61
- package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +0 -122
- package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +0 -135
- package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +0 -636
- package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +0 -731
- package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +0 -118
- package/.docs/raw/docs/runtimes/concepts/adapters.mdx +0 -265
- package/.docs/raw/docs/runtimes/concepts/architecture.mdx +0 -167
- package/.docs/raw/docs/runtimes/concepts/stability.mdx +0 -68
- package/.docs/raw/docs/runtimes/concepts/threads.mdx +0 -513
- package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +0 -763
- package/.docs/raw/docs/runtimes/custom/data-stream.mdx +0 -339
- package/.docs/raw/docs/runtimes/custom/external-store.mdx +0 -957
- package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +0 -902
- package/.docs/raw/docs/runtimes/custom/overview.mdx +0 -71
- package/.docs/raw/docs/runtimes/eve/overview.mdx +0 -151
- package/.docs/raw/docs/runtimes/eve/quickstart.mdx +0 -192
- package/.docs/raw/docs/runtimes/google-adk/api.mdx +0 -256
- package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +0 -784
- package/.docs/raw/docs/runtimes/google-adk/overview.mdx +0 -69
- package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +0 -229
- package/.docs/raw/docs/runtimes/langchain.mdx +0 -901
- package/.docs/raw/docs/runtimes/langgraph/agent-state.mdx +0 -181
- package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +0 -305
- package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +0 -104
- package/.docs/raw/docs/runtimes/langgraph/overview.mdx +0 -84
- package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +0 -496
- package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +0 -144
- package/.docs/raw/docs/runtimes/langgraph/threads.mdx +0 -113
- package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +0 -29
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -93
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +0 -347
- package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +0 -393
- package/.docs/raw/docs/runtimes/opencode/hooks.mdx +0 -194
- package/.docs/raw/docs/runtimes/opencode/overview.mdx +0 -58
- package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +0 -119
- package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +0 -133
- package/.docs/raw/docs/tools/a2ui.mdx +0 -107
- package/.docs/raw/docs/tools/backend.mdx +0 -147
- package/.docs/raw/docs/tools/defining-tools.mdx +0 -574
- package/.docs/raw/docs/tools/dynamic-tools.mdx +0 -112
- package/.docs/raw/docs/tools/generative-ui-primitive.mdx +0 -180
- package/.docs/raw/docs/tools/generative-ui-slack.mdx +0 -167
- package/.docs/raw/docs/tools/generative-ui-teams.mdx +0 -160
- package/.docs/raw/docs/tools/generative-ui.mdx +0 -322
- package/.docs/raw/docs/tools/index.mdx +0 -72
- package/.docs/raw/docs/tools/interactables.mdx +0 -1084
- package/.docs/raw/docs/tools/mcp-apps.mdx +0 -363
- package/.docs/raw/docs/tools/mcp.mdx +0 -466
- package/.docs/raw/docs/tools/multi-agent.mdx +0 -237
- package/.docs/raw/docs/tools/openui.mdx +0 -175
- package/.docs/raw/docs/tools/tool-ui.mdx +0 -1020
- package/.docs/raw/docs/tools/user-managed-mcp.mdx +0 -428
- package/.docs/raw/docs/ui/assistant-modal.mdx +0 -166
- package/.docs/raw/docs/ui/assistant-sidebar.mdx +0 -89
- package/.docs/raw/docs/ui/attachment.mdx +0 -279
- package/.docs/raw/docs/ui/composer-trigger-popover.mdx +0 -247
- package/.docs/raw/docs/ui/context-display.mdx +0 -148
- package/.docs/raw/docs/ui/directive-text.mdx +0 -114
- package/.docs/raw/docs/ui/file.mdx +0 -159
- package/.docs/raw/docs/ui/follow-up-suggestions.mdx +0 -82
- package/.docs/raw/docs/ui/image.mdx +0 -102
- package/.docs/raw/docs/ui/markdown.mdx +0 -103
- package/.docs/raw/docs/ui/mcp-config.mdx +0 -107
- package/.docs/raw/docs/ui/mermaid.mdx +0 -92
- package/.docs/raw/docs/ui/message-timing.mdx +0 -93
- package/.docs/raw/docs/ui/model-selector.mdx +0 -455
- package/.docs/raw/docs/ui/part-grouping.mdx +0 -614
- package/.docs/raw/docs/ui/quote.mdx +0 -211
- package/.docs/raw/docs/ui/reasoning.mdx +0 -214
- package/.docs/raw/docs/ui/scrollbar.mdx +0 -77
- package/.docs/raw/docs/ui/sources.mdx +0 -186
- package/.docs/raw/docs/ui/streamdown.mdx +0 -392
- package/.docs/raw/docs/ui/syntax-highlighting.mdx +0 -205
- package/.docs/raw/docs/ui/thread-list.mdx +0 -411
- package/.docs/raw/docs/ui/thread.mdx +0 -559
- package/.docs/raw/docs/ui/tool-fallback.mdx +0 -141
- package/.docs/raw/docs/ui/tool-group.mdx +0 -240
- package/.docs/raw/docs/ui/voice.mdx +0 -173
- package/.docs/raw/docs/utilities/heat-graph.mdx +0 -237
- package/.docs/raw/docs/utilities/react-o11y.mdx +0 -362
- package/.docs/raw/docs/utilities/tw-shimmer.mdx +0 -212
- package/dist/constants.d.ts +0 -14
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -19
- package/dist/constants.js.map +0 -1
- package/dist/prepare-docs/code-examples.d.ts +0 -5
- package/dist/prepare-docs/code-examples.d.ts.map +0 -1
- package/dist/prepare-docs/code-examples.js +0 -117
- package/dist/prepare-docs/code-examples.js.map +0 -1
- package/dist/prepare-docs/copy-raw.d.ts +0 -5
- package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
- package/dist/prepare-docs/copy-raw.js +0 -49
- package/dist/prepare-docs/copy-raw.js.map +0 -1
- package/dist/prepare-docs/prepare.d.ts +0 -1
- package/dist/prepare-docs/prepare.js +0 -22
- package/dist/prepare-docs/prepare.js.map +0 -1
- package/dist/prompts/xulux-playground.d.ts +0 -12
- package/dist/prompts/xulux-playground.d.ts.map +0 -1
- package/dist/prompts/xulux-playground.js +0 -33
- package/dist/prompts/xulux-playground.js.map +0 -1
- package/dist/tools/docs.d.ts +0 -22
- package/dist/tools/docs.d.ts.map +0 -1
- package/dist/tools/docs.js +0 -177
- package/dist/tools/docs.js.map +0 -1
- package/dist/tools/examples.d.ts +0 -24
- package/dist/tools/examples.d.ts.map +0 -1
- package/dist/tools/examples.js +0 -87
- package/dist/tools/examples.js.map +0 -1
- package/dist/tools/resources.d.ts +0 -6
- package/dist/tools/resources.d.ts.map +0 -1
- package/dist/tools/resources.js +0 -75
- package/dist/tools/resources.js.map +0 -1
- package/dist/tools/search.d.ts +0 -24
- package/dist/tools/search.d.ts.map +0 -1
- package/dist/tools/search.js +0 -39
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/tests/mcp-test-client.d.ts +0 -15
- package/dist/tools/tests/mcp-test-client.d.ts.map +0 -1
- package/dist/tools/tests/mcp-test-client.js +0 -68
- package/dist/tools/tests/mcp-test-client.js.map +0 -1
- package/dist/tools/tests/test-setup.d.ts +0 -7
- package/dist/tools/tests/test-setup.d.ts.map +0 -1
- package/dist/tools/tests/test-setup.js +0 -36
- package/dist/tools/tests/test-setup.js.map +0 -1
- package/dist/tools/xulux-templates.d.ts +0 -58
- package/dist/tools/xulux-templates.d.ts.map +0 -1
- package/dist/tools/xulux-templates.js +0 -84
- package/dist/tools/xulux-templates.js.map +0 -1
- package/dist/utils/cache.d.ts +0 -5
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js +0 -18
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -10
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -20
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/mcp-format.d.ts +0 -11
- package/dist/utils/mcp-format.d.ts.map +0 -1
- package/dist/utils/mcp-format.js +0 -14
- package/dist/utils/mcp-format.js.map +0 -1
- package/dist/utils/mdx.d.ts +0 -12
- package/dist/utils/mdx.d.ts.map +0 -1
- package/dist/utils/mdx.js +0 -45
- package/dist/utils/mdx.js.map +0 -1
- package/dist/utils/paths.d.ts +0 -12
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js +0 -93
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/search.d.ts +0 -10
- package/dist/utils/search.d.ts.map +0 -1
- package/dist/utils/search.js +0 -97
- package/dist/utils/search.js.map +0 -1
- package/dist/utils/security.d.ts +0 -5
- package/dist/utils/security.d.ts.map +0 -1
- package/dist/utils/security.js +0 -22
- package/dist/utils/security.js.map +0 -1
- package/dist/xulux/catalog-client.d.ts +0 -14
- package/dist/xulux/catalog-client.d.ts.map +0 -1
- package/dist/xulux/catalog-client.js +0 -112
- package/dist/xulux/catalog-client.js.map +0 -1
- package/dist/xulux/fallback-catalog.d.ts +0 -7
- package/dist/xulux/fallback-catalog.d.ts.map +0 -1
- package/dist/xulux/fallback-catalog.js +0 -47
- package/dist/xulux/fallback-catalog.js.map +0 -1
- package/dist/xulux/fetch-sandbox.d.ts +0 -5
- package/dist/xulux/fetch-sandbox.d.ts.map +0 -1
- package/dist/xulux/fetch-sandbox.js +0 -40
- package/dist/xulux/fetch-sandbox.js.map +0 -1
- package/dist/xulux/template-service.d.ts +0 -84
- package/dist/xulux/template-service.d.ts.map +0 -1
- package/dist/xulux/template-service.js +0 -223
- package/dist/xulux/template-service.js.map +0 -1
- package/dist/xulux/types.d.ts +0 -55
- package/dist/xulux/types.d.ts.map +0 -1
- package/dist/xulux/types.js +0 -6
- package/dist/xulux/types.js.map +0 -1
- package/src/constants.ts +0 -24
- package/src/prepare-docs/code-examples.ts +0 -158
- package/src/prepare-docs/copy-raw.ts +0 -50
- package/src/prepare-docs/prepare.ts +0 -24
- package/src/prompts/xulux-playground.ts +0 -36
- package/src/tools/docs.ts +0 -255
- package/src/tools/examples.ts +0 -114
- package/src/tools/resources.ts +0 -111
- package/src/tools/search.ts +0 -46
- package/src/tools/tests/completions.test.ts +0 -60
- package/src/tools/tests/directory-size-cap.test.ts +0 -50
- package/src/tools/tests/docs.test.ts +0 -147
- package/src/tools/tests/examples.test.ts +0 -94
- package/src/tools/tests/integration.test.ts +0 -45
- package/src/tools/tests/json-parsing.test.ts +0 -23
- package/src/tools/tests/listings-cache.test.ts +0 -19
- package/src/tools/tests/mcp-protocol.test.ts +0 -216
- package/src/tools/tests/mcp-test-client.ts +0 -111
- package/src/tools/tests/path-traversal.test.ts +0 -84
- package/src/tools/tests/resources.test.ts +0 -133
- package/src/tools/tests/search.test.ts +0 -37
- package/src/tools/tests/test-setup.ts +0 -50
- package/src/tools/tests/xulux-templates.test.ts +0 -325
- package/src/tools/xulux-templates.ts +0 -141
- package/src/utils/cache.ts +0 -20
- package/src/utils/logger.ts +0 -20
- package/src/utils/mcp-format.ts +0 -14
- package/src/utils/mdx.ts +0 -59
- package/src/utils/paths.ts +0 -139
- package/src/utils/search.ts +0 -131
- package/src/utils/security.ts +0 -52
- package/src/utils/tests/cache.test.ts +0 -51
- package/src/utils/tests/mcp-format.test.ts +0 -22
- package/src/utils/tests/security.test.ts +0 -119
- package/src/xulux/catalog-client.ts +0 -150
- package/src/xulux/fallback-catalog.ts +0 -63
- package/src/xulux/fetch-sandbox.ts +0 -56
- package/src/xulux/template-service.ts +0 -406
- package/src/xulux/types.ts +0 -64
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: ThreadList
|
|
3
|
-
description: Multi-thread management for listing, creating, switching, archiving, and deleting conversations.
|
|
4
|
-
platforms: ["react"]
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
import { ThreadListPrimitiveSample } from "@/components/pages/docs/samples/thread-list-primitive";
|
|
8
|
-
import { ThreadListPrimitive as ThreadListPrimitiveDocs, ThreadListItemPrimitive as ThreadListItemPrimitiveDocs, ThreadListItemMorePrimitive as ThreadListItemMorePrimitiveDocs } from "@/generated/primitiveDocs";
|
|
9
|
-
|
|
10
|
-
The ThreadList primitive manages multiple conversations by listing threads, creating new ones, switching between them, and archiving or deleting old ones. It's composed from three primitive namespaces: `ThreadListPrimitive`, `ThreadListItemPrimitive`, and `ThreadListItemMorePrimitive`.
|
|
11
|
-
|
|
12
|
-
<Tabs items={["Preview", "Code"]}>
|
|
13
|
-
<Tab>
|
|
14
|
-
<ThreadListPrimitiveSample />
|
|
15
|
-
</Tab>
|
|
16
|
-
<Tab>
|
|
17
|
-
```tsx
|
|
18
|
-
import {
|
|
19
|
-
ThreadListPrimitive,
|
|
20
|
-
ThreadListItemPrimitive,
|
|
21
|
-
ThreadListItemMorePrimitive,
|
|
22
|
-
} from "@assistant-ui/react";
|
|
23
|
-
import { ArchiveIcon, MoreHorizontalIcon, PlusIcon, TrashIcon } from "lucide-react";
|
|
24
|
-
|
|
25
|
-
function MyThreadList() {
|
|
26
|
-
return (
|
|
27
|
-
<ThreadListPrimitive.Root className="flex flex-col gap-1">
|
|
28
|
-
<ThreadListPrimitive.New className="flex h-9 items-center gap-2 rounded-lg border px-3 text-sm hover:bg-muted">
|
|
29
|
-
<PlusIcon className="size-4" />
|
|
30
|
-
New Thread
|
|
31
|
-
</ThreadListPrimitive.New>
|
|
32
|
-
<ThreadListPrimitive.Items>
|
|
33
|
-
{() => <ThreadListItem />}
|
|
34
|
-
</ThreadListPrimitive.Items>
|
|
35
|
-
</ThreadListPrimitive.Root>
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
function ThreadListItem() {
|
|
40
|
-
return (
|
|
41
|
-
<ThreadListItemPrimitive.Root className="group relative flex h-9 items-center rounded-lg hover:bg-muted data-active:bg-muted has-focus-visible:bg-muted">
|
|
42
|
-
<ThreadListItemPrimitive.Trigger className="min-w-0 flex-1 truncate px-3 text-sm outline-none">
|
|
43
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
44
|
-
</ThreadListItemPrimitive.Trigger>
|
|
45
|
-
<ThreadListItemMorePrimitive.Root sharedFocusGroup>
|
|
46
|
-
<ThreadListItemMorePrimitive.Trigger className="absolute end-1.5 top-1/2 size-7 -translate-y-1/2 rounded-md opacity-0 group-hover:opacity-100 group-has-focus-visible:opacity-100 data-[state=open]:opacity-100">
|
|
47
|
-
<MoreHorizontalIcon className="size-4" />
|
|
48
|
-
</ThreadListItemMorePrimitive.Trigger>
|
|
49
|
-
<ThreadListItemMorePrimitive.Content className="rounded-md border bg-popover p-1 shadow-md">
|
|
50
|
-
<ThreadListItemPrimitive.Archive asChild>
|
|
51
|
-
<ThreadListItemMorePrimitive.Item className="flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm hover:bg-accent">
|
|
52
|
-
<ArchiveIcon className="size-4" /> Archive
|
|
53
|
-
</ThreadListItemMorePrimitive.Item>
|
|
54
|
-
</ThreadListItemPrimitive.Archive>
|
|
55
|
-
<ThreadListItemPrimitive.Delete asChild>
|
|
56
|
-
<ThreadListItemMorePrimitive.Item className="flex items-center gap-2 rounded-sm px-2 py-1.5 text-sm text-destructive hover:bg-destructive/10">
|
|
57
|
-
<TrashIcon className="size-4" /> Delete
|
|
58
|
-
</ThreadListItemMorePrimitive.Item>
|
|
59
|
-
</ThreadListItemPrimitive.Delete>
|
|
60
|
-
</ThreadListItemMorePrimitive.Content>
|
|
61
|
-
</ThreadListItemMorePrimitive.Root>
|
|
62
|
-
</ThreadListItemPrimitive.Root>
|
|
63
|
-
);
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
</Tab>
|
|
67
|
-
</Tabs>
|
|
68
|
-
|
|
69
|
-
## Quick Start
|
|
70
|
-
|
|
71
|
-
Minimal example:
|
|
72
|
-
|
|
73
|
-
```tsx
|
|
74
|
-
import {
|
|
75
|
-
ThreadListPrimitive,
|
|
76
|
-
ThreadListItemPrimitive,
|
|
77
|
-
} from "@assistant-ui/react";
|
|
78
|
-
|
|
79
|
-
<ThreadListPrimitive.Root>
|
|
80
|
-
<ThreadListPrimitive.New>New Thread</ThreadListPrimitive.New>
|
|
81
|
-
<ThreadListPrimitive.Items>
|
|
82
|
-
{() => (
|
|
83
|
-
<ThreadListItemPrimitive.Root>
|
|
84
|
-
<ThreadListItemPrimitive.Trigger>
|
|
85
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
86
|
-
</ThreadListItemPrimitive.Trigger>
|
|
87
|
-
</ThreadListItemPrimitive.Root>
|
|
88
|
-
)}
|
|
89
|
-
</ThreadListPrimitive.Items>
|
|
90
|
-
</ThreadListPrimitive.Root>
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
`Root` renders a `<div>`, `New` renders a `<button>` that creates a new thread, and `Items` iterates over the thread list. Each item is composed from `ThreadListItemPrimitive` parts.
|
|
94
|
-
|
|
95
|
-
<Callout type="info">
|
|
96
|
-
Runtime setup: primitives require runtime context. Wrap your UI in `AssistantRuntimeProvider` with a runtime (for example `useLocalRuntime(...)`). See [Pick a Runtime](/docs/runtimes/pick-a-runtime).
|
|
97
|
-
</Callout>
|
|
98
|
-
|
|
99
|
-
## Core Concepts
|
|
100
|
-
|
|
101
|
-
### Three Namespaces
|
|
102
|
-
|
|
103
|
-
ThreadList is split across three namespaces to keep each level of abstraction composable:
|
|
104
|
-
|
|
105
|
-
- **`ThreadListPrimitive`**: The outer container. `Root` wraps the list, `New` creates threads, and `Items` iterates over them.
|
|
106
|
-
- **`ThreadListItemPrimitive`**: An individual thread row. `Root` provides context, `Trigger` switches to the thread, `Title` shows the thread name, and action buttons (Archive, Unarchive, Delete) manage the thread lifecycle.
|
|
107
|
-
- **`ThreadListItemMorePrimitive`**: An overflow dropdown menu (built on Radix DropdownMenu) for thread actions. Compose action buttons with menu items using `asChild`.
|
|
108
|
-
|
|
109
|
-
### Active State
|
|
110
|
-
|
|
111
|
-
Both `ThreadListPrimitive.New` and `ThreadListItemPrimitive.Root` get a `data-active` attribute when they represent the current thread. Use this for styling:
|
|
112
|
-
|
|
113
|
-
```tsx
|
|
114
|
-
<ThreadListItemPrimitive.Root className="hover:bg-muted data-active:bg-muted">
|
|
115
|
-
{/* ... */}
|
|
116
|
-
</ThreadListItemPrimitive.Root>
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
The `New` button gets `data-active` when the user is on a fresh, unsaved thread.
|
|
120
|
-
|
|
121
|
-
### Keyboard Navigation
|
|
122
|
-
|
|
123
|
-
Every item stays a native Tab stop, and arrow keys are layered on top. Up/Down move between items and Right focuses an item's `More` button (Left/Right are mirrored in RTL). This is built into the primitives — no prop is required.
|
|
124
|
-
|
|
125
|
-
To fold the `More` menu into the same navigation, opt it in with `sharedFocusGroup`:
|
|
126
|
-
|
|
127
|
-
```tsx
|
|
128
|
-
<ThreadListItemMorePrimitive.Root sharedFocusGroup>
|
|
129
|
-
{/* Right opens the menu from the trigger; Left/Escape close it and
|
|
130
|
-
return focus to the trigger, keeping the highlight continuous. */}
|
|
131
|
-
</ThreadListItemMorePrimitive.Root>
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
`sharedFocusGroup` joins the menu to the list's focus group, so its trigger and the open menu act as one keyboard-navigable unit: Right opens it and Left/Escape close it, synchronously restoring focus to the trigger so a `group-has-focus-visible` highlight never flickers. Enabling it forces the menu non-modal, because a focus trap and a shared focus group are mutually exclusive — the trap keeps focus inside the menu, the shared group lets it move out across the boundary. Without `sharedFocusGroup` the menu keeps its standard Radix `DropdownMenu` keyboard behavior (modal by default), so menus you already render are unchanged. Our assistant-ui [thread-list](/docs/ui/thread-list) registry component sets `sharedFocusGroup` for you.
|
|
135
|
-
|
|
136
|
-
### Items Iterator
|
|
137
|
-
|
|
138
|
-
`ThreadListPrimitive.Items` now prefers a children render function, similar to `ThreadPrimitive.Messages`:
|
|
139
|
-
|
|
140
|
-
```tsx
|
|
141
|
-
<ThreadListPrimitive.Items>
|
|
142
|
-
{({ threadListItem }) => (
|
|
143
|
-
<MyThreadItem threadId={threadListItem.id} />
|
|
144
|
-
)}
|
|
145
|
-
</ThreadListPrimitive.Items>
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
`components` is deprecated. Use the `children` render function instead.
|
|
149
|
-
|
|
150
|
-
### Archived Threads
|
|
151
|
-
|
|
152
|
-
Pass `archived` to `Items` to render archived threads separately:
|
|
153
|
-
|
|
154
|
-
```tsx
|
|
155
|
-
<ThreadListPrimitive.Root>
|
|
156
|
-
<ThreadListPrimitive.New>New Thread</ThreadListPrimitive.New>
|
|
157
|
-
<ThreadListPrimitive.Items>
|
|
158
|
-
{() => <ThreadListItem />}
|
|
159
|
-
</ThreadListPrimitive.Items>
|
|
160
|
-
|
|
161
|
-
<h3>Archived</h3>
|
|
162
|
-
<ThreadListPrimitive.Items archived>
|
|
163
|
-
{() => <ArchivedThreadItem />}
|
|
164
|
-
</ThreadListPrimitive.Items>
|
|
165
|
-
</ThreadListPrimitive.Root>
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
### Thread Actions
|
|
169
|
-
|
|
170
|
-
`Archive`, `Unarchive`, and `Delete` buttons disable automatically when the runtime capability is unavailable.
|
|
171
|
-
|
|
172
|
-
### Composing Actions with Menu Items
|
|
173
|
-
|
|
174
|
-
The canonical pattern composes `ThreadListItemPrimitive.Archive asChild` with `ThreadListItemMorePrimitive.Item` to get both the action behavior AND the menu item styling:
|
|
175
|
-
|
|
176
|
-
```tsx
|
|
177
|
-
<ThreadListItemPrimitive.Archive asChild>
|
|
178
|
-
<ThreadListItemMorePrimitive.Item>
|
|
179
|
-
<ArchiveIcon className="size-4" /> Archive
|
|
180
|
-
</ThreadListItemMorePrimitive.Item>
|
|
181
|
-
</ThreadListItemPrimitive.Archive>
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
`Archive` provides the click handler and disabled logic. `Item` provides the menu item behavior and styling. `asChild` merges them into a single element.
|
|
185
|
-
|
|
186
|
-
## Accessibility
|
|
187
|
-
|
|
188
|
-
The thread list leans on native button semantics and Radix's `DropdownMenu`; the arrow-key navigation is layered on top as a convenience, not a requirement.
|
|
189
|
-
|
|
190
|
-
- Each `ThreadListItemPrimitive.Trigger` is a native `<button>` and its own Tab stop, so the whole list is reachable with <Kbd>Tab</Kbd> alone. The arrow keys (see [Keyboard Navigation](#keyboard-navigation)) speed traversal up, but nothing depends on them.
|
|
191
|
-
- The item representing the current thread sets `aria-current="true"` (alongside `data-active`) on `ThreadListItemPrimitive.Root`, so assistive tech announces which conversation is open.
|
|
192
|
-
- The `More` trigger exposes `aria-haspopup="menu"`, and its panel is a Radix `role="menu"` with `role="menuitem"` children, so screen readers announce it as a menu and the arrow keys cycle its items.
|
|
193
|
-
- With `sharedFocusGroup`, the `More` menu is non-modal and joins the list's focus group: opening and closing it move focus synchronously between the trigger and the menu, so keyboard focus is never dropped and the `group-has-focus-visible` highlight never flickers. Without it, the menu keeps Radix's default modal focus trap.
|
|
194
|
-
|
|
195
|
-
## Parts
|
|
196
|
-
|
|
197
|
-
### ThreadListPrimitive
|
|
198
|
-
|
|
199
|
-
#### Root
|
|
200
|
-
|
|
201
|
-
Container for the full thread list. Renders a `<div>` element unless `asChild` is set.
|
|
202
|
-
|
|
203
|
-
```tsx
|
|
204
|
-
<ThreadListPrimitive.Root className="flex flex-col gap-1">
|
|
205
|
-
<ThreadListPrimitive.Items>
|
|
206
|
-
{() => <MyThreadItem />}
|
|
207
|
-
</ThreadListPrimitive.Items>
|
|
208
|
-
</ThreadListPrimitive.Root>
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
#### New
|
|
212
|
-
|
|
213
|
-
Button that creates a new thread. Renders a `<button>` element unless `asChild` is set.
|
|
214
|
-
|
|
215
|
-
```tsx
|
|
216
|
-
<ThreadListPrimitive.New className="rounded-lg border px-3 py-2 text-sm">
|
|
217
|
-
New Thread
|
|
218
|
-
</ThreadListPrimitive.New>
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
#### Items
|
|
222
|
-
|
|
223
|
-
Renders a component per thread.
|
|
224
|
-
|
|
225
|
-
```tsx
|
|
226
|
-
<ThreadListPrimitive.Items>
|
|
227
|
-
{() => <MyThreadItem />}
|
|
228
|
-
</ThreadListPrimitive.Items>
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
<PrimitivesTypeTable type="ThreadListPrimitiveItemsProps" parameters={ThreadListPrimitiveDocs.Items.props} />
|
|
232
|
-
|
|
233
|
-
#### ItemByIndex
|
|
234
|
-
|
|
235
|
-
Renders a single thread at a specific index.
|
|
236
|
-
|
|
237
|
-
```tsx
|
|
238
|
-
<ThreadListPrimitive.ItemByIndex
|
|
239
|
-
index={0}
|
|
240
|
-
components={{ ThreadListItem: MyThreadItem }}
|
|
241
|
-
/>
|
|
242
|
-
```
|
|
243
|
-
|
|
244
|
-
<PrimitivesTypeTable type="ThreadListPrimitiveItemByIndexProps" parameters={ThreadListPrimitiveDocs.ItemByIndex.props} />
|
|
245
|
-
|
|
246
|
-
#### LoadMore
|
|
247
|
-
|
|
248
|
-
Button that appends the next page of threads. Renders a `<button>` element unless `asChild` is set, and is automatically disabled when the runtime is loading or when the adapter's last `list()` did not return a `nextCursor`. See [Threads concepts](/docs/runtimes/concepts/threads#paginating-the-thread-list) for the adapter contract.
|
|
249
|
-
|
|
250
|
-
```tsx
|
|
251
|
-
<ThreadListPrimitive.LoadMore className="rounded-lg border px-3 py-2 text-sm">
|
|
252
|
-
Load more
|
|
253
|
-
</ThreadListPrimitive.LoadMore>
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
For scroll-driven loading, wrap `aui.threads.loadMore()` in your own `IntersectionObserver` at the application layer; assistant-ui ships the explicit button to keep the primitive surface predictable.
|
|
257
|
-
|
|
258
|
-
```tsx
|
|
259
|
-
import { useAui, useAuiState } from "@assistant-ui/react";
|
|
260
|
-
import { useEffect, useRef } from "react";
|
|
261
|
-
|
|
262
|
-
function LoadMoreSentinel() {
|
|
263
|
-
const aui = useAui();
|
|
264
|
-
const disabled = useAuiState(
|
|
265
|
-
(s) =>
|
|
266
|
-
!s.threads.hasMore || s.threads.isLoading || s.threads.isLoadingMore,
|
|
267
|
-
);
|
|
268
|
-
const ref = useRef<HTMLDivElement>(null);
|
|
269
|
-
|
|
270
|
-
useEffect(() => {
|
|
271
|
-
const el = ref.current;
|
|
272
|
-
if (!el || disabled) return;
|
|
273
|
-
const observer = new IntersectionObserver(([entry]) => {
|
|
274
|
-
if (entry?.isIntersecting) aui.threads.loadMore();
|
|
275
|
-
});
|
|
276
|
-
observer.observe(el);
|
|
277
|
-
return () => observer.disconnect();
|
|
278
|
-
}, [aui, disabled]);
|
|
279
|
-
|
|
280
|
-
return disabled ? null : <div ref={ref} className="h-9" />;
|
|
281
|
-
}
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
### ThreadListItemPrimitive
|
|
285
|
-
|
|
286
|
-
#### Root
|
|
287
|
-
|
|
288
|
-
Container for one thread list item. Renders a `<div>` element unless `asChild` is set.
|
|
289
|
-
|
|
290
|
-
```tsx
|
|
291
|
-
<ThreadListItemPrimitive.Root className="flex items-center gap-2 rounded-lg px-2 py-1.5">
|
|
292
|
-
<ThreadListItemPrimitive.Trigger className="flex-1 text-left">
|
|
293
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
294
|
-
</ThreadListItemPrimitive.Trigger>
|
|
295
|
-
</ThreadListItemPrimitive.Root>
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
#### Trigger
|
|
299
|
-
|
|
300
|
-
Interactive button that selects the thread. Renders a `<button>` element unless `asChild` is set.
|
|
301
|
-
|
|
302
|
-
```tsx
|
|
303
|
-
<ThreadListItemPrimitive.Trigger className="flex-1 text-left">
|
|
304
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
305
|
-
</ThreadListItemPrimitive.Trigger>
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
#### Title
|
|
309
|
-
|
|
310
|
-
Displays the thread title with a `fallback` prop. Renders a React fragment (no wrapper element). Use a `<span>` wrapper if you need to style it.
|
|
311
|
-
|
|
312
|
-
```tsx
|
|
313
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
314
|
-
```
|
|
315
|
-
|
|
316
|
-
<PrimitivesTypeTable type="ThreadListItemPrimitiveTitleProps" parameters={ThreadListItemPrimitiveDocs.Title.props} />
|
|
317
|
-
|
|
318
|
-
#### Archive
|
|
319
|
-
|
|
320
|
-
Button that archives the current thread item. Renders a `<button>` element unless `asChild` is set.
|
|
321
|
-
|
|
322
|
-
```tsx
|
|
323
|
-
<ThreadListItemPrimitive.Archive>Archive</ThreadListItemPrimitive.Archive>
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
#### Unarchive
|
|
327
|
-
|
|
328
|
-
Button that restores the current thread item from the archive. Renders a `<button>` element unless `asChild` is set.
|
|
329
|
-
|
|
330
|
-
```tsx
|
|
331
|
-
<ThreadListItemPrimitive.Unarchive>Unarchive</ThreadListItemPrimitive.Unarchive>
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
#### Delete
|
|
335
|
-
|
|
336
|
-
Button that deletes the current thread item. Renders a `<button>` element unless `asChild` is set.
|
|
337
|
-
|
|
338
|
-
```tsx
|
|
339
|
-
<ThreadListItemPrimitive.Delete>Delete</ThreadListItemPrimitive.Delete>
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### ThreadListItemMorePrimitive
|
|
343
|
-
|
|
344
|
-
#### Root
|
|
345
|
-
|
|
346
|
-
Root container for the overflow menu primitives. Pass `sharedFocusGroup` to fold the menu into the list's arrow-key navigation (see [Keyboard Navigation](#keyboard-navigation)); doing so forces it non-modal. Without it the menu honors the `modal` prop, defaulting to modal like Radix's `DropdownMenu`.
|
|
347
|
-
|
|
348
|
-
```tsx
|
|
349
|
-
<ThreadListItemMorePrimitive.Root sharedFocusGroup>
|
|
350
|
-
<ThreadListItemMorePrimitive.Trigger>More</ThreadListItemMorePrimitive.Trigger>
|
|
351
|
-
</ThreadListItemMorePrimitive.Root>
|
|
352
|
-
```
|
|
353
|
-
|
|
354
|
-
#### Trigger
|
|
355
|
-
|
|
356
|
-
Button that opens the overflow menu. Renders a `<button>` element unless `asChild` is set.
|
|
357
|
-
|
|
358
|
-
```tsx
|
|
359
|
-
<ThreadListItemMorePrimitive.Trigger className="rounded-md p-1 hover:bg-muted">
|
|
360
|
-
More
|
|
361
|
-
</ThreadListItemMorePrimitive.Trigger>
|
|
362
|
-
```
|
|
363
|
-
|
|
364
|
-
#### Content
|
|
365
|
-
|
|
366
|
-
The dropdown panel. Renders a `<div>` via a portal (positioned relative to the trigger).
|
|
367
|
-
|
|
368
|
-
```tsx
|
|
369
|
-
<ThreadListItemMorePrimitive.Content className="rounded-md border bg-popover p-1 shadow-md">
|
|
370
|
-
<ThreadListItemPrimitive.Archive asChild>
|
|
371
|
-
<ThreadListItemMorePrimitive.Item>Archive</ThreadListItemMorePrimitive.Item>
|
|
372
|
-
</ThreadListItemPrimitive.Archive>
|
|
373
|
-
</ThreadListItemMorePrimitive.Content>
|
|
374
|
-
```
|
|
375
|
-
|
|
376
|
-
<PrimitivesTypeTable type="ThreadListItemMorePrimitiveContentProps" parameters={ThreadListItemMorePrimitiveDocs.Content.props} />
|
|
377
|
-
|
|
378
|
-
#### Item
|
|
379
|
-
|
|
380
|
-
Menu item slot inside the overflow menu. Renders a `<div>` element unless `asChild` is set.
|
|
381
|
-
|
|
382
|
-
```tsx
|
|
383
|
-
<ThreadListItemMorePrimitive.Item>Archive</ThreadListItemMorePrimitive.Item>
|
|
384
|
-
```
|
|
385
|
-
|
|
386
|
-
#### Separator
|
|
387
|
-
|
|
388
|
-
Visual separator between groups of menu items. Renders a `<div>` element unless `asChild` is set.
|
|
389
|
-
|
|
390
|
-
```tsx
|
|
391
|
-
<ThreadListItemMorePrimitive.Separator className="my-1 h-px bg-border" />
|
|
392
|
-
```
|
|
393
|
-
|
|
394
|
-
## Patterns
|
|
395
|
-
|
|
396
|
-
### Basic Thread List with New Button
|
|
397
|
-
|
|
398
|
-
```tsx
|
|
399
|
-
<ThreadListPrimitive.Root className="flex flex-col gap-1">
|
|
400
|
-
<ThreadListPrimitive.New className="flex items-center gap-2 rounded-lg border px-3 py-2 text-sm">
|
|
401
|
-
<PlusIcon className="size-4" /> New Thread
|
|
402
|
-
</ThreadListPrimitive.New>
|
|
403
|
-
<ThreadListPrimitive.Items>
|
|
404
|
-
{() => <ThreadListItem />}
|
|
405
|
-
</ThreadListPrimitive.Items>
|
|
406
|
-
</ThreadListPrimitive.Root>
|
|
407
|
-
```
|
|
408
|
-
|
|
409
|
-
### Thread Item with More Menu
|
|
410
|
-
|
|
411
|
-
```tsx
|
|
412
|
-
function ThreadListItem() {
|
|
413
|
-
return (
|
|
414
|
-
<ThreadListItemPrimitive.Root className="group flex items-center rounded-lg hover:bg-muted data-active:bg-muted">
|
|
415
|
-
<ThreadListItemPrimitive.Trigger className="flex-1 truncate px-3 py-2 text-sm">
|
|
416
|
-
<ThreadListItemPrimitive.Title fallback="New Chat" />
|
|
417
|
-
</ThreadListItemPrimitive.Trigger>
|
|
418
|
-
<ThreadListItemMorePrimitive.Root>
|
|
419
|
-
<ThreadListItemMorePrimitive.Trigger className="opacity-0 group-hover:opacity-100">
|
|
420
|
-
<MoreHorizontalIcon className="size-4" />
|
|
421
|
-
</ThreadListItemMorePrimitive.Trigger>
|
|
422
|
-
<ThreadListItemMorePrimitive.Content>
|
|
423
|
-
<ThreadListItemPrimitive.Archive asChild>
|
|
424
|
-
<ThreadListItemMorePrimitive.Item>Archive</ThreadListItemMorePrimitive.Item>
|
|
425
|
-
</ThreadListItemPrimitive.Archive>
|
|
426
|
-
<ThreadListItemMorePrimitive.Separator />
|
|
427
|
-
<ThreadListItemPrimitive.Delete asChild>
|
|
428
|
-
<ThreadListItemMorePrimitive.Item>Delete</ThreadListItemMorePrimitive.Item>
|
|
429
|
-
</ThreadListItemPrimitive.Delete>
|
|
430
|
-
</ThreadListItemMorePrimitive.Content>
|
|
431
|
-
</ThreadListItemMorePrimitive.Root>
|
|
432
|
-
</ThreadListItemPrimitive.Root>
|
|
433
|
-
);
|
|
434
|
-
}
|
|
435
|
-
```
|
|
436
|
-
|
|
437
|
-
### Archived Threads Section
|
|
438
|
-
|
|
439
|
-
```tsx
|
|
440
|
-
<ThreadListPrimitive.Root>
|
|
441
|
-
<ThreadListPrimitive.New>New Thread</ThreadListPrimitive.New>
|
|
442
|
-
|
|
443
|
-
<h3 className="px-3 pt-4 text-xs font-medium text-muted-foreground">Recent</h3>
|
|
444
|
-
<ThreadListPrimitive.Items>
|
|
445
|
-
{() => <ThreadListItem />}
|
|
446
|
-
</ThreadListPrimitive.Items>
|
|
447
|
-
|
|
448
|
-
<h3 className="px-3 pt-4 text-xs font-medium text-muted-foreground">Archived</h3>
|
|
449
|
-
<ThreadListPrimitive.Items archived>
|
|
450
|
-
{() => <ArchivedItem />}
|
|
451
|
-
</ThreadListPrimitive.Items>
|
|
452
|
-
</ThreadListPrimitive.Root>
|
|
453
|
-
```
|
|
454
|
-
|
|
455
|
-
In the `ArchivedItem` component, use `ThreadListItemPrimitive.Unarchive` instead of `Archive` to let users restore threads.
|
|
456
|
-
|
|
457
|
-
## Relationship to Components
|
|
458
|
-
|
|
459
|
-
The shadcn [ThreadList](/docs/ui/thread-list) component wraps these primitives with Tailwind styling in a sidebar layout, including a skeleton loading state and a prebuilt more menu with archive and delete actions. Start there for a default thread list implementation. Reach for the primitives directly when you need a custom layout, different actions, or integration with your own sidebar or navigation system.
|
|
460
|
-
|
|
461
|
-
## API Reference
|
|
462
|
-
|
|
463
|
-
For full prop details on every part, see the API reference for each namespace:
|
|
464
|
-
|
|
465
|
-
- [ThreadListPrimitive](/docs/api-reference/primitives/thread-list)
|
|
466
|
-
- [ThreadListItemPrimitive](/docs/api-reference/primitives/thread-list-item)
|
|
467
|
-
- [ThreadListItemMorePrimitive](/docs/api-reference/primitives/thread-list-item-more)
|