diff --git a/index.md b/index.md
index d8372ef..b6b7f1b 100644
--- a/index.md
+++ b/index.md
@@ -10,17 +10,76 @@ Wir bieten Bedürftigen Zugang in die digitale Welt
Wie du mitmachen kannst
Wenn du Lust hast unseren Verein zu unterstützen, dann komm' vorbei und bastel mit! Oder spende Geld, mit dem wir unsere anfallenden Kosten bezahlen!
+
Computer bekommen
+
Computer spenden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Zeit spenden
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Geld spenden
+
+
+
+
+
+
+
+
diff --git a/styles/components/_actions.scss b/styles/components/_actions.scss
index b7087d8..720aa33 100644
--- a/styles/components/_actions.scss
+++ b/styles/components/_actions.scss
@@ -1,4 +1,5 @@
@use '../lib/colors';
+@use '../lib/motion';
@use '../lib/layout';
// Actions are another module that is present on the home page. It shows a small
@@ -22,6 +23,8 @@
}
> a {
+ display: flex;
+ flex-direction: column-reverse;
margin: layout.$large-gap 0;
padding: layout.$large-gap;
background: colors.$gray-50;
@@ -33,6 +36,16 @@
margin: 0;
text-transform: uppercase;
}
+
+ > svg {
+ align-self: center;
+ margin-bottom: layout.$normal-gap;
+ height: 10rem;
+ }
+
+ &:hover {
+ @extend %action-icon-hover;
+ }
}
@media screen and (min-width: layout.$breakpoint) {
@@ -62,3 +75,110 @@
}
}
}
+
+.action-icon {
+ overflow: visible;
+ fill: colors.$main-text;
+ // This seems to prevent jittering in Firefox:
+ pointer-events: none;
+
+ &:hover {
+ @extend %action-icon-hover;
+ }
+
+ .emphasis-gradient > stop {
+ stop-color: colors.$blue-500;
+ transition: motion.$gentle stop-color;
+ }
+
+ .emphasis {
+ transition: motion.$gentle transform;
+
+ &.heart-left {
+ transform-origin: top left;
+ }
+
+ &.heart-right {
+ transform-origin: top right;
+ }
+
+ &.coin {
+ transform-origin: 58% 39%;
+ }
+ }
+}
+
+%action-icon-hover {
+ .emphasis-gradient {
+ @keyframes action-icon-emphasis-gradient-1 {
+ 0% { stop-color: colors.$blue-500; }
+ 40% { stop-color: colors.$yellow-500; }
+ 80% { stop-color: colors.$teal-500; }
+ }
+
+ @keyframes action-icon-emphasis-gradient-2 {
+ 0% { stop-color: colors.$blue-500; }
+ 20% { stop-color: colors.$blue-800; }
+ 60% { stop-color: colors.$yellow-500; }
+ 100% { stop-color: colors.$teal-500; }
+ }
+
+ @for $i from 1 through 2 {
+ > stop:nth-of-type(#{$i}) {
+ stop-color: colors.$teal-500;
+ animation:
+ motion.$prominent 0s 1 normal backwards running
+ action-icon-emphasis-gradient-#{$i};
+ }
+ }
+ }
+
+ .heart-left {
+ $final-transformation:
+ translateX(-0.8rem) translateY(1.4rem) scale(1.5) rotate(-25deg);
+
+ @keyframes action-icon-heart-left {
+ 0% { transform: none; }
+ 50% {
+ transform:
+ translateX(0.2rem) translateY(0.8rem) scale(1.2) rotate(-10deg);
+ }
+ 100% { transform: $final-transformation; }
+ }
+
+ transform: $final-transformation;
+ animation:
+ motion.$gentle 0s 1 normal backwards running action-icon-heart-left;
+ }
+
+ .heart-right {
+ $final-transformation:
+ translateX(1.4rem) translateY(-0.1rem) scale(1.6) rotate(15deg);
+
+ @keyframes action-icon-heart-right {
+ 0% { transform: none; }
+ 50% {
+ transform:
+ translateX(1.3rem) translateY(0.8rem) scale(1.4) rotate(30deg);
+ }
+ 100% { transform: $final-transformation; }
+ }
+
+ transform: $final-transformation;
+ animation:
+ motion.$gentle 0s 1 normal backwards running action-icon-heart-right;
+ }
+
+ .coin {
+ $final-transformation: scale(0.8);
+
+ @keyframes action-icon-coin {
+ 0% { transform: none; }
+ 50% { transform: scale(1.1); }
+ 100% { transform: $final-transformation; }
+ }
+
+ transform: $final-transformation;
+ animation: motion.$gentle 0s 1 normal backwards running action-icon-coin;
+ }
+}
diff --git a/styles/lib/_motion.scss b/styles/lib/_motion.scss
new file mode 100644
index 0000000..208d645
--- /dev/null
+++ b/styles/lib/_motion.scss
@@ -0,0 +1,3 @@
+$subtle: 0.1s cubic-bezier(0.56, 0.03, 0.35, 0.9);
+$gentle: 0.2s cubic-bezier(1, 0.11, 0.41, 0.69);
+$prominent: 0.7s cubic-bezier(.45,.16,.38,.7);