camox 0.6.0 → 0.7.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 (79) hide show
  1. package/dist/core/components/AddBlockControlBar.d.ts.map +1 -1
  2. package/dist/core/components/AddBlockControlBar.js +51 -117
  3. package/dist/core/components/lexical/InlineLexicalEditor.js +1 -1
  4. package/dist/core/components/lexical/SidebarLexicalEditor.js +1 -1
  5. package/dist/core/createApp.d.ts +314 -44
  6. package/dist/core/createApp.d.ts.map +1 -1
  7. package/dist/core/createBlock.d.ts +160 -22
  8. package/dist/core/createBlock.d.ts.map +1 -1
  9. package/dist/core/createBlock.js +467 -579
  10. package/dist/features/content/components/AssetCard.js +1 -1
  11. package/dist/features/preview/CamoxPreview.d.ts.map +1 -1
  12. package/dist/features/preview/CamoxPreview.js +12 -16
  13. package/dist/features/preview/components/AddBlockSheet.d.ts.map +1 -1
  14. package/dist/features/preview/components/AddBlockSheet.js +1 -2
  15. package/dist/features/preview/components/AssetLightbox.d.ts.map +1 -1
  16. package/dist/features/preview/components/AssetLightbox.js +13 -15
  17. package/dist/features/preview/components/BlockActionsPopover.d.ts.map +1 -1
  18. package/dist/features/preview/components/BlockActionsPopover.js +19 -22
  19. package/dist/features/preview/components/CreatePageSheet.d.ts.map +1 -1
  20. package/dist/features/preview/components/CreatePageSheet.js +10 -4
  21. package/dist/features/preview/components/EditPageSheet.d.ts +1 -1
  22. package/dist/features/preview/components/EditPageSheet.d.ts.map +1 -1
  23. package/dist/features/preview/components/EditPageSheet.js +20 -17
  24. package/dist/features/preview/components/FieldOverlayStyles.d.ts +2 -0
  25. package/dist/features/preview/components/FieldOverlayStyles.d.ts.map +1 -0
  26. package/dist/features/preview/components/FieldOverlayStyles.js +15 -0
  27. package/dist/features/preview/components/Frame.d.ts +20 -0
  28. package/dist/features/preview/components/Frame.d.ts.map +1 -0
  29. package/dist/features/preview/components/Frame.js +162 -0
  30. package/dist/features/preview/components/LinkFieldEditor.d.ts.map +1 -1
  31. package/dist/features/preview/components/LinkFieldEditor.js +11 -12
  32. package/dist/features/preview/components/OverlayTracker.js +1 -1
  33. package/dist/features/preview/components/PageContentSheet.d.ts.map +1 -1
  34. package/dist/features/preview/components/PageContentSheet.js +3 -3
  35. package/dist/features/preview/components/PageLocationFieldset.d.ts.map +1 -1
  36. package/dist/features/preview/components/PageLocationFieldset.js +9 -11
  37. package/dist/features/preview/components/PagePicker.d.ts.map +1 -1
  38. package/dist/features/preview/components/PagePicker.js +15 -15
  39. package/dist/features/preview/components/PageTree.d.ts.map +1 -1
  40. package/dist/features/preview/components/PageTree.js +215 -203
  41. package/dist/features/preview/components/PreviewPanel.d.ts.map +1 -1
  42. package/dist/features/preview/components/PreviewPanel.js +21 -15
  43. package/dist/features/preview/components/PreviewSideSheet.d.ts.map +1 -1
  44. package/dist/features/preview/components/PreviewSideSheet.js +42 -26
  45. package/dist/features/preview/components/PreviewToolbar.d.ts.map +1 -1
  46. package/dist/features/preview/components/PreviewToolbar.js +191 -171
  47. package/dist/features/preview/components/RepeatableItemsList.d.ts.map +1 -1
  48. package/dist/features/preview/components/RepeatableItemsList.js +4 -5
  49. package/dist/features/preview/components/TextFormatToolbar.d.ts.map +1 -1
  50. package/dist/features/preview/components/TextFormatToolbar.js +5 -6
  51. package/dist/features/preview/components/UnlinkAssetButton.d.ts.map +1 -1
  52. package/dist/features/preview/components/UnlinkAssetButton.js +70 -91
  53. package/dist/features/preview/studio-overlays.css?inline.js +4 -0
  54. package/dist/features/provider/components/CamoxAppContext.d.ts +314 -44
  55. package/dist/features/provider/components/CamoxAppContext.d.ts.map +1 -1
  56. package/dist/features/provider/components/CommandPalette.d.ts.map +1 -1
  57. package/dist/features/provider/components/CommandPalette.js +22 -14
  58. package/dist/features/studio/CamoxStudio.d.ts +2 -3
  59. package/dist/features/studio/CamoxStudio.d.ts.map +1 -1
  60. package/dist/features/studio/components/EnvironmentMenu.d.ts.map +1 -1
  61. package/dist/features/studio/components/EnvironmentMenu.js +39 -35
  62. package/dist/features/studio/components/Navbar.js +2 -2
  63. package/dist/features/studio/components/ProjectMenu.d.ts.map +1 -1
  64. package/dist/features/studio/components/ProjectMenu.js +143 -129
  65. package/dist/features/studio/components/UserButton.d.ts.map +1 -1
  66. package/dist/features/studio/components/UserButton.js +8 -9
  67. package/dist/features/vite/definitionsSync.d.ts.map +1 -1
  68. package/dist/features/vite/definitionsSync.js +24 -2
  69. package/dist/features/vite/vite.d.ts +2 -0
  70. package/dist/features/vite/vite.d.ts.map +1 -1
  71. package/dist/features/vite/vite.js +27 -31
  72. package/dist/lib/api-client.d.ts +17 -17
  73. package/dist/lib/queries.d.ts +7 -7
  74. package/dist/studio.css +1 -1
  75. package/package.json +5 -6
  76. package/skills/camox-block/SKILL.md +55 -28
  77. package/dist/features/preview/overlayConstants.d.ts +0 -19
  78. package/dist/features/preview/overlayConstants.d.ts.map +0 -1
  79. package/dist/features/preview/overlayConstants.js +0 -21
@@ -10,7 +10,7 @@ import { X } from "lucide-react";
10
10
  import { AlertDialog, AlertDialogAction, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle } from "@camox/ui/alert-dialog";
11
11
  //#region src/features/preview/components/UnlinkAssetButton.tsx
12
12
  var UnlinkAssetButton = (t0) => {
13
- const $ = c(41);
13
+ const $ = c(37);
14
14
  const { fileId, onUnlink, className } = t0;
15
15
  const [dialogOpen, setDialogOpen] = useState(false);
16
16
  let t1;
@@ -60,120 +60,99 @@ var UnlinkAssetButton = (t0) => {
60
60
  $[11] = t6;
61
61
  } else t6 = $[11];
62
62
  let t7;
63
- if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
64
- t7 = /* @__PURE__ */ jsx(X, { className: "h-4 w-4" });
65
- $[12] = t7;
66
- } else t7 = $[12];
67
- let t8;
68
- if ($[13] !== handleClick || $[14] !== t6) {
69
- t8 = /* @__PURE__ */ jsx(TooltipTrigger, {
70
- asChild: true,
71
- children: /* @__PURE__ */ jsx(Button, {
72
- type: "button",
73
- variant: "ghost",
74
- size: "icon-sm",
75
- className: t6,
76
- onClick: handleClick,
77
- children: t7
78
- })
63
+ if ($[12] !== handleClick || $[13] !== t6) {
64
+ t7 = /* @__PURE__ */ jsx(Button, {
65
+ type: "button",
66
+ variant: "ghost",
67
+ size: "icon-sm",
68
+ className: t6,
69
+ onClick: handleClick
79
70
  });
80
- $[13] = handleClick;
81
- $[14] = t6;
71
+ $[12] = handleClick;
72
+ $[13] = t6;
73
+ $[14] = t7;
74
+ } else t7 = $[14];
75
+ let t8;
76
+ if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
77
+ t8 = /* @__PURE__ */ jsx(X, { className: "h-4 w-4" });
82
78
  $[15] = t8;
83
79
  } else t8 = $[15];
84
80
  let t9;
85
- if ($[16] === Symbol.for("react.memo_cache_sentinel")) {
86
- t9 = /* @__PURE__ */ jsx(TooltipContent, { children: "Unlink" });
87
- $[16] = t9;
88
- } else t9 = $[16];
81
+ if ($[16] !== t7) {
82
+ t9 = /* @__PURE__ */ jsx(TooltipTrigger, {
83
+ render: t7,
84
+ children: t8
85
+ });
86
+ $[16] = t7;
87
+ $[17] = t9;
88
+ } else t9 = $[17];
89
89
  let t10;
90
- if ($[17] !== t8) {
91
- t10 = /* @__PURE__ */ jsxs(Tooltip, { children: [t8, t9] });
92
- $[17] = t8;
90
+ if ($[18] === Symbol.for("react.memo_cache_sentinel")) {
91
+ t10 = /* @__PURE__ */ jsx(TooltipContent, { children: "Unlink" });
93
92
  $[18] = t10;
94
93
  } else t10 = $[18];
95
94
  let t11;
96
- if ($[19] === Symbol.for("react.memo_cache_sentinel")) {
97
- t11 = /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Unlink file" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This file is not used anywhere else. Would you like to also delete it?" })] });
98
- $[19] = t11;
99
- } else t11 = $[19];
95
+ if ($[19] !== t9) {
96
+ t11 = /* @__PURE__ */ jsxs(Tooltip, { children: [t9, t10] });
97
+ $[19] = t9;
98
+ $[20] = t11;
99
+ } else t11 = $[20];
100
100
  let t12;
101
- if ($[20] !== onUnlink) {
102
- t12 = () => onUnlink();
103
- $[20] = onUnlink;
101
+ if ($[21] === Symbol.for("react.memo_cache_sentinel")) {
102
+ t12 = /* @__PURE__ */ jsxs(AlertDialogHeader, { children: [/* @__PURE__ */ jsx(AlertDialogTitle, { children: "Unlink file" }), /* @__PURE__ */ jsx(AlertDialogDescription, { children: "This file is not used anywhere else. Would you like to also delete it?" })] });
104
103
  $[21] = t12;
105
104
  } else t12 = $[21];
106
105
  let t13;
107
- if ($[22] === Symbol.for("react.memo_cache_sentinel")) {
108
- t13 = /* @__PURE__ */ jsx(Button, {
106
+ if ($[22] !== onUnlink) {
107
+ t13 = /* @__PURE__ */ jsx(AlertDialogAction, {
109
108
  variant: "outline",
110
109
  className: "bg-background hover:bg-accent text-foreground",
110
+ onClick: () => onUnlink(),
111
111
  children: "Unlink only"
112
112
  });
113
- $[22] = t13;
114
- } else t13 = $[22];
113
+ $[22] = onUnlink;
114
+ $[23] = t13;
115
+ } else t13 = $[23];
115
116
  let t14;
116
- if ($[23] !== t12) {
117
+ if ($[24] !== deleteFile || $[25] !== fileId || $[26] !== onUnlink) {
117
118
  t14 = /* @__PURE__ */ jsx(AlertDialogAction, {
118
- onClick: t12,
119
- asChild: true,
120
- children: t13
119
+ onClick: () => {
120
+ onUnlink();
121
+ if (fileId) deleteFile.mutate({ id: fileId });
122
+ },
123
+ children: "Delete file"
121
124
  });
122
- $[23] = t12;
123
- $[24] = t14;
124
- } else t14 = $[24];
125
+ $[24] = deleteFile;
126
+ $[25] = fileId;
127
+ $[26] = onUnlink;
128
+ $[27] = t14;
129
+ } else t14 = $[27];
125
130
  let t15;
126
- if ($[25] !== deleteFile || $[26] !== fileId || $[27] !== onUnlink) {
127
- t15 = () => {
128
- onUnlink();
129
- if (fileId) deleteFile.mutate({ id: fileId });
130
- };
131
- $[25] = deleteFile;
132
- $[26] = fileId;
133
- $[27] = onUnlink;
134
- $[28] = t15;
135
- } else t15 = $[28];
136
- let t16;
137
- if ($[29] === Symbol.for("react.memo_cache_sentinel")) {
138
- t16 = /* @__PURE__ */ jsx(Button, { children: "Delete file" });
139
- $[29] = t16;
140
- } else t16 = $[29];
141
- let t17;
142
- if ($[30] !== t15) {
143
- t17 = /* @__PURE__ */ jsx(AlertDialogAction, {
144
- onClick: t15,
145
- asChild: true,
146
- children: t16
147
- });
131
+ if ($[28] !== t13 || $[29] !== t14) {
132
+ t15 = /* @__PURE__ */ jsxs(AlertDialogContent, { children: [t12, /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [t13, t14] })] });
133
+ $[28] = t13;
134
+ $[29] = t14;
148
135
  $[30] = t15;
149
- $[31] = t17;
150
- } else t17 = $[31];
151
- let t18;
152
- if ($[32] !== t14 || $[33] !== t17) {
153
- t18 = /* @__PURE__ */ jsxs(AlertDialogContent, { children: [t11, /* @__PURE__ */ jsxs(AlertDialogFooter, { children: [t14, t17] })] });
154
- $[32] = t14;
155
- $[33] = t17;
156
- $[34] = t18;
157
- } else t18 = $[34];
158
- let t19;
159
- if ($[35] !== dialogOpen || $[36] !== t18) {
160
- t19 = /* @__PURE__ */ jsx(AlertDialog, {
136
+ } else t15 = $[30];
137
+ let t16;
138
+ if ($[31] !== dialogOpen || $[32] !== t15) {
139
+ t16 = /* @__PURE__ */ jsx(AlertDialog, {
161
140
  open: dialogOpen,
162
141
  onOpenChange: setDialogOpen,
163
- children: t18
142
+ children: t15
164
143
  });
165
- $[35] = dialogOpen;
166
- $[36] = t18;
167
- $[37] = t19;
168
- } else t19 = $[37];
169
- let t20;
170
- if ($[38] !== t10 || $[39] !== t19) {
171
- t20 = /* @__PURE__ */ jsxs(Fragment, { children: [t10, t19] });
172
- $[38] = t10;
173
- $[39] = t19;
174
- $[40] = t20;
175
- } else t20 = $[40];
176
- return t20;
144
+ $[31] = dialogOpen;
145
+ $[32] = t15;
146
+ $[33] = t16;
147
+ } else t16 = $[33];
148
+ let t17;
149
+ if ($[34] !== t11 || $[35] !== t16) {
150
+ t17 = /* @__PURE__ */ jsxs(Fragment, { children: [t11, t16] });
151
+ $[34] = t11;
152
+ $[35] = t16;
153
+ $[36] = t17;
154
+ } else t17 = $[36];
155
+ return t17;
177
156
  };
178
157
  //#endregion
179
158
  export { UnlinkAssetButton };
@@ -0,0 +1,4 @@
1
+ //#region src/features/preview/studio-overlays.css?inline
2
+ var studio_overlays_default = "/*\n * Visual editing overlay styles injected into the preview iframe.\n *\n * State is driven by data attributes on the elements:\n * - data-camox-hovered: element is hovered\n * - data-camox-focused: element is focused/selected\n * - data-camox-overlay-mode=\"layout\": use layout (purple) colors\n *\n * Elements are targeted via their existing data attributes:\n * - [data-camox-field-id]: Field, Link, Image, Embed\n * - [data-camox-block-id]: BlockComponent, Detached\n * - [data-camox-repeater-item-id]: RepeaterItemWrapper\n */\n\n:root {\n --camox-overlay-color-hover: #f472b6bf; /* pink-400 at 75% */\n --camox-overlay-color-selected: #f472b6; /* pink-400 */\n --camox-overlay-layout-color-hover: #c084fcbf; /* purple-400 at 75% */\n --camox-overlay-layout-color-selected: #c084fc; /* purple-400 */\n --camox-overlay-width-hover: 3px;\n --camox-overlay-width-selected: 1px;\n --camox-overlay-inset-field-hover: -1px;\n --camox-overlay-inset-field-selected: -2px;\n --camox-overlay-inset-block-hover: -1px;\n --camox-overlay-inset-block-selected: 0px;\n}\n\n/* Position context for field-level and repeater elements.\n BlockComponent already has position: relative inline.\n Detached wraps user elements (e.g. fixed navbars) so must NOT get position: relative. */\n[data-camox-field-id],\n[data-camox-repeater-item-id] {\n position: relative;\n}\n\n/* ---- Hovered state ---- */\n\n[data-camox-field-id][data-camox-hovered]::after,\n[data-camox-block-id][data-camox-hovered]:not([data-camox-detached])::after,\n[data-camox-repeater-item-id][data-camox-hovered]::after {\n content: \"\";\n position: absolute;\n pointer-events: none;\n z-index: 10;\n inset: var(--camox-overlay-inset-block-hover);\n border: var(--camox-overlay-width-hover) solid var(--camox-overlay-color-hover);\n}\n\n/* Field-level elements use field-specific inset */\n[data-camox-field-id][data-camox-hovered]:not([data-camox-field-type])::after {\n inset: var(--camox-overlay-inset-field-hover);\n}\n\n/* ---- Focused state (overrides hovered via source order) ---- */\n\n[data-camox-field-id][data-camox-focused]::after,\n[data-camox-block-id][data-camox-focused]:not([data-camox-detached])::after {\n content: \"\";\n position: absolute;\n pointer-events: none;\n z-index: 10;\n inset: var(--camox-overlay-inset-block-selected);\n border: var(--camox-overlay-width-selected) solid var(--camox-overlay-color-selected);\n}\n\n/* Field-level elements use field-specific inset */\n[data-camox-field-id][data-camox-focused]:not([data-camox-field-type])::after {\n inset: var(--camox-overlay-inset-field-selected);\n}\n\n/* ---- Layout mode color overrides ---- */\n\n[data-camox-field-id][data-camox-overlay-mode=\"layout\"][data-camox-hovered]::after,\n[data-camox-block-id][data-camox-overlay-mode=\"layout\"][data-camox-hovered]:not(\n [data-camox-detached]\n )::after,\n[data-camox-repeater-item-id][data-camox-overlay-mode=\"layout\"][data-camox-hovered]::after {\n border-color: var(--camox-overlay-layout-color-hover);\n}\n\n[data-camox-field-id][data-camox-overlay-mode=\"layout\"][data-camox-focused]::after,\n[data-camox-block-id][data-camox-overlay-mode=\"layout\"][data-camox-focused]:not(\n [data-camox-detached]\n )::after {\n border-color: var(--camox-overlay-layout-color-selected);\n}\n\n/* ---- Embed: z-index above click-interceptor ---- */\n\n[data-camox-field-type=\"embed\"][data-camox-hovered]::after,\n[data-camox-field-type=\"embed\"][data-camox-focused]::after {\n z-index: 11;\n}\n\n/* ---- Detached: styled directly (not ::after) because the parent element\n (e.g. fixed navbar) must not get position: relative ---- */\n\n[data-camox-detached][data-camox-hovered] {\n inset: var(--camox-overlay-inset-block-hover);\n border: var(--camox-overlay-width-hover) solid var(--camox-overlay-color-hover);\n}\n\n[data-camox-detached][data-camox-focused] {\n inset: var(--camox-overlay-inset-block-selected);\n border: var(--camox-overlay-width-selected) solid var(--camox-overlay-color-selected);\n}\n\n[data-camox-detached][data-camox-overlay-mode=\"layout\"][data-camox-hovered] {\n border-color: var(--camox-overlay-layout-color-hover);\n}\n\n[data-camox-detached][data-camox-overlay-mode=\"layout\"][data-camox-focused] {\n border-color: var(--camox-overlay-layout-color-selected);\n}\n\n/* ---- Sheet overlay (dims non-selected blocks) ---- */\n\n.camox-sheet-overlay {\n position: absolute;\n inset: 0;\n background: rgba(0, 0, 0, 0.1);\n backdrop-filter: blur(4px);\n opacity: 0;\n transition: opacity 0.3s ease-in-out;\n pointer-events: none;\n z-index: 20;\n}\n\n.camox-sheet-overlay[data-camox-visible] {\n opacity: 1;\n}\n\n/* ---- Add block control bar ---- */\n\n.camox-add-block {\n position: absolute;\n left: 50%;\n right: 0;\n height: 36px;\n width: fit-content;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 11;\n transition: opacity 150ms ease;\n}\n\n.camox-add-block[data-camox-position=\"top\"] {\n top: 0;\n transform: translateX(-50%) translateY(-50%);\n}\n\n.camox-add-block[data-camox-position=\"bottom\"] {\n bottom: 0;\n transform: translateX(-50%) translateY(50%);\n}\n\n.camox-add-block[data-camox-hidden] {\n opacity: 0;\n pointer-events: none;\n}\n\n.camox-add-block-hitarea {\n width: 120px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.camox-add-block-button {\n display: flex;\n align-items: center;\n gap: 0px;\n padding: 0px;\n width: 20px;\n height: 20px;\n justify-content: center;\n background-color: var(--camox-overlay-color-selected);\n color: white;\n border: none;\n border-radius: 9999px;\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n white-space: nowrap;\n transition: all 150ms ease;\n}\n\n.camox-add-block-button[data-camox-expanded] {\n gap: 4px;\n padding: 4px 8px;\n width: auto;\n height: auto;\n}\n";
3
+ //#endregion
4
+ export { studio_overlays_default as default };