aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/organisms
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-12-20 17:09:39 +0100
committerArmand Philippot <git@armandphilippot.com>2023-12-20 17:09:39 +0100
commiteef0dd0fafa5dbbbd29f2162967bc668eebf6074 (patch)
tree077062962f649b36356262e8b7052292fc9008d9 /src/components/organisms
parent5a572163c5a5174c1620c578f550dd7ddc841df4 (diff)
fix(styles): increase CSS specifity for some selectors
Since `sideEffects` has been added to activate tree shakings, the styles are imported in the wrong order in production build. There is an open issue (again) on Next.js repo. I'm not sure it will be fixed soon so in the meantime I had to increase the specifity of some selectors to avoid broken styles. I also fixed two minor layout errors: * CV page widgets should use headings of level 2 * Homepage should wrap the cards in list items
Diffstat (limited to 'src/components/organisms')
-rw-r--r--src/components/organisms/forms/search-form/search-form.module.scss55
-rw-r--r--src/components/organisms/nav/breadcrumbs/breadcrumbs.module.scss4
-rw-r--r--src/components/organisms/nav/breadcrumbs/breadcrumbs.tsx5
-rw-r--r--src/components/organisms/navbar/navbar-item/navbar-item.module.scss200
4 files changed, 131 insertions, 133 deletions
diff --git a/src/components/organisms/forms/search-form/search-form.module.scss b/src/components/organisms/forms/search-form/search-form.module.scss
index f6570ce..1a440f0 100644
--- a/src/components/organisms/forms/search-form/search-form.module.scss
+++ b/src/components/organisms/forms/search-form/search-form.module.scss
@@ -10,52 +10,53 @@
transition: all 0.3s ease-in-out 0s;
}
-.btn {
- background: var(--color-bg-tertiary);
- border: fun.convert-px(2) solid var(--color-border);
- box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-shadow);
- transition: all 0.25s linear 0s;
+.form {
+ display: flex;
+ flex-flow: row nowrap;
+
+ /* It needs to be nested because of wrong CSS ordering on production build. */
+ .btn {
+ background: var(--color-bg-tertiary);
+ border: fun.convert-px(2) solid var(--color-border);
+ box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0 var(--color-shadow);
+ transition: all 0.25s linear 0s;
+ }
+
+ &--no-label {
+ .btn {
+ align-self: stretch;
+ }
+ }
+
+ &--has-label {
+ .btn {
+ align-self: flex-end;
+ height: fun.convert-px(52);
+ }
+ }
- &:hover,
- &:focus {
+ .btn:hover,
+ .btn:focus {
.icon {
transform: scale(0.85) rotate(20deg) translateX(#{fun.convert-px(2)})
translateY(#{fun.convert-px(3)});
}
}
- &:focus {
+ .btn:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: fun.convert-px(3) fun.convert-px(3) 0 0
var(--color-primary-dark);
}
- &:active {
+ .btn:active {
.icon {
transform: scale(0.7);
}
}
}
-.form {
- display: flex;
- flex-flow: row nowrap;
-
- &--no-label {
- .btn {
- align-self: stretch;
- }
- }
-
- &--has-label {
- .btn {
- align-self: flex-end;
- height: fun.convert-px(52);
- }
- }
-}
-
.field {
min-width: 0;
diff --git a/src/components/organisms/nav/breadcrumbs/breadcrumbs.module.scss b/src/components/organisms/nav/breadcrumbs/breadcrumbs.module.scss
index 1be81c4..b1b2302 100644
--- a/src/components/organisms/nav/breadcrumbs/breadcrumbs.module.scss
+++ b/src/components/organisms/nav/breadcrumbs/breadcrumbs.module.scss
@@ -1,7 +1,3 @@
-.wrapper {
- width: fit-content;
-}
-
.sep {
margin-inline-start: var(--spacing-xs);
}
diff --git a/src/components/organisms/nav/breadcrumbs/breadcrumbs.tsx b/src/components/organisms/nav/breadcrumbs/breadcrumbs.tsx
index 13434e1..fd29f90 100644
--- a/src/components/organisms/nav/breadcrumbs/breadcrumbs.tsx
+++ b/src/components/organisms/nav/breadcrumbs/breadcrumbs.tsx
@@ -28,12 +28,11 @@ export type BreadcrumbsProps = Omit<NavProps, 'children'> & {
const BreadcrumbsWithRef: ForwardRefRenderFunction<
HTMLElement,
BreadcrumbsProps
-> = ({ className = '', items, ...props }, ref) => {
- const wrapperClass = `${styles.wrapper} ${className}`;
+> = ({ items, ...props }, ref) => {
const sep = '>';
return (
- <Nav {...props} className={wrapperClass} ref={ref}>
+ <Nav {...props} ref={ref}>
<NavList
isInline
isOrdered
diff --git a/src/components/organisms/navbar/navbar-item/navbar-item.module.scss b/src/components/organisms/navbar/navbar-item/navbar-item.module.scss
index f8249ba..a9a19de 100644
--- a/src/components/organisms/navbar/navbar-item/navbar-item.module.scss
+++ b/src/components/organisms/navbar/navbar-item/navbar-item.module.scss
@@ -2,23 +2,6 @@
@use "../../../../styles/abstracts/mixins" as mix;
@use "../../../../styles/abstracts/placeholders";
-.overlay {
- @include mix.media("screen") {
- @include mix.dimensions(null, "sm") {
- bottom: var(--modal-pos, var(--btn-size, --default-btn-size));
- display: flex;
- flex-flow: row wrap;
- place-content: flex-end;
- }
-
- @include mix.dimensions("sm") {
- position: absolute;
- inset: calc(100% + var(--spacing-2xs)) auto;
- background: transparent;
- }
- }
-}
-
.modal {
transition:
all 0.8s ease-in-out 0s,
@@ -58,88 +41,6 @@
}
}
-.checkbox {
- position: absolute;
-
- /* 6px = checkbox approximate size */
- inset: calc(50% - 6px) calc(50% - 6px);
- opacity: 0;
- cursor: pointer;
-
- &:hover,
- &:focus {
- &,
- + .label {
- @extend %draw-borders;
- }
- }
-
- &:checked {
- + .label {
- --draw-border-color1: var(--color-primary-dark);
- --draw-border-color2: var(--color-primary-light);
-
- .icon--hamburger {
- > span {
- background: transparent;
- border: transparent;
-
- &::before {
- top: 40%;
- transform-origin: 50% 50%;
- transform: rotate(-45deg);
- }
-
- &::after {
- bottom: 40%;
- transform-origin: 50% 50%;
- transform: rotate(45deg);
- }
- }
- }
- }
-
- ~ .overlay {
- opacity: 1;
- visibility: visible;
- }
- }
-
- &:not(:checked) {
- + .label {
- --draw-border-color1: var(--color-primary-light);
- --draw-border-color2: var(--color-primary-lighter);
- }
-
- ~ .overlay {
- opacity: 0;
- overflow: hidden;
- visibility: hidden;
-
- @include mix.media("screen") {
- @include mix.dimensions("sm") {
- overflow: visible;
- transition: all 0.3s ease-in-out 0.8s;
- }
- }
-
- > .modal {
- @include mix.media("screen") {
- @include mix.dimensions(null, "sm") {
- transform: translateX(-100vw);
- }
-
- @include mix.dimensions("sm") {
- transform: scale(0) perspective(#{fun.convert-px(250)})
- translate3d(0, 0, #{fun.convert-px(-250)});
- transform-origin: var(--transform-origin, 15% -15%);
- }
- }
- }
- }
- }
-}
-
@mixin modal-visible {
> .checkbox,
> .label {
@@ -166,6 +67,107 @@
position: relative;
+ /* It needs to be nested because of wrong CSS ordering on production build. */
+ .overlay {
+ @include mix.media("screen") {
+ @include mix.dimensions(null, "sm") {
+ bottom: var(--modal-pos, var(--btn-size, --default-btn-size));
+ display: flex;
+ flex-flow: row wrap;
+ place-content: flex-end;
+ }
+
+ @include mix.dimensions("sm") {
+ position: absolute;
+ inset: calc(100% + var(--spacing-2xs)) auto;
+ background: transparent;
+ }
+ }
+ }
+
+ /* It needs to be nested because of wrong CSS ordering on production build. */
+ .checkbox {
+ position: absolute;
+
+ /* 6px = checkbox approximate size */
+ inset: calc(50% - 6px) calc(50% - 6px);
+ opacity: 0;
+ cursor: pointer;
+
+ &:hover,
+ &:focus {
+ &,
+ + .label {
+ @extend %draw-borders;
+ }
+ }
+
+ &:checked {
+ + .label {
+ --draw-border-color1: var(--color-primary-dark);
+ --draw-border-color2: var(--color-primary-light);
+
+ .icon--hamburger {
+ > span {
+ background: transparent;
+ border: transparent;
+
+ &::before {
+ top: 40%;
+ transform-origin: 50% 50%;
+ transform: rotate(-45deg);
+ }
+
+ &::after {
+ bottom: 40%;
+ transform-origin: 50% 50%;
+ transform: rotate(45deg);
+ }
+ }
+ }
+ }
+
+ ~ .overlay {
+ opacity: 1;
+ visibility: visible;
+ }
+ }
+
+ &:not(:checked) {
+ + .label {
+ --draw-border-color1: var(--color-primary-light);
+ --draw-border-color2: var(--color-primary-lighter);
+ }
+
+ ~ .overlay {
+ opacity: 0;
+ overflow: hidden;
+ visibility: hidden;
+
+ @include mix.media("screen") {
+ @include mix.dimensions("sm") {
+ overflow: visible;
+ transition: all 0.3s ease-in-out 0.8s;
+ }
+ }
+
+ > .modal {
+ @include mix.media("screen") {
+ @include mix.dimensions(null, "sm") {
+ transform: translateX(-100vw);
+ }
+
+ @include mix.dimensions("sm") {
+ transform: scale(0) perspective(#{fun.convert-px(250)})
+ translate3d(0, 0, #{fun.convert-px(-250)});
+ transform-origin: var(--transform-origin, 15% -15%);
+ }
+ }
+ }
+ }
+ }
+ }
+
&--hidden-controller-sm {
@include mix.media("screen") {
@include mix.dimensions("sm") {