camox 0.9.0 → 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.
Files changed (43) hide show
  1. package/dist/core/components/lexical/SidebarLexicalEditor.js +2 -1
  2. package/dist/core/createApp.d.ts +231 -209
  3. package/dist/core/createApp.js +17 -17
  4. package/dist/core/createBlock.d.ts +74 -72
  5. package/dist/core/createBlock.js +274 -267
  6. package/dist/core/createLayout.d.ts +100 -80
  7. package/dist/core/createLayout.js +93 -65
  8. package/dist/features/preview/CamoxPreview.js +76 -54
  9. package/dist/features/preview/components/AddBlockSheet.js +12 -12
  10. package/dist/features/preview/components/AssetFieldEditor.js +1 -1
  11. package/dist/features/preview/components/AssetLightbox.js +1 -1
  12. package/dist/features/preview/components/AssetPickerGrid.js +1 -1
  13. package/dist/features/preview/components/BlockActionsPopover.js +26 -26
  14. package/dist/features/preview/components/BlockErrorBoundary.js +59 -0
  15. package/dist/features/preview/components/{CreatePageSheet.js → CreatePageModal.js} +16 -18
  16. package/dist/features/preview/components/{EditPageSheet.js → EditPageModal.js} +32 -25
  17. package/dist/features/preview/components/Frame.js +1 -1
  18. package/dist/features/preview/components/ItemFieldsEditor.js +134 -98
  19. package/dist/features/preview/components/LinkFieldEditor.js +166 -146
  20. package/dist/features/preview/components/PageContentSheet.js +42 -37
  21. package/dist/features/preview/components/PageLocationFieldset.js +28 -26
  22. package/dist/features/preview/components/PagePicker.js +15 -8
  23. package/dist/features/preview/components/PageTree.js +337 -351
  24. package/dist/features/preview/components/PeekedBlock.js +38 -26
  25. package/dist/features/preview/components/PreviewPanel.js +16 -2
  26. package/dist/features/preview/components/PreviewSideSheet.js +26 -42
  27. package/dist/features/preview/components/RepeatableItemsList.js +7 -7
  28. package/dist/features/preview/previewStore.js +7 -7
  29. package/dist/features/provider/CamoxProvider.js +41 -9
  30. package/dist/features/routes/ogRoute.js +2 -2
  31. package/dist/features/routes/pageRoute.js +1 -1
  32. package/dist/features/studio/components/EnvironmentMenu.js +2 -2
  33. package/dist/features/studio/components/UserButton.js +49 -34
  34. package/dist/features/vite/blockBoilerplate.js +2 -1
  35. package/dist/features/vite/definitionsSync.js +53 -22
  36. package/dist/features/vite/routeGeneration.js +1 -0
  37. package/dist/features/vite/vite.js +51 -7
  38. package/dist/lib/auth.js +6 -4
  39. package/dist/lib/use-project-room.js +25 -13
  40. package/dist/studio-overlays.css +34 -0
  41. package/dist/studio.css +1 -1
  42. package/package.json +4 -4
  43. 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?: boolean;
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: string;
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
- id: string;
1097
- title: string;
1098
- description: string;
1099
- contentSchema: {
1100
- type: "object";
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
- properties: TSchemaShape;
1104
- required: string[];
1105
- toMarkdown: readonly string[];
1106
- };
1107
- settingsSchema: {
1108
- type: "object";
1109
- properties: TSettingsShape;
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
- repeatableItems: RepeatableItemSeed[];
1118
- };
1119
- getInitialContent: () => _$_sinclair_typebox0.Evaluate<Readonly<Partial<Pick<{ [K in keyof TSchemaShape]: (TSchemaShape[K] & {
1120
- params: unknown[] & [];
1121
- })["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] & {
1122
- params: unknown[] & [];
1123
- })["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] & {
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: Record<string, unknown>;
1139
- placement: null;
1140
- summary: string;
1141
- position: string;
1142
- createdAt: number;
1143
- updatedAt: number;
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