Skip to content

Commit

Permalink
Merge pull request #38 from thelia/reworks/design-system
Browse files Browse the repository at this point in the history
Reworks/design system
  • Loading branch information
leanormandon authored Jun 28, 2024
2 parents 2037a67 + 8c6d0bd commit 3ac92cc
Show file tree
Hide file tree
Showing 27 changed files with 446 additions and 201 deletions.
5 changes: 5 additions & 0 deletions .storybook/preview.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ const preview: Preview = {
date: /Date$/i
}
},
layout: 'fullscreen',
backgrounds: {
default: 'white',
values: [
Expand All @@ -29,6 +30,10 @@ const preview: Preview = {
name: 'white',
value: '#FFFFFF'
},
{
name: 'theme-lighter',
value: '#FFEDE5'
},
{
name: 'theme-lightest',
value: '#FFF5F1'
Expand Down
82 changes: 82 additions & 0 deletions assets/css/menu.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
:root {
--padding-button-sub: 22px;
--padding-top-menu: 82px;
--padding-x-menu: 55px;
--padding-button-close: 24px;
}

@media screen and (min-width: theme('screens.lg')) {
#Menu {
ul {
button,
ul {
@apply hidden;
}
}
}
}
@media screen and (max-width: theme('screens.lg')) {
#Menu {
@apply hidden fixed inset-0 bg-white text-black;

> ul {
@apply h-full relative;
}
ul {
@apply flex flex-col items-stretch gap-0 pb-[var(--header-nav-height)] pt-[var(--padding-top-menu)] justify-start;

padding-right: calc(var(--padding-x-menu) - var(--padding-button-sub));
padding-left: var(--padding-x-menu);

li {
@apply flex items-center justify-between text-lg font-semibold;

line-height: var(--line-height-paragraph-1);
gap: calc(30px - var(--padding-button-sub));
}
a {
@apply py-[var(--padding-button-sub)];
}
button {
@apply p-[var(--padding-button-sub)];
}
svg {
@apply w-[28px];
}
ul {
@apply hidden fixed bg-white left-0 right-0 top-[var(--padding-top-menu)] bottom-[var(--header-nav-height)] pt-0;

&.is-active {
@apply block;
}
}
}

&.is-open {
@apply block h-full;
}
}
}

[data-menu-close] {
@apply block lg:hidden p-[var(--padding-button-close)] absolute right-0 top-0 z-10;

svg {
@apply w-[32px] text-grey-dark;
}
}

[data-menu-back] {
@apply lg:hidden p-[var(--padding-button-close)] absolute top-0 z-10 -translate-y-1/2;

left: calc(var(--padding-x-menu) - var(--padding-button-close));
top: calc(var(--padding-top-menu) / 2);

svg {
@apply w-[28px];
}
}

[data-menu-back='-1'] {
@apply hidden;
}
6 changes: 5 additions & 1 deletion assets/icons/heart-fill.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 7 additions & 3 deletions assets/icons/thelia.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions components/Atoms/Font/font.css
Original file line number Diff line number Diff line change
Expand Up @@ -170,4 +170,8 @@ a {
font-size: var(--font-size-indication-small);
letter-spacing: var(--letter-spacing-indication-small);
}

&-lower {
text-transform: lowercase;
}
}
5 changes: 3 additions & 2 deletions components/Layout/CrossSelling/CrossSelling.stories.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import CrossSelling from './CrossSelling.twig';
import { slider } from '../../../assets/js/slider';
import { MAX_SECTION_PRODUCT } from '../../base';

export default {
title: 'Design System/Layout/CrossSelling'
Expand All @@ -18,7 +19,7 @@ const standardProduct = {

const products = [];

for (let i = 0; i < 5; i++) {
for (let i = 0; i < MAX_SECTION_PRODUCT; i++) {
products.push(standardProduct);
}

Expand All @@ -33,7 +34,7 @@ export const base = {
button: { href: '#', label: 'Tout voir' }
},
parameters: {
backgrounds: { default: 'grey' }
backgrounds: { default: 'theme-lighter' }
},
argTypes: {}
};
12 changes: 6 additions & 6 deletions components/Layout/CrossSelling/CrossSelling.twig
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
<div class='xl:container xl:mx-auto'>
<div class='h2 text-black pb-6'>{{ title }}</div>
<div class='pb-6 text-black h2'>{{ title }}</div>
</div>

<div class='CrossSelling slider'>
{% for product in products %}
{% include '../../Organisms/ProductCard/ProductCard.twig' with product %}
{% endfor %}
{% for product in products %}
{% include '../../Organisms/ProductCard/ProductCard.twig' with product %}
{% endfor %}
</div>

<div class='xl:container xl:mx-auto mt-5'>
{% include '../../Molecules/Button/Button.twig' with {text: button.label, href: button.href,icon_right:'chevron-right', variant:'secondary'} %}
<div class='mt-5 xl:container xl:mx-auto'>
{% include '../../Molecules/Button/Button.twig' with {text: button.label, href: button.href,icon_right:'chevron-right', variant:'secondary'} %}
</div>
41 changes: 21 additions & 20 deletions components/Layout/Footer/Footer.twig
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
{% set footerLinksClasses = 'flex flex-col gap-2 md:gap-6 md:flex-row lg:flex-col Footer-links mb-[30px] md:mb-0 md:pb-[70px] md:px-[50px] md:pt-[30px] md:border-t md:border-t-grey-lighter lg:border-none ' %}
{% if withNewsletter %}
{% set footerLinksClasses = footerLinksClasses ~ 'md:col-span-2 lg:col-span-1' %}
{% set footerStoreInfosClasses = footerStoreInfosClasses ~ 'md:border-l md:border-l-grey-lighter lg:border-r lg:border-r-grey-lighter ' %}
{% set footerContainerClasses = 'md:grid-cols-2 lg:grid-cols-3' %}
{% set footerLinksClasses = footerLinksClasses ~ 'md:col-span-2 lg:col-span-1 text-black' %}
{% set footerStoreInfosClasses = footerStoreInfosClasses ~ 'md:border-l md:border-l-grey-lighter lg:border-r lg:border-r-grey-lighter ' %}
{% set footerContainerClasses = 'md:grid-cols-2 lg:grid-cols-3' %}
{% else %}
{% set footerLinksClasses = 'flex flex-col gap-2 md:gap-6 Footer-links mb-[30px] md:mb-0 md:pb-[70px] md:pt-[50px] md:pl-[40px] ' %}
{% set footerStoreInfosClasses = footerStoreInfosClasses ~ 'md:border-r md:border-r-grey-lighter' %}
{% set footerContainerClasses = 'md:grid-cols-2' %}
{% set footerLinksClasses = 'flex flex-col gap-2 md:gap-6 Footer-links mb-[30px] md:mb-0 md:pb-[70px] md:pt-[50px] md:pl-[40px] text-black' %}
{% set footerStoreInfosClasses = footerStoreInfosClasses ~ 'md:border-r md:border-r-grey-lighter' %}
{% set footerContainerClasses = 'md:grid-cols-2' %}
{% endif %}

<footer class='Footer bg-theme-lightest px-6 md:px-0 pt-[50px] md:pt-0 pb-[34px] md:pb-[45px] flex flex-col'>
<div class='md:grid {{footerContainerClasses}}'>
{% if withNewsletter %}
<div class='Footer-newsletter mb-[50px] md:mb-0 md:pt-[50px] md:pl-[50px] lg:pt-[100px]'>
<div class='font-semibold paragraph-1'>Newsletter</div>
<div class='mb-4 paragraph-5'>Suivez nos dernières actualités & promotions</div>
{% include '../../Molecules/Button/Button.twig' with {text: 'Je m\'inscris', type: 'primary', isFill: true, classes: "Button--large w-full md:w-auto"} %}
<div class='md:grid {{footerContainerClasses}}'>
{% if withNewsletter %}
<div class='Footer-newsletter mb-[50px] md:mb-0 md:pt-[50px] md:pl-[50px] lg:pt-[100px]'>
<div class='font-semibold paragraph-1'>Newsletter</div>
<div class='mb-4 paragraph-5'>Suivez nos dernières actualités & promotions</div>
{% include '../../Molecules/Button/Button.twig' with {text: 'Je m\'inscris', type: 'primary', isFill: true, classes: "Button--large w-full md:w-auto"} %}
</div>
{% endif %}
<div class='Footer-store-infos mb-[30px] md:py-[50px] md:pl-[40px] md:mb-0 lg:pt-[100px] lg:pb-[90px] {{footerStoreInfosClasses}}'>
Expand All @@ -26,13 +26,14 @@
</div>
{% include '../../Molecules/Button/Button.twig' with {text: 'Contactez nous', type: 'primary', icon_right: "email", isFill: true, classes: "w-full md:w-auto Button--secondary Button--large"} %}
</div>
<div class='lg:pt-[100px] {{footerLinksClasses}}'>
<div class='paragraph-5'><a href='#'>Plan du site</a></div>
<div class='paragraph-5'><a href='#'>Mentions légales</a></div>
<div class='paragraph-5'><a href='#'>Données personnelles</a></div>
<div class='paragraph-5'><a href='#'>Cookies</a></div>
<div class='paragraph-5'><a href='#'>Conditions générales de vente</a></div>
</div>
<ul class='lg:pt-[100px] {{footerLinksClasses}}'>
{% set footerLinkClass = 'underline hover:no-underline focus:no-underline hover:opacity-75 focus:opacity-75' %}
<li class='paragraph-5'><a href='#' class="{{footerLinkClass}}">Plan du site</a></li>
<li class='paragraph-5'><a href='#' class="{{footerLinkClass}}">Mentions légales</a></li>
<li class='paragraph-5'><a href='#' class="{{footerLinkClass}}">Données personnelles</a></li>
<li class='paragraph-5'><a href='#' class="{{footerLinkClass}}">Cookies</a></li>
<li class='paragraph-5'><a href='#' class="{{footerLinkClass}}">Conditions générales de vente</a></li>
</ul>
</div>

<div class='md:flex md:justify-between md:items-center md:border-t md:border-t-grey-lighter md:px-[50px] md:pt-[30px]'>
Expand All @@ -57,6 +58,6 @@
</div>
</div>

<div class='indication indication-small'>© OpenStudio - 2024</div>
<div class='text-grey indication indication-small'>© OpenStudio - {{ 'now' | date('Y') }}</div>
</div>
</footer>
33 changes: 21 additions & 12 deletions components/Layout/Footer/FooterCheckout.twig
Original file line number Diff line number Diff line change
@@ -1,12 +1,21 @@
<footer class='flex flex-col px-6 xl:px-[120px] py-6 xl:flex-row xl:justify-between FooterCheckout bg-theme-lightest gap-9 sm:gap-3'>
<div class='flex flex-col gap-2 sm:gap-6 sm:flex-row'>
<div class='paragraph-5'><a href='#'>Plan du site</a></div>
<div class='paragraph-5'><a href='#'>Mentions légales</a></div>
<div class='paragraph-5'><a href='#'>Données personnelles</a></div>
<div class='paragraph-5'><a href='#'>Cookies</a></div>
<div class='paragraph-5'><a href='#'>Conditions générales de vente</a></div>
</div>

<div class='paragraph-5'>© OpenStudio - 2024</div>
</div
</footer>
<footer class='flex flex-col px-6 xl:px-[120px] py-6 xl:flex-row xl:justify-between FooterCheckout bg-theme-lightest gap-9 md:gap-3 text-black'>
<ul class='flex flex-col gap-2 md:gap-6 md:flex-row'>
{% set footerLinkClass = 'underline hover:no-underline focus:no-underline hover:opacity-75 focus:opacity-75' %}
<li class='paragraph-5'>
<a href='#' class="{{footerLinkClass}}">Plan du site</a>
</li>
<li class='paragraph-5'>
<a href='#' class="{{footerLinkClass}}">Mentions légales</a>
</li>
<li class='paragraph-5'>
<a href='#' class="{{footerLinkClass}}">Données personnelles</a>
</li>
<li class='paragraph-5'>
<a href='#' class="{{footerLinkClass}}">Cookies</a>
</li>
<li class='paragraph-5'>
<a href='#' class="{{footerLinkClass}}">Conditions générales de vente</a>
</li>
</ul>
<span class='text-grey indication indication-small'>© OpenStudio - 2024</span>
</div</footer>
58 changes: 58 additions & 0 deletions components/Layout/Header/Header.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
export default () => {
Menu();

const btn = document.getElementById('toggleMenu');

btn.addEventListener('click', () =>
document.getElementById('Menu').classList.toggle('is-open')
);
};

export function Menu() {
const menu = document.getElementById('Menu');
if (!menu) return null;

let previous = 0;

const closeBtn = menu.querySelector('[data-menu-close]');
const backBtn = menu.querySelector('[data-menu-back]');
const subBtns = menu.querySelectorAll('[data-menu-item]');
const subs = menu.querySelectorAll('[data-menu-sub]');

closeBtn?.addEventListener('click', () => {
menu.classList.remove('is-open');
backBtn.dataset.menuBack = -1;
subs.forEach((sub) => {
sub.classList.remove('is-active');
});
});

backBtn?.addEventListener('click', () => {
displaySubMenu(previous);
});

subBtns?.forEach((btn) => {
btn.addEventListener('click', () => {
displaySubMenu(btn.dataset.menuItem);
});
});

function displaySubMenu(current) {
subs.forEach((sub) => {
sub.classList.remove('is-active');

if (sub.dataset.menuSub === current) {
previous = sub.dataset.menuPrevious;
sub.classList.add('is-active');
[...subs]
.find((s) => s.dataset.menuSub === previous)
?.classList.add('is-active');
displayBackBtn(previous ?? -1);
}
});
}

function displayBackBtn(previous) {
backBtn.dataset.menuBack = previous;
}
}
4 changes: 4 additions & 0 deletions components/Layout/Header/Header.stories.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import Header from './Header.twig';
import HeaderScript from './Header.js';
import HeaderCheckout from './HeaderCheckout.twig';

export default {
Expand All @@ -9,6 +10,9 @@ const types = ['generic', 'sticky', 'searchbar'];

export const base = {
render: (args) => Header(args),
play: () => {
HeaderScript();
},
args: {
type: 'generic'
},
Expand Down
Loading

0 comments on commit 3ac92cc

Please sign in to comment.