ADD: new offers
New offers (wip)
This commit is contained in:
parent
12dd23bdf9
commit
ae6edded6d
1 changed files with 55 additions and 29 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue