@nextsparkjs/core 0.1.0-beta.67 → 0.1.0-beta.69
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/components/dashboard/block-editor/block-picker.d.ts +7 -2
- package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -1
- package/dist/components/dashboard/block-editor/block-picker.js +27 -20
- package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts.map +1 -1
- package/dist/components/dashboard/block-editor/block-preview-canvas.js +37 -37
- package/dist/components/dashboard/block-editor/block-settings-panel.js +3 -3
- package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -1
- package/dist/components/dashboard/block-editor/builder-editor-view.js +124 -82
- package/dist/components/dashboard/block-editor/config-panel.d.ts +18 -0
- package/dist/components/dashboard/block-editor/config-panel.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/config-panel.js +413 -0
- package/dist/components/dashboard/block-editor/floating-block-toolbar.js +1 -1
- package/dist/components/dashboard/block-editor/pattern-card.js +1 -1
- package/dist/components/dashboard/block-editor/pattern-reference-preview.js +1 -1
- package/dist/components/dashboard/block-editor/sortable-block.js +1 -1
- package/dist/components/dashboard/block-editor/tree-view-node.d.ts +11 -0
- package/dist/components/dashboard/block-editor/tree-view-node.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/tree-view-node.js +91 -0
- package/dist/components/dashboard/block-editor/tree-view.d.ts +17 -0
- package/dist/components/dashboard/block-editor/tree-view.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/tree-view.js +125 -0
- package/dist/components/dashboard/block-editor/viewport-toggle.d.ts +10 -0
- package/dist/components/dashboard/block-editor/viewport-toggle.d.ts.map +1 -0
- package/dist/components/dashboard/block-editor/viewport-toggle.js +55 -0
- package/dist/components/public/pageBuilder/PageRenderer.d.ts.map +1 -1
- package/dist/components/public/pageBuilder/PageRenderer.js +10 -1
- package/dist/components/settings/layouts/SettingsSidebar.d.ts.map +1 -1
- package/dist/components/settings/layouts/SettingsSidebar.js +14 -0
- package/dist/components/ui/dynamic-icon.d.ts +12 -0
- package/dist/components/ui/dynamic-icon.d.ts.map +1 -0
- package/dist/components/ui/dynamic-icon.js +11 -0
- package/dist/components/ui/index.d.ts +7 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +7 -0
- package/dist/components/ui/skeleton-dashboard.d.ts +32 -0
- package/dist/components/ui/skeleton-dashboard.d.ts.map +1 -0
- package/dist/components/ui/skeleton-dashboard.js +69 -0
- package/dist/components/ui/skeleton-detail.d.ts.map +1 -1
- package/dist/components/ui/skeleton-detail.js +0 -1
- package/dist/components/ui/skeleton-features.d.ts +27 -0
- package/dist/components/ui/skeleton-features.d.ts.map +1 -0
- package/dist/components/ui/skeleton-features.js +90 -0
- package/dist/components/ui/skeleton-form.d.ts.map +1 -1
- package/dist/components/ui/skeleton-form.js +0 -1
- package/dist/components/ui/skeleton-list.d.ts.map +1 -1
- package/dist/components/ui/skeleton-list.js +0 -1
- package/dist/components/ui/skeleton-public.d.ts +26 -0
- package/dist/components/ui/skeleton-public.d.ts.map +1 -0
- package/dist/components/ui/skeleton-public.js +61 -0
- package/dist/components/ui/skeleton-settings.d.ts +54 -0
- package/dist/components/ui/skeleton-settings.d.ts.map +1 -0
- package/dist/components/ui/skeleton-settings.js +332 -0
- package/dist/components/ui/skeleton.d.ts +23 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js +46 -2
- package/dist/contexts/TeamContext.d.ts +2 -0
- package/dist/contexts/TeamContext.d.ts.map +1 -1
- package/dist/contexts/TeamContext.js +78 -68
- package/dist/hooks/usePrefetch.d.ts +43 -0
- package/dist/hooks/usePrefetch.d.ts.map +1 -0
- package/dist/hooks/usePrefetch.js +56 -0
- package/dist/lib/actions/index.d.ts +27 -14
- package/dist/lib/actions/index.d.ts.map +1 -1
- package/dist/lib/actions/index.js +19 -1
- package/dist/lib/actions/team.actions.d.ts +107 -0
- package/dist/lib/actions/team.actions.d.ts.map +1 -0
- package/dist/lib/actions/team.actions.js +220 -0
- package/dist/lib/actions/user.actions.d.ts +99 -0
- package/dist/lib/actions/user.actions.d.ts.map +1 -0
- package/dist/lib/actions/user.actions.js +149 -0
- package/dist/lib/selectors/core-selectors.d.ts +98 -44
- package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/block-editor.selectors.d.ts +136 -71
- package/dist/lib/selectors/domains/block-editor.selectors.d.ts.map +1 -1
- package/dist/lib/selectors/domains/block-editor.selectors.js +130 -60
- package/dist/lib/selectors/selectors.d.ts +196 -88
- package/dist/lib/selectors/selectors.d.ts.map +1 -1
- package/dist/messages/de/devtools.json +4 -0
- package/dist/messages/de/index.d.ts +4 -0
- package/dist/messages/de/index.d.ts.map +1 -1
- package/dist/messages/en/admin.json +15 -1
- package/dist/messages/en/devtools.json +16 -0
- package/dist/messages/en/index.d.ts +30 -0
- package/dist/messages/en/index.d.ts.map +1 -1
- package/dist/messages/es/admin.json +16 -1
- package/dist/messages/es/devtools.json +4 -0
- package/dist/messages/es/index.d.ts +19 -0
- package/dist/messages/es/index.d.ts.map +1 -1
- package/dist/messages/fr/devtools.json +4 -0
- package/dist/messages/fr/index.d.ts +4 -0
- package/dist/messages/fr/index.d.ts.map +1 -1
- package/dist/messages/it/devtools.json +4 -0
- package/dist/messages/it/index.d.ts +4 -0
- package/dist/messages/it/index.d.ts.map +1 -1
- package/dist/messages/pt/devtools.json +4 -0
- package/dist/messages/pt/index.d.ts +4 -0
- package/dist/messages/pt/index.d.ts.map +1 -1
- package/dist/nextspark-entities.d.ts +59 -0
- package/dist/presets/blocks/cta-section/component.tsx +4 -4
- package/dist/presets/blocks/features-grid/component.tsx +5 -5
- package/dist/presets/blocks/hero/component.tsx +2 -2
- package/dist/presets/blocks/testimonials/component.tsx +4 -4
- package/dist/presets/blocks/text-content/component.tsx +2 -2
- package/dist/presets/theme/blocks/hero/component.tsx +2 -2
- package/dist/presets/theme/tests/cypress/src/core/BlockEditorBasePOM.ts +123 -24
- package/dist/styles/classes.json +22 -2
- package/dist/styles/ui.css +1 -1
- package/dist/templates/app/(public)/[...slug]/page.tsx +2 -1
- package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +1 -1
- package/dist/templates/app/api/devtools/config/entities/route.ts +2 -1
- package/dist/templates/app/api/user/plan-flags/route.ts +1 -1
- package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +4 -2
- package/dist/templates/app/dashboard/(main)/layout.tsx +2 -1
- package/dist/templates/app/dashboard/(main)/loading.tsx +5 -0
- package/dist/templates/app/dashboard/features/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/billing/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/password/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/plans/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/profile/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/security/loading.tsx +5 -0
- package/dist/templates/app/dashboard/settings/teams/loading.tsx +5 -0
- package/dist/templates/app/devtools/config/page.tsx +1 -1
- package/dist/templates/app/devtools/page.tsx +1 -1
- package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +1 -1
- package/dist/templates/contents/themes/starter/messages/de/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/de/index.ts +15 -0
- package/dist/templates/contents/themes/starter/messages/en/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/en/index.ts +15 -0
- package/dist/templates/contents/themes/starter/messages/es/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/es/index.ts +15 -0
- package/dist/templates/contents/themes/starter/messages/fr/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/fr/index.ts +15 -0
- package/dist/templates/contents/themes/starter/messages/it/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/it/index.ts +13 -0
- package/dist/templates/contents/themes/starter/messages/pt/common.json +4 -1
- package/dist/templates/contents/themes/starter/messages/pt/index.ts +13 -0
- package/dist/templates/contents/themes/starter/styles/globals.css +3 -1
- package/dist/templates/contents/themes/starter/templates/(dashboard)/analytics/loading.tsx +5 -0
- package/dist/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
- package/dist/templates/features/blog/blocks/post-content/component.tsx +2 -2
- package/dist/templates/features/pages/blocks/hero/component.tsx +2 -2
- package/dist/templates/next.config.mjs +10 -3
- package/dist/templates/{middleware.ts → proxy.ts} +5 -6
- package/globals.css +54 -0
- package/nextspark-entities.d.ts +59 -0
- package/package.json +18 -16
- package/scripts/build/registry/discovery/api-presets.mjs +20 -12
- package/scripts/build/registry/generators/api-presets-registry.mjs +18 -5
- package/scripts/build/registry/generators/block-registry.mjs +14 -3
- package/scripts/build/registry/generators/docs-registry.mjs +21 -3
- package/scripts/build/registry/generators/translation-registry.mjs +16 -7
- package/scripts/build/theme.mjs +2 -1
- package/templates/app/(public)/[...slug]/page.tsx +2 -1
- package/templates/app/(public)/docs/[section]/[page]/page.tsx +1 -1
- package/templates/app/api/auth/[...all]/route.ts +13 -5
- package/templates/app/api/devtools/config/entities/route.ts +2 -1
- package/templates/app/api/user/plan-flags/route.ts +1 -1
- package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +4 -2
- package/templates/app/dashboard/(main)/layout.tsx +2 -1
- package/templates/app/dashboard/(main)/loading.tsx +5 -0
- package/templates/app/dashboard/features/loading.tsx +5 -0
- package/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
- package/templates/app/dashboard/settings/billing/loading.tsx +5 -0
- package/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
- package/templates/app/dashboard/settings/loading.tsx +5 -0
- package/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
- package/templates/app/dashboard/settings/password/loading.tsx +5 -0
- package/templates/app/dashboard/settings/plans/loading.tsx +5 -0
- package/templates/app/dashboard/settings/profile/loading.tsx +5 -0
- package/templates/app/dashboard/settings/security/loading.tsx +5 -0
- package/templates/app/dashboard/settings/teams/loading.tsx +5 -0
- package/templates/app/devtools/config/page.tsx +1 -1
- package/templates/app/devtools/page.tsx +1 -1
- package/templates/app/devtools/tests/[[...path]]/page.tsx +1 -1
- package/templates/contents/themes/starter/config/app.config.ts +8 -7
- package/templates/contents/themes/starter/messages/de/common.json +4 -1
- package/templates/contents/themes/starter/messages/de/index.ts +15 -0
- package/templates/contents/themes/starter/messages/en/common.json +4 -1
- package/templates/contents/themes/starter/messages/en/index.ts +15 -0
- package/templates/contents/themes/starter/messages/es/common.json +4 -1
- package/templates/contents/themes/starter/messages/es/index.ts +15 -0
- package/templates/contents/themes/starter/messages/fr/common.json +4 -1
- package/templates/contents/themes/starter/messages/fr/index.ts +15 -0
- package/templates/contents/themes/starter/messages/it/common.json +4 -1
- package/templates/contents/themes/starter/messages/it/index.ts +13 -0
- package/templates/contents/themes/starter/messages/pt/common.json +4 -1
- package/templates/contents/themes/starter/messages/pt/index.ts +13 -0
- package/templates/contents/themes/starter/styles/globals.css +3 -1
- package/templates/contents/themes/starter/templates/(dashboard)/analytics/loading.tsx +5 -0
- package/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
- package/templates/features/blog/blocks/post-content/component.tsx +2 -2
- package/templates/features/pages/blocks/hero/component.tsx +2 -2
- package/templates/next.config.mjs +10 -3
- package/templates/pnpm-workspace.yaml +5 -0
- package/templates/{middleware.ts → proxy.ts} +5 -6
- package/tests/jest/setup.ts +5 -0
- package/dist/presets/plugin/.env.example.template +0 -19
|
@@ -8,16 +8,16 @@ import { v4 as uuidv4 } from "uuid";
|
|
|
8
8
|
import { Button } from "../../ui/button.js";
|
|
9
9
|
import { Input } from "../../ui/input.js";
|
|
10
10
|
import { Separator } from "../../ui/separator.js";
|
|
11
|
-
import { ArrowLeft, Save, ExternalLink, Eye,
|
|
11
|
+
import { ArrowLeft, Save, ExternalLink, Eye, Settings } from "lucide-react";
|
|
12
12
|
import Link from "next/link";
|
|
13
13
|
import { toast } from "sonner";
|
|
14
14
|
import { sel } from "../../../lib/test/index.js";
|
|
15
15
|
import { BlockPicker } from "./block-picker.js";
|
|
16
|
-
import { BlockCanvas } from "./block-canvas.js";
|
|
17
16
|
import { BlockPreviewCanvas } from "./block-preview-canvas.js";
|
|
18
17
|
import { BlockSettingsPanel } from "./block-settings-panel.js";
|
|
19
|
-
import { PageSettingsPanel } from "./page-settings-panel.js";
|
|
20
18
|
import { BlockService } from "../../../lib/services/block.service.js";
|
|
19
|
+
import { ViewportToggle } from "./viewport-toggle.js";
|
|
20
|
+
import { ConfigPanel } from "./config-panel.js";
|
|
21
21
|
import { useSidebar } from "../../../contexts/sidebar-context.js";
|
|
22
22
|
import { cn } from "../../../lib/utils.js";
|
|
23
23
|
function getTeamId() {
|
|
@@ -42,7 +42,7 @@ function slugify(text) {
|
|
|
42
42
|
return text.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9\s-]/g, "").trim().replace(/\s+/g, "-").replace(/-+/g, "-");
|
|
43
43
|
}
|
|
44
44
|
function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
45
|
-
var _a
|
|
45
|
+
var _a;
|
|
46
46
|
const router = useRouter();
|
|
47
47
|
const t = useTranslations("admin.builder");
|
|
48
48
|
const queryClient = useQueryClient();
|
|
@@ -55,6 +55,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
55
55
|
const [status, setStatus] = useState("draft");
|
|
56
56
|
const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);
|
|
57
57
|
const [viewMode, setViewMode] = useState("preview");
|
|
58
|
+
const [viewportMode, setViewportMode] = useState("desktop");
|
|
58
59
|
const [leftSidebarMode, setLeftSidebarMode] = useState("blocks");
|
|
59
60
|
const [pageSettings, setPageSettings] = useState({
|
|
60
61
|
seo: {},
|
|
@@ -64,8 +65,8 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
64
65
|
const [validationErrors, setValidationErrors] = useState({});
|
|
65
66
|
const titleInputRef = useRef(null);
|
|
66
67
|
const showFieldsOption = useMemo(() => {
|
|
67
|
-
var _a2,
|
|
68
|
-
return (((
|
|
68
|
+
var _a2, _b, _c;
|
|
69
|
+
return (((_b = (_a2 = entityConfig.builder) == null ? void 0 : _a2.sidebarFields) == null ? void 0 : _b.length) ?? 0) > 0 || ((_c = entityConfig.taxonomies) == null ? void 0 : _c.enabled);
|
|
69
70
|
}, [entityConfig]);
|
|
70
71
|
const showPatternsTab = useMemo(() => {
|
|
71
72
|
return entitySlug !== "patterns";
|
|
@@ -94,7 +95,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
94
95
|
enabled: mode === "edit" && !!id
|
|
95
96
|
});
|
|
96
97
|
useEffect(() => {
|
|
97
|
-
var _a2,
|
|
98
|
+
var _a2, _b;
|
|
98
99
|
if (mode === "edit" && (entityData == null ? void 0 : entityData.data)) {
|
|
99
100
|
const entity = entityData.data;
|
|
100
101
|
setTitle(entity.title ?? "");
|
|
@@ -104,7 +105,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
104
105
|
setBlocks(entity.blocks || []);
|
|
105
106
|
setPageSettings(entity.settings || { seo: {}, customFields: [] });
|
|
106
107
|
const fields = {};
|
|
107
|
-
(
|
|
108
|
+
(_b = (_a2 = entityConfig.builder) == null ? void 0 : _a2.sidebarFields) == null ? void 0 : _b.forEach((field) => {
|
|
108
109
|
if (entity[field] !== void 0) {
|
|
109
110
|
fields[field] = entity[field];
|
|
110
111
|
}
|
|
@@ -113,7 +114,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
113
114
|
}
|
|
114
115
|
}, [entityData, entityConfig, mode]);
|
|
115
116
|
useEffect(() => {
|
|
116
|
-
var _a2,
|
|
117
|
+
var _a2, _b;
|
|
117
118
|
if (mode === "create") {
|
|
118
119
|
setHasUnsavedChanges(title.length > 0 || blocks.length > 0 || status !== "draft");
|
|
119
120
|
return;
|
|
@@ -121,7 +122,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
121
122
|
if (!(entityData == null ? void 0 : entityData.data)) return;
|
|
122
123
|
const entity = entityData.data;
|
|
123
124
|
const hasChanges = title !== entity.title || slug !== entity.slug || status !== (entity.status || "draft") || JSON.stringify(blocks) !== JSON.stringify(entity.blocks || []) || JSON.stringify(pageSettings) !== JSON.stringify(entity.settings || { seo: {}, customFields: [] }) || JSON.stringify(entityFields) !== JSON.stringify(
|
|
124
|
-
((
|
|
125
|
+
((_b = (_a2 = entityConfig.builder) == null ? void 0 : _a2.sidebarFields) == null ? void 0 : _b.reduce((acc, field) => {
|
|
125
126
|
if (entity[field] !== void 0) acc[field] = entity[field];
|
|
126
127
|
return acc;
|
|
127
128
|
}, {})) || {}
|
|
@@ -238,9 +239,19 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
238
239
|
blockSlug,
|
|
239
240
|
props: {}
|
|
240
241
|
};
|
|
242
|
+
if (selectedBlockId) {
|
|
243
|
+
const index = blocks.findIndex((b) => b.id === selectedBlockId);
|
|
244
|
+
if (index !== -1) {
|
|
245
|
+
const newBlocks = [...blocks];
|
|
246
|
+
newBlocks.splice(index + 1, 0, newBlock);
|
|
247
|
+
setBlocks(newBlocks);
|
|
248
|
+
setSelectedBlockId(newBlock.id);
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
241
252
|
setBlocks((prev) => [...prev, newBlock]);
|
|
242
253
|
setSelectedBlockId(newBlock.id);
|
|
243
|
-
}, []);
|
|
254
|
+
}, [blocks, selectedBlockId]);
|
|
244
255
|
const handleAddPattern = useCallback((patternId) => {
|
|
245
256
|
const patternRef = {
|
|
246
257
|
type: "pattern",
|
|
@@ -278,7 +289,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
278
289
|
));
|
|
279
290
|
}, []);
|
|
280
291
|
const handleReorderBlocks = useCallback((newBlocks) => {
|
|
281
|
-
setBlocks(newBlocks);
|
|
292
|
+
setBlocks(newBlocks.filter((b) => !("ref" in b)));
|
|
282
293
|
}, []);
|
|
283
294
|
const handleMoveBlockUp = useCallback((blockId) => {
|
|
284
295
|
setBlocks((prev) => {
|
|
@@ -308,11 +319,17 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
308
319
|
setLeftSidebarMode(value);
|
|
309
320
|
}
|
|
310
321
|
}, [leftSidebarMode]);
|
|
322
|
+
const handleViewModeChange = useCallback((mode2) => {
|
|
323
|
+
setViewMode(mode2);
|
|
324
|
+
if (mode2 === "settings") {
|
|
325
|
+
setSelectedBlockId(null);
|
|
326
|
+
}
|
|
327
|
+
}, []);
|
|
311
328
|
const selectedBlock = selectedBlockId ? blocks.find((b) => b.id === selectedBlockId) : void 0;
|
|
312
329
|
const publicUrl = useMemo(() => {
|
|
313
|
-
var _a2,
|
|
330
|
+
var _a2, _b, _c;
|
|
314
331
|
if (status !== "published" || !slug) return null;
|
|
315
|
-
const basePath = ((_a2 = entityConfig.access) == null ? void 0 : _a2.basePath) ?? ((_c = (
|
|
332
|
+
const basePath = ((_a2 = entityConfig.access) == null ? void 0 : _a2.basePath) ?? ((_c = (_b = entityConfig.builder) == null ? void 0 : _b.public) == null ? void 0 : _c.basePath) ?? "";
|
|
316
333
|
return basePath === "/" ? `/${slug}` : `${basePath}/${slug}`;
|
|
317
334
|
}, [status, slug, entityConfig]);
|
|
318
335
|
const leftSidebarOptions = useMemo(() => {
|
|
@@ -344,7 +361,7 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
344
361
|
return /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center h-screen", children: /* @__PURE__ */ jsx("p", { className: "text-muted-foreground", children: t("loading") }) });
|
|
345
362
|
}
|
|
346
363
|
return /* @__PURE__ */ jsxs("div", { className: cn(
|
|
347
|
-
"fixed inset-0 pt-14 pb-20 lg:top-16 lg:pt-0 lg:pb-0 flex flex-col bg-background z-20 transition-
|
|
364
|
+
"fixed inset-0 pt-14 pb-20 lg:top-16 lg:pt-0 lg:pb-0 flex flex-col bg-background z-20 transition-[width,padding] duration-300",
|
|
348
365
|
isCollapsed ? "lg:left-16" : "lg:left-64"
|
|
349
366
|
), "data-cy": sel("blockEditor.container"), children: [
|
|
350
367
|
/* @__PURE__ */ jsx(
|
|
@@ -438,45 +455,54 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
438
455
|
)
|
|
439
456
|
] })
|
|
440
457
|
] }),
|
|
441
|
-
/* @__PURE__ */ jsxs(
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
458
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
459
|
+
/* @__PURE__ */ jsxs(
|
|
460
|
+
"div",
|
|
461
|
+
{
|
|
462
|
+
className: "bg-muted p-1 rounded-lg flex items-center text-sm font-medium",
|
|
463
|
+
"data-cy": sel("blockEditor.header.viewToggle"),
|
|
464
|
+
children: [
|
|
465
|
+
/* @__PURE__ */ jsxs(
|
|
466
|
+
"button",
|
|
467
|
+
{
|
|
468
|
+
className: cn(
|
|
469
|
+
"px-3 py-1.5 rounded-md transition-colors flex items-center gap-2",
|
|
470
|
+
viewMode === "preview" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-muted-foreground/10"
|
|
471
|
+
),
|
|
472
|
+
onClick: () => handleViewModeChange("preview"),
|
|
473
|
+
"data-cy": sel("blockEditor.header.viewPreview"),
|
|
474
|
+
children: [
|
|
475
|
+
/* @__PURE__ */ jsx(Eye, { className: "h-3.5 w-3.5" }),
|
|
476
|
+
/* @__PURE__ */ jsx("span", { children: t("viewMode.preview") })
|
|
477
|
+
]
|
|
478
|
+
}
|
|
479
|
+
),
|
|
480
|
+
/* @__PURE__ */ jsxs(
|
|
481
|
+
"button",
|
|
482
|
+
{
|
|
483
|
+
className: cn(
|
|
484
|
+
"px-3 py-1.5 rounded-md transition-colors flex items-center gap-2",
|
|
485
|
+
viewMode === "settings" ? "bg-background text-foreground shadow-sm" : "text-muted-foreground hover:text-foreground hover:bg-muted-foreground/10"
|
|
486
|
+
),
|
|
487
|
+
onClick: () => handleViewModeChange("settings"),
|
|
488
|
+
"data-cy": sel("blockEditor.header.viewSettings"),
|
|
489
|
+
children: [
|
|
490
|
+
/* @__PURE__ */ jsx(Settings, { className: "h-3.5 w-3.5" }),
|
|
491
|
+
/* @__PURE__ */ jsx("span", { children: t("viewMode.settings") })
|
|
492
|
+
]
|
|
493
|
+
}
|
|
494
|
+
)
|
|
495
|
+
]
|
|
496
|
+
}
|
|
497
|
+
),
|
|
498
|
+
viewMode === "preview" && /* @__PURE__ */ jsx(
|
|
499
|
+
ViewportToggle,
|
|
500
|
+
{
|
|
501
|
+
value: viewportMode,
|
|
502
|
+
onChange: setViewportMode
|
|
503
|
+
}
|
|
504
|
+
)
|
|
505
|
+
] }),
|
|
480
506
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 flex-1 justify-end", children: [
|
|
481
507
|
/* @__PURE__ */ jsxs(
|
|
482
508
|
"div",
|
|
@@ -557,42 +583,58 @@ function BuilderEditorView({ entitySlug, entityConfig, id, mode }) {
|
|
|
557
583
|
entityFields,
|
|
558
584
|
onEntityFieldChange: handleEntityFieldChange,
|
|
559
585
|
showFieldsTab: !!showFieldsOption,
|
|
560
|
-
showPatternsTab
|
|
586
|
+
showPatternsTab,
|
|
587
|
+
pageBlocks: blocks,
|
|
588
|
+
selectedBlockId,
|
|
589
|
+
onSelectBlock: setSelectedBlockId,
|
|
590
|
+
onReorderBlocks: handleReorderBlocks
|
|
561
591
|
}
|
|
562
592
|
) }),
|
|
563
|
-
/* @__PURE__ */
|
|
593
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-hidden", children: [
|
|
564
594
|
/* @__PURE__ */ jsx(
|
|
565
|
-
|
|
595
|
+
"div",
|
|
566
596
|
{
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
597
|
+
className: cn(
|
|
598
|
+
"h-full overflow-y-auto bg-muted/30",
|
|
599
|
+
viewMode !== "preview" && "hidden"
|
|
600
|
+
),
|
|
601
|
+
"data-cy": sel("blockEditor.previewCanvas.container"),
|
|
602
|
+
children: /* @__PURE__ */ jsx(
|
|
603
|
+
"div",
|
|
604
|
+
{
|
|
605
|
+
className: "mx-auto transition-[width] duration-200 min-h-full",
|
|
606
|
+
style: {
|
|
607
|
+
width: viewportMode === "mobile" ? "375px" : "100%",
|
|
608
|
+
maxWidth: "100%"
|
|
609
|
+
},
|
|
610
|
+
"data-cy": sel("blockEditor.previewCanvas.viewport", { mode: viewportMode }),
|
|
611
|
+
children: /* @__PURE__ */ jsx("div", { className: "min-h-full bg-background", children: /* @__PURE__ */ jsx(
|
|
612
|
+
BlockPreviewCanvas,
|
|
613
|
+
{
|
|
614
|
+
blocks,
|
|
615
|
+
selectedBlockId,
|
|
616
|
+
onSelectBlock: setSelectedBlockId,
|
|
617
|
+
onMoveUp: handleMoveBlockUp,
|
|
618
|
+
onMoveDown: handleMoveBlockDown,
|
|
619
|
+
onDuplicate: handleDuplicateBlock,
|
|
620
|
+
onRemove: handleRemoveBlock
|
|
621
|
+
}
|
|
622
|
+
) })
|
|
623
|
+
}
|
|
624
|
+
)
|
|
575
625
|
}
|
|
576
626
|
),
|
|
577
|
-
|
|
578
|
-
|
|
627
|
+
/* @__PURE__ */ jsx("div", { className: cn(viewMode !== "settings" && "hidden"), children: /* @__PURE__ */ jsx(
|
|
628
|
+
ConfigPanel,
|
|
579
629
|
{
|
|
580
|
-
|
|
581
|
-
|
|
630
|
+
entityConfig,
|
|
631
|
+
entityFields,
|
|
632
|
+
onEntityFieldChange: handleEntityFieldChange,
|
|
633
|
+
pageSettings,
|
|
634
|
+
onPageSettingsChange: setPageSettings
|
|
582
635
|
}
|
|
583
|
-
)
|
|
584
|
-
] })
|
|
585
|
-
BlockPreviewCanvas,
|
|
586
|
-
{
|
|
587
|
-
blocks,
|
|
588
|
-
selectedBlockId,
|
|
589
|
-
onSelectBlock: setSelectedBlockId,
|
|
590
|
-
onMoveUp: handleMoveBlockUp,
|
|
591
|
-
onMoveDown: handleMoveBlockDown,
|
|
592
|
-
onDuplicate: handleDuplicateBlock,
|
|
593
|
-
onRemove: handleRemoveBlock
|
|
594
|
-
}
|
|
595
|
-
) }) }),
|
|
636
|
+
) })
|
|
637
|
+
] }),
|
|
596
638
|
/* @__PURE__ */ jsx("div", { className: "w-96 border-l overflow-hidden shadow-sm", children: /* @__PURE__ */ jsx(
|
|
597
639
|
BlockSettingsPanel,
|
|
598
640
|
{
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClientEntityConfig } from '@nextsparkjs/registries/entity-registry.client';
|
|
2
|
+
import type { PageSettings } from './page-settings-panel';
|
|
3
|
+
interface ConfigPanelProps {
|
|
4
|
+
entityConfig: ClientEntityConfig;
|
|
5
|
+
entityFields: Record<string, unknown>;
|
|
6
|
+
onEntityFieldChange: (field: string, value: unknown) => void;
|
|
7
|
+
pageSettings: PageSettings;
|
|
8
|
+
onPageSettingsChange: (settings: PageSettings) => void;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* ConfigPanel - Settings view for the center column
|
|
12
|
+
*
|
|
13
|
+
* Combines entity fields and SEO/meta settings in a single scrollable panel
|
|
14
|
+
* with two collapsible sections.
|
|
15
|
+
*/
|
|
16
|
+
export declare function ConfigPanel({ entityConfig, entityFields, onEntityFieldChange, pageSettings, onPageSettingsChange }: ConfigPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=config-panel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-panel.d.ts","sourceRoot":"","sources":["../../../../src/components/dashboard/block-editor/config-panel.tsx"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAA;AACxF,OAAO,KAAK,EAAE,YAAY,EAAoC,MAAM,uBAAuB,CAAA;AAS3F,UAAU,gBAAgB;IACxB,YAAY,EAAE,kBAAkB,CAAA;IAChC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACrC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5D,YAAY,EAAE,YAAY,CAAA;IAC1B,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAA;CACvD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,EACrB,EAAE,gBAAgB,2CAyZlB"}
|