Skip to main content

Special Heading — converter mapping

Source headingspecial_heading. This page shows the recognizer rule and every option on the shortcode, with how the converter fills it — so you can see at a glance which options are mapped, which are reproduced via CSS, and which are left for manual editing.

Recognizer

Priority80
Recognizerheading
Matches whenA semantic heading tag (<h1><h6>), or a text node the heuristics score as a heading. Level ≤ 2 becomes a page Title (larger Display type); level ≥ 3 a section heading.
Becomesspecial_heading
Recognizer block shape`{ t:'heading', html
FallbackDegrades to text_block, then code_block.

A chip/badge sitting directly above the heading is pulled in as its overline (with the chip's inline SVG → overline_icon, rendered as a filled pill). Typography/size/color are re-asserted at specificity 0 (the hi-fi base) so it looks identical while staying editable.

Option coverage

18/32 options mapped natively (56%) — 🟡 0 via CSS · ⚠️ 3 gaps (derivable, not yet) · ⚪ 11 default · ⚙️ 1 auto.

3 derivable gaps

The ⚠️ rows below are options a source realistically expresses that the converter doesn't derive yet — the real to-do list for improving this element's fidelity. The ⚪ default rows are intentional (no reliable signal, or a UnysonPlus-specific choice).

OptionTabTypeStatusMapped from / note
overlineContenttext✅ Nativeset from $h['overline'] (kicker text, svg stripped out)
titleContenttext✅ Nativeset from $h['title'] via map_accent_classes
subtitleContentwp-editor✅ Nativeset from $h['subtitle'] via map_accent_classes
headingContentselect✅ Native'h'.$lvl from captured $h['level'] (1-6, default h2)
overline_iconIconsicon✅ Nativeinline extracted from overline / overline_svg chip
overline_icon_positionIconsselect✅ Nativebefore/after computed from svg position in overline markup
iconIconsicon⚪ Unmappedtitle icon never set by n_heading; only overline icons are extracted
title_icon_positionIconsselect⚪ Unmappedno title icon handled, so position never set
icon_badge_presetIconsborder-style-picker⚪ Unmappednot set in n_heading (overline chip uses overline_container pill instead)
overline_uppercaseLayoutswitch✅ Nativeyes/no from overline_transform:uppercase or all-caps text
overline_markerLayoutselect⚪ Unmappedrule/dot/lines/bar marker never derived by the mapper
overline_marker_positionLayoutselect⚪ Unmappedno marker derived, so position unset
overline_containerLayoutselect✅ Native'pill' when $h['overline_pill'] (chip-before-heading badge)
element_spacingLayoutselect✅ Nativefrom space-y-* class or title mb px snapped tight/relaxed
block_max_widthLayoutunit-input✅ Nativefrom wrapper max-w-* / wrapMaxW measure (heading_layout)
alignmentStylingimage-picker✅ Nativefrom text-center/right class or captured $h['align']
overline_alignStylingimage-picker⚪ Unmappedper-part align not set; only block alignment derived
title_alignStylingimage-picker⚪ Unmappedper-part align not set; only block alignment derived
subtitle_alignStylingimage-picker⚪ Unmappedper-part align not set; only block alignment derived
display_sizeStylingselect⚠️ Gaptitle font-size is captured (title_fs / computed) but reproduced via custom CSS, not mapped to this size preset option
title_max_widthStylingunit-input⚠️ Gaptitle constrained measure captured but emitted as scoped CSS (heading_measures), not this option
subtitle_sizeStylingselect✅ Nativetext_preset_for($h['subtitle_fs']) → subtitle Text Style preset
subtitle_max_widthStylingunit-input⚠️ Gapsubtitle constrained measure captured but emitted as scoped CSS, not this option
bg_colorStylingpredefined-colors-color-picker-compact⚪ Unmappedheading background not set; section owns background
overline_colorStylingpredefined-colors-color-picker-compact✅ Nativefrom $h['overline_color'] captured computed color
title_colorStylingpredefined-colors-color-picker-compact✅ Nativefrom title_color_src when a real non-default ink
subtitle_colorStylingpredefined-colors-color-picker-compact✅ Nativefrom subtitle_color_src (e.g. muted text-foreground/70)
overline_classAdvancedtext✅ Nativesource overline classes carried (strip_inert_utilities)
title_classAdvancedtext✅ Nativesource title classes carried (strip_inert_utilities)
subtitle_classAdvancedtext✅ Nativesource subtitle classes carried (strip_inert_utilities)
animation · gsap_motion · interaction · text_effect · scroll_* · flip_card · motion_path · confetti · …Animationsmulti-picker⚪ UnmappedDefault — Animation Engine effects (no source mapping)
spacing · css_id · css_class · custom_css · element_position · element_overflow · dc_*Advancedtext / code-editor⚪ UnmappedDefault — outer spacing + per-instance advanced fields, set by hand
unique_id · custom_attrs · responsive_hideAdvancedgroup⚙️ AutoPlumbing — generated / not set

Status legend

  • Native — Set as the native option from the source.
  • 🟡 Via CSS — Reproduced via scoped CSS / the styler; the native option is left empty (candidate to promote to a native mapping).
  • ⚠️ Gap — A source signal exists, but the converter does not derive this yet — a mapping worth adding (a real TODO, not a limitation).
  • Unmapped — Left at default — no reliable source signal, or an intentional/UnysonPlus-specific choice with nothing to translate.
  • ⚙️ Auto — Plumbing (unique id, custom attrs). Excluded from the coverage percentage.

← Back to Element Mapping