This commit is contained in:
2021-10-07 14:47:55 +02:00
14 changed files with 273 additions and 74 deletions

View File

@@ -1,6 +1,8 @@
# Options # Options
VITE_LIMIT_TIME=2 * 7 * 24 * 60 * 60 * 1000 VITE_LIMIT_TIME=2 * 7 * 24 * 60 * 60 * 1000
VITE_PREVIEW_COUNT=4 VITE_PREVIEW_COUNT=4
VITE_GRID_AMOUNT=21
VITE_GRID_INCREMENT=21
# API related # API related
# VITE_API_URL_DEV="http://192.168.1.19:8055" # VITE_API_URL_DEV="http://192.168.1.19:8055"

View File

@@ -10,12 +10,12 @@
</script> </script>
{#if tag === 'button'} {#if tag === 'button'}
<button class={classes}> <button class={classes} on:click>
<slot /> <slot />
{text} {text}
</button> </button>
{:else if tag === 'a'} {:else if tag === 'a'}
<a href={url} class={classes}> <a href={url} class={classes} on:click>
<slot /> <slot />
<span>{text}</span> <span>{text}</span>
</a> </a>

File diff suppressed because one or more lines are too long

View File

@@ -9,7 +9,7 @@
<div class="frame"> <div class="frame">
<img src="/images/icons/stamp.svg" width="32" height="42" alt=""> <img src="/images/icons/stamp.svg" width="32" height="42" alt="">
</div> </div>
<Image class="flag" id="5a5bc9a1-9401-4e2f-88f2-ffd6c05acefb" width={32} height={32} /> <Image class="flag" id="5a5bc9a1-9401-4e2f-88f2-ffd6c05acefb" width={32} height={32} alt="country" />
</div> </div>
<h3 class="post-card__country"> <h3 class="post-card__country">
<span>Houses of <br></span> <span>Houses of <br></span>

View File

@@ -4,19 +4,27 @@
interface Option { interface Option {
value: string value: string
name: string name: string
default?: boolean
} }
export let id: string export let id: string
export let name: string export let name: string
export let base: Option
export let options: Option[] export let options: Option[]
export let value: string = undefined
const dispatch = createEventDispatcher() const dispatch = createEventDispatcher()
const defaultOption = options.find(option => option.default)
const defaultOptionIndex = options.findIndex(option => option.default)
let current: number = 0 let current: number = defaultOptionIndex
let currentOptionEl: HTMLElement let currentOptionEl: HTMLElement
$: currentOption = options[current] $: currentOption = options[current]
// Redefine value from parent (when reset)
$: if (value === defaultOption.value) {
current = defaultOptionIndex
}
/** /**
* When changing select value * When changing select value
@@ -37,8 +45,8 @@
</span> </span>
<select {name} {id} on:change={handleChange}> <select {name} {id} on:change={handleChange}>
{#each options as { value, name }} {#each options as { value, name }, index}
<option {value}> <option {value} selected={index === current}>
{name} {name}
</option> </option>
{/each} {/each}

View File

@@ -4,6 +4,7 @@
// Components // Components
import Metas from '$components/Metas.svelte' import Metas from '$components/Metas.svelte'
import Button from '$components/atoms/Button.svelte' import Button from '$components/atoms/Button.svelte'
import IconEarth from '$components/atoms/IconEarth.svelte'
import BoxCTA from '$components/atoms/BoxCTA.svelte' import BoxCTA from '$components/atoms/BoxCTA.svelte'
import DiscoverText from '$components/atoms/DiscoverText.svelte' import DiscoverText from '$components/atoms/DiscoverText.svelte'
import PhotoCard from '$components/molecules/PhotoCard.svelte' import PhotoCard from '$components/molecules/PhotoCard.svelte'
@@ -31,7 +32,7 @@
<p class="text-medium">{settings.description}</p> <p class="text-medium">{settings.description}</p>
<Button text="Explore locations" url="{path}#locations"> <Button text="Explore locations" url="{path}#locations">
<img src="/images/icons/earth.svg" alt="explore globe"> <IconEarth animate={true} />
</Button> </Button>
</section> </section>

View File

@@ -1,33 +1,85 @@
<script lang="ts"> <script lang="ts">
import { getContext } from 'svelte' import { getContext } from 'svelte'
import { fly } from 'svelte/transition'
import { quartOut } from 'svelte/easing'
// Components // Components
import Metas from '$components/Metas.svelte' import Metas from '$components/Metas.svelte'
import IconEarth from '$components/atoms/IconEarth.svelte'
import Button from '$components/atoms/Button.svelte' import Button from '$components/atoms/Button.svelte'
import Image from '$components/atoms/Image.svelte'
import DiscoverText from '$components/atoms/DiscoverText.svelte'
import PostCard from '$components/molecules/PostCard.svelte'
import Select from '$components/molecules/Select.svelte'
import Shop from '$components/organisms/Shop.svelte' import Shop from '$components/organisms/Shop.svelte'
import Newsletter from '$components/organisms/Newsletter.svelte' import Newsletter from '$components/organisms/Newsletter.svelte'
import Image from '$components/atoms/Image.svelte';
import PostCard from '$components/molecules/PostCard.svelte';
export let photos: any export let photos: any
const { country: countries }: any = getContext('global') const { country: countries }: any = getContext('global')
let filtered: boolean = false
let buttonReset: HTMLElement let buttonReset: HTMLElement
let buttonShuffle: HTMLElement let buttonShuffle: HTMLElement
// Filters
const defaultCountry = 'all'
const defaultSort = 'latest'
let filtered: boolean = false
let filterCountry: any = defaultCountry
let filterSort: string = defaultSort
let countryFlagId: string
// Define country flag from selection
$: {
if (filterCountry !== defaultCountry) {
countryFlagId = countries.find((country: any) => country.slug === filterCountry).flag.id
} else {
countryFlagId = undefined
}
}
/** /**
* Select change events * Select change events
*/ */
// Location select // Country select
const handleLocationChange = ({ detail: value }) => { const handleCountryChange = ({ detail: value }) => {
console.log(value) console.log(value)
filtered = true
filterCountry = value
// TODO: Request photos from the country of choice
// TODO: Change URL query sort=value
} }
// Sort select // Sort select
const handleSortChange = ({ detail: value }) => { const handleSortChange = ({ detail: value }) => {
console.log(value) console.log(value)
filtered = true
filterSort = value
// TODO: Request photos sorted by the choice
// TODO: Change URL query sort=value
}
/**
* Reset filters
*/
const resetFiltered = () => {
filtered = false
filterCountry = defaultCountry
filterSort = defaultSort
// TODO: Change URL query sort=defaultSort and country=defaultCountry
}
/**
* Load more photos from CTA
*/
const loadMorePhotos = () => {
console.log('load more photos')
// TODO: Append more photos from API including options and page
} }
</script> </script>
@@ -50,31 +102,37 @@
<ul> <ul>
<li> <li>
<Select <Select
name="location" id="filter_location" name="country" id="filter_country"
base={{ value: 'all', name: 'Worldwide' }}
options={[ options={[
{ value: 'all', name: 'Worldwide' }, { value: 'all', name: 'Worldwide', default: true },
...countries.map(({ slug, name }) => ({ ...countries.map(({ slug, name }) => ({
value: slug, value: slug,
name name,
})) }))
]} ]}
on:change={handleLocationChange} on:change={handleCountryChange}
value={filterCountry}
> >
<img src="/images/icons/earth.svg" alt="Earth"> {#if countryFlagId}
<Image id={countryFlagId} width={26} height={26} alt="{filterCountry} flag" class="icon" />
{:else}
<IconEarth class="icon" />
{/if}
</Select> </Select>
</li> </li>
<li> <li>
<Select <Select
name="sort" id="filter_sort" name="sort" id="filter_sort"
base={{ value: 'all', name: 'Worldwide' }}
options={[ options={[
{ value: 'latest', name: 'Latest photos' }, { value: 'latest', name: 'Latest photos', default: true },
{ value: 'oldest', name: 'Oldest photos' }, { value: 'oldest', name: 'Oldest photos' },
]} ]}
on:change={handleSortChange} on:change={handleSortChange}
value={filterSort}
> >
<img src="/images/icons/sort.svg" alt="Sort"> <svg class="icon" width="24" height="24" viewBox="0 0 24 24" fill="#fff" xmlns="http://www.w3.org/2000/svg" aria-label="Sort icon">
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.878 15.93h-4.172c-.638 0-1.153.516-1.153 1.154 0 .639.515 1.154 1.153 1.154h4.172c.638 0 1.153-.515 1.153-1.154a1.152 1.152 0 0 0-1.153-1.153Zm3.244-5.396h-7.405c-.639 0-1.154.515-1.154 1.153 0 .639.515 1.154 1.154 1.154h7.405c.639 0 1.154-.515 1.154-1.154a1.145 1.145 0 0 0-1.154-1.153Zm3.244-5.408h-10.65c-.638 0-1.153.515-1.153 1.154 0 .639.515 1.154 1.154 1.154h10.65c.638 0 1.153-.515 1.153-1.154 0-.639-.515-1.154-1.154-1.154ZM7.37 20.679V3.376c0-.145-.03-.289-.082-.433a1.189 1.189 0 0 0-.628-.618 1.197 1.197 0 0 0-.886 0 1.045 1.045 0 0 0-.36.237c-.01 0-.01 0-.021.01L.82 7.145a1.156 1.156 0 0 0 0 1.638 1.156 1.156 0 0 0 1.637 0l2.596-2.596v11.7l-2.596-2.595a1.156 1.156 0 0 0-1.637 0 1.156 1.156 0 0 0 0 1.638l4.573 4.573c.103.103.237.185.37.247.135.062.289.082.433.082h.02c.145 0 .3-.03.433-.093a1.14 1.14 0 0 0 .629-.628.987.987 0 0 0 .092-.432Z" />
</svg>
</Select> </Select>
</li> </li>
</ul> </ul>
@@ -82,12 +140,17 @@
<div class="filter__actions"> <div class="filter__actions">
{#if filtered} {#if filtered}
<button class="reset button-link" bind:this={buttonReset}> <button class="reset button-link" bind:this={buttonReset}
on:click={resetFiltered}
transition:fly={{ y: 4, duration: 600, easing: quartOut }}
>
Reset Reset
</button> </button>
{/if} {/if}
<button class="shuffle" bind:this={buttonShuffle}> <button class="shuffle" bind:this={buttonShuffle}>
<img src="/images/icons/shuffle.svg" alt=""> <svg width="14" height="14" viewBox="0 0 14 14" fill="#3C0576" xmlns="http://www.w3.org/2000/svg" aria-label="Shuffle icon">
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.8168 13.7928C10.565 13.5166 10.565 13.0688 10.8168 12.7925L11.6371 11.8927C10.0729 11.7978 8.9174 11.2494 8.00077 10.4379C7.01752 9.56747 6.3426 8.41893 5.73606 7.382L5.72202 7.358C5.10114 6.29653 4.5499 5.35411 3.79106 4.65375C3.05738 3.97661 2.10408 3.50731 0.644748 3.50731C0.288663 3.50731 0 3.19063 0 2.8C0 2.40936 0.288666 2.09269 0.644751 2.09269C2.39889 2.0927 3.64837 2.6734 4.62121 3.57126C5.53188 4.41176 6.17567 5.5133 6.76119 6.51514L6.82133 6.61801C7.44316 7.68108 8.01476 8.63254 8.81058 9.33707C9.55258 9.99396 10.5204 10.4595 11.9721 10.491L10.8168 9.22362C10.565 8.9474 10.565 8.49956 10.8168 8.22333C11.0686 7.94711 11.4768 7.94711 11.7286 8.22333L13.8112 10.5079C14.0629 10.7842 14.0629 11.232 13.8112 11.5082L11.7286 13.7928C11.4768 14.0691 11.0686 14.0691 10.8168 13.7928ZM10.8168 5.77667C10.565 5.50045 10.565 5.0526 10.8168 4.77638L11.972 3.50905C10.5204 3.54053 9.55258 4.00608 8.81058 4.66297C8.50789 4.93094 8.23764 5.23463 7.98472 5.5666C7.73665 5.18234 7.48128 4.77156 7.2176 4.37967C7.45664 4.09011 7.71575 3.81442 8.00077 3.5621C8.9174 2.75061 10.0729 2.2022 11.6371 2.10738L10.8168 1.20745C10.565 0.931231 10.565 0.483387 10.8168 0.207166C11.0686 -0.0690553 11.4768 -0.0690553 11.7286 0.207166L13.8112 2.49177C14.0629 2.768 14.0629 3.21584 13.8112 3.49206L11.7286 5.77667C11.4768 6.05289 11.0686 6.05289 10.8168 5.77667ZM0 11.2C0 11.5907 0.288666 11.9073 0.644751 11.9073C2.39889 11.9073 3.64837 11.3266 4.62121 10.4288C4.82778 10.2381 5.02061 10.034 5.20215 9.82074C5.03927 9.5548 4.88613 9.293 4.73943 9.0422L4.73621 9.0367C4.647 8.88418 4.56006 8.73561 4.47456 8.59108C4.26231 8.86556 4.03764 9.11871 3.79106 9.34629C3.05738 10.0234 2.10408 10.4927 0.644748 10.4927C0.288663 10.4927 0 10.8094 0 11.2Z" />
</svg>
</button> </button>
</div> </div>
</div> </div>
@@ -96,7 +159,7 @@
<section class="photos__content"> <section class="photos__content">
<div class="grid container"> <div class="grid container">
<div class="photos__grid"> <div class="photos__grid">
{#each Array(21) as _} {#each Array(22 * 2) as _}
<div class="photo shadow-photo"> <div class="photo shadow-photo">
<a href="/country/location/photo-slug"> <a href="/country/location/photo-slug">
<Image id="5a45ba18-7b78-48e0-a299-302b1ea9b77b" width={1200} height={800} alt="image" /> <Image id="5a45ba18-7b78-48e0-a299-302b1ea9b77b" width={1200} height={800} alt="image" />
@@ -108,9 +171,10 @@
<div class="controls grid"> <div class="controls grid">
<p class="controls__date">Last updated: 4 days ago</p> <p class="controls__date">Last updated: 4 days ago</p>
<Button url="#" text="See more photos" /> <Button text="See more photos" tag="button" on:click={loadMorePhotos} />
<div class="controls__count"> <div class="controls__count">
<span class="current">21/</span> <span class="current">21</span>
<span>/</span>
<span class="total">129</span> <span class="total">129</span>
</div> </div>
</div> </div>
@@ -118,7 +182,7 @@
<div class="grid-modules"> <div class="grid-modules">
<div class="wrap"> <div class="wrap">
<Shop /> <Shop />
<Newsletter /> <Newsletter theme="light" />
</div> </div>
</div> </div>
</div> </div>
@@ -130,6 +194,7 @@
import { fetchAPI } from '$utils/api' import { fetchAPI } from '$utils/api'
export async function load ({ page, session, fetch, context }) { export async function load ({ page, session, fetch, context }) {
// TODO: Implement query parameters from URL (country, sort)
const res = await fetchAPI(` const res = await fetchAPI(`
query { query {
photo (limit: 11, sort: ["-date_created"]) { photo (limit: 11, sort: ["-date_created"]) {

View File

@@ -11,7 +11,7 @@
} }
display: block; display: block;
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
grid-template-columns: 1fr 40%; grid-template-columns: 1fr 40%;
grid-column-gap: 48px; grid-column-gap: 48px;
padding: 0; padding: 0;

View File

@@ -2,10 +2,14 @@
$shadow-color: rgba(0, 0, 0, 0.05); $shadow-color: rgba(0, 0, 0, 0.05);
position: fixed; position: fixed;
z-index: 999; z-index: 999;
bottom: 0; bottom: 16px;
left: 0; left: 16px;
@include bp (sm) { @include bp (sm) {
bottom: 20px;
left: 20px;
}
@include bp (md) {
bottom: 40px; bottom: 40px;
left: 40px; left: 40px;
} }

View File

@@ -13,7 +13,7 @@
} }
.site-title { .site-title {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
grid-row: 1; grid-row: 1;
margin-bottom: 40px; margin-bottom: 40px;
@@ -29,7 +29,7 @@
} }
&__links { &__links {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
grid-row: 2; grid-row: 2;
@include bp (sm) { @include bp (sm) {
@@ -69,7 +69,7 @@
} }
&__ctf { &__ctf {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
grid-row: 2; grid-row: 2;
margin-left: auto; margin-left: auto;
margin-top: auto; margin-top: auto;

View File

@@ -98,21 +98,23 @@
} }
a { a {
display: flex;
align-items: center;
text-decoration: none; text-decoration: none;
color: $color-text; color: $color-text;
} }
span { span {
display: block;
padding-bottom: 2px;
font-size: rem(14px); font-size: rem(14px);
color: $color-text; color: $color-text;
margin-left: 8px; margin-left: 8px;
border-bottom: 1px solid $color-text; border-bottom: 1px solid $color-text;
@include bp (sm) { @include bp (sm) {
margin-left: 16px; margin-left: 12px;
} }
} }
p { p {
color: $color-gray; color: $color-gray;
line-height: 1.3; line-height: 1.3;

View File

@@ -52,7 +52,7 @@
line-height: 1; line-height: 1;
@include bp (sm) { @include bp (sm) {
grid-column: 1 / span 8; grid-column: span 8;
font-size: rem(28px); font-size: rem(28px);
} }
} }

View File

@@ -41,7 +41,7 @@
// Modules // Modules
.grid-modules { .grid-modules {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
margin: 96px 20px 0; margin: 96px 20px 0;
padding-bottom: 40px; padding-bottom: 40px;

View File

@@ -9,9 +9,9 @@
// Title // Title
h1 { h1 {
margin-top: -20px;
color: $color-secondary; color: $color-secondary;
line-height: 1; line-height: 1;
margin-top: -20px;
@include bp (sm) { @include bp (sm) {
margin-top: -100px; margin-top: -100px;
@@ -19,7 +19,7 @@
} }
// Text // Text
p { p {
max-width: 350px; max-width: 456px;
margin: 20px auto 56px; margin: 20px auto 56px;
@include bp (sm) { @include bp (sm) {
@@ -34,7 +34,11 @@
position: relative; position: relative;
max-width: 982px; max-width: 982px;
margin: 0 auto; margin: 0 auto;
padding: 0 32px; padding: 0 16px;
@include bp (sm) {
padding: 0 32px;
}
// Span // Span
&__label { &__label {
@@ -54,13 +58,17 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
height: 72px; min-height: 64px;
margin: 20px 0; margin: 20px 0;
padding: 0 22px; padding: 0 12px;
background: $color-primary-darker; background: $color-primary-darker;
border-radius: 50vh; border-radius: 50vh;
@include bp (mob-lg) {
padding: 0 16px;
}
@include bp (sm) { @include bp (sm) {
height: 72px;
padding: 28px 32px; padding: 28px 32px;
} }
@@ -72,20 +80,28 @@
} }
li { li {
display: block; display: block;
margin: 8px 10px; margin: 8px 2px;
font-size: rem(16px); font-size: rem(14px);
color: #fff; color: #fff;
@include bp (sm) { @include bp (sm) {
margin: 0 2px; margin: 0 2px;
font-size: rem(16px);
} }
} }
img { .icon {
color: #fff; display: block;
width: 20px;
height: 20px;
overflow: hidden;
margin-right: 12px; margin-right: 12px;
fill: #fff;
border-radius: 100%;
transition: fill 0.2s;
@include bp (sm) { @include bp (sm) {
margin-right: 16px; width: 26px;
height: 26px;
} }
} }
@@ -93,11 +109,15 @@
position: relative; position: relative;
display: flex; display: flex;
align-items: center; align-items: center;
padding: 8px 16px; padding: 8px 12px 8px 8px;
font-weight: 900; font-weight: 900;
border-radius: 100vh; border-radius: 100vh;
transition: background-color 0.2s; transition: background-color 0.2s;
@include bp (sm) {
padding: 8px 16px;
}
select { select {
opacity: 0; opacity: 0;
position: absolute; position: absolute;
@@ -107,8 +127,14 @@
height: 100%; height: 100%;
cursor: pointer; cursor: pointer;
} }
}
&:hover { // Hover
li:hover {
.icon {
fill: $color-secondary-light;
}
.select {
background-color: $color-primary-tertiary20; background-color: $color-primary-tertiary20;
} }
} }
@@ -142,6 +168,11 @@
// Reset link // Reset link
.reset { .reset {
margin-right: 16px;
padding: 0;
color: rgba($color-tertiary, 0.6);
font-weight: 900;
font-size: rem(14px);
transition: color 0.3s; transition: color 0.3s;
&:hover { &:hover {
@@ -158,7 +189,6 @@
background-color: $color-tertiary; background-color: $color-tertiary;
padding: 0 16px; padding: 0 16px;
border-radius: 50vh; border-radius: 50vh;
margin-left: 16px;
} }
} }
} }
@@ -166,18 +196,38 @@
// Content Block // Content Block
&__content { &__content {
background-color: $color-tertiary; background-color: $color-tertiary;
width: 100%;
// margin: 0 12px; // margin: 0 12px;
padding: 64px 0; padding: 20px 0;
border-radius: 6px;
@include bp (sm) {
padding: 64px 0;
border-radius: 8px;
}
} }
// Photo Grid // Photo Grid
&__grid { &__grid {
grid-column: 2 / span 22;
display: grid; display: grid;
grid-template-columns: repeat(4, 1fr); grid-column: span var(--columns);
grid-gap: 40px; // Template: 2 / 1-1
grid-template-columns: repeat(2, 1fr);
grid-gap: 16px;
@include bp (mob-lg) {
grid-gap: 20px;
}
@include bp (sm) {
// Swich to template: 2-1-1 / 1-1-2 / 4
grid-column: 2 / span 22;
grid-template-columns: repeat(4, 1fr);
grid-gap: 24px;
}
@include bp (sd) {
grid-gap: 40px;
}
// Photo
.photo { .photo {
overflow: hidden; overflow: hidden;
border-radius: 6px; border-radius: 6px;
@@ -188,7 +238,6 @@
height: 100%; height: 100%;
& > picture { & > picture {
width: 100%;
height: 100%; height: 100%;
img { img {
@@ -196,32 +245,90 @@
width: 100%; width: 100%;
height: 100%; height: 100%;
object-fit: cover; object-fit: cover;
pointer-events: none;
user-select: none;
} }
} }
} }
/**
* Photo sizes
*/
// MOBILE
// 1st photo = 2 columns
&:nth-child(5n + 1) {
@include bp (sm, max) {
grid-column: span 2;
grid-row: span 2;
margin-bottom: 8px;
}
}
// 4 next photos = 1 column each
&:nth-child(5n + 4),
&:nth-child(5n + 5) {
@include bp (sm, max) {
margin-bottom: 8px;
}
}
// DESKTOP
// 1st photo = left 2 columns, 2 rows
&:nth-child(11n + 1){
@include bp (sm) {
grid-column: span 2;
grid-row: span 2;
}
}
// 8th photo = right 2 columns, 2 rows
&:nth-child(11n + 8){
@include bp (sm) {
grid-column: 3 / span 2;
grid-row: span 2;
}
}
// 11th photo = 4 columns
&:nth-child(11n){
@include bp (sm) {
grid-column: span 4;
}
}
// Additional spacing between grid patterns
&:nth-child(11n + 11){
@include bp (sm) {
margin-top: 12px;
}
@include bp (sd) {
margin-top: 16px;
}
}
&:nth-child(11n),
&:nth-child(11n + 1),
&:nth-child(11n + 4),
&:nth-child(11n + 5){
@include bp (sm) {
margin-bottom: 12px;
}
@include bp (sd) {
margin-bottom: 16px;
}
}
// Postcard
.post-card { .post-card {
position: absolute; position: absolute;
bottom: 0; bottom: 0;
right: 0; right: 0;
} display: none;
// Photo sizes
&:nth-child(11n+1) {
grid-column: 1 / span 2;
}
&:nth-child(11n+8) {
grid-column: 3 / span 2;
}
&:nth-child(11n) {
grid-column: 1 / span 4;
} }
} }
} }
// Controls /**
* Controls
*/
.controls { .controls {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
display: grid; display: grid;
margin: 48px auto; margin: 48px auto;
align-items: center; align-items: center;
@@ -231,7 +338,7 @@
--columns: 22; --columns: 22;
grid-column: 2 / span var(--columns); grid-column: 2 / span var(--columns);
justify-content: space-between; justify-content: space-between;
margin: 80px auto; margin: 80px 0;
} }
// Updated Date // Updated Date
@@ -245,7 +352,7 @@
margin: 24px 0 48px; margin: 24px 0 48px;
@include bp (sm) { @include bp (sm) {
grid-column: span 4; grid-column: span 5;
grid-row: 1; grid-row: 1;
text-align: left; text-align: left;
margin: 0; margin: 0;
@@ -291,7 +398,7 @@
// Modules // Modules
.grid-modules { .grid-modules {
grid-column: 1 / span var(--columns); grid-column: span var(--columns);
margin-bottom: 0; margin-bottom: 0;
@include bp (sm) { @include bp (sm) {