storesynk-list
Section titled “storesynk-list”- Purpose: renders the products of a collection, or of the whole store with
all-products. Shared engine (ProductListBase): captures first element child as the item template, clones per product, feeds each viaprovideProduct()(no N+1 fetch). - Attributes:
collection : string = ""- collection handle.all-products : boolean = false- render every product in the store (explicit opt-in;collectionwins when both are set).limit : number = 12- max products fetched.
- Required ancestor / context:
storesynk-store(consumesstoreContext). - Children / template rule: TEMPLATE-CLONE - first element child is the template
and must be, or contain, a
storesynk-product. Missing → renders nothing (SSK-107). - Events: none.
- State it sets:
[ss-loading](during fetch),[ss-empty](no results).
search-result-list
Section titled “search-result-list”- Purpose: renders product search results. Same
ProductListBaseengine asstoresynk-list. Drivesearchlive via<search-input for="…">. - Attributes:
search : string = ""- the query string (usually set bysearch-input, not authored).limit : number = 12- max results.
- Required ancestor / context:
storesynk-store(consumesstoreContext). - Children / template rule: TEMPLATE-CLONE - first element child is the template,
must be/contain a
storesynk-product(commonly wrapped insearch-result-item). SSK-107. - Events: none.
- State it sets:
[ss-loading],[ss-empty].
predictive-search
Section titled “predictive-search”- Purpose: type-ahead search using Shopify’s predictiveSearch. Owns an
<input>and a results dropdown; clones the first item template per suggestion. The template’s parent element is used as the dropdown container. Closes on outside-click / Escape. - Attributes:
limit : number = 6- max suggestions.debounce : number = 200- input debounce in ms.
- Required ancestor / context:
storesynk-store(consumesstoreContext). - Children / template rule: TEMPLATE-CLONE - must contain both an
<input>and a template that is asearch-result-item(preferred) or astoresynk-product. Missing either → renders nothing (SSK-107). - Events: none (listens to its own input).
- State it sets:
[ss-open](dropdown visible),[ss-loading](during fetch).
search-input
Section titled “search-input”- Purpose: a debounced search box that drives another list/result element by id. Renders
its own
<input type="search">(or wires one you provide) and sets the target’s.search. - Attributes:
for : string = ""-idof the targetstoresynk-list/search-result-list.debounce : number = 250- debounce in ms.placeholder : string = ""- placeholder for the generated input.label : string = "Search"- the accessible name written onto the input asaria-labelwhen the input has neither anaria-labelof its own nor a<label>(a placeholder is not a name). Set it to match your UI language.
- Required ancestor / context: none - it does not consume any context. It needs a store + a target list to exist on the page, but not as an ancestor.
- Children: optionally one
<input>(else it creates one). - Events: none emitted (listens to the input’s
inputevent). - State it sets: none.
search-result-item
Section titled “search-result-item”- Purpose: styleable wrapper around the
storesynk-productinside asearch-result-listorpredictive-search(gives you a block to style/space the result). Pure markup wrapper (a logic-free styleable element) - no logic, no context. - Attributes: none.
- Required ancestor / context:
search-result-listorpredictive-search. - Children: a
storesynk-productsubtree (the result card). - Events / state: none.
Imported from the Storesynk skill v0.1.0 (references/component-reference.md). To change this page, change it there.