@btst/stack 1.12.0 → 2.0.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 +44 -30
- package/dist/api/index.cjs +2 -2
- package/dist/api/index.d.cts +5 -5
- package/dist/api/index.d.mts +5 -5
- package/dist/api/index.d.ts +5 -5
- package/dist/api/index.mjs +2 -2
- package/dist/client/components/index.cjs +2 -2
- package/dist/client/components/index.mjs +2 -2
- package/dist/client/index.cjs +3 -3
- package/dist/client/index.d.cts +2 -2
- package/dist/client/index.d.mts +2 -2
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.mjs +3 -3
- package/dist/context/index.cjs +3 -3
- package/dist/context/index.d.cts +11 -11
- package/dist/context/index.d.mts +11 -11
- package/dist/context/index.d.ts +11 -11
- package/dist/context/index.mjs +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/packages/{better-stack → stack}/src/context/provider.cjs +11 -13
- package/dist/packages/{better-stack → stack}/src/context/provider.mjs +10 -12
- package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-interface.cjs +34 -2
- package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-interface.mjs +34 -2
- package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-common.cjs +1 -1
- package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-common.mjs +1 -1
- package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-common.cjs +1 -1
- package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-common.mjs +1 -1
- package/dist/packages/{better-stack → stack}/src/plugins/open-api/api/generator.cjs +2 -2
- package/dist/packages/{better-stack → stack}/src/plugins/open-api/api/generator.mjs +2 -2
- package/dist/packages/ui/src/components/page-wrapper.cjs +2 -2
- package/dist/packages/ui/src/components/page-wrapper.mjs +2 -2
- package/dist/packages/ui/src/components/{better-stack-attribution.cjs → stack-attribution.cjs} +5 -5
- package/dist/packages/ui/src/components/{better-stack-attribution.mjs → stack-attribution.mjs} +5 -5
- package/dist/plugins/ai-chat/api/index.cjs +1 -1
- package/dist/plugins/ai-chat/api/index.mjs +1 -1
- package/dist/plugins/ai-chat/client/components/index.cjs +12 -12
- package/dist/plugins/ai-chat/client/components/index.mjs +12 -12
- package/dist/plugins/ai-chat/client/hooks/index.cjs +1 -1
- package/dist/plugins/ai-chat/client/hooks/index.mjs +1 -1
- package/dist/plugins/ai-chat/client/index.cjs +8 -8
- package/dist/plugins/ai-chat/client/index.mjs +8 -8
- package/dist/plugins/api/index.d.cts +3 -3
- package/dist/plugins/api/index.d.mts +3 -3
- package/dist/plugins/api/index.d.ts +3 -3
- package/dist/plugins/blog/api/index.cjs +1 -1
- package/dist/plugins/blog/api/index.mjs +1 -1
- package/dist/plugins/blog/client/components/index.cjs +4 -4
- package/dist/plugins/blog/client/components/index.mjs +4 -4
- package/dist/plugins/blog/client/hooks/index.cjs +1 -1
- package/dist/plugins/blog/client/hooks/index.mjs +1 -1
- package/dist/plugins/blog/client/index.cjs +1 -1
- package/dist/plugins/blog/client/index.mjs +1 -1
- package/dist/plugins/client/index.cjs +1 -1
- package/dist/plugins/client/index.d.cts +3 -3
- package/dist/plugins/client/index.d.mts +3 -3
- package/dist/plugins/client/index.d.ts +3 -3
- package/dist/plugins/client/index.mjs +1 -1
- package/dist/plugins/cms/api/index.cjs +1 -1
- package/dist/plugins/cms/api/index.mjs +1 -1
- package/dist/plugins/cms/client/components/index.cjs +3 -3
- package/dist/plugins/cms/client/components/index.mjs +3 -3
- package/dist/plugins/cms/client/hooks/index.cjs +1 -1
- package/dist/plugins/cms/client/hooks/index.mjs +1 -1
- package/dist/plugins/cms/client/index.cjs +2 -2
- package/dist/plugins/cms/client/index.mjs +2 -2
- package/dist/plugins/form-builder/api/index.cjs +1 -1
- package/dist/plugins/form-builder/api/index.mjs +1 -1
- package/dist/plugins/form-builder/client/components/index.cjs +10 -10
- package/dist/plugins/form-builder/client/components/index.mjs +10 -10
- package/dist/plugins/form-builder/client/hooks/index.cjs +1 -1
- package/dist/plugins/form-builder/client/hooks/index.mjs +1 -1
- package/dist/plugins/form-builder/client/index.cjs +1 -1
- package/dist/plugins/form-builder/client/index.mjs +1 -1
- package/dist/plugins/kanban/api/index.cjs +1 -1
- package/dist/plugins/kanban/api/index.mjs +1 -1
- package/dist/plugins/kanban/client/components/index.cjs +15 -15
- package/dist/plugins/kanban/client/components/index.mjs +15 -15
- package/dist/plugins/kanban/client/hooks/index.cjs +1 -1
- package/dist/plugins/kanban/client/hooks/index.mjs +1 -1
- package/dist/plugins/kanban/client/index.cjs +1 -1
- package/dist/plugins/kanban/client/index.mjs +1 -1
- package/dist/plugins/open-api/api/index.cjs +2 -2
- package/dist/plugins/open-api/api/index.d.cts +6 -6
- package/dist/plugins/open-api/api/index.d.mts +6 -6
- package/dist/plugins/open-api/api/index.d.ts +6 -6
- package/dist/plugins/open-api/api/index.mjs +2 -2
- package/dist/plugins/route-docs/client/index.cjs +1 -1
- package/dist/plugins/route-docs/client/index.d.cts +1 -1
- package/dist/plugins/route-docs/client/index.d.mts +1 -1
- package/dist/plugins/route-docs/client/index.d.ts +1 -1
- package/dist/plugins/route-docs/client/index.mjs +1 -1
- package/dist/plugins/ui-builder/client/components/index.cjs +3 -3
- package/dist/plugins/ui-builder/client/components/index.mjs +3 -3
- package/dist/plugins/ui-builder/client/hooks/index.cjs +1 -1
- package/dist/plugins/ui-builder/client/hooks/index.mjs +1 -1
- package/dist/plugins/ui-builder/client/index.cjs +7 -7
- package/dist/plugins/ui-builder/client/index.mjs +7 -7
- package/dist/plugins/ui-builder/index.cjs +1 -1
- package/dist/plugins/ui-builder/index.mjs +1 -1
- package/dist/shared/{stack.u9iYV6vt.d.mts → stack.BoA0xkJv.d.cts} +5 -5
- package/dist/shared/{stack.u9iYV6vt.d.cts → stack.BoA0xkJv.d.mts} +5 -5
- package/dist/shared/{stack.u9iYV6vt.d.ts → stack.BoA0xkJv.d.ts} +5 -5
- package/package.json +1 -1
- package/src/__tests__/plugins.test.tsx +7 -7
- package/src/api/index.ts +5 -5
- package/src/context/provider.tsx +21 -27
- package/src/plugins/ai-chat/client/components/chat-interface.tsx +66 -3
- package/src/plugins/api/index.ts +1 -1
- package/src/plugins/client/index.ts +1 -1
- package/src/plugins/cms/client/localization/cms-common.ts +1 -1
- package/src/plugins/form-builder/client/localization/form-builder-common.ts +1 -1
- package/src/plugins/open-api/api/generator.ts +5 -6
- package/src/plugins/open-api/api/plugin.ts +5 -5
- package/src/plugins/open-api/logo.ts +1 -1
- package/src/types.ts +4 -4
- /package/dist/packages/{better-stack → stack}/src/client/components/compose.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/components/compose.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/components/error-boundary.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/components/error-boundary.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/meta-utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/meta-utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/path-utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/path-utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/sitemap-utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/client/sitemap-utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-input.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-input.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-layout.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-layout.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-message.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-message.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-sidebar.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/chat-sidebar.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/loading/chat-page-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/loading/chat-page-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/loading/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/loading/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/404-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/404-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/chat-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/chat-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/chat-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/pages/chat-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/shared/error-placeholder.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/shared/error-placeholder.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/tool-call-display.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/components/tool-call-display.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/hooks/chat-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/hooks/chat-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/localization/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/localization/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/overrides.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/overrides.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ai-chat/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/image-field.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/image-field.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/markdown-editor.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/markdown-editor.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/post-forms.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/post-forms.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/tags-multiselect.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/forms/tags-multiselect.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/form-page-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/form-page-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/list-page-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/list-page-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/page-header-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/page-header-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/post-card-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/post-card-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/post-page-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/loading/post-page-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/404-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/404-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/edit-post-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/edit-post-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/edit-post-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/edit-post-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/home-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/home-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/home-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/home-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/new-post-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/new-post-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/new-post-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/new-post-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/post-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/post-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/post-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/post-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/tag-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/tag-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/tag-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/pages/tag-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/defaults.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/defaults.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/empty-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/empty-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/error-placeholder.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/error-placeholder.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/highlight-text.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/highlight-text.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/markdown-content.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/markdown-content.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/on-this-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/on-this-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/page-header.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/page-header.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/page-wrapper.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/page-wrapper.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/post-card.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/post-card.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/post-navigation.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/post-navigation.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/posts-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/posts-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/recent-posts-carousel.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/recent-posts-carousel.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/search-input.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/search-input.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/search-modal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/search-modal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/tags-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/components/shared/tags-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/hooks/blog-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/hooks/blog-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/hooks/use-debounce.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/hooks/use-debounce.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-card.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-card.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-common.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-common.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-forms.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-forms.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-post.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/blog-post.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/localization/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/blog/utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/content-form.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/content-form.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/file-upload.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/file-upload.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/relation-field.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/forms/relation-field.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/inverse-relations-panel.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/inverse-relations-panel.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/dashboard-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/dashboard-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/editor-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/editor-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/list-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/loading/list-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/404-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/404-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-editor-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-editor-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-editor-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-editor-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-list-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-list-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-list-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/content-list-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/dashboard-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/dashboard-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/dashboard-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/pages/dashboard-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/empty-state.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/empty-state.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/page-wrapper.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/components/shared/page-wrapper.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/hooks/cms-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/hooks/cms-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-dashboard.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-dashboard.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-editor.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-editor.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-toasts.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/cms-toasts.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/localization/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/cms/utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/forms/form-renderer.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/forms/form-renderer.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/form-builder-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/form-builder-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/form-list-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/form-list-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/submissions-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/loading/submissions-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/404-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/404-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-builder-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-builder-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-builder-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-builder-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-list-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-list-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-list-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/form-list-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/submissions-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/submissions-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/submissions-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/pages/submissions-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/empty-state.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/empty-state.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/page-wrapper.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/page-wrapper.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/pagination.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/components/shared/pagination.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/hooks/form-builder-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/hooks/form-builder-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-editor.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-editor.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-list.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-list.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-submissions.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-submissions.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-toasts.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/form-builder-toasts.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/localization/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/form-builder/utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/board-form.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/board-form.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/column-form.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/column-form.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/task-form.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/forms/task-form.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/loading/board-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/loading/board-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/loading/boards-list-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/loading/boards-list-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/404-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/404-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/board-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/board-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/board-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/board-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/boards-list-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/boards-list-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/boards-list-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/boards-list-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/new-board-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/new-board-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/new-board-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/pages/new-board-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/column-content.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/column-content.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/empty-state.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/empty-state.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/kanban-board.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/kanban-board.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/page-wrapper.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/page-wrapper.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/task-card.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/task-card.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/user-avatar.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/components/shared/user-avatar.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/hooks/kanban-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/hooks/kanban-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/kanban/utils.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/api/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/api/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/db.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/db.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/logo.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/open-api/logo.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/components/loading/docs-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/components/loading/docs-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/components/pages/docs-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/components/pages/docs-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/generator.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/route-docs/generator.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/loading/page-builder-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/loading/page-builder-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/loading/page-list-skeleton.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/loading/page-list-skeleton.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/page-renderer.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/page-renderer.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-builder-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-builder-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-builder-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-builder-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-list-page.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-list-page.internal.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-list-page.internal.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/pages/page-list-page.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/default-error.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/default-error.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/empty-state.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/empty-state.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/page-wrapper.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/page-wrapper.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/pagination.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/components/shared/pagination.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/hooks/ui-builder-hooks.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/hooks/ui-builder-hooks.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/localization/index.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/localization/index.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/plugin.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/plugin.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/registry.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/client/registry.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/schemas.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/ui-builder/schemas.mjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/utils.cjs +0 -0
- /package/dist/packages/{better-stack → stack}/src/plugins/utils.mjs +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { openApiBackendPlugin } from '../../../packages/
|
|
2
|
-
export { generateOpenAPISchema } from '../../../packages/
|
|
1
|
+
export { openApiBackendPlugin } from '../../../packages/stack/src/plugins/open-api/api/plugin.mjs';
|
|
2
|
+
export { generateOpenAPISchema } from '../../../packages/stack/src/plugins/open-api/api/generator.mjs';
|
|
@@ -2,7 +2,7 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _btst_yar from '@btst/yar';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
-
import {
|
|
5
|
+
import { a as SitemapEntry, b as ClientStackContext } from '../../../shared/stack.BoA0xkJv.cjs';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _btst_yar from '@btst/yar';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
-
import {
|
|
5
|
+
import { a as SitemapEntry, b as ClientStackContext } from '../../../shared/stack.BoA0xkJv.mjs';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
|
|
@@ -2,7 +2,7 @@ import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
|
2
2
|
import * as react from 'react';
|
|
3
3
|
import * as _btst_yar from '@btst/yar';
|
|
4
4
|
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
-
import {
|
|
5
|
+
import { a as SitemapEntry, b as ClientStackContext } from '../../../shared/stack.BoA0xkJv.js';
|
|
6
6
|
import '@btst/db';
|
|
7
7
|
import 'better-call';
|
|
8
8
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { ROUTE_DOCS_QUERY_KEY, generateSchema, getStoredContext, routeDocsClientPlugin } from '../../../packages/
|
|
1
|
+
export { ROUTE_DOCS_QUERY_KEY, generateSchema, getStoredContext, routeDocsClientPlugin } from '../../../packages/stack/src/plugins/route-docs/client/plugin.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const pageRenderer = require('../../../../packages/
|
|
4
|
-
const pageListPage = require('../../../../packages/
|
|
5
|
-
const pageBuilderPage = require('../../../../packages/
|
|
3
|
+
const pageRenderer = require('../../../../packages/stack/src/plugins/ui-builder/client/components/page-renderer.cjs');
|
|
4
|
+
const pageListPage = require('../../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.cjs');
|
|
5
|
+
const pageBuilderPage = require('../../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { PageRenderer, SuspensePageRenderer } from '../../../../packages/
|
|
2
|
-
export { PageListPage } from '../../../../packages/
|
|
3
|
-
export { PageBuilderPage } from '../../../../packages/
|
|
1
|
+
export { PageRenderer, SuspensePageRenderer } from '../../../../packages/stack/src/plugins/ui-builder/client/components/page-renderer.mjs';
|
|
2
|
+
export { PageListPage } from '../../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.mjs';
|
|
3
|
+
export { PageBuilderPage } from '../../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.mjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const uiBuilderHooks = require('../../../../packages/
|
|
3
|
+
const uiBuilderHooks = require('../../../../packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-hooks.cjs');
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { useCreateUIBuilderPage, useDeleteUIBuilderPage, useSuspenseUIBuilderPage, useSuspenseUIBuilderPageBySlug, useSuspenseUIBuilderPages, useUIBuilderPage, useUIBuilderPageBySlug, useUIBuilderPages, useUpdateUIBuilderPage } from '../../../../packages/
|
|
1
|
+
export { useCreateUIBuilderPage, useDeleteUIBuilderPage, useSuspenseUIBuilderPage, useSuspenseUIBuilderPageBySlug, useSuspenseUIBuilderPages, useUIBuilderPage, useUIBuilderPageBySlug, useUIBuilderPages, useUpdateUIBuilderPage } from '../../../../packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-hooks.mjs';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
const plugin = require('../../../packages/
|
|
4
|
-
const registry = require('../../../packages/
|
|
3
|
+
const plugin = require('../../../packages/stack/src/plugins/ui-builder/client/plugin.cjs');
|
|
4
|
+
const registry = require('../../../packages/stack/src/plugins/ui-builder/client/registry.cjs');
|
|
5
5
|
const formFieldOverrides = require('../../../packages/ui/src/lib/ui-builder/registry/form-field-overrides.cjs');
|
|
6
|
-
const pageRenderer = require('../../../packages/
|
|
7
|
-
const pageListPage = require('../../../packages/
|
|
8
|
-
const pageBuilderPage = require('../../../packages/
|
|
9
|
-
const uiBuilderHooks = require('../../../packages/
|
|
10
|
-
const index = require('../../../packages/
|
|
6
|
+
const pageRenderer = require('../../../packages/stack/src/plugins/ui-builder/client/components/page-renderer.cjs');
|
|
7
|
+
const pageListPage = require('../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.cjs');
|
|
8
|
+
const pageBuilderPage = require('../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.cjs');
|
|
9
|
+
const uiBuilderHooks = require('../../../packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-hooks.cjs');
|
|
10
|
+
const index = require('../../../packages/stack/src/plugins/ui-builder/client/localization/index.cjs');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { uiBuilderClientPlugin } from '../../../packages/
|
|
2
|
-
export { complexComponentDefinitions, createComponentRegistry, defaultComponentRegistry, primitiveComponentDefinitions } from '../../../packages/
|
|
1
|
+
export { uiBuilderClientPlugin } from '../../../packages/stack/src/plugins/ui-builder/client/plugin.mjs';
|
|
2
|
+
export { complexComponentDefinitions, createComponentRegistry, defaultComponentRegistry, primitiveComponentDefinitions } from '../../../packages/stack/src/plugins/ui-builder/client/registry.mjs';
|
|
3
3
|
export { childrenAsTextareaFieldOverrides, childrenAsTipTapFieldOverrides, childrenFieldOverrides, classNameFieldOverrides, commonFieldOverrides, iconNameFieldOverrides } from '../../../packages/ui/src/lib/ui-builder/registry/form-field-overrides.mjs';
|
|
4
|
-
export { PageRenderer, SuspensePageRenderer } from '../../../packages/
|
|
5
|
-
export { PageListPage } from '../../../packages/
|
|
6
|
-
export { PageBuilderPage } from '../../../packages/
|
|
7
|
-
export { useCreateUIBuilderPage, useDeleteUIBuilderPage, useSuspenseUIBuilderPage, useSuspenseUIBuilderPageBySlug, useSuspenseUIBuilderPages, useUIBuilderPage, useUIBuilderPageBySlug, useUIBuilderPages, useUpdateUIBuilderPage } from '../../../packages/
|
|
8
|
-
export { uiBuilderLocalization } from '../../../packages/
|
|
4
|
+
export { PageRenderer, SuspensePageRenderer } from '../../../packages/stack/src/plugins/ui-builder/client/components/page-renderer.mjs';
|
|
5
|
+
export { PageListPage } from '../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-list-page.mjs';
|
|
6
|
+
export { PageBuilderPage } from '../../../packages/stack/src/plugins/ui-builder/client/components/pages/page-builder-page.mjs';
|
|
7
|
+
export { useCreateUIBuilderPage, useDeleteUIBuilderPage, useSuspenseUIBuilderPage, useSuspenseUIBuilderPageBySlug, useSuspenseUIBuilderPages, useUIBuilderPage, useUIBuilderPageBySlug, useUIBuilderPages, useUpdateUIBuilderPage } from '../../../packages/stack/src/plugins/ui-builder/client/hooks/ui-builder-hooks.mjs';
|
|
8
|
+
export { uiBuilderLocalization } from '../../../packages/stack/src/plugins/ui-builder/client/localization/index.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { UI_BUILDER_CONTENT_TYPE, UI_BUILDER_TYPE_SLUG, uiBuilderPageSchema } from '../../packages/
|
|
1
|
+
export { UI_BUILDER_CONTENT_TYPE, UI_BUILDER_TYPE_SLUG, uiBuilderPageSchema } from '../../packages/stack/src/plugins/ui-builder/schemas.mjs';
|
|
@@ -6,7 +6,7 @@ import { Endpoint, Router } from 'better-call';
|
|
|
6
6
|
* Context passed to backend plugins during route creation
|
|
7
7
|
* Provides access to all registered plugins for introspection (used by openAPI plugin)
|
|
8
8
|
*/
|
|
9
|
-
interface
|
|
9
|
+
interface StackContext {
|
|
10
10
|
/** All registered backend plugins */
|
|
11
11
|
plugins: Record<string, BackendPlugin<any>>;
|
|
12
12
|
/** The API base path (e.g., "/api/data") */
|
|
@@ -29,7 +29,7 @@ interface ClientStackContext<TPlugins extends Record<string, ClientPlugin<any, a
|
|
|
29
29
|
* Defines API routes and data access for a feature
|
|
30
30
|
*
|
|
31
31
|
* Note: Each plugin defines its own schema using createDbPlugin().
|
|
32
|
-
*
|
|
32
|
+
* BTST composes all plugin schemas together at runtime using Better DB's .use() method.
|
|
33
33
|
* You can optionally provide a base schema via the dbSchema config option.
|
|
34
34
|
*
|
|
35
35
|
* @template TRoutes - The exact shape of routes this plugin provides (preserves keys and endpoint types)
|
|
@@ -44,7 +44,7 @@ interface BackendPlugin<TRoutes extends Record<string, Endpoint> = Record<string
|
|
|
44
44
|
* create, update, updateMany, delete, deleteMany, findOne, findMany, count
|
|
45
45
|
* @param context - Optional context with access to all plugins (for introspection)
|
|
46
46
|
*/
|
|
47
|
-
routes: (adapter: Adapter, context?:
|
|
47
|
+
routes: (adapter: Adapter, context?: StackContext) => TRoutes;
|
|
48
48
|
dbPlugin: DbPlugin;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -95,7 +95,7 @@ type InferPluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>
|
|
|
95
95
|
[K in keyof TPlugins]: TPlugins[K] extends ClientPlugin<infer TOverrides, any> ? TOverrides : never;
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
98
|
-
* Type for the pluginOverrides prop in
|
|
98
|
+
* Type for the pluginOverrides prop in StackContext
|
|
99
99
|
* Allows partial overrides per plugin
|
|
100
100
|
*/
|
|
101
101
|
type PluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>>> = {
|
|
@@ -154,4 +154,4 @@ type SitemapEntry = {
|
|
|
154
154
|
};
|
|
155
155
|
type Sitemap = Array<SitemapEntry>;
|
|
156
156
|
|
|
157
|
-
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P,
|
|
157
|
+
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P, StackContext as S, SitemapEntry as a, ClientStackContext as b, Sitemap as c, PluginRoutes as d, ClientLibConfig as e, ClientLib as f, PrefixedPluginRoutes as g, BackendLibConfig as h, BackendLib as i };
|
|
@@ -6,7 +6,7 @@ import { Endpoint, Router } from 'better-call';
|
|
|
6
6
|
* Context passed to backend plugins during route creation
|
|
7
7
|
* Provides access to all registered plugins for introspection (used by openAPI plugin)
|
|
8
8
|
*/
|
|
9
|
-
interface
|
|
9
|
+
interface StackContext {
|
|
10
10
|
/** All registered backend plugins */
|
|
11
11
|
plugins: Record<string, BackendPlugin<any>>;
|
|
12
12
|
/** The API base path (e.g., "/api/data") */
|
|
@@ -29,7 +29,7 @@ interface ClientStackContext<TPlugins extends Record<string, ClientPlugin<any, a
|
|
|
29
29
|
* Defines API routes and data access for a feature
|
|
30
30
|
*
|
|
31
31
|
* Note: Each plugin defines its own schema using createDbPlugin().
|
|
32
|
-
*
|
|
32
|
+
* BTST composes all plugin schemas together at runtime using Better DB's .use() method.
|
|
33
33
|
* You can optionally provide a base schema via the dbSchema config option.
|
|
34
34
|
*
|
|
35
35
|
* @template TRoutes - The exact shape of routes this plugin provides (preserves keys and endpoint types)
|
|
@@ -44,7 +44,7 @@ interface BackendPlugin<TRoutes extends Record<string, Endpoint> = Record<string
|
|
|
44
44
|
* create, update, updateMany, delete, deleteMany, findOne, findMany, count
|
|
45
45
|
* @param context - Optional context with access to all plugins (for introspection)
|
|
46
46
|
*/
|
|
47
|
-
routes: (adapter: Adapter, context?:
|
|
47
|
+
routes: (adapter: Adapter, context?: StackContext) => TRoutes;
|
|
48
48
|
dbPlugin: DbPlugin;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -95,7 +95,7 @@ type InferPluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>
|
|
|
95
95
|
[K in keyof TPlugins]: TPlugins[K] extends ClientPlugin<infer TOverrides, any> ? TOverrides : never;
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
98
|
-
* Type for the pluginOverrides prop in
|
|
98
|
+
* Type for the pluginOverrides prop in StackContext
|
|
99
99
|
* Allows partial overrides per plugin
|
|
100
100
|
*/
|
|
101
101
|
type PluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>>> = {
|
|
@@ -154,4 +154,4 @@ type SitemapEntry = {
|
|
|
154
154
|
};
|
|
155
155
|
type Sitemap = Array<SitemapEntry>;
|
|
156
156
|
|
|
157
|
-
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P,
|
|
157
|
+
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P, StackContext as S, SitemapEntry as a, ClientStackContext as b, Sitemap as c, PluginRoutes as d, ClientLibConfig as e, ClientLib as f, PrefixedPluginRoutes as g, BackendLibConfig as h, BackendLib as i };
|
|
@@ -6,7 +6,7 @@ import { Endpoint, Router } from 'better-call';
|
|
|
6
6
|
* Context passed to backend plugins during route creation
|
|
7
7
|
* Provides access to all registered plugins for introspection (used by openAPI plugin)
|
|
8
8
|
*/
|
|
9
|
-
interface
|
|
9
|
+
interface StackContext {
|
|
10
10
|
/** All registered backend plugins */
|
|
11
11
|
plugins: Record<string, BackendPlugin<any>>;
|
|
12
12
|
/** The API base path (e.g., "/api/data") */
|
|
@@ -29,7 +29,7 @@ interface ClientStackContext<TPlugins extends Record<string, ClientPlugin<any, a
|
|
|
29
29
|
* Defines API routes and data access for a feature
|
|
30
30
|
*
|
|
31
31
|
* Note: Each plugin defines its own schema using createDbPlugin().
|
|
32
|
-
*
|
|
32
|
+
* BTST composes all plugin schemas together at runtime using Better DB's .use() method.
|
|
33
33
|
* You can optionally provide a base schema via the dbSchema config option.
|
|
34
34
|
*
|
|
35
35
|
* @template TRoutes - The exact shape of routes this plugin provides (preserves keys and endpoint types)
|
|
@@ -44,7 +44,7 @@ interface BackendPlugin<TRoutes extends Record<string, Endpoint> = Record<string
|
|
|
44
44
|
* create, update, updateMany, delete, deleteMany, findOne, findMany, count
|
|
45
45
|
* @param context - Optional context with access to all plugins (for introspection)
|
|
46
46
|
*/
|
|
47
|
-
routes: (adapter: Adapter, context?:
|
|
47
|
+
routes: (adapter: Adapter, context?: StackContext) => TRoutes;
|
|
48
48
|
dbPlugin: DbPlugin;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
@@ -95,7 +95,7 @@ type InferPluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>
|
|
|
95
95
|
[K in keyof TPlugins]: TPlugins[K] extends ClientPlugin<infer TOverrides, any> ? TOverrides : never;
|
|
96
96
|
};
|
|
97
97
|
/**
|
|
98
|
-
* Type for the pluginOverrides prop in
|
|
98
|
+
* Type for the pluginOverrides prop in StackContext
|
|
99
99
|
* Allows partial overrides per plugin
|
|
100
100
|
*/
|
|
101
101
|
type PluginOverrides<TPlugins extends Record<string, ClientPlugin<any, any>>> = {
|
|
@@ -154,4 +154,4 @@ type SitemapEntry = {
|
|
|
154
154
|
};
|
|
155
155
|
type Sitemap = Array<SitemapEntry>;
|
|
156
156
|
|
|
157
|
-
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P,
|
|
157
|
+
export type { BackendPlugin as B, ClientPlugin as C, PluginOverrides as P, StackContext as S, SitemapEntry as a, ClientStackContext as b, Sitemap as c, PluginRoutes as d, ClientLibConfig as e, ClientLib as f, PrefixedPluginRoutes as g, BackendLibConfig as h, BackendLib as i };
|
package/package.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from "vitest";
|
|
2
|
-
import {
|
|
2
|
+
import { stack } from "../api";
|
|
3
3
|
import { createStackClient } from "../client";
|
|
4
4
|
import { defineBackendPlugin } from "../plugins/api";
|
|
5
5
|
import { defineClientPlugin } from "../plugins/client";
|
|
@@ -50,7 +50,7 @@ const messagesSchema: BetterAuthDBSchema = {
|
|
|
50
50
|
|
|
51
51
|
/**
|
|
52
52
|
* Test backend plugin - Messages
|
|
53
|
-
* Demonstrates how to build a 3rd party plugin using
|
|
53
|
+
* Demonstrates how to build a 3rd party plugin using BTST
|
|
54
54
|
* Now using defineBackendPlugin for full type inference - no casts needed!
|
|
55
55
|
*/
|
|
56
56
|
const messagesBackendPlugin = defineBackendPlugin({
|
|
@@ -164,7 +164,7 @@ const messagesClientPlugin = defineClientPlugin({
|
|
|
164
164
|
describe("3rd Party Plugin Support", () => {
|
|
165
165
|
describe("Backend Plugin", () => {
|
|
166
166
|
it("should create backend with custom plugin", () => {
|
|
167
|
-
const backend =
|
|
167
|
+
const backend = stack({
|
|
168
168
|
basePath: "/api",
|
|
169
169
|
plugins: {
|
|
170
170
|
messages: messagesBackendPlugin,
|
|
@@ -219,7 +219,7 @@ describe("3rd Party Plugin Support", () => {
|
|
|
219
219
|
}),
|
|
220
220
|
});
|
|
221
221
|
|
|
222
|
-
const backend =
|
|
222
|
+
const backend = stack({
|
|
223
223
|
basePath: "/api",
|
|
224
224
|
plugins: {
|
|
225
225
|
messages: messagesBackendPlugin,
|
|
@@ -233,7 +233,7 @@ describe("3rd Party Plugin Support", () => {
|
|
|
233
233
|
});
|
|
234
234
|
|
|
235
235
|
it("should generate routes for custom plugin", () => {
|
|
236
|
-
const backend =
|
|
236
|
+
const backend = stack({
|
|
237
237
|
basePath: "/api",
|
|
238
238
|
plugins: {
|
|
239
239
|
messages: messagesBackendPlugin,
|
|
@@ -248,7 +248,7 @@ describe("3rd Party Plugin Support", () => {
|
|
|
248
248
|
});
|
|
249
249
|
|
|
250
250
|
it("should include plugin schema in database", () => {
|
|
251
|
-
const backend =
|
|
251
|
+
const backend = stack({
|
|
252
252
|
basePath: "/api",
|
|
253
253
|
plugins: {
|
|
254
254
|
messages: messagesBackendPlugin,
|
|
@@ -421,7 +421,7 @@ describe("3rd Party Plugin Support", () => {
|
|
|
421
421
|
it("should use backend and client plugins independently", () => {
|
|
422
422
|
// Backend and client plugins are completely separate
|
|
423
423
|
// This prevents SSR issues and enables better code splitting
|
|
424
|
-
const backend =
|
|
424
|
+
const backend = stack({
|
|
425
425
|
basePath: "/api",
|
|
426
426
|
plugins: {
|
|
427
427
|
messages: messagesBackendPlugin,
|
package/src/api/index.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type {
|
|
|
3
3
|
BackendLibConfig,
|
|
4
4
|
BackendLib,
|
|
5
5
|
PrefixedPluginRoutes,
|
|
6
|
-
|
|
6
|
+
StackContext,
|
|
7
7
|
} from "../types";
|
|
8
8
|
import { defineDb } from "@btst/db";
|
|
9
9
|
|
|
@@ -14,7 +14,7 @@ export { toNodeHandler } from "better-call/node";
|
|
|
14
14
|
*
|
|
15
15
|
* @example
|
|
16
16
|
* ```ts
|
|
17
|
-
* const api =
|
|
17
|
+
* const api = stack({
|
|
18
18
|
* plugins: {
|
|
19
19
|
* messages: messagesPlugin.backend
|
|
20
20
|
* },
|
|
@@ -29,7 +29,7 @@ export { toNodeHandler } from "better-call/node";
|
|
|
29
29
|
* @template TPlugins - The exact plugins map (inferred from config)
|
|
30
30
|
* @template TRoutes - All routes with prefixed keys like "pluginName_routeName" (computed automatically)
|
|
31
31
|
*/
|
|
32
|
-
export function
|
|
32
|
+
export function stack<
|
|
33
33
|
TPlugins extends Record<string, any>,
|
|
34
34
|
TRoutes extends
|
|
35
35
|
PrefixedPluginRoutes<TPlugins> = PrefixedPluginRoutes<TPlugins>,
|
|
@@ -50,7 +50,7 @@ export function betterStack<
|
|
|
50
50
|
const adapterInstance = adapter(betterDbSchema);
|
|
51
51
|
|
|
52
52
|
// Create context for plugins that need access to all plugins (e.g., openAPI)
|
|
53
|
-
const context:
|
|
53
|
+
const context: StackContext = {
|
|
54
54
|
plugins,
|
|
55
55
|
basePath,
|
|
56
56
|
adapter: adapterInstance,
|
|
@@ -83,5 +83,5 @@ export type {
|
|
|
83
83
|
BackendPlugin,
|
|
84
84
|
BackendLibConfig,
|
|
85
85
|
BackendLib,
|
|
86
|
-
|
|
86
|
+
StackContext,
|
|
87
87
|
} from "../types";
|
package/src/context/provider.tsx
CHANGED
|
@@ -5,9 +5,7 @@ import { createContext, useContext, type ReactNode } from "react";
|
|
|
5
5
|
* Context value that provides plugin-specific overrides
|
|
6
6
|
* Generic over the shape of all plugin overrides
|
|
7
7
|
*/
|
|
8
|
-
interface
|
|
9
|
-
TPluginOverrides extends Record<string, any>,
|
|
10
|
-
> {
|
|
8
|
+
interface StackContextValue<TPluginOverrides extends Record<string, any>> {
|
|
11
9
|
/**
|
|
12
10
|
* The overrides for the plugin.
|
|
13
11
|
*/
|
|
@@ -18,12 +16,10 @@ interface BetterStackContextValue<
|
|
|
18
16
|
basePath: string;
|
|
19
17
|
}
|
|
20
18
|
|
|
21
|
-
const
|
|
22
|
-
null,
|
|
23
|
-
);
|
|
19
|
+
const StackContext = createContext<StackContextValue<any> | null>(null);
|
|
24
20
|
|
|
25
21
|
/**
|
|
26
|
-
* Provider component for
|
|
22
|
+
* Provider component for BTST context
|
|
27
23
|
* Provides type-safe access to plugin-specific overrides
|
|
28
24
|
*
|
|
29
25
|
* Only requires override values, not plugin objects - keeps bundle size minimal!
|
|
@@ -36,7 +32,7 @@ const BetterStackContext = createContext<BetterStackContextValue<any> | null>(
|
|
|
36
32
|
* messages: MessagesPluginOverrides;
|
|
37
33
|
* };
|
|
38
34
|
*
|
|
39
|
-
* <
|
|
35
|
+
* <StackProvider<MyPluginOverrides>
|
|
40
36
|
* overrides={{
|
|
41
37
|
* todos: {
|
|
42
38
|
* Link: (props) => <NextLink {...props} />,
|
|
@@ -48,10 +44,10 @@ const BetterStackContext = createContext<BetterStackContextValue<any> | null>(
|
|
|
48
44
|
* }}
|
|
49
45
|
* >
|
|
50
46
|
* {children}
|
|
51
|
-
* </
|
|
47
|
+
* </StackProvider>
|
|
52
48
|
* ```
|
|
53
49
|
*/
|
|
54
|
-
export function
|
|
50
|
+
export function StackProvider<
|
|
55
51
|
TPluginOverrides extends Record<string, any> = Record<string, any>,
|
|
56
52
|
>({
|
|
57
53
|
children,
|
|
@@ -62,41 +58,39 @@ export function BetterStackProvider<
|
|
|
62
58
|
overrides: TPluginOverrides;
|
|
63
59
|
basePath: string;
|
|
64
60
|
}) {
|
|
65
|
-
const value:
|
|
61
|
+
const value: StackContextValue<TPluginOverrides> = {
|
|
66
62
|
overrides,
|
|
67
63
|
basePath,
|
|
68
64
|
};
|
|
69
65
|
|
|
70
66
|
return (
|
|
71
|
-
<
|
|
72
|
-
{children}
|
|
73
|
-
</BetterStackContext.Provider>
|
|
67
|
+
<StackContext.Provider value={value}>{children}</StackContext.Provider>
|
|
74
68
|
);
|
|
75
69
|
}
|
|
76
70
|
|
|
77
71
|
/**
|
|
78
|
-
* Hook to access the entire
|
|
72
|
+
* Hook to access the entire BTST context
|
|
79
73
|
* Useful if you need access to multiple plugins or the full context
|
|
80
74
|
*
|
|
81
75
|
* @returns The full context value including overrides and basePath
|
|
82
|
-
* @throws Error if used outside of
|
|
76
|
+
* @throws Error if used outside of StackProvider
|
|
83
77
|
*
|
|
84
78
|
* @example
|
|
85
79
|
* ```tsx
|
|
86
|
-
* const { overrides, basePath } =
|
|
80
|
+
* const { overrides, basePath } = useStack<MyPluginOverrides>();
|
|
87
81
|
* ```
|
|
88
82
|
*/
|
|
89
|
-
export function
|
|
83
|
+
export function useStack<
|
|
90
84
|
TPluginOverrides extends Record<string, any> = Record<string, any>,
|
|
91
85
|
>() {
|
|
92
86
|
const context = useContext(
|
|
93
|
-
|
|
94
|
-
) as
|
|
87
|
+
StackContext,
|
|
88
|
+
) as StackContextValue<TPluginOverrides> | null;
|
|
95
89
|
|
|
96
90
|
if (!context) {
|
|
97
91
|
throw new Error(
|
|
98
|
-
"
|
|
99
|
-
"Wrap your app with <
|
|
92
|
+
"useStack must be used within StackProvider. " +
|
|
93
|
+
"Wrap your app with <StackProvider> in your layout file.",
|
|
100
94
|
);
|
|
101
95
|
}
|
|
102
96
|
|
|
@@ -140,7 +134,7 @@ export function usePluginOverrides<
|
|
|
140
134
|
pluginName: string,
|
|
141
135
|
defaultValues?: TDefaults,
|
|
142
136
|
): OverridesResult<TOverrides, TDefaults> {
|
|
143
|
-
const context =
|
|
137
|
+
const context = useStack();
|
|
144
138
|
|
|
145
139
|
const pluginOverrides = context.overrides[pluginName];
|
|
146
140
|
|
|
@@ -157,7 +151,7 @@ export function usePluginOverrides<
|
|
|
157
151
|
* Hook to access the base path where the client router is mounted
|
|
158
152
|
*
|
|
159
153
|
* @returns The base path string (e.g., "/pages")
|
|
160
|
-
* @throws Error if used outside of
|
|
154
|
+
* @throws Error if used outside of StackProvider
|
|
161
155
|
*
|
|
162
156
|
* @example
|
|
163
157
|
* ```tsx
|
|
@@ -166,11 +160,11 @@ export function usePluginOverrides<
|
|
|
166
160
|
* ```
|
|
167
161
|
*/
|
|
168
162
|
export function useBasePath() {
|
|
169
|
-
const context =
|
|
163
|
+
const context = useStack();
|
|
170
164
|
if (!context) {
|
|
171
165
|
throw new Error(
|
|
172
|
-
"useBasePath must be used within
|
|
173
|
-
"Wrap your app with <
|
|
166
|
+
"useBasePath must be used within StackProvider. " +
|
|
167
|
+
"Wrap your app with <StackProvider> in your layout file.",
|
|
174
168
|
);
|
|
175
169
|
}
|
|
176
170
|
return context.basePath;
|
|
@@ -5,7 +5,7 @@ import { useEffect, useRef, useState, useMemo, useCallback } from "react";
|
|
|
5
5
|
import { useQueryClient } from "@tanstack/react-query";
|
|
6
6
|
import { ChatMessage } from "./chat-message";
|
|
7
7
|
import { ChatInput, type AttachedFile } from "./chat-input";
|
|
8
|
-
import {
|
|
8
|
+
import { StackAttribution } from "@workspace/ui/components/stack-attribution";
|
|
9
9
|
import { ScrollArea } from "@workspace/ui/components/scroll-area";
|
|
10
10
|
import { DefaultChatTransport, type UIMessage } from "ai";
|
|
11
11
|
import { cn } from "@workspace/ui/lib/utils";
|
|
@@ -170,6 +170,12 @@ export function ChatInterface({
|
|
|
170
170
|
transport,
|
|
171
171
|
onError: (err) => {
|
|
172
172
|
console.error("useChat onError:", err);
|
|
173
|
+
// Reset first-message tracking if the send failed before a conversation was created.
|
|
174
|
+
// Without this, isFirstMessageSentRef stays true and the next successful send
|
|
175
|
+
// skips the "first message" navigation logic, corrupting the conversation flow.
|
|
176
|
+
if (!id && !hasNavigatedRef.current) {
|
|
177
|
+
isFirstMessageSentRef.current = false;
|
|
178
|
+
}
|
|
173
179
|
},
|
|
174
180
|
onFinish: async () => {
|
|
175
181
|
// In public mode, skip all persistence-related operations
|
|
@@ -271,8 +277,43 @@ export function ChatInterface({
|
|
|
271
277
|
const [attachedFiles, setAttachedFiles] = useState<AttachedFile[]>([]);
|
|
272
278
|
const scrollRef = useRef<HTMLDivElement>(null);
|
|
273
279
|
|
|
274
|
-
//
|
|
280
|
+
// Track whether the user has manually scrolled away from the bottom.
|
|
281
|
+
// When true, auto-scroll is paused so the user can read earlier context.
|
|
282
|
+
const userHasScrolledRef = useRef(false);
|
|
283
|
+
const prevStatusRef = useRef(status);
|
|
284
|
+
|
|
285
|
+
// Reset the scroll lock when a new generation starts so auto-scroll
|
|
286
|
+
// resumes for the next assistant response.
|
|
275
287
|
useEffect(() => {
|
|
288
|
+
if (
|
|
289
|
+
status !== prevStatusRef.current &&
|
|
290
|
+
(status === "streaming" || status === "submitted")
|
|
291
|
+
) {
|
|
292
|
+
userHasScrolledRef.current = false;
|
|
293
|
+
}
|
|
294
|
+
prevStatusRef.current = status;
|
|
295
|
+
}, [status]);
|
|
296
|
+
|
|
297
|
+
// Attach a scroll listener to detect when the user scrolls away from the bottom.
|
|
298
|
+
useEffect(() => {
|
|
299
|
+
const viewport = scrollRef.current?.querySelector(
|
|
300
|
+
"[data-radix-scroll-area-viewport]",
|
|
301
|
+
);
|
|
302
|
+
if (!viewport) return;
|
|
303
|
+
|
|
304
|
+
const handleScroll = () => {
|
|
305
|
+
const { scrollTop, scrollHeight, clientHeight } = viewport;
|
|
306
|
+
const isNearBottom = scrollHeight - scrollTop - clientHeight < 50;
|
|
307
|
+
userHasScrolledRef.current = !isNearBottom;
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
viewport.addEventListener("scroll", handleScroll);
|
|
311
|
+
return () => viewport.removeEventListener("scroll", handleScroll);
|
|
312
|
+
}, []);
|
|
313
|
+
|
|
314
|
+
// Auto-scroll to bottom when messages change, unless the user has scrolled away
|
|
315
|
+
useEffect(() => {
|
|
316
|
+
if (userHasScrolledRef.current) return;
|
|
276
317
|
if (scrollRef.current) {
|
|
277
318
|
const scrollElement = scrollRef.current.querySelector(
|
|
278
319
|
"[data-radix-scroll-area-viewport]",
|
|
@@ -309,10 +350,24 @@ export function ChatInterface({
|
|
|
309
350
|
isFirstMessageSentRef.current = true;
|
|
310
351
|
}
|
|
311
352
|
|
|
353
|
+
// Re-enable auto-scroll so the user's own message (and any subsequent
|
|
354
|
+
// error indicator or assistant reply) is scrolled into view. Without
|
|
355
|
+
// this, if the user had scrolled up earlier, userHasScrolledRef stays
|
|
356
|
+
// true and none of the new content would be auto-scrolled to — and if
|
|
357
|
+
// the request fails before reaching "streaming" status the ref would
|
|
358
|
+
// remain stuck permanently.
|
|
359
|
+
userHasScrolledRef.current = false;
|
|
360
|
+
|
|
312
361
|
// Save current values before clearing - we'll restore them if send fails
|
|
313
362
|
const savedInput = input;
|
|
314
363
|
const savedFiles = files ? [...files] : [];
|
|
315
364
|
|
|
365
|
+
// Capture the message count before sending so we can restore to this
|
|
366
|
+
// exact point on failure. The SDK may append both a user message and a
|
|
367
|
+
// partial assistant message during streaming — using a fixed snapshot
|
|
368
|
+
// length removes all of them instead of just the last one.
|
|
369
|
+
const messageCountBeforeSend = messages.length;
|
|
370
|
+
|
|
316
371
|
// Clear input immediately (optimistically) - the AI SDK renders messages optimistically,
|
|
317
372
|
// so we need to clear the input before the message appears to avoid duplicate text
|
|
318
373
|
setInput("");
|
|
@@ -341,6 +396,13 @@ export function ChatInterface({
|
|
|
341
396
|
// Restore input on failure so user can retry
|
|
342
397
|
setInput(savedInput);
|
|
343
398
|
setAttachedFiles(savedFiles);
|
|
399
|
+
// Reset first-message tracking so the next attempt still triggers navigation
|
|
400
|
+
if (isFirstMessageSentRef.current && !hasNavigatedRef.current) {
|
|
401
|
+
isFirstMessageSentRef.current = false;
|
|
402
|
+
}
|
|
403
|
+
// Remove all messages the SDK added after our send attempt (optimistic
|
|
404
|
+
// user message AND any partial assistant message from a mid-stream failure).
|
|
405
|
+
setMessages((prev) => prev.slice(0, messageCountBeforeSend));
|
|
344
406
|
console.error("Error sending message:", error);
|
|
345
407
|
}
|
|
346
408
|
};
|
|
@@ -410,6 +472,7 @@ export function ChatInterface({
|
|
|
410
472
|
className,
|
|
411
473
|
)}
|
|
412
474
|
data-testid="chat-interface"
|
|
475
|
+
data-chat-status={status}
|
|
413
476
|
>
|
|
414
477
|
{/* Messages Area */}
|
|
415
478
|
<ScrollArea ref={scrollRef} className="flex-1 h-full">
|
|
@@ -501,7 +564,7 @@ export function ChatInterface({
|
|
|
501
564
|
onFilesAttached={setAttachedFiles}
|
|
502
565
|
attachedFiles={attachedFiles}
|
|
503
566
|
/>
|
|
504
|
-
{showAttribution && <
|
|
567
|
+
{showAttribution && <StackAttribution />}
|
|
505
568
|
</div>
|
|
506
569
|
</div>
|
|
507
570
|
</>
|
package/src/plugins/api/index.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Plugin utilities and types for building standalone plugins
|
|
3
3
|
*
|
|
4
4
|
* This module exports everything needed to create custom plugins
|
|
5
|
-
* for
|
|
5
|
+
* for BTST outside of this package.
|
|
6
6
|
*
|
|
7
7
|
* Note: Backend and Client plugins are separate to prevent SSR issues
|
|
8
8
|
* and enable better code splitting. Import them separately:
|