Action vs. link
content.action decides <a> vs <button> from type; variant (how it looks) is kept separate and never changes the tag.
What's configured here (see components/content/action/ and components/content/actions/):
typedecides the tag:linkalways renders<a>;button,dialog,dialog-closeandsubmitall render<button>.variantonly ever changes appearance (.btn--*) — it never changes the tag.content.actionslays a list of these out with a shareddirection/align, so a component never has to build its own action row.
Same type, every variant
type: 'link' throughout — only variant changes.
Same variant, every type
All rendered variant: 'primary'; only the <a>/<button> and its behaviour changes with type. "Open dialog" wires data-dialog-open straight from the action config — no per-usage markup required.
Opened by a content.action
This dialog has no built-in trigger of its own — "Open dialog" above is a plain content.action with type: 'dialog'. The footer pairs type: 'dialog-close' with type: 'link'.
content.actions layout
Same two actions; the wrapper owns spacing/alignment via direction/align, each item still owns its own type/variant.
row / left (default)
row / right
column