diff --git a/apps/operator/components/NewTenantModal.vue b/apps/operator/components/NewTenantModal.vue new file mode 100644 index 0000000..26e4602 --- /dev/null +++ b/apps/operator/components/NewTenantModal.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/apps/operator/pages/tenants/index.vue b/apps/operator/pages/tenants/index.vue index af0e371..1af703f 100644 --- a/apps/operator/pages/tenants/index.vue +++ b/apps/operator/pages/tenants/index.vue @@ -7,6 +7,16 @@ const { data: tenants, refresh, pending } = await useFetch('/api/tenan const search = ref('') const statusFilter = ref<'all' | TenantStatus>('all') +const createOpen = ref(false) + +async function onCreated(tenant: Tenant) { + createOpen.value = false + // Refresh the list so the new row appears immediately, then jump into the + // detail page — that's where the operator will configure domains, billing, + // and trigger provisioning. + await refresh() + await navigateTo(`/tenants/${tenant.slug}`) +} const filtered = computed(() => { const q = search.value.trim().toLowerCase() @@ -50,13 +60,15 @@ function navTo(t: Tenant) { Refresh - + New tenant + +