import { computed } from 'vue' import { useProFeatures } from '@/composables/useProFeatures' type LicenseInfo = { status?: string plan?: string } export function useProAccess() { const pro = useProFeatures() const isLoaded = computed(() => pro.loaded.value) const isLitePlan = computed(() => pro.plan.value === 'lite') const isProInstalled = computed(() => { if (typeof window === 'undefined') { return false } const scriptsLoaded = (window as { ivyFormsProScripts?: Record }).ivyFormsProScripts !== undefined || (window as { IvyFormsProScripts?: Record }).IvyFormsProScripts !== undefined return scriptsLoaded && !!window.IvyForms?.pro }) const isLicenseActive = computed(() => { if (!isProInstalled.value) { return false } const license = pro.license.value as LicenseInfo | null if (!license) { return false } return license.status === 'valid' && license.plan !== 'lite' }) // Canonical Pro gate for feature access in the admin UI. const isProActivated = computed( () => isLoaded.value && isProInstalled.value && isLicenseActive.value && !isLitePlan.value, ) const canUseFeature = (featureSlug: string) => { return isProActivated.value && pro.hasFeature(featureSlug) } return { isLoaded, isLitePlan, isProInstalled, isLicenseActive, isProActivated, canUseFeature, } }