diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-01-08 19:34:18 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-01-08 19:34:18 +0100 |
| commit | d738152a59d2ef8f476b16789ba386dc57ff2211 (patch) | |
| tree | 5ed6e82114e50006ba2e3183d00dfbb0fffd746e /src | |
| parent | 118f2225e991fad2872e1073eeccb8dbcdd5334d (diff) | |
refactor: improve button-like links styles
The goal was to replace the "read more articles about" links with
button-like links to keep a certain consistence between buttons.
The hasIcon variable was useless so I update some components and
especially the back to top link.
Diffstat (limited to 'src')
| -rw-r--r-- | src/components/Buttons/ButtonLink/ButtonLink.tsx | 5 | ||||
| -rw-r--r-- | src/components/Buttons/Buttons.module.scss | 5 | ||||
| -rw-r--r-- | src/components/Footer/Footer.module.scss | 9 | ||||
| -rw-r--r-- | src/components/PostFooter/PostFooter.module.scss | 40 | ||||
| -rw-r--r-- | src/components/PostFooter/PostFooter.tsx | 27 | ||||
| -rw-r--r-- | src/components/PostPreview/PostPreview.tsx | 6 |
6 files changed, 29 insertions, 63 deletions
diff --git a/src/components/Buttons/ButtonLink/ButtonLink.tsx b/src/components/Buttons/ButtonLink/ButtonLink.tsx index 3e78440..4c94b34 100644 --- a/src/components/Buttons/ButtonLink/ButtonLink.tsx +++ b/src/components/Buttons/ButtonLink/ButtonLink.tsx @@ -8,17 +8,14 @@ const ButtonLink = ({ target, position = 'left', isExternal = false, - hasIcon = false, }: { children: ReactNode; target: string; position?: ButtonPosition; isExternal?: boolean; - hasIcon?: boolean; }) => { const positionModifier = `link--${position}`; - const iconModifier = hasIcon ? ` ${styles['link--icon']}` : ''; - const classes = `${styles.btn} ${styles.link} ${styles[positionModifier]}${iconModifier}`; + const classes = `${styles.btn} ${styles.link} ${styles[positionModifier]}`; return isExternal ? ( <a className={classes} href={target}> diff --git a/src/components/Buttons/Buttons.module.scss b/src/components/Buttons/Buttons.module.scss index 08dc8b4..15065b2 100644 --- a/src/components/Buttons/Buttons.module.scss +++ b/src/components/Buttons/Buttons.module.scss @@ -117,8 +117,13 @@ } .link { + display: flex; + flex-flow: row wrap; + place-items: center; + gap: var(--spacing-2xs); width: max-content; padding: var(--spacing-2xs) var(--spacing-sm); + position: relative; background: var(--color-bg); border: fun.convert-px(3) solid var(--color-primary); border-radius: fun.convert-px(5); diff --git a/src/components/Footer/Footer.module.scss b/src/components/Footer/Footer.module.scss index 4daa52a..9376958 100644 --- a/src/components/Footer/Footer.module.scss +++ b/src/components/Footer/Footer.module.scss @@ -12,6 +12,7 @@ .back-to-top { --button-size: #{fun.convert-px(55)}; + --icon-size: #{fun.convert-px(32)}; position: fixed; bottom: calc(var(--toolbar-size) + var(--spacing-md)); @@ -36,19 +37,19 @@ height: var(--button-size); svg { - width: 100%; padding: var(--spacing-2xs); } :global { .arrow-head { - transform: translateY(12px) translateX(-5px) scale(1.5); + transform: translateY(#{fun.convert-px(18)}); transition: all 0.45s ease-in-out 0s; } .arrow-bar { opacity: 0; - transform: translateY(12px) translateX(5px) scale(0.5); + transform: translateY(#{fun.convert-px(18)}) + translateX(#{fun.convert-px(5)}) scale(0.5); transition: transform 0.45s ease-in-out 0s, opacity 0.7s ease-in-out 0s; } } @@ -57,7 +58,7 @@ &:focus { :global { .arrow-head { - transform: translateY(0) translateX(0) scale(1); + transform: translateY(0); } .arrow-bar { diff --git a/src/components/PostFooter/PostFooter.module.scss b/src/components/PostFooter/PostFooter.module.scss index a34269f..7c1f1ce 100644 --- a/src/components/PostFooter/PostFooter.module.scss +++ b/src/components/PostFooter/PostFooter.module.scss @@ -7,44 +7,12 @@ .list { @extend %flex-list; -} -.item { - &:not(:last-child) { - margin-right: var(--spacing-2xs); - } + gap: var(--spacing-xs); } -.link { - display: flex; - align-items: center; - gap: var(--spacing-2xs); - padding: fun.convert-px(3) var(--spacing-xs); - position: relative; - background: linear-gradient( - to right, - var(--color-primary) 50%, - var(--color-bg) 50% - ) - 100% 0 / 210% 100%; - border: fun.convert-px(2) solid var(--color-primary); - border-radius: fun.convert-px(5); - box-shadow: fun.convert-px(1) fun.convert-px(1) fun.convert-px(2) 0 - var(--color-shadow-light); - font-weight: 600; - text-decoration: none; - transition: all 0.5s ease-in-out 0s, color 0.5s ease-in-out 0s; - - &:hover, - &:focus { - background-position: 0 0; - color: var(--color-fg-inverted); - transition: all 0.4s ease-in-out 0s, color 0.3s ease-in-out 0.1s; - } - - &:active { - background-position: 100% 0; - border-color: var(--color-primary-dark); - color: var(--color-primary-dark); +.item { + > a { + padding: calc(var(--spacing-2xs) / 2) var(--spacing-xs); } } diff --git a/src/components/PostFooter/PostFooter.tsx b/src/components/PostFooter/PostFooter.tsx index fe933d7..06e86bc 100644 --- a/src/components/PostFooter/PostFooter.tsx +++ b/src/components/PostFooter/PostFooter.tsx @@ -1,3 +1,4 @@ +import { ButtonLink } from '@components/Buttons'; import { t } from '@lingui/macro'; import { SubjectPreview } from '@ts/types/taxonomies'; import Image from 'next/image'; @@ -9,20 +10,18 @@ const PostFooter = ({ subjects }: { subjects: SubjectPreview[] }) => { return subjects.map((subject) => { return ( <li className={styles.item} key={subject.id}> - <Link href={`/sujet/${subject.slug}`}> - <a className={styles.link}> - {subject.featuredImage && ( - <Image - src={subject.featuredImage.sourceUrl} - alt={subject.featuredImage.altText} - layout="intrinsic" - width="20" - height="20" - /> - )} - {subject.title} - </a> - </Link> + <ButtonLink target={`/sujet/${subject.slug}`}> + {subject.featuredImage && ( + <Image + src={subject.featuredImage.sourceUrl} + alt={subject.featuredImage.altText} + layout="intrinsic" + width="20" + height="20" + /> + )} + {subject.title} + </ButtonLink> </li> ); }); diff --git a/src/components/PostPreview/PostPreview.tsx b/src/components/PostPreview/PostPreview.tsx index 9cb7752..d89ddb5 100644 --- a/src/components/PostPreview/PostPreview.tsx +++ b/src/components/PostPreview/PostPreview.tsx @@ -48,11 +48,7 @@ const PostPreview = ({ dangerouslySetInnerHTML={{ __html: post.intro }} ></div> <footer className={styles.footer}> - <ButtonLink - target={`/article/${post.slug}`} - position="left" - hasIcon={true} - > + <ButtonLink target={`/article/${post.slug}`} position="left"> {t`Read more`} <span className="screen-reader-text"> {' '} |
