diff --git a/ui/src/components/Layout.tsx b/ui/src/components/Layout.tsx index 13835c4..428e92f 100644 --- a/ui/src/components/Layout.tsx +++ b/ui/src/components/Layout.tsx @@ -4,7 +4,7 @@ import { Sidebar, TopBar, } from '@cameleer/design-system'; -import { LayoutDashboard, ShieldCheck, Users, Settings, Shield, Building, ScrollText, Mail } from 'lucide-react'; +import { LayoutDashboard, ShieldCheck, Users, Settings, Shield, Building, ScrollText, Mail, BarChart3, Server, ExternalLink } from 'lucide-react'; import { useQuery } from '@tanstack/react-query'; import { useAuth } from '../auth/useAuth'; import { useScopes } from '../auth/useScopes'; @@ -78,6 +78,7 @@ export function Layout() { color: isActive(location, '/vendor/tenants') && !location.pathname.startsWith('/vendor/tenants/') ? 'var(--amber)' : 'var(--text-muted)' }} onClick={() => navigate('/vendor/tenants')} > + Tenants {vendorTenants?.filter(t => t.status !== 'DELETED').map(t => ( @@ -99,6 +100,7 @@ export function Layout() { color: isActive(location, '/vendor/audit') ? 'var(--amber)' : 'var(--text-muted)' }} onClick={() => navigate('/vendor/audit')} > + Audit Log
navigate('/vendor/certificates')} > + Certificates
navigate('/vendor/metrics')} > + Metrics
navigate('/vendor/infrastructure')} > + Infrastructure
window.open(`${window.location.protocol}//${window.location.hostname}:3002`, '_blank', 'noopener')} > + Logto Console
diff --git a/ui/src/pages/tenant/SsoPage.tsx b/ui/src/pages/tenant/SsoPage.tsx index 3d4ec8e..94e22ac 100644 --- a/ui/src/pages/tenant/SsoPage.tsx +++ b/ui/src/pages/tenant/SsoPage.tsx @@ -185,7 +185,7 @@ export function SsoPage() {

Enterprise SSO

@@ -284,7 +284,7 @@ export function SsoPage() { description="Add an enterprise SSO connection to let your team sign in with their corporate identity provider." action={ } @@ -413,7 +413,7 @@ function CaCertificatesSection() { } /> @@ -447,7 +447,7 @@ function CaCertificatesSection() {
diff --git a/ui/src/pages/tenant/TeamPage.tsx b/ui/src/pages/tenant/TeamPage.tsx index 4d5df35..2289f15 100644 --- a/ui/src/pages/tenant/TeamPage.tsx +++ b/ui/src/pages/tenant/TeamPage.tsx @@ -161,7 +161,7 @@ export function TeamPage() {

Team

@@ -222,7 +222,7 @@ export function TeamPage() { description="Invite colleagues to collaborate on this tenant." action={ } diff --git a/ui/src/pages/tenant/TenantDashboardPage.tsx b/ui/src/pages/tenant/TenantDashboardPage.tsx index 33da9d4..6fde51f 100644 --- a/ui/src/pages/tenant/TenantDashboardPage.tsx +++ b/ui/src/pages/tenant/TenantDashboardPage.tsx @@ -112,7 +112,7 @@ export function TenantDashboardPage() { }} loading={restartServer.isPending} > - + Restart @@ -150,16 +150,16 @@ export function TenantDashboardPage() { variant="secondary" onClick={() => window.open(`/t/${data.slug}/`, '_blank')} > - + Open Server Dashboard )} diff --git a/ui/src/pages/tenant/TenantLicensePage.tsx b/ui/src/pages/tenant/TenantLicensePage.tsx index 66a0dd8..030cf55 100644 --- a/ui/src/pages/tenant/TenantLicensePage.tsx +++ b/ui/src/pages/tenant/TenantLicensePage.tsx @@ -132,12 +132,12 @@ export function TenantLicensePage() {
diff --git a/ui/src/pages/vendor/CertificatesPage.tsx b/ui/src/pages/vendor/CertificatesPage.tsx index 738a346..3c95557 100644 --- a/ui/src/pages/vendor/CertificatesPage.tsx +++ b/ui/src/pages/vendor/CertificatesPage.tsx @@ -225,7 +225,7 @@ export function CertificatesPage() { onClick={handleActivate} loading={activateMutation.isPending} > - + Activate @@ -252,7 +252,7 @@ export function CertificatesPage() { loading={restoreMutation.isPending} disabled={expired} > - + {expired ? 'Expired' : 'Restore'} } @@ -284,7 +284,7 @@ export function CertificatesPage() { onClick={handleUpload} loading={stageMutation.isPending} > - + Stage Certificate diff --git a/ui/src/pages/vendor/EmailConfigPage.tsx b/ui/src/pages/vendor/EmailConfigPage.tsx index f1fae4d..062407b 100644 --- a/ui/src/pages/vendor/EmailConfigPage.tsx +++ b/ui/src/pages/vendor/EmailConfigPage.tsx @@ -172,7 +172,7 @@ export function EmailConfigPage() { {!confirmDelete ? ( ) : ( @@ -235,7 +235,7 @@ export function EmailConfigPage() {
{editing && ( @@ -263,7 +263,7 @@ export function EmailConfigPage() { onClick={handleToggleRegistration} loading={toggleMutation.isPending} > - + {connector.registrationEnabled ? 'Disable Registration' : 'Enable Registration'}
@@ -284,7 +284,7 @@ export function EmailConfigPage() { /> diff --git a/ui/src/pages/vendor/TenantDetailPage.tsx b/ui/src/pages/vendor/TenantDetailPage.tsx index 49566c1..94e9879 100644 --- a/ui/src/pages/vendor/TenantDetailPage.tsx +++ b/ui/src/pages/vendor/TenantDetailPage.tsx @@ -227,7 +227,7 @@ export function TenantDetailPage() { onClick={handleRenewLicense} loading={renewLicense.isPending} > - + Renew License @@ -276,7 +276,7 @@ export function TenantDetailPage() { onClick={handleRestart} loading={restartServer.isPending} > - + Restart Server diff --git a/ui/src/pages/vendor/VendorTenantsPage.tsx b/ui/src/pages/vendor/VendorTenantsPage.tsx index f85aff6..7fb2e09 100644 --- a/ui/src/pages/vendor/VendorTenantsPage.tsx +++ b/ui/src/pages/vendor/VendorTenantsPage.tsx @@ -93,13 +93,15 @@ export function VendorTenantsPage() {

Tenants

- + {!isLoading && tenants && tenants.length > 0 && ( + + )}
{isLoading && ( @@ -115,7 +117,7 @@ export function VendorTenantsPage() { description="Create your first tenant to get started." action={ }