Skip to main content

Button — converter mapping

Source buttonbutton. 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

Priority40
Recognizerbutton
Matches whenA <button>, or an <a> styled as a button (a btn / button / cta class, or button-like padding + fill).
Becomesbutton
Recognizer block shape`{ t:'button', label
FallbackDegrades to code_block.

Text, link, alignment and any inline icon map to native options. The button’s look (fill / text / border / radius / shadow / typography) is reproduced via a scoped hi-fi custom_css base rather than by matching one of your Button presets — so the native style preset stays empty (a candidate to promote).

Option coverage

9/14 options mapped natively (64%) — 🟡 0 via CSS · ⚠️ 2 gaps (derivable, not yet) · ⚪ 3 default · ⚙️ 1 auto.

2 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
labelContenttext✅ Nativeset from $label
linkContenttext✅ Nativeset from $link (href)
targetContentswitch⚠️ Gaphardcoded '_self'; source anchor target=_blank is trivially detectable but not read
iconContenticon✅ Nativeinline svg icon_svg or icon-font class via icon_value
icon_positionContentselect✅ Nativebefore/after from $icon_pos
styleStylingbutton-style-picker✅ Nativebutton_preset_for (color preset) or btn-link for text links
sizeStylingbutton-style-picker✅ Nativebutton_preset_for size slug
shapeStylingimage-picker⚠️ Gapborder-radius is captured/reproduced via CSS but not mapped to this shape option
widthStylingmulti-picker✅ Nativew-100 full-width when w-full/block width:100% detected
alignmentStylingselect✅ Nativefrom climbed $align or group wrapper resolve_style_options
stateStylingselect⚪ Unmappedalways ''; active/disabled state not derived
hover_animationStylingbutton-hover-animation✅ Nativeclassify_hover_animation → .btnfx-* preset from captured hover
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