diff --git a/nuxt/assets/scss/defaults.scss b/nuxt/assets/scss/defaults.scss
index 1667fc1..6cd3755 100644
--- a/nuxt/assets/scss/defaults.scss
+++ b/nuxt/assets/scss/defaults.scss
@@ -23,9 +23,12 @@
// Font weights
--font-weight-light: 300;
- --font-weight-medium: 500;
- --font-weight-semibold: 600;
- --font-weight-bold: 700;
+ --font-weight-medium: 400;
+ --font-weight-semibold: 500;
+ --font-weight-bold: 600;
+
+ // Font family
+ --font-family: Poppins;
// Spacing & Dimensions
--space-0: 0.0625rem; // 1px
@@ -35,4 +38,11 @@
$value: $i * $increment;
--space-#{$i}: #{$value};
}
+
+ // Transitions
+ --transition-page-vertical: top 1s;
+ --transition-page-horizontal: left 1s;
+ --transition-slider: 0.15s ease-in-out;
+ --transition-accordeon: 0.4s ease-in-out;
+ --transition-state: all 0.3s ease;
}
diff --git a/nuxt/assets/scss/main.scss b/nuxt/assets/scss/main.scss
index 9ac5738..542b65a 100644
--- a/nuxt/assets/scss/main.scss
+++ b/nuxt/assets/scss/main.scss
@@ -14,7 +14,7 @@ h3 {
font-weight: var(--font-weight-semibold);
}
-@include sm-screen-down {
+@mixin responsive-typography {
h1 {
font-size: var(--font-size-l);
}
@@ -28,8 +28,22 @@ h3 {
}
}
+@include sm-screen-down {
+ @include responsive-typography()
+}
+
+#preview {
+ &.preview-tablet,
+ &.preview-cellphone {
+ @include responsive-typography()
+ }
+}
+
body {
background-color: var(--background-color);
+}
+
+body, #preview {
color: var(--text-color);
font-family: var(--font-family);
font-size: var(--font-size-base);
diff --git a/nuxt/assets/scss/transitions.scss b/nuxt/assets/scss/transitions.scss
index c4bf4d6..392a939 100644
--- a/nuxt/assets/scss/transitions.scss
+++ b/nuxt/assets/scss/transitions.scss
@@ -1,10 +1,10 @@
/**
* Transition to and from the art pages
*/
- .up {
+.up {
&.slide-leave-active,
&.slide-enter-active {
- transition: top 1s;
+ transition: var(--transition-page-vertical);
}
&.slide-enter-from {
@@ -17,14 +17,14 @@
.down {
&.slide-leave-active {
- transition: top 1s;
+ transition: var(--transition-page-vertical);
}
&.slide-leave-from {
top: 0;
}
&.slide-leave-to {
- top: 100%
+ top: 100%;
}
}
@@ -34,14 +34,14 @@
.left {
&.slide-leave-active,
&.slide-enter-active {
- transition: left 1s;
+ transition: var(--transition-page-horizontal);
}
&.slide-enter-from {
left: 100%;
}
&.slide-enter-to {
- left: 0
+ left: 0;
}
&.slide-leave-to {
left: -100%;
@@ -54,7 +54,7 @@
.right {
&.slide-leave-active,
&.slide-enter-active {
- transition: left 1s;
+ transition: var(--transition-page-horizontal);
}
&.slide-enter-from {
@@ -62,7 +62,7 @@
}
&.slide-enter-to {
- left: 0%
+ left: 0%;
}
&.slide-leave-to {
left: 100%;
diff --git a/nuxt/components/Atoms/Accordeon.vue b/nuxt/components/Atoms/Accordeon.vue
new file mode 100644
index 0000000..63605dc
--- /dev/null
+++ b/nuxt/components/Atoms/Accordeon.vue
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+
diff --git a/nuxt/components/Atoms/ArtworkTeaser.vue b/nuxt/components/Atoms/ArtworkTeaser.vue
index 5836692..578854a 100644
--- a/nuxt/components/Atoms/ArtworkTeaser.vue
+++ b/nuxt/components/Atoms/ArtworkTeaser.vue
@@ -69,7 +69,7 @@ defineProps<{
width: 100%;
height: 100%;
object-fit: cover;
- transition: 0.15s ease-in-out;
+ transition: var(--transition-slider);
}
}
diff --git a/nuxt/components/Atoms/Button.vue b/nuxt/components/Atoms/Button.vue
index 3d2a2d5..b4b1294 100644
--- a/nuxt/components/Atoms/Button.vue
+++ b/nuxt/components/Atoms/Button.vue
@@ -28,14 +28,19 @@ const classes = computed(() => {
padding: var(--space-4) var(--space-8);
border-radius: var(--space-2);
cursor: pointer;
+ transition: var(--transition-state);
user-select: none;
+ &:disabled {
+ cursor: not-allowed;
+ }
+
&.primary {
color: var(--background-color);
border: var(--space-0) solid transparent;
background-color: var(--blues-blue);
- &:hover {
+ &:hover:enabled {
color: var(--blues-blue);
background-color: var(--background-color);
border: var(--space-0) solid var(--blues-blue);
@@ -47,7 +52,7 @@ const classes = computed(() => {
color: var(--blues-blue);
border: var(--space-0) solid var(--blues-blue);
- &:hover {
+ &:hover:enabled {
background-color: var(--blues-blue);
color: var(--background-color);
border: var(--space-0) solid transparent;
diff --git a/nuxt/components/Atoms/CategoryTeaser.vue b/nuxt/components/Atoms/CategoryTeaser.vue
index bb01245..7fa49cc 100644
--- a/nuxt/components/Atoms/CategoryTeaser.vue
+++ b/nuxt/components/Atoms/CategoryTeaser.vue
@@ -86,7 +86,7 @@ const to = computed(() => {
width: var(--max-width-slide);
height: 100%;
object-fit: cover;
- transition: 0.15s ease-in-out;
+ transition: var(--transition-slider);
filter: blur(0.625rem);
position: absolute;
left: 50%;
diff --git a/nuxt/components/Atoms/Cellphone.vue b/nuxt/components/Atoms/Cellphone.vue
new file mode 100644
index 0000000..433d27e
--- /dev/null
+++ b/nuxt/components/Atoms/Cellphone.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
diff --git a/nuxt/components/Atoms/InputWrapper.vue b/nuxt/components/Atoms/InputWrapper.vue
index 2b4a2de..20a83f7 100644
--- a/nuxt/components/Atoms/InputWrapper.vue
+++ b/nuxt/components/Atoms/InputWrapper.vue
@@ -20,6 +20,7 @@ const classes = computed(() => {
return {
'input-wrapper': true,
inline: props.inline,
+ label: !!props.label,
};
});
@@ -29,23 +30,31 @@ const classes = computed(() => {
display: grid;
grid-template-columns: 1fr;
grid-template-rows: min-content auto;
- grid-template-areas: 'label' 'input';
+ grid-template-areas: 'input';
gap: var(--space-4);
- background-color: var(--background-color);
color: var(--text-color);
width: 100%;
+ &.label {
+ grid-template-areas: 'label' 'input';
+ }
+
&.inline {
grid-template-columns: min-content auto;
grid-template-rows: min-content;
- grid-template-areas: 'label input';
+ grid-template-areas: 'input';
+
+ &.label {
+ grid-template-areas: 'label input';
+ }
}
label {
grid-area: label;
display: flex;
align-items: center;
- font-size: var(--font-size-lg);
+ font-size: var(--font-size-base);
+ font-weight: var(--font-weight-light);
text-wrap: nowrap;
}
diff --git a/nuxt/components/Atoms/Tablet.vue b/nuxt/components/Atoms/Tablet.vue
new file mode 100644
index 0000000..fcb6296
--- /dev/null
+++ b/nuxt/components/Atoms/Tablet.vue
@@ -0,0 +1,160 @@
+
+
+
+
+
+
+
diff --git a/nuxt/components/Molecules/Branding/Header.vue b/nuxt/components/Molecules/Branding/Header.vue
index 0f44a1b..c6fd45f 100644
--- a/nuxt/components/Molecules/Branding/Header.vue
+++ b/nuxt/components/Molecules/Branding/Header.vue
@@ -2,7 +2,7 @@