{{ S.title }}

{{ S.tagline }}

@if (errorMsg()) {

{{ errorMsg() }}

} @if (search.hasSearched()) {
@for (store of search.stores(); track store.id) { @if (search.results().get(store.id); as r) { {{ store.displayName }} @switch (r.status) { @case ('idle') { } @case ('searching') { {{ S.searching }} } @case ('needs_solve') { } @case ('done') { {{ r.offers.length }} {{ offersWord(r.offers.length) }} } @case ('empty') { {{ S.noResults }} } @case ('error') { {{ S.storeError }} } } } }
} @if (brands().length > 0) {
@for (b of brands(); track b.key) { }
} @if (search.searching() && groups().length === 0) { @for (i of [1, 2]; track i) {
} } @for (g of groups(); track g.key; let i = $index) { @if (i === firstAnalogueIndex()) {

{{ S.analoguesHeading }}

}
@if (g.imageUrl) {
}
@if (g.exactMatch) { {{ S.exactMatch }} } @if (g.brand) { {{ g.brand }} } {{ g.partNumber }}

{{ g.title }}

@if (g.attributes.length > 0) {
@for (a of visibleAttrs(g); track $index) { @if (a.label) { {{ a.label }}: } {{ a.value }} } @if (g.attributes.length > attrPreviewCount) { }
}
{{ g.offers.length }} {{ offersWord(g.offers.length) }}
{{ g.offers.length > 1 ? S.fromPrice(price(g.minPriceEur)) : price(g.minPriceEur) }}
@for (o of g.offers; track o.url; let first = $first) { }
{{ S.colStore }} {{ S.colAvailability }} {{ S.colPrice }}
{{ storeName(o.store) }} {{ availabilityText(o) }} {{ price(o.priceEur) }} @if (first && g.offers.length > 1) { {{ S.cheapest }} } {{ S.viewAtStore }}
} @if (search.offers().length > 0 && groups().length === 0) {

{{ S.filteredOut(hiddenCount()) }}

} @if (search.allDone() && search.offers().length === 0) {
{{ S.nothingAnywhere }}
} @if (search.allDone() && groups().length > 0) {

{{ S.checkedJustNow }}

} @if (!search.hasSearched()) {

{{ S.tagline }}

}
@if (solveFrameUrl(); as frame) {
{{ S.solveTitle(solvingStoreName()) }}

{{ S.solveHelp }}

}