Files
speckle-server/packages/frontend-2/components/workspace/plan/LimitReachedDialog.vue
T
andrewwallacespeckle 4fd7f73094 Updated dialog style
2025-04-02 09:44:11 +02:00

59 lines
2.1 KiB
Vue

<template>
<LayoutDialog v-model:open="isOpen" is-transparent max-width="md" fullscreen="none">
<div class="flex flex-col md:flex-row items-stretch">
<div class="relative w-full md:w-1/2 bg-primary h-40 md:h-full">
<NuxtImg
src="/images/workspace/cubes.png"
alt="Speckle cubes"
class="w-full h-full object-cover"
/>
<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 md:w-1/2 bg-foundation p-6 flex flex-col">
<div class="flex flex-col gap-y-4">
<h4 class="text-heading-sm text-foreground">Upgrade your plan</h4>
<p class="text-foreground">
The {{ props.limit }} {{ props.limitType }} limit for this workspace has
been reached. Upgrade the workspace plan to create or move more projects.
</p>
</div>
<div class="flex justify-end gap-x-2 mt-8 md:mt-auto">
<FormButton color="subtle" @click="isOpen = false">Dismiss</FormButton>
<FormButton @click="navigateTo(settingsWorkspaceRoutes.billing)">
See plans
</FormButton>
</div>
</div>
</div>
</LayoutDialog>
</template>
<script setup lang="ts">
import type { Nullable } from '@speckle/shared'
import { LayoutDialog } from '@speckle/ui-components'
import { settingsWorkspaceRoutes } from '~/lib/common/helpers/route'
const isOpen = defineModel<boolean>('open', { required: true })
const props = defineProps<{
limit: number
limitType: Nullable<'project' | 'model'>
}>()
</script>
<style scoped>
.limit-reached-gradient {
background: linear-gradient(319.64deg, rgb(5 52 255 / 0%) 34.17%, #010c3d 100%);
}
</style>