@nextsparkjs/core 0.1.0-beta.67 → 0.1.0-beta.68
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/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/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/en/admin.json +15 -1
- package/dist/messages/en/index.d.ts +14 -0
- package/dist/messages/en/index.d.ts.map +1 -1
- package/dist/messages/es/admin.json +16 -1
- package/dist/messages/es/index.d.ts +15 -0
- package/dist/messages/es/index.d.ts.map +1 -1
- 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 +9 -2
- package/dist/styles/ui.css +1 -1
- 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 +5 -3
- package/package.json +5 -4
- 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 +5 -3
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Block Editor Selectors - 7 First-Level Components
|
|
2
|
+
* Block Editor Selectors - 7 First-Level Components (v2.0 - UX Redesign)
|
|
3
3
|
*
|
|
4
4
|
* Architecture:
|
|
5
|
-
*
|
|
6
|
-
* │ HEADER: [←] Title
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
* │
|
|
10
|
-
* │
|
|
11
|
-
* │
|
|
12
|
-
* │
|
|
13
|
-
* │
|
|
14
|
-
* │
|
|
15
|
-
* │
|
|
16
|
-
* │
|
|
17
|
-
* │
|
|
18
|
-
* │
|
|
19
|
-
* │
|
|
20
|
-
* │
|
|
21
|
-
* │
|
|
22
|
-
* │
|
|
23
|
-
*
|
|
5
|
+
* ┌─────────────────────────────────────────────────────────────────────────────────────────┐
|
|
6
|
+
* │ HEADER: [←] [Title...............] [/slug.........] [Preview|Settings] [📱|🖥️]* ●STATUS│
|
|
7
|
+
* │ ←────────── dynamic width ─────────────────→ *only Preview │
|
|
8
|
+
* ├───────────────────────┬─────────────────────────────────────────┬───────────────────────┤
|
|
9
|
+
* │ LEFT COLUMN │ CENTER COLUMN │ RIGHT COLUMN │
|
|
10
|
+
* │ [Blocks|Patterns| │ │ Block Properties │
|
|
11
|
+
* │ Layout] │ IF TAB = "Preview": │ ───────────────── │
|
|
12
|
+
* │ ─────────────────── │ previewCanvas │ │
|
|
13
|
+
* │ │ ├── viewport: 375px (mobile) │ [Block Name] │
|
|
14
|
+
* │ Tab "Blocks": │ │ 100% (desktop) │ [Content|Design| │
|
|
15
|
+
* │ blockPicker │ └── floatingToolbar │ Advanced] │
|
|
16
|
+
* │ - Search │ │ │
|
|
17
|
+
* │ - Categories │ IF TAB = "Settings": │ form │
|
|
18
|
+
* │ - Block cards │ configPanel (single scroll) │ ├── field │
|
|
19
|
+
* │ │ ├── entityFieldsSection (collapsible)│ ├── fieldGroup │
|
|
20
|
+
* │ Tab "Patterns": │ └── seoMetaSection (collapsible) │ └── arrayField │
|
|
21
|
+
* │ (patterns list) │ │ │
|
|
22
|
+
* │ │ │ │
|
|
23
|
+
* │ Tab "Layout": ←NEW │ │ │
|
|
24
|
+
* │ treeView │ │ │
|
|
25
|
+
* │ ├── treeNode │ │ │
|
|
26
|
+
* │ └── (drag & drop) │ │ │
|
|
27
|
+
* └───────────────────────┴─────────────────────────────────────────┴───────────────────────┘
|
|
24
28
|
*
|
|
25
29
|
* Components:
|
|
26
|
-
* 1. header - Top bar (title, slug,
|
|
27
|
-
* 2. blockPicker - Left col - "
|
|
28
|
-
* 3.
|
|
29
|
-
* 4.
|
|
30
|
-
* 5.
|
|
31
|
-
* 6.
|
|
32
|
-
*
|
|
30
|
+
* 1. header - Top bar (title, slug, view tabs, viewport toggle, status, actions)
|
|
31
|
+
* 2. blockPicker - Left col - "Blocks" tab (block selector)
|
|
32
|
+
* 3. treeView - Left col - "Layout" tab (block tree structure) [NEW]
|
|
33
|
+
* 4. previewCanvas - Center col - Preview mode (real blocks with responsive viewport)
|
|
34
|
+
* 5. configPanel - Center col - Settings mode (entity fields + SEO/meta) [NEW]
|
|
35
|
+
* 6. blockPropertiesPanel - Right col - Selected block properties
|
|
36
|
+
*
|
|
37
|
+
* DEPRECATED (kept for backward compatibility):
|
|
38
|
+
* - layoutCanvas - Replaced by treeView in left column
|
|
39
|
+
* - entityFieldsPanel - Moved into configPanel
|
|
40
|
+
* - entityMetaPanel - Moved into configPanel
|
|
33
41
|
*/
|
|
34
42
|
export declare const BLOCK_EDITOR_SELECTORS: {
|
|
35
43
|
readonly container: "builder-editor";
|
|
@@ -43,8 +51,13 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
43
51
|
readonly slugInput: "builder-slug-input";
|
|
44
52
|
readonly externalLink: "builder-external-link";
|
|
45
53
|
readonly viewToggle: "builder-view-toggle";
|
|
46
|
-
readonly viewEditor: "builder-view-editor";
|
|
47
54
|
readonly viewPreview: "builder-view-preview";
|
|
55
|
+
readonly viewSettings: "builder-view-settings";
|
|
56
|
+
readonly viewportToggle: {
|
|
57
|
+
readonly container: "builder-viewport-toggle";
|
|
58
|
+
readonly mobileBtn: "builder-viewport-mobile";
|
|
59
|
+
readonly desktopBtn: "builder-viewport-desktop";
|
|
60
|
+
};
|
|
48
61
|
readonly statusSelector: "builder-status-selector";
|
|
49
62
|
readonly statusOption: "builder-status-option-{value}";
|
|
50
63
|
readonly statusDot: "builder-status-dot";
|
|
@@ -59,7 +72,7 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
59
72
|
readonly container: "block-picker";
|
|
60
73
|
readonly tabBlocks: "block-picker-tab-blocks";
|
|
61
74
|
readonly tabPatterns: "block-picker-tab-patterns";
|
|
62
|
-
readonly
|
|
75
|
+
readonly tabLayout: "block-picker-tab-layout";
|
|
63
76
|
readonly tabIndicator: "block-picker-tab-indicator";
|
|
64
77
|
readonly searchWrapper: "block-picker-search-wrapper";
|
|
65
78
|
readonly searchIcon: "block-picker-search-icon";
|
|
@@ -88,39 +101,36 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
88
101
|
readonly patternCardBlockCount: "block-picker-pattern-blocks-{id}";
|
|
89
102
|
readonly patternCardInsertButton: "block-picker-pattern-insert-{id}";
|
|
90
103
|
};
|
|
91
|
-
readonly
|
|
92
|
-
readonly container: "
|
|
93
|
-
readonly
|
|
94
|
-
readonly
|
|
95
|
-
readonly
|
|
96
|
-
readonly
|
|
97
|
-
readonly
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
readonly
|
|
101
|
-
readonly
|
|
102
|
-
readonly dropZone: "layout-canvas-dropzone";
|
|
103
|
-
readonly sortableBlock: {
|
|
104
|
-
readonly container: "sortable-block-{id}";
|
|
105
|
-
readonly card: "sortable-block-card-{id}";
|
|
106
|
-
readonly dragHandle: "sortable-block-drag-{id}";
|
|
107
|
-
readonly name: "sortable-block-name-{id}";
|
|
108
|
-
readonly category: "sortable-block-category-{id}";
|
|
109
|
-
readonly propsPreview: "sortable-block-props-{id}";
|
|
110
|
-
readonly duplicateBtn: "sortable-block-duplicate-{id}";
|
|
111
|
-
readonly removeBtn: "sortable-block-remove-{id}";
|
|
112
|
-
readonly error: "sortable-block-error-{id}";
|
|
113
|
-
};
|
|
104
|
+
readonly treeView: {
|
|
105
|
+
readonly container: "builder-tree-view";
|
|
106
|
+
readonly empty: "builder-tree-empty";
|
|
107
|
+
readonly node: "builder-tree-node-{id}";
|
|
108
|
+
readonly nodeIcon: "builder-tree-node-icon-{id}";
|
|
109
|
+
readonly nodeName: "builder-tree-node-name-{id}";
|
|
110
|
+
readonly nodeDragHandle: "builder-tree-node-drag-{id}";
|
|
111
|
+
readonly nodeSelected: "builder-tree-node-selected";
|
|
112
|
+
readonly patternGroup: "builder-tree-pattern-{ref}";
|
|
113
|
+
readonly patternGroupHeader: "builder-tree-pattern-header-{ref}";
|
|
114
|
+
readonly patternGroupBlocks: "builder-tree-pattern-blocks-{ref}";
|
|
114
115
|
};
|
|
115
116
|
readonly previewCanvas: {
|
|
116
117
|
readonly container: "preview-canvas";
|
|
117
118
|
readonly wrapper: "preview-canvas-wrapper";
|
|
118
119
|
readonly content: "preview-canvas-content";
|
|
119
120
|
readonly empty: "preview-canvas-empty";
|
|
121
|
+
readonly viewport: "preview-canvas-viewport-{mode}";
|
|
122
|
+
readonly viewportMobile: "preview-canvas-mobile";
|
|
123
|
+
readonly viewportDesktop: "preview-canvas-desktop";
|
|
124
|
+
readonly iframePreview: {
|
|
125
|
+
readonly container: "preview-iframe-container";
|
|
126
|
+
readonly loading: "preview-iframe-loading";
|
|
127
|
+
readonly frame: "preview-iframe-frame";
|
|
128
|
+
};
|
|
120
129
|
readonly block: "preview-block-{id}";
|
|
121
130
|
readonly blockWrapper: "preview-block-wrapper-{id}";
|
|
122
131
|
readonly blockSelected: "preview-block-selected-{id}";
|
|
123
132
|
readonly editingBadge: "preview-block-editing-{id}";
|
|
133
|
+
readonly blockGeneric: "preview-block-";
|
|
124
134
|
readonly floatingToolbar: {
|
|
125
135
|
readonly container: "floating-toolbar-{id}";
|
|
126
136
|
readonly dragHandle: "floating-toolbar-drag-{id}";
|
|
@@ -132,6 +142,32 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
132
142
|
readonly moveUp: "preview-block-move-up-{id}";
|
|
133
143
|
readonly moveDown: "preview-block-move-down-{id}";
|
|
134
144
|
};
|
|
145
|
+
readonly configPanel: {
|
|
146
|
+
readonly container: "builder-config-panel";
|
|
147
|
+
readonly scroll: "builder-config-scroll";
|
|
148
|
+
readonly entityFieldsSection: {
|
|
149
|
+
readonly container: "builder-config-entity-section";
|
|
150
|
+
readonly trigger: "builder-config-entity-trigger";
|
|
151
|
+
readonly content: "builder-config-entity-content";
|
|
152
|
+
readonly field: "builder-config-entity-field-{name}";
|
|
153
|
+
};
|
|
154
|
+
readonly seoMetaSection: {
|
|
155
|
+
readonly container: "builder-config-seo-section";
|
|
156
|
+
readonly trigger: "builder-config-seo-trigger";
|
|
157
|
+
readonly content: "builder-config-seo-content";
|
|
158
|
+
readonly metaTitle: "builder-config-seo-title";
|
|
159
|
+
readonly metaDescription: "builder-config-seo-description";
|
|
160
|
+
readonly metaKeywords: "builder-config-seo-keywords";
|
|
161
|
+
readonly ogImage: "builder-config-seo-og-image";
|
|
162
|
+
readonly customFields: {
|
|
163
|
+
readonly container: "builder-config-custom-fields";
|
|
164
|
+
readonly fieldKey: "builder-config-custom-key-{index}";
|
|
165
|
+
readonly fieldValue: "builder-config-custom-value-{index}";
|
|
166
|
+
readonly fieldRemove: "builder-config-custom-remove-{index}";
|
|
167
|
+
readonly addButton: "builder-config-custom-add";
|
|
168
|
+
};
|
|
169
|
+
};
|
|
170
|
+
};
|
|
135
171
|
readonly patternReference: {
|
|
136
172
|
readonly container: "pattern-reference-{ref}";
|
|
137
173
|
readonly badge: "pattern-reference-badge-{ref}";
|
|
@@ -139,25 +175,6 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
139
175
|
readonly locked: "pattern-reference-locked-{ref}";
|
|
140
176
|
readonly editLink: "pattern-reference-edit-link-{ref}";
|
|
141
177
|
};
|
|
142
|
-
readonly entityMetaPanel: {
|
|
143
|
-
readonly container: "entity-meta-panel";
|
|
144
|
-
readonly seoSection: {
|
|
145
|
-
readonly trigger: "entity-meta-seo-trigger";
|
|
146
|
-
readonly content: "entity-meta-seo-content";
|
|
147
|
-
readonly metaTitle: "entity-meta-seo-title";
|
|
148
|
-
readonly metaDescription: "entity-meta-seo-description";
|
|
149
|
-
readonly metaKeywords: "entity-meta-seo-keywords";
|
|
150
|
-
readonly ogImage: "entity-meta-seo-og-image";
|
|
151
|
-
};
|
|
152
|
-
readonly customFields: {
|
|
153
|
-
readonly trigger: "entity-meta-custom-trigger";
|
|
154
|
-
readonly content: "entity-meta-custom-content";
|
|
155
|
-
readonly fieldKey: "entity-meta-custom-key-{index}";
|
|
156
|
-
readonly fieldValue: "entity-meta-custom-value-{index}";
|
|
157
|
-
readonly fieldRemove: "entity-meta-custom-remove-{index}";
|
|
158
|
-
readonly addButton: "entity-meta-custom-add";
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
178
|
readonly blockPropertiesPanel: {
|
|
162
179
|
readonly container: "block-properties-panel";
|
|
163
180
|
readonly header: "block-properties-header";
|
|
@@ -170,6 +187,7 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
170
187
|
readonly tabAdvanced: "block-properties-tab-advanced";
|
|
171
188
|
readonly empty: "block-properties-empty";
|
|
172
189
|
readonly error: "block-properties-error";
|
|
190
|
+
readonly resetPropsBtn: "block-properties-reset-btn";
|
|
173
191
|
readonly patternLocked: "block-properties-pattern-locked";
|
|
174
192
|
readonly patternTitle: "block-properties-pattern-title";
|
|
175
193
|
readonly patternEditLink: "block-properties-pattern-edit";
|
|
@@ -198,6 +216,53 @@ export declare const BLOCK_EDITOR_SELECTORS: {
|
|
|
198
216
|
readonly categoryBadge: "entity-field-category-badge-{id}";
|
|
199
217
|
readonly categoryRemove: "entity-field-category-remove-{id}";
|
|
200
218
|
};
|
|
219
|
+
/** @deprecated Use treeView instead - layoutCanvas functionality moved to left column */
|
|
220
|
+
readonly layoutCanvas: {
|
|
221
|
+
readonly container: "layout-canvas";
|
|
222
|
+
readonly empty: "layout-canvas-empty";
|
|
223
|
+
readonly dropZone: "layout-canvas-dropzone";
|
|
224
|
+
readonly sortableBlock: {
|
|
225
|
+
readonly container: "sortable-block-{id}";
|
|
226
|
+
readonly card: "sortable-block-card-{id}";
|
|
227
|
+
readonly dragHandle: "sortable-block-drag-{id}";
|
|
228
|
+
readonly name: "sortable-block-name-{id}";
|
|
229
|
+
readonly category: "sortable-block-category-{id}";
|
|
230
|
+
readonly propsPreview: "sortable-block-props-{id}";
|
|
231
|
+
readonly duplicateBtn: "sortable-block-duplicate-{id}";
|
|
232
|
+
readonly removeBtn: "sortable-block-remove-{id}";
|
|
233
|
+
readonly error: "sortable-block-error-{id}";
|
|
234
|
+
readonly generic: "sortable-block-";
|
|
235
|
+
};
|
|
236
|
+
};
|
|
237
|
+
/** @deprecated Use configPanel.entityFieldsSection instead */
|
|
238
|
+
readonly entityFieldsPanel: {
|
|
239
|
+
readonly container: "entity-fields-panel";
|
|
240
|
+
readonly field: "entity-field-{name}";
|
|
241
|
+
readonly categoryList: "entity-field-categories";
|
|
242
|
+
readonly categoryItem: "entity-field-category-{slug}";
|
|
243
|
+
readonly categoryCheckbox: "entity-field-category-checkbox-{slug}";
|
|
244
|
+
readonly categoryBadge: "entity-field-category-badge-{slug}";
|
|
245
|
+
};
|
|
246
|
+
/** @deprecated Use configPanel.seoMetaSection instead */
|
|
247
|
+
readonly entityMetaPanel: {
|
|
248
|
+
readonly container: "entity-meta-panel";
|
|
249
|
+
readonly seoSection: {
|
|
250
|
+
readonly trigger: "entity-meta-seo-trigger";
|
|
251
|
+
readonly content: "entity-meta-seo-content";
|
|
252
|
+
readonly metaTitle: "entity-meta-seo-title";
|
|
253
|
+
readonly metaDescription: "entity-meta-seo-description";
|
|
254
|
+
readonly metaKeywords: "entity-meta-seo-keywords";
|
|
255
|
+
readonly ogImage: "entity-meta-seo-og-image";
|
|
256
|
+
};
|
|
257
|
+
readonly customFields: {
|
|
258
|
+
readonly trigger: "entity-meta-custom-trigger";
|
|
259
|
+
readonly content: "entity-meta-custom-content";
|
|
260
|
+
readonly fieldKey: "entity-meta-custom-key-{index}";
|
|
261
|
+
readonly fieldValue: "entity-meta-custom-value-{index}";
|
|
262
|
+
readonly fieldRemove: "entity-meta-custom-remove-{index}";
|
|
263
|
+
readonly addButton: "entity-meta-custom-add";
|
|
264
|
+
};
|
|
265
|
+
};
|
|
201
266
|
};
|
|
202
267
|
export type BlockEditorSelectorsType = typeof BLOCK_EDITOR_SELECTORS;
|
|
203
268
|
//# sourceMappingURL=block-editor.selectors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"block-editor.selectors.d.ts","sourceRoot":"","sources":["../../../../src/lib/selectors/domains/block-editor.selectors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"block-editor.selectors.d.ts","sourceRoot":"","sources":["../../../../src/lib/selectors/domains/block-editor.selectors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAkPjC,yFAAyF;;;;;;;;;;;;;;;;;;IAoBzF,8DAA8D;;;;;;;;;IAU9D,yDAAyD;;;;;;;;;;;;;;;;;;;;CAoBjD,CAAA;AAEV,MAAM,MAAM,wBAAwB,GAAG,OAAO,sBAAsB,CAAA"}
|
|
@@ -2,20 +2,29 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
2
2
|
// Main editor container (wraps everything)
|
|
3
3
|
container: "builder-editor",
|
|
4
4
|
// =========================================================================
|
|
5
|
-
// 1. HEADER - Top bar with title, slug,
|
|
5
|
+
// 1. HEADER - Top bar with title, slug, view tabs, viewport toggle, actions
|
|
6
6
|
// =========================================================================
|
|
7
7
|
header: {
|
|
8
8
|
container: "builder-header",
|
|
9
9
|
backButton: "builder-back-btn",
|
|
10
|
+
// Title input (dynamic width)
|
|
10
11
|
titleWrapper: "builder-title-wrapper",
|
|
11
12
|
titleInput: "builder-title-input",
|
|
13
|
+
// Slug input (dynamic width)
|
|
12
14
|
slugWrapper: "builder-slug-wrapper",
|
|
13
15
|
slugPrefix: "builder-slug-prefix",
|
|
14
16
|
slugInput: "builder-slug-input",
|
|
15
17
|
externalLink: "builder-external-link",
|
|
18
|
+
// View mode tabs (Preview | Settings)
|
|
16
19
|
viewToggle: "builder-view-toggle",
|
|
17
|
-
viewEditor: "builder-view-editor",
|
|
18
20
|
viewPreview: "builder-view-preview",
|
|
21
|
+
viewSettings: "builder-view-settings",
|
|
22
|
+
// Viewport toggle (mobile/desktop) - only visible in Preview mode
|
|
23
|
+
viewportToggle: {
|
|
24
|
+
container: "builder-viewport-toggle",
|
|
25
|
+
mobileBtn: "builder-viewport-mobile",
|
|
26
|
+
desktopBtn: "builder-viewport-desktop"
|
|
27
|
+
},
|
|
19
28
|
// Status selector (integrated in header)
|
|
20
29
|
statusSelector: "builder-status-selector",
|
|
21
30
|
statusOption: "builder-status-option-{value}",
|
|
@@ -30,14 +39,14 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
30
39
|
settingsButton: "builder-settings-btn"
|
|
31
40
|
},
|
|
32
41
|
// =========================================================================
|
|
33
|
-
// 2. BLOCK PICKER - Left column "
|
|
42
|
+
// 2. BLOCK PICKER - Left column "Blocks" tab
|
|
34
43
|
// =========================================================================
|
|
35
44
|
blockPicker: {
|
|
36
45
|
container: "block-picker",
|
|
37
|
-
// Tabs
|
|
46
|
+
// Tabs (Blocks | Patterns | Layout)
|
|
38
47
|
tabBlocks: "block-picker-tab-blocks",
|
|
39
48
|
tabPatterns: "block-picker-tab-patterns",
|
|
40
|
-
|
|
49
|
+
tabLayout: "block-picker-tab-layout",
|
|
41
50
|
tabIndicator: "block-picker-tab-indicator",
|
|
42
51
|
// Search
|
|
43
52
|
searchWrapper: "block-picker-search-wrapper",
|
|
@@ -71,48 +80,48 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
71
80
|
patternCardInsertButton: "block-picker-pattern-insert-{id}"
|
|
72
81
|
},
|
|
73
82
|
// =========================================================================
|
|
74
|
-
// 3.
|
|
83
|
+
// 3. TREE VIEW - Left column "Layout" tab (NEW)
|
|
75
84
|
// =========================================================================
|
|
76
|
-
|
|
77
|
-
container: "
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
empty: "layout-canvas-empty",
|
|
90
|
-
dropZone: "layout-canvas-dropzone",
|
|
91
|
-
// Sortable block cards (children)
|
|
92
|
-
sortableBlock: {
|
|
93
|
-
container: "sortable-block-{id}",
|
|
94
|
-
card: "sortable-block-card-{id}",
|
|
95
|
-
dragHandle: "sortable-block-drag-{id}",
|
|
96
|
-
name: "sortable-block-name-{id}",
|
|
97
|
-
category: "sortable-block-category-{id}",
|
|
98
|
-
propsPreview: "sortable-block-props-{id}",
|
|
99
|
-
duplicateBtn: "sortable-block-duplicate-{id}",
|
|
100
|
-
removeBtn: "sortable-block-remove-{id}",
|
|
101
|
-
error: "sortable-block-error-{id}"
|
|
102
|
-
}
|
|
85
|
+
treeView: {
|
|
86
|
+
container: "builder-tree-view",
|
|
87
|
+
empty: "builder-tree-empty",
|
|
88
|
+
// Tree nodes
|
|
89
|
+
node: "builder-tree-node-{id}",
|
|
90
|
+
nodeIcon: "builder-tree-node-icon-{id}",
|
|
91
|
+
nodeName: "builder-tree-node-name-{id}",
|
|
92
|
+
nodeDragHandle: "builder-tree-node-drag-{id}",
|
|
93
|
+
nodeSelected: "builder-tree-node-selected",
|
|
94
|
+
// Pattern groups (blocks from same pattern shown grouped)
|
|
95
|
+
patternGroup: "builder-tree-pattern-{ref}",
|
|
96
|
+
patternGroupHeader: "builder-tree-pattern-header-{ref}",
|
|
97
|
+
patternGroupBlocks: "builder-tree-pattern-blocks-{ref}"
|
|
103
98
|
},
|
|
104
99
|
// =========================================================================
|
|
105
|
-
//
|
|
100
|
+
// 4. PREVIEW CANVAS - Center column - Preview mode (responsive viewport)
|
|
106
101
|
// =========================================================================
|
|
107
102
|
previewCanvas: {
|
|
108
103
|
container: "preview-canvas",
|
|
109
104
|
wrapper: "preview-canvas-wrapper",
|
|
110
105
|
content: "preview-canvas-content",
|
|
111
106
|
empty: "preview-canvas-empty",
|
|
107
|
+
// Viewport wrapper (for container queries responsive preview)
|
|
108
|
+
viewport: "preview-canvas-viewport-{mode}",
|
|
109
|
+
// Viewport modes
|
|
110
|
+
viewportMobile: "preview-canvas-mobile",
|
|
111
|
+
viewportDesktop: "preview-canvas-desktop",
|
|
112
|
+
// Iframe preview (for mobile - real viewport simulation)
|
|
113
|
+
iframePreview: {
|
|
114
|
+
container: "preview-iframe-container",
|
|
115
|
+
loading: "preview-iframe-loading",
|
|
116
|
+
frame: "preview-iframe-frame"
|
|
117
|
+
},
|
|
118
|
+
// Blocks
|
|
112
119
|
block: "preview-block-{id}",
|
|
113
120
|
blockWrapper: "preview-block-wrapper-{id}",
|
|
114
121
|
blockSelected: "preview-block-selected-{id}",
|
|
115
122
|
editingBadge: "preview-block-editing-{id}",
|
|
123
|
+
// Generic selector prefix for counting blocks
|
|
124
|
+
blockGeneric: "preview-block-",
|
|
116
125
|
// Floating toolbar (child)
|
|
117
126
|
floatingToolbar: {
|
|
118
127
|
container: "floating-toolbar-{id}",
|
|
@@ -127,6 +136,38 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
127
136
|
moveDown: "preview-block-move-down-{id}"
|
|
128
137
|
},
|
|
129
138
|
// =========================================================================
|
|
139
|
+
// 5. CONFIG PANEL - Center column - Settings mode (NEW)
|
|
140
|
+
// =========================================================================
|
|
141
|
+
configPanel: {
|
|
142
|
+
container: "builder-config-panel",
|
|
143
|
+
scroll: "builder-config-scroll",
|
|
144
|
+
// Entity Fields section (collapsible)
|
|
145
|
+
entityFieldsSection: {
|
|
146
|
+
container: "builder-config-entity-section",
|
|
147
|
+
trigger: "builder-config-entity-trigger",
|
|
148
|
+
content: "builder-config-entity-content",
|
|
149
|
+
field: "builder-config-entity-field-{name}"
|
|
150
|
+
},
|
|
151
|
+
// SEO & Meta section (collapsible)
|
|
152
|
+
seoMetaSection: {
|
|
153
|
+
container: "builder-config-seo-section",
|
|
154
|
+
trigger: "builder-config-seo-trigger",
|
|
155
|
+
content: "builder-config-seo-content",
|
|
156
|
+
metaTitle: "builder-config-seo-title",
|
|
157
|
+
metaDescription: "builder-config-seo-description",
|
|
158
|
+
metaKeywords: "builder-config-seo-keywords",
|
|
159
|
+
ogImage: "builder-config-seo-og-image",
|
|
160
|
+
// Custom fields
|
|
161
|
+
customFields: {
|
|
162
|
+
container: "builder-config-custom-fields",
|
|
163
|
+
fieldKey: "builder-config-custom-key-{index}",
|
|
164
|
+
fieldValue: "builder-config-custom-value-{index}",
|
|
165
|
+
fieldRemove: "builder-config-custom-remove-{index}",
|
|
166
|
+
addButton: "builder-config-custom-add"
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
},
|
|
170
|
+
// =========================================================================
|
|
130
171
|
// PATTERN REFERENCE - Pattern reference rendering in canvas
|
|
131
172
|
// =========================================================================
|
|
132
173
|
patternReference: {
|
|
@@ -137,31 +178,7 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
137
178
|
editLink: "pattern-reference-edit-link-{ref}"
|
|
138
179
|
},
|
|
139
180
|
// =========================================================================
|
|
140
|
-
// 6.
|
|
141
|
-
// =========================================================================
|
|
142
|
-
entityMetaPanel: {
|
|
143
|
-
container: "entity-meta-panel",
|
|
144
|
-
// SEO section
|
|
145
|
-
seoSection: {
|
|
146
|
-
trigger: "entity-meta-seo-trigger",
|
|
147
|
-
content: "entity-meta-seo-content",
|
|
148
|
-
metaTitle: "entity-meta-seo-title",
|
|
149
|
-
metaDescription: "entity-meta-seo-description",
|
|
150
|
-
metaKeywords: "entity-meta-seo-keywords",
|
|
151
|
-
ogImage: "entity-meta-seo-og-image"
|
|
152
|
-
},
|
|
153
|
-
// Custom fields section
|
|
154
|
-
customFields: {
|
|
155
|
-
trigger: "entity-meta-custom-trigger",
|
|
156
|
-
content: "entity-meta-custom-content",
|
|
157
|
-
fieldKey: "entity-meta-custom-key-{index}",
|
|
158
|
-
fieldValue: "entity-meta-custom-value-{index}",
|
|
159
|
-
fieldRemove: "entity-meta-custom-remove-{index}",
|
|
160
|
-
addButton: "entity-meta-custom-add"
|
|
161
|
-
}
|
|
162
|
-
},
|
|
163
|
-
// =========================================================================
|
|
164
|
-
// 7. BLOCK PROPERTIES PANEL - Right column
|
|
181
|
+
// 6. BLOCK PROPERTIES PANEL - Right column
|
|
165
182
|
// =========================================================================
|
|
166
183
|
blockPropertiesPanel: {
|
|
167
184
|
container: "block-properties-panel",
|
|
@@ -175,6 +192,8 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
175
192
|
tabAdvanced: "block-properties-tab-advanced",
|
|
176
193
|
empty: "block-properties-empty",
|
|
177
194
|
error: "block-properties-error",
|
|
195
|
+
// Reset props button
|
|
196
|
+
resetPropsBtn: "block-properties-reset-btn",
|
|
178
197
|
// Pattern reference (when a pattern is selected)
|
|
179
198
|
patternLocked: "block-properties-pattern-locked",
|
|
180
199
|
patternTitle: "block-properties-pattern-title",
|
|
@@ -198,7 +217,7 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
198
217
|
}
|
|
199
218
|
},
|
|
200
219
|
// =========================================================================
|
|
201
|
-
// POST-SPECIFIC FIELDS (used in
|
|
220
|
+
// POST-SPECIFIC FIELDS (used in configPanel.entityFieldsSection for posts)
|
|
202
221
|
// =========================================================================
|
|
203
222
|
postFields: {
|
|
204
223
|
excerpt: "entity-field-excerpt",
|
|
@@ -208,6 +227,57 @@ const BLOCK_EDITOR_SELECTORS = {
|
|
|
208
227
|
categoryOption: "entity-field-category-option-{id}",
|
|
209
228
|
categoryBadge: "entity-field-category-badge-{id}",
|
|
210
229
|
categoryRemove: "entity-field-category-remove-{id}"
|
|
230
|
+
},
|
|
231
|
+
// =========================================================================
|
|
232
|
+
// DEPRECATED - Kept for backward compatibility
|
|
233
|
+
// =========================================================================
|
|
234
|
+
/** @deprecated Use treeView instead - layoutCanvas functionality moved to left column */
|
|
235
|
+
layoutCanvas: {
|
|
236
|
+
container: "layout-canvas",
|
|
237
|
+
empty: "layout-canvas-empty",
|
|
238
|
+
dropZone: "layout-canvas-dropzone",
|
|
239
|
+
sortableBlock: {
|
|
240
|
+
container: "sortable-block-{id}",
|
|
241
|
+
card: "sortable-block-card-{id}",
|
|
242
|
+
dragHandle: "sortable-block-drag-{id}",
|
|
243
|
+
name: "sortable-block-name-{id}",
|
|
244
|
+
category: "sortable-block-category-{id}",
|
|
245
|
+
propsPreview: "sortable-block-props-{id}",
|
|
246
|
+
duplicateBtn: "sortable-block-duplicate-{id}",
|
|
247
|
+
removeBtn: "sortable-block-remove-{id}",
|
|
248
|
+
error: "sortable-block-error-{id}",
|
|
249
|
+
// Generic selector prefix for counting blocks
|
|
250
|
+
generic: "sortable-block-"
|
|
251
|
+
}
|
|
252
|
+
},
|
|
253
|
+
/** @deprecated Use configPanel.entityFieldsSection instead */
|
|
254
|
+
entityFieldsPanel: {
|
|
255
|
+
container: "entity-fields-panel",
|
|
256
|
+
field: "entity-field-{name}",
|
|
257
|
+
categoryList: "entity-field-categories",
|
|
258
|
+
categoryItem: "entity-field-category-{slug}",
|
|
259
|
+
categoryCheckbox: "entity-field-category-checkbox-{slug}",
|
|
260
|
+
categoryBadge: "entity-field-category-badge-{slug}"
|
|
261
|
+
},
|
|
262
|
+
/** @deprecated Use configPanel.seoMetaSection instead */
|
|
263
|
+
entityMetaPanel: {
|
|
264
|
+
container: "entity-meta-panel",
|
|
265
|
+
seoSection: {
|
|
266
|
+
trigger: "entity-meta-seo-trigger",
|
|
267
|
+
content: "entity-meta-seo-content",
|
|
268
|
+
metaTitle: "entity-meta-seo-title",
|
|
269
|
+
metaDescription: "entity-meta-seo-description",
|
|
270
|
+
metaKeywords: "entity-meta-seo-keywords",
|
|
271
|
+
ogImage: "entity-meta-seo-og-image"
|
|
272
|
+
},
|
|
273
|
+
customFields: {
|
|
274
|
+
trigger: "entity-meta-custom-trigger",
|
|
275
|
+
content: "entity-meta-custom-content",
|
|
276
|
+
fieldKey: "entity-meta-custom-key-{index}",
|
|
277
|
+
fieldValue: "entity-meta-custom-value-{index}",
|
|
278
|
+
fieldRemove: "entity-meta-custom-remove-{index}",
|
|
279
|
+
addButton: "entity-meta-custom-add"
|
|
280
|
+
}
|
|
211
281
|
}
|
|
212
282
|
};
|
|
213
283
|
export {
|