ADD: new offers

New offers (wip)
This commit is contained in:
webfussel 2025-02-23 09:52:32 +01:00
parent 12dd23bdf9
commit ae6edded6d

View file

@ -5,12 +5,11 @@
<p class="margin-top">Hinter meinen Angeboten gibt es <span class="highlight">keinerlei Abos oder versteckte Kosten</span>. <p class="margin-top">Hinter meinen Angeboten gibt es <span class="highlight">keinerlei Abos oder versteckte Kosten</span>.
Aus Transparenzgründen sei aber gesagt, dass sich <span class="highlight">*alle Preise zzgl. 19 % Umsatzsteuer</span>. verstehen.</p> Aus Transparenzgründen sei aber gesagt, dass sich <span class="highlight">*alle Preise zzgl. 19 % Umsatzsteuer</span>. verstehen.</p>
<div class="service-list margin-top gap-default"> <div class="service-list margin-top gap-default">
<article v-for="service in services" class="z-2 card flex-col gap-default"> <article v-for="service in oneOff" class="z-2 card flex-col gap-default">
<h3 class="flex-col gap-default"> <h3 class="flex-col gap-default">
<span>{{service.title}}</span> <span>{{service.title}}</span>
<span class="highlight">{{'pre' in service.price ? `${service.price.pre} ` : ''}}{{service.price.value}} * {{service.price.period}}</span> <span class="highlight">{{'pre' in service.price ? `${service.price.pre} ` : ''}}{{service.price.value}} * {{service.price.period}}</span>
</h3> </h3>
<span class="chip">{{service.availability}}</span>
<p>{{service.smallClaim}}</p> <p>{{service.smallClaim}}</p>
<Button :href="service.link" class="cta" aria-label="Zur externen Seite von zur Terminbuchung"> <Button :href="service.link" class="cta" aria-label="Zur externen Seite von zur Terminbuchung">
{{ service.button }} {{ service.button }}
@ -47,23 +46,31 @@
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import Person from '~/components/Person.vue'
const slots : number = 0 const slots : number = 0
const slotsLabel = `${slots} ${slots === 1 ? `Slot` : `Slots`} frei` const slotsLabel = `${slots} ${slots === 1 ? `Slot` : `Slots`} frei`
const freeFromDate = new Date(2025, 6, 1) type Service = {
const intl = new Intl.DateTimeFormat('de-DE', { day: '2-digit', month: '2-digit', year: 'numeric'}) title: string
const readableDate = intl.format(freeFromDate) price: {
pre ?: string
value: number
period: string
}
smallClaim: string
icon: string
button: string
link: string
list: string[]
}
const services = [
const oneOff : Service[] = [
{ {
title: 'Quick Check', title: 'Quick Check',
price: { price: {
value: 149, value: 149,
period: '/ Einmalig', period: '/ Einmalig',
}, },
availability: 'Frei',
smallClaim: 'Du hast eine Homepage und willst mal drüber schauen lassen?', smallClaim: 'Du hast eine Homepage und willst mal drüber schauen lassen?',
icon: 'magnifying-glass', icon: 'magnifying-glass',
button: 'Jetzt untersuchen', button: 'Jetzt untersuchen',
@ -82,7 +89,6 @@ const services = [
value: 999, value: 999,
period: '/ Gestaffelt' period: '/ Gestaffelt'
}, },
availability: slotsLabel,
smallClaim: 'Umsetzung deiner Vision. Von einzelnen Tickets bis hin zu kompletten Anwendungen.', smallClaim: 'Umsetzung deiner Vision. Von einzelnen Tickets bis hin zu kompletten Anwendungen.',
icon: 'trend-up', icon: 'trend-up',
button: 'Jetzt durchstarten', button: 'Jetzt durchstarten',
@ -94,26 +100,46 @@ const services = [
'Nur 50 % Projektpreis als Anzahlung', 'Nur 50 % Projektpreis als Anzahlung',
'Gestaffelte Abrechnung nach Milestones' 'Gestaffelte Abrechnung nach Milestones'
], ],
}, {
title: 'Stundenbuchung',
availability: `Frei ab ${readableDate}`,
price: {
value: 105,
period: '/ Stunde',
}, },
smallClaim: 'Du brauchst einfach Unterstützung im Team, bis sich der Trubel legt?', ]
icon: 'timer',
button: 'Jetzt buchen',
const flatrate : Service[] =
[
{
title: 'Casual',
price: {
value: 4950,
period: 'Monat',
},
smallClaim: 'Bei dir fällt immer mal was an und du willst nicht jedes mal neu buchen?',
icon: '',
button: 'Jetzt klar machen',
link: 'https://tidycal.com/webfussel/hourly-booking', link: 'https://tidycal.com/webfussel/hourly-booking',
list: [ list: [
'Flexible Aufgabenverteilung', '1 Ticket gleichzeitig',
'Arbeiten nach agilen Prinzipien', '72 h Reaktionszeit',
'Monatliche Abrechnung', 'Meetings alle 2 Wochen',
'Kündigungsfrist von einer Woche', 'Zur Mitte des Monats kündbar',
'Flexible Buchung ab 80 Stunden', ],
}, {
title: 'Gold-Fussel',
price: {
value: 8450,
period: 'Monat',
},
smallClaim: 'Du hast häufig mehrere Aufgaben zu verteilen?',
icon: '',
button: 'Jetzt Gold schürfen',
link: 'https://tidycal.com/webfussel/hourly-booking',
list: [
'3 Tickets gleichzeitig',
'48 h Reaktionszeit',
'Wöchentliche Meetings',
'Zur Mitte des Monats kündbar',
], ],
} }
] ]
const shuffle = <T>(unshuffled : T[]) => unshuffled const shuffle = <T>(unshuffled : T[]) => unshuffled