@btst/stack 1.10.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.cjs +1 -1
- package/dist/node_modules/.pnpm/@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0/node_modules/@dnd-kit/core/dist/core.esm.mjs +1 -1
- package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.cjs +77 -0
- package/dist/node_modules/.pnpm/@dnd-kit_sortable@10.0.0_@dnd-kit_core@6.3.1_react-dom@19.2.0_react@19.2.0__react@19.2.0__react@19.2.0/node_modules/@dnd-kit/sortable/dist/sortable.esm.mjs +79 -3
- package/dist/node_modules/.pnpm/@radix-ui_react-avatar@1.1.11_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react_850cfbef1935a6e49a6ad6c93c7ca70d/node_modules/@radix-ui/react-avatar/dist/index.cjs +140 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-avatar@1.1.11_@types_react-dom@19.2.3_@types_react@19.2.6__@types_react_850cfbef1935a6e49a6ad6c93c7ca70d/node_modules/@radix-ui/react-avatar/dist/index.mjs +119 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.3_@types_react@19.2.6_react@19.2.0/node_modules/@radix-ui/react-context/dist/index.cjs +80 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-context@1.1.3_@types_react@19.2.6_react@19.2.0/node_modules/@radix-ui/react-context/dist/index.mjs +64 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-use-is-hydrated@0.1.0_@types_react@19.2.6_react@19.2.0/node_modules/@radix-ui/react-use-is-hydrated/dist/index.cjs +18 -0
- package/dist/node_modules/.pnpm/@radix-ui_react-use-is-hydrated@0.1.0_@types_react@19.2.6_react@19.2.0/node_modules/@radix-ui/react-use-is-hydrated/dist/index.mjs +16 -0
- package/dist/packages/better-stack/src/plugins/kanban/api/plugin.cjs +846 -0
- package/dist/packages/better-stack/src/plugins/kanban/api/plugin.mjs +844 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/board-form.cjs +85 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/board-form.mjs +83 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/column-form.cjs +72 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/column-form.mjs +70 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/task-form.cjs +200 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/forms/task-form.mjs +198 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/loading/board-skeleton.cjs +47 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/loading/board-skeleton.mjs +45 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/loading/boards-list-skeleton.cjs +30 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/loading/boards-list-skeleton.mjs +28 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/404-page.cjs +27 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/404-page.mjs +25 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/board-page.cjs +31 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/board-page.internal.cjs +458 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/board-page.internal.mjs +456 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/board-page.mjs +29 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/boards-list-page.cjs +30 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/boards-list-page.internal.cjs +72 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/boards-list-page.internal.mjs +70 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/boards-list-page.mjs +28 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/new-board-page.cjs +30 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/new-board-page.internal.cjs +51 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/new-board-page.internal.mjs +49 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/pages/new-board-page.mjs +28 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/column-content.cjs +76 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/column-content.mjs +74 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/default-error.cjs +27 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/default-error.mjs +25 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/empty-state.cjs +32 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/empty-state.mjs +30 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/kanban-board.cjs +78 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/kanban-board.mjs +76 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/page-wrapper.cjs +15 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/page-wrapper.mjs +13 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/task-card.cjs +68 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/task-card.mjs +66 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/user-avatar.cjs +32 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/components/shared/user-avatar.mjs +30 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/hooks/kanban-hooks.cjs +391 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/hooks/kanban-hooks.mjs +381 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/plugin.cjs +290 -0
- package/dist/packages/better-stack/src/plugins/kanban/client/plugin.mjs +288 -0
- package/dist/packages/better-stack/src/plugins/kanban/db.cjs +125 -0
- package/dist/packages/better-stack/src/plugins/kanban/db.mjs +123 -0
- package/dist/packages/better-stack/src/plugins/kanban/schemas.cjs +117 -0
- package/dist/packages/better-stack/src/plugins/kanban/schemas.mjs +102 -0
- package/dist/packages/better-stack/src/plugins/kanban/utils.cjs +49 -0
- package/dist/packages/better-stack/src/plugins/kanban/utils.mjs +45 -0
- package/dist/packages/ui/src/components/avatar.cjs +58 -0
- package/dist/packages/ui/src/components/avatar.mjs +54 -0
- package/dist/packages/ui/src/components/command.cjs +3 -3
- package/dist/packages/ui/src/components/command.mjs +3 -3
- package/dist/packages/ui/src/components/form-builder/index.mjs +2 -2
- package/dist/packages/ui/src/components/kanban.cjs +835 -0
- package/dist/packages/ui/src/components/kanban.mjs +805 -0
- package/dist/packages/ui/src/components/minimal-tiptap/utils.cjs +15 -11
- package/dist/packages/ui/src/components/minimal-tiptap/utils.mjs +15 -11
- package/dist/packages/ui/src/components/popover.cjs +8 -3
- package/dist/packages/ui/src/components/popover.mjs +9 -4
- package/dist/packages/ui/src/components/search-select.cjs +75 -0
- package/dist/packages/ui/src/components/search-select.mjs +73 -0
- package/dist/packages/ui/src/components/ui-builder/index.cjs +9 -7
- package/dist/packages/ui/src/components/ui-builder/index.mjs +9 -7
- package/dist/packages/ui/src/components/ui-builder/internal/canvas/auto-frame.cjs +6 -3
- package/dist/packages/ui/src/components/ui-builder/internal/canvas/auto-frame.mjs +6 -3
- package/dist/packages/ui/src/components/ui-builder/internal/components/add-component-popover.cjs +228 -48
- package/dist/packages/ui/src/components/ui-builder/internal/components/add-component-popover.mjs +228 -48
- package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.cjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/components/element-selector.mjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/components/error-fallback.cjs +4 -2
- package/dist/packages/ui/src/components/ui-builder/internal/components/error-fallback.mjs +4 -2
- package/dist/packages/ui/src/components/ui-builder/internal/components/multi-select.cjs +6 -3
- package/dist/packages/ui/src/components/ui-builder/internal/components/multi-select.mjs +6 -3
- package/dist/packages/ui/src/components/ui-builder/internal/dnd/draggable-new-component.cjs +67 -0
- package/dist/packages/ui/src/components/ui-builder/internal/dnd/draggable-new-component.mjs +62 -0
- package/dist/packages/ui/src/components/ui-builder/internal/dnd/drop-zone.cjs +181 -37
- package/dist/packages/ui/src/components/ui-builder/internal/dnd/drop-zone.mjs +181 -38
- package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.cjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/editor-panel.mjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/classname-control/classname-group-control.cjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/classname-control/classname-group-control.mjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/classname-control/classname-item-control.cjs +9 -2
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/classname-control/classname-item-control.mjs +9 -2
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/iconname-field.cjs +3 -2
- package/dist/packages/ui/src/components/ui-builder/internal/form-fields/iconname-field.mjs +3 -2
- package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.cjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/layers-panel.mjs +1 -1
- package/dist/packages/ui/src/components/ui-builder/internal/props-panel.cjs +17 -5
- package/dist/packages/ui/src/components/ui-builder/internal/props-panel.mjs +17 -5
- package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.cjs +70 -16
- package/dist/packages/ui/src/components/ui-builder/internal/utils/render-utils.mjs +73 -20
- package/dist/packages/ui/src/lib/compose-refs.cjs +56 -0
- package/dist/packages/ui/src/lib/compose-refs.mjs +39 -0
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-context-colission-utils.cjs +14 -9
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-context-colission-utils.mjs +14 -9
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-context.cjs +38 -10
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-context.mjs +35 -11
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-contexts.cjs +1 -0
- package/dist/packages/ui/src/lib/ui-builder/context/dnd-contexts.mjs +1 -0
- package/dist/packages/ui/src/lib/ui-builder/context/drag-overlay.cjs +7 -4
- package/dist/packages/ui/src/lib/ui-builder/context/drag-overlay.mjs +7 -4
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-auto-scroll.cjs +4 -4
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-auto-scroll.mjs +4 -4
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-dnd-event-handlers.cjs +53 -16
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-dnd-event-handlers.mjs +53 -16
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-drop-validation.cjs +23 -7
- package/dist/packages/ui/src/lib/ui-builder/hooks/use-drop-validation.mjs +23 -7
- package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.cjs +110 -11
- package/dist/packages/ui/src/lib/ui-builder/registry/form-field-overrides.mjs +111 -13
- package/dist/packages/ui/src/lib/ui-builder/store/editor-store.cjs +3 -2
- package/dist/packages/ui/src/lib/ui-builder/store/editor-store.mjs +3 -2
- package/dist/packages/ui/src/lib/ui-builder/store/layer-store.cjs +53 -7
- package/dist/packages/ui/src/lib/ui-builder/store/layer-store.mjs +54 -8
- package/dist/packages/ui/src/lib/ui-builder/store/layer-utils.cjs +4 -3
- package/dist/packages/ui/src/lib/ui-builder/store/layer-utils.mjs +4 -3
- package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.cjs +12 -0
- package/dist/packages/ui/src/lib/ui-builder/utils/variable-resolver.mjs +12 -1
- package/dist/plugins/blog/api/index.d.cts +1 -1
- package/dist/plugins/blog/api/index.d.mts +1 -1
- package/dist/plugins/blog/api/index.d.ts +1 -1
- package/dist/plugins/blog/client/hooks/index.d.cts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.mts +2 -2
- package/dist/plugins/blog/client/hooks/index.d.ts +2 -2
- package/dist/plugins/blog/client/index.d.cts +1 -1
- package/dist/plugins/blog/client/index.d.mts +1 -1
- package/dist/plugins/blog/client/index.d.ts +1 -1
- package/dist/plugins/blog/query-keys.d.cts +2 -2
- package/dist/plugins/blog/query-keys.d.mts +2 -2
- package/dist/plugins/blog/query-keys.d.ts +2 -2
- package/dist/plugins/kanban/api/index.cjs +7 -0
- package/dist/plugins/kanban/api/index.d.cts +403 -0
- package/dist/plugins/kanban/api/index.d.mts +403 -0
- package/dist/plugins/kanban/api/index.d.ts +403 -0
- package/dist/plugins/kanban/api/index.mjs +1 -0
- package/dist/plugins/kanban/client/components/index.cjs +35 -0
- package/dist/plugins/kanban/client/components/index.d.cts +102 -0
- package/dist/plugins/kanban/client/components/index.d.mts +102 -0
- package/dist/plugins/kanban/client/components/index.d.ts +102 -0
- package/dist/plugins/kanban/client/components/index.mjs +15 -0
- package/dist/plugins/kanban/client/hooks/index.cjs +15 -0
- package/dist/plugins/kanban/client/hooks/index.d.cts +143 -0
- package/dist/plugins/kanban/client/hooks/index.d.mts +143 -0
- package/dist/plugins/kanban/client/hooks/index.d.ts +143 -0
- package/dist/plugins/kanban/client/hooks/index.mjs +1 -0
- package/dist/plugins/kanban/client/index.cjs +7 -0
- package/dist/plugins/kanban/client/index.d.cts +196 -0
- package/dist/plugins/kanban/client/index.d.mts +196 -0
- package/dist/plugins/kanban/client/index.d.ts +196 -0
- package/dist/plugins/kanban/client/index.mjs +1 -0
- package/dist/plugins/kanban/client.css +68 -0
- package/dist/plugins/kanban/query-keys.cjs +105 -0
- package/dist/plugins/kanban/query-keys.d.cts +59 -0
- package/dist/plugins/kanban/query-keys.d.mts +59 -0
- package/dist/plugins/kanban/query-keys.d.ts +59 -0
- package/dist/plugins/kanban/query-keys.mjs +103 -0
- package/dist/plugins/kanban/style.css +7 -0
- package/dist/plugins/ui-builder/client/components/index.d.cts +1 -1
- package/dist/plugins/ui-builder/client/components/index.d.mts +1 -1
- package/dist/plugins/ui-builder/client/components/index.d.ts +1 -1
- package/dist/plugins/ui-builder/client/hooks/index.d.cts +2 -2
- package/dist/plugins/ui-builder/client/hooks/index.d.mts +2 -2
- package/dist/plugins/ui-builder/client/hooks/index.d.ts +2 -2
- package/dist/plugins/ui-builder/client/index.d.cts +17 -7
- package/dist/plugins/ui-builder/client/index.d.mts +17 -7
- package/dist/plugins/ui-builder/client/index.d.ts +17 -7
- package/dist/plugins/ui-builder/index.d.cts +2 -2
- package/dist/plugins/ui-builder/index.d.mts +2 -2
- package/dist/plugins/ui-builder/index.d.ts +2 -2
- package/dist/plugins/ui-builder/style.css +6 -0
- package/dist/shared/{stack.BSM2cgoq.d.cts → stack.BYysGdHl.d.cts} +1 -1
- package/dist/shared/{stack.CqfZWfjJ.d.cts → stack.BdJFrdyt.d.cts} +8 -2
- package/dist/shared/{stack.e1FN86dE.d.mts → stack.ChVuHi5e.d.mts} +8 -2
- package/dist/shared/stack.DKDMI-QO.d.cts +70 -0
- package/dist/shared/stack.DKDMI-QO.d.mts +70 -0
- package/dist/shared/stack.DKDMI-QO.d.ts +70 -0
- package/dist/shared/{stack.CLtOoAqF.d.mts → stack.DYCFcnkL.d.mts} +1 -1
- package/dist/shared/{stack.MMntCVZZ.d.ts → stack.EhM4pmtN.d.ts} +8 -2
- package/dist/shared/stack.FeaWkglm.d.cts +190 -0
- package/dist/shared/stack.FeaWkglm.d.mts +190 -0
- package/dist/shared/stack.FeaWkglm.d.ts +190 -0
- package/dist/shared/{stack.BD1m-4yB.d.ts → stack.kFbDspnF.d.ts} +1 -1
- package/package.json +56 -2
- package/src/plugins/kanban/api/index.ts +6 -0
- package/src/plugins/kanban/api/plugin.ts +1245 -0
- package/src/plugins/kanban/client/components/forms/board-form.tsx +108 -0
- package/src/plugins/kanban/client/components/forms/column-form.tsx +97 -0
- package/src/plugins/kanban/client/components/forms/task-form.tsx +274 -0
- package/src/plugins/kanban/client/components/index.tsx +21 -0
- package/src/plugins/kanban/client/components/loading/board-skeleton.tsx +49 -0
- package/src/plugins/kanban/client/components/loading/boards-list-skeleton.tsx +34 -0
- package/src/plugins/kanban/client/components/loading/index.tsx +2 -0
- package/src/plugins/kanban/client/components/pages/404-page.tsx +28 -0
- package/src/plugins/kanban/client/components/pages/board-page.internal.tsx +575 -0
- package/src/plugins/kanban/client/components/pages/board-page.tsx +31 -0
- package/src/plugins/kanban/client/components/pages/boards-list-page.internal.tsx +101 -0
- package/src/plugins/kanban/client/components/pages/boards-list-page.tsx +26 -0
- package/src/plugins/kanban/client/components/pages/new-board-page.internal.tsx +65 -0
- package/src/plugins/kanban/client/components/pages/new-board-page.tsx +26 -0
- package/src/plugins/kanban/client/components/shared/column-content.tsx +108 -0
- package/src/plugins/kanban/client/components/shared/default-error.tsx +32 -0
- package/src/plugins/kanban/client/components/shared/empty-state.tsx +37 -0
- package/src/plugins/kanban/client/components/shared/kanban-board.tsx +87 -0
- package/src/plugins/kanban/client/components/shared/page-wrapper.tsx +20 -0
- package/src/plugins/kanban/client/components/shared/task-card.tsx +79 -0
- package/src/plugins/kanban/client/components/shared/user-avatar.tsx +63 -0
- package/src/plugins/kanban/client/hooks/index.tsx +11 -0
- package/src/plugins/kanban/client/hooks/kanban-hooks.tsx +560 -0
- package/src/plugins/kanban/client/index.ts +8 -0
- package/src/plugins/kanban/client/localization/index.ts +28 -0
- package/src/plugins/kanban/client/localization/kanban-common.ts +69 -0
- package/src/plugins/kanban/client/localization/kanban-forms.ts +70 -0
- package/src/plugins/kanban/client/localization/kanban-list.ts +36 -0
- package/src/plugins/kanban/client/overrides.ts +145 -0
- package/src/plugins/kanban/client/plugin.tsx +463 -0
- package/src/plugins/kanban/client.css +68 -0
- package/src/plugins/kanban/db.ts +125 -0
- package/src/plugins/kanban/query-keys.ts +154 -0
- package/src/plugins/kanban/schemas.ts +143 -0
- package/src/plugins/kanban/style.css +7 -0
- package/src/plugins/kanban/types.ts +106 -0
- package/src/plugins/kanban/utils.ts +107 -0
- package/src/plugins/ui-builder/style.css +6 -0
- package/dist/shared/{stack.DLhzx1-D.d.mts → stack.CcI4sYJP.d.cts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.ts → stack.CcI4sYJP.d.mts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.cts → stack.CcI4sYJP.d.ts} +1 -1
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import * as _btst_yar from '@btst/yar';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import { S as SerializedBoardWithColumns } from '../../../shared/stack.DKDMI-QO.cjs';
|
|
6
|
+
export { K as KanbanPluginOverrides, a as KanbanUser } from '../../../shared/stack.FeaWkglm.cjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Context passed to route hooks
|
|
10
|
+
*/
|
|
11
|
+
interface RouteContext {
|
|
12
|
+
/** Current route path */
|
|
13
|
+
path: string;
|
|
14
|
+
/** Route parameters (e.g., { boardId: "abc123" }) */
|
|
15
|
+
params?: Record<string, string>;
|
|
16
|
+
/** Whether rendering on server (true) or client (false) */
|
|
17
|
+
isSSR: boolean;
|
|
18
|
+
/** Additional context properties */
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Context passed to loader hooks
|
|
23
|
+
*/
|
|
24
|
+
interface LoaderContext {
|
|
25
|
+
/** Current route path */
|
|
26
|
+
path: string;
|
|
27
|
+
/** Route parameters */
|
|
28
|
+
params?: Record<string, string>;
|
|
29
|
+
/** Whether rendering on server (true) or client (false) */
|
|
30
|
+
isSSR: boolean;
|
|
31
|
+
/** Base URL for API calls */
|
|
32
|
+
apiBaseURL: string;
|
|
33
|
+
/** Path where the API is mounted */
|
|
34
|
+
apiBasePath: string;
|
|
35
|
+
/** Optional headers for the request */
|
|
36
|
+
headers?: Headers;
|
|
37
|
+
/** Additional context properties */
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration for kanban client plugin
|
|
42
|
+
*/
|
|
43
|
+
interface KanbanClientConfig {
|
|
44
|
+
/** Base URL for API calls (e.g., "http://localhost:3000") */
|
|
45
|
+
apiBaseURL: string;
|
|
46
|
+
/** Path where the API is mounted (e.g., "/api/data") */
|
|
47
|
+
apiBasePath: string;
|
|
48
|
+
/** Base URL of your site for SEO meta tags */
|
|
49
|
+
siteBaseURL: string;
|
|
50
|
+
/** Path where pages are mounted (e.g., "/pages") */
|
|
51
|
+
siteBasePath: string;
|
|
52
|
+
/** React Query client instance for caching */
|
|
53
|
+
queryClient: QueryClient;
|
|
54
|
+
/** Optional SEO configuration for meta tags */
|
|
55
|
+
seo?: {
|
|
56
|
+
/** Site name for Open Graph tags */
|
|
57
|
+
siteName?: string;
|
|
58
|
+
/** Default description */
|
|
59
|
+
description?: string;
|
|
60
|
+
/** Locale for Open Graph (e.g., "en_US") */
|
|
61
|
+
locale?: string;
|
|
62
|
+
/** Default image URL for social sharing */
|
|
63
|
+
defaultImage?: string;
|
|
64
|
+
};
|
|
65
|
+
/** Optional hooks for customizing behavior */
|
|
66
|
+
hooks?: KanbanClientHooks;
|
|
67
|
+
/** Optional headers for SSR (e.g., forwarding cookies) */
|
|
68
|
+
headers?: Headers;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Hooks for kanban client plugin
|
|
72
|
+
* All hooks are optional and allow consumers to customize behavior
|
|
73
|
+
*/
|
|
74
|
+
interface KanbanClientHooks {
|
|
75
|
+
/**
|
|
76
|
+
* Called before loading boards list. Return false to cancel loading.
|
|
77
|
+
*/
|
|
78
|
+
beforeLoadBoards?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Called after boards are loaded. Return false to cancel further processing.
|
|
81
|
+
*/
|
|
82
|
+
afterLoadBoards?: (boards: SerializedBoardWithColumns[] | null, context: LoaderContext) => Promise<boolean> | boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Called before loading a single board. Return false to cancel loading.
|
|
85
|
+
*/
|
|
86
|
+
beforeLoadBoard?: (boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Called after a board is loaded. Return false to cancel further processing.
|
|
89
|
+
*/
|
|
90
|
+
afterLoadBoard?: (board: SerializedBoardWithColumns | null, boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Called before loading the new board page. Return false to cancel.
|
|
93
|
+
*/
|
|
94
|
+
beforeLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Called after the new board page is loaded. Return false to cancel.
|
|
97
|
+
*/
|
|
98
|
+
afterLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Called when a loading error occurs
|
|
101
|
+
*/
|
|
102
|
+
onLoadError?: (error: Error, context: LoaderContext) => Promise<void> | void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Kanban client plugin
|
|
106
|
+
* Provides routes, components, and React Query hooks for kanban boards
|
|
107
|
+
*/
|
|
108
|
+
declare const kanbanClientPlugin: (config: KanbanClientConfig) => _btst_stack_plugins_client.ClientPlugin<Record<string, never>, {
|
|
109
|
+
boards: {
|
|
110
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban", _btst_yar.RouteOptions> | undefined): {
|
|
111
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
112
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
113
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
114
|
+
loader?: (() => Promise<void>) | undefined;
|
|
115
|
+
meta?: (() => ({
|
|
116
|
+
title: string;
|
|
117
|
+
name?: undefined;
|
|
118
|
+
content?: undefined;
|
|
119
|
+
property?: undefined;
|
|
120
|
+
} | {
|
|
121
|
+
name: string;
|
|
122
|
+
content: string;
|
|
123
|
+
title?: undefined;
|
|
124
|
+
property?: undefined;
|
|
125
|
+
} | {
|
|
126
|
+
property: string;
|
|
127
|
+
content: string;
|
|
128
|
+
title?: undefined;
|
|
129
|
+
name?: undefined;
|
|
130
|
+
})[]) | undefined;
|
|
131
|
+
extra?: (() => any) | undefined;
|
|
132
|
+
};
|
|
133
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
134
|
+
path: "/kanban";
|
|
135
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
136
|
+
};
|
|
137
|
+
newBoard: {
|
|
138
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban/new", _btst_yar.RouteOptions> | undefined): {
|
|
139
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
140
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
141
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
142
|
+
loader?: (() => Promise<void>) | undefined;
|
|
143
|
+
meta?: (() => ({
|
|
144
|
+
title: string;
|
|
145
|
+
name?: undefined;
|
|
146
|
+
content?: undefined;
|
|
147
|
+
property?: undefined;
|
|
148
|
+
} | {
|
|
149
|
+
name: string;
|
|
150
|
+
content: string;
|
|
151
|
+
title?: undefined;
|
|
152
|
+
property?: undefined;
|
|
153
|
+
} | {
|
|
154
|
+
property: string;
|
|
155
|
+
content: string;
|
|
156
|
+
title?: undefined;
|
|
157
|
+
name?: undefined;
|
|
158
|
+
})[]) | undefined;
|
|
159
|
+
extra?: (() => any) | undefined;
|
|
160
|
+
};
|
|
161
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
162
|
+
path: "/kanban/new";
|
|
163
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
164
|
+
};
|
|
165
|
+
board: {
|
|
166
|
+
(inputCtx_0: _btst_yar.InputContext<"/kanban/:boardId", _btst_yar.RouteOptions>): {
|
|
167
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
168
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
169
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
170
|
+
loader?: (() => Promise<void>) | undefined;
|
|
171
|
+
meta?: (() => ({
|
|
172
|
+
title: string;
|
|
173
|
+
name?: undefined;
|
|
174
|
+
content?: undefined;
|
|
175
|
+
property?: undefined;
|
|
176
|
+
} | {
|
|
177
|
+
name: string;
|
|
178
|
+
content: string;
|
|
179
|
+
title?: undefined;
|
|
180
|
+
property?: undefined;
|
|
181
|
+
} | {
|
|
182
|
+
property: string;
|
|
183
|
+
content: string;
|
|
184
|
+
title?: undefined;
|
|
185
|
+
name?: undefined;
|
|
186
|
+
})[]) | undefined;
|
|
187
|
+
extra?: (() => any) | undefined;
|
|
188
|
+
};
|
|
189
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
190
|
+
path: "/kanban/:boardId";
|
|
191
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
192
|
+
};
|
|
193
|
+
}>;
|
|
194
|
+
|
|
195
|
+
export { kanbanClientPlugin };
|
|
196
|
+
export type { KanbanClientConfig, KanbanClientHooks, LoaderContext, RouteContext };
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import * as _btst_yar from '@btst/yar';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import { S as SerializedBoardWithColumns } from '../../../shared/stack.DKDMI-QO.mjs';
|
|
6
|
+
export { K as KanbanPluginOverrides, a as KanbanUser } from '../../../shared/stack.FeaWkglm.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Context passed to route hooks
|
|
10
|
+
*/
|
|
11
|
+
interface RouteContext {
|
|
12
|
+
/** Current route path */
|
|
13
|
+
path: string;
|
|
14
|
+
/** Route parameters (e.g., { boardId: "abc123" }) */
|
|
15
|
+
params?: Record<string, string>;
|
|
16
|
+
/** Whether rendering on server (true) or client (false) */
|
|
17
|
+
isSSR: boolean;
|
|
18
|
+
/** Additional context properties */
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Context passed to loader hooks
|
|
23
|
+
*/
|
|
24
|
+
interface LoaderContext {
|
|
25
|
+
/** Current route path */
|
|
26
|
+
path: string;
|
|
27
|
+
/** Route parameters */
|
|
28
|
+
params?: Record<string, string>;
|
|
29
|
+
/** Whether rendering on server (true) or client (false) */
|
|
30
|
+
isSSR: boolean;
|
|
31
|
+
/** Base URL for API calls */
|
|
32
|
+
apiBaseURL: string;
|
|
33
|
+
/** Path where the API is mounted */
|
|
34
|
+
apiBasePath: string;
|
|
35
|
+
/** Optional headers for the request */
|
|
36
|
+
headers?: Headers;
|
|
37
|
+
/** Additional context properties */
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration for kanban client plugin
|
|
42
|
+
*/
|
|
43
|
+
interface KanbanClientConfig {
|
|
44
|
+
/** Base URL for API calls (e.g., "http://localhost:3000") */
|
|
45
|
+
apiBaseURL: string;
|
|
46
|
+
/** Path where the API is mounted (e.g., "/api/data") */
|
|
47
|
+
apiBasePath: string;
|
|
48
|
+
/** Base URL of your site for SEO meta tags */
|
|
49
|
+
siteBaseURL: string;
|
|
50
|
+
/** Path where pages are mounted (e.g., "/pages") */
|
|
51
|
+
siteBasePath: string;
|
|
52
|
+
/** React Query client instance for caching */
|
|
53
|
+
queryClient: QueryClient;
|
|
54
|
+
/** Optional SEO configuration for meta tags */
|
|
55
|
+
seo?: {
|
|
56
|
+
/** Site name for Open Graph tags */
|
|
57
|
+
siteName?: string;
|
|
58
|
+
/** Default description */
|
|
59
|
+
description?: string;
|
|
60
|
+
/** Locale for Open Graph (e.g., "en_US") */
|
|
61
|
+
locale?: string;
|
|
62
|
+
/** Default image URL for social sharing */
|
|
63
|
+
defaultImage?: string;
|
|
64
|
+
};
|
|
65
|
+
/** Optional hooks for customizing behavior */
|
|
66
|
+
hooks?: KanbanClientHooks;
|
|
67
|
+
/** Optional headers for SSR (e.g., forwarding cookies) */
|
|
68
|
+
headers?: Headers;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Hooks for kanban client plugin
|
|
72
|
+
* All hooks are optional and allow consumers to customize behavior
|
|
73
|
+
*/
|
|
74
|
+
interface KanbanClientHooks {
|
|
75
|
+
/**
|
|
76
|
+
* Called before loading boards list. Return false to cancel loading.
|
|
77
|
+
*/
|
|
78
|
+
beforeLoadBoards?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Called after boards are loaded. Return false to cancel further processing.
|
|
81
|
+
*/
|
|
82
|
+
afterLoadBoards?: (boards: SerializedBoardWithColumns[] | null, context: LoaderContext) => Promise<boolean> | boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Called before loading a single board. Return false to cancel loading.
|
|
85
|
+
*/
|
|
86
|
+
beforeLoadBoard?: (boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Called after a board is loaded. Return false to cancel further processing.
|
|
89
|
+
*/
|
|
90
|
+
afterLoadBoard?: (board: SerializedBoardWithColumns | null, boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Called before loading the new board page. Return false to cancel.
|
|
93
|
+
*/
|
|
94
|
+
beforeLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Called after the new board page is loaded. Return false to cancel.
|
|
97
|
+
*/
|
|
98
|
+
afterLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Called when a loading error occurs
|
|
101
|
+
*/
|
|
102
|
+
onLoadError?: (error: Error, context: LoaderContext) => Promise<void> | void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Kanban client plugin
|
|
106
|
+
* Provides routes, components, and React Query hooks for kanban boards
|
|
107
|
+
*/
|
|
108
|
+
declare const kanbanClientPlugin: (config: KanbanClientConfig) => _btst_stack_plugins_client.ClientPlugin<Record<string, never>, {
|
|
109
|
+
boards: {
|
|
110
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban", _btst_yar.RouteOptions> | undefined): {
|
|
111
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
112
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
113
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
114
|
+
loader?: (() => Promise<void>) | undefined;
|
|
115
|
+
meta?: (() => ({
|
|
116
|
+
title: string;
|
|
117
|
+
name?: undefined;
|
|
118
|
+
content?: undefined;
|
|
119
|
+
property?: undefined;
|
|
120
|
+
} | {
|
|
121
|
+
name: string;
|
|
122
|
+
content: string;
|
|
123
|
+
title?: undefined;
|
|
124
|
+
property?: undefined;
|
|
125
|
+
} | {
|
|
126
|
+
property: string;
|
|
127
|
+
content: string;
|
|
128
|
+
title?: undefined;
|
|
129
|
+
name?: undefined;
|
|
130
|
+
})[]) | undefined;
|
|
131
|
+
extra?: (() => any) | undefined;
|
|
132
|
+
};
|
|
133
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
134
|
+
path: "/kanban";
|
|
135
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
136
|
+
};
|
|
137
|
+
newBoard: {
|
|
138
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban/new", _btst_yar.RouteOptions> | undefined): {
|
|
139
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
140
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
141
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
142
|
+
loader?: (() => Promise<void>) | undefined;
|
|
143
|
+
meta?: (() => ({
|
|
144
|
+
title: string;
|
|
145
|
+
name?: undefined;
|
|
146
|
+
content?: undefined;
|
|
147
|
+
property?: undefined;
|
|
148
|
+
} | {
|
|
149
|
+
name: string;
|
|
150
|
+
content: string;
|
|
151
|
+
title?: undefined;
|
|
152
|
+
property?: undefined;
|
|
153
|
+
} | {
|
|
154
|
+
property: string;
|
|
155
|
+
content: string;
|
|
156
|
+
title?: undefined;
|
|
157
|
+
name?: undefined;
|
|
158
|
+
})[]) | undefined;
|
|
159
|
+
extra?: (() => any) | undefined;
|
|
160
|
+
};
|
|
161
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
162
|
+
path: "/kanban/new";
|
|
163
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
164
|
+
};
|
|
165
|
+
board: {
|
|
166
|
+
(inputCtx_0: _btst_yar.InputContext<"/kanban/:boardId", _btst_yar.RouteOptions>): {
|
|
167
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
168
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
169
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
170
|
+
loader?: (() => Promise<void>) | undefined;
|
|
171
|
+
meta?: (() => ({
|
|
172
|
+
title: string;
|
|
173
|
+
name?: undefined;
|
|
174
|
+
content?: undefined;
|
|
175
|
+
property?: undefined;
|
|
176
|
+
} | {
|
|
177
|
+
name: string;
|
|
178
|
+
content: string;
|
|
179
|
+
title?: undefined;
|
|
180
|
+
property?: undefined;
|
|
181
|
+
} | {
|
|
182
|
+
property: string;
|
|
183
|
+
content: string;
|
|
184
|
+
title?: undefined;
|
|
185
|
+
name?: undefined;
|
|
186
|
+
})[]) | undefined;
|
|
187
|
+
extra?: (() => any) | undefined;
|
|
188
|
+
};
|
|
189
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
190
|
+
path: "/kanban/:boardId";
|
|
191
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
192
|
+
};
|
|
193
|
+
}>;
|
|
194
|
+
|
|
195
|
+
export { kanbanClientPlugin };
|
|
196
|
+
export type { KanbanClientConfig, KanbanClientHooks, LoaderContext, RouteContext };
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import * as _btst_stack_plugins_client from '@btst/stack/plugins/client';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import * as _btst_yar from '@btst/yar';
|
|
4
|
+
import { QueryClient } from '@tanstack/react-query';
|
|
5
|
+
import { S as SerializedBoardWithColumns } from '../../../shared/stack.DKDMI-QO.js';
|
|
6
|
+
export { K as KanbanPluginOverrides, a as KanbanUser } from '../../../shared/stack.FeaWkglm.js';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Context passed to route hooks
|
|
10
|
+
*/
|
|
11
|
+
interface RouteContext {
|
|
12
|
+
/** Current route path */
|
|
13
|
+
path: string;
|
|
14
|
+
/** Route parameters (e.g., { boardId: "abc123" }) */
|
|
15
|
+
params?: Record<string, string>;
|
|
16
|
+
/** Whether rendering on server (true) or client (false) */
|
|
17
|
+
isSSR: boolean;
|
|
18
|
+
/** Additional context properties */
|
|
19
|
+
[key: string]: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Context passed to loader hooks
|
|
23
|
+
*/
|
|
24
|
+
interface LoaderContext {
|
|
25
|
+
/** Current route path */
|
|
26
|
+
path: string;
|
|
27
|
+
/** Route parameters */
|
|
28
|
+
params?: Record<string, string>;
|
|
29
|
+
/** Whether rendering on server (true) or client (false) */
|
|
30
|
+
isSSR: boolean;
|
|
31
|
+
/** Base URL for API calls */
|
|
32
|
+
apiBaseURL: string;
|
|
33
|
+
/** Path where the API is mounted */
|
|
34
|
+
apiBasePath: string;
|
|
35
|
+
/** Optional headers for the request */
|
|
36
|
+
headers?: Headers;
|
|
37
|
+
/** Additional context properties */
|
|
38
|
+
[key: string]: unknown;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configuration for kanban client plugin
|
|
42
|
+
*/
|
|
43
|
+
interface KanbanClientConfig {
|
|
44
|
+
/** Base URL for API calls (e.g., "http://localhost:3000") */
|
|
45
|
+
apiBaseURL: string;
|
|
46
|
+
/** Path where the API is mounted (e.g., "/api/data") */
|
|
47
|
+
apiBasePath: string;
|
|
48
|
+
/** Base URL of your site for SEO meta tags */
|
|
49
|
+
siteBaseURL: string;
|
|
50
|
+
/** Path where pages are mounted (e.g., "/pages") */
|
|
51
|
+
siteBasePath: string;
|
|
52
|
+
/** React Query client instance for caching */
|
|
53
|
+
queryClient: QueryClient;
|
|
54
|
+
/** Optional SEO configuration for meta tags */
|
|
55
|
+
seo?: {
|
|
56
|
+
/** Site name for Open Graph tags */
|
|
57
|
+
siteName?: string;
|
|
58
|
+
/** Default description */
|
|
59
|
+
description?: string;
|
|
60
|
+
/** Locale for Open Graph (e.g., "en_US") */
|
|
61
|
+
locale?: string;
|
|
62
|
+
/** Default image URL for social sharing */
|
|
63
|
+
defaultImage?: string;
|
|
64
|
+
};
|
|
65
|
+
/** Optional hooks for customizing behavior */
|
|
66
|
+
hooks?: KanbanClientHooks;
|
|
67
|
+
/** Optional headers for SSR (e.g., forwarding cookies) */
|
|
68
|
+
headers?: Headers;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Hooks for kanban client plugin
|
|
72
|
+
* All hooks are optional and allow consumers to customize behavior
|
|
73
|
+
*/
|
|
74
|
+
interface KanbanClientHooks {
|
|
75
|
+
/**
|
|
76
|
+
* Called before loading boards list. Return false to cancel loading.
|
|
77
|
+
*/
|
|
78
|
+
beforeLoadBoards?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Called after boards are loaded. Return false to cancel further processing.
|
|
81
|
+
*/
|
|
82
|
+
afterLoadBoards?: (boards: SerializedBoardWithColumns[] | null, context: LoaderContext) => Promise<boolean> | boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Called before loading a single board. Return false to cancel loading.
|
|
85
|
+
*/
|
|
86
|
+
beforeLoadBoard?: (boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Called after a board is loaded. Return false to cancel further processing.
|
|
89
|
+
*/
|
|
90
|
+
afterLoadBoard?: (board: SerializedBoardWithColumns | null, boardId: string, context: LoaderContext) => Promise<boolean> | boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Called before loading the new board page. Return false to cancel.
|
|
93
|
+
*/
|
|
94
|
+
beforeLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
95
|
+
/**
|
|
96
|
+
* Called after the new board page is loaded. Return false to cancel.
|
|
97
|
+
*/
|
|
98
|
+
afterLoadNewBoard?: (context: LoaderContext) => Promise<boolean> | boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Called when a loading error occurs
|
|
101
|
+
*/
|
|
102
|
+
onLoadError?: (error: Error, context: LoaderContext) => Promise<void> | void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Kanban client plugin
|
|
106
|
+
* Provides routes, components, and React Query hooks for kanban boards
|
|
107
|
+
*/
|
|
108
|
+
declare const kanbanClientPlugin: (config: KanbanClientConfig) => _btst_stack_plugins_client.ClientPlugin<Record<string, never>, {
|
|
109
|
+
boards: {
|
|
110
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban", _btst_yar.RouteOptions> | undefined): {
|
|
111
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
112
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
113
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
114
|
+
loader?: (() => Promise<void>) | undefined;
|
|
115
|
+
meta?: (() => ({
|
|
116
|
+
title: string;
|
|
117
|
+
name?: undefined;
|
|
118
|
+
content?: undefined;
|
|
119
|
+
property?: undefined;
|
|
120
|
+
} | {
|
|
121
|
+
name: string;
|
|
122
|
+
content: string;
|
|
123
|
+
title?: undefined;
|
|
124
|
+
property?: undefined;
|
|
125
|
+
} | {
|
|
126
|
+
property: string;
|
|
127
|
+
content: string;
|
|
128
|
+
title?: undefined;
|
|
129
|
+
name?: undefined;
|
|
130
|
+
})[]) | undefined;
|
|
131
|
+
extra?: (() => any) | undefined;
|
|
132
|
+
};
|
|
133
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
134
|
+
path: "/kanban";
|
|
135
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
136
|
+
};
|
|
137
|
+
newBoard: {
|
|
138
|
+
(inputCtx_0?: _btst_yar.InputContext<"/kanban/new", _btst_yar.RouteOptions> | undefined): {
|
|
139
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
140
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
141
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
142
|
+
loader?: (() => Promise<void>) | undefined;
|
|
143
|
+
meta?: (() => ({
|
|
144
|
+
title: string;
|
|
145
|
+
name?: undefined;
|
|
146
|
+
content?: undefined;
|
|
147
|
+
property?: undefined;
|
|
148
|
+
} | {
|
|
149
|
+
name: string;
|
|
150
|
+
content: string;
|
|
151
|
+
title?: undefined;
|
|
152
|
+
property?: undefined;
|
|
153
|
+
} | {
|
|
154
|
+
property: string;
|
|
155
|
+
content: string;
|
|
156
|
+
title?: undefined;
|
|
157
|
+
name?: undefined;
|
|
158
|
+
})[]) | undefined;
|
|
159
|
+
extra?: (() => any) | undefined;
|
|
160
|
+
};
|
|
161
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
162
|
+
path: "/kanban/new";
|
|
163
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
164
|
+
};
|
|
165
|
+
board: {
|
|
166
|
+
(inputCtx_0: _btst_yar.InputContext<"/kanban/:boardId", _btst_yar.RouteOptions>): {
|
|
167
|
+
PageComponent?: react.ComponentType<unknown> | undefined;
|
|
168
|
+
LoadingComponent?: react.ComponentType<unknown> | undefined;
|
|
169
|
+
ErrorComponent?: react.ComponentType<unknown> | undefined;
|
|
170
|
+
loader?: (() => Promise<void>) | undefined;
|
|
171
|
+
meta?: (() => ({
|
|
172
|
+
title: string;
|
|
173
|
+
name?: undefined;
|
|
174
|
+
content?: undefined;
|
|
175
|
+
property?: undefined;
|
|
176
|
+
} | {
|
|
177
|
+
name: string;
|
|
178
|
+
content: string;
|
|
179
|
+
title?: undefined;
|
|
180
|
+
property?: undefined;
|
|
181
|
+
} | {
|
|
182
|
+
property: string;
|
|
183
|
+
content: string;
|
|
184
|
+
title?: undefined;
|
|
185
|
+
name?: undefined;
|
|
186
|
+
})[]) | undefined;
|
|
187
|
+
extra?: (() => any) | undefined;
|
|
188
|
+
};
|
|
189
|
+
options: _btst_yar.RouteOptions | undefined;
|
|
190
|
+
path: "/kanban/:boardId";
|
|
191
|
+
meta: _btst_yar.RouteMeta | undefined;
|
|
192
|
+
};
|
|
193
|
+
}>;
|
|
194
|
+
|
|
195
|
+
export { kanbanClientPlugin };
|
|
196
|
+
export type { KanbanClientConfig, KanbanClientHooks, LoaderContext, RouteContext };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { kanbanClientPlugin } from '../../../packages/better-stack/src/plugins/kanban/client/plugin.mjs';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/* Kanban Plugin Client Styles */
|
|
2
|
+
|
|
3
|
+
/* Kanban board container */
|
|
4
|
+
[data-slot="kanban-board"] {
|
|
5
|
+
min-height: 400px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
/* Column styling */
|
|
9
|
+
[data-slot="kanban-column"] {
|
|
10
|
+
min-width: 0;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/* Item dragging state */
|
|
14
|
+
[data-slot="kanban-item"][data-dragging] {
|
|
15
|
+
opacity: 0.5;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/* Column dragging state */
|
|
19
|
+
[data-slot="kanban-column"][data-dragging] {
|
|
20
|
+
opacity: 0.5;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Handle cursor */
|
|
24
|
+
[data-slot="kanban-column-handle"],
|
|
25
|
+
[data-slot="kanban-item-handle"] {
|
|
26
|
+
cursor: grab;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
[data-slot="kanban-column-handle"]:active,
|
|
30
|
+
[data-slot="kanban-item-handle"]:active {
|
|
31
|
+
cursor: grabbing;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* Task card hover effect */
|
|
35
|
+
.kanban-task-card {
|
|
36
|
+
transition: box-shadow 0.2s ease;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.kanban-task-card:hover {
|
|
40
|
+
box-shadow:
|
|
41
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.1),
|
|
42
|
+
0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Priority badge colors */
|
|
46
|
+
.kanban-priority-urgent {
|
|
47
|
+
background-color: var(--destructive) !important;
|
|
48
|
+
color: var(--destructive-foreground) !important;
|
|
49
|
+
border-color: var(--destructive) !important;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.kanban-priority-high {
|
|
53
|
+
background-color: rgb(249, 115, 22) !important;
|
|
54
|
+
color: white !important;
|
|
55
|
+
border-color: rgb(249, 115, 22) !important;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.kanban-priority-medium {
|
|
59
|
+
background-color: var(--primary) !important;
|
|
60
|
+
color: var(--primary-foreground) !important;
|
|
61
|
+
border-color: var(--primary) !important;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.kanban-priority-low {
|
|
65
|
+
background-color: var(--secondary) !important;
|
|
66
|
+
color: var(--secondary-foreground) !important;
|
|
67
|
+
border-color: var(--secondary) !important;
|
|
68
|
+
}
|