summaryrefslogtreecommitdiff
path: root/src/components/jet/shelf/ProductPageLinkShelf.svelte
blob: 7b41e80bf5ebe0ba36851283aa0e6ac0d848f4f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<script lang="ts" context="module">
    import type { Shelf, ProductPageLink } from '@jet-app/app-store/api/models';

    interface ProductPageLinkShelf extends Shelf {
        items: ProductPageLink[];
    }

    export function isProductPageLinkShelf(
        shelf: Shelf,
    ): shelf is ProductPageLinkShelf {
        const { contentType, items } = shelf;
        return contentType === 'productPageLink' && Array.isArray(items);
    }
</script>

<script lang="ts">
    import ProductPageLinkItem from '~/components/jet/item/ProductPageLinkItem.svelte';
    import ShelfWrapper from '~/components/Shelf/Wrapper.svelte';

    export let shelf: ProductPageLinkShelf;
</script>

<ShelfWrapper {shelf}>
    <div class="product-page-link-shelf">
        {#each shelf.items as item}
            <li class="product-page-link-item">
                <ProductPageLinkItem {item} />
            </li>
        {/each}
    </div>
</ShelfWrapper>

<style lang="scss">
    $product-page-link-border: 1px solid var(--systemGray4);

    .product-page-link-shelf {
        display: flex;
        justify-content: center;
        align-items: center;
        column-gap: 20px;

        @media (--range-xsmall-down) {
            flex-direction: column;
            align-items: flex-start;
        }
    }

    @media (--range-xsmall-down) {
        .product-page-link-item:first-child {
            border-top: $product-page-link-border;
        }

        .product-page-link-item {
            width: 100%;
            border-bottom: $product-page-link-border;
            padding: 0 var(--bodyGutter);
        }
    }
</style>