@btst/stack 1.11.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/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/lib/compose-refs.cjs +56 -0
- package/dist/packages/ui/src/lib/compose-refs.mjs +39 -0
- 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/style.css +6 -0
- 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.FeaWkglm.d.cts +190 -0
- package/dist/shared/stack.FeaWkglm.d.mts +190 -0
- package/dist/shared/stack.FeaWkglm.d.ts +190 -0
- 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.cts → stack.CcI4sYJP.d.cts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.mts → stack.CcI4sYJP.d.mts} +1 -1
- package/dist/shared/{stack.DLhzx1-D.d.ts → stack.CcI4sYJP.d.ts} +1 -1
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
|
|
2
|
+
import * as better_call from 'better-call';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { B as Board, C as Column, T as Task, d as ColumnWithTasks } from '../../../shared/stack.DKDMI-QO.js';
|
|
5
|
+
|
|
6
|
+
declare const createBoardSchema: z.ZodObject<{
|
|
7
|
+
description: z.ZodOptional<z.ZodString>;
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
10
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
11
|
+
organizationId: z.ZodOptional<z.ZodString>;
|
|
12
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
13
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
declare const updateBoardSchema: z.ZodObject<{
|
|
16
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
17
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
18
|
+
name: z.ZodOptional<z.ZodString>;
|
|
19
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
20
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
21
|
+
ownerId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
22
|
+
organizationId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
23
|
+
id: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
|
|
24
|
+
}, z.core.$strip>;
|
|
25
|
+
declare const createColumnSchema: z.ZodObject<{
|
|
26
|
+
title: z.ZodString;
|
|
27
|
+
boardId: z.ZodString;
|
|
28
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
29
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
30
|
+
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
31
|
+
}, z.core.$strip>;
|
|
32
|
+
declare const updateColumnSchema: z.ZodObject<{
|
|
33
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
34
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
35
|
+
title: z.ZodOptional<z.ZodString>;
|
|
36
|
+
order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
|
|
37
|
+
boardId: z.ZodOptional<z.ZodString>;
|
|
38
|
+
id: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
declare const createTaskSchema: z.ZodObject<{
|
|
41
|
+
title: z.ZodString;
|
|
42
|
+
description: z.ZodOptional<z.ZodString>;
|
|
43
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
44
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
45
|
+
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
46
|
+
completedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
47
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
48
|
+
LOW: "LOW";
|
|
49
|
+
MEDIUM: "MEDIUM";
|
|
50
|
+
HIGH: "HIGH";
|
|
51
|
+
URGENT: "URGENT";
|
|
52
|
+
}>>>;
|
|
53
|
+
columnId: z.ZodString;
|
|
54
|
+
assigneeId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
55
|
+
isArchived: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
56
|
+
}, z.core.$strip>;
|
|
57
|
+
declare const updateTaskSchema: z.ZodObject<{
|
|
58
|
+
completedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
59
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
60
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
61
|
+
title: z.ZodOptional<z.ZodString>;
|
|
62
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
63
|
+
priority: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
64
|
+
LOW: "LOW";
|
|
65
|
+
MEDIUM: "MEDIUM";
|
|
66
|
+
HIGH: "HIGH";
|
|
67
|
+
URGENT: "URGENT";
|
|
68
|
+
}>>>>;
|
|
69
|
+
order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
|
|
70
|
+
columnId: z.ZodOptional<z.ZodString>;
|
|
71
|
+
assigneeId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
|
|
72
|
+
isArchived: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodBoolean>>>;
|
|
73
|
+
id: z.ZodNonOptional<z.ZodOptional<z.ZodString>>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
declare const BoardListQuerySchema: z.ZodObject<{
|
|
76
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
77
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
78
|
+
organizationId: z.ZodOptional<z.ZodString>;
|
|
79
|
+
offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
80
|
+
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
81
|
+
}, z.core.$strip>;
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Context passed to kanban API hooks
|
|
85
|
+
*/
|
|
86
|
+
interface KanbanApiContext<TBody = unknown, TParams = unknown, TQuery = unknown> {
|
|
87
|
+
body?: TBody;
|
|
88
|
+
params?: TParams;
|
|
89
|
+
query?: TQuery;
|
|
90
|
+
request?: Request;
|
|
91
|
+
headers?: Headers;
|
|
92
|
+
[key: string]: unknown;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Configuration hooks for kanban backend plugin
|
|
96
|
+
* All hooks are optional and allow consumers to customize behavior
|
|
97
|
+
*/
|
|
98
|
+
interface KanbanBackendHooks {
|
|
99
|
+
/**
|
|
100
|
+
* Called before listing boards. Return false to deny access.
|
|
101
|
+
*/
|
|
102
|
+
onBeforeListBoards?: (filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Called before creating a board. Return false to deny access.
|
|
105
|
+
*/
|
|
106
|
+
onBeforeCreateBoard?: (data: z.infer<typeof createBoardSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Called before reading a single board. Return false to deny access.
|
|
109
|
+
*/
|
|
110
|
+
onBeforeReadBoard?: (boardId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
111
|
+
/**
|
|
112
|
+
* Called before updating a board. Return false to deny access.
|
|
113
|
+
*/
|
|
114
|
+
onBeforeUpdateBoard?: (boardId: string, data: z.infer<typeof updateBoardSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Called before deleting a board. Return false to deny access.
|
|
117
|
+
*/
|
|
118
|
+
onBeforeDeleteBoard?: (boardId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Called after boards are listed successfully
|
|
121
|
+
*/
|
|
122
|
+
onBoardsRead?: (boards: Board[], filter: z.infer<typeof BoardListQuerySchema>, context: KanbanApiContext) => Promise<void> | void;
|
|
123
|
+
/**
|
|
124
|
+
* Called after a single board is read successfully
|
|
125
|
+
*/
|
|
126
|
+
onBoardRead?: (board: Board, context: KanbanApiContext) => Promise<void> | void;
|
|
127
|
+
/**
|
|
128
|
+
* Called after a board is created successfully
|
|
129
|
+
*/
|
|
130
|
+
onBoardCreated?: (board: Board, context: KanbanApiContext) => Promise<void> | void;
|
|
131
|
+
/**
|
|
132
|
+
* Called after a board is updated successfully
|
|
133
|
+
*/
|
|
134
|
+
onBoardUpdated?: (board: Board, context: KanbanApiContext) => Promise<void> | void;
|
|
135
|
+
/**
|
|
136
|
+
* Called after a board is deleted successfully
|
|
137
|
+
*/
|
|
138
|
+
onBoardDeleted?: (boardId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
139
|
+
/**
|
|
140
|
+
* Called when listing boards fails
|
|
141
|
+
*/
|
|
142
|
+
onListBoardsError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
143
|
+
/**
|
|
144
|
+
* Called when reading a single board fails
|
|
145
|
+
*/
|
|
146
|
+
onReadBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
147
|
+
/**
|
|
148
|
+
* Called when creating a board fails
|
|
149
|
+
*/
|
|
150
|
+
onCreateBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
151
|
+
/**
|
|
152
|
+
* Called when updating a board fails
|
|
153
|
+
*/
|
|
154
|
+
onUpdateBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
155
|
+
/**
|
|
156
|
+
* Called when deleting a board fails
|
|
157
|
+
*/
|
|
158
|
+
onDeleteBoardError?: (error: Error, context: KanbanApiContext) => Promise<void> | void;
|
|
159
|
+
/**
|
|
160
|
+
* Called before creating a column. Return false to deny access.
|
|
161
|
+
*/
|
|
162
|
+
onBeforeCreateColumn?: (data: z.infer<typeof createColumnSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Called before updating a column. Return false to deny access.
|
|
165
|
+
*/
|
|
166
|
+
onBeforeUpdateColumn?: (columnId: string, data: z.infer<typeof updateColumnSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
167
|
+
/**
|
|
168
|
+
* Called before deleting a column. Return false to deny access.
|
|
169
|
+
*/
|
|
170
|
+
onBeforeDeleteColumn?: (columnId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Called after a column is created successfully
|
|
173
|
+
*/
|
|
174
|
+
onColumnCreated?: (column: Column, context: KanbanApiContext) => Promise<void> | void;
|
|
175
|
+
/**
|
|
176
|
+
* Called after a column is updated successfully
|
|
177
|
+
*/
|
|
178
|
+
onColumnUpdated?: (column: Column, context: KanbanApiContext) => Promise<void> | void;
|
|
179
|
+
/**
|
|
180
|
+
* Called after a column is deleted successfully
|
|
181
|
+
*/
|
|
182
|
+
onColumnDeleted?: (columnId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
183
|
+
/**
|
|
184
|
+
* Called before creating a task. Return false to deny access.
|
|
185
|
+
*/
|
|
186
|
+
onBeforeCreateTask?: (data: z.infer<typeof createTaskSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
187
|
+
/**
|
|
188
|
+
* Called before updating a task. Return false to deny access.
|
|
189
|
+
*/
|
|
190
|
+
onBeforeUpdateTask?: (taskId: string, data: z.infer<typeof updateTaskSchema>, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Called before deleting a task. Return false to deny access.
|
|
193
|
+
*/
|
|
194
|
+
onBeforeDeleteTask?: (taskId: string, context: KanbanApiContext) => Promise<boolean> | boolean;
|
|
195
|
+
/**
|
|
196
|
+
* Called after a task is created successfully
|
|
197
|
+
*/
|
|
198
|
+
onTaskCreated?: (task: Task, context: KanbanApiContext) => Promise<void> | void;
|
|
199
|
+
/**
|
|
200
|
+
* Called after a task is updated successfully
|
|
201
|
+
*/
|
|
202
|
+
onTaskUpdated?: (task: Task, context: KanbanApiContext) => Promise<void> | void;
|
|
203
|
+
/**
|
|
204
|
+
* Called after a task is deleted successfully
|
|
205
|
+
*/
|
|
206
|
+
onTaskDeleted?: (taskId: string, context: KanbanApiContext) => Promise<void> | void;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Kanban backend plugin
|
|
210
|
+
* Provides API endpoints for managing kanban boards, columns, and tasks
|
|
211
|
+
*
|
|
212
|
+
* @param hooks - Optional configuration hooks for customizing plugin behavior
|
|
213
|
+
*/
|
|
214
|
+
declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_plugins_api.BackendPlugin<{
|
|
215
|
+
readonly listBoards: better_call.StrictEndpoint<"/boards", {
|
|
216
|
+
method: "GET";
|
|
217
|
+
query: z.ZodObject<{
|
|
218
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
219
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
220
|
+
organizationId: z.ZodOptional<z.ZodString>;
|
|
221
|
+
offset: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
222
|
+
limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
|
|
223
|
+
}, z.core.$strip>;
|
|
224
|
+
}, {
|
|
225
|
+
columns: {
|
|
226
|
+
tasks: Task[];
|
|
227
|
+
id: string;
|
|
228
|
+
title: string;
|
|
229
|
+
order: number;
|
|
230
|
+
boardId: string;
|
|
231
|
+
createdAt: Date;
|
|
232
|
+
updatedAt: Date;
|
|
233
|
+
}[];
|
|
234
|
+
id: string;
|
|
235
|
+
name: string;
|
|
236
|
+
slug: string;
|
|
237
|
+
description?: string;
|
|
238
|
+
ownerId?: string;
|
|
239
|
+
organizationId?: string;
|
|
240
|
+
createdAt: Date;
|
|
241
|
+
updatedAt: Date;
|
|
242
|
+
}[]>;
|
|
243
|
+
readonly getBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
244
|
+
method: "GET";
|
|
245
|
+
}, {
|
|
246
|
+
columns: {
|
|
247
|
+
tasks: Task[];
|
|
248
|
+
id: string;
|
|
249
|
+
title: string;
|
|
250
|
+
order: number;
|
|
251
|
+
boardId: string;
|
|
252
|
+
createdAt: Date;
|
|
253
|
+
updatedAt: Date;
|
|
254
|
+
}[];
|
|
255
|
+
id: string;
|
|
256
|
+
name: string;
|
|
257
|
+
slug: string;
|
|
258
|
+
description?: string;
|
|
259
|
+
ownerId?: string;
|
|
260
|
+
organizationId?: string;
|
|
261
|
+
createdAt: Date;
|
|
262
|
+
updatedAt: Date;
|
|
263
|
+
}>;
|
|
264
|
+
readonly createBoard: better_call.StrictEndpoint<"/boards", {
|
|
265
|
+
method: "POST";
|
|
266
|
+
body: z.ZodObject<{
|
|
267
|
+
description: z.ZodOptional<z.ZodString>;
|
|
268
|
+
name: z.ZodString;
|
|
269
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
270
|
+
ownerId: z.ZodOptional<z.ZodString>;
|
|
271
|
+
organizationId: z.ZodOptional<z.ZodString>;
|
|
272
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
273
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
274
|
+
}, z.core.$strip>;
|
|
275
|
+
}, {
|
|
276
|
+
columns: ColumnWithTasks[];
|
|
277
|
+
id: string;
|
|
278
|
+
name: string;
|
|
279
|
+
slug: string;
|
|
280
|
+
description?: string;
|
|
281
|
+
ownerId?: string;
|
|
282
|
+
organizationId?: string;
|
|
283
|
+
createdAt: Date;
|
|
284
|
+
updatedAt: Date;
|
|
285
|
+
}>;
|
|
286
|
+
readonly updateBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
287
|
+
method: "PUT";
|
|
288
|
+
body: z.ZodObject<{
|
|
289
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
290
|
+
name: z.ZodOptional<z.ZodString>;
|
|
291
|
+
slug: z.ZodOptional<z.ZodString>;
|
|
292
|
+
ownerId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
293
|
+
organizationId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
294
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
295
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
296
|
+
}, z.core.$strip>;
|
|
297
|
+
}, Board>;
|
|
298
|
+
readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {
|
|
299
|
+
method: "DELETE";
|
|
300
|
+
}, {
|
|
301
|
+
success: boolean;
|
|
302
|
+
}>;
|
|
303
|
+
readonly createColumn: better_call.StrictEndpoint<"/columns", {
|
|
304
|
+
method: "POST";
|
|
305
|
+
body: z.ZodObject<{
|
|
306
|
+
title: z.ZodString;
|
|
307
|
+
boardId: z.ZodString;
|
|
308
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
309
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
310
|
+
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
311
|
+
}, z.core.$strip>;
|
|
312
|
+
}, Column>;
|
|
313
|
+
readonly updateColumn: better_call.StrictEndpoint<"/columns/:id", {
|
|
314
|
+
method: "PUT";
|
|
315
|
+
body: z.ZodObject<{
|
|
316
|
+
title: z.ZodOptional<z.ZodString>;
|
|
317
|
+
boardId: z.ZodOptional<z.ZodString>;
|
|
318
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
319
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
320
|
+
order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
|
|
321
|
+
}, z.core.$strip>;
|
|
322
|
+
}, Column>;
|
|
323
|
+
readonly deleteColumn: better_call.StrictEndpoint<"/columns/:id", {
|
|
324
|
+
method: "DELETE";
|
|
325
|
+
}, {
|
|
326
|
+
success: boolean;
|
|
327
|
+
}>;
|
|
328
|
+
readonly reorderColumns: better_call.StrictEndpoint<"/columns/reorder", {
|
|
329
|
+
method: "POST";
|
|
330
|
+
body: z.ZodObject<{
|
|
331
|
+
boardId: z.ZodString;
|
|
332
|
+
columnIds: z.ZodArray<z.ZodString>;
|
|
333
|
+
}, z.core.$strip>;
|
|
334
|
+
}, {
|
|
335
|
+
success: boolean;
|
|
336
|
+
}>;
|
|
337
|
+
readonly createTask: better_call.StrictEndpoint<"/tasks", {
|
|
338
|
+
method: "POST";
|
|
339
|
+
body: z.ZodObject<{
|
|
340
|
+
title: z.ZodString;
|
|
341
|
+
description: z.ZodOptional<z.ZodString>;
|
|
342
|
+
createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
343
|
+
updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
344
|
+
order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
345
|
+
completedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
|
|
346
|
+
priority: z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
347
|
+
LOW: "LOW";
|
|
348
|
+
MEDIUM: "MEDIUM";
|
|
349
|
+
HIGH: "HIGH";
|
|
350
|
+
URGENT: "URGENT";
|
|
351
|
+
}>>>;
|
|
352
|
+
columnId: z.ZodString;
|
|
353
|
+
assigneeId: z.ZodNullable<z.ZodOptional<z.ZodString>>;
|
|
354
|
+
isArchived: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
355
|
+
}, z.core.$strip>;
|
|
356
|
+
}, Task>;
|
|
357
|
+
readonly updateTask: better_call.StrictEndpoint<"/tasks/:id", {
|
|
358
|
+
method: "PUT";
|
|
359
|
+
body: z.ZodObject<{
|
|
360
|
+
title: z.ZodOptional<z.ZodString>;
|
|
361
|
+
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
362
|
+
createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
363
|
+
updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
364
|
+
order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
|
|
365
|
+
completedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
|
|
366
|
+
priority: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodEnum<{
|
|
367
|
+
LOW: "LOW";
|
|
368
|
+
MEDIUM: "MEDIUM";
|
|
369
|
+
HIGH: "HIGH";
|
|
370
|
+
URGENT: "URGENT";
|
|
371
|
+
}>>>>;
|
|
372
|
+
columnId: z.ZodOptional<z.ZodString>;
|
|
373
|
+
assigneeId: z.ZodOptional<z.ZodNullable<z.ZodOptional<z.ZodString>>>;
|
|
374
|
+
isArchived: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodBoolean>>>;
|
|
375
|
+
}, z.core.$strip>;
|
|
376
|
+
}, Task>;
|
|
377
|
+
readonly deleteTask: better_call.StrictEndpoint<"/tasks/:id", {
|
|
378
|
+
method: "DELETE";
|
|
379
|
+
}, {
|
|
380
|
+
success: boolean;
|
|
381
|
+
}>;
|
|
382
|
+
readonly moveTask: better_call.StrictEndpoint<"/tasks/move", {
|
|
383
|
+
method: "POST";
|
|
384
|
+
body: z.ZodObject<{
|
|
385
|
+
taskId: z.ZodString;
|
|
386
|
+
targetColumnId: z.ZodString;
|
|
387
|
+
targetOrder: z.ZodNumber;
|
|
388
|
+
}, z.core.$strip>;
|
|
389
|
+
}, Task>;
|
|
390
|
+
readonly reorderTasks: better_call.StrictEndpoint<"/tasks/reorder", {
|
|
391
|
+
method: "POST";
|
|
392
|
+
body: z.ZodObject<{
|
|
393
|
+
columnId: z.ZodString;
|
|
394
|
+
taskIds: z.ZodArray<z.ZodString>;
|
|
395
|
+
}, z.core.$strip>;
|
|
396
|
+
}, {
|
|
397
|
+
success: boolean;
|
|
398
|
+
}>;
|
|
399
|
+
}>;
|
|
400
|
+
type KanbanApiRouter = ReturnType<ReturnType<typeof kanbanBackendPlugin>["routes"]>;
|
|
401
|
+
|
|
402
|
+
export { kanbanBackendPlugin };
|
|
403
|
+
export type { KanbanApiContext, KanbanApiRouter, KanbanBackendHooks };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { kanbanBackendPlugin } from '../../../packages/better-stack/src/plugins/kanban/api/plugin.mjs';
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const boardsListPage = require('../../../../packages/better-stack/src/plugins/kanban/client/components/pages/boards-list-page.cjs');
|
|
4
|
+
const boardPage = require('../../../../packages/better-stack/src/plugins/kanban/client/components/pages/board-page.cjs');
|
|
5
|
+
const newBoardPage = require('../../../../packages/better-stack/src/plugins/kanban/client/components/pages/new-board-page.cjs');
|
|
6
|
+
const _404Page = require('../../../../packages/better-stack/src/plugins/kanban/client/components/pages/404-page.cjs');
|
|
7
|
+
const pageWrapper = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/page-wrapper.cjs');
|
|
8
|
+
const emptyState = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/empty-state.cjs');
|
|
9
|
+
const defaultError = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/default-error.cjs');
|
|
10
|
+
const kanbanBoard = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/kanban-board.cjs');
|
|
11
|
+
const columnContent = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/column-content.cjs');
|
|
12
|
+
const taskCard = require('../../../../packages/better-stack/src/plugins/kanban/client/components/shared/task-card.cjs');
|
|
13
|
+
const boardForm = require('../../../../packages/better-stack/src/plugins/kanban/client/components/forms/board-form.cjs');
|
|
14
|
+
const columnForm = require('../../../../packages/better-stack/src/plugins/kanban/client/components/forms/column-form.cjs');
|
|
15
|
+
const taskForm = require('../../../../packages/better-stack/src/plugins/kanban/client/components/forms/task-form.cjs');
|
|
16
|
+
const boardsListSkeleton = require('../../../../packages/better-stack/src/plugins/kanban/client/components/loading/boards-list-skeleton.cjs');
|
|
17
|
+
const boardSkeleton = require('../../../../packages/better-stack/src/plugins/kanban/client/components/loading/board-skeleton.cjs');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.BoardsListPageComponent = boardsListPage.BoardsListPageComponent;
|
|
22
|
+
exports.BoardPageComponent = boardPage.BoardPageComponent;
|
|
23
|
+
exports.NewBoardPageComponent = newBoardPage.NewBoardPageComponent;
|
|
24
|
+
exports.NotFoundPage = _404Page.NotFoundPage;
|
|
25
|
+
exports.PageWrapper = pageWrapper.PageWrapper;
|
|
26
|
+
exports.EmptyState = emptyState.EmptyState;
|
|
27
|
+
exports.DefaultError = defaultError.DefaultError;
|
|
28
|
+
exports.KanbanBoard = kanbanBoard.KanbanBoard;
|
|
29
|
+
exports.ColumnContent = columnContent.ColumnContent;
|
|
30
|
+
exports.TaskCard = taskCard.TaskCard;
|
|
31
|
+
exports.BoardForm = boardForm.BoardForm;
|
|
32
|
+
exports.ColumnForm = columnForm.ColumnForm;
|
|
33
|
+
exports.TaskForm = taskForm.TaskForm;
|
|
34
|
+
exports.BoardsListSkeleton = boardsListSkeleton.BoardsListSkeleton;
|
|
35
|
+
exports.BoardSkeleton = boardSkeleton.BoardSkeleton;
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
4
|
+
import { b as SerializedColumn, c as SerializedTask, a as SerializedBoard } from '../../../../shared/stack.DKDMI-QO.cjs';
|
|
5
|
+
|
|
6
|
+
declare function BoardsListPageComponent(): react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
interface BoardPageComponentProps {
|
|
9
|
+
boardId: string;
|
|
10
|
+
}
|
|
11
|
+
declare function BoardPageComponent({ boardId }: BoardPageComponentProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
declare function NewBoardPageComponent(): react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
declare function NotFoundPage(): react_jsx_runtime.JSX.Element;
|
|
16
|
+
|
|
17
|
+
interface PageWrapperProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
declare function PageWrapper({ children, className, ...props }: PageWrapperProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
|
|
22
|
+
interface EmptyStateProps {
|
|
23
|
+
title: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
action?: ReactNode;
|
|
26
|
+
icon?: ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
declare function EmptyState({ title, description, action, icon, className, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
interface DefaultErrorProps {
|
|
32
|
+
error?: Error;
|
|
33
|
+
reset?: () => void;
|
|
34
|
+
}
|
|
35
|
+
declare function DefaultError({ error, reset }: DefaultErrorProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
|
|
37
|
+
interface KanbanBoardProps {
|
|
38
|
+
columns: (SerializedColumn & {
|
|
39
|
+
tasks: SerializedTask[];
|
|
40
|
+
})[];
|
|
41
|
+
kanbanState: Record<string, SerializedTask[]>;
|
|
42
|
+
onKanbanChange: (newData: Record<string, SerializedTask[]>) => void;
|
|
43
|
+
onAddTask: (columnId: string) => void;
|
|
44
|
+
onEditTask: (columnId: string, taskId: string) => void;
|
|
45
|
+
onEditColumn: (columnId: string) => void;
|
|
46
|
+
onDeleteColumn: (columnId: string) => void;
|
|
47
|
+
}
|
|
48
|
+
declare function KanbanBoardComponent({ columns, kanbanState, onKanbanChange, onAddTask, onEditTask, onEditColumn, onDeleteColumn, }: KanbanBoardProps): react_jsx_runtime.JSX.Element;
|
|
49
|
+
declare const KanbanBoard: react.MemoExoticComponent<typeof KanbanBoardComponent>;
|
|
50
|
+
|
|
51
|
+
interface ColumnContentProps {
|
|
52
|
+
column: SerializedColumn & {
|
|
53
|
+
tasks: SerializedTask[];
|
|
54
|
+
};
|
|
55
|
+
onAddTask: () => void;
|
|
56
|
+
onEditTask: (taskId: string) => void;
|
|
57
|
+
onEditColumn: () => void;
|
|
58
|
+
onDeleteColumn: () => void;
|
|
59
|
+
}
|
|
60
|
+
declare function ColumnContentComponent({ column, onAddTask, onEditTask, onEditColumn, onDeleteColumn, }: ColumnContentProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
declare const ColumnContent: react.MemoExoticComponent<typeof ColumnContentComponent>;
|
|
62
|
+
|
|
63
|
+
interface TaskCardProps {
|
|
64
|
+
task: SerializedTask;
|
|
65
|
+
onClick: () => void;
|
|
66
|
+
}
|
|
67
|
+
declare function TaskCardComponent({ task, onClick }: TaskCardProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
declare const TaskCard: react.MemoExoticComponent<typeof TaskCardComponent>;
|
|
69
|
+
|
|
70
|
+
interface BoardFormProps {
|
|
71
|
+
board?: SerializedBoard;
|
|
72
|
+
onClose: () => void;
|
|
73
|
+
onSuccess: (boardId: string) => void;
|
|
74
|
+
}
|
|
75
|
+
declare function BoardForm({ board, onClose, onSuccess }: BoardFormProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
77
|
+
interface ColumnFormProps {
|
|
78
|
+
boardId: string;
|
|
79
|
+
columnId?: string;
|
|
80
|
+
column?: SerializedColumn;
|
|
81
|
+
onClose: () => void;
|
|
82
|
+
onSuccess: () => void;
|
|
83
|
+
}
|
|
84
|
+
declare function ColumnForm({ boardId, columnId, column, onClose, onSuccess, }: ColumnFormProps): react_jsx_runtime.JSX.Element;
|
|
85
|
+
|
|
86
|
+
interface TaskFormProps {
|
|
87
|
+
columnId: string;
|
|
88
|
+
boardId: string;
|
|
89
|
+
taskId?: string;
|
|
90
|
+
task?: SerializedTask;
|
|
91
|
+
columns: SerializedColumn[];
|
|
92
|
+
onClose: () => void;
|
|
93
|
+
onSuccess: () => void;
|
|
94
|
+
onDelete?: () => void;
|
|
95
|
+
}
|
|
96
|
+
declare function TaskForm({ columnId, boardId, taskId, task, columns, onClose, onSuccess, onDelete, }: TaskFormProps): react_jsx_runtime.JSX.Element;
|
|
97
|
+
|
|
98
|
+
declare function BoardsListSkeleton(): react_jsx_runtime.JSX.Element;
|
|
99
|
+
|
|
100
|
+
declare function BoardSkeleton(): react_jsx_runtime.JSX.Element;
|
|
101
|
+
|
|
102
|
+
export { BoardForm, BoardPageComponent, BoardSkeleton, BoardsListPageComponent, BoardsListSkeleton, ColumnContent, ColumnForm, DefaultError, EmptyState, KanbanBoard, NewBoardPageComponent, NotFoundPage, PageWrapper, TaskCard, TaskForm };
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
+
import * as react from 'react';
|
|
3
|
+
import { HTMLAttributes, ReactNode } from 'react';
|
|
4
|
+
import { b as SerializedColumn, c as SerializedTask, a as SerializedBoard } from '../../../../shared/stack.DKDMI-QO.mjs';
|
|
5
|
+
|
|
6
|
+
declare function BoardsListPageComponent(): react_jsx_runtime.JSX.Element;
|
|
7
|
+
|
|
8
|
+
interface BoardPageComponentProps {
|
|
9
|
+
boardId: string;
|
|
10
|
+
}
|
|
11
|
+
declare function BoardPageComponent({ boardId }: BoardPageComponentProps): react_jsx_runtime.JSX.Element;
|
|
12
|
+
|
|
13
|
+
declare function NewBoardPageComponent(): react_jsx_runtime.JSX.Element;
|
|
14
|
+
|
|
15
|
+
declare function NotFoundPage(): react_jsx_runtime.JSX.Element;
|
|
16
|
+
|
|
17
|
+
interface PageWrapperProps extends HTMLAttributes<HTMLDivElement> {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
declare function PageWrapper({ children, className, ...props }: PageWrapperProps): react_jsx_runtime.JSX.Element;
|
|
21
|
+
|
|
22
|
+
interface EmptyStateProps {
|
|
23
|
+
title: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
action?: ReactNode;
|
|
26
|
+
icon?: ReactNode;
|
|
27
|
+
className?: string;
|
|
28
|
+
}
|
|
29
|
+
declare function EmptyState({ title, description, action, icon, className, }: EmptyStateProps): react_jsx_runtime.JSX.Element;
|
|
30
|
+
|
|
31
|
+
interface DefaultErrorProps {
|
|
32
|
+
error?: Error;
|
|
33
|
+
reset?: () => void;
|
|
34
|
+
}
|
|
35
|
+
declare function DefaultError({ error, reset }: DefaultErrorProps): react_jsx_runtime.JSX.Element;
|
|
36
|
+
|
|
37
|
+
interface KanbanBoardProps {
|
|
38
|
+
columns: (SerializedColumn & {
|
|
39
|
+
tasks: SerializedTask[];
|
|
40
|
+
})[];
|
|
41
|
+
kanbanState: Record<string, SerializedTask[]>;
|
|
42
|
+
onKanbanChange: (newData: Record<string, SerializedTask[]>) => void;
|
|
43
|
+
onAddTask: (columnId: string) => void;
|
|
44
|
+
onEditTask: (columnId: string, taskId: string) => void;
|
|
45
|
+
onEditColumn: (columnId: string) => void;
|
|
46
|
+
onDeleteColumn: (columnId: string) => void;
|
|
47
|
+
}
|
|
48
|
+
declare function KanbanBoardComponent({ columns, kanbanState, onKanbanChange, onAddTask, onEditTask, onEditColumn, onDeleteColumn, }: KanbanBoardProps): react_jsx_runtime.JSX.Element;
|
|
49
|
+
declare const KanbanBoard: react.MemoExoticComponent<typeof KanbanBoardComponent>;
|
|
50
|
+
|
|
51
|
+
interface ColumnContentProps {
|
|
52
|
+
column: SerializedColumn & {
|
|
53
|
+
tasks: SerializedTask[];
|
|
54
|
+
};
|
|
55
|
+
onAddTask: () => void;
|
|
56
|
+
onEditTask: (taskId: string) => void;
|
|
57
|
+
onEditColumn: () => void;
|
|
58
|
+
onDeleteColumn: () => void;
|
|
59
|
+
}
|
|
60
|
+
declare function ColumnContentComponent({ column, onAddTask, onEditTask, onEditColumn, onDeleteColumn, }: ColumnContentProps): react_jsx_runtime.JSX.Element;
|
|
61
|
+
declare const ColumnContent: react.MemoExoticComponent<typeof ColumnContentComponent>;
|
|
62
|
+
|
|
63
|
+
interface TaskCardProps {
|
|
64
|
+
task: SerializedTask;
|
|
65
|
+
onClick: () => void;
|
|
66
|
+
}
|
|
67
|
+
declare function TaskCardComponent({ task, onClick }: TaskCardProps): react_jsx_runtime.JSX.Element;
|
|
68
|
+
declare const TaskCard: react.MemoExoticComponent<typeof TaskCardComponent>;
|
|
69
|
+
|
|
70
|
+
interface BoardFormProps {
|
|
71
|
+
board?: SerializedBoard;
|
|
72
|
+
onClose: () => void;
|
|
73
|
+
onSuccess: (boardId: string) => void;
|
|
74
|
+
}
|
|
75
|
+
declare function BoardForm({ board, onClose, onSuccess }: BoardFormProps): react_jsx_runtime.JSX.Element;
|
|
76
|
+
|
|
77
|
+
interface ColumnFormProps {
|
|
78
|
+
boardId: string;
|
|
79
|
+
columnId?: string;
|
|
80
|
+
column?: SerializedColumn;
|
|
81
|
+
onClose: () => void;
|
|
82
|
+
onSuccess: () => void;
|
|
83
|
+
}
|
|
84
|
+
declare function ColumnForm({ boardId, columnId, column, onClose, onSuccess, }: ColumnFormProps): react_jsx_runtime.JSX.Element;
|
|
85
|
+
|
|
86
|
+
interface TaskFormProps {
|
|
87
|
+
columnId: string;
|
|
88
|
+
boardId: string;
|
|
89
|
+
taskId?: string;
|
|
90
|
+
task?: SerializedTask;
|
|
91
|
+
columns: SerializedColumn[];
|
|
92
|
+
onClose: () => void;
|
|
93
|
+
onSuccess: () => void;
|
|
94
|
+
onDelete?: () => void;
|
|
95
|
+
}
|
|
96
|
+
declare function TaskForm({ columnId, boardId, taskId, task, columns, onClose, onSuccess, onDelete, }: TaskFormProps): react_jsx_runtime.JSX.Element;
|
|
97
|
+
|
|
98
|
+
declare function BoardsListSkeleton(): react_jsx_runtime.JSX.Element;
|
|
99
|
+
|
|
100
|
+
declare function BoardSkeleton(): react_jsx_runtime.JSX.Element;
|
|
101
|
+
|
|
102
|
+
export { BoardForm, BoardPageComponent, BoardSkeleton, BoardsListPageComponent, BoardsListSkeleton, ColumnContent, ColumnForm, DefaultError, EmptyState, KanbanBoard, NewBoardPageComponent, NotFoundPage, PageWrapper, TaskCard, TaskForm };
|