diff options
Diffstat (limited to 'src/components/PostPreview')
| -rw-r--r-- | src/components/PostPreview/PostPreview.module.scss | 74 | ||||
| -rw-r--r-- | src/components/PostPreview/PostPreview.tsx | 25 |
2 files changed, 28 insertions, 71 deletions
diff --git a/src/components/PostPreview/PostPreview.module.scss b/src/components/PostPreview/PostPreview.module.scss index ccdae9b..cacc0d3 100644 --- a/src/components/PostPreview/PostPreview.module.scss +++ b/src/components/PostPreview/PostPreview.module.scss @@ -2,22 +2,24 @@ @use "@styles/abstracts/mixins" as mix; .wrapper { + --icon-size: #{fun.convert-px(20)}; + padding: var(--spacing-sm) var(--spacing-sm) var(--spacing-md); border: fun.convert-px(1) solid var(--color-border); border-radius: fun.convert-px(3); - box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow), - fun.convert-px(1) fun.convert-px(1) fun.convert-px(3) 0 var(--color-shadow); - transition: all 0.2s ease-in-out 0s, border 0s; + box-shadow: fun.convert-px(1) fun.convert-px(1) 0 0 var(--color-shadow-light), + fun.convert-px(2) fun.convert-px(2) fun.convert-px(2) 0 + var(--color-shadow-light), + fun.convert-px(4) fun.convert-px(4) fun.convert-px(5) fun.convert-px(-2) + var(--color-shadow-light); + transition: all 0.3s ease-in-out 0s, border 0s; - &:hover, - &:focus-within { - box-shadow: fun.convert-px(2) fun.convert-px(2) 0 0 - var(--color-shadow-light), - fun.convert-px(3) fun.convert-px(3) fun.convert-px(3) 0 - var(--color-shadow-light), - fun.convert-px(3) fun.convert-px(3) fun.convert-px(5) fun.convert-px(1) - var(--color-shadow-lighter); - transform: scale(1.01); + &:hover { + --icon-size: #{fun.convert-px(25)}; + } + + &:active { + --icon-size: 0; } } @@ -29,54 +31,6 @@ border: fun.convert-px(1) solid var(--color-border); } -.read-more { - display: block; - width: max-content; - margin: var(--spacing-md) auto var(--spacing-lg); - padding: var(--spacing-2xs) var(--spacing-sm); - background: var(--color-bg); - border: fun.convert-px(3) solid var(--color-primary); - border-radius: fun.convert-px(3); - box-shadow: fun.convert-px(1) fun.convert-px(1) fun.convert-px(1) - var(--color-shadow-light), - fun.convert-px(1) fun.convert-px(2) fun.convert-px(2) fun.convert-px(-2) - var(--color-shadow-light), - fun.convert-px(3) fun.convert-px(4) fun.convert-px(5) fun.convert-px(-4) - var(--color-shadow-light); - color: var(--color-primary); - font-weight: 600; - text-decoration: none; - transition: all 0.3s ease-in-out 0s; - - .icon { - width: fun.convert-px(20); - margin-left: var(--spacing-2xs); - fill: var(--color-primary); - transition: all 0.25s ease-in-out 0s; - } - - &:hover, - &:focus { - text-decoration: underline var(--color-primary) fun.convert-px(2); - - .icon { - margin-left: var(--spacing-xs); - transform: scaleX(1.3); - } - } - - &:active { - color: var(--color-primary-dark); - text-decoration: none; - - .icon { - margin-left: 0; - transform: scaleX(0); - width: 0; - } - } -} - @include mix.media("screen") { @include mix.dimensions("xs") { .read-more { diff --git a/src/components/PostPreview/PostPreview.tsx b/src/components/PostPreview/PostPreview.tsx index f5c6d9b..ccbb9e5 100644 --- a/src/components/PostPreview/PostPreview.tsx +++ b/src/components/PostPreview/PostPreview.tsx @@ -2,9 +2,10 @@ import PostMeta from '@components/PostMeta/PostMeta'; import { t } from '@lingui/macro'; import { ArticlePreview } from '@ts/types/articles'; import Link from 'next/link'; -import ArrowRightIcon from '@assets/images/icon-arrow-right.svg'; import styles from './PostPreview.module.scss'; import Image from 'next/image'; +import { ButtonLink } from '@components/Buttons'; +import { ArrowIcon } from '@components/Icons'; type TitleLevel = 2 | 3 | 4 | 5 | 6; @@ -41,16 +42,18 @@ const PostPreview = ({ dangerouslySetInnerHTML={{ __html: post.intro }} ></div> <footer className={styles.footer}> - <Link href={`/article/${post.slug}`}> - <a className={styles['read-more']}> - {t`Read more`} - <span className="screen-reader-text"> - {' '} - {t({ message: `about ${post.title}`, comment: 'Post title' })} - </span> - <ArrowRightIcon className={styles.icon} /> - </a> - </Link> + <ButtonLink + target={`/article/${post.slug}`} + position="left" + hasIcon={true} + > + {t`Read more`} + <span className="screen-reader-text"> + {' '} + {t({ message: `about ${post.title}`, comment: 'Post title' })} + </span> + <ArrowIcon /> + </ButtonLink> </footer> <PostMeta commentCount={post.commentCount} |
