{# @description One column, centred. The default opener, for when the words are the product. #} {# @prop eyebrow:text | description:"Short line above the heading — a category, a release name" #} {# @prop title:text | default:"Ship the page, not the CSS" | description:"The heading. Use the title slot instead when it contains markup." #} {# @prop lead:text | description:"The supporting sentence under the heading" #} {# @prop level:select['1', '2', '3', '4', '5', '6'] | default:"1" | description:"Heading level. 1 is right for a landing page." #} {# @prop invert:boolean | default:False | description:"Light copy, for a dark background. Each background says whether it wants this." #} {# @prop size:select['sm', 'md', 'lg', 'screen'] | default:"md" | description:"How much vertical room the block takes" #} {# @prop class:text | description:"Extra classes on the outer section. A plain surface colour goes here: bg-base-200." #} {# @slot:background — A background block, rendered into a layer behind the copy #} {# @slot:announcement — Above the eyebrow. A pill linking to the latest release, usually. #} {# @slot:actions Get started Learn more — The button row. Write real anchor markup, so it can post, submit or carry anything. #} {# @slot:footnote — Under the actions. A trust line, a rating, a row of logos. #}
{% if background %} {% comment %} `-z-10` in an isolated section puts the layer above the surface colour and below the copy. It is hidden from assistive technology, so a meaningful image belongs in a `media` slot (#21). {% endcomment %} {% endif %}
{{ announcement }} {% if eyebrow %}

{{ eyebrow }}

{% endif %} {# djlint:off #} {{ title }} {# djlint:on #} {% if lead %} {% comment %} `/80` and never lower: 70% drops to 3.86:1 on winter against the 4.5:1 needed (#21). Under `invert` the copy stays full strength, since 80% gives 4.09:1 on synthwave. {% endcomment %}

{{ lead }}

{% endif %} {% if actions %}
{{ actions }}
{% endif %} {% if footnote %}
{{ footnote }}
{% endif %}