@btst/stack 2.5.3 → 2.5.4

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.
Files changed (54) hide show
  1. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.cjs +1 -1
  2. package/dist/packages/stack/src/plugins/ai-chat/api/plugin.mjs +1 -1
  3. package/dist/packages/stack/src/plugins/ui-builder/client/components/page-renderer.cjs +7 -1
  4. package/dist/packages/stack/src/plugins/ui-builder/client/components/page-renderer.mjs +7 -1
  5. package/dist/plugins/blog/api/index.d.cts +2 -2
  6. package/dist/plugins/blog/api/index.d.mts +2 -2
  7. package/dist/plugins/blog/api/index.d.ts +2 -2
  8. package/dist/plugins/blog/client/hooks/index.d.cts +3 -3
  9. package/dist/plugins/blog/client/hooks/index.d.mts +3 -3
  10. package/dist/plugins/blog/client/hooks/index.d.ts +3 -3
  11. package/dist/plugins/blog/client/index.d.cts +1 -1
  12. package/dist/plugins/blog/client/index.d.mts +1 -1
  13. package/dist/plugins/blog/client/index.d.ts +1 -1
  14. package/dist/plugins/blog/query-keys.d.cts +2 -2
  15. package/dist/plugins/blog/query-keys.d.mts +2 -2
  16. package/dist/plugins/blog/query-keys.d.ts +2 -2
  17. package/dist/plugins/kanban/api/index.d.cts +1 -1
  18. package/dist/plugins/kanban/api/index.d.mts +1 -1
  19. package/dist/plugins/kanban/api/index.d.ts +1 -1
  20. package/dist/plugins/kanban/query-keys.d.cts +1 -1
  21. package/dist/plugins/kanban/query-keys.d.mts +1 -1
  22. package/dist/plugins/kanban/query-keys.d.ts +1 -1
  23. package/dist/plugins/ui-builder/client/components/index.d.cts +5 -3
  24. package/dist/plugins/ui-builder/client/components/index.d.mts +5 -3
  25. package/dist/plugins/ui-builder/client/components/index.d.ts +5 -3
  26. package/dist/plugins/ui-builder/client/hooks/index.d.cts +2 -2
  27. package/dist/plugins/ui-builder/client/hooks/index.d.mts +2 -2
  28. package/dist/plugins/ui-builder/client/hooks/index.d.ts +2 -2
  29. package/dist/plugins/ui-builder/client/index.d.cts +2 -2
  30. package/dist/plugins/ui-builder/client/index.d.mts +2 -2
  31. package/dist/plugins/ui-builder/client/index.d.ts +2 -2
  32. package/dist/plugins/ui-builder/index.d.cts +2 -2
  33. package/dist/plugins/ui-builder/index.d.mts +2 -2
  34. package/dist/plugins/ui-builder/index.d.ts +2 -2
  35. package/dist/shared/{stack.Cj_zKww4.d.ts → stack.B2DwzF3r.d.ts} +1 -1
  36. package/dist/shared/{stack.DXnclTG7.d.ts → stack.B8_74ror.d.ts} +4 -4
  37. package/dist/shared/{stack.DaZM10cp.d.cts → stack.C21-LFX8.d.cts} +4 -4
  38. package/dist/shared/{stack.B-YHz18S.d.cts → stack.C5ZSOJGJ.d.cts} +29 -2
  39. package/dist/shared/{stack.cfCkioTe.d.mts → stack.CL4mKxe7.d.mts} +4 -4
  40. package/dist/shared/{stack.B2xZTSiO.d.cts → stack.Cl7ok_cY.d.cts} +1 -1
  41. package/dist/shared/{stack.GygI_T3X.d.ts → stack.D0QupDcQ.d.ts} +29 -2
  42. package/dist/shared/{stack.D1DMlJp-.d.mts → stack.Dq4qVr1F.d.mts} +29 -2
  43. package/dist/shared/{stack.dH7u-TJH.d.mts → stack.VMmQdbsJ.d.mts} +1 -1
  44. package/package.json +1 -1
  45. package/src/plugins/ai-chat/api/plugin.ts +2 -1
  46. package/src/plugins/ui-builder/client/components/page-renderer.tsx +9 -0
  47. package/src/plugins/ui-builder/index.ts +1 -0
  48. package/src/plugins/ui-builder/types.ts +1 -0
  49. package/dist/shared/{stack.DMobugrZ.d.ts → stack.BFcg0tDz.d.ts} +9 -9
  50. package/dist/shared/{stack.BQmuNl5p.d.ts → stack.BWp0hcm9.d.cts} +3 -3
  51. package/dist/shared/{stack.BQmuNl5p.d.cts → stack.BWp0hcm9.d.mts} +3 -3
  52. package/dist/shared/{stack.BQmuNl5p.d.mts → stack.BWp0hcm9.d.ts} +3 -3
  53. package/dist/shared/{stack.Ba_Ks8qi.d.mts → stack.CxNeGV2z.d.mts} +9 -9
  54. package/dist/shared/{stack.CFqqZUes.d.cts → stack.DSxTDZBQ.d.cts} +9 -9
@@ -86,7 +86,7 @@ const aiChatBackendPlugin = (config) => api.defineBackendPlugin({
86
86
  });
87
87
  }
88
88
  const firstMessageContent = getMessageTextContent(firstMessage);
89
- const modelMessages = ai.convertToModelMessages(uiMessages);
89
+ const modelMessages = await ai.convertToModelMessages(uiMessages);
90
90
  const pageContextContent = pageContext && pageContext.trim() ? `
91
91
 
92
92
  Current page context:
@@ -84,7 +84,7 @@ const aiChatBackendPlugin = (config) => defineBackendPlugin({
84
84
  });
85
85
  }
86
86
  const firstMessageContent = getMessageTextContent(firstMessage);
87
- const modelMessages = convertToModelMessages(uiMessages);
87
+ const modelMessages = await convertToModelMessages(uiMessages);
88
88
  const pageContextContent = pageContext && pageContext.trim() ? `
89
89
 
90
90
  Current page context:
@@ -25,6 +25,7 @@ function PageRenderer({
25
25
  slug,
26
26
  componentRegistry = registry.defaultComponentRegistry,
27
27
  variableValues,
28
+ functionRegistry,
28
29
  LoadingComponent = DefaultLoadingComponent,
29
30
  ErrorComponent = DefaultErrorComponent,
30
31
  NotFoundComponent = DefaultNotFoundComponent,
@@ -40,6 +41,7 @@ function PageRenderer({
40
41
  slug,
41
42
  componentRegistry,
42
43
  variableValues,
44
+ functionRegistry,
43
45
  NotFoundComponent,
44
46
  className
45
47
  }
@@ -51,6 +53,7 @@ function SuspensePageRendererContent({
51
53
  slug,
52
54
  componentRegistry = registry.defaultComponentRegistry,
53
55
  variableValues,
56
+ functionRegistry,
54
57
  NotFoundComponent = DefaultNotFoundComponent,
55
58
  className
56
59
  }) {
@@ -69,7 +72,8 @@ function SuspensePageRendererContent({
69
72
  page: rootLayer,
70
73
  componentRegistry,
71
74
  variables,
72
- variableValues
75
+ variableValues,
76
+ functionRegistry
73
77
  }
74
78
  );
75
79
  }
@@ -77,6 +81,7 @@ function SuspensePageRenderer({
77
81
  slug,
78
82
  componentRegistry = registry.defaultComponentRegistry,
79
83
  variableValues,
84
+ functionRegistry,
80
85
  NotFoundComponent = DefaultNotFoundComponent,
81
86
  className
82
87
  }) {
@@ -86,6 +91,7 @@ function SuspensePageRenderer({
86
91
  slug,
87
92
  componentRegistry,
88
93
  variableValues,
94
+ functionRegistry,
89
95
  NotFoundComponent,
90
96
  className
91
97
  }
@@ -23,6 +23,7 @@ function PageRenderer({
23
23
  slug,
24
24
  componentRegistry = defaultComponentRegistry,
25
25
  variableValues,
26
+ functionRegistry,
26
27
  LoadingComponent = DefaultLoadingComponent,
27
28
  ErrorComponent = DefaultErrorComponent,
28
29
  NotFoundComponent = DefaultNotFoundComponent,
@@ -38,6 +39,7 @@ function PageRenderer({
38
39
  slug,
39
40
  componentRegistry,
40
41
  variableValues,
42
+ functionRegistry,
41
43
  NotFoundComponent,
42
44
  className
43
45
  }
@@ -49,6 +51,7 @@ function SuspensePageRendererContent({
49
51
  slug,
50
52
  componentRegistry = defaultComponentRegistry,
51
53
  variableValues,
54
+ functionRegistry,
52
55
  NotFoundComponent = DefaultNotFoundComponent,
53
56
  className
54
57
  }) {
@@ -67,7 +70,8 @@ function SuspensePageRendererContent({
67
70
  page: rootLayer,
68
71
  componentRegistry,
69
72
  variables,
70
- variableValues
73
+ variableValues,
74
+ functionRegistry
71
75
  }
72
76
  );
73
77
  }
@@ -75,6 +79,7 @@ function SuspensePageRenderer({
75
79
  slug,
76
80
  componentRegistry = defaultComponentRegistry,
77
81
  variableValues,
82
+ functionRegistry,
78
83
  NotFoundComponent = DefaultNotFoundComponent,
79
84
  className
80
85
  }) {
@@ -84,6 +89,7 @@ function SuspensePageRenderer({
84
89
  slug,
85
90
  componentRegistry,
86
91
  variableValues,
92
+ functionRegistry,
87
93
  NotFoundComponent,
88
94
  className
89
95
  }
@@ -1,5 +1,5 @@
1
- export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.DaZM10cp.cjs';
2
- import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BQmuNl5p.cjs';
1
+ export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.C21-LFX8.cjs';
2
+ import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BWp0hcm9.cjs';
3
3
  import '@tanstack/react-query';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
- export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.cfCkioTe.mjs';
2
- import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BQmuNl5p.mjs';
1
+ export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.CL4mKxe7.mjs';
2
+ import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BWp0hcm9.mjs';
3
3
  import '@tanstack/react-query';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
- export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.DXnclTG7.js';
2
- import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BQmuNl5p.js';
1
+ export { B as BLOG_QUERY_KEYS, h as BlogApiContext, k as BlogApiRouter, i as BlogBackendHooks, e as BlogRouteKey, N as NextPreviousPostsQuerySchema, P as PostListParams, f as PostListQuerySchema, c as PostListResult, j as blogBackendPlugin, d as createBlogQueryKeys, g as getAllPosts, b as getAllTags, a as getPostBySlug } from '../../../shared/stack.B8_74ror.js';
2
+ import { P as Post, T as Tag, S as SerializedPost, a as SerializedTag } from '../../../shared/stack.BWp0hcm9.js';
3
3
  import '@tanstack/react-query';
4
4
  import '@btst/stack/plugins/client';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BQmuNl5p.cjs';
2
+ import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BWp0hcm9.cjs';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
@@ -135,14 +135,14 @@ declare function useCreatePost(): _tanstack_react_query.UseMutationResult<Serial
135
135
  name: string;
136
136
  slug: string;
137
137
  })[];
138
+ published: boolean;
138
139
  title: string;
139
140
  content: string;
140
141
  excerpt: string;
141
- published: boolean;
142
142
  slug?: string | undefined;
143
+ publishedAt?: Date | undefined;
143
144
  createdAt?: Date | undefined;
144
145
  updatedAt?: Date | undefined;
145
- publishedAt?: Date | undefined;
146
146
  image?: string | undefined;
147
147
  }, unknown>;
148
148
  /** Update an existing post by id */
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BQmuNl5p.mjs';
2
+ import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BWp0hcm9.mjs';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
@@ -135,14 +135,14 @@ declare function useCreatePost(): _tanstack_react_query.UseMutationResult<Serial
135
135
  name: string;
136
136
  slug: string;
137
137
  })[];
138
+ published: boolean;
138
139
  title: string;
139
140
  content: string;
140
141
  excerpt: string;
141
- published: boolean;
142
142
  slug?: string | undefined;
143
+ publishedAt?: Date | undefined;
143
144
  createdAt?: Date | undefined;
144
145
  updatedAt?: Date | undefined;
145
- publishedAt?: Date | undefined;
146
146
  image?: string | undefined;
147
147
  }, unknown>;
148
148
  /** Update an existing post by id */
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BQmuNl5p.js';
2
+ import { S as SerializedPost, c as createPostSchema, u as updatePostSchema, a as SerializedTag } from '../../../../shared/stack.BWp0hcm9.js';
3
3
  import { z } from 'zod';
4
4
 
5
5
  /**
@@ -135,14 +135,14 @@ declare function useCreatePost(): _tanstack_react_query.UseMutationResult<Serial
135
135
  name: string;
136
136
  slug: string;
137
137
  })[];
138
+ published: boolean;
138
139
  title: string;
139
140
  content: string;
140
141
  excerpt: string;
141
- published: boolean;
142
142
  slug?: string | undefined;
143
+ publishedAt?: Date | undefined;
143
144
  createdAt?: Date | undefined;
144
145
  updatedAt?: Date | undefined;
145
- publishedAt?: Date | undefined;
146
146
  image?: string | undefined;
147
147
  }, unknown>;
148
148
  /** Update an existing post by id */
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { P as Post, S as SerializedPost } from '../../../shared/stack.BQmuNl5p.cjs';
6
+ import { P as Post, S as SerializedPost } from '../../../shared/stack.BWp0hcm9.cjs';
7
7
  export { UsePostsOptions, UsePostsResult } from './hooks/index.cjs';
8
8
  import 'zod';
9
9
 
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { P as Post, S as SerializedPost } from '../../../shared/stack.BQmuNl5p.mjs';
6
+ import { P as Post, S as SerializedPost } from '../../../shared/stack.BWp0hcm9.mjs';
7
7
  export { UsePostsOptions, UsePostsResult } from './hooks/index.mjs';
8
8
  import 'zod';
9
9
 
@@ -3,7 +3,7 @@ import * as react from 'react';
3
3
  import { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { P as Post, S as SerializedPost } from '../../../shared/stack.BQmuNl5p.js';
6
+ import { P as Post, S as SerializedPost } from '../../../shared/stack.BWp0hcm9.js';
7
7
  export { UsePostsOptions, UsePostsResult } from './hooks/index.js';
8
8
  import 'zod';
9
9
 
@@ -1,7 +1,7 @@
1
1
  import '@tanstack/react-query';
2
- export { d as createBlogQueryKeys } from '../../shared/stack.DaZM10cp.cjs';
2
+ export { d as createBlogQueryKeys } from '../../shared/stack.C21-LFX8.cjs';
3
3
  import '@btst/stack/plugins/client';
4
- import '../../shared/stack.BQmuNl5p.cjs';
4
+ import '../../shared/stack.BWp0hcm9.cjs';
5
5
  import '@btst/stack/plugins/api';
6
6
  import 'better-call';
7
7
  import '@btst/db';
@@ -1,7 +1,7 @@
1
1
  import '@tanstack/react-query';
2
- export { d as createBlogQueryKeys } from '../../shared/stack.cfCkioTe.mjs';
2
+ export { d as createBlogQueryKeys } from '../../shared/stack.CL4mKxe7.mjs';
3
3
  import '@btst/stack/plugins/client';
4
- import '../../shared/stack.BQmuNl5p.mjs';
4
+ import '../../shared/stack.BWp0hcm9.mjs';
5
5
  import '@btst/stack/plugins/api';
6
6
  import 'better-call';
7
7
  import '@btst/db';
@@ -1,7 +1,7 @@
1
1
  import '@tanstack/react-query';
2
- export { d as createBlogQueryKeys } from '../../shared/stack.DXnclTG7.js';
2
+ export { d as createBlogQueryKeys } from '../../shared/stack.B8_74ror.js';
3
3
  import '@btst/stack/plugins/client';
4
- import '../../shared/stack.BQmuNl5p.js';
4
+ import '../../shared/stack.BWp0hcm9.js';
5
5
  import '@btst/stack/plugins/api';
6
6
  import 'better-call';
7
7
  import '@btst/db';
@@ -1,4 +1,4 @@
1
- export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.CFqqZUes.cjs';
1
+ export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.DSxTDZBQ.cjs';
2
2
  import { B as BoardWithColumns, S as SerializedBoardWithColumns, C as ColumnWithTasks, a as SerializedColumn, T as Task, b as SerializedTask } from '../../../shared/stack.DJaKVY7v.cjs';
3
3
  import '@btst/stack/plugins/api';
4
4
  import 'better-call';
@@ -1,4 +1,4 @@
1
- export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.Ba_Ks8qi.mjs';
1
+ export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.CxNeGV2z.mjs';
2
2
  import { B as BoardWithColumns, S as SerializedBoardWithColumns, C as ColumnWithTasks, a as SerializedColumn, T as Task, b as SerializedTask } from '../../../shared/stack.DJaKVY7v.mjs';
3
3
  import '@btst/stack/plugins/api';
4
4
  import 'better-call';
@@ -1,4 +1,4 @@
1
- export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.DMobugrZ.js';
1
+ export { B as BoardListResult, C as CreateKanbanTaskInput, i as KANBAN_QUERY_KEYS, b as KanbanApiContext, K as KanbanApiRouter, c as KanbanBackendHooks, a as KanbanRouteKey, e as createKanbanTask, f as findOrCreateKanbanBoard, g as getAllBoards, d as getBoardById, h as getKanbanColumnsByBoardId, k as kanbanBackendPlugin } from '../../../shared/stack.BFcg0tDz.js';
2
2
  import { B as BoardWithColumns, S as SerializedBoardWithColumns, C as ColumnWithTasks, a as SerializedColumn, T as Task, b as SerializedTask } from '../../../shared/stack.DJaKVY7v.js';
3
3
  import '@btst/stack/plugins/api';
4
4
  import 'better-call';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.CFqqZUes.cjs';
2
+ import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.DSxTDZBQ.cjs';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
4
  import { S as SerializedBoardWithColumns } from '../../shared/stack.DJaKVY7v.cjs';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.Ba_Ks8qi.mjs';
2
+ import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.CxNeGV2z.mjs';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
4
  import { S as SerializedBoardWithColumns } from '../../shared/stack.DJaKVY7v.mjs';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.DMobugrZ.js';
2
+ import { K as KanbanApiRouter, j as BoardsListDiscriminator } from '../../shared/stack.BFcg0tDz.js';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
4
  import { S as SerializedBoardWithColumns } from '../../shared/stack.DJaKVY7v.js';
5
5
  import '@btst/stack/plugins/api';
@@ -1,5 +1,5 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
- import { a as ComponentRegistry, P as PropValue } from '../../../../shared/stack.B-YHz18S.cjs';
2
+ import { a as ComponentRegistry, P as PropValue, F as FunctionRegistry } from '../../../../shared/stack.C5ZSOJGJ.cjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.8nldKomx.cjs';
@@ -12,6 +12,8 @@ interface PageRendererProps {
12
12
  componentRegistry?: ComponentRegistry;
13
13
  /** Runtime variable values to override defaults */
14
14
  variableValues?: Record<string, PropValue>;
15
+ /** Function registry for resolving function-type variable bindings */
16
+ functionRegistry?: FunctionRegistry;
15
17
  /** Custom loading component */
16
18
  LoadingComponent?: ComponentType;
17
19
  /** Custom error component */
@@ -80,7 +82,7 @@ interface PageRendererProps {
80
82
  * }
81
83
  * ```
82
84
  */
83
- declare function PageRenderer({ slug, componentRegistry, variableValues, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
85
+ declare function PageRenderer({ slug, componentRegistry, variableValues, functionRegistry, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
84
86
  /**
85
87
  * SuspensePageRenderer - Suspense-based PageRenderer for SSR
86
88
  *
@@ -105,7 +107,7 @@ declare function PageRenderer({ slug, componentRegistry, variableValues, Loading
105
107
  * }
106
108
  * ```
107
109
  */
108
- declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
110
+ declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, functionRegistry, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
109
111
 
110
112
  declare function PageListPage(): react_jsx_runtime.JSX.Element;
111
113
 
@@ -1,5 +1,5 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
- import { a as ComponentRegistry, P as PropValue } from '../../../../shared/stack.D1DMlJp-.mjs';
2
+ import { a as ComponentRegistry, P as PropValue, F as FunctionRegistry } from '../../../../shared/stack.Dq4qVr1F.mjs';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.8nldKomx.mjs';
@@ -12,6 +12,8 @@ interface PageRendererProps {
12
12
  componentRegistry?: ComponentRegistry;
13
13
  /** Runtime variable values to override defaults */
14
14
  variableValues?: Record<string, PropValue>;
15
+ /** Function registry for resolving function-type variable bindings */
16
+ functionRegistry?: FunctionRegistry;
15
17
  /** Custom loading component */
16
18
  LoadingComponent?: ComponentType;
17
19
  /** Custom error component */
@@ -80,7 +82,7 @@ interface PageRendererProps {
80
82
  * }
81
83
  * ```
82
84
  */
83
- declare function PageRenderer({ slug, componentRegistry, variableValues, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
85
+ declare function PageRenderer({ slug, componentRegistry, variableValues, functionRegistry, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
84
86
  /**
85
87
  * SuspensePageRenderer - Suspense-based PageRenderer for SSR
86
88
  *
@@ -105,7 +107,7 @@ declare function PageRenderer({ slug, componentRegistry, variableValues, Loading
105
107
  * }
106
108
  * ```
107
109
  */
108
- declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
110
+ declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, functionRegistry, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
109
111
 
110
112
  declare function PageListPage(): react_jsx_runtime.JSX.Element;
111
113
 
@@ -1,5 +1,5 @@
1
1
  import { ComponentType, ReactNode } from 'react';
2
- import { a as ComponentRegistry, P as PropValue } from '../../../../shared/stack.GygI_T3X.js';
2
+ import { a as ComponentRegistry, P as PropValue, F as FunctionRegistry } from '../../../../shared/stack.D0QupDcQ.js';
3
3
  import * as react_jsx_runtime from 'react/jsx-runtime';
4
4
  import 'zod';
5
5
  import '../../../../shared/stack.8nldKomx.js';
@@ -12,6 +12,8 @@ interface PageRendererProps {
12
12
  componentRegistry?: ComponentRegistry;
13
13
  /** Runtime variable values to override defaults */
14
14
  variableValues?: Record<string, PropValue>;
15
+ /** Function registry for resolving function-type variable bindings */
16
+ functionRegistry?: FunctionRegistry;
15
17
  /** Custom loading component */
16
18
  LoadingComponent?: ComponentType;
17
19
  /** Custom error component */
@@ -80,7 +82,7 @@ interface PageRendererProps {
80
82
  * }
81
83
  * ```
82
84
  */
83
- declare function PageRenderer({ slug, componentRegistry, variableValues, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
85
+ declare function PageRenderer({ slug, componentRegistry, variableValues, functionRegistry, LoadingComponent, ErrorComponent, NotFoundComponent, className, }: PageRendererProps): ReactNode;
84
86
  /**
85
87
  * SuspensePageRenderer - Suspense-based PageRenderer for SSR
86
88
  *
@@ -105,7 +107,7 @@ declare function PageRenderer({ slug, componentRegistry, variableValues, Loading
105
107
  * }
106
108
  * ```
107
109
  */
108
- declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
110
+ declare function SuspensePageRenderer({ slug, componentRegistry, variableValues, functionRegistry, NotFoundComponent, className, }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode;
109
111
 
110
112
  declare function PageListPage(): react_jsx_runtime.JSX.Element;
111
113
 
@@ -1,6 +1,6 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.B2xZTSiO.cjs';
3
- import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.B-YHz18S.cjs';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.Cl7ok_cY.cjs';
3
+ import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.C5ZSOJGJ.cjs';
4
4
  import 'zod';
5
5
  import 'react';
6
6
  import '../../../../shared/stack.8nldKomx.cjs';
@@ -1,6 +1,6 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.dH7u-TJH.mjs';
3
- import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.D1DMlJp-.mjs';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.VMmQdbsJ.mjs';
3
+ import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.Dq4qVr1F.mjs';
4
4
  import 'zod';
5
5
  import 'react';
6
6
  import '../../../../shared/stack.8nldKomx.mjs';
@@ -1,6 +1,6 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { S as SerializedUIBuilderPage } from '../../../../shared/stack.Cj_zKww4.js';
3
- import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.GygI_T3X.js';
2
+ import { S as SerializedUIBuilderPage } from '../../../../shared/stack.B2DwzF3r.js';
3
+ import { C as ComponentLayer, V as Variable } from '../../../../shared/stack.D0QupDcQ.js';
4
4
  import 'zod';
5
5
  import 'react';
6
6
  import '../../../../shared/stack.8nldKomx.js';
@@ -3,8 +3,8 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.B2xZTSiO.cjs';
7
- import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.B-YHz18S.cjs';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.Cl7ok_cY.cjs';
7
+ import { a as ComponentRegistry, b as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.C5ZSOJGJ.cjs';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.cjs';
10
10
  export { PageBuilderPage, PageListPage, PageRenderer, PageRendererProps, SuspensePageRenderer } from './components/index.cjs';
@@ -3,8 +3,8 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.dH7u-TJH.mjs';
7
- import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.D1DMlJp-.mjs';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.VMmQdbsJ.mjs';
7
+ import { a as ComponentRegistry, b as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.Dq4qVr1F.mjs';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.mjs';
10
10
  export { PageBuilderPage, PageListPage, PageRenderer, PageRendererProps, SuspensePageRenderer } from './components/index.mjs';
@@ -3,8 +3,8 @@ import * as react from 'react';
3
3
  import react__default, { ComponentType } from 'react';
4
4
  import * as _btst_yar from '@btst/yar';
5
5
  import { QueryClient } from '@tanstack/react-query';
6
- import { c as UIBuilderClientHooks } from '../../../shared/stack.Cj_zKww4.js';
7
- import { a as ComponentRegistry, F as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.GygI_T3X.js';
6
+ import { c as UIBuilderClientHooks } from '../../../shared/stack.B2DwzF3r.js';
7
+ import { a as ComponentRegistry, b as FieldConfigFunction, C as ComponentLayer } from '../../../shared/stack.D0QupDcQ.js';
8
8
  import * as react_jsx_runtime from 'react/jsx-runtime';
9
9
  import { A as AutoFormInputComponentProps, F as FieldConfigItem } from '../../../shared/stack.8nldKomx.js';
10
10
  export { PageBuilderPage, PageListPage, PageRenderer, PageRendererProps, SuspensePageRenderer } from './components/index.js';
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.cjs';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.B2xZTSiO.cjs';
4
- export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.B-YHz18S.cjs';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.Cl7ok_cY.cjs';
4
+ export { C as ComponentLayer, a as ComponentRegistry, F as FunctionRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.C5ZSOJGJ.cjs';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.cjs';
7
7
  import 'react-hook-form';
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.mjs';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.dH7u-TJH.mjs';
4
- export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.D1DMlJp-.mjs';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.VMmQdbsJ.mjs';
4
+ export { C as ComponentLayer, a as ComponentRegistry, F as FunctionRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.Dq4qVr1F.mjs';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.mjs';
7
7
  import 'react-hook-form';
@@ -1,7 +1,7 @@
1
1
  import { z } from 'zod';
2
2
  import { C as ContentTypeConfig } from '../../shared/stack.B8QD11QU.js';
3
- export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.Cj_zKww4.js';
4
- export { C as ComponentLayer, a as ComponentRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.GygI_T3X.js';
3
+ export { L as LoaderContext, b as PaginatedUIBuilderPages, P as ParsedUIBuilderPage, S as SerializedUIBuilderPage, c as UIBuilderClientHooks, a as UIBuilderPage, U as UIBuilderPageData } from '../../shared/stack.B2DwzF3r.js';
4
+ export { C as ComponentLayer, a as ComponentRegistry, F as FunctionRegistry, R as RegistryEntry, V as Variable } from '../../shared/stack.D0QupDcQ.js';
5
5
  import 'react';
6
6
  import '../../shared/stack.8nldKomx.js';
7
7
  import 'react-hook-form';
@@ -1,4 +1,4 @@
1
- import { C as ComponentLayer, V as Variable } from './stack.GygI_T3X.js';
1
+ import { C as ComponentLayer, V as Variable } from './stack.D0QupDcQ.js';
2
2
 
3
3
  /**
4
4
  * UI Builder Page data structure
@@ -1,7 +1,7 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
- import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BQmuNl5p.js';
4
+ import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BWp0hcm9.js';
5
5
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
6
6
  import * as better_call from 'better-call';
7
7
  import { Adapter } from '@btst/db';
@@ -218,15 +218,15 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
218
218
  name: z.ZodString;
219
219
  slug: z.ZodString;
220
220
  }, z.core.$strip>]>>>>;
221
- title: z.ZodString;
222
221
  slug: z.ZodOptional<z.ZodString>;
222
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
223
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
223
224
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
224
225
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
225
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
226
+ title: z.ZodString;
226
227
  content: z.ZodString;
227
228
  excerpt: z.ZodString;
228
229
  image: z.ZodOptional<z.ZodString>;
229
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
230
230
  }, z.core.$strip>;
231
231
  }, Post>;
232
232
  readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
@@ -1,7 +1,7 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
- import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BQmuNl5p.cjs';
4
+ import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BWp0hcm9.cjs';
5
5
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
6
6
  import * as better_call from 'better-call';
7
7
  import { Adapter } from '@btst/db';
@@ -218,15 +218,15 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
218
218
  name: z.ZodString;
219
219
  slug: z.ZodString;
220
220
  }, z.core.$strip>]>>>>;
221
- title: z.ZodString;
222
221
  slug: z.ZodOptional<z.ZodString>;
222
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
223
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
223
224
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
224
225
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
225
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
226
+ title: z.ZodString;
226
227
  content: z.ZodString;
227
228
  excerpt: z.ZodString;
228
229
  image: z.ZodOptional<z.ZodString>;
229
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
230
230
  }, z.core.$strip>;
231
231
  }, Post>;
232
232
  readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
@@ -1,4 +1,4 @@
1
- import { ZodObject, ZodSchema } from 'zod';
1
+ import { ZodObject, ZodSchema, ZodTuple } from 'zod';
2
2
  import { ReactNode, ComponentType } from 'react';
3
3
  import { F as FieldConfigItem } from './stack.8nldKomx.cjs';
4
4
 
@@ -44,5 +44,32 @@ interface RegistryEntry<T extends ComponentType<any>> {
44
44
  }
45
45
  type FieldConfigFunction = (layer: ComponentLayer, allowVariableBinding?: boolean) => FieldConfigItem;
46
46
  type ComponentRegistry = Record<string, RegistryEntry<ComponentType<any>>>;
47
+ /**
48
+ * Function definition for the function registry.
49
+ * Describes a function that can be bound to component event handlers.
50
+ */
51
+ interface FunctionDefinition {
52
+ /** Human-readable name for the function */
53
+ name: string;
54
+ /** Zod schema describing the function parameters (use z.tuple for ordered args, z.object for named params) */
55
+ schema: ZodTuple<any, any> | ZodObject<any> | ZodSchema<any>;
56
+ /** The actual function to call at runtime */
57
+ fn: (...args: any[]) => any;
58
+ /** Optional description shown in the UI */
59
+ description?: string;
60
+ /**
61
+ * Optional TypeScript type signature for code generation.
62
+ * Use this when the Zod schema uses z.custom<T>() or other types
63
+ * that can't be automatically inferred at runtime.
64
+ * @example "(e: React.FormEvent<HTMLFormElement>) => void"
65
+ * @example "(data: { name: string; email: string }) => Promise<void>"
66
+ */
67
+ typeSignature?: string;
68
+ }
69
+ /**
70
+ * Function registry type - a record of function ID to function definition.
71
+ * Used to provide callable functions that can be bound to component event handlers.
72
+ */
73
+ type FunctionRegistry = Record<string, FunctionDefinition>;
47
74
 
48
- export type { ComponentLayer as C, FieldConfigFunction as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a };
75
+ export type { ComponentLayer as C, FunctionRegistry as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a, FieldConfigFunction as b };
@@ -1,7 +1,7 @@
1
1
  import * as _tanstack_react_query from '@tanstack/react-query';
2
2
  import { QueryClient } from '@tanstack/react-query';
3
3
  import { createApiClient } from '@btst/stack/plugins/client';
4
- import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BQmuNl5p.mjs';
4
+ import { P as Post, T as Tag, c as createPostSchema, u as updatePostSchema, S as SerializedPost, a as SerializedTag } from './stack.BWp0hcm9.mjs';
5
5
  import * as _btst_stack_plugins_api from '@btst/stack/plugins/api';
6
6
  import * as better_call from 'better-call';
7
7
  import { Adapter } from '@btst/db';
@@ -218,15 +218,15 @@ declare const blogBackendPlugin: (hooks?: BlogBackendHooks) => _btst_stack_plugi
218
218
  name: z.ZodString;
219
219
  slug: z.ZodString;
220
220
  }, z.core.$strip>]>>>>;
221
- title: z.ZodString;
222
221
  slug: z.ZodOptional<z.ZodString>;
222
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
223
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
223
224
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
224
225
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
225
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
226
+ title: z.ZodString;
226
227
  content: z.ZodString;
227
228
  excerpt: z.ZodString;
228
229
  image: z.ZodOptional<z.ZodString>;
229
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
230
230
  }, z.core.$strip>;
231
231
  }, Post>;
232
232
  readonly updatePost: better_call.StrictEndpoint<"/posts/:id", {
@@ -1,4 +1,4 @@
1
- import { C as ComponentLayer, V as Variable } from './stack.B-YHz18S.cjs';
1
+ import { C as ComponentLayer, V as Variable } from './stack.C5ZSOJGJ.cjs';
2
2
 
3
3
  /**
4
4
  * UI Builder Page data structure
@@ -1,4 +1,4 @@
1
- import { ZodObject, ZodSchema } from 'zod';
1
+ import { ZodObject, ZodSchema, ZodTuple } from 'zod';
2
2
  import { ReactNode, ComponentType } from 'react';
3
3
  import { F as FieldConfigItem } from './stack.8nldKomx.js';
4
4
 
@@ -44,5 +44,32 @@ interface RegistryEntry<T extends ComponentType<any>> {
44
44
  }
45
45
  type FieldConfigFunction = (layer: ComponentLayer, allowVariableBinding?: boolean) => FieldConfigItem;
46
46
  type ComponentRegistry = Record<string, RegistryEntry<ComponentType<any>>>;
47
+ /**
48
+ * Function definition for the function registry.
49
+ * Describes a function that can be bound to component event handlers.
50
+ */
51
+ interface FunctionDefinition {
52
+ /** Human-readable name for the function */
53
+ name: string;
54
+ /** Zod schema describing the function parameters (use z.tuple for ordered args, z.object for named params) */
55
+ schema: ZodTuple<any, any> | ZodObject<any> | ZodSchema<any>;
56
+ /** The actual function to call at runtime */
57
+ fn: (...args: any[]) => any;
58
+ /** Optional description shown in the UI */
59
+ description?: string;
60
+ /**
61
+ * Optional TypeScript type signature for code generation.
62
+ * Use this when the Zod schema uses z.custom<T>() or other types
63
+ * that can't be automatically inferred at runtime.
64
+ * @example "(e: React.FormEvent<HTMLFormElement>) => void"
65
+ * @example "(data: { name: string; email: string }) => Promise<void>"
66
+ */
67
+ typeSignature?: string;
68
+ }
69
+ /**
70
+ * Function registry type - a record of function ID to function definition.
71
+ * Used to provide callable functions that can be bound to component event handlers.
72
+ */
73
+ type FunctionRegistry = Record<string, FunctionDefinition>;
47
74
 
48
- export type { ComponentLayer as C, FieldConfigFunction as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a };
75
+ export type { ComponentLayer as C, FunctionRegistry as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a, FieldConfigFunction as b };
@@ -1,4 +1,4 @@
1
- import { ZodObject, ZodSchema } from 'zod';
1
+ import { ZodObject, ZodSchema, ZodTuple } from 'zod';
2
2
  import { ReactNode, ComponentType } from 'react';
3
3
  import { F as FieldConfigItem } from './stack.8nldKomx.mjs';
4
4
 
@@ -44,5 +44,32 @@ interface RegistryEntry<T extends ComponentType<any>> {
44
44
  }
45
45
  type FieldConfigFunction = (layer: ComponentLayer, allowVariableBinding?: boolean) => FieldConfigItem;
46
46
  type ComponentRegistry = Record<string, RegistryEntry<ComponentType<any>>>;
47
+ /**
48
+ * Function definition for the function registry.
49
+ * Describes a function that can be bound to component event handlers.
50
+ */
51
+ interface FunctionDefinition {
52
+ /** Human-readable name for the function */
53
+ name: string;
54
+ /** Zod schema describing the function parameters (use z.tuple for ordered args, z.object for named params) */
55
+ schema: ZodTuple<any, any> | ZodObject<any> | ZodSchema<any>;
56
+ /** The actual function to call at runtime */
57
+ fn: (...args: any[]) => any;
58
+ /** Optional description shown in the UI */
59
+ description?: string;
60
+ /**
61
+ * Optional TypeScript type signature for code generation.
62
+ * Use this when the Zod schema uses z.custom<T>() or other types
63
+ * that can't be automatically inferred at runtime.
64
+ * @example "(e: React.FormEvent<HTMLFormElement>) => void"
65
+ * @example "(data: { name: string; email: string }) => Promise<void>"
66
+ */
67
+ typeSignature?: string;
68
+ }
69
+ /**
70
+ * Function registry type - a record of function ID to function definition.
71
+ * Used to provide callable functions that can be bound to component event handlers.
72
+ */
73
+ type FunctionRegistry = Record<string, FunctionDefinition>;
47
74
 
48
- export type { ComponentLayer as C, FieldConfigFunction as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a };
75
+ export type { ComponentLayer as C, FunctionRegistry as F, PropValue as P, RegistryEntry as R, Variable as V, ComponentRegistry as a, FieldConfigFunction as b };
@@ -1,4 +1,4 @@
1
- import { C as ComponentLayer, V as Variable } from './stack.D1DMlJp-.mjs';
1
+ import { C as ComponentLayer, V as Variable } from './stack.Dq4qVr1F.mjs';
2
2
 
3
3
  /**
4
4
  * UI Builder Page data structure
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@btst/stack",
3
- "version": "2.5.3",
3
+ "version": "2.5.4",
4
4
  "description": "A composable, plugin-based library for building full-stack applications.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -467,7 +467,8 @@ export const aiChatBackendPlugin = <
467
467
  const firstMessageContent = getMessageTextContent(firstMessage);
468
468
 
469
469
  // Convert UIMessages to CoreMessages for streamText
470
- const modelMessages = convertToModelMessages(uiMessages);
470
+ // In AI SDK v6 this became async — await is a no-op for v5's sync return
471
+ const modelMessages = await convertToModelMessages(uiMessages);
471
472
 
472
473
  // Build system prompt: base config + optional page context
473
474
  const pageContextContent =
@@ -6,6 +6,7 @@ import { ErrorBoundary } from "react-error-boundary";
6
6
  import LayerRenderer from "@workspace/ui/components/ui-builder/layer-renderer";
7
7
  import type {
8
8
  ComponentRegistry,
9
+ FunctionRegistry,
9
10
  PropValue,
10
11
  } from "@workspace/ui/components/ui-builder/types";
11
12
  import { useSuspenseUIBuilderPageBySlug } from "../hooks/ui-builder-hooks";
@@ -59,6 +60,8 @@ export interface PageRendererProps {
59
60
  componentRegistry?: ComponentRegistry;
60
61
  /** Runtime variable values to override defaults */
61
62
  variableValues?: Record<string, PropValue>;
63
+ /** Function registry for resolving function-type variable bindings */
64
+ functionRegistry?: FunctionRegistry;
62
65
  /** Custom loading component */
63
66
  LoadingComponent?: ComponentType;
64
67
  /** Custom error component */
@@ -130,6 +133,7 @@ export function PageRenderer({
130
133
  slug,
131
134
  componentRegistry = defaultComponentRegistry,
132
135
  variableValues,
136
+ functionRegistry,
133
137
  LoadingComponent = DefaultLoadingComponent,
134
138
  ErrorComponent = DefaultErrorComponent,
135
139
  NotFoundComponent = DefaultNotFoundComponent,
@@ -144,6 +148,7 @@ export function PageRenderer({
144
148
  slug={slug}
145
149
  componentRegistry={componentRegistry}
146
150
  variableValues={variableValues}
151
+ functionRegistry={functionRegistry}
147
152
  NotFoundComponent={NotFoundComponent}
148
153
  className={className}
149
154
  />
@@ -160,6 +165,7 @@ function SuspensePageRendererContent({
160
165
  slug,
161
166
  componentRegistry = defaultComponentRegistry,
162
167
  variableValues,
168
+ functionRegistry,
163
169
  NotFoundComponent = DefaultNotFoundComponent,
164
170
  className,
165
171
  }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">) {
@@ -183,6 +189,7 @@ function SuspensePageRendererContent({
183
189
  componentRegistry={componentRegistry}
184
190
  variables={variables}
185
191
  variableValues={variableValues}
192
+ functionRegistry={functionRegistry}
186
193
  />
187
194
  );
188
195
  }
@@ -215,6 +222,7 @@ export function SuspensePageRenderer({
215
222
  slug,
216
223
  componentRegistry = defaultComponentRegistry,
217
224
  variableValues,
225
+ functionRegistry,
218
226
  NotFoundComponent = DefaultNotFoundComponent,
219
227
  className,
220
228
  }: Omit<PageRendererProps, "LoadingComponent" | "ErrorComponent">): ReactNode {
@@ -223,6 +231,7 @@ export function SuspensePageRenderer({
223
231
  slug={slug}
224
232
  componentRegistry={componentRegistry}
225
233
  variableValues={variableValues}
234
+ functionRegistry={functionRegistry}
226
235
  NotFoundComponent={NotFoundComponent}
227
236
  className={className}
228
237
  />
@@ -38,4 +38,5 @@ export type {
38
38
  Variable,
39
39
  ComponentRegistry,
40
40
  RegistryEntry,
41
+ FunctionRegistry,
41
42
  } from "./types";
@@ -134,4 +134,5 @@ export type {
134
134
  Variable,
135
135
  ComponentRegistry,
136
136
  RegistryEntry,
137
+ FunctionRegistry,
137
138
  } from "@workspace/ui/components/ui-builder/types";
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -324,11 +324,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
324
324
  body: z.ZodObject<{
325
325
  description: z.ZodOptional<z.ZodString>;
326
326
  name: z.ZodString;
327
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
328
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
329
327
  slug: z.ZodOptional<z.ZodString>;
330
328
  ownerId: z.ZodOptional<z.ZodString>;
331
329
  organizationId: z.ZodOptional<z.ZodString>;
330
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
331
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
332
332
  }, z.core.$strip>;
333
333
  }, {
334
334
  columns: ColumnWithTasks[];
@@ -346,11 +346,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
346
346
  body: z.ZodObject<{
347
347
  description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
348
348
  name: z.ZodOptional<z.ZodString>;
349
- createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
350
- updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
351
349
  slug: z.ZodOptional<z.ZodString>;
352
350
  ownerId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
353
351
  organizationId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
352
+ createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
353
+ updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
354
354
  }, z.core.$strip>;
355
355
  }, Board>;
356
356
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {
@@ -362,9 +362,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
362
362
  method: "POST";
363
363
  body: z.ZodObject<{
364
364
  title: z.ZodString;
365
+ boardId: z.ZodString;
365
366
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
366
367
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
367
- boardId: z.ZodString;
368
368
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
369
369
  }, z.core.$strip>;
370
370
  }, Column>;
@@ -372,9 +372,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
372
372
  method: "PUT";
373
373
  body: z.ZodObject<{
374
374
  title: z.ZodOptional<z.ZodString>;
375
+ boardId: z.ZodOptional<z.ZodString>;
375
376
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
376
377
  updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
377
- boardId: z.ZodOptional<z.ZodString>;
378
378
  order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
379
379
  }, z.core.$strip>;
380
380
  }, Column>;
@@ -42,15 +42,15 @@ declare const createPostSchema: z.ZodObject<{
42
42
  name: z.ZodString;
43
43
  slug: z.ZodString;
44
44
  }, z.core.$strip>]>>>>;
45
- title: z.ZodString;
46
45
  slug: z.ZodOptional<z.ZodString>;
46
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
47
48
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
48
49
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
49
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
50
+ title: z.ZodString;
50
51
  content: z.ZodString;
51
52
  excerpt: z.ZodString;
52
53
  image: z.ZodOptional<z.ZodString>;
53
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
54
  }, z.core.$strip>;
55
55
  declare const updatePostSchema: z.ZodObject<{
56
56
  publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
@@ -42,15 +42,15 @@ declare const createPostSchema: z.ZodObject<{
42
42
  name: z.ZodString;
43
43
  slug: z.ZodString;
44
44
  }, z.core.$strip>]>>>>;
45
- title: z.ZodString;
46
45
  slug: z.ZodOptional<z.ZodString>;
46
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
47
48
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
48
49
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
49
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
50
+ title: z.ZodString;
50
51
  content: z.ZodString;
51
52
  excerpt: z.ZodString;
52
53
  image: z.ZodOptional<z.ZodString>;
53
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
54
  }, z.core.$strip>;
55
55
  declare const updatePostSchema: z.ZodObject<{
56
56
  publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
@@ -42,15 +42,15 @@ declare const createPostSchema: z.ZodObject<{
42
42
  name: z.ZodString;
43
43
  slug: z.ZodString;
44
44
  }, z.core.$strip>]>>>>;
45
- title: z.ZodString;
46
45
  slug: z.ZodOptional<z.ZodString>;
46
+ published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
47
+ publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
47
48
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
48
49
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
49
- publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
50
+ title: z.ZodString;
50
51
  content: z.ZodString;
51
52
  excerpt: z.ZodString;
52
53
  image: z.ZodOptional<z.ZodString>;
53
- published: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
54
54
  }, z.core.$strip>;
55
55
  declare const updatePostSchema: z.ZodObject<{
56
56
  publishedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -324,11 +324,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
324
324
  body: z.ZodObject<{
325
325
  description: z.ZodOptional<z.ZodString>;
326
326
  name: z.ZodString;
327
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
328
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
329
327
  slug: z.ZodOptional<z.ZodString>;
330
328
  ownerId: z.ZodOptional<z.ZodString>;
331
329
  organizationId: z.ZodOptional<z.ZodString>;
330
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
331
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
332
332
  }, z.core.$strip>;
333
333
  }, {
334
334
  columns: ColumnWithTasks[];
@@ -346,11 +346,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
346
346
  body: z.ZodObject<{
347
347
  description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
348
348
  name: z.ZodOptional<z.ZodString>;
349
- createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
350
- updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
351
349
  slug: z.ZodOptional<z.ZodString>;
352
350
  ownerId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
353
351
  organizationId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
352
+ createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
353
+ updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
354
354
  }, z.core.$strip>;
355
355
  }, Board>;
356
356
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {
@@ -362,9 +362,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
362
362
  method: "POST";
363
363
  body: z.ZodObject<{
364
364
  title: z.ZodString;
365
+ boardId: z.ZodString;
365
366
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
366
367
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
367
- boardId: z.ZodString;
368
368
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
369
369
  }, z.core.$strip>;
370
370
  }, Column>;
@@ -372,9 +372,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
372
372
  method: "PUT";
373
373
  body: z.ZodObject<{
374
374
  title: z.ZodOptional<z.ZodString>;
375
+ boardId: z.ZodOptional<z.ZodString>;
375
376
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
376
377
  updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
377
- boardId: z.ZodOptional<z.ZodString>;
378
378
  order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
379
379
  }, z.core.$strip>;
380
380
  }, Column>;
@@ -8,11 +8,11 @@ import { QueryClient } from '@tanstack/react-query';
8
8
  declare const createBoardSchema: z.ZodObject<{
9
9
  description: z.ZodOptional<z.ZodString>;
10
10
  name: z.ZodString;
11
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
12
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
13
11
  slug: z.ZodOptional<z.ZodString>;
14
12
  ownerId: z.ZodOptional<z.ZodString>;
15
13
  organizationId: z.ZodOptional<z.ZodString>;
14
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
15
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
16
16
  }, z.core.$strip>;
17
17
  declare const updateBoardSchema: z.ZodObject<{
18
18
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
@@ -26,9 +26,9 @@ declare const updateBoardSchema: z.ZodObject<{
26
26
  }, z.core.$strip>;
27
27
  declare const createColumnSchema: z.ZodObject<{
28
28
  title: z.ZodString;
29
+ boardId: z.ZodString;
29
30
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
30
31
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
31
- boardId: z.ZodString;
32
32
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
33
33
  }, z.core.$strip>;
34
34
  declare const updateColumnSchema: z.ZodObject<{
@@ -324,11 +324,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
324
324
  body: z.ZodObject<{
325
325
  description: z.ZodOptional<z.ZodString>;
326
326
  name: z.ZodString;
327
- createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
328
- updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
329
327
  slug: z.ZodOptional<z.ZodString>;
330
328
  ownerId: z.ZodOptional<z.ZodString>;
331
329
  organizationId: z.ZodOptional<z.ZodString>;
330
+ createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
331
+ updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
332
332
  }, z.core.$strip>;
333
333
  }, {
334
334
  columns: ColumnWithTasks[];
@@ -346,11 +346,11 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
346
346
  body: z.ZodObject<{
347
347
  description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
348
348
  name: z.ZodOptional<z.ZodString>;
349
- createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
350
- updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
351
349
  slug: z.ZodOptional<z.ZodString>;
352
350
  ownerId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
353
351
  organizationId: z.ZodOptional<z.ZodOptional<z.ZodString>>;
352
+ createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
353
+ updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
354
354
  }, z.core.$strip>;
355
355
  }, Board>;
356
356
  readonly deleteBoard: better_call.StrictEndpoint<"/boards/:id", {
@@ -362,9 +362,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
362
362
  method: "POST";
363
363
  body: z.ZodObject<{
364
364
  title: z.ZodString;
365
+ boardId: z.ZodString;
365
366
  createdAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
366
367
  updatedAt: z.ZodOptional<z.ZodCoercedDate<unknown>>;
367
- boardId: z.ZodString;
368
368
  order: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
369
369
  }, z.core.$strip>;
370
370
  }, Column>;
@@ -372,9 +372,9 @@ declare const kanbanBackendPlugin: (hooks?: KanbanBackendHooks) => _btst_stack_p
372
372
  method: "PUT";
373
373
  body: z.ZodObject<{
374
374
  title: z.ZodOptional<z.ZodString>;
375
+ boardId: z.ZodOptional<z.ZodString>;
375
376
  createdAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
376
377
  updatedAt: z.ZodOptional<z.ZodOptional<z.ZodCoercedDate<unknown>>>;
377
- boardId: z.ZodOptional<z.ZodString>;
378
378
  order: z.ZodOptional<z.ZodDefault<z.ZodOptional<z.ZodNumber>>>;
379
379
  }, z.core.$strip>;
380
380
  }, Column>;