camox 0.6.1 → 0.7.1
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/AddBlockControlBar.d.ts.map +1 -1
- package/dist/core/components/AddBlockControlBar.js +51 -117
- package/dist/core/components/lexical/InlineLexicalEditor.js +1 -1
- package/dist/core/components/lexical/SidebarLexicalEditor.js +1 -1
- package/dist/core/createApp.d.ts +314 -44
- package/dist/core/createApp.d.ts.map +1 -1
- package/dist/core/createBlock.d.ts +160 -22
- package/dist/core/createBlock.d.ts.map +1 -1
- package/dist/core/createBlock.js +467 -579
- package/dist/features/content/components/AssetCard.js +1 -1
- package/dist/features/preview/CamoxPreview.d.ts.map +1 -1
- package/dist/features/preview/CamoxPreview.js +13 -17
- package/dist/features/preview/components/AddBlockSheet.d.ts.map +1 -1
- package/dist/features/preview/components/AddBlockSheet.js +2 -3
- package/dist/features/preview/components/AssetLightbox.d.ts.map +1 -1
- package/dist/features/preview/components/AssetLightbox.js +13 -15
- package/dist/features/preview/components/BlockActionsPopover.d.ts.map +1 -1
- package/dist/features/preview/components/BlockActionsPopover.js +19 -22
- package/dist/features/preview/components/CreatePageSheet.d.ts.map +1 -1
- package/dist/features/preview/components/CreatePageSheet.js +10 -4
- package/dist/features/preview/components/EditPageSheet.d.ts +1 -1
- package/dist/features/preview/components/EditPageSheet.d.ts.map +1 -1
- package/dist/features/preview/components/EditPageSheet.js +20 -17
- package/dist/features/preview/components/FieldOverlayStyles.d.ts +2 -0
- package/dist/features/preview/components/FieldOverlayStyles.d.ts.map +1 -0
- package/dist/features/preview/components/FieldOverlayStyles.js +15 -0
- package/dist/features/preview/components/Frame.d.ts +20 -0
- package/dist/features/preview/components/Frame.d.ts.map +1 -0
- package/dist/features/preview/components/Frame.js +162 -0
- package/dist/features/preview/components/LinkFieldEditor.d.ts.map +1 -1
- package/dist/features/preview/components/LinkFieldEditor.js +11 -12
- package/dist/features/preview/components/OverlayTracker.js +1 -1
- package/dist/features/preview/components/PageContentSheet.d.ts.map +1 -1
- package/dist/features/preview/components/PageContentSheet.js +3 -3
- package/dist/features/preview/components/PageLocationFieldset.d.ts.map +1 -1
- package/dist/features/preview/components/PageLocationFieldset.js +9 -11
- package/dist/features/preview/components/PagePicker.d.ts.map +1 -1
- package/dist/features/preview/components/PagePicker.js +15 -15
- package/dist/features/preview/components/PageTree.d.ts.map +1 -1
- package/dist/features/preview/components/PageTree.js +215 -203
- package/dist/features/preview/components/PreviewPanel.d.ts.map +1 -1
- package/dist/features/preview/components/PreviewPanel.js +21 -15
- package/dist/features/preview/components/PreviewSideSheet.d.ts.map +1 -1
- package/dist/features/preview/components/PreviewSideSheet.js +42 -26
- package/dist/features/preview/components/PreviewToolbar.d.ts.map +1 -1
- package/dist/features/preview/components/PreviewToolbar.js +191 -171
- package/dist/features/preview/components/RepeatableItemsList.d.ts.map +1 -1
- package/dist/features/preview/components/RepeatableItemsList.js +4 -5
- package/dist/features/preview/components/TextFormatToolbar.d.ts.map +1 -1
- package/dist/features/preview/components/TextFormatToolbar.js +5 -6
- package/dist/features/preview/components/UnlinkAssetButton.d.ts.map +1 -1
- package/dist/features/preview/components/UnlinkAssetButton.js +70 -91
- package/dist/features/preview/components/useUpdateBlockPosition.js +1 -1
- package/dist/features/preview/studio-overlays.css?inline.js +4 -0
- package/dist/features/provider/components/CamoxAppContext.d.ts +314 -44
- package/dist/features/provider/components/CamoxAppContext.d.ts.map +1 -1
- package/dist/features/provider/components/CommandPalette.d.ts.map +1 -1
- package/dist/features/provider/components/CommandPalette.js +22 -14
- package/dist/features/routes/pageRoute.js +1 -1
- package/dist/features/studio/CamoxStudio.d.ts +2 -3
- package/dist/features/studio/CamoxStudio.d.ts.map +1 -1
- package/dist/features/studio/components/EnvironmentMenu.d.ts.map +1 -1
- package/dist/features/studio/components/EnvironmentMenu.js +39 -35
- package/dist/features/studio/components/Navbar.js +2 -2
- package/dist/features/studio/components/ProjectMenu.d.ts.map +1 -1
- package/dist/features/studio/components/ProjectMenu.js +143 -129
- package/dist/features/studio/components/UserButton.d.ts.map +1 -1
- package/dist/features/studio/components/UserButton.js +8 -9
- package/dist/features/vite/vite.d.ts +2 -0
- package/dist/features/vite/vite.d.ts.map +1 -1
- package/dist/features/vite/vite.js +26 -30
- package/dist/lib/api-client-server.d.ts +1 -1
- package/dist/lib/api-client-server.d.ts.map +1 -1
- package/dist/lib/api-client.d.ts +18 -18
- package/dist/lib/api-client.d.ts.map +1 -1
- package/dist/lib/normalized-data.js +1 -1
- package/dist/lib/queries.d.ts +7 -7
- package/dist/lib/queries.js +1 -1
- package/dist/studio.css +1 -1
- package/package.json +5 -6
- package/skills/camox-block/SKILL.md +55 -28
- package/dist/features/preview/overlayConstants.d.ts +0 -19
- package/dist/features/preview/overlayConstants.d.ts.map +0 -1
- 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(
|
|
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]
|
|
64
|
-
t7 = /* @__PURE__ */ jsx(
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
$[
|
|
81
|
-
$[
|
|
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]
|
|
86
|
-
t9 = /* @__PURE__ */ jsx(
|
|
87
|
-
|
|
88
|
-
|
|
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 ($[
|
|
91
|
-
t10 = /* @__PURE__ */
|
|
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]
|
|
97
|
-
t11 = /* @__PURE__ */ jsxs(
|
|
98
|
-
$[19] =
|
|
99
|
-
|
|
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 ($[
|
|
102
|
-
t12 = ()
|
|
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]
|
|
108
|
-
t13 = /* @__PURE__ */ jsx(
|
|
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] =
|
|
114
|
-
|
|
113
|
+
$[22] = onUnlink;
|
|
114
|
+
$[23] = t13;
|
|
115
|
+
} else t13 = $[23];
|
|
115
116
|
let t14;
|
|
116
|
-
if ($[
|
|
117
|
+
if ($[24] !== deleteFile || $[25] !== fileId || $[26] !== onUnlink) {
|
|
117
118
|
t14 = /* @__PURE__ */ jsx(AlertDialogAction, {
|
|
118
|
-
onClick:
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
onClick: () => {
|
|
120
|
+
onUnlink();
|
|
121
|
+
if (fileId) deleteFile.mutate({ id: fileId });
|
|
122
|
+
},
|
|
123
|
+
children: "Delete file"
|
|
121
124
|
});
|
|
122
|
-
$[
|
|
123
|
-
$[
|
|
124
|
-
|
|
125
|
+
$[24] = deleteFile;
|
|
126
|
+
$[25] = fileId;
|
|
127
|
+
$[26] = onUnlink;
|
|
128
|
+
$[27] = t14;
|
|
129
|
+
} else t14 = $[27];
|
|
125
130
|
let t15;
|
|
126
|
-
if ($[
|
|
127
|
-
t15 = (
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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:
|
|
142
|
+
children: t15
|
|
164
143
|
});
|
|
165
|
-
$[
|
|
166
|
-
$[
|
|
167
|
-
$[
|
|
168
|
-
} else
|
|
169
|
-
let
|
|
170
|
-
if ($[
|
|
171
|
-
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
175
|
-
} else
|
|
176
|
-
return
|
|
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 };
|
|
@@ -4,7 +4,7 @@ import { c } from "react/compiler-runtime";
|
|
|
4
4
|
import { useMutation, useQueryClient } from "@tanstack/react-query";
|
|
5
5
|
import { useSelector } from "@xstate/store/react";
|
|
6
6
|
import { generateKeyBetween } from "fractional-indexing";
|
|
7
|
-
import { queryKeys } from "@camox/api/query-keys";
|
|
7
|
+
import { queryKeys } from "@camox/api-contract/query-keys";
|
|
8
8
|
import { useLocation } from "@tanstack/react-router";
|
|
9
9
|
//#region src/features/preview/components/useUpdateBlockPosition.ts
|
|
10
10
|
function useUpdateBlockPosition() {
|
|
@@ -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 };
|