diff --git a/app/app.vue b/app/app.vue
old mode 100755
new mode 100644
index a738821..d7e2b06
--- a/app/app.vue
+++ b/app/app.vue
@@ -1,11 +1,18 @@
-
+
+
+
+
-
\ No newline at end of file
+
+
\ No newline at end of file
diff --git a/app/assets/styles/button.css b/app/assets/styles/button.css
index 11a6a95..e334808 100755
--- a/app/assets/styles/button.css
+++ b/app/assets/styles/button.css
@@ -1,5 +1,5 @@
.Button {
- --padding: .2rem;
+ --padding: var(--padding-xs);
--background: var(--color-main-dark);
--color: var(--color-lightest);
--background-hover: var(--color-main-dark);
@@ -8,7 +8,7 @@
display: flex;
justify-content: center;
align-items: center;
- gap: 1rem;
+ gap: var(--padding-default);
cursor: pointer;
transition: var(--transition-default);
outline: none;
@@ -19,13 +19,13 @@
&.transparent {
--background: transparent;
box-shadow: none;
- padding: .5em 1.5em;
+ padding: var(--padding-s) var(--padding-l);
border-radius: var(--radius-default);
}
&.raised {
box-shadow: var(--box-shadow-z2);
- padding: .5em 1.5em;
+ padding: var(--padding-s) var(--padding-l);
border-radius: var(--radius-default);
&.danger {
@@ -37,7 +37,7 @@
&.text {
--background: transparent;
--color: var(--color-darkest);
- padding: .5em 1.5em;
+ padding: var(--padding-s) var(--padding-l);
border-radius: var(--radius-default);
&:hover {
@@ -62,13 +62,13 @@
justify-content: center;
align-items: center;
border-radius: 100%;
- padding: .5rem;
+ padding: var(--padding-s);
}
&.cta {
background: var(--background);
color: var(--color);
- padding: .5rem 1.5rem;
+ padding: var(--padding-s) var(--padding-l);
border-radius: var(--radius-default);
box-shadow: var(--box-shadow-z2);
@@ -98,7 +98,7 @@
--color: var(--color-main-darkest);
border-radius: 100%;
padding: var(--padding);
- font-size: 1.1em;
+ font-size: var(--font-size-l);
&:hover {
scale: 1.2;
@@ -106,17 +106,17 @@
}
&.mini-button {
- padding: .5rem 1.5rem;
+ padding: var(--padding-s) var(--padding-l);
display: flex;
flex-direction: column;
- gap: .5rem;
+ gap: var(--padding-xs);
& > .icon {
- font-size: 1.5rem;
+ font-size: var(--font-size-xl);
}
& > span {
- font-size: .8rem;
+ font-size: var(--font-size-s);
}
}
}
\ No newline at end of file
diff --git a/app/assets/styles/buttonGroup.css b/app/assets/styles/buttonGroup.css
index 4b46732..bb8ffd8 100644
--- a/app/assets/styles/buttonGroup.css
+++ b/app/assets/styles/buttonGroup.css
@@ -9,8 +9,8 @@
display: flex;
align-items: center;
justify-content: center;
- gap: .5rem;
- padding: .5rem;
+ gap: var(--padding-xs);
+ padding: var(--padding-s);
flex-grow: 1;
background: var(--background);
color: var(--color);
diff --git a/app/assets/styles/dialog.css b/app/assets/styles/dialog.css
index afa1065..7338d36 100644
--- a/app/assets/styles/dialog.css
+++ b/app/assets/styles/dialog.css
@@ -2,12 +2,12 @@
dialog {
top: 50%;
left: 50%;
- width: 100vw;
+ width: clamp(400px, 100vw, calc(var(--page-max-width) - var(--padding-xxl) * 2));
translate: -50% -50%;
border: none;
border-radius: var(--radius-default);
background: var(--color-lightest);
- font-size: 1rem;
+ font-size: var(--font-size-default);
color: var(--color-darkest);
position: relative;
@@ -40,7 +40,7 @@ dialog {
& > .wrapper {
display: flex;
flex-direction: column;
- gap: 1rem;
+ gap: var(--padding-default);
}
& header {
diff --git a/app/assets/styles/footer.css b/app/assets/styles/footer.css
index baaa1fe..b6420c8 100644
--- a/app/assets/styles/footer.css
+++ b/app/assets/styles/footer.css
@@ -12,27 +12,38 @@
& .bottom {
display: flex;
- gap: 1rem;
- justify-content: space-between;
+ justify-content: center;
color: var(--color-light);
}
+ & .copy {
+ font-size: var(--font-size-xs);
+ color: var(--color-light);
+ margin-top: var(--padding-default);
+ text-align: center;
+
+ & a {
+ color: var(--color-main);
+ text-decoration: none;
+ }
+ }
+
& .socials {
- font-size: 1.5rem;
+ font-size: var(--font-size-xl);
justify-content: center;
- margin-bottom: 2rem;
+ margin-bottom: var(--padding-xl);
}
& .data-links {
justify-content: flex-end;
- font-size: .8rem;
+ font-size: var(--font-size-s);
}
& ul {
list-style: none;
display: flex;
align-items: center;
- gap: 1rem;
+ gap: var(--padding-default);
& a {
color: var(--color-lightest);
diff --git a/app/assets/styles/form/search.css b/app/assets/styles/form/search.css
index 5a30772..e03c6a4 100644
--- a/app/assets/styles/form/search.css
+++ b/app/assets/styles/form/search.css
@@ -1,15 +1,15 @@
.Search {
border-radius: 9999px;
background: var(--color-lightest);
- padding: 0 1rem;
+ padding: 0 var(--padding-default);
display: flex;
align-items: center;
justify-content: space-between;
- gap: 1rem;
+ gap: var(--padding-default);
& > input {
all: unset;
flex-grow: 1;
- padding: .5rem 0;
+ padding: var(--padding-s) 0;
}
}
\ No newline at end of file
diff --git a/app/assets/styles/form/textfield.css b/app/assets/styles/form/textfield.css
index b6c1959..d2cfaf8 100755
--- a/app/assets/styles/form/textfield.css
+++ b/app/assets/styles/form/textfield.css
@@ -1,9 +1,9 @@
.TextField {
--border-color: var(--color-light);
--label-color: var(--color-middle);
- --label-position-top: 0.4em;
- --label-font-size: 1rem;
- --icon-color: var(--color-main-dark);
+ --label-position-top: var(--font-size-default);
+ --label-position-left: 2.5rem;
+ --label-font-size: var(--font-size-default);
--message-color: var(--color-middle);
position: relative;
@@ -15,15 +15,11 @@
&:focus-within,
&:has(input:not(:placeholder-shown)) {
- --icon-color: var(--color-main-dark);
--label-color: var(--color-main-dark);
- --label-position-top: -11px;
- --label-font-size: 0.8rem;
}
&.error {
- --label-color: var(--color-error);
- --icon-color: var(--color-error);
+ --label-color: var(--color-error) !important;
--border-color: var(--color-error);
--message-color: var(--color-error);
}
@@ -31,37 +27,46 @@
& .wrapper {
display: flex;
align-items: center;
- padding: 0.1rem 0.5rem;
+ padding: var(--padding-xxs) var(--padding-xs);
border: 1px solid var(--border-color);
border-radius: var(--radius-default);
}
& label {
position: absolute;
- background: var(--color-lightest);
- padding: 0.2rem;
- left: 1.8rem;
+ display: flex;
+ align-items: center;
color: var(--label-color);
- top: var(--label-position-top);
- font-size: var(--label-font-size);
+ gap: 2px;
+ top: -6px;
+ left: calc(var(--padding-xs) - 2px);
+ font-size: var(--font-size-s);
transition: var(--transition-default);
+
+ & > * {
+ background: var(--color-lightest);
+ padding: 0 2px;
+ }
}
& .icon {
- color: var(--icon-color);
+ position: relative;
+ color: var(--label-color);
+ font-size: var(--font-size-default);
+ top: -1px;
}
& input {
all: unset;
- padding: var(--padding-small);
- font-size: 1rem;
+ padding: var(--padding-xxs) var(--padding-s) var(--padding-xxs) 0;
+ font-size: var(--font-size-s);
width: 100%;
flex: 25% 1 0;
color: var(--color-darkest);
}
- & span {
+ & > span {
color: var(--message-color);
- font-size: 0.6rem;
+ font-size: var(--font-size-xs);
}
}
diff --git a/app/assets/styles/general.css b/app/assets/styles/general.css
index 672acd2..1028fda 100755
--- a/app/assets/styles/general.css
+++ b/app/assets/styles/general.css
@@ -1,14 +1,7 @@
:root {
- --padding-default: 1rem;
- --padding-small: 0.5rem;
- --padding-large: 2rem;
- --radius-default: 3px;
- --radius-border: 15px;
- --transition-default: 150ms;
-
--color-success: #328104;
--color-error: #a20606;
- --color-blue-light: #0ddce7;
+ --color-blue-light: #d7e1f1;
--color-blue: #05b0ff;
--color-blue-dark: #0266f2;
--color-blue-darkest: #013174;
@@ -26,6 +19,7 @@
--color-green-darkest-most: #157c2a;
--color-main: var(--color-blue);
+ --color-main-lightest: var(--color-blue-light);
--color-main-light: var(--color-blue-light);
--color-main-dark: var(--color-blue-dark);
--color-main-darkest: var(--color-blue-darkest);
@@ -35,6 +29,9 @@
--color-accent-dark: var(--color-green-dark);
--color-accent-darkest: var(--color-green-darkest);
+ --color-text: var(--color-darkest);
+ --color-text-invert: var(--color-lightest);
+
--color-gradient-main: linear-gradient(to bottom right, var(--color-main), var(--color-main-light));
--color-gradient-main-dark: linear-gradient(to bottom right, var(--color-main-darkest), var(--color-main-dark));
--color-gradient-accent: linear-gradient(to bottom right, var(--color-accent), var(--color-accent-light));
@@ -45,6 +42,31 @@
--box-shadow-upper: 0 -3px 6px rgba(0, 0, 0, 0.16), 0 -3px 6px rgba(0, 0, 0, 0.23);
--box-shadow-z2: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
--box-shadow-inset: inset 0 3px 6px rgba(0, 0, 0, 0.16), inset 0 3px 6px rgba(0, 0, 0, 0.23);
+
+ /* Font Sizes & Scaling Factor*/
+ --scaling-factor: 1.25;
+ --font-size-xs: calc(var(--font-size-s) / var(--scaling-factor));
+ --font-size-s: calc(var(--font-size-default) / var(--scaling-factor));
+ --font-size-default: 1rem;
+ --font-size-l: calc(var(--font-size-default) * var(--scaling-factor));
+ --font-size-xl: calc(var(--font-size-l) * var(--scaling-factor));
+ --font-size-xxl: calc(var(--font-size-xl) * var(--scaling-factor));
+
+ /* Paddings depend on Font-Size */
+ --padding-xxs: calc(var(--padding-xs) / var(--scaling-factor));
+ --padding-xs: calc(var(--padding-s) / var(--scaling-factor));
+ --padding-default: var(--font-size-default);
+ --padding-s: calc(var(--padding-default) / var(--scaling-factor));
+ --padding-l: calc(var(--padding-default) * var(--scaling-factor));
+ --padding-xl: calc(var(--padding-l) * var(--scaling-factor));
+ --padding-xxl: calc(var(--padding-xl) * var(--scaling-factor));
+
+ --radius-default: calc(var(--font-size-default) / 3);
+ --radius-border: var(--font-size-default);
+
+ --transition-default: 150ms;
+
+ --page-max-width: 820px;
}
* {
@@ -58,44 +80,35 @@ body {
height: 100%;
overflow-x: hidden;
font-family: sans-serif;
- background: var(--color-main-darkest);
-}
-
-.dot {
- --size: 10px;
- width: var(--size);
- height: var(--size);
- top: 5px;
- right: 25%;
- border-radius: 50%;
- background-color: var(--color-accent);
- display: inline-block;
- margin-right: 0.5rem;
- position: absolute;
+ color: var(--color-text);
+ font-size: var(--font-size-default);
+ max-width: var(--page-max-width);
+ margin: 0 auto;
+ background-image: url("/img/desktop-background.svg");
+ background-position: center;
box-shadow: var(--box-shadow-z2);
- scale: 0;
- transition: var(--transition-default);
- &.visible {
- scale: 1;
- animation: pulse 1s infinite;
- }
}
-@keyframes pulse {
- 0% {
- transform: scale(0.95);
- box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.7);
- }
- 70% {
- transform: scale(1);
- box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
- }
+h1, h2, h3 {
+ margin: var(--padding-xl) 0 var(--padding-default);
+ text-wrap: balance;
+ hyphens: auto;
+ font-size: var(--font-size-xl);
+}
- 100% {
- transform: scale(0.95);
- box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
- }
+h2 {
+ margin: var(--padding-l) 0 var(--padding-default);
+ font-size: var(--font-size-l);
+}
+
+h3 {
+ margin: var(--padding-default) 0 var(--padding-default);
+ font-size: var(--font-size-default);
+}
+
+a:has(button) {
+ text-decoration: none;
}
.card {
@@ -115,7 +128,7 @@ body {
}
.text-white {
- color: var(--color-lightest);
+ color: var(--color-text-invert);
}
.bg-main {
@@ -130,12 +143,16 @@ body {
background-color: var(--color-main-dark);
}
+.bg-main-darkest {
+ background-color: var(--color-main-darkest);
+}
+
.bg-main-dark-hover:hover {
background-color: var(--color-main-dark);
}
.gap-default {
- gap: 1rem;
+ gap: var(--padding-default);
}
.bg-blue {
@@ -147,13 +164,13 @@ body {
}
.padding {
- gap: 1rem;
+ gap: var(--padding-default);
padding: var(--padding-default);
}
.padding-small {
- gap: 1rem;
- padding: var(--padding-small);
+ gap: var(--padding-default);
+ padding: var(--padding-s);
}
.roboto-condensed {
@@ -170,5 +187,5 @@ body {
.grow {
flex-grow: 1;
- height: 10px;
+ height: var(--padding-s);
}
\ No newline at end of file
diff --git a/app/assets/styles/header.css b/app/assets/styles/header.css
index 6732374..101693a 100755
--- a/app/assets/styles/header.css
+++ b/app/assets/styles/header.css
@@ -2,20 +2,40 @@
position: sticky;
top: 0;
z-index: 100;
- background: var(--color-main-darkest);
display: flex;
align-items: center;
- gap: 1rem;
+ gap: var(--padding-default);
padding: var(--padding-default);
+ &:not(.lp) {
+ background: var(--color-main-darkest);
+ }
+
+ &.lp {
+ position: absolute;
+ background: rgba(0,0,0,.5);
+ backdrop-filter: blur(10px);
+ mask: linear-gradient(to top, transparent, black 30%);
+ width: 100%;
+ max-width: var(--page-max-width);
+ top: 0;
+ padding-bottom: var(--padding-xxl);
+ }
+
& .logo {
height: 40px;
}
+ & .burger-button {
+ all: unset;
+ color: var(--color-lightest);
+ }
+
& header {
display: flex;
align-items: center;
justify-content: space-between;
+ width: 100%;
font-weight: bold;
& a {
@@ -26,7 +46,7 @@
& .header-text {
display: flex;
align-items: center;
- gap: 1rem;
+ gap: var(--padding-default);
& > div {
display: flex;
@@ -34,69 +54,35 @@
}
& .big {
- font-size: 1.5em;
+ font-size: var(--font-size-xl);
}
& .small {
- font-size: .8em;
+ font-size: var(--font-size-s);
font-weight: 100;
}
}
+ }
- & input[type="checkbox"] {
- display: none;
+ &:not(.lp) {
+ &:after, &:before {
+ content: '';
+ display: block;
+ position: absolute;
+ bottom: calc(-1 * var(--radius-border));
+ background: var(--color-blue-darkest);
+ width: var(--radius-border);
+ height: var(--radius-border);
}
- & input[type="checkbox"]:checked + nav {
- translate: 0;
- }
-
- & nav,
- & ul {
- gap: 1em;
- }
-
- & nav {
- position: fixed;
- padding: var(--padding-default);
- translate: 100% 0;
- width: 100vw;
+ &:after {
right: 0;
- top: 0;
- height: 100dvh;
- transition: 150ms ease-in-out;
- background: var(--color-lightest);
- font-size: 2em;
- align-items: end;
- z-index: 100;
+ mask: radial-gradient(var(--radius-border) at 0 100%,#0000 98%,#000);
}
- & ul {
- width: 100%;
- align-items: center;
- & li {
- list-style: none;
- }
+ &:before {
+ left: 0;
+ mask: radial-gradient(var(--radius-border) at 100% 100%,#0000 98%,#000);
}
}
-
- &:after, &:before {
- content: '';
- display: block;
- position: absolute;
- bottom: calc(-1 * var(--radius-border));
- background: var(--color-blue-darkest);
- width: var(--radius-border);
- height: var(--radius-border);
- }
-
- &:after {
- right: 0;
- mask: radial-gradient(var(--radius-border) at 0 100%,#0000 98%,#000);
- }
-
- &:before {
- left: 0;
- mask: radial-gradient(var(--radius-border) at 100% 100%,#0000 98%,#000);
- }
}
\ No newline at end of file
diff --git a/app/assets/styles/landingpage.css b/app/assets/styles/landingpage.css
new file mode 100644
index 0000000..9a6f3c6
--- /dev/null
+++ b/app/assets/styles/landingpage.css
@@ -0,0 +1,40 @@
+.home-hero {
+ background-image: linear-gradient(rgba(0,0,0,0.4), rgba(0,0,0,0.6)), url("/img/hero-image.webp"); /* single color gradient for dark layer over image */
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: cover;
+ color: var(--color-text-invert);
+ text-align: center;
+ height: 100vh;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+
+ button {
+ margin: var(--padding-xxl) auto;
+ }
+
+ .text {
+ padding: var(--padding-default);
+ }
+
+ h1 {
+ font-size: var(--font-size-xxl);
+ }
+}
+
+.home-text {
+ padding: var(--padding-xxl) var(--padding-default);
+ text-align: center;
+
+ & h3:has(+ .padding) {
+ margin-bottom: 0;
+ }
+}
+
+.timeline {
+ display: flex;
+ flex-direction: column;
+ gap: var(--padding-default);
+}
+
diff --git a/app/assets/styles/navigation.css b/app/assets/styles/navigation.css
new file mode 100644
index 0000000..2b12356
--- /dev/null
+++ b/app/assets/styles/navigation.css
@@ -0,0 +1,69 @@
+.Navigation {
+ position: fixed;
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ z-index: 5000;
+ width: 100vw;
+ height: 100dvh;
+ right: 0;
+ top: 0;
+ transition: 150ms ease-in-out;
+ pointer-events: none;
+
+ &.open {
+ pointer-events: all;
+ background: rgba(0, 0, 0, .5);
+
+ & nav {
+ translate: -1rem 0;
+ }
+ }
+
+ nav {
+ background: var(--color-lightest);
+ align-items: end;
+ box-shadow: var(--box-shadow-z2);
+ padding: var(--padding-default);
+ height: calc(100% - var(--padding-xxl));
+ width: 70%;
+ translate: 100% 0;
+ transition: 150ms ease-in-out;
+ border-radius: var(--radius-default);
+ }
+
+ & button {
+ justify-self: flex-end;
+ font-size: var(--font-size-xl);
+ }
+
+ & ul {
+ width: 100%;
+ align-items: flex-start;
+ font-size: var(--font-size-l);
+ gap: var(--padding-default);
+
+ & li {
+ list-style: none;
+ width: 100%;
+
+ & a {
+ text-decoration: none;
+ display: flex;
+ align-items: center;
+ gap: var(--padding-default);
+ color: var(--color-middle);
+ border-radius: var(--radius-default);
+ padding: var(--padding-xs) var(--padding-s);
+ transition: var(--transition-default);
+ background: transparent;
+ cursor: pointer;
+
+ &.active {
+ background: var(--color-main-light);
+ color: var(--color-main-dark);
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/assets/styles/page.css b/app/assets/styles/page.css
index d621995..7dd7b75 100644
--- a/app/assets/styles/page.css
+++ b/app/assets/styles/page.css
@@ -49,10 +49,18 @@
overflow: hidden;
background: var(--color-lightest);
height: 100%;
+
+ h1:first-of-type,
+ h2:first-of-type,
+ h3:first-of-type,
+ p:first-of-type,
+ figure:first-of-type {
+ margin-top: 0;
+ }
}
.content-text {
- padding: var(--padding-large) var(--padding-default) var(--padding-default);
+ padding: var(--padding-xl) var(--padding-default) 0;
color: var(--color-darkest);
text-align: center;
}
@@ -67,6 +75,6 @@
}
.Legal {
- padding: var(--padding-large) var(--padding-default);
+ padding: var(--padding-l) var(--padding-default);
color: var(--color-darkest);
}
\ No newline at end of file
diff --git a/app/assets/styles/priceCard.css b/app/assets/styles/priceCard.css
index 4abf44e..8052435 100755
--- a/app/assets/styles/priceCard.css
+++ b/app/assets/styles/priceCard.css
@@ -2,7 +2,7 @@
position: relative;
width: 100%;
color: var(--color-darkest);
- border-bottom: 1px solid var(--color-light);
+ border-bottom: 1px dashed var(--color-light);
.bottom {
position: absolute;
@@ -15,7 +15,7 @@
& > * {
flex-grow: 1;
color: var(--color-lightest);
- font-size: 2rem;
+ font-size: var(--font-size-xl);
display: flex;
align-items: center;
@@ -26,13 +26,13 @@
& .bg-edit {
background: var(--color-main-dark);
- padding: 2rem;
+ padding: var(--padding-xl);
text-align: left;
}
& .bg-delete {
background: var(--color-error);
- padding: 2rem;
+ padding: var(--padding-xl);
text-align: right;
justify-content: flex-end;
}
@@ -42,7 +42,7 @@
position: relative;
background: var(--color-lightest);
z-index: 2;
- gap: 1rem;
+ gap: var(--padding-default);
padding: var(--padding-default);
&.animated {
@@ -56,14 +56,14 @@
color: var(--color-darkest);
& .icon {
- font-size: 1rem;
+ font-size: var(--font-size-default);
cursor: pointer;
}
}
& .name-price {
display: flex;
- gap: .5rem;
+ gap: var(--padding-xs);
& > span:nth-child(1) {
font-weight: bold;
@@ -75,7 +75,7 @@
& > span:nth-child(2)::before {
content: '•';
- margin-right: .5rem;
+ margin-right: var(--padding-xs);
color: var(--color-middle);
}
}
@@ -84,19 +84,19 @@
display: flex;
flex-direction: row;
width: 100%;
- gap: 1rem;
+ gap: var(--padding-default);
justify-content: space-between;
& > .info {
flex-grow: 0;
align-items: center;
- gap: .25rem;
+ gap: var(--padding-xxs);
font-weight: bold;
& > .price {
display: flex;
align-items: center;
- gap: .5rem;
+ gap: var(--padding-xs);
& > .icon {
color: var(--color-main-dark);
@@ -104,7 +104,7 @@
}
& > .pro {
- font-size: .6rem;
+ font-size: var(--font-size-xs);
color: var(--color-middle);
font-weight: lighter;
}
diff --git a/app/assets/styles/timelineCard.css b/app/assets/styles/timelineCard.css
new file mode 100644
index 0000000..700261a
--- /dev/null
+++ b/app/assets/styles/timelineCard.css
@@ -0,0 +1,28 @@
+.TimelineCard {
+ display: flex;
+ align-items: center;
+ gap: var(--padding-default);
+ border: 1px solid var(--color-light);
+ border-radius: var(--radius-default);
+ padding: var(--padding-xs);
+
+ & > .icon {
+ flex: 0 0 25%;
+ font-size: var(--font-size-xxl);
+ color: var(--color-main-dark);
+ }
+
+ & .text {
+ text-align: left;
+ flex-grow: 1;
+ }
+
+ & .state {
+ --color: var(--color-darkest);
+ display: flex;
+ align-items: center;
+ gap: var(--padding-xxs);
+ margin-top: var(--padding-s);
+ color: var(--color);
+ }
+}
\ No newline at end of file
diff --git a/app/assets/styles/toolbar.css b/app/assets/styles/toolbar.css
index 7a39e32..d78e9f7 100755
--- a/app/assets/styles/toolbar.css
+++ b/app/assets/styles/toolbar.css
@@ -8,7 +8,6 @@
box-shadow: var(--box-shadow-upper);
& > .Button {
- --padding: 1rem;
- font-size: 1rem;
+ font-size: var(--font-size-default);
}
}
\ No newline at end of file
diff --git a/app/components/Pp/Footer.vue b/app/components/Pp/Footer.vue
index 4d57be6..183fbaf 100755
--- a/app/components/Pp/Footer.vue
+++ b/app/components/Pp/Footer.vue
@@ -9,7 +9,6 @@
+ ProPapier ist ein Gemeinschaftsprojekt von webertoire und webfussel
+ © 2025 by webfussel, webertoire
diff --git a/app/components/Pp/Form/TextField.vue b/app/components/Pp/Form/TextField.vue
index 0c4f803..4e84828 100755
--- a/app/components/Pp/Form/TextField.vue
+++ b/app/components/Pp/Form/TextField.vue
@@ -1,9 +1,11 @@
@@ -11,12 +13,13 @@
diff --git a/app/components/Pp/Navigation.vue b/app/components/Pp/Navigation.vue
new file mode 100644
index 0000000..9e88fb8
--- /dev/null
+++ b/app/components/Pp/Navigation.vue
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+ {{ page.label }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/components/Pp/PriceCard.vue b/app/components/Pp/PriceCard.vue
index 72acf14..8f9280d 100755
--- a/app/components/Pp/PriceCard.vue
+++ b/app/components/Pp/PriceCard.vue
@@ -1,5 +1,5 @@
-
+
@@ -13,7 +13,7 @@
class="top flex-col"
:class="{ 'animated' : !isSwiping }"
:style="{ left }"
- @click="update"
+ @click="cardClick"
>
@@ -58,11 +58,11 @@
\ No newline at end of file
diff --git a/app/composables/navigation.ts b/app/composables/navigation.ts
new file mode 100644
index 0000000..e54c6f6
--- /dev/null
+++ b/app/composables/navigation.ts
@@ -0,0 +1,24 @@
+import { ref } from 'vue'
+
+const isNavigationVisible = ref(false)
+
+export const useNavigation = () => {
+ const toggleNavigation = () => {
+ isNavigationVisible.value = !isNavigationVisible.value
+ }
+
+ const showNavigation = () => {
+ isNavigationVisible.value = true
+ }
+
+ const hideNavigation = () => {
+ isNavigationVisible.value = false
+ }
+
+ return {
+ isNavigationVisible,
+ toggleNavigation,
+ showNavigation,
+ hideNavigation
+ }
+}
\ No newline at end of file
diff --git a/app/layouts/default.vue b/app/layouts/default.vue
new file mode 100755
index 0000000..cbd7b6c
--- /dev/null
+++ b/app/layouts/default.vue
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/layouts/landingpage.vue b/app/layouts/landingpage.vue
new file mode 100644
index 0000000..3c91317
--- /dev/null
+++ b/app/layouts/landingpage.vue
@@ -0,0 +1,11 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/pages/index.vue b/app/pages/index.vue
old mode 100755
new mode 100644
index a492a64..a99aa5f
--- a/app/pages/index.vue
+++ b/app/pages/index.vue
@@ -1,154 +1,97 @@
-
-
-
-
-
-
-
Mit ProPapier Preise vergleichen und sparen
-
-
- sort(index)" :class="{ 'active': button.active }">
- {{ button.label }}
-
-
-
-
- Du hast noch keinerlei Einträge angelegt.
- Aber das ist gar nicht schlimm!
- Tippe einfach unten auf "+ Hinzufügen" und leg los.
-
-
-
-
-
- Hinzufügen
-
-
-
-
+
+
+
+
+ Du zahlst zuviel für's Papier?
+
+
+ Preise vergleichen
+
+
+ Mit ProPapier Preise vergleichen und sparen.
+
+
+
+
+
+ Mit ProPapier vergleichst du schnell & unkompliziert Preise für Klopapier und sparst so bares Geld.
+
+
+
+
+ Wir haben noch viel vor!
+
+
+ Für ProPapier sind über die nächste Zeit noch einige weitere Features geplant.
+
+
+
+
+ {
+ icon: 'uil:user',
+ title: 'Optionale Accounts',
+ description: 'Zur Synchronisierung auf mehreren Geräten',
+ state: {
+ value: 'planned',
+ }
+ },
+ {
+ icon: 'uil:cog',
+ title: 'Personalisierung',
+ description: 'Persönliche Präferenzen zur Wortwahl, Standardsortierung und mehr',
+ state: {
+ value: 'planned',
+ }
+ },
+ {
+ icon: 'uil:vector-square',
+ title: 'm² Preise',
+ description: 'Quadratmeterpreise für noch genauere Vergleiche',
+ state: {
+ value: 'planned',
+ }
+ },
+]
+
\ No newline at end of file
diff --git a/app/pages/privacy.vue b/app/pages/privacy.vue
index d395b3e..fc8b2b6 100644
--- a/app/pages/privacy.vue
+++ b/app/pages/privacy.vue
@@ -4,10 +4,7 @@
Datenschutzerklärung
- Wir senden keinerlei Daten an Drittanbieter.
-
-
- Wir verwerten keinerlei Daten.
+ Wir sammeln anonyme Daten zum Erstellen von Statistiken über die Anzahl der Besuche auf unserer Seite, um herauszufinden, wie viel Pflegeaufwand und Rechenleistung benötigt wird.
Alle persistierten Daten befinden sich ausschließlich auf Ihrem Endgerät im sogenannten "localStorage" und werden ausschließlich auf Ihrem Gerät verarbeitet.
diff --git a/app/pages/other.vue b/app/pages/rechner.vue
old mode 100644
new mode 100755
similarity index 69%
rename from app/pages/other.vue
rename to app/pages/rechner.vue
index bd60632..23b7153
--- a/app/pages/other.vue
+++ b/app/pages/rechner.vue
@@ -1,10 +1,10 @@
-
+
-
sort(index)" :class="{ 'active': button.active }">
{{ button.label }}
-
+
+
+ Du hast noch keinerlei Einträge angelegt.
+ Aber das ist gar nicht schlimm!
+ Tippe einfach unten auf "+ Hinzufügen" und leg los.
+
-
-
- Neu sortieren
-
-
Hinzufügen
@@ -57,22 +46,19 @@