the customer workflow in mind: the customer fills one XLSX per sub-market, an importer builds the page). - Frontend layout 21 'Sub-Market Page' in the existing BackendLayoutDataProvider: six zones, one per Figma section, emitted as colPos110..colPos160 - the JSON groups plus appearance.layout are the front-end contract (spec clause 7.17). A first attempt via page-TSconfig BackendLayouts was the wrong mechanism next to the provider and was removed again - New Content Blocks vitec_markethero, vitec_marketintro, vitec_marketinsights (field bags, serialized unprefixed under data); the workflow section reuses intro-paragraph + vitec_card flip cards - Stories gained quote/quote_person/quote_role (Testimonial tab), maintained once per story, emitted on every story card; usecaselist gained the layout value 'testimonials' - New plugin vitec_productfeature: one referenced product as a full product card, serialisation shared with the product list (cObj made protected for the subclass) - vitec_productlist gained hand-picked product selection: exactly the chosen products in the editor's order, category filter ignored, visibility filters kept - closes the long-standing single-select gap - New CLI vitec:generate-submarket-workbooks: one protected customer XLSX per sub-market (9 main markets, 25 sub-markets from the Market category tree) - dropdowns filled live from the database, named ranges as the importer contract, hidden Meta sheet pinning submarket/group/ record uid, soft character-limit warnings, asset URL fields Verified end to end on Broadcast & Media: layout-21 payload with colPos110 carrying the hero element and its subline. Spec raised to v1.20.
46 lines
1.0 KiB
YAML
46 lines
1.0 KiB
YAML
# Sub-market template section 1 (Figma "Sub-Market Page", spec 2026-10-01).
|
|
# The H1 is NOT a field - it is the page title (dev names are canonical).
|
|
name: vitec/market-hero
|
|
group: vitec_custom_components
|
|
prefixFields: true
|
|
prefixType: vendor
|
|
|
|
fields:
|
|
- identifier: subline
|
|
type: Text
|
|
max: 120
|
|
|
|
- identifier: cta_section
|
|
type: Palette
|
|
label: CTA button
|
|
fields:
|
|
- identifier: cta_label
|
|
type: Text
|
|
max: 40
|
|
- identifier: cta_link
|
|
type: Link
|
|
|
|
- identifier: bgimage
|
|
type: File
|
|
minitems: 0
|
|
maxitems: 1
|
|
allowed: common-image-types
|
|
|
|
- identifier: video_section
|
|
type: Palette
|
|
label: Video teaser (optional - empty url hides the card)
|
|
fields:
|
|
- identifier: video_title
|
|
type: Text
|
|
max: 80
|
|
- type: Linebreak
|
|
- identifier: video_url
|
|
type: Text
|
|
max: 500
|
|
- type: Linebreak
|
|
- identifier: video_cover
|
|
type: File
|
|
minitems: 0
|
|
maxitems: 1
|
|
allowed: common-image-types
|