{% comment %} Event-Ready Finder — JAUS Section for Online Store 2.0 themes. Add to the home page, occasion collections and the search template. Reads product metafields in the "jaus" namespace (see metafield-definitions.json) and variant inventory. Assets: event-ready.css, event-ready.js (place both in /assets). The section renders a JSON feed for the chosen collection. Liquid returns 250 products per page, so the loop is wrapped in paginate; event-ready.js fetches the remaining pages through the Section Rendering API (?section_id=…&page=N) and merges them, so catalogs of any size work without an external feed. For very large catalogs you can still point feed_url at an endpoint that returns the same shape as finder-data.json. {% endcomment %} {{ 'event-ready.css' | asset_url | stylesheet_tag }} {%- assign coll = collections[section.settings.collection] | default: collections['dresses'] -%} {%- assign occasions = section.settings.occasions | split: ',' -%} {%- assign sizes = section.settings.sizes | split: ',' -%} {%- paginate coll.products by 250 -%}
{% if section.settings.eyebrow != blank %}

{{ section.settings.eyebrow | escape }}

{% endif %}

{{ section.settings.heading | escape }}

{% if section.settings.text != blank %}

{{ section.settings.text | escape }}

{% endif %}
{{ 'Occasion' }}
{%- for o in occasions -%} {%- assign ov = o | strip | downcase -%} {%- endfor -%}
Your size
{%- for s in sizes -%} {%- assign sv = s | strip | upcase -%} {%- endfor -%}

{%- comment -%} Inline feed: one row per product with the fields the Finder needs. {%- endcomment -%}
{%- endpaginate -%} {% schema %} { "name": "Event-Ready Finder", "tag": "section", "class": "section-event-ready", "settings": [ { "type": "text", "id": "eyebrow", "label": "Eyebrow", "default": "Event-Ready" }, { "type": "text", "id": "heading", "label": "Heading", "default": "The dress. In your size. Before the date." }, { "type": "textarea", "id": "text", "label": "Intro", "default": "Pick the occasion, your size and the date. We only show what's in stock in your size, with a real arrives-by date." }, { "type": "collection", "id": "collection", "label": "Source collection" }, { "type": "url", "id": "feed_url", "label": "Feed URL (optional, for catalogs over 250 products)" }, { "type": "text", "id": "occasions", "label": "Occasions (comma separated, must match jaus.occasion values)", "default": "Wedding guest, Black tie, Bride, Bridesmaid, Prom, Homecoming, Night out, Vacation" }, { "type": "text", "id": "sizes", "label": "Sizes (comma separated)", "default": "XXS, XS, S, M, L, XL, XXL" }, { "type": "text", "id": "default_size", "label": "Default size", "default": "M" }, { "type": "header", "content": "Shipping calendar" }, { "type": "select", "id": "cutoff_hour", "label": "Same-day cutoff (hour, ET, 24h)", "options": [ { "value": "8", "label": "8" }, { "value": "9", "label": "9" }, { "value": "10", "label": "10" }, { "value": "11", "label": "11" }, { "value": "12", "label": "12" }, { "value": "13", "label": "13" }, { "value": "14", "label": "14" }, { "value": "15", "label": "15" }, { "value": "16", "label": "16" }, { "value": "17", "label": "17" }, { "value": "18", "label": "18" } ], "default": "14" }, { "type": "select", "id": "std_days", "label": "Standard: business days after ship (worst case)", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" }, { "value": "5", "label": "5" }, { "value": "6", "label": "6" }, { "value": "7", "label": "7" } ], "default": "4" }, { "type": "select", "id": "exp_days", "label": "Express: business days after ship", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" }, { "value": "3", "label": "3" }, { "value": "4", "label": "4" } ], "default": "2" }, { "type": "select", "id": "ovn_days", "label": "Overnight: business days after ship", "options": [ { "value": "1", "label": "1" }, { "value": "2", "label": "2" } ], "default": "1" }, { "type": "number", "id": "free_over", "label": "Free shipping threshold (USD)", "default": 70 }, { "type": "header", "content": "Boutique hold" }, { "type": "text", "id": "store_name", "label": "Boutique name shown in the hold button", "default": "Birmingham" }, { "type": "url", "id": "hold_url", "label": "Hold request form URL (Shopify Forms page). Leave blank to use email" } ], "presets": [ { "name": "Event-Ready Finder" } ] } {% endschema %}