@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.
Files changed (201) hide show
  1. package/dist/components/dashboard/block-editor/block-picker.d.ts +7 -2
  2. package/dist/components/dashboard/block-editor/block-picker.d.ts.map +1 -1
  3. package/dist/components/dashboard/block-editor/block-picker.js +27 -20
  4. package/dist/components/dashboard/block-editor/block-preview-canvas.d.ts.map +1 -1
  5. package/dist/components/dashboard/block-editor/block-preview-canvas.js +37 -37
  6. package/dist/components/dashboard/block-editor/block-settings-panel.js +3 -3
  7. package/dist/components/dashboard/block-editor/builder-editor-view.d.ts.map +1 -1
  8. package/dist/components/dashboard/block-editor/builder-editor-view.js +124 -82
  9. package/dist/components/dashboard/block-editor/config-panel.d.ts +18 -0
  10. package/dist/components/dashboard/block-editor/config-panel.d.ts.map +1 -0
  11. package/dist/components/dashboard/block-editor/config-panel.js +413 -0
  12. package/dist/components/dashboard/block-editor/floating-block-toolbar.js +1 -1
  13. package/dist/components/dashboard/block-editor/pattern-card.js +1 -1
  14. package/dist/components/dashboard/block-editor/pattern-reference-preview.js +1 -1
  15. package/dist/components/dashboard/block-editor/sortable-block.js +1 -1
  16. package/dist/components/dashboard/block-editor/tree-view-node.d.ts +11 -0
  17. package/dist/components/dashboard/block-editor/tree-view-node.d.ts.map +1 -0
  18. package/dist/components/dashboard/block-editor/tree-view-node.js +91 -0
  19. package/dist/components/dashboard/block-editor/tree-view.d.ts +17 -0
  20. package/dist/components/dashboard/block-editor/tree-view.d.ts.map +1 -0
  21. package/dist/components/dashboard/block-editor/tree-view.js +125 -0
  22. package/dist/components/dashboard/block-editor/viewport-toggle.d.ts +10 -0
  23. package/dist/components/dashboard/block-editor/viewport-toggle.d.ts.map +1 -0
  24. package/dist/components/dashboard/block-editor/viewport-toggle.js +55 -0
  25. package/dist/components/public/pageBuilder/PageRenderer.d.ts.map +1 -1
  26. package/dist/components/public/pageBuilder/PageRenderer.js +10 -1
  27. package/dist/components/settings/layouts/SettingsSidebar.d.ts.map +1 -1
  28. package/dist/components/settings/layouts/SettingsSidebar.js +14 -0
  29. package/dist/components/ui/dynamic-icon.d.ts +12 -0
  30. package/dist/components/ui/dynamic-icon.d.ts.map +1 -0
  31. package/dist/components/ui/dynamic-icon.js +11 -0
  32. package/dist/components/ui/index.d.ts +7 -0
  33. package/dist/components/ui/index.d.ts.map +1 -1
  34. package/dist/components/ui/index.js +7 -0
  35. package/dist/components/ui/skeleton-dashboard.d.ts +32 -0
  36. package/dist/components/ui/skeleton-dashboard.d.ts.map +1 -0
  37. package/dist/components/ui/skeleton-dashboard.js +69 -0
  38. package/dist/components/ui/skeleton-detail.d.ts.map +1 -1
  39. package/dist/components/ui/skeleton-detail.js +0 -1
  40. package/dist/components/ui/skeleton-features.d.ts +27 -0
  41. package/dist/components/ui/skeleton-features.d.ts.map +1 -0
  42. package/dist/components/ui/skeleton-features.js +90 -0
  43. package/dist/components/ui/skeleton-form.d.ts.map +1 -1
  44. package/dist/components/ui/skeleton-form.js +0 -1
  45. package/dist/components/ui/skeleton-list.d.ts.map +1 -1
  46. package/dist/components/ui/skeleton-list.js +0 -1
  47. package/dist/components/ui/skeleton-public.d.ts +26 -0
  48. package/dist/components/ui/skeleton-public.d.ts.map +1 -0
  49. package/dist/components/ui/skeleton-public.js +61 -0
  50. package/dist/components/ui/skeleton-settings.d.ts +54 -0
  51. package/dist/components/ui/skeleton-settings.d.ts.map +1 -0
  52. package/dist/components/ui/skeleton-settings.js +332 -0
  53. package/dist/components/ui/skeleton.d.ts +23 -1
  54. package/dist/components/ui/skeleton.d.ts.map +1 -1
  55. package/dist/components/ui/skeleton.js +46 -2
  56. package/dist/contexts/TeamContext.d.ts +2 -0
  57. package/dist/contexts/TeamContext.d.ts.map +1 -1
  58. package/dist/contexts/TeamContext.js +78 -68
  59. package/dist/hooks/usePrefetch.d.ts +43 -0
  60. package/dist/hooks/usePrefetch.d.ts.map +1 -0
  61. package/dist/hooks/usePrefetch.js +56 -0
  62. package/dist/lib/actions/index.d.ts +27 -14
  63. package/dist/lib/actions/index.d.ts.map +1 -1
  64. package/dist/lib/actions/index.js +19 -1
  65. package/dist/lib/actions/team.actions.d.ts +107 -0
  66. package/dist/lib/actions/team.actions.d.ts.map +1 -0
  67. package/dist/lib/actions/team.actions.js +220 -0
  68. package/dist/lib/actions/user.actions.d.ts +99 -0
  69. package/dist/lib/actions/user.actions.d.ts.map +1 -0
  70. package/dist/lib/actions/user.actions.js +149 -0
  71. package/dist/lib/selectors/core-selectors.d.ts +98 -44
  72. package/dist/lib/selectors/core-selectors.d.ts.map +1 -1
  73. package/dist/lib/selectors/domains/block-editor.selectors.d.ts +136 -71
  74. package/dist/lib/selectors/domains/block-editor.selectors.d.ts.map +1 -1
  75. package/dist/lib/selectors/domains/block-editor.selectors.js +130 -60
  76. package/dist/lib/selectors/selectors.d.ts +196 -88
  77. package/dist/lib/selectors/selectors.d.ts.map +1 -1
  78. package/dist/messages/de/devtools.json +4 -0
  79. package/dist/messages/de/index.d.ts +4 -0
  80. package/dist/messages/de/index.d.ts.map +1 -1
  81. package/dist/messages/en/admin.json +15 -1
  82. package/dist/messages/en/devtools.json +16 -0
  83. package/dist/messages/en/index.d.ts +30 -0
  84. package/dist/messages/en/index.d.ts.map +1 -1
  85. package/dist/messages/es/admin.json +16 -1
  86. package/dist/messages/es/devtools.json +4 -0
  87. package/dist/messages/es/index.d.ts +19 -0
  88. package/dist/messages/es/index.d.ts.map +1 -1
  89. package/dist/messages/fr/devtools.json +4 -0
  90. package/dist/messages/fr/index.d.ts +4 -0
  91. package/dist/messages/fr/index.d.ts.map +1 -1
  92. package/dist/messages/it/devtools.json +4 -0
  93. package/dist/messages/it/index.d.ts +4 -0
  94. package/dist/messages/it/index.d.ts.map +1 -1
  95. package/dist/messages/pt/devtools.json +4 -0
  96. package/dist/messages/pt/index.d.ts +4 -0
  97. package/dist/messages/pt/index.d.ts.map +1 -1
  98. package/dist/nextspark-entities.d.ts +59 -0
  99. package/dist/presets/blocks/cta-section/component.tsx +4 -4
  100. package/dist/presets/blocks/features-grid/component.tsx +5 -5
  101. package/dist/presets/blocks/hero/component.tsx +2 -2
  102. package/dist/presets/blocks/testimonials/component.tsx +4 -4
  103. package/dist/presets/blocks/text-content/component.tsx +2 -2
  104. package/dist/presets/theme/blocks/hero/component.tsx +2 -2
  105. package/dist/presets/theme/tests/cypress/src/core/BlockEditorBasePOM.ts +123 -24
  106. package/dist/styles/classes.json +22 -2
  107. package/dist/styles/ui.css +1 -1
  108. package/dist/templates/app/(public)/[...slug]/page.tsx +2 -1
  109. package/dist/templates/app/(public)/docs/[section]/[page]/page.tsx +1 -1
  110. package/dist/templates/app/api/devtools/config/entities/route.ts +2 -1
  111. package/dist/templates/app/api/user/plan-flags/route.ts +1 -1
  112. package/dist/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +4 -2
  113. package/dist/templates/app/dashboard/(main)/layout.tsx +2 -1
  114. package/dist/templates/app/dashboard/(main)/loading.tsx +5 -0
  115. package/dist/templates/app/dashboard/features/loading.tsx +5 -0
  116. package/dist/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
  117. package/dist/templates/app/dashboard/settings/billing/loading.tsx +5 -0
  118. package/dist/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
  119. package/dist/templates/app/dashboard/settings/loading.tsx +5 -0
  120. package/dist/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
  121. package/dist/templates/app/dashboard/settings/password/loading.tsx +5 -0
  122. package/dist/templates/app/dashboard/settings/plans/loading.tsx +5 -0
  123. package/dist/templates/app/dashboard/settings/profile/loading.tsx +5 -0
  124. package/dist/templates/app/dashboard/settings/security/loading.tsx +5 -0
  125. package/dist/templates/app/dashboard/settings/teams/loading.tsx +5 -0
  126. package/dist/templates/app/devtools/config/page.tsx +1 -1
  127. package/dist/templates/app/devtools/page.tsx +1 -1
  128. package/dist/templates/app/devtools/tests/[[...path]]/page.tsx +1 -1
  129. package/dist/templates/contents/themes/starter/messages/de/common.json +4 -1
  130. package/dist/templates/contents/themes/starter/messages/de/index.ts +15 -0
  131. package/dist/templates/contents/themes/starter/messages/en/common.json +4 -1
  132. package/dist/templates/contents/themes/starter/messages/en/index.ts +15 -0
  133. package/dist/templates/contents/themes/starter/messages/es/common.json +4 -1
  134. package/dist/templates/contents/themes/starter/messages/es/index.ts +15 -0
  135. package/dist/templates/contents/themes/starter/messages/fr/common.json +4 -1
  136. package/dist/templates/contents/themes/starter/messages/fr/index.ts +15 -0
  137. package/dist/templates/contents/themes/starter/messages/it/common.json +4 -1
  138. package/dist/templates/contents/themes/starter/messages/it/index.ts +13 -0
  139. package/dist/templates/contents/themes/starter/messages/pt/common.json +4 -1
  140. package/dist/templates/contents/themes/starter/messages/pt/index.ts +13 -0
  141. package/dist/templates/contents/themes/starter/styles/globals.css +3 -1
  142. package/dist/templates/contents/themes/starter/templates/(dashboard)/analytics/loading.tsx +5 -0
  143. package/dist/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
  144. package/dist/templates/features/blog/blocks/post-content/component.tsx +2 -2
  145. package/dist/templates/features/pages/blocks/hero/component.tsx +2 -2
  146. package/dist/templates/next.config.mjs +10 -3
  147. package/dist/templates/{middleware.ts → proxy.ts} +5 -6
  148. package/globals.css +54 -0
  149. package/nextspark-entities.d.ts +59 -0
  150. package/package.json +18 -16
  151. package/scripts/build/registry/discovery/api-presets.mjs +20 -12
  152. package/scripts/build/registry/generators/api-presets-registry.mjs +18 -5
  153. package/scripts/build/registry/generators/block-registry.mjs +14 -3
  154. package/scripts/build/registry/generators/docs-registry.mjs +21 -3
  155. package/scripts/build/registry/generators/translation-registry.mjs +16 -7
  156. package/scripts/build/theme.mjs +2 -1
  157. package/templates/app/(public)/[...slug]/page.tsx +2 -1
  158. package/templates/app/(public)/docs/[section]/[page]/page.tsx +1 -1
  159. package/templates/app/api/auth/[...all]/route.ts +13 -5
  160. package/templates/app/api/devtools/config/entities/route.ts +2 -1
  161. package/templates/app/api/user/plan-flags/route.ts +1 -1
  162. package/templates/app/api/v1/[entity]/[id]/child/[childType]/[childId]/route.ts +4 -2
  163. package/templates/app/dashboard/(main)/layout.tsx +2 -1
  164. package/templates/app/dashboard/(main)/loading.tsx +5 -0
  165. package/templates/app/dashboard/features/loading.tsx +5 -0
  166. package/templates/app/dashboard/settings/api-keys/loading.tsx +5 -0
  167. package/templates/app/dashboard/settings/billing/loading.tsx +5 -0
  168. package/templates/app/dashboard/settings/invoices/loading.tsx +5 -0
  169. package/templates/app/dashboard/settings/loading.tsx +5 -0
  170. package/templates/app/dashboard/settings/notifications/loading.tsx +5 -0
  171. package/templates/app/dashboard/settings/password/loading.tsx +5 -0
  172. package/templates/app/dashboard/settings/plans/loading.tsx +5 -0
  173. package/templates/app/dashboard/settings/profile/loading.tsx +5 -0
  174. package/templates/app/dashboard/settings/security/loading.tsx +5 -0
  175. package/templates/app/dashboard/settings/teams/loading.tsx +5 -0
  176. package/templates/app/devtools/config/page.tsx +1 -1
  177. package/templates/app/devtools/page.tsx +1 -1
  178. package/templates/app/devtools/tests/[[...path]]/page.tsx +1 -1
  179. package/templates/contents/themes/starter/config/app.config.ts +8 -7
  180. package/templates/contents/themes/starter/messages/de/common.json +4 -1
  181. package/templates/contents/themes/starter/messages/de/index.ts +15 -0
  182. package/templates/contents/themes/starter/messages/en/common.json +4 -1
  183. package/templates/contents/themes/starter/messages/en/index.ts +15 -0
  184. package/templates/contents/themes/starter/messages/es/common.json +4 -1
  185. package/templates/contents/themes/starter/messages/es/index.ts +15 -0
  186. package/templates/contents/themes/starter/messages/fr/common.json +4 -1
  187. package/templates/contents/themes/starter/messages/fr/index.ts +15 -0
  188. package/templates/contents/themes/starter/messages/it/common.json +4 -1
  189. package/templates/contents/themes/starter/messages/it/index.ts +13 -0
  190. package/templates/contents/themes/starter/messages/pt/common.json +4 -1
  191. package/templates/contents/themes/starter/messages/pt/index.ts +13 -0
  192. package/templates/contents/themes/starter/styles/globals.css +3 -1
  193. package/templates/contents/themes/starter/templates/(dashboard)/analytics/loading.tsx +5 -0
  194. package/templates/contents/themes/starter/templates/(public)/loading.tsx +5 -0
  195. package/templates/features/blog/blocks/post-content/component.tsx +2 -2
  196. package/templates/features/pages/blocks/hero/component.tsx +2 -2
  197. package/templates/next.config.mjs +10 -3
  198. package/templates/pnpm-workspace.yaml +5 -0
  199. package/templates/{middleware.ts → proxy.ts} +5 -6
  200. package/tests/jest/setup.ts +5 -0
  201. package/dist/presets/plugin/.env.example.template +0 -19
@@ -65,8 +65,10 @@ export abstract class BlockEditorBasePOM extends BasePOM {
65
65
  slugInput: cySelector('blockEditor.header.slugInput'),
66
66
  externalLink: cySelector('blockEditor.header.externalLink'),
67
67
  viewModeToggle: cySelector('blockEditor.header.viewToggle'),
68
- viewEditor: cySelector('blockEditor.header.viewEditor'),
69
68
  viewPreview: cySelector('blockEditor.header.viewPreview'),
69
+ viewSettings: cySelector('blockEditor.header.viewSettings'),
70
+ /** @deprecated Use viewSettings instead - v2.0 renamed viewEditor to viewSettings */
71
+ viewEditor: cySelector('blockEditor.header.viewSettings'),
70
72
  saveButton: cySelector('blockEditor.header.saveButton'),
71
73
  publishButton: cySelector('blockEditor.header.publishButton'),
72
74
  settingsButton: cySelector('blockEditor.header.settingsButton'),
@@ -85,10 +87,15 @@ export abstract class BlockEditorBasePOM extends BasePOM {
85
87
  // BLOCK PICKER - Left column "Bloques" tab
86
88
  // =========================================================================
87
89
  blockPicker: cySelector('blockEditor.blockPicker.container'),
88
- // Tabs
90
+ // Tabs (v2.0: Blocks | Patterns | Layout)
89
91
  tabBlocks: cySelector('blockEditor.blockPicker.tabBlocks'),
90
- tabConfig: cySelector('blockEditor.blockPicker.tabConfig'),
91
92
  tabIndicator: cySelector('blockEditor.blockPicker.tabIndicator'),
93
+ /**
94
+ * @deprecated tabConfig no longer exists in v2.0.
95
+ * Entity fields moved to Settings mode (viewSettings) in center column.
96
+ * Use tabLayout for tree view, or viewSettings for entity config.
97
+ */
98
+ tabConfig: cySelector('blockEditor.blockPicker.tabLayout'),
92
99
  // Search
93
100
  searchWrapper: cySelector('blockEditor.blockPicker.searchWrapper'),
94
101
  searchIcon: cySelector('blockEditor.blockPicker.searchIcon'),
@@ -104,13 +111,68 @@ export abstract class BlockEditorBasePOM extends BasePOM {
104
111
  blockName: (slug: string) => cySelector('blockEditor.blockPicker.blockName', { slug }),
105
112
  addBlock: (slug: string) => cySelector('blockEditor.blockPicker.addButton', { slug }),
106
113
  blockPickerEmpty: cySelector('blockEditor.blockPicker.empty'),
114
+ // Generic selector for counting all categories
115
+ categoryGeneric: '[data-cy^="block-picker-category-"]',
107
116
 
108
117
  // =========================================================================
109
- // ENTITY FIELDS PANEL - Left column "Configuración" tab
118
+ // PATTERNS TAB (in block picker)
110
119
  // =========================================================================
111
- entityFieldsPanel: cySelector('blockEditor.entityFieldsPanel.container'),
120
+ tabPatterns: cySelector('blockEditor.blockPicker.tabPatterns'),
121
+ patternsSearch: cySelector('blockEditor.blockPicker.patternsSearch'),
122
+ patternsList: cySelector('blockEditor.blockPicker.patternsList'),
123
+ patternsEmpty: cySelector('blockEditor.blockPicker.patternsEmpty'),
124
+ // Pattern cards (dynamic)
125
+ patternCard: (id: string) =>
126
+ cySelector('blockEditor.blockPicker.patternCard', { id }),
127
+ patternCardIcon: (id: string) =>
128
+ cySelector('blockEditor.blockPicker.patternCardIcon', { id }),
129
+ patternCardTitle: (id: string) =>
130
+ cySelector('blockEditor.blockPicker.patternCardTitle', { id }),
131
+ patternCardDescription: (id: string) =>
132
+ cySelector('blockEditor.blockPicker.patternCardDescription', { id }),
133
+ patternCardInsertButton: (id: string) =>
134
+ cySelector('blockEditor.blockPicker.patternCardInsertButton', { id }),
135
+ // Generic selector for counting patterns
136
+ patternCardGeneric: '[data-cy^="block-picker-pattern-card-"]',
137
+
138
+ // =========================================================================
139
+ // TREE VIEW (Layout tab)
140
+ // =========================================================================
141
+ tabLayout: cySelector('blockEditor.blockPicker.tabLayout'),
142
+ treeView: cySelector('blockEditor.treeView.container'),
143
+ treeViewEmpty: cySelector('blockEditor.treeView.empty'),
144
+ treeNode: (id: string) => cySelector('blockEditor.treeView.node', { id }),
145
+ treeNodeIcon: (id: string) =>
146
+ cySelector('blockEditor.treeView.nodeIcon', { id }),
147
+ treeNodeName: (id: string) =>
148
+ cySelector('blockEditor.treeView.nodeName', { id }),
149
+
150
+ // =========================================================================
151
+ // CONFIG PANEL - Center column - Settings mode (v2.0)
152
+ // =========================================================================
153
+ configPanel: cySelector('blockEditor.configPanel.container'),
154
+ configPanelScroll: cySelector('blockEditor.configPanel.scroll'),
155
+ // Entity Fields Section (collapsible)
156
+ configEntitySection: cySelector('blockEditor.configPanel.entityFieldsSection.container'),
157
+ configEntityTrigger: cySelector('blockEditor.configPanel.entityFieldsSection.trigger'),
158
+ configEntityContent: cySelector('blockEditor.configPanel.entityFieldsSection.content'),
159
+ configEntityField: (name: string) =>
160
+ cySelector('blockEditor.configPanel.entityFieldsSection.field', { name }),
161
+ // SEO Section (collapsible) - v2.0 moved from entityMetaPanel
162
+ configSeoSection: cySelector('blockEditor.configPanel.seoMetaSection.container'),
163
+ configSeoTrigger: cySelector('blockEditor.configPanel.seoMetaSection.trigger'),
164
+ configSeoContent: cySelector('blockEditor.configPanel.seoMetaSection.content'),
165
+ configMetaTitle: cySelector('blockEditor.configPanel.seoMetaSection.metaTitle'),
166
+ configMetaDescription: cySelector('blockEditor.configPanel.seoMetaSection.metaDescription'),
167
+
168
+ // =========================================================================
169
+ // ENTITY FIELDS PANEL - DEPRECATED (moved to configPanel in v2.0)
170
+ // =========================================================================
171
+ /** @deprecated Use configEntitySection in Settings mode instead */
172
+ entityFieldsPanel: cySelector('blockEditor.configPanel.entityFieldsSection.container'),
173
+ /** @deprecated Use configEntityField instead */
112
174
  entityField: (name: string) =>
113
- cySelector('blockEditor.entityFieldsPanel.field', { name }),
175
+ cySelector('blockEditor.configPanel.entityFieldsSection.field', { name }),
114
176
  entityCategoryList: cySelector('blockEditor.entityFieldsPanel.categoryList'),
115
177
  entityCategory: (slug: string) =>
116
178
  cySelector('blockEditor.entityFieldsPanel.categoryItem', { slug }),
@@ -154,9 +216,9 @@ export abstract class BlockEditorBasePOM extends BasePOM {
154
216
  cySelector('blockEditor.previewCanvas.blockSelected', { id }),
155
217
  // Generic selector for counting all preview blocks
156
218
  previewBlockGeneric: '[data-cy^="preview-block-"]',
157
- // Move buttons (legacy selectors for backward compatibility)
158
- moveUpBtn: (id: string) => `[data-cy="preview-block-${id}-move-up"]`,
159
- moveDownBtn: (id: string) => `[data-cy="preview-block-${id}-move-down"]`,
219
+ // Move buttons
220
+ moveUpBtn: (id: string) => cySelector('blockEditor.previewCanvas.moveUp', { id }),
221
+ moveDownBtn: (id: string) => cySelector('blockEditor.previewCanvas.moveDown', { id }),
160
222
  // Floating toolbar
161
223
  floatingToolbar: (id: string) =>
162
224
  cySelector('blockEditor.previewCanvas.floatingToolbar.container', { id }),
@@ -169,6 +231,22 @@ export abstract class BlockEditorBasePOM extends BasePOM {
169
231
  floatingToolbarDelete: (id: string) =>
170
232
  cySelector('blockEditor.previewCanvas.floatingToolbar.deleteBtn', { id }),
171
233
 
234
+ // =========================================================================
235
+ // PATTERN REFERENCE (in canvas)
236
+ // =========================================================================
237
+ patternReference: (ref: string) =>
238
+ cySelector('blockEditor.patternReference.container', { ref }),
239
+ patternReferenceBadge: (ref: string) =>
240
+ cySelector('blockEditor.patternReference.badge', { ref }),
241
+ patternReferenceRemove: (ref: string) =>
242
+ cySelector('blockEditor.patternReference.remove', { ref }),
243
+ patternReferenceLocked: (ref: string) =>
244
+ cySelector('blockEditor.patternReference.locked', { ref }),
245
+ patternReferenceEditLink: (ref: string) =>
246
+ cySelector('blockEditor.patternReference.editLink', { ref }),
247
+ // Generic selector for counting pattern references
248
+ patternReferenceGeneric: '[data-cy^="pattern-reference-"]',
249
+
172
250
  // =========================================================================
173
251
  // ENTITY META PANEL - SEO and custom fields
174
252
  // =========================================================================
@@ -214,8 +292,8 @@ export abstract class BlockEditorBasePOM extends BasePOM {
214
292
  cySelector('blockEditor.blockPropertiesPanel.form.field', { name }),
215
293
  fieldGroup: (id: string) =>
216
294
  cySelector('blockEditor.blockPropertiesPanel.form.fieldGroup', { id }),
217
- // Reset props button (legacy selector)
218
- resetPropsBtn: '[data-cy="reset-block-props"]',
295
+ // Reset props button
296
+ resetPropsBtn: cySelector('blockEditor.blockPropertiesPanel.resetPropsBtn'),
219
297
  // Array field
220
298
  arrayFieldContainer: (name: string) =>
221
299
  cySelector('blockEditor.blockPropertiesPanel.form.arrayField.container', { name }),
@@ -231,6 +309,12 @@ export abstract class BlockEditorBasePOM extends BasePOM {
231
309
  cySelector('blockEditor.blockPropertiesPanel.form.arrayField.itemRemove', { name, index }),
232
310
  arrayFieldAdd: (name: string) =>
233
311
  cySelector('blockEditor.blockPropertiesPanel.form.arrayField.addButton', { name }),
312
+ // Generic selectors for array fields (for counting/prefix matching)
313
+ arrayFieldGeneric: '[data-cy^="block-array-"]',
314
+ arrayFieldAddGeneric: '[data-cy$="-add"][data-cy^="block-array-"]',
315
+ arrayFieldRemoveGeneric: '[data-cy$="-remove"][data-cy^="block-array-"]',
316
+ arrayFieldUpGeneric: '[data-cy$="-up"][data-cy^="block-array-"]',
317
+ arrayFieldDownGeneric: '[data-cy$="-down"][data-cy^="block-array-"]',
234
318
 
235
319
  // =========================================================================
236
320
  // LEGACY ALIASES (for backward compatibility - will be removed)
@@ -347,20 +431,24 @@ export abstract class BlockEditorBasePOM extends BasePOM {
347
431
  return this
348
432
  }
349
433
 
434
+ /**
435
+ * Switch to Settings mode (v2.0 - entity fields, SEO, etc.)
436
+ * In v2.0, this shows the configPanel in the center column.
437
+ */
438
+ switchToSettingsMode() {
439
+ cy.get(this.editorSelectors.viewSettings).click()
440
+ return this
441
+ }
442
+
350
443
  /**
351
444
  * Switch to Layout/Editor mode
445
+ * @deprecated In v2.0, Layout is now a tab in BlockPicker (tabLayout), not a view mode.
446
+ * Use selectLayoutTab() for tree view, or switchToSettingsMode() for entity config.
352
447
  */
353
448
  switchToLayoutMode() {
354
- cy.get(this.editorSelectors.viewEditor).click()
355
- // Wait for layout canvas OR empty state to render (depends on whether blocks exist)
356
- cy.get('body').then(($body) => {
357
- // Either the canvas with blocks or the empty state should exist
358
- if ($body.find(this.editorSelectors.layoutCanvas).length > 0) {
359
- cy.get(this.editorSelectors.layoutCanvas, { timeout: 5000 }).should('exist')
360
- } else {
361
- cy.get(this.editorSelectors.layoutCanvasEmpty, { timeout: 5000 }).should('exist')
362
- }
363
- })
449
+ // v2.0: "Layout" mode is now accessed via the Layout tab in left sidebar
450
+ // This method now clicks the Layout tab for backward compatibility
451
+ cy.get(this.editorSelectors.tabLayout).click()
364
452
  return this
365
453
  }
366
454
 
@@ -382,9 +470,20 @@ export abstract class BlockEditorBasePOM extends BasePOM {
382
470
 
383
471
  /**
384
472
  * Select Config/Fields tab in left sidebar
473
+ * @deprecated In v2.0, entity fields moved to Settings mode (center column).
474
+ * Use switchToSettingsMode() for entity config/fields.
385
475
  */
386
476
  selectConfigTab() {
387
- cy.get(this.editorSelectors.tabConfig).click()
477
+ // v2.0: Config is now accessed via Settings mode, not a tab
478
+ cy.get(this.editorSelectors.viewSettings).click()
479
+ return this
480
+ }
481
+
482
+ /**
483
+ * Select Layout tab in left sidebar (tree view)
484
+ */
485
+ selectLayoutTab() {
486
+ cy.get(this.editorSelectors.tabLayout).click()
388
487
  return this
389
488
  }
390
489
 
@@ -712,7 +811,7 @@ export abstract class BlockEditorBasePOM extends BasePOM {
712
811
  * Assert block count in canvas
713
812
  */
714
813
  assertBlockCount(count: number) {
715
- cy.get('[data-cy^="sortable-block-"]').should('have.length', count)
814
+ cy.get(this.editorSelectors.sortableBlockGeneric).should('have.length', count)
716
815
  return this
717
816
  }
718
817
 
@@ -720,7 +819,7 @@ export abstract class BlockEditorBasePOM extends BasePOM {
720
819
  * Assert preview block count
721
820
  */
722
821
  assertPreviewBlockCount(count: number) {
723
- cy.get('[data-cy^="preview-block-"]').should('have.length', count)
822
+ cy.get(this.editorSelectors.previewBlockGeneric).should('have.length', count)
724
823
  return this
725
824
  }
726
825
 
@@ -1,6 +1,6 @@
1
1
  {
2
- "generated": "2026-01-22T13:56:10.187Z",
3
- "totalClasses": 1047,
2
+ "generated": "2026-01-25T21:32:53.384Z",
3
+ "totalClasses": 1067,
4
4
  "classes": [
5
5
  "!text-2xl",
6
6
  "''",
@@ -56,6 +56,7 @@
56
56
  ":",
57
57
  "===",
58
58
  "?",
59
+ "@container",
59
60
  "Fifth",
60
61
  "First",
61
62
  "Fourth",
@@ -480,6 +481,7 @@
480
481
  "hover:bg-muted/30",
481
482
  "hover:bg-muted/50",
482
483
  "hover:bg-muted/70",
484
+ "hover:bg-muted/80",
483
485
  "hover:bg-primary",
484
486
  "hover:bg-primary-foreground/20",
485
487
  "hover:bg-primary/20",
@@ -521,6 +523,7 @@
521
523
  "invisible",
522
524
  "isRecentlyModified",
523
525
  "italic",
526
+ "items-baseline",
524
527
  "items-center",
525
528
  "items-end",
526
529
  "items-start",
@@ -599,6 +602,7 @@
599
602
  "max-w-3xl",
600
603
  "max-w-4xl",
601
604
  "max-w-5xl",
605
+ "max-w-6xl",
602
606
  "max-w-7xl",
603
607
  "max-w-[100px]",
604
608
  "max-w-[120px]",
@@ -606,10 +610,12 @@
606
610
  "max-w-[200px]",
607
611
  "max-w-[80px]",
608
612
  "max-w-[calc(100%-2rem)]",
613
+ "max-w-full",
609
614
  "max-w-lg",
610
615
  "max-w-md",
611
616
  "max-w-none",
612
617
  "max-w-sm",
618
+ "max-w-xl",
613
619
  "max-w-xs",
614
620
  "mb-1",
615
621
  "mb-2",
@@ -618,9 +624,12 @@
618
624
  "mb-6",
619
625
  "mb-8",
620
626
  "md:col-span-2",
627
+ "md:col-span-3",
628
+ "md:col-span-5",
621
629
  "md:flex",
622
630
  "md:flex-none",
623
631
  "md:flex-row",
632
+ "md:grid-cols-10",
624
633
  "md:grid-cols-12",
625
634
  "md:grid-cols-2",
626
635
  "md:grid-cols-3",
@@ -666,6 +675,8 @@
666
675
  "mr-6",
667
676
  "mt-0.5",
668
677
  "mt-1",
678
+ "mt-10",
679
+ "mt-12",
669
680
  "mt-16",
670
681
  "mt-2",
671
682
  "mt-3",
@@ -775,6 +786,7 @@
775
786
  "py-12",
776
787
  "py-2",
777
788
  "py-20",
789
+ "py-24",
778
790
  "py-3",
779
791
  "py-4",
780
792
  "py-6",
@@ -833,6 +845,7 @@
833
845
  "size-8",
834
846
  "size-[--cell-size]",
835
847
  "size:",
848
+ "skeleton-container",
836
849
  "slide-in-from-bottom",
837
850
  "slide-in-from-bottom-2",
838
851
  "slide-in-from-left",
@@ -843,6 +856,7 @@
843
856
  "sm:flex-row",
844
857
  "sm:gap-2.5",
845
858
  "sm:grid-cols-2",
859
+ "sm:h-16",
846
860
  "sm:inline",
847
861
  "sm:inline-block",
848
862
  "sm:items-center",
@@ -918,6 +932,7 @@
918
932
  "text-left",
919
933
  "text-lg",
920
934
  "text-muted-foreground",
935
+ "text-muted-foreground/30",
921
936
  "text-muted-foreground/50",
922
937
  "text-muted-foreground/70",
923
938
  "text-orange-600",
@@ -967,6 +982,10 @@
967
982
  "tracking-widest",
968
983
  "transform",
969
984
  "transition",
985
+ "transition-[border-color,box-shadow]",
986
+ "transition-[border-color]",
987
+ "transition-[width,padding]",
988
+ "transition-[width]",
970
989
  "transition-all",
971
990
  "transition-colors",
972
991
  "transition-opacity",
@@ -1023,6 +1042,7 @@
1023
1042
  "w-[240px]",
1024
1043
  "w-[280px]",
1025
1044
  "w-[300px]",
1045
+ "w-[32rem]",
1026
1046
  "w-[400px]",
1027
1047
  "w-[40px]",
1028
1048
  "w-[50px]",