Files
speckle-server/packages/frontend-2/components/workspace/plan/LimitReachedDialog.vue
T
2025-04-18 11:02:34 +02:00

66 lines
1.9 KiB
Vue

<template>
<LayoutDialog
v-model:open="isOpen"
:is-transparent="!condensed"
max-width="xs"
fullscreen="none"
:buttons="buttons"
:hide-closer="preventClose"
:prevent-close-on-click-outside="preventClose"
:title="condensed ? 'Plan limit reached' : undefined"
closer-classes="hover:!bg-transparent !text-white hover:opacity-65"
>
<div class="flex flex-col">
<div v-if="!condensed" class="relative bg-primary h-32 md:h-48 select-none">
<NuxtImg
src="/images/workspace/cubes.png"
alt="Speckle cubes"
class="w-full object-cover h-full"
/>
<div class="absolute top-0 left-0 w-full h-full limit-reached-gradient" />
<div class="absolute top-0 left-0 w-full h-full z-10">
<div class="flex flex-col justify-between h-full px-5 py-4">
<NuxtImg src="/images/logo.png" alt="Speckle logo" class="h-8 w-8" />
<h3 class="text-white limit-reached-text-shadow text-base">
Plan limit reached
</h3>
</div>
</div>
</div>
<div
class="w-full bg-foundation-page flex flex-col"
:class="condensed ? '' : 'p-6'"
>
<div class="flex flex-col gap-y-4 select-none">
<h4 v-if="subtitle" class="text-heading-sm text-foreground">
{{ subtitle }}
</h4>
<slot />
</div>
</div>
</div>
</LayoutDialog>
</template>
<script setup lang="ts">
import { LayoutDialog } from '@speckle/ui-components'
import type { LayoutDialogButton } from '@speckle/ui-components'
const isOpen = defineModel<boolean>('open', { required: true })
defineProps<{
subtitle?: string
buttons?: LayoutDialogButton[]
preventClose?: boolean
condensed?: boolean
}>()
</script>
<style scoped>
.limit-reached-gradient {
background: linear-gradient(319.64deg, rgb(5 52 255 / 0%) 34.17%, #010c3d 100%);
}
</style>