11<template >
2- <div class =" subscription-required-dialog flex flex-col gap-4 p-6" >
3- <div class =" flex flex-col items-center gap-4 text-center" >
4- <i class =" pi pi-lock text-6xl text-primary-400" />
5- <h2 class =" text-2xl font-bold" >
6- {{ $t('subscription.required.title') }}
7- </h2 >
8- <p class =" text-muted" >
9- {{
10- isPolling
11- ? $t('subscription.required.waitingForSubscription')
12- : $t('subscription.required.message')
13- }}
14- </p >
15- </div >
16-
2+ <div class =" grid h-full grid-cols-5" >
173 <div
18- class =" flex flex- col gap-3 rounded-lg border p-4 dark-theme:bg-charcoal-600 "
4+ class =" relative col-span-2 flex items-center justify-center overflow-hidden "
195 >
20- <SubscriptionBenefits />
6+ <video
7+ autoplay
8+ loop
9+ muted
10+ playsinline
11+ class =" h-full min-w-[125%] object-cover"
12+ style =" margin-left : -20% "
13+ >
14+ <source
15+ src =" /assets/images/cloud-subscription.webm"
16+ type =" video/webm"
17+ />
18+ </video >
2119 </div >
2220
23- <Button
24- :label =" $t('subscription.required.subscribe')"
25- class =" w-full"
26- :loading =" isLoading"
27- :disabled =" isPolling"
28- @click =" handleSubscribe"
29- />
21+ <div class =" col-span-3 flex flex-col p-4" >
22+ <div class =" flex flex-col gap-4" >
23+ <div class =" inline-flex items-center gap-2" >
24+ <div class =" text-sm" >
25+ {{ $t('subscription.required.title') }}
26+ </div >
27+ <TopbarBadges />
28+ </div >
29+
30+ <div class =" mt-4 mb-10 flex items-baseline gap-2" >
31+ <span class =" text-3xl font-bold" >{{ formattedMonthlyPrice }}</span >
32+ <span class =" text-xl" >{{ $t('subscription.perMonth') }}</span >
33+ </div >
34+ </div >
35+
36+ <SubscriptionBenefits class =" text-muted" />
37+
38+ <div class =" mt-10 mb-4 flex flex-col" >
39+ <Button
40+ :label =" $t('subscription.required.subscribe')"
41+ size =" large"
42+ class =" w-full"
43+ :loading =" isLoading"
44+ :disabled =" isPolling"
45+ @click =" handleSubscribe"
46+ />
47+ </div >
48+ </div >
3049 </div >
3150</template >
3251
@@ -35,13 +54,16 @@ import Button from 'primevue/button'
3554import { onBeforeUnmount , ref } from ' vue'
3655
3756import SubscriptionBenefits from ' @/components/common/SubscriptionBenefits.vue'
57+ import TopbarBadges from ' @/components/topbar/TopbarBadges.vue'
3858import { useSubscription } from ' @/composables/auth/useSubscription'
3959
4060const emit = defineEmits <{
4161 close: [subscribed : boolean ]
4262}>()
4363
44- const { subscribe, isActiveSubscription } = useSubscription ()
64+ const { subscribe, isActiveSubscription, formattedMonthlyPrice } =
65+ useSubscription ()
66+
4567const isLoading = ref (false )
4668const isPolling = ref (false )
4769let pollInterval: number | null = null
@@ -62,7 +84,7 @@ const startPollingSubscriptionStatus = () => {
6284 return
6385 }
6486
65- if (isActiveSubscription ) {
87+ if (isActiveSubscription . value ) {
6688 stopPolling ()
6789 emit (' close' , true )
6890 }
@@ -106,3 +128,13 @@ onBeforeUnmount(() => {
106128 stopPolling ()
107129})
108130 </script >
131+
132+ <style scoped>
133+ :deep(.bg-comfy-menu-secondary ) {
134+ background-color : transparent ;
135+ }
136+
137+ :deep(.p-button ) {
138+ color : white ;
139+ }
140+ </style >
0 commit comments