summaryrefslogtreecommitdiffstats
path: root/src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss')
-rw-r--r--src/components/WidgetParts/ExpandableWidget/ExpandableWidget.module.scss146
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;
+ }
+}