From dc7663edceb20a0b1bebc03df4acadfbdb335dc5 Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Thu, 29 Dec 2022 23:16:02 +0100 Subject: [PATCH] Shop gets fancy image carousel & navigate back arrow --- src/lib/components/ImageCarousel.svelte | 215 ++++++++++++++++++ .../components}/ProductTile.svelte | 31 +-- src/lib/icons/IconArrow.svelte | 43 ++++ src/routes/shop/+page.server.ts | 2 +- src/routes/shop/+page.svelte | 2 +- src/routes/shop/[id]/+page.server.ts | 2 +- src/routes/shop/[id]/+page.svelte | 16 +- 7 files changed, 278 insertions(+), 33 deletions(-) create mode 100644 src/lib/components/ImageCarousel.svelte rename src/{routes/shop => lib/components}/ProductTile.svelte (75%) create mode 100644 src/lib/icons/IconArrow.svelte diff --git a/src/lib/components/ImageCarousel.svelte b/src/lib/components/ImageCarousel.svelte new file mode 100644 index 0000000..6795b4c --- /dev/null +++ b/src/lib/components/ImageCarousel.svelte @@ -0,0 +1,215 @@ + + +{#if images?.length > 0} + +{/if} + + diff --git a/src/routes/shop/ProductTile.svelte b/src/lib/components/ProductTile.svelte similarity index 75% rename from src/routes/shop/ProductTile.svelte rename to src/lib/components/ProductTile.svelte index b6b0dc5..00fc8cb 100644 --- a/src/routes/shop/ProductTile.svelte +++ b/src/lib/components/ProductTile.svelte @@ -2,7 +2,6 @@ import type { IProduct } from '$lib/interfaces/IProduct'; export let product: IProduct; - export let large = false; @@ -12,15 +11,13 @@ product?.primary_color === '#231B1D' ? '#f3efeb' : '#37301e' }`}" > - {#if !large} -

{product?.name}

- {/if} +

{product?.name}

-
+
{product?.name}
- {#if !large} + {#if product?.subtext?.length > 3}

{product?.subtext}

{/if}
@@ -73,34 +70,16 @@ display: grid; place-items: center; - &.large img { - width: 90%; - } - img { margin: 3rem 0; width: 66%; transition: all 0.6s ease; @include mobile { - width: 75%; + margin: 2rem 0; + width: 90%; } } } - - // TODO grid view on mobile - // @include mobile { - // margin: 0.5rem; - // padding: 0.5rem; - - // h3 { - // margin: 0; - // } - - // .image-frame img { - // width: 82%; - // margin: 1rem 0; - // } - // } } diff --git a/src/lib/icons/IconArrow.svelte b/src/lib/icons/IconArrow.svelte new file mode 100644 index 0000000..16122c1 --- /dev/null +++ b/src/lib/icons/IconArrow.svelte @@ -0,0 +1,43 @@ + + + + + + + diff --git a/src/routes/shop/+page.server.ts b/src/routes/shop/+page.server.ts index 8b06193..b9f1e18 100644 --- a/src/routes/shop/+page.server.ts +++ b/src/routes/shop/+page.server.ts @@ -2,7 +2,7 @@ import type { IProductsDTO } from '$lib/interfaces/ApiResponse'; import type { PageServerLoad } from './$types'; export const load: PageServerLoad = async ({ fetch }) => { - const res = await fetch('/api/products'); + const res = await fetch('/api/v1/products'); const products: IProductsDTO = await res.json(); return products; diff --git a/src/routes/shop/+page.svelte b/src/routes/shop/+page.svelte index f4088c0..21f295a 100644 --- a/src/routes/shop/+page.svelte +++ b/src/routes/shop/+page.svelte @@ -1,6 +1,6 @@ + +
- +

{product.name}

-

{product.subtext}

-

{product.description}

+

{product.subtext}

+

{product.description}

NOK {selectedVariation?.price} (Ink. Moms)