camox 0.31.5 → 0.33.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.
Files changed (70) hide show
  1. package/dist/core/components/lexical/InlineLexicalEditor.js +79 -11
  2. package/dist/core/components/lexical/SelectionBroadcaster.js +106 -20
  3. package/dist/core/components/lexical/SidebarLexicalEditor.js +442 -8
  4. package/dist/core/components/lexical/TextLinkPopover.js +327 -0
  5. package/dist/core/components/lexical/editorConfig.js +11 -5
  6. package/dist/core/createApp.d.ts +9 -0
  7. package/dist/core/createBlock.d.ts +7 -2
  8. package/dist/core/createBlock.js +101 -110
  9. package/dist/core/hooks/useIsEditable.js +6 -10
  10. package/dist/core/lib/fieldTypes.js +10 -219
  11. package/dist/core/lib/lexicalReact.d.ts +26 -0
  12. package/dist/core/lib/lexicalReact.js +50 -15
  13. package/dist/core/lib/lexicalState.js +34 -0
  14. package/dist/core/lib/textLinks.js +28 -0
  15. package/dist/features/agent-chat/components/AgentChatSidebar.js +172 -0
  16. package/dist/features/agent-chat/components/AgentChatThread.js +9 -9
  17. package/dist/features/preview/CamoxPreview.js +137 -729
  18. package/dist/features/preview/components/{AddBlockSheet.js → AddBlockSidebar.js} +121 -131
  19. package/dist/features/preview/components/AssetFieldEditor.js +107 -82
  20. package/dist/features/preview/components/AssetLightbox.js +4 -4
  21. package/dist/features/preview/components/AssetPickerModal.js +277 -0
  22. package/dist/features/preview/components/BlockActionsPopover.js +18 -24
  23. package/dist/features/preview/components/CreatePageModal.js +6 -6
  24. package/dist/features/preview/components/FieldToolbar.js +118 -111
  25. package/dist/features/preview/components/ItemFieldsEditor.js +98 -125
  26. package/dist/features/preview/components/LeftSidebar.js +64 -0
  27. package/dist/features/preview/components/LinkFieldEditor.js +1 -1
  28. package/dist/features/preview/components/MultipleAssetFieldEditor.js +94 -56
  29. package/dist/features/preview/components/OverlayTracker.js +15 -15
  30. package/dist/features/preview/components/Overlays.js +12 -12
  31. package/dist/features/preview/components/PageEditorSidebar.js +563 -0
  32. package/dist/features/preview/components/PageInfoSidebar.js +1453 -0
  33. package/dist/features/preview/components/PageNavigatorSidebar.js +590 -0
  34. package/dist/features/preview/components/PagePicker.js +3 -3
  35. package/dist/features/preview/components/PageStatusBadge.js +1 -1
  36. package/dist/features/preview/components/PageTree.js +204 -564
  37. package/dist/features/preview/components/PreviewPanel.js +123 -158
  38. package/dist/features/preview/components/PreviewToolbar.js +260 -256
  39. package/dist/features/preview/components/PublishDialog.js +2 -2
  40. package/dist/features/preview/components/RepeatableItemsList.js +2 -2
  41. package/dist/features/preview/components/RightSidebar.js +109 -0
  42. package/dist/features/preview/components/UnlinkAssetButton.js +2 -2
  43. package/dist/features/preview/components/useRepeatableItemActions.js +3 -138
  44. package/dist/features/preview/components/useUpdateBlockPosition.js +1 -1
  45. package/dist/features/preview/previewQueryFns.js +23 -0
  46. package/dist/features/preview/previewStore.js +46 -63
  47. package/dist/features/provider/CamoxProvider.js +255 -70
  48. package/dist/features/provider/useAdminShortcuts.js +5 -48
  49. package/dist/features/routes/pageRoute.js +1 -1
  50. package/dist/features/studio/CamoxStudio.js +6 -5
  51. package/dist/features/studio/components/EnvironmentMenu.js +2 -2
  52. package/dist/features/studio/components/Navbar.js +53 -71
  53. package/dist/features/studio/components/ProjectMenu.js +1 -1
  54. package/dist/features/studio/components/UserButton.js +1 -1
  55. package/dist/features/studio/routes.js +7 -0
  56. package/dist/features/studio/useTheme.js +67 -33
  57. package/dist/features/vite/routeGeneration.js +68 -66
  58. package/dist/features/vite/vite.js +2 -0
  59. package/dist/hooks/use-file-upload.js +1 -1
  60. package/dist/lib/auth.js +23 -22
  61. package/dist/lib/utils.js +1 -1
  62. package/dist/studio-overlays.css +1 -1
  63. package/dist/studio.css +1 -1
  64. package/package.json +5 -4
  65. package/skills/camox-block/SKILL.md +23 -1
  66. package/dist/features/agent-chat/components/AgentChatSheet.js +0 -207
  67. package/dist/features/preview/components/AssetPickerGrid.js +0 -236
  68. package/dist/features/preview/components/PageContentSheet.js +0 -608
  69. package/dist/features/preview/components/PageMetadataModal.js +0 -908
  70. package/dist/features/preview/components/PreviewSideSheet.js +0 -76
@@ -0,0 +1,327 @@
1
+ import { useProjectSlug } from "../../../lib/auth.js";
2
+ import { pageQueries, projectQueries } from "../../../lib/queries.js";
3
+ import { createPageTextLinkTarget, getPageIdFromTextLinkTarget } from "../../lib/textLinks.js";
4
+ import { c } from "react/compiler-runtime";
5
+ import { Input } from "@camox/ui/input";
6
+ import { Label } from "@camox/ui/label";
7
+ import { Popover, PopoverContent, PopoverTrigger } from "@camox/ui/popover";
8
+ import { useQuery } from "@tanstack/react-query";
9
+ import * as React from "react";
10
+ import { jsx, jsxs } from "react/jsx-runtime";
11
+ import { Button } from "@camox/ui/button";
12
+ import { Link2 } from "lucide-react";
13
+ import { Tabs, TabsList, TabsTrigger } from "@camox/ui/tabs";
14
+
15
+ //#region src/core/components/lexical/TextLinkPopover.tsx
16
+ function TextLinkPopover(t0) {
17
+ const $ = c(67);
18
+ if ($[0] !== "7c8db8e526690648d7ded9c61109093d7db1e840e5fd768c697120d428d94f0f") {
19
+ for (let $i = 0; $i < 67; $i += 1) $[$i] = Symbol.for("react.memo_cache_sentinel");
20
+ $[0] = "7c8db8e526690648d7ded9c61109093d7db1e840e5fd768c697120d428d94f0f";
21
+ }
22
+ const { open, onOpenChange, trigger, text, target, onSave, onUnlink } = t0;
23
+ const [textValue, setTextValue] = React.useState(text);
24
+ const [mode, setMode] = React.useState("page");
25
+ const [pageValue, setPageValue] = React.useState("");
26
+ const [urlValue, setUrlValue] = React.useState("");
27
+ const projectSlug = useProjectSlug();
28
+ let t1;
29
+ if ($[1] !== projectSlug) {
30
+ t1 = projectQueries.getBySlug(projectSlug);
31
+ $[1] = projectSlug;
32
+ $[2] = t1;
33
+ } else t1 = $[2];
34
+ const { data: project } = useQuery(t1);
35
+ let t2;
36
+ if ($[3] !== project?.id) {
37
+ t2 = pageQueries.list(project?.id ?? 0);
38
+ $[3] = project?.id;
39
+ $[4] = t2;
40
+ } else t2 = $[4];
41
+ const t3 = !!project;
42
+ let t4;
43
+ if ($[5] !== t2 || $[6] !== t3) {
44
+ t4 = {
45
+ ...t2,
46
+ enabled: t3
47
+ };
48
+ $[5] = t2;
49
+ $[6] = t3;
50
+ $[7] = t4;
51
+ } else t4 = $[7];
52
+ const { data: pages } = useQuery(t4);
53
+ let t5;
54
+ if ($[8] !== target || $[9] !== text) {
55
+ t5 = () => {
56
+ setTextValue(text);
57
+ const pageId = target ? getPageIdFromTextLinkTarget(target) : null;
58
+ if (pageId != null) {
59
+ setMode("page");
60
+ setPageValue(pageId);
61
+ setUrlValue("");
62
+ return;
63
+ }
64
+ setMode("external");
65
+ setUrlValue(target ?? "");
66
+ setPageValue("");
67
+ };
68
+ $[8] = target;
69
+ $[9] = text;
70
+ $[10] = t5;
71
+ } else t5 = $[10];
72
+ const prepare = t5;
73
+ let t6;
74
+ let t7;
75
+ if ($[11] !== open || $[12] !== prepare) {
76
+ t6 = () => {
77
+ if (!open) return;
78
+ prepare();
79
+ };
80
+ t7 = [open, prepare];
81
+ $[11] = open;
82
+ $[12] = prepare;
83
+ $[13] = t6;
84
+ $[14] = t7;
85
+ } else {
86
+ t6 = $[13];
87
+ t7 = $[14];
88
+ }
89
+ React.useEffect(t6, t7);
90
+ let t8;
91
+ if ($[15] !== onOpenChange || $[16] !== prepare) {
92
+ t8 = (nextOpen) => {
93
+ onOpenChange(nextOpen);
94
+ if (nextOpen) prepare();
95
+ };
96
+ $[15] = onOpenChange;
97
+ $[16] = prepare;
98
+ $[17] = t8;
99
+ } else t8 = $[17];
100
+ const handleOpenChange = t8;
101
+ let t9;
102
+ if ($[18] !== mode || $[19] !== onSave || $[20] !== pageValue || $[21] !== textValue || $[22] !== urlValue) {
103
+ t9 = (event) => {
104
+ event.preventDefault();
105
+ const nextText = textValue.trim();
106
+ if (!nextText) return;
107
+ if (mode === "page") {
108
+ if (!pageValue) return;
109
+ onSave(createPageTextLinkTarget(pageValue), nextText);
110
+ return;
111
+ }
112
+ const nextTarget = urlValue.trim();
113
+ if (!/^https?:\/\//i.test(nextTarget)) return;
114
+ onSave(nextTarget, nextText);
115
+ };
116
+ $[18] = mode;
117
+ $[19] = onSave;
118
+ $[20] = pageValue;
119
+ $[21] = textValue;
120
+ $[22] = urlValue;
121
+ $[23] = t9;
122
+ } else t9 = $[23];
123
+ const handleSubmit = t9;
124
+ let t10;
125
+ if ($[24] === Symbol.for("react.memo_cache_sentinel")) {
126
+ t10 = /* @__PURE__ */ jsx(Link2, {});
127
+ $[24] = t10;
128
+ } else t10 = $[24];
129
+ let t11;
130
+ if ($[25] !== trigger) {
131
+ t11 = /* @__PURE__ */ jsx(PopoverTrigger, {
132
+ render: trigger,
133
+ children: t10
134
+ });
135
+ $[25] = trigger;
136
+ $[26] = t11;
137
+ } else t11 = $[26];
138
+ let t12;
139
+ if ($[27] === Symbol.for("react.memo_cache_sentinel")) {
140
+ t12 = /* @__PURE__ */ jsx(Label, {
141
+ htmlFor: "text-link-text",
142
+ children: "Text"
143
+ });
144
+ $[27] = t12;
145
+ } else t12 = $[27];
146
+ let t13;
147
+ if ($[28] === Symbol.for("react.memo_cache_sentinel")) {
148
+ t13 = (event_0) => setTextValue(event_0.target.value);
149
+ $[28] = t13;
150
+ } else t13 = $[28];
151
+ let t14;
152
+ if ($[29] !== textValue) {
153
+ t14 = /* @__PURE__ */ jsxs("div", {
154
+ className: "grid gap-1.5",
155
+ children: [t12, /* @__PURE__ */ jsx(Input, {
156
+ id: "text-link-text",
157
+ value: textValue,
158
+ onChange: t13,
159
+ autoFocus: true
160
+ })]
161
+ });
162
+ $[29] = textValue;
163
+ $[30] = t14;
164
+ } else t14 = $[30];
165
+ let t15;
166
+ if ($[31] === Symbol.for("react.memo_cache_sentinel")) {
167
+ t15 = /* @__PURE__ */ jsx(Label, { children: "Destination" });
168
+ $[31] = t15;
169
+ } else t15 = $[31];
170
+ let t16;
171
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
172
+ t16 = (nextMode) => setMode(nextMode);
173
+ $[32] = t16;
174
+ } else t16 = $[32];
175
+ let t17;
176
+ if ($[33] === Symbol.for("react.memo_cache_sentinel")) {
177
+ t17 = /* @__PURE__ */ jsxs(TabsList, {
178
+ className: "w-full",
179
+ children: [/* @__PURE__ */ jsx(TabsTrigger, {
180
+ value: "page",
181
+ children: "Page"
182
+ }), /* @__PURE__ */ jsx(TabsTrigger, {
183
+ value: "external",
184
+ children: "URL"
185
+ })]
186
+ });
187
+ $[33] = t17;
188
+ } else t17 = $[33];
189
+ let t18;
190
+ if ($[34] !== mode) {
191
+ t18 = /* @__PURE__ */ jsx(Tabs, {
192
+ value: mode,
193
+ onValueChange: t16,
194
+ children: t17
195
+ });
196
+ $[34] = mode;
197
+ $[35] = t18;
198
+ } else t18 = $[35];
199
+ let t19;
200
+ if ($[36] !== mode || $[37] !== pageValue || $[38] !== pages || $[39] !== urlValue) {
201
+ t19 = mode === "page" ? /* @__PURE__ */ jsxs("select", {
202
+ className: "border-input bg-background text-foreground h-9 rounded-md border px-2 text-sm",
203
+ value: pageValue,
204
+ onChange: (event_1) => setPageValue(event_1.target.value),
205
+ children: [/* @__PURE__ */ jsx("option", {
206
+ value: "",
207
+ children: pages && pages.length > 0 ? "Select a page" : "No pages found"
208
+ }), pages?.map(_temp)]
209
+ }) : /* @__PURE__ */ jsx(Input, {
210
+ type: "url",
211
+ placeholder: "https://",
212
+ value: urlValue,
213
+ onChange: (event_2) => setUrlValue(event_2.target.value)
214
+ });
215
+ $[36] = mode;
216
+ $[37] = pageValue;
217
+ $[38] = pages;
218
+ $[39] = urlValue;
219
+ $[40] = t19;
220
+ } else t19 = $[40];
221
+ let t20;
222
+ if ($[41] !== t18 || $[42] !== t19) {
223
+ t20 = /* @__PURE__ */ jsxs("div", {
224
+ className: "grid gap-1.5",
225
+ children: [
226
+ t15,
227
+ t18,
228
+ t19
229
+ ]
230
+ });
231
+ $[41] = t18;
232
+ $[42] = t19;
233
+ $[43] = t20;
234
+ } else t20 = $[43];
235
+ let t21;
236
+ if ($[44] !== mode || $[45] !== pageValue || $[46] !== textValue || $[47] !== urlValue) {
237
+ t21 = !textValue.trim() || (mode === "page" ? !pageValue : !/^https?:\/\//i.test(urlValue.trim()));
238
+ $[44] = mode;
239
+ $[45] = pageValue;
240
+ $[46] = textValue;
241
+ $[47] = urlValue;
242
+ $[48] = t21;
243
+ } else t21 = $[48];
244
+ let t22;
245
+ if ($[49] !== t21) {
246
+ t22 = /* @__PURE__ */ jsx(Button, {
247
+ type: "submit",
248
+ size: "sm",
249
+ disabled: t21,
250
+ children: "Save"
251
+ });
252
+ $[49] = t21;
253
+ $[50] = t22;
254
+ } else t22 = $[50];
255
+ let t23;
256
+ if ($[51] !== onUnlink || $[52] !== target) {
257
+ t23 = target && /* @__PURE__ */ jsx(Button, {
258
+ type: "button",
259
+ variant: "outline",
260
+ size: "sm",
261
+ onClick: onUnlink,
262
+ children: "Unlink"
263
+ });
264
+ $[51] = onUnlink;
265
+ $[52] = target;
266
+ $[53] = t23;
267
+ } else t23 = $[53];
268
+ let t24;
269
+ if ($[54] !== t22 || $[55] !== t23) {
270
+ t24 = /* @__PURE__ */ jsxs("div", {
271
+ className: "grid gap-2",
272
+ children: [t22, t23]
273
+ });
274
+ $[54] = t22;
275
+ $[55] = t23;
276
+ $[56] = t24;
277
+ } else t24 = $[56];
278
+ let t25;
279
+ if ($[57] !== handleSubmit || $[58] !== t14 || $[59] !== t20 || $[60] !== t24) {
280
+ t25 = /* @__PURE__ */ jsx(PopoverContent, {
281
+ align: "center",
282
+ className: "w-72 p-3",
283
+ children: /* @__PURE__ */ jsxs("form", {
284
+ className: "grid gap-3",
285
+ onSubmit: handleSubmit,
286
+ children: [
287
+ t14,
288
+ t20,
289
+ t24
290
+ ]
291
+ })
292
+ });
293
+ $[57] = handleSubmit;
294
+ $[58] = t14;
295
+ $[59] = t20;
296
+ $[60] = t24;
297
+ $[61] = t25;
298
+ } else t25 = $[61];
299
+ let t26;
300
+ if ($[62] !== handleOpenChange || $[63] !== open || $[64] !== t11 || $[65] !== t25) {
301
+ t26 = /* @__PURE__ */ jsxs(Popover, {
302
+ open,
303
+ onOpenChange: handleOpenChange,
304
+ children: [t11, t25]
305
+ });
306
+ $[62] = handleOpenChange;
307
+ $[63] = open;
308
+ $[64] = t11;
309
+ $[65] = t25;
310
+ $[66] = t26;
311
+ } else t26 = $[66];
312
+ return t26;
313
+ }
314
+ function _temp(page) {
315
+ return /* @__PURE__ */ jsxs("option", {
316
+ value: page.id,
317
+ children: [
318
+ page.nickname,
319
+ " (",
320
+ page.fullPath,
321
+ ")"
322
+ ]
323
+ }, page.id);
324
+ }
325
+
326
+ //#endregion
327
+ export { TextLinkPopover };
@@ -1,5 +1,6 @@
1
1
  import { isLexicalState, markdownToLexicalState } from "../../lib/lexicalState.js";
2
2
  import { InlineParagraphNode } from "./InlineParagraphNode.js";
3
+ import { LinkNode } from "@lexical/link";
3
4
  import { ParagraphNode } from "lexical";
4
5
 
5
6
  //#region src/core/components/lexical/editorConfig.ts
@@ -18,11 +19,16 @@ function createEditorConfig(initialState) {
18
19
  onError: (error) => {
19
20
  console.error("Lexical error:", error);
20
21
  },
21
- nodes: [InlineParagraphNode, {
22
- replace: ParagraphNode,
23
- with: () => new InlineParagraphNode(),
24
- withKlass: InlineParagraphNode
25
- }]
22
+ theme: { link: "camox-text-link" },
23
+ nodes: [
24
+ LinkNode,
25
+ InlineParagraphNode,
26
+ {
27
+ replace: ParagraphNode,
28
+ with: () => new InlineParagraphNode(),
29
+ withKlass: InlineParagraphNode
30
+ }
31
+ ]
26
32
  };
27
33
  }
28
34
 
@@ -1,4 +1,5 @@
1
1
  import { EmbedURL, FileValue, ImageValue, LinkValue } from "./lib/contentType.js";
2
+ import { MarkdownInlineComponents } from "./lib/lexicalReact.js";
2
3
  import { Block, BlockComponentProps, PeekItem, RepeatableItemSeed } from "./createBlock.js";
3
4
  import { Layout, LayoutBlockData, OgImageParams } from "./createLayout.js";
4
5
  import * as _$_sinclair_typebox0 from "@sinclair/typebox";
@@ -28,9 +29,11 @@ declare function createApp({
28
29
  }) => React.JSX.Element;
29
30
  Field: <K extends never>({
30
31
  name,
32
+ components,
31
33
  children
32
34
  }: {
33
35
  name: K;
36
+ components?: MarkdownInlineComponents;
34
37
  children: (props: {
35
38
  children: React.ReactNode;
36
39
  } & {
@@ -134,6 +137,7 @@ declare function createApp({
134
137
  children: (item: {
135
138
  Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends string ? F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1] }>(props: {
136
139
  name: F;
140
+ components?: MarkdownInlineComponents;
137
141
  children: (props: {
138
142
  children: React.ReactNode;
139
143
  } & {
@@ -258,6 +262,7 @@ declare function createApp({
258
262
  children: (item: {
259
263
  Field: (props: {
260
264
  name: string;
265
+ components?: MarkdownInlineComponents;
261
266
  children: (props: {
262
267
  children: React.ReactNode;
263
268
  } & {
@@ -426,9 +431,11 @@ declare function createApp({
426
431
  }) => React.JSX.Element;
427
432
  Field: <K extends never>({
428
433
  name,
434
+ components,
429
435
  children
430
436
  }: {
431
437
  name: K;
438
+ components?: MarkdownInlineComponents;
432
439
  children: (props: {
433
440
  children: React.ReactNode;
434
441
  } & {
@@ -532,6 +539,7 @@ declare function createApp({
532
539
  children: (item: {
533
540
  Field: <F extends keyof { [F_1 in keyof ({}[K] extends (infer U)[] ? U : never) as ({}[K] extends (infer U)[] ? U : never)[F_1] extends string ? F_1 : never]: ({}[K] extends (infer U)[] ? U : never)[F_1] }>(props: {
534
541
  name: F;
542
+ components?: MarkdownInlineComponents;
535
543
  children: (props: {
536
544
  children: React.ReactNode;
537
545
  } & {
@@ -656,6 +664,7 @@ declare function createApp({
656
664
  children: (item: {
657
665
  Field: (props: {
658
666
  name: string;
667
+ components?: MarkdownInlineComponents;
659
668
  children: (props: {
660
669
  children: React.ReactNode;
661
670
  } & {
@@ -1,4 +1,5 @@
1
1
  import { EmbedURL, FileValue, ImageValue, ItemSettingsBrand, LinkValue, ToMarkdownBuilder, Type } from "./lib/contentType.js";
2
+ import { MarkdownInlineComponents, MarkdownLinkRenderData, MarkdownLinkRenderProps } from "./lib/lexicalReact.js";
2
3
  import * as _$_sinclair_typebox0 from "@sinclair/typebox";
3
4
  import { Static, TSchema, Type as Type$1 } from "@sinclair/typebox";
4
5
  import * as React from "react";
@@ -46,7 +47,7 @@ interface CreateBlockOptions<TSchemaShape extends Record<string, TSchema> = Reco
46
47
  */
47
48
  settings?: TSettingsShape;
48
49
  /**
49
- * When true, this block can only be used inside layouts and won't appear in the AddBlockSheet
50
+ * When true, this block can only be used inside layouts and won't appear in the AddBlockSidebar
50
51
  * or be available for AI page generation.
51
52
  */
52
53
  layoutOnly?: TLayoutOnly;
@@ -153,9 +154,11 @@ declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSett
153
154
  params: unknown[] & [];
154
155
  })["static"] }, Exclude<keyof TSchemaShape, { [K_2 in keyof TSchemaShape]: TSchemaShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_2] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_2]> ? K_2 : never : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape] | { [K_4 in keyof TSchemaShape]: TSchemaShape[K_4] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_4] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_4]> ? never : K_4 : never }[keyof TSchemaShape]>>>>[K_5] }>({
155
156
  name,
157
+ components,
156
158
  children
157
159
  }: {
158
160
  name: K;
161
+ components?: MarkdownInlineComponents;
159
162
  children: (props: {
160
163
  children: React.ReactNode;
161
164
  } & {
@@ -515,6 +518,7 @@ declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSett
515
518
  params: unknown[] & [];
516
519
  })["static"] }, Exclude<keyof TSchemaShape, { [K_2 in keyof TSchemaShape]: TSchemaShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_2] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_2]> ? K_2 : never : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape] | { [K_4 in keyof TSchemaShape]: TSchemaShape[K_4] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_4] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_4]> ? never : K_4 : never }[keyof TSchemaShape]>>>>[K_5] }[K] extends (infer U)[] ? U : never)[F_1] }>(props: {
517
520
  name: F;
521
+ components?: MarkdownInlineComponents;
518
522
  children: (props: {
519
523
  children: React.ReactNode;
520
524
  } & {
@@ -1239,6 +1243,7 @@ declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSett
1239
1243
  children: (item: {
1240
1244
  Field: (props: {
1241
1245
  name: string;
1246
+ components?: MarkdownInlineComponents;
1242
1247
  children: (props: {
1243
1248
  children: React.ReactNode;
1244
1249
  } & {
@@ -1448,4 +1453,4 @@ declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSett
1448
1453
  };
1449
1454
  type Block = ReturnType<typeof createBlock>;
1450
1455
  //#endregion
1451
- export { Block, BlockComponentProps, PeekItem, RepeatableItemSeed, Type, createBlock };
1456
+ export { Block, BlockComponentProps, type MarkdownInlineComponents, type MarkdownLinkRenderData, type MarkdownLinkRenderProps, PeekItem, RepeatableItemSeed, Type, createBlock };