aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/molecules/nav/nav-link/nav-link.module.scss
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-10-19 19:30:54 +0200
committerArmand Philippot <git@armandphilippot.com>2023-11-11 18:14:41 +0100
commitc3cde71e60ae22d17c1d162f678f592915ac5398 (patch)
tree770856e0876b8c613a21fa79199d6d40609d73e6 /src/components/molecules/nav/nav-link/nav-link.module.scss
parent94448fa278ab352a741ff13f22d6104869571144 (diff)
refactor(components): rewrite NavLink component
* handle style variants to avoid declaring the styles in consumers
Diffstat (limited to 'src/components/molecules/nav/nav-link/nav-link.module.scss')
-rw-r--r--src/components/molecules/nav/nav-link/nav-link.module.scss119
1 files changed, 78 insertions, 41 deletions
diff --git a/src/components/molecules/nav/nav-link/nav-link.module.scss b/src/components/molecules/nav/nav-link/nav-link.module.scss
index 8a7d371..ac20c73 100644
--- a/src/components/molecules/nav/nav-link/nav-link.module.scss
+++ b/src/components/molecules/nav/nav-link/nav-link.module.scss
@@ -2,60 +2,97 @@
@use "../../../../styles/abstracts/placeholders";
.link {
- --draw-border-thickness: #{fun.convert-px(4)};
- --draw-border-color1: var(--color-primary-light);
- --draw-border-color2: var(--color-primary-lighter);
-
- display: flex;
- flex-flow: row wrap;
- place-items: center;
- place-content: center;
- row-gap: var(--spacing-2xs);
- min-width: var(--link-min-width, fun.convert-px(80));
- padding: var(--spacing-xs) var(--spacing-xs) var(--spacing-2xs);
- background: none;
- border-radius: 8%;
- font-size: var(--font-size-sm);
- font-variant: small-caps;
- font-weight: 600;
- text-align: center;
- text-decoration: none;
+ &--block,
+ &--main,
+ &--regular#{&}--stack {
+ display: flex;
+ place-items: center;
+ place-content: center;
+ row-gap: var(--spacing-2xs);
+ }
- &--inline {
- width: fit-content;
+ &--block {
+ padding: var(--spacing-2xs) var(--spacing-xs);
+ font-weight: 500;
+ text-decoration: underline solid transparent 0;
- .logo {
- margin-right: var(--spacing-xs);
+ &:hover,
+ &:focus {
+ background: var(--color-bg-secondary);
}
- }
- &--stack {
- .logo {
- flex: 0 0 100%;
- display: flex;
- place-content: center;
+ &:focus {
+ color: var(--color-primary);
+ text-decoration-color: var(--color-primary-light);
+ text-decoration-thickness: 0.25ex;
}
- }
- &:hover,
- &:focus {
- @extend %draw-borders;
+ &:active {
+ background: var(--color-bg-tertiary);
+ text-decoration-color: transparent;
+ text-decoration-thickness: 0;
+ }
}
- &:hover {
- color: var(--color-primary-light);
+ &--main {
+ --draw-border-thickness: #{fun.convert-px(4)};
+ --draw-border-color1: var(--color-primary-light);
+ --draw-border-color2: var(--color-primary-lighter);
+
+ min-width: var(--link-min-width, fun.convert-px(82));
+ padding: var(--spacing-xs);
+ background: none;
+ border-radius: 8%;
+ font-size: var(--font-size-sm);
+ font-variant: small-caps;
+ font-weight: 600;
+ line-height: initial;
+ text-align: center;
+ text-decoration: none;
+
+ &:hover,
+ &:focus {
+ @extend %draw-borders;
+ }
+
+ &:hover {
+ color: var(--color-primary-light);
+ }
+
+ &:focus {
+ color: var(--color-primary-light);
+ }
+
+ &:active {
+ --draw-border-color1: var(--color-primary-dark);
+ --draw-border-color2: var(--color-primary-light);
+
+ color: var(--color-primary-dark);
+
+ @extend %draw-borders;
+ }
}
- &:focus {
- color: var(--color-primary-light);
+ &--inline {
+ .logo {
+ margin-right: var(--spacing-xs);
+ }
}
- &:active {
- --draw-border-color1: var(--color-primary-dark);
- --draw-border-color2: var(--color-primary-light);
+ &--inline#{&}--regular {
+ .logo {
+ display: inline-block;
+ vertical-align: middle;
+ }
+ }
- color: var(--color-primary-dark);
+ &--stack {
+ flex-flow: column wrap;
- @extend %draw-borders;
+ .logo {
+ flex: 0 0 100%;
+ display: flex;
+ place-content: center;
+ }
}
}