{%- comment -%} MIT License · (c) 2026 Lintel · https://lintelagency.com/resources/shopify-sections {%- endcomment -%} {%- comment -%} Split hero: badge, headline, copy, two buttons, optional stats, image on one side. Separate desktop and mobile image, padding and alignment. Layout pattern adapted from shadcn/ui hero blocks; plain CSS, no Tailwind. Depends on: snippets/lib-button.liquid, snippets/lib-image.liquid {%- endcomment -%} {%- liquid assign s = section.settings assign heading_tag = s.heading_tag | default: 'h2' assign eager = false if section.index <= 2 assign eager = true endif -%}
{%- if s.eyebrow != blank -%}

{{ s.eyebrow | escape }}

{%- endif -%} {%- if s.heading != blank -%} <{{ heading_tag }} class="lib-hero__heading lib-hero__heading--{{ s.heading_size }}"> {{- s.heading -}} {%- endif -%} {%- if s.text != blank -%}
{{ s.text }}
{%- endif -%} {%- if s.button_label != blank or s.button2_label != blank -%}
{%- render 'lib-button', label: s.button_label, url: s.button_url, style: s.button_style, new_tab: s.button_new_tab -%} {%- render 'lib-button', label: s.button2_label, url: s.button2_url, style: s.button2_style, new_tab: s.button2_new_tab, arrow: false -%}
{%- endif -%} {%- if section.blocks.size > 0 -%}
{%- for block in section.blocks -%}
{{ block.settings.label | escape }}
{{ block.settings.value | escape }}
{%- endfor -%}
{%- endif -%}
{%- render 'lib-image', image: s.image, image_mobile: s.image_mobile, class: 'lib-hero__img', sizes: '(min-width: 990px) 50vw, 100vw', eager: eager -%}
{% stylesheet %} .lib-hero { background-color: var(--lib-bg); background-image: var(--lib-bg-image, none); color: var(--lib-text); padding: var(--lib-pt) 1rem var(--lib-pb); } .lib-hero__inner { max-width: 1200px; margin: 0 auto; display: grid; gap: clamp(2rem, 5vw, 4rem); } .lib-hero--full .lib-hero__inner { max-width: none; } @media (max-width: 749px) { .lib-hero { padding-top: var(--lib-pt-m); padding-bottom: var(--lib-pb-m); } .lib-hero[data-show='desktop'] { display: none; } .lib-hero[data-mobile-order='image_first'] .lib-hero__media { order: -1; } } @media (min-width: 750px) { .lib-hero[data-show='mobile'] { display: none; } } @media (min-width: 990px) { .lib-hero__inner { grid-template-columns: 1fr 1fr; } .lib-hero--left .lib-hero__media { order: -1; } .lib-hero[data-valign='start'] .lib-hero__inner { align-items: start; } .lib-hero[data-valign='center'] .lib-hero__inner { align-items: center; } .lib-hero[data-valign='end'] .lib-hero__inner { align-items: end; } } /* Alignment: desktop, then mobile override. */ .lib-hero__copy { display: flex; flex-direction: column; align-items: flex-start; text-align: left; } .lib-hero__copy[data-align='center'] { align-items: center; text-align: center; } .lib-hero__copy[data-align='right'] { align-items: flex-end; text-align: right; } @media (max-width: 749px) { .lib-hero__copy[data-align-m='left'] { align-items: flex-start; text-align: left; } .lib-hero__copy[data-align-m='center'] { align-items: center; text-align: center; } .lib-hero__copy[data-align-m='right'] { align-items: flex-end; text-align: right; } } .lib-hero__badge { display: inline-flex; align-items: center; gap: 0.5rem; margin: 0 0 1.25rem; padding: 0.35rem 0.85rem; border-radius: 999px; font-size: 0.85rem; font-weight: 500; background: color-mix(in srgb, var(--lib-text) 7%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--lib-text) 14%, transparent); } .lib-hero__dot { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--lib-accent); animation: lib-hero-pulse 2s infinite; } @keyframes lib-hero-pulse { 0% { box-shadow: 0 0 0 0 var(--lib-accent); } 70%, 100% { box-shadow: 0 0 0 6px transparent; } } .lib-hero__heading { margin: 0; font-size: clamp(2.25rem, 5vw, 4rem); line-height: 1.05; letter-spacing: -0.03em; text-wrap: balance; } .lib-hero__heading--small { font-size: clamp(1.75rem, 3vw, 2.5rem); } .lib-hero__heading--medium { font-size: clamp(2rem, 4vw, 3.25rem); } .lib-hero__heading--xlarge { font-size: clamp(2.75rem, 7vw, 5.5rem); } .lib-hero__text { margin-top: 1.25rem; max-width: 34rem; font-size: 1.125rem; line-height: 1.6; opacity: 0.75; } .lib-hero__text > :first-child { margin-top: 0; } .lib-hero__text > :last-child { margin-bottom: 0; } .lib-hero__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-top: 2rem; } .lib-hero__copy[data-align='center'] .lib-hero__actions { justify-content: center; } .lib-hero__stats { display: flex; flex-wrap: wrap; gap: 2.5rem; margin: 2.5rem 0 0; padding-top: 1.5rem; border-top: 1px solid color-mix(in srgb, var(--lib-text) 12%, transparent); } .lib-hero__stat { display: flex; flex-direction: column-reverse; } .lib-hero__stat dd { margin: 0; font-size: 1.75rem; font-weight: 700; letter-spacing: -0.02em; } .lib-hero__stat dt { font-size: 0.85rem; opacity: 0.65; } /* Media: ratio per device; "adapt" keeps the image's own shape. */ .lib-hero__media { position: relative; border-radius: var(--lib-radius-img); overflow: hidden; background: color-mix(in srgb, var(--lib-text) 6%, transparent); } .lib-hero__media[data-ratio='square'] { aspect-ratio: 1; } .lib-hero__media[data-ratio='portrait'] { aspect-ratio: 4 / 5; } .lib-hero__media[data-ratio='landscape'] { aspect-ratio: 3 / 2; } @media (max-width: 749px) { .lib-hero__media[data-ratio-m='square'] { aspect-ratio: 1; } .lib-hero__media[data-ratio-m='portrait'] { aspect-ratio: 4 / 5; } .lib-hero__media[data-ratio-m='landscape'] { aspect-ratio: 3 / 2; } .lib-hero__media[data-ratio-m='adapt'] { aspect-ratio: auto; } } .lib-hero__img { display: block; width: 100%; height: 100%; object-fit: cover; } .lib-hero__media[data-ratio='adapt'] .lib-hero__img { height: auto; } .lib-hero__img:is(svg) { fill: color-mix(in srgb, var(--lib-text) 25%, transparent); } /* Motion: copy rises in once on load. */ .lib-hero[data-animate] .lib-hero__copy > * { animation: lib-hero-rise 0.7s cubic-bezier(0.2, 0.7, 0.2, 1) both; } .lib-hero[data-animate] .lib-hero__copy > :nth-child(2) { animation-delay: 0.08s; } .lib-hero[data-animate] .lib-hero__copy > :nth-child(3) { animation-delay: 0.16s; } .lib-hero[data-animate] .lib-hero__copy > :nth-child(n + 4) { animation-delay: 0.24s; } @keyframes lib-hero-rise { from { opacity: 0; transform: translateY(14px); } } @media (prefers-reduced-motion: reduce) { .lib-hero__dot, .lib-hero[data-animate] .lib-hero__copy > * { animation: none; } } {% endstylesheet %} {% schema %} { "name": "Lib · Hero split", "tag": "section", "class": "lib-section", "max_blocks": 3, "settings": [ { "type": "header", "content": "Content" }, { "type": "text", "id": "eyebrow", "label": "Badge", "default": "New collection" }, { "type": "inline_richtext", "id": "heading", "label": "Heading", "default": "Made to be worn, every day" }, { "type": "select", "id": "heading_tag", "label": "Heading tag", "info": "Use H1 only when this is the page's main heading.", "options": [ { "value": "h1", "label": "H1" }, { "value": "h2", "label": "H2" }, { "value": "h3", "label": "H3" }, { "value": "p", "label": "Paragraph" } ], "default": "h2" }, { "type": "select", "id": "heading_size", "label": "Heading size", "options": [ { "value": "small", "label": "Small" }, { "value": "medium", "label": "Medium" }, { "value": "large", "label": "Large" }, { "value": "xlarge", "label": "Extra large" } ], "default": "large" }, { "type": "richtext", "id": "text", "label": "Text", "default": "

Short supporting line that says what the store sells and why it is different.

" }, { "type": "header", "content": "Image" }, { "type": "image_picker", "id": "image", "label": "Desktop image" }, { "type": "image_picker", "id": "image_mobile", "label": "Mobile image", "info": "Optional. Shown below 750px; a portrait crop works best." }, { "type": "select", "id": "image_position", "label": "Image position on desktop", "options": [ { "value": "right", "label": "Right" }, { "value": "left", "label": "Left" } ], "default": "right" }, { "type": "select", "id": "image_ratio", "label": "Image shape on desktop", "options": [ { "value": "adapt", "label": "Adapt to image" }, { "value": "square", "label": "Square" }, { "value": "portrait", "label": "Portrait" }, { "value": "landscape", "label": "Landscape" } ], "default": "square" }, { "type": "select", "id": "image_ratio_mobile", "label": "Image shape on mobile", "options": [ { "value": "adapt", "label": "Adapt to image" }, { "value": "square", "label": "Square" }, { "value": "portrait", "label": "Portrait" }, { "value": "landscape", "label": "Landscape" } ], "default": "portrait" }, { "type": "select", "id": "mobile_order", "label": "Order on mobile", "options": [ { "value": "text_first", "label": "Text first" }, { "value": "image_first", "label": "Image first" } ], "default": "text_first" }, { "type": "range", "id": "image_radius", "label": "Image corner radius", "min": 0, "max": 40, "step": 2, "unit": "px", "default": 20 }, { "type": "header", "content": "Buttons" }, { "type": "text", "id": "button_label", "label": "First button label", "default": "Shop now" }, { "type": "url", "id": "button_url", "label": "First button link" }, { "type": "select", "id": "button_style", "label": "First button style", "options": [ { "value": "primary", "label": "Solid" }, { "value": "outline", "label": "Outline" }, { "value": "text", "label": "Text link" } ], "default": "primary" }, { "type": "checkbox", "id": "button_new_tab", "label": "Open first link in a new tab", "default": false }, { "type": "text", "id": "button2_label", "label": "Second button label", "default": "Our story" }, { "type": "url", "id": "button2_url", "label": "Second button link" }, { "type": "select", "id": "button2_style", "label": "Second button style", "options": [ { "value": "primary", "label": "Solid" }, { "value": "outline", "label": "Outline" }, { "value": "text", "label": "Text link" } ], "default": "outline" }, { "type": "checkbox", "id": "button2_new_tab", "label": "Open second link in a new tab", "default": false }, { "type": "header", "content": "Layout" }, { "type": "select", "id": "section_width", "label": "Width", "options": [ { "value": "page", "label": "Page width" }, { "value": "full", "label": "Full width" } ], "default": "page" }, { "type": "text_alignment", "id": "text_alignment", "label": "Text alignment on desktop", "default": "left" }, { "type": "select", "id": "text_alignment_mobile", "label": "Text alignment on mobile", "options": [ { "value": "left", "label": "Left" }, { "value": "center", "label": "Center" }, { "value": "right", "label": "Right" } ], "default": "left" }, { "type": "select", "id": "vertical_alignment", "label": "Text position next to the image", "options": [ { "value": "start", "label": "Top" }, { "value": "center", "label": "Middle" }, { "value": "end", "label": "Bottom" } ], "default": "center" }, { "type": "header", "content": "Colors" }, { "type": "color", "id": "color_bg", "label": "Background", "default": "#FAFAF9" }, { "type": "color_background", "id": "color_bg_gradient", "label": "Background gradient", "info": "Optional. Covers the background color." }, { "type": "color", "id": "color_text", "label": "Text", "default": "#0C0A09" }, { "type": "color", "id": "color_accent", "label": "Accent (solid button, badge dot)", "default": "#0C0A09" }, { "type": "color", "id": "color_accent_text", "label": "Text on accent", "default": "#FAFAF9" }, { "type": "header", "content": "Spacing and visibility" }, { "type": "range", "id": "padding_top", "label": "Top padding on desktop", "min": 0, "max": 200, "step": 4, "unit": "px", "default": 96 }, { "type": "range", "id": "padding_bottom", "label": "Bottom padding on desktop", "min": 0, "max": 200, "step": 4, "unit": "px", "default": 96 }, { "type": "range", "id": "padding_top_mobile", "label": "Top padding on mobile", "min": 0, "max": 160, "step": 4, "unit": "px", "default": 48 }, { "type": "range", "id": "padding_bottom_mobile", "label": "Bottom padding on mobile", "min": 0, "max": 160, "step": 4, "unit": "px", "default": 56 }, { "type": "select", "id": "show_on", "label": "Show on", "options": [ { "value": "all", "label": "All devices" }, { "value": "desktop", "label": "Desktop only" }, { "value": "mobile", "label": "Mobile only" } ], "default": "all" }, { "type": "text", "id": "anchor_id", "label": "Anchor ID", "info": "Optional. Link to this section with #your-id." }, { "type": "header", "content": "Motion" }, { "type": "checkbox", "id": "animate", "label": "Animate text on load", "default": true } ], "blocks": [ { "type": "stat", "name": "Stat", "settings": [ { "type": "text", "id": "value", "label": "Value", "default": "4.9/5" }, { "type": "text", "id": "label", "label": "Label", "default": "Customer rating" } ] } ], "presets": [ { "name": "Lib · Hero split", "blocks": [ { "type": "stat", "settings": { "value": "4.9/5", "label": "Customer rating" } }, { "type": "stat", "settings": { "value": "30 days", "label": "Free returns" } } ] } ] } {% endschema %}