@burdenoff/microfe-admin 2026.626.1 → 2026.720.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/admin/AdminRoot.js +2 -2
  2. package/dist/admin/AdminRoot.js.map +1 -1
  3. package/dist/admin/AdminRoutes.js +130 -78
  4. package/dist/admin/AdminRoutes.js.map +1 -1
  5. package/dist/admin/components/ConfirmDialog.js.map +1 -1
  6. package/dist/admin/components/DataTable.js.map +1 -1
  7. package/dist/admin/components/MarkdownEditor.js +116 -0
  8. package/dist/admin/components/MarkdownEditor.js.map +1 -0
  9. package/dist/admin/components/index.js +1 -0
  10. package/dist/admin/constants/featureFlags.js +12 -0
  11. package/dist/admin/constants/featureFlags.js.map +1 -0
  12. package/dist/admin/pages/AuditLogsPage.js.map +1 -1
  13. package/dist/admin/pages/CommunicationsPage.js.map +1 -1
  14. package/dist/admin/pages/ContentPagesPage.js +197 -197
  15. package/dist/admin/pages/ContentPagesPage.js.map +1 -1
  16. package/dist/admin/pages/DashboardPage.js +5 -5
  17. package/dist/admin/pages/FeatureFlagsPage.js.map +1 -1
  18. package/dist/admin/pages/ReferralsPage.js.map +1 -1
  19. package/dist/admin/pages/RolesPermissionsPage.js.map +1 -1
  20. package/dist/admin/pages/SREPage.js.map +1 -1
  21. package/dist/admin/pages/SandboxSettingsPage.js.map +1 -1
  22. package/dist/admin/pages/SettingsPage.js +6 -6
  23. package/dist/admin/pages/SettingsPage.js.map +1 -1
  24. package/dist/admin/pages/SyncFailuresPage.js.map +1 -1
  25. package/dist/admin/pages/TenantDetailPage.js +169 -157
  26. package/dist/admin/pages/TenantDetailPage.js.map +1 -1
  27. package/dist/admin/pages/TenantFormRoutePage.js +75 -74
  28. package/dist/admin/pages/TenantFormRoutePage.js.map +1 -1
  29. package/dist/admin/pages/TenantsListPage.js +169 -157
  30. package/dist/admin/pages/TenantsListPage.js.map +1 -1
  31. package/dist/admin/pages/UsersListPage.js +5 -5
  32. package/package.json +2 -2
@@ -1,215 +1,223 @@
1
1
  import { useToast as e } from "../components/Toast.js";
2
2
  import { useAdmin as t } from "../providers/AdminProvider.js";
3
3
  import { useAdminPermissions as n } from "../hooks/useAdminPermissions.js";
4
- import { Avatar as r, Button as i, Card as a, CardContent as o, CardHeader as s, CardTitle as c, Separator as l } from "../components/ui.js";
5
- import { PageLayout as u } from "../components/PageLayout.js";
6
- import { TenantStatusBadge as d } from "../components/StatusBadge.js";
7
- import { formatDate as f } from "../utils/formatters.js";
8
- import { tWithFallback as p } from "../utils/i18n.js";
9
- import { PermissionGuard as ee } from "../components/PermissionGuard.js";
4
+ import { Avatar as r, Button as i, Card as a, CardContent as o, CardHeader as s, CardTitle as c, Separator as ee } from "../components/ui.js";
5
+ import { PageLayout as l } from "../components/PageLayout.js";
6
+ import { TenantStatusBadge as te } from "../components/StatusBadge.js";
7
+ import { formatDate as u } from "../utils/formatters.js";
8
+ import { tWithFallback as ne } from "../utils/i18n.js";
9
+ import { PermissionGuard as d } from "../components/PermissionGuard.js";
10
10
  import "../components/index.js";
11
- import { joinPath as m } from "../utils/navigation.js";
12
- import { mapTenantToUi as h } from "../utils/mappers.js";
13
- import { useActivateTenantMutation as g, useGetTenantQuery as _, useSuspendTenantMutation as v } from "../../generated/global-operations.js";
14
- import { emitTenantLifecycle as y } from "../utils/tenantEvents.js";
15
- import { TenantMembersPanel as b } from "../components/TenantMembersPanel.js";
16
- import { TenantSsoPanel as x } from "../components/TenantSsoPanel.js";
17
- import { ArrowLeft as S, Ban as C, Building2 as w, Calendar as T, CheckCircle as E, Globe as te, Loader2 as D, Mail as ne, Settings as re, Users as ie } from "lucide-react";
18
- import { useNavigate as O, useParams as k } from "react-router-dom";
19
- import { jsx as A, jsxs as j } from "react/jsx-runtime";
20
- import { EmphasisPanel as M, NextSteps as N, PagePurpose as P } from "@burdenoff/fe-libs/ui";
21
- import { useI18n as F } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
22
- import { useEventBus as I } from "@burdenoff/fe-libs/shared/events";
11
+ import { joinPath as f } from "../utils/navigation.js";
12
+ import { mapTenantToUi as p } from "../utils/mappers.js";
13
+ import { useActivateTenantMutation as m, useGetTenantQuery as h, useSuspendTenantMutation as g } from "../../generated/global-operations.js";
14
+ import { emitTenantLifecycle as _ } from "../utils/tenantEvents.js";
15
+ import { TENANT_FEATURE_FLAGS as v } from "../constants/featureFlags.js";
16
+ import { TenantMembersPanel as re } from "../components/TenantMembersPanel.js";
17
+ import { TenantSsoPanel as ie } from "../components/TenantSsoPanel.js";
18
+ import { ArrowLeft as y, Ban as ae, Building2 as oe, Calendar as b, CheckCircle as se, Globe as x, Loader2 as S, Mail as C, Settings as w, Users as ce } from "lucide-react";
19
+ import { useNavigate as le, useParams as ue } from "react-router-dom";
20
+ import { jsx as T, jsxs as E } from "react/jsx-runtime";
21
+ import { useFeatureFlag as D } from "@burdenoff/fe-libs/shared/feature-flags";
22
+ import { useI18n as O } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
23
+ import { EmphasisPanel as k, NextSteps as A, PagePurpose as j } from "@burdenoff/fe-libs/ui";
24
+ import { useEventBus as M } from "@burdenoff/fe-libs/shared/events";
23
25
  //#region src/admin/pages/TenantDetailPage.tsx
24
- function L() {
25
- let { canViewTenants: L, canManageTenants: R, isLoading: z } = n(), { tenantId: B } = k(), V = O(), { basePath: H = "" } = t(), U = e(), { t: W } = F(), G = (e, t, n) => p(W, e, t, n), { data: K, loading: q, error: J } = _({
26
- variables: { id: B },
27
- skip: !B || z || !L,
26
+ function N() {
27
+ let { canViewTenants: N, canManageTenants: P, isLoading: F } = n(), { tenantId: I } = ue(), L = le(), { basePath: R = "" } = t(), z = e(), { t: B } = O(), V = D(v.management, !0), H = D(v.detail, !0), U = D(v.edit, !0), W = V && H, G = P && U, de = P && V, K = (e, t, n) => ne(B, e, t, n), { data: q, loading: fe, error: J } = h({
28
+ variables: { id: I },
29
+ skip: !I || F || !N || !W,
28
30
  fetchPolicy: "cache-and-network"
29
- }), [ae, { loading: Y }] = v(), [oe, { loading: X }] = g(), Z = I(), Q = K?.tenant ? h(K.tenant) : null, se = async () => {
30
- if (!B) return;
31
+ }), [pe, { loading: Y }] = g(), [me, { loading: X }] = m(), Z = M(), Q = q?.tenant ? p(q.tenant) : null, he = async () => {
32
+ if (!I) return;
31
33
  let e = Q?.slug;
32
34
  try {
33
- await ae({ variables: { id: B } }), y(Z, "tenant.tenant.suspended", {
34
- tenantId: B,
35
+ await pe({ variables: { id: I } }), _(Z, "tenant.tenant.suspended", {
36
+ tenantId: I,
35
37
  tenantSlug: e,
36
38
  status: "SUSPENDED"
37
- }), U.success(G("admin.tenantDetail.toast.suspendedTitle", "Tenant suspended"), G("admin.tenantDetail.toast.suspendedDescription", "{{name}} has been suspended.", { name: Q?.name ?? "" }));
39
+ }), z.success(K("admin.tenantDetail.toast.suspendedTitle", "Tenant suspended"), K("admin.tenantDetail.toast.suspendedDescription", "{{name}} has been suspended.", { name: Q?.name ?? "" }));
38
40
  } catch (e) {
39
- U.error(G("admin.tenantDetail.toast.errorTitle", "Error"), e instanceof Error ? e.message : G("admin.tenantDetail.toast.suspendFailed", "Failed to suspend tenant."));
41
+ z.error(K("admin.tenantDetail.toast.errorTitle", "Error"), e instanceof Error ? e.message : K("admin.tenantDetail.toast.suspendFailed", "Failed to suspend tenant."));
40
42
  }
41
- }, ce = async () => {
42
- if (!B) return;
43
+ }, ge = async () => {
44
+ if (!I) return;
43
45
  let e = Q?.slug;
44
46
  try {
45
- await oe({ variables: { id: B } }), y(Z, "tenant.tenant.activated", {
46
- tenantId: B,
47
+ await me({ variables: { id: I } }), _(Z, "tenant.tenant.activated", {
48
+ tenantId: I,
47
49
  tenantSlug: e,
48
50
  status: "ACTIVE"
49
- }), U.success(G("admin.tenantDetail.toast.activatedTitle", "Tenant activated"), G("admin.tenantDetail.toast.activatedDescription", "{{name}} has been activated.", { name: Q?.name ?? "" }));
51
+ }), z.success(K("admin.tenantDetail.toast.activatedTitle", "Tenant activated"), K("admin.tenantDetail.toast.activatedDescription", "{{name}} has been activated.", { name: Q?.name ?? "" }));
50
52
  } catch (e) {
51
- U.error(G("admin.tenantDetail.toast.errorTitle", "Error"), e instanceof Error ? e.message : G("admin.tenantDetail.toast.activateFailed", "Failed to activate tenant."));
53
+ z.error(K("admin.tenantDetail.toast.errorTitle", "Error"), e instanceof Error ? e.message : K("admin.tenantDetail.toast.activateFailed", "Failed to activate tenant."));
52
54
  }
53
- }, $ = K?.tenant?.workspaces ?? [];
54
- return /* @__PURE__ */ A(ee, {
55
- allowed: L,
56
- isLoading: z,
57
- pageTitle: G("admin.tenantDetail.pageTitle", "Tenant Details"),
58
- denyMessage: G("admin.tenantDetail.denyMessage", "You don't have permission to view tenant details."),
59
- children: q ? /* @__PURE__ */ A(u, {
60
- title: G("admin.tenantDetail.loadingTitle", "Loading..."),
61
- children: /* @__PURE__ */ A("div", {
55
+ }, $ = q?.tenant?.workspaces ?? [];
56
+ return !F && !N ? /* @__PURE__ */ T(d, {
57
+ allowed: !1,
58
+ isLoading: !1,
59
+ pageTitle: K("admin.tenantDetail.pageTitle", "Tenant Details"),
60
+ denyMessage: K("admin.tenantDetail.denyMessage", "You don't have permission to view tenant details."),
61
+ children: null
62
+ }) : W ? /* @__PURE__ */ T(d, {
63
+ allowed: N,
64
+ isLoading: F,
65
+ pageTitle: K("admin.tenantDetail.pageTitle", "Tenant Details"),
66
+ denyMessage: K("admin.tenantDetail.denyMessage", "You don't have permission to view tenant details."),
67
+ children: fe ? /* @__PURE__ */ T(l, {
68
+ title: K("admin.tenantDetail.loadingTitle", "Loading..."),
69
+ children: /* @__PURE__ */ T("div", {
62
70
  className: "flex h-64 items-center justify-center",
63
- children: /* @__PURE__ */ A(D, { className: "h-8 w-8 animate-spin text-text-secondary" })
71
+ children: /* @__PURE__ */ T(S, { className: "h-8 w-8 animate-spin text-text-secondary" })
64
72
  })
65
- }) : J || !Q ? /* @__PURE__ */ j(u, {
66
- title: G("admin.tenantDetail.notFoundTitle", "Tenant Not Found"),
67
- description: G("admin.tenantDetail.notFoundDescription", "The requested tenant could not be found"),
68
- children: [J && /* @__PURE__ */ A("div", {
73
+ }) : J || !Q ? /* @__PURE__ */ E(l, {
74
+ title: K("admin.tenantDetail.notFoundTitle", "Tenant Not Found"),
75
+ description: K("admin.tenantDetail.notFoundDescription", "The requested tenant could not be found"),
76
+ children: [J && /* @__PURE__ */ T("div", {
69
77
  className: "mb-4 rounded-md border border-status-error-border/50 bg-status-error-bg/10 p-4 text-sm text-status-error-text",
70
78
  children: J.message
71
- }), /* @__PURE__ */ j(i, {
79
+ }), /* @__PURE__ */ E(i, {
72
80
  variant: "outline",
73
- onClick: () => V(m(H, "tenants")),
74
- children: [/* @__PURE__ */ A(S, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.backToTenants", "Back to Tenants")]
81
+ onClick: () => L(f(R, "tenants")),
82
+ children: [/* @__PURE__ */ T(y, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.backToTenants", "Back to Tenants")]
75
83
  })]
76
- }) : /* @__PURE__ */ j(u, {
84
+ }) : /* @__PURE__ */ E(l, {
77
85
  title: Q.name,
78
- description: G("admin.tenantDetail.tenantId", "Tenant ID: {{id}}", { id: Q.id }),
79
- actions: /* @__PURE__ */ j("div", {
86
+ description: K("admin.tenantDetail.tenantId", "Tenant ID: {{id}}", { id: Q.id }),
87
+ actions: /* @__PURE__ */ E("div", {
80
88
  className: "flex items-center gap-2",
81
89
  children: [
82
- /* @__PURE__ */ j(i, {
90
+ /* @__PURE__ */ E(i, {
83
91
  variant: "outline",
84
- onClick: () => V(m(H, "tenants")),
85
- children: [/* @__PURE__ */ A(S, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.back", "Back")]
92
+ onClick: () => L(f(R, "tenants")),
93
+ children: [/* @__PURE__ */ T(y, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.back", "Back")]
86
94
  }),
87
- R && /* @__PURE__ */ j(i, {
95
+ G && /* @__PURE__ */ E(i, {
88
96
  variant: "outline",
89
- onClick: () => V(m(H, `tenants/${Q.id}/edit`)),
90
- children: [/* @__PURE__ */ A(re, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.edit", "Edit")]
97
+ onClick: () => L(f(R, `tenants/${Q.id}/edit`)),
98
+ children: [/* @__PURE__ */ T(w, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.edit", "Edit")]
91
99
  }),
92
- R && (Q.status === "active" ? /* @__PURE__ */ j(i, {
100
+ de && (Q.status === "active" ? /* @__PURE__ */ E(i, {
93
101
  variant: "outline",
94
102
  className: "text-status-warning-text",
95
- onClick: se,
103
+ onClick: he,
96
104
  disabled: Y,
97
- children: [Y ? /* @__PURE__ */ A(D, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ A(C, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.suspend", "Suspend")]
98
- }) : /* @__PURE__ */ j(i, {
105
+ children: [Y ? /* @__PURE__ */ T(S, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ T(ae, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.suspend", "Suspend")]
106
+ }) : /* @__PURE__ */ E(i, {
99
107
  variant: "outline",
100
108
  className: "text-status-success-text",
101
- onClick: ce,
109
+ onClick: ge,
102
110
  disabled: X,
103
- children: [X ? /* @__PURE__ */ A(D, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ A(E, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.activate", "Activate")]
111
+ children: [X ? /* @__PURE__ */ T(S, { className: "mr-2 h-4 w-4 animate-spin" }) : /* @__PURE__ */ T(se, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.activate", "Activate")]
104
112
  }))
105
113
  ]
106
114
  }),
107
115
  children: [
108
- /* @__PURE__ */ A(P, {
116
+ /* @__PURE__ */ T(j, {
109
117
  className: "mb-6",
110
- children: G("admin.tenantDetail.purpose", "Everything about a single tenant in one place — their profile, the people inside it, and their single sign-on setup. From here you manage that one customer account: review who has access, adjust their SSO, and suspend or reactivate them when needed.")
118
+ children: K("admin.tenantDetail.purpose", "Everything about a single tenant in one place — their profile, the people inside it, and their single sign-on setup. From here you manage that one customer account: review who has access, adjust their SSO, and suspend or reactivate them when needed.")
111
119
  }),
112
- /* @__PURE__ */ A(N, {
120
+ /* @__PURE__ */ T(A, {
113
121
  storageKey: "admin-tenant-detail",
114
122
  steps: [
115
123
  {
116
124
  id: "edit-tenant",
117
- label: G("admin.tenantDetail.nextSteps.edit", "Edit tenant details"),
118
- description: G("admin.tenantDetail.nextSteps.editDesc", "Update the name, domain or plan for this tenant."),
119
- onClick: () => V(m(H, `tenants/${Q.id}/edit`)),
120
- done: !R
125
+ label: K("admin.tenantDetail.nextSteps.edit", "Edit tenant details"),
126
+ description: K("admin.tenantDetail.nextSteps.editDesc", "Update the name, domain or plan for this tenant."),
127
+ onClick: () => L(f(R, `tenants/${Q.id}/edit`)),
128
+ done: !G
121
129
  },
122
130
  {
123
131
  id: "review-members",
124
- label: G("admin.tenantDetail.nextSteps.members", "Review members"),
125
- description: G("admin.tenantDetail.nextSteps.membersDesc", "Check who has access inside this tenant."),
132
+ label: K("admin.tenantDetail.nextSteps.members", "Review members"),
133
+ description: K("admin.tenantDetail.nextSteps.membersDesc", "Check who has access inside this tenant."),
126
134
  href: "#tenant-members"
127
135
  },
128
136
  {
129
137
  id: "configure-sso",
130
- label: G("admin.tenantDetail.nextSteps.sso", "Configure SSO"),
131
- description: G("admin.tenantDetail.nextSteps.ssoDesc", "Set up single sign-on so their team logs in with your IdP."),
138
+ label: K("admin.tenantDetail.nextSteps.sso", "Configure SSO"),
139
+ description: K("admin.tenantDetail.nextSteps.ssoDesc", "Set up single sign-on so their team logs in with your IdP."),
132
140
  href: "#tenant-sso"
133
141
  }
134
142
  ]
135
143
  }),
136
- /* @__PURE__ */ j("div", {
144
+ /* @__PURE__ */ E("div", {
137
145
  className: "grid gap-6 lg:grid-cols-3",
138
- children: [/* @__PURE__ */ j("div", {
146
+ children: [/* @__PURE__ */ E("div", {
139
147
  className: "space-y-6 lg:col-span-2",
140
148
  children: [
141
- /* @__PURE__ */ A(M, {
149
+ /* @__PURE__ */ T(k, {
142
150
  className: "p-0",
143
- children: /* @__PURE__ */ j(a, {
151
+ children: /* @__PURE__ */ E(a, {
144
152
  className: "border-0 bg-transparent shadow-none hover:border-0",
145
- children: [/* @__PURE__ */ A(s, { children: /* @__PURE__ */ A(c, {
153
+ children: [/* @__PURE__ */ T(s, { children: /* @__PURE__ */ T(c, {
146
154
  className: "text-lg",
147
- children: G("admin.tenantDetail.overview.title", "Overview")
148
- }) }), /* @__PURE__ */ j(o, { children: [
149
- /* @__PURE__ */ j("div", {
155
+ children: K("admin.tenantDetail.overview.title", "Overview")
156
+ }) }), /* @__PURE__ */ E(o, { children: [
157
+ /* @__PURE__ */ E("div", {
150
158
  className: "flex items-start gap-4",
151
- children: [/* @__PURE__ */ A(r, {
159
+ children: [/* @__PURE__ */ T(r, {
152
160
  fallback: Q.name.slice(0, 2).toUpperCase(),
153
161
  size: "lg"
154
- }), /* @__PURE__ */ j("div", {
162
+ }), /* @__PURE__ */ E("div", {
155
163
  className: "flex-1 space-y-4",
156
- children: [/* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("h2", {
164
+ children: [/* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("h2", {
157
165
  className: "text-xl font-semibold text-text-primary",
158
166
  children: Q.name
159
- }), /* @__PURE__ */ j("p", {
167
+ }), /* @__PURE__ */ E("p", {
160
168
  className: "text-sm text-text-secondary",
161
169
  children: ["@", Q.slug]
162
- })] }), /* @__PURE__ */ j("div", {
170
+ })] }), /* @__PURE__ */ E("div", {
163
171
  className: "flex flex-wrap items-center gap-4",
164
- children: [/* @__PURE__ */ A(d, { status: Q.status }), Q.plan && /* @__PURE__ */ A("span", {
172
+ children: [/* @__PURE__ */ T(te, { status: Q.status }), Q.plan && /* @__PURE__ */ T("span", {
165
173
  className: "rounded-md bg-action-primary-bg/10 px-2 py-1 text-xs font-medium text-primary",
166
174
  children: Q.plan
167
175
  })]
168
176
  })]
169
177
  })]
170
178
  }),
171
- /* @__PURE__ */ A(l, { className: "my-6" }),
172
- /* @__PURE__ */ j("div", {
179
+ /* @__PURE__ */ T(ee, { className: "my-6" }),
180
+ /* @__PURE__ */ E("div", {
173
181
  className: "grid gap-4 sm:grid-cols-2",
174
182
  children: [
175
- Q.ownerEmail && /* @__PURE__ */ j("div", {
183
+ Q.ownerEmail && /* @__PURE__ */ E("div", {
176
184
  className: "flex items-center gap-3",
177
- children: [/* @__PURE__ */ A(ne, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
185
+ children: [/* @__PURE__ */ T(C, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
178
186
  className: "text-xs text-text-secondary",
179
- children: G("admin.tenantDetail.overview.ownerEmail", "Owner Email")
180
- }), /* @__PURE__ */ A("p", {
187
+ children: K("admin.tenantDetail.overview.ownerEmail", "Owner Email")
188
+ }), /* @__PURE__ */ T("p", {
181
189
  className: "text-sm font-medium",
182
190
  children: Q.ownerEmail
183
191
  })] })]
184
192
  }),
185
- Q.domain && /* @__PURE__ */ j("div", {
193
+ Q.domain && /* @__PURE__ */ E("div", {
186
194
  className: "flex items-center gap-3",
187
- children: [/* @__PURE__ */ A(te, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
195
+ children: [/* @__PURE__ */ T(x, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
188
196
  className: "text-xs text-text-secondary",
189
- children: G("admin.tenantDetail.overview.domain", "Domain")
190
- }), /* @__PURE__ */ A("p", {
197
+ children: K("admin.tenantDetail.overview.domain", "Domain")
198
+ }), /* @__PURE__ */ T("p", {
191
199
  className: "text-sm font-medium",
192
200
  children: Q.domain
193
201
  })] })]
194
202
  }),
195
- /* @__PURE__ */ j("div", {
203
+ /* @__PURE__ */ E("div", {
196
204
  className: "flex items-center gap-3",
197
- children: [/* @__PURE__ */ A(T, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
205
+ children: [/* @__PURE__ */ T(b, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
198
206
  className: "text-xs text-text-secondary",
199
- children: G("admin.tenantDetail.overview.created", "Created")
200
- }), /* @__PURE__ */ A("p", {
207
+ children: K("admin.tenantDetail.overview.created", "Created")
208
+ }), /* @__PURE__ */ T("p", {
201
209
  className: "text-sm font-medium",
202
- children: f(Q.createdAt)
210
+ children: u(Q.createdAt)
203
211
  })] })]
204
212
  }),
205
- /* @__PURE__ */ j("div", {
213
+ /* @__PURE__ */ E("div", {
206
214
  className: "flex items-center gap-3",
207
- children: [/* @__PURE__ */ A(T, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ j("div", { children: [/* @__PURE__ */ A("p", {
215
+ children: [/* @__PURE__ */ T(b, { className: "h-4 w-4 text-text-secondary" }), /* @__PURE__ */ E("div", { children: [/* @__PURE__ */ T("p", {
208
216
  className: "text-xs text-text-secondary",
209
- children: G("admin.tenantDetail.overview.lastUpdated", "Last Updated")
210
- }), /* @__PURE__ */ A("p", {
217
+ children: K("admin.tenantDetail.overview.lastUpdated", "Last Updated")
218
+ }), /* @__PURE__ */ T("p", {
211
219
  className: "text-sm font-medium",
212
- children: f(Q.updatedAt)
220
+ children: u(Q.updatedAt)
213
221
  })] })]
214
222
  })
215
223
  ]
@@ -217,112 +225,116 @@ function L() {
217
225
  ] })]
218
226
  })
219
227
  }),
220
- $.length > 0 && /* @__PURE__ */ j(a, { children: [/* @__PURE__ */ A(s, { children: /* @__PURE__ */ A(c, {
228
+ $.length > 0 && /* @__PURE__ */ E(a, { children: [/* @__PURE__ */ T(s, { children: /* @__PURE__ */ T(c, {
221
229
  className: "text-lg",
222
- children: G("admin.tenantDetail.workspaces.title", "Workspaces ({{count}})", { count: $.length })
223
- }) }), /* @__PURE__ */ A(o, { children: /* @__PURE__ */ A("div", {
230
+ children: K("admin.tenantDetail.workspaces.title", "Workspaces ({{count}})", { count: $.length })
231
+ }) }), /* @__PURE__ */ T(o, { children: /* @__PURE__ */ T("div", {
224
232
  className: "space-y-2",
225
- children: $.map((e) => /* @__PURE__ */ j("div", {
233
+ children: $.map((e) => /* @__PURE__ */ E("div", {
226
234
  className: "flex items-center justify-between rounded-lg border border-border-subtle p-3",
227
- children: [/* @__PURE__ */ A("span", {
235
+ children: [/* @__PURE__ */ T("span", {
228
236
  className: "text-sm font-medium",
229
237
  children: e.name
230
- }), /* @__PURE__ */ A("span", {
238
+ }), /* @__PURE__ */ T("span", {
231
239
  className: "text-xs text-text-secondary capitalize",
232
240
  children: e.status?.toLowerCase()
233
241
  })]
234
242
  }, e.id))
235
243
  }) })] }),
236
- Q.settings && /* @__PURE__ */ j(a, { children: [/* @__PURE__ */ A(s, { children: /* @__PURE__ */ A(c, {
244
+ Q.settings && /* @__PURE__ */ E(a, { children: [/* @__PURE__ */ T(s, { children: /* @__PURE__ */ T(c, {
237
245
  className: "text-lg",
238
- children: G("admin.tenantDetail.settings.title", "Settings")
239
- }) }), /* @__PURE__ */ A(o, { children: /* @__PURE__ */ j("div", {
246
+ children: K("admin.tenantDetail.settings.title", "Settings")
247
+ }) }), /* @__PURE__ */ T(o, { children: /* @__PURE__ */ E("div", {
240
248
  className: "grid gap-4 sm:grid-cols-2",
241
249
  children: [
242
- /* @__PURE__ */ j("div", {
250
+ /* @__PURE__ */ E("div", {
243
251
  className: "flex items-center justify-between rounded-lg border border-border-subtle p-3",
244
- children: [/* @__PURE__ */ A("span", {
252
+ children: [/* @__PURE__ */ T("span", {
245
253
  className: "text-sm",
246
- children: G("admin.tenantDetail.settings.allowSignup", "Allow Signup")
247
- }), /* @__PURE__ */ A("span", {
254
+ children: K("admin.tenantDetail.settings.allowSignup", "Allow Signup")
255
+ }), /* @__PURE__ */ T("span", {
248
256
  className: `text-sm font-medium ${Q.settings?.allowSignup ? "text-status-success-text" : "text-text-secondary"}`,
249
- children: Q.settings?.allowSignup ? G("admin.tenantDetail.settings.enabled", "Enabled") : G("admin.tenantDetail.settings.disabled", "Disabled")
257
+ children: Q.settings?.allowSignup ? K("admin.tenantDetail.settings.enabled", "Enabled") : K("admin.tenantDetail.settings.disabled", "Disabled")
250
258
  })]
251
259
  }),
252
- /* @__PURE__ */ j("div", {
260
+ /* @__PURE__ */ E("div", {
253
261
  className: "flex items-center justify-between rounded-lg border border-border-subtle p-3",
254
- children: [/* @__PURE__ */ A("span", {
262
+ children: [/* @__PURE__ */ T("span", {
255
263
  className: "text-sm",
256
- children: G("admin.tenantDetail.settings.sso", "SSO")
257
- }), /* @__PURE__ */ A("span", {
264
+ children: K("admin.tenantDetail.settings.sso", "SSO")
265
+ }), /* @__PURE__ */ T("span", {
258
266
  className: `text-sm font-medium ${Q.settings?.ssoEnabled ? "text-status-success-text" : "text-text-secondary"}`,
259
- children: Q.settings?.ssoEnabled ? G("admin.tenantDetail.settings.enabled", "Enabled") : G("admin.tenantDetail.settings.disabled", "Disabled")
267
+ children: Q.settings?.ssoEnabled ? K("admin.tenantDetail.settings.enabled", "Enabled") : K("admin.tenantDetail.settings.disabled", "Disabled")
260
268
  })]
261
269
  }),
262
- /* @__PURE__ */ j("div", {
270
+ /* @__PURE__ */ E("div", {
263
271
  className: "flex items-center justify-between rounded-lg border border-border-subtle p-3",
264
- children: [/* @__PURE__ */ A("span", {
272
+ children: [/* @__PURE__ */ T("span", {
265
273
  className: "text-sm",
266
- children: G("admin.tenantDetail.settings.mfaRequired", "MFA Required")
267
- }), /* @__PURE__ */ A("span", {
274
+ children: K("admin.tenantDetail.settings.mfaRequired", "MFA Required")
275
+ }), /* @__PURE__ */ T("span", {
268
276
  className: `text-sm font-medium ${Q.settings?.mfaRequired ? "text-status-success-text" : "text-text-secondary"}`,
269
- children: Q.settings?.mfaRequired ? G("admin.tenantDetail.settings.yes", "Yes") : G("admin.tenantDetail.settings.no", "No")
277
+ children: Q.settings?.mfaRequired ? K("admin.tenantDetail.settings.yes", "Yes") : K("admin.tenantDetail.settings.no", "No")
270
278
  })]
271
279
  }),
272
- /* @__PURE__ */ j("div", {
280
+ /* @__PURE__ */ E("div", {
273
281
  className: "flex items-center justify-between rounded-lg border border-border-subtle p-3",
274
- children: [/* @__PURE__ */ A("span", {
282
+ children: [/* @__PURE__ */ T("span", {
275
283
  className: "text-sm",
276
- children: G("admin.tenantDetail.settings.dataRetention", "Data Retention")
277
- }), /* @__PURE__ */ A("span", {
284
+ children: K("admin.tenantDetail.settings.dataRetention", "Data Retention")
285
+ }), /* @__PURE__ */ T("span", {
278
286
  className: "text-sm font-medium",
279
- children: G("admin.tenantDetail.settings.dataRetentionDays", "{{days}} days", { days: Q.settings?.dataRetentionDays ?? 0 })
287
+ children: K("admin.tenantDetail.settings.dataRetentionDays", "{{days}} days", { days: Q.settings?.dataRetentionDays ?? 0 })
280
288
  })]
281
289
  })
282
290
  ]
283
291
  }) })] }),
284
- /* @__PURE__ */ A("div", {
292
+ /* @__PURE__ */ T("div", {
285
293
  id: "tenant-sso",
286
- children: /* @__PURE__ */ A(x, {
294
+ children: /* @__PURE__ */ T(ie, {
287
295
  tenantId: Q.id,
288
- canManage: R
296
+ canManage: G
289
297
  })
290
298
  }),
291
- /* @__PURE__ */ A("div", {
299
+ /* @__PURE__ */ T("div", {
292
300
  id: "tenant-members",
293
- children: /* @__PURE__ */ A(b, {
301
+ children: /* @__PURE__ */ T(re, {
294
302
  tenantId: Q.id,
295
303
  tenantType: Q.type ?? "",
296
- canManage: R
304
+ canManage: G
297
305
  })
298
306
  })
299
307
  ]
300
- }), /* @__PURE__ */ A("div", {
308
+ }), /* @__PURE__ */ T("div", {
301
309
  className: "space-y-6",
302
- children: /* @__PURE__ */ j(a, { children: [/* @__PURE__ */ A(s, { children: /* @__PURE__ */ A(c, {
310
+ children: /* @__PURE__ */ E(a, { children: [/* @__PURE__ */ T(s, { children: /* @__PURE__ */ T(c, {
303
311
  className: "text-lg",
304
- children: G("admin.tenantDetail.actions.title", "Actions")
305
- }) }), /* @__PURE__ */ j(o, {
312
+ children: K("admin.tenantDetail.actions.title", "Actions")
313
+ }) }), /* @__PURE__ */ E(o, {
306
314
  className: "space-y-2",
307
- children: [/* @__PURE__ */ j(i, {
315
+ children: [/* @__PURE__ */ E(i, {
308
316
  variant: "outline",
309
317
  className: "w-full justify-start",
310
- onClick: () => V(m(H, `users?tenantId=${Q.id}`)),
311
- children: [/* @__PURE__ */ A(ie, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.actions.viewUsers", "View Users")]
312
- }), /* @__PURE__ */ j(i, {
318
+ onClick: () => L(f(R, `users?tenantId=${Q.id}`)),
319
+ children: [/* @__PURE__ */ T(ce, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.actions.viewUsers", "View Users")]
320
+ }), /* @__PURE__ */ E(i, {
313
321
  variant: "outline",
314
322
  className: "w-full justify-start",
315
- onClick: () => V(m(H, `billing/subscriptions?tenantId=${Q.id}`)),
316
- children: [/* @__PURE__ */ A(w, { className: "mr-2 h-4 w-4" }), G("admin.tenantDetail.actions.viewBilling", "View Billing")]
323
+ onClick: () => L(f(R, `billing/subscriptions?tenantId=${Q.id}`)),
324
+ children: [/* @__PURE__ */ T(oe, { className: "mr-2 h-4 w-4" }), K("admin.tenantDetail.actions.viewBilling", "View Billing")]
317
325
  })]
318
326
  })] })
319
327
  })]
320
328
  })
321
329
  ]
322
330
  })
331
+ }) : /* @__PURE__ */ T(l, {
332
+ title: K("admin.tenantDetail.featureDisabledTitle", "Tenant management unavailable"),
333
+ description: K("admin.tenantDetail.featureDisabled", "This feature is currently disabled."),
334
+ children: null
323
335
  });
324
336
  }
325
337
  //#endregion
326
- export { L as TenantDetailPage };
338
+ export { N as TenantDetailPage };
327
339
 
328
340
  //# sourceMappingURL=TenantDetailPage.js.map