Files
hossein-por-shop/frontend/components/cart/checkout/PaymentPendingModal.vue
T
2025-09-09 10:45:27 +03:30

75 lines
2.8 KiB
Vue

<script setup lang="ts">
// types
type Props = {
isShow: boolean;
};
// props
const props = defineProps<Props>();
const { isShow } = toRefs(props);
// computeds
const visible = computed({
get: () => isShow.value,
set: () => null,
});
</script>
<template>
<DialogRoot v-model:open="visible">
<DialogPortal>
<DialogOverlay
class="bg-black/50 backdrop-blur-sm data-[state=open]:animate-overlay-show fixed inset-0 z-999"
/>
<div
class="fixed inset-0 w-full h-svh z-9999 flex-center"
v-if="visible"
>
<div class="overflow-y-auto max-h-svh absolute left-[50%] py-10 w-fit max-w-[50rem] translate-x-[-50%]">
<DialogContent
class="min-w-[30vw] max-w-[50vw] data-[state=open]:animate-content-show text-black font-iran-yekan-x focus:outline-none z-[100]"
>
<div class="w-full h-[350px] shrink-0 rounded-2xl relative overflow-hidden flex-center">
<div
class="bg-custom-conic size-[200%] absolute -top-1/2 -left-1/2 animate-spin [animation-duration:3s] z-[1]"
></div>
<div
class="shrink-0 p-6 pt-20 z-[2] absolute left-1/2 -translate-x-1/2 top-1/2 -translate-y-1/2 w-[98.8%] h-[98.5%] flex flex-col gap-24 items-center bg-white border shadow-black/10 justify-center border-slate-300 rounded-xl"
>
<NuxtImg
class="aspect-square w-[300px]"
src="/img/heymlz/heymlz-payment-progress.gif"
loading="lazy"
fetch-priority="low"
/>
<div class="-translate-y-28 flex-center gap-3">
<Icon
name="svg-spinners:3-dots-bounce"
size="20"
/>
<span class="text-lg"> در حال انتقال به درگاه پرداخت </span>
</div>
</div>
</div>
</DialogContent>
</div>
</div>
</DialogPortal>
</DialogRoot>
</template>
<style scoped>
.bg-custom-conic {
background-size: 100% 100%;
background-position: 0px 0px, 0px 0px;
background-image: radial-gradient(142% 91% at -6% 90%, #ff000000 1%, #ff000000 99%),
conic-gradient(from 0deg at 50% 50%, var(--color-blue-500) 0%, #ff000000 34%);
}
</style>