feat: Add navigation link to return to creator page in PaymentCompleted and PaymentFailed views, update styles for improved layout

This commit is contained in:
2025-04-24 14:09:15 -04:00
parent 3a6ee307cd
commit 7d0aea75d8
2 changed files with 89 additions and 44 deletions

View File

@@ -1,6 +1,13 @@
<template> <template>
<div class="container"> <div class="container">
<div class="card"> <div class="card">
<!-- Navigation Link at the top -->
<div class="navigation-link">
<button class="link-button" @click="goBack()">
<v-icon>mdi-arrow-left</v-icon>
{{ t('returnToCreator') }}
</button>
</div>
<h1> <h1>
{{ t('title') }} {{ t('title') }}
@@ -28,19 +35,8 @@
<p> <p>
{{ t('receipt') }} {{ t('receipt') }}
</p> </p>
<!-- Continue Button -->
<div class="card-actions">
<button
class="action-button"
@click="goBack()">
{{ t('continue') }}
</button>
</div>
</div> </div>
</div> </div>
</template> </template>
<script setup> <script setup>
@@ -66,28 +62,31 @@ function goBack() {
"message": "Your payment has been processed successfully.", "message": "Your payment has been processed successfully.",
"usernameDefault": "the creator", "usernameDefault": "the creator",
"receipt": "A receipt has been sent to your email.", "receipt": "A receipt has been sent to your email.",
"continue": "Continue to" "continue": "Continue to",
"returnToCreator": "Return to creator page"
}, },
"fr": { "fr": {
"title": "Paiement réussi !", "title": "Paiement réussi !",
"message": "Votre paiement a été traité avec succès.", "message": "Votre paiement a été traité avec succès.",
"usernameDefault": "le créateur", "usernameDefault": "le créateur",
"receipt": "Un reçu a été envoyé à votre email.", "receipt": "Un reçu a été envoyé à votre email.",
"continue": "Continuer vers" "continue": "Continuer vers",
"returnToCreator": "Retourner à la page du créateur"
}, },
"es": { "es": {
"title": "¡Pago exitoso!", "title": "¡Pago exitoso!",
"message": "Su pago ha sido procesado con éxito.", "message": "Su pago ha sido procesado con éxito.",
"usernameDefault": "el creador", "usernameDefault": "el creador",
"receipt": "Se ha enviado un recibo a su correo electrónico.", "receipt": "Se ha enviado un recibo a su correo electrónico.",
"continue": "Continuar a" "continue": "Continuar a",
"returnToCreator": "Volver a la página del creador"
} }
} }
</i18n> </i18n>
<style scoped> <style scoped>
.container { .container {
@apply min-h-screen; @apply p-5;
@apply flex items-center justify-center; @apply flex items-center justify-center;
} }
@@ -95,29 +94,49 @@ function goBack() {
@apply bg-hSurface text-hOnSurface; @apply bg-hSurface text-hOnSurface;
@apply p-8; @apply p-8;
@apply font-sans; @apply font-sans;
@apply rounded-3xl; @apply rounded-2xl;
@apply shadow-2xl;
@apply relative;
@apply w-full;
@apply max-w-2xl;
} }
.card-actions { .card::before {
@apply flex items-center justify-end; @apply absolute inset-0;
@apply rounded-2xl;
@apply p-[1px];
content: '';
background: linear-gradient(135deg, rgba(64, 64, 64, 1) 0%, rgba(64, 64, 64, 0) 20%, rgba(64, 64, 64, 0.5) 100%);
mask: linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
mask-composite: exclude;
pointer-events: none;
}
.navigation-link {
@apply flex items-center;
@apply mb-6;
}
.link-button {
@apply flex items-center gap-2;
@apply text-hutopyPrimary hover:text-hutopySecondary;
@apply transition-colors;
@apply duration-300;
@apply font-medium;
} }
h1 { h1 {
@apply text-6xl; @apply text-6xl;
@apply font-medium; @apply font-medium;
@apply mb-8; @apply mb-8;
@apply text-center;
} }
p { p {
@apply text-lg; @apply text-lg;
@apply font-medium; @apply font-medium;
@apply mb-8; @apply mb-8;
} @apply text-center;
.action-button {
@apply bg-hPrimary text-hOnPrimary;
@apply p-4 m-4;
@apply text-lg;
@apply rounded-xl;
} }
</style> </style>

View File

@@ -1,13 +1,16 @@
<template> <template>
<div class="container"> <div class="container">
<div class="card"> <div class="card">
<h1>{{ t('title') }}</h1> <!-- Navigation Link at the top -->
<p>{{ t('message') }}</p> <div class="navigation-link">
<div class="card-actions"> <button class="link-button" @click="goBack()">
<button class="action-button" @click="goBack()"> <v-icon>mdi-arrow-left</v-icon>
{{ t('retry') }} {{ t('returnToCreator') }}
</button> </button>
</div> </div>
<h1>{{ t('title') }}</h1>
<p>{{ t('message') }}</p>
</div> </div>
</div> </div>
</template> </template>
@@ -31,54 +34,77 @@ function goBack() {
"en": { "en": {
"title": "Payment Failed", "title": "Payment Failed",
"message": "We couldn't process your payment.", "message": "We couldn't process your payment.",
"retry": "Try Again" "retry": "Try Again",
"returnToCreator": "Return to creator page"
}, },
"fr": { "fr": {
"title": "Échec du paiement", "title": "Échec du paiement",
"message": "Nous n'avons pas pu traiter votre paiement.", "message": "Nous n'avons pas pu traiter votre paiement.",
"retry": "Réessayer" "retry": "Réessayer",
"returnToCreator": "Retourner à la page du créateur"
}, },
"es": { "es": {
"title": "Pago fallido", "title": "Pago fallido",
"message": "No pudimos procesar su pago.", "message": "No pudimos procesar su pago.",
"retry": "Intentar de nuevo" "retry": "Intentar de nuevo",
"returnToCreator": "Volver a la página del creador"
} }
} }
</i18n> </i18n>
<style scoped> <style scoped>
.container { .container {
@apply min-h-screen;
@apply flex items-center justify-center; @apply flex items-center justify-center;
@apply p-5;
} }
.card { .card {
@apply bg-hSurface text-hOnSurface; @apply bg-hSurface text-hOnSurface;
@apply p-8; @apply p-8;
@apply font-sans; @apply font-sans;
@apply rounded-3xl; @apply rounded-2xl;
@apply shadow-2xl;
@apply relative;
@apply w-full;
@apply max-w-2xl;
} }
.card-actions { .card::before {
@apply flex items-center justify-end; content: '';
@apply absolute inset-0;
@apply rounded-2xl;
@apply p-[1px];
background: linear-gradient(135deg, rgba(64, 64, 64, 1) 0%, rgba(64, 64, 64, 0) 20%, rgba(64, 64, 64, 0.5) 100%);
mask: linear-gradient(#fff 0 0) content-box,
linear-gradient(#fff 0 0);
mask-composite: exclude;
pointer-events: none;
}
.navigation-link {
@apply flex items-center;
@apply mb-6;
}
.link-button {
@apply flex items-center gap-2;
@apply text-hutopyPrimary hover:text-hutopySecondary;
@apply transition-colors;
@apply duration-300;
@apply font-medium;
} }
h1 { h1 {
@apply text-6xl; @apply text-6xl;
@apply font-medium; @apply font-medium;
@apply mb-8; @apply mb-8;
@apply text-center;
} }
p { p {
@apply text-lg; @apply text-lg;
@apply font-medium; @apply font-medium;
@apply mb-8; @apply mb-8;
} @apply text-center;
.action-button {
@apply bg-hPrimary text-hOnPrimary;
@apply p-4 m-4;
@apply text-lg;
@apply rounded-xl;
} }
</style> </style>