camox 0.9.1 → 0.10.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/core/components/lexical/SidebarLexicalEditor.js +2 -1
- package/dist/core/createApp.d.ts +231 -209
- package/dist/core/createApp.js +17 -17
- package/dist/core/createBlock.d.ts +74 -72
- package/dist/core/createBlock.js +274 -267
- package/dist/core/createLayout.d.ts +100 -80
- package/dist/core/createLayout.js +93 -65
- package/dist/features/preview/CamoxPreview.js +75 -53
- package/dist/features/preview/components/AddBlockSheet.js +12 -12
- package/dist/features/preview/components/AssetFieldEditor.js +1 -1
- package/dist/features/preview/components/AssetLightbox.js +1 -1
- package/dist/features/preview/components/AssetPickerGrid.js +1 -1
- package/dist/features/preview/components/BlockActionsPopover.js +26 -26
- package/dist/features/preview/components/BlockErrorBoundary.js +59 -0
- package/dist/features/preview/components/{CreatePageSheet.js → CreatePageModal.js} +16 -18
- package/dist/features/preview/components/{EditPageSheet.js → EditPageModal.js} +26 -23
- package/dist/features/preview/components/Frame.js +1 -1
- package/dist/features/preview/components/ItemFieldsEditor.js +134 -98
- package/dist/features/preview/components/LinkFieldEditor.js +166 -146
- package/dist/features/preview/components/PageContentSheet.js +42 -37
- package/dist/features/preview/components/PageLocationFieldset.js +28 -26
- package/dist/features/preview/components/PagePicker.js +3 -3
- package/dist/features/preview/components/PageTree.js +337 -351
- package/dist/features/preview/components/PeekedBlock.js +38 -26
- package/dist/features/preview/components/PreviewPanel.js +16 -2
- package/dist/features/preview/components/PreviewSideSheet.js +26 -42
- package/dist/features/preview/components/RepeatableItemsList.js +7 -7
- package/dist/features/preview/previewStore.js +7 -7
- package/dist/features/routes/ogRoute.js +2 -2
- package/dist/features/routes/pageRoute.js +1 -1
- package/dist/features/studio/components/UserButton.js +46 -30
- package/dist/features/vite/definitionsSync.js +20 -20
- package/dist/features/vite/routeGeneration.js +1 -0
- package/dist/features/vite/vite.js +51 -7
- package/dist/studio-overlays.css +34 -0
- package/dist/studio.css +1 -1
- package/package.json +4 -4
- package/skills/camox-layout/SKILL.md +34 -30
|
@@ -5,7 +5,7 @@ import * as React from "react";
|
|
|
5
5
|
import * as _$react_jsx_runtime0 from "react/jsx-runtime";
|
|
6
6
|
|
|
7
7
|
//#region src/core/createBlock.d.ts
|
|
8
|
-
interface CreateBlockOptions<TSchemaShape extends Record<string, TSchema> = Record<string, TSchema>, TSettingsShape extends Record<string, TSchema> = Record<string, TSchema>, TMarkdown extends readonly string[] = readonly string[]> {
|
|
8
|
+
interface CreateBlockOptions<TSchemaShape extends Record<string, TSchema> = Record<string, TSchema>, TSettingsShape extends Record<string, TSchema> = Record<string, TSchema>, TMarkdown extends readonly string[] = readonly string[], TLayoutOnly extends boolean = false> {
|
|
9
9
|
id: string;
|
|
10
10
|
/**
|
|
11
11
|
* Human-readable title for the block (JSON Schema `title`).
|
|
@@ -55,7 +55,7 @@ interface CreateBlockOptions<TSchemaShape extends Record<string, TSchema> = Reco
|
|
|
55
55
|
* When true, this block can only be used inside layouts and won't appear in the AddBlockSheet
|
|
56
56
|
* or be available for AI page generation.
|
|
57
57
|
*/
|
|
58
|
-
layoutOnly?:
|
|
58
|
+
layoutOnly?: TLayoutOnly;
|
|
59
59
|
/**
|
|
60
60
|
* React component that renders the block.
|
|
61
61
|
* Must be defined as a separate function (not inline, not an arrow function).
|
|
@@ -66,7 +66,7 @@ interface CreateBlockOptions<TSchemaShape extends Record<string, TSchema> = Reco
|
|
|
66
66
|
}>;
|
|
67
67
|
}
|
|
68
68
|
interface BlockData<TContent> {
|
|
69
|
-
_id:
|
|
69
|
+
_id: number;
|
|
70
70
|
type: string;
|
|
71
71
|
content: TContent;
|
|
72
72
|
settings?: Record<string, unknown>;
|
|
@@ -98,28 +98,7 @@ interface RepeatableItemSeed {
|
|
|
98
98
|
content: Record<string, unknown>;
|
|
99
99
|
position: string;
|
|
100
100
|
}
|
|
101
|
-
declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSettingsShape extends Record<string, TSchema> = Record<string, never>, const TMarkdown extends readonly string[] = readonly string[]>(options: CreateBlockOptions<TSchemaShape, TSettingsShape, TMarkdown>): {
|
|
102
|
-
/**
|
|
103
|
-
* The react component to be used at the page level when mapping on blocks content.
|
|
104
|
-
* It exposes context that will be consumed by the Field component, and provides visual editing
|
|
105
|
-
* capabilities (e.g. delete and reorder blocks).
|
|
106
|
-
*/
|
|
107
|
-
Component: ({
|
|
108
|
-
blockData,
|
|
109
|
-
mode,
|
|
110
|
-
isFirstBlock,
|
|
111
|
-
showAddBlockTop,
|
|
112
|
-
showAddBlockBottom,
|
|
113
|
-
addBlockAfterPosition
|
|
114
|
-
}: BlockComponentProps<_$_sinclair_typebox0.Evaluate<Readonly<Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
115
|
-
params: unknown[] & [];
|
|
116
|
-
})["static"] }, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[keyof TSchemaShape]>>> & Readonly<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
117
|
-
params: unknown[] & [];
|
|
118
|
-
})["static"] }, { [K_2 in keyof TSchemaShape]: TSchemaShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_2] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_2]> ? never : K_2 : never }[keyof TSchemaShape]>> & Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
119
|
-
params: unknown[] & [];
|
|
120
|
-
})["static"] }, { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>> & Required<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
121
|
-
params: unknown[] & [];
|
|
122
|
-
})["static"] }, Exclude<keyof TSchemaShape, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[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]> ? never : K_2 : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>>>>>) => _$react_jsx_runtime0.JSX.Element;
|
|
101
|
+
declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSettingsShape extends Record<string, TSchema> = Record<string, never>, const TMarkdown extends readonly string[] = readonly string[], TLayoutOnly extends boolean = false>(options: CreateBlockOptions<TSchemaShape, TSettingsShape, TMarkdown, TLayoutOnly>): {
|
|
123
102
|
Detached: ({
|
|
124
103
|
children
|
|
125
104
|
}: {
|
|
@@ -1093,59 +1072,82 @@ declare function createBlock<TSchemaShape extends Record<string, TSchema>, TSett
|
|
|
1093
1072
|
})["static"] }, { [K_4 in keyof TSettingsShape]: TSettingsShape[K_4] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSettingsShape[K_4] extends _$_sinclair_typebox0.TReadonly<TSettingsShape[K_4]> ? never : K_4 : never }[keyof TSettingsShape]>> & Required<Pick<{ [K_1 in keyof TSettingsShape]: (TSettingsShape[K_1] & {
|
|
1094
1073
|
params: unknown[] & [];
|
|
1095
1074
|
})["static"] }, Exclude<keyof TSettingsShape, { [K_2 in keyof TSettingsShape]: TSettingsShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSettingsShape[K_2] extends _$_sinclair_typebox0.TOptional<TSettingsShape[K_2]> ? K_2 : never : never }[keyof TSettingsShape] | { [K_3 in keyof TSettingsShape]: TSettingsShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSettingsShape[K_3] extends _$_sinclair_typebox0.TOptional<TSettingsShape[K_3]> ? never : K_3 : never }[keyof TSettingsShape] | { [K_4 in keyof TSettingsShape]: TSettingsShape[K_4] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSettingsShape[K_4] extends _$_sinclair_typebox0.TReadonly<TSettingsShape[K_4]> ? never : K_4 : never }[keyof TSettingsShape]>>>>)[K];
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1075
|
+
_internal: {
|
|
1076
|
+
/**
|
|
1077
|
+
* The react component to be used at the page level when mapping on blocks content.
|
|
1078
|
+
* It exposes context that will be consumed by the Field component, and provides visual editing
|
|
1079
|
+
* capabilities (e.g. delete and reorder blocks).
|
|
1080
|
+
*/
|
|
1081
|
+
Component: ({
|
|
1082
|
+
blockData,
|
|
1083
|
+
mode,
|
|
1084
|
+
isFirstBlock,
|
|
1085
|
+
showAddBlockTop,
|
|
1086
|
+
showAddBlockBottom,
|
|
1087
|
+
addBlockAfterPosition
|
|
1088
|
+
}: BlockComponentProps<_$_sinclair_typebox0.Evaluate<Readonly<Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1089
|
+
params: unknown[] & [];
|
|
1090
|
+
})["static"] }, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[keyof TSchemaShape]>>> & Readonly<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1091
|
+
params: unknown[] & [];
|
|
1092
|
+
})["static"] }, { [K_2 in keyof TSchemaShape]: TSchemaShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_2] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_2]> ? never : K_2 : never }[keyof TSchemaShape]>> & Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1093
|
+
params: unknown[] & [];
|
|
1094
|
+
})["static"] }, { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>> & Required<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1095
|
+
params: unknown[] & [];
|
|
1096
|
+
})["static"] }, Exclude<keyof TSchemaShape, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[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]> ? never : K_2 : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>>>>>) => _$react_jsx_runtime0.JSX.Element;
|
|
1097
|
+
id: string;
|
|
1101
1098
|
title: string;
|
|
1102
1099
|
description: string;
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
required: string[];
|
|
1111
|
-
} | undefined;
|
|
1112
|
-
getInitialBundle: () => {
|
|
1113
|
-
content: Record<string, unknown>;
|
|
1114
|
-
settings: {
|
|
1115
|
-
[x: string]: unknown;
|
|
1100
|
+
contentSchema: {
|
|
1101
|
+
type: "object";
|
|
1102
|
+
title: string;
|
|
1103
|
+
description: string;
|
|
1104
|
+
properties: TSchemaShape;
|
|
1105
|
+
required: string[];
|
|
1106
|
+
toMarkdown: readonly string[];
|
|
1116
1107
|
};
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
params: unknown[] & [];
|
|
1125
|
-
})["static"] }, { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>> & Required<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1126
|
-
params: unknown[] & [];
|
|
1127
|
-
})["static"] }, Exclude<keyof TSchemaShape, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[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]> ? never : K_2 : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>>>>;
|
|
1128
|
-
getInitialSettings: () => {
|
|
1129
|
-
[x: string]: unknown;
|
|
1130
|
-
};
|
|
1131
|
-
getPeekBundle: () => {
|
|
1132
|
-
block: {
|
|
1133
|
-
id: number;
|
|
1134
|
-
pageId: null;
|
|
1135
|
-
layoutId: null;
|
|
1136
|
-
type: string;
|
|
1108
|
+
settingsSchema: {
|
|
1109
|
+
type: "object";
|
|
1110
|
+
properties: TSettingsShape;
|
|
1111
|
+
required: string[];
|
|
1112
|
+
} | undefined;
|
|
1113
|
+
layoutOnly: TLayoutOnly;
|
|
1114
|
+
getInitialBundle: () => {
|
|
1137
1115
|
content: Record<string, unknown>;
|
|
1138
|
-
settings:
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1116
|
+
settings: {
|
|
1117
|
+
[x: string]: unknown;
|
|
1118
|
+
};
|
|
1119
|
+
repeatableItems: RepeatableItemSeed[];
|
|
1120
|
+
};
|
|
1121
|
+
getInitialContent: () => _$_sinclair_typebox0.Evaluate<Readonly<Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1122
|
+
params: unknown[] & [];
|
|
1123
|
+
})["static"] }, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[keyof TSchemaShape]>>> & Readonly<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1124
|
+
params: unknown[] & [];
|
|
1125
|
+
})["static"] }, { [K_2 in keyof TSchemaShape]: TSchemaShape[K_2] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_2] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_2]> ? never : K_2 : never }[keyof TSchemaShape]>> & Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1126
|
+
params: unknown[] & [];
|
|
1127
|
+
})["static"] }, { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>> & Required<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
|
|
1128
|
+
params: unknown[] & [];
|
|
1129
|
+
})["static"] }, Exclude<keyof TSchemaShape, { [K_1 in keyof TSchemaShape]: TSchemaShape[K_1] extends _$_sinclair_typebox0.TReadonly<TSchema> ? TSchemaShape[K_1] extends _$_sinclair_typebox0.TOptional<TSchemaShape[K_1]> ? K_1 : never : never }[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]> ? never : K_2 : never }[keyof TSchemaShape] | { [K_3 in keyof TSchemaShape]: TSchemaShape[K_3] extends _$_sinclair_typebox0.TOptional<TSchema> ? TSchemaShape[K_3] extends _$_sinclair_typebox0.TReadonly<TSchemaShape[K_3]> ? never : K_3 : never }[keyof TSchemaShape]>>>>;
|
|
1130
|
+
getInitialSettings: () => {
|
|
1131
|
+
[x: string]: unknown;
|
|
1132
|
+
};
|
|
1133
|
+
getPeekBundle: () => {
|
|
1134
|
+
block: {
|
|
1135
|
+
id: number;
|
|
1136
|
+
pageId: null;
|
|
1137
|
+
layoutId: null;
|
|
1138
|
+
type: string;
|
|
1139
|
+
content: Record<string, unknown>;
|
|
1140
|
+
settings: Record<string, unknown>;
|
|
1141
|
+
placement: null;
|
|
1142
|
+
summary: string;
|
|
1143
|
+
position: string;
|
|
1144
|
+
createdAt: number;
|
|
1145
|
+
updatedAt: number;
|
|
1146
|
+
};
|
|
1147
|
+
repeatableItems: PeekItem[];
|
|
1148
|
+
files: never[];
|
|
1144
1149
|
};
|
|
1145
|
-
repeatableItems: PeekItem[];
|
|
1146
|
-
files: never[];
|
|
1147
1150
|
};
|
|
1148
|
-
layoutOnly: boolean;
|
|
1149
1151
|
};
|
|
1150
1152
|
type Block = ReturnType<typeof createBlock>;
|
|
1151
1153
|
//#endregion
|