diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-05-18 11:44:37 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-05-18 11:44:37 +0200 |
| commit | 54883bb5c36cf21462a421605a709fdd6f04b150 (patch) | |
| tree | bb67a6c9ce824c52c3bae732a32f192a32969f64 /src/components/molecules/layout/branding.module.scss | |
| parent | f347cc1e4ae32289198d698f05f84119a708b599 (diff) | |
chore: add branding animation
Diffstat (limited to 'src/components/molecules/layout/branding.module.scss')
| -rw-r--r-- | src/components/molecules/layout/branding.module.scss | 125 |
1 files changed, 91 insertions, 34 deletions
diff --git a/src/components/molecules/layout/branding.module.scss b/src/components/molecules/layout/branding.module.scss index aa18002..6121fa1 100644 --- a/src/components/molecules/layout/branding.module.scss +++ b/src/components/molecules/layout/branding.module.scss @@ -1,48 +1,105 @@ @use "@styles/abstracts/functions" as fun; +@use "@styles/abstracts/mixins" as mix; + +@mixin typing-animation { + --typing-animation: none; + + width: fit-content; + position: relative; + overflow: hidden; + + &::after { + content: "|"; + display: block; + width: 100%; + height: 100%; + position: absolute; + top: 0; + right: 0; + background: var(--color-bg); + color: var(--color-primary-darker); + font-weight: 400; + text-align: left; + visibility: hidden; + transform: translateX(100%); + transform-origin: right; + animation: var(--typing-animation); + + :global { + animation: var(--typing-animation); + } + } +} .wrapper { + --logo-size: #{clamp(fun.convert-px(90), 12vw, fun.convert-px(100))}; + display: grid; - grid-template-columns: - var(--logo-size, fun.convert-px(100)) - minmax(0, 1fr); - grid-template-rows: 1fr min-content; - align-items: center; - column-gap: var(--spacing-sm); -} + grid-template-columns: minmax(0, 1fr); + justify-items: center; + width: 100%; -.logo { - grid-row: span 2; -} + @include mix.media("screen") { + @include mix.dimensions("2xs") { + grid-template-columns: + var(--logo-size, fun.convert-px(100)) + minmax(0, 1fr); + grid-template-rows: 1fr min-content; + align-items: center; + justify-items: left; + column-gap: var(--spacing-sm); + width: unset; + } + } -.title { - font-size: var(--font-size-2xl); -} + .logo { + grid-row: span 2; + margin-bottom: var(--spacing-sm); -.baseline { - color: var(--color-fg-light); -} + @include mix.media("screen") { + @include mix.dimensions("2xs") { + margin-bottom: 0; + } + } + } + + .title { + font-size: clamp(var(--font-size-xl), 8vw, var(--font-size-2xl)); + text-align: center; -.link { - background: linear-gradient( - to top, - var(--color-primary-light) fun.convert-px(5), - transparent fun.convert-px(5) - ) - left / 0 100% no-repeat; - text-decoration: none; - transition: all 0.6s ease-out 0s; - - &:hover, - &:focus { - background-size: 100% 100%; + @include typing-animation; } - &:focus { - color: var(--color-primary-light); + .baseline { + color: var(--color-fg-light); + font-size: var(--font-size-lg); + text-align: center; + + @include typing-animation; } - &:active { - background-size: 0 100%; - color: var(--color-primary-dark); + .link { + background: linear-gradient( + to top, + var(--color-primary-light) fun.convert-px(5), + transparent fun.convert-px(5) + ) + left / 0 100% no-repeat; + text-decoration: none; + transition: all 0.6s ease-out 0s; + + &:hover, + &:focus { + background-size: 100% 100%; + } + + &:focus { + color: var(--color-primary-light); + } + + &:active { + background-size: 0 100%; + color: var(--color-primary-dark); + } } } |
