Theme
Technical review
Executive assessment
The specification is a credible foundation for a Craft 5 page builder. It defines a constrained seven-component library, uses native nested entries, promotes shared fields and isolated Twig partials, and addresses accessibility, responsive images, editor experience, and SEO.
It is not yet implementation-complete. The latest design evidence and the PDF disagree on several behaviours, and a few field models are too ambiguous to implement without making product decisions in code.
What is already strong
- Craft 5 nested entries are used instead of legacy Matrix block types.
- Each component maps cleanly to an entry type and Twig partial.
- Shared CTA and asset fields reduce duplicated configuration.
- Conditional fields keep the one- and two-column variants manageable.
- Rich text is deliberately constrained to protect visual consistency and heading hierarchy.
- Image transforms, responsive
srcset, lazy loading, and above-the-fold exceptions are identified. - Accordion accessibility and no-JavaScript resilience are considered.
- The form section records Wheelform 4.0.4 and its expected render flow.
Cross-source conflicts
| Subject | Latest Figma evidence | Technical specification | Required decision |
|---|---|---|---|
| Form | Static contact-form wireframe | Editor selects an existing Wheelform form | Decide whether the wireframe is merely the default rendered example or a fixed form contract. |
| Two-column CTAs | Text/Text and Image/Image show a CTA under each column | One shared CTA pair is listed, and the shared-field table omits two-column | Decide between one component CTA and independent per-column CTAs. |
| Four-column mobile | A 2×2 mobile grid | A single-column mobile stack | Choose one responsive rule and encode it in the acceptance tests. |
| Text/Image mobile | Image first, followed by text and CTA | Stacking is specified but ordering is not | Record image-first mobile ordering if the Figma behaviour is intended. |
| Breakpoint | The generated reference uses an sm transition | Exact site token remains open | Reuse the existing project token or approve a single new value. |
Model gaps
CTA cardinality
The shared ctaLabel and ctaLink pair works for components with one CTA. It cannot express separate CTAs beneath both two-column items. If independent CTAs are required, use column-specific fields or nested column entries rather than overloading the shared pair.
Field handles and validation
The spec gives entry-type handles but not a complete canonical field-handle manifest. Required-vs-conditional validation, link pairing, asset-volume restrictions, focal-point behaviour, and empty-state handling should be recorded before configuration begins.
Heading ownership
The Header Banner title may become the page H1, but the rule is conditional on placement. The implementation needs a page-level heading contract so components cannot create duplicate or missing H1 elements.
Form and caching behaviour
The Wheelform render pattern is plausible, but the deployed Craft environment still needs confirmation of plugin configuration, CSRF strategy, spam controls, caching/Blitz interaction, mail delivery, and error-state styling.
Design evidence limitations
The Figma .make archive is a proprietary backup, not runnable source. The generated preview JavaScript depends on Figma runtime globals. The screenshots are useful visual evidence, but they do not replace production tokens, semantic markup, keyboard testing, or browser QA.
Recommendation
Treat the PDF as the baseline data-model specification and use the Figma Version 5 capture as visual evidence. Resolve the direct conflicts above in a short decision record before the Craft build starts, then turn those decisions into field-level and responsive acceptance tests.