feat: Page Editor v1.0 - canonical schema, SSR parity, and migration
Major improvements to WooNooW Page Editor system: Schema & Architecture: - Canonical section schema with unified sectionSchema.ts - Normalized feature-grid to use items (not features) - Standardized default values across all section types - Schema versioning with automatic migration on read Backend (PHP): - Enhanced PlaceholderRenderer with typed output contracts - Added fallback behavior for empty/invalid dynamic sources - Added caching support for post data resolution - New SchemaMigration class for backward compatibility - New Features class for feature flags - Enhanced PageSSR with full style support - Removed controller-level special-casing for related_posts Frontend (Admin SPA): - Updated CanvasRenderer with schema-aware transformation - Enhanced InspectorPanel with canonical schema metadata - Added new section renderers Frontend (Customer SPA): - New section components: BentoCategoryGrid, MarqueeBanner, ProductCarousel, ShoppableImage - Updated FeatureGridSection for items prop contract Testing: - Add PHP tests: SchemaMigrationTest, PlaceholderRendererTest, PageSSRTest - Add TypeScript tests: schema-integration, feature-grid-regression - Add parity tests for React vs SSR content matching - Add CI script: check-schema-drift.mjs - Add VERIFICATION_CHECKLIST.md Documentation: - RELEASE_NOTES-v1.0.md with full release notes - docs/PAGE_EDITOR_SECTION_SCHEMA_V1.md - docs/PAGE_EDITOR_SSR_COVERAGE_AUDIT.md
This commit is contained in:
35
tests/fixtures/page-editor/feature-grid-v1.json
vendored
Normal file
35
tests/fixtures/page-editor/feature-grid-v1.json
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"sections": [
|
||||
{
|
||||
"id": "fixture-feature-grid",
|
||||
"type": "feature-grid",
|
||||
"layoutVariant": "grid-3",
|
||||
"colorScheme": "default",
|
||||
"styles": {
|
||||
"contentWidth": "contained"
|
||||
},
|
||||
"props": {
|
||||
"heading": {
|
||||
"type": "static",
|
||||
"value": "Our Features"
|
||||
},
|
||||
"items": {
|
||||
"type": "static",
|
||||
"value": [
|
||||
{
|
||||
"title": "Fast setup",
|
||||
"description": "Launch a storefront page with reusable sections.",
|
||||
"icon": "Zap"
|
||||
},
|
||||
{
|
||||
"title": "Consistent render",
|
||||
"description": "Use one contract across editor, storefront, and SSR.",
|
||||
"icon": "Layers"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user