diff options
Diffstat (limited to 'src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss')
| -rw-r--r-- | src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss b/src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss new file mode 100644 index 0000000..058d805 --- /dev/null +++ b/src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss @@ -0,0 +1,146 @@ +@use "@styles/abstracts/functions" as fun; +@use "@styles/abstracts/mixins" as mix; + +.title { + margin: 0; + padding: 0; + background: none; + font-size: var(--font-size-xl); + text-align: left; +} + +.icon { + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: center; + width: fun.convert-px(30); + height: fun.convert-px(30); + background: var(--color-bg); + border: fun.convert-px(1) solid var(--color-primary); + border-radius: fun.convert-px(3); + color: var(--color-primary); + font-weight: 800; + transition: all 0.25s ease-in-out 0s; + + &::before, + &::after { + content: ""; + background: var(--color-primary); + transition: all 0.4s ease-out 0s; + } + + &::before { + width: 10%; + height: 60%; + position: relative; + left: 30%; + } + + &::after { + width: 60%; + height: 10%; + position: relative; + left: -5%; + } +} + +.body { + width: 100%; + margin: 0; + overflow-y: auto; + visibility: hidden; + opacity: 0; + height: 0; + transition: all 0.5s ease-in-out 0s; + + &--borders { + border: fun.convert-px(2) solid var(--color-primary-dark); + } + + > *:last-child { + margin-bottom: 0; + } + + @include mix.media("screen") { + @include mix.dimensions("md") { + font-size: var(--font-size-sm); + font-weight: 500; + } + } +} + +.header { + flex: 0 0 auto; + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: space-between; + gap: var(--spacing-md); + width: 100%; + min-height: var(--header-height); + position: sticky; + top: 0; + background: var(--color-bg); + border: none; + border-bottom: fun.convert-px(2) solid var(--color-primary-dark); + cursor: pointer; + transition: background 0.2s ease-in-out 0s; + + > button { + padding: 0 var(--spacing-xs); + } +} + +.wrapper--expanded .icon { + &::before { + height: 0; + } +} + +.header:hover, +.header:focus { + .icon { + background: var(--color-primary-light); + color: var(--color-fg-inverted); + transform: scale(1.2); + + &::before, + &::after { + background: var(--color-bg); + } + } +} + +.wrapper { + --header-height: #{fun.convert-px(65)}; + + display: flex; + flex-flow: column; + min-height: var(--header-height); + position: relative; + overflow-y: hidden; + + &:first-of-type { + .header { + border-top: fun.convert-px(2) solid var(--color-primary-dark); + } + } +} + +.wrapper--expanded { + ~ .wrapper { + .header { + border-top: fun.convert-px(2) solid var(--color-primary-dark); + } + } + + .body { + visibility: visible; + opacity: 1; + min-height: inherit; + height: 100%; + margin: var(--spacing-sm) 0; + transition: all 0.45s ease-in-out 0s; + } +} |
