@burdenoff/microfe-auth 2026.521.1 → 2026.521.3

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.
@@ -4,16 +4,16 @@ import "../hooks/index.js";
4
4
  import { AlertIcon as n, SpinnerIcon as r } from "../components/AuthIcons.js";
5
5
  import { ConfirmActionDialog as i } from "../components/ConfirmActionDialog.js";
6
6
  import { nativeCopyText as a, nativeImpact as o, nativeNotify as s } from "../../utils/nativeBridge.js";
7
- import { useCallback as c, useEffect as l, useRef as u, useState as d } from "react";
8
- import { useNavigate as f } from "react-router-dom";
9
- import { useI18n as p } from "@burdenoff/fe-libs/shared/providers/shell";
10
- import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
11
- import { useFeatureFlagDetails as _ } from "@burdenoff/fe-libs/shared/feature-flags";
7
+ import { useCallback as c, useEffect as l, useRef as ee, useState as u } from "react";
8
+ import { useNavigate as te, useSearchParams as d } from "react-router-dom";
9
+ import { useI18n as ne } from "@burdenoff/fe-libs/shared/providers/shell";
10
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
11
+ import { useFeatureFlagDetails as re } from "@burdenoff/fe-libs/shared/feature-flags";
12
12
  //#region src/auth/pages/SsoConfigPage.tsx
13
- var v = async (e) => {
13
+ var h = async (e) => {
14
14
  o("light"), s(await a(e) ? "success" : "error");
15
15
  };
16
- function y(e) {
16
+ function g(e) {
17
17
  try {
18
18
  let t = new DOMParser().parseFromString(e, "text/xml"), n = t.querySelector("parsererror");
19
19
  if (n) return console.error("XML parse error:", n.textContent), null;
@@ -46,16 +46,16 @@ function y(e) {
46
46
  return console.error("Failed to parse SAML metadata:", e), null;
47
47
  }
48
48
  }
49
- function b() {
50
- let a = f(), { canManageSsoConfig: b, isLoading: ee } = t(), te = _("workspace.auth.enterprise-sso")?.value === !0, x = u(null), { ssoConfig: S, oidcConfig: C, isLoading: w, isSaving: T, isDeleting: E, saveSsoConfig: D, deleteSsoConfig: O } = e("burdenoff.com"), { t: k } = p(), A = c((e, t) => {
51
- let n = k(e);
49
+ function _({ bypassEnterprisePlanGate: a = !1 }) {
50
+ let _ = te(), [v] = d(), { canManageSsoConfig: y, isLoading: ie } = t(), ae = re("workspace.auth.enterprise-sso"), oe = a || ae?.value === !0, b = ee(null), x = v.get("tenant"), S = v.get("org"), C = v.get("workspace"), { ssoConfig: w, oidcConfig: T, isLoading: E, isSaving: D, isDeleting: O, saveSsoConfig: k, deleteSsoConfig: se } = e(x ?? "burdenoff.com"), { t: A } = ne(), j = c((e, t) => {
51
+ let n = A(e);
52
52
  return n === e ? t : n;
53
- }, [k]), [j, M] = d("saml"), [N, P] = d(!1), [ne, F] = d(!1), [I, L] = d(null), [R, z] = d(null), [B, V] = d(""), [H, U] = d(!1), [W, G] = d(!1), [K, q] = d({
53
+ }, [A]), [M, ce] = u("saml"), [N, P] = u(!1), [le, F] = u(!1), [I, L] = u(null), [R, z] = u(null), [B, V] = u(""), [H, U] = u(!1), [W, G] = u(!1), [K, q] = u({
54
54
  client_name: "",
55
55
  redirect_uris: "",
56
56
  grant_types: ["authorization_code", "refresh_token"],
57
57
  token_endpoint_auth_method: "none"
58
- }), [J, Y] = d(!1), [X, Z] = d(null), [Q, $] = d({
58
+ }), [J, Y] = u(!1), [X, Z] = u(null), [Q, $] = u({
59
59
  entityId: "",
60
60
  ssoUrl: "",
61
61
  sloUrl: "",
@@ -63,37 +63,37 @@ function b() {
63
63
  enabled: !1
64
64
  });
65
65
  return l(() => {
66
- S && $({
67
- entityId: S.entityId || "",
68
- ssoUrl: S.ssoUrl || "",
69
- sloUrl: S.sloUrl || "",
70
- certificate: S.certificate || "",
71
- enabled: S.enabled || !1
66
+ w && $({
67
+ entityId: w.entityId || "",
68
+ ssoUrl: w.ssoUrl || "",
69
+ sloUrl: w.sloUrl || "",
70
+ certificate: w.certificate || "",
71
+ enabled: w.enabled || !1
72
72
  });
73
- }, [S]), ee ? /* @__PURE__ */ h("div", {
73
+ }, [w]), ie ? /* @__PURE__ */ p("div", {
74
74
  className: "max-w-5xl mx-auto p-6",
75
- children: /* @__PURE__ */ g("div", {
75
+ children: /* @__PURE__ */ m("div", {
76
76
  className: "text-center py-16",
77
- children: [/* @__PURE__ */ h(r, { className: "w-8 h-8 mx-auto text-text-secondary animate-spin" }), /* @__PURE__ */ h("p", {
77
+ children: [/* @__PURE__ */ p(r, { className: "w-8 h-8 mx-auto text-text-secondary animate-spin" }), /* @__PURE__ */ p("p", {
78
78
  className: "mt-4 text-text-secondary",
79
- children: A("auth.sso.loadingPermissions", "Loading permissions...")
79
+ children: j("auth.sso.loadingPermissions", "Loading permissions...")
80
80
  })]
81
81
  })
82
- }) : b ? te ? /* @__PURE__ */ g("div", {
82
+ }) : y ? oe ? /* @__PURE__ */ m("div", {
83
83
  className: "max-w-5xl mx-auto p-6",
84
84
  children: [
85
- /* @__PURE__ */ h(i, {
86
- open: ne,
85
+ /* @__PURE__ */ p(i, {
86
+ open: le,
87
87
  onOpenChange: F,
88
- title: A("auth.sso.deleteConfirmTitle", "Delete SSO configuration?"),
89
- description: A("auth.sso.deleteConfirmDesc", "Users will immediately lose the ability to sign in with this SSO setup until a new configuration is saved."),
90
- confirmText: A("auth.sso.deleteConfirmButton", "Delete configuration"),
88
+ title: j("auth.sso.deleteConfirmTitle", "Delete SSO configuration?"),
89
+ description: j("auth.sso.deleteConfirmDesc", "Users will immediately lose the ability to sign in with this SSO setup until a new configuration is saved."),
90
+ confirmText: j("auth.sso.deleteConfirmButton", "Delete configuration"),
91
91
  variant: "danger",
92
- isPending: E,
92
+ isPending: O,
93
93
  onConfirm: async () => {
94
94
  L(null), z(null), o("medium");
95
95
  try {
96
- await O(), s("success"), z(A("auth.sso.deleteSuccess", "SSO configuration deleted successfully.")), F(!1), $({
96
+ await se(), s("success"), z(j("auth.sso.deleteSuccess", "SSO configuration deleted successfully.")), F(!1), $({
97
97
  entityId: "",
98
98
  ssoUrl: "",
99
99
  sloUrl: "",
@@ -101,186 +101,230 @@ function b() {
101
101
  enabled: !1
102
102
  });
103
103
  } catch (e) {
104
- s("error"), L(e instanceof Error ? e.message : A("auth.sso.deleteFailed", "Failed to delete configuration"));
104
+ s("error"), L(e instanceof Error ? e.message : j("auth.sso.deleteFailed", "Failed to delete configuration"));
105
105
  }
106
106
  }
107
107
  }),
108
- /* @__PURE__ */ g("div", {
108
+ /* @__PURE__ */ m("div", {
109
109
  className: "flex items-center justify-between mb-8",
110
- children: [/* @__PURE__ */ g("div", {
110
+ children: [/* @__PURE__ */ m("div", {
111
111
  className: "flex items-center gap-4",
112
- children: [/* @__PURE__ */ h("button", {
113
- onClick: () => a("/auth/security"),
114
- "aria-label": A("auth.sso.backToSecurity", "Back to Security"),
112
+ children: [/* @__PURE__ */ p("button", {
113
+ onClick: () => _("/auth/security"),
114
+ "aria-label": j("auth.sso.backToSecurity", "Back to Security"),
115
115
  className: "p-2 rounded-lg hover:bg-bg-sunken transition-colors",
116
- children: /* @__PURE__ */ h("svg", {
116
+ children: /* @__PURE__ */ p("svg", {
117
117
  className: "w-5 h-5 text-text-secondary",
118
118
  fill: "none",
119
119
  viewBox: "0 0 24 24",
120
120
  stroke: "currentColor",
121
121
  "aria-hidden": "true",
122
- children: /* @__PURE__ */ h("path", {
122
+ children: /* @__PURE__ */ p("path", {
123
123
  strokeLinecap: "round",
124
124
  strokeLinejoin: "round",
125
125
  strokeWidth: 2,
126
126
  d: "M10 19l-7-7m0 0l7-7m-7 7h18"
127
127
  })
128
128
  })
129
- }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h1", {
129
+ }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h1", {
130
130
  className: "text-2xl font-semibold text-text-primary",
131
- children: A("auth.sso.title", "Single Sign-On (SSO)")
132
- }), /* @__PURE__ */ h("p", {
131
+ children: j("auth.sso.title", "Single Sign-On (SSO)")
132
+ }), /* @__PURE__ */ p("p", {
133
133
  className: "text-text-secondary mt-1",
134
- children: A("auth.sso.description", "Configure enterprise SSO with SAML 2.0 or OIDC")
134
+ children: j("auth.sso.description", "Configure enterprise SSO with SAML 2.0 or OIDC")
135
135
  })] })]
136
- }), S && /* @__PURE__ */ g("div", {
136
+ }), w && /* @__PURE__ */ m("div", {
137
137
  className: "flex items-center gap-3",
138
- children: [/* @__PURE__ */ h("span", {
138
+ children: [/* @__PURE__ */ p("span", {
139
139
  className: `px-3 py-1 rounded-full text-sm font-medium ${Q.enabled ? "bg-status-success-bg-subtle text-status-success-text" : "bg-bg-sunken text-text-secondary"}`,
140
- children: Q.enabled ? A("auth.sso.enabled", "Enabled") : A("auth.sso.disabled", "Disabled")
141
- }), /* @__PURE__ */ h("button", {
140
+ children: Q.enabled ? j("auth.sso.enabled", "Enabled") : j("auth.sso.disabled", "Disabled")
141
+ }), /* @__PURE__ */ p("button", {
142
142
  onClick: async () => {
143
143
  L(null);
144
144
  try {
145
- await D({
145
+ await k({
146
146
  ...Q,
147
147
  enabled: !Q.enabled
148
- }), z(Q.enabled ? A("auth.sso.ssoDisabled", "SSO disabled") : A("auth.sso.ssoEnabled", "SSO enabled"));
148
+ }), z(Q.enabled ? j("auth.sso.ssoDisabled", "SSO disabled") : j("auth.sso.ssoEnabled", "SSO enabled"));
149
149
  } catch (e) {
150
- L(e instanceof Error ? e.message : A("auth.sso.statusUpdateFailed", "Failed to update status"));
150
+ L(e instanceof Error ? e.message : j("auth.sso.statusUpdateFailed", "Failed to update status"));
151
151
  }
152
152
  },
153
- disabled: T,
153
+ disabled: D,
154
154
  className: "px-4 py-2 rounded-lg border border-border-default text-text-primary hover:bg-bg-sunken transition-colors text-sm font-medium",
155
- children: Q.enabled ? A("auth.sso.disable", "Disable") : A("auth.sso.enable", "Enable")
155
+ children: Q.enabled ? j("auth.sso.disable", "Disable") : j("auth.sso.enable", "Enable")
156
156
  })]
157
157
  })]
158
158
  }),
159
- I && /* @__PURE__ */ g("div", {
159
+ a && (x ?? S ?? C) && /* @__PURE__ */ m("div", {
160
+ className: "mb-6 p-4 rounded-xl bg-status-info-bg-subtle border border-status-info-border",
161
+ children: [/* @__PURE__ */ p("p", {
162
+ className: "text-sm font-medium text-status-info-text mb-1",
163
+ children: j("auth.sso.adminContext", "Configuring SSO for")
164
+ }), /* @__PURE__ */ m("div", {
165
+ className: "flex flex-wrap gap-4 text-xs text-status-info-text",
166
+ children: [
167
+ x && /* @__PURE__ */ m("span", { children: [
168
+ /* @__PURE__ */ p("span", {
169
+ className: "font-medium",
170
+ children: j("auth.sso.tenant", "Tenant:")
171
+ }),
172
+ " ",
173
+ /* @__PURE__ */ p("code", {
174
+ className: "font-mono",
175
+ children: x
176
+ })
177
+ ] }),
178
+ S && /* @__PURE__ */ m("span", { children: [
179
+ /* @__PURE__ */ p("span", {
180
+ className: "font-medium",
181
+ children: j("auth.sso.organization", "Organization:")
182
+ }),
183
+ " ",
184
+ /* @__PURE__ */ p("code", {
185
+ className: "font-mono",
186
+ children: S
187
+ })
188
+ ] }),
189
+ C && /* @__PURE__ */ m("span", { children: [
190
+ /* @__PURE__ */ p("span", {
191
+ className: "font-medium",
192
+ children: j("auth.sso.workspace", "Workspace:")
193
+ }),
194
+ " ",
195
+ /* @__PURE__ */ p("code", {
196
+ className: "font-mono",
197
+ children: C
198
+ })
199
+ ] })
200
+ ]
201
+ })]
202
+ }),
203
+ I && /* @__PURE__ */ m("div", {
160
204
  className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-error-bg-subtle border border-status-error-border",
161
- children: [/* @__PURE__ */ h(n, { className: "w-5 h-5 text-status-error-text flex-shrink-0 mt-0.5" }), /* @__PURE__ */ g("div", {
205
+ children: [/* @__PURE__ */ p(n, { className: "w-5 h-5 text-status-error-text flex-shrink-0 mt-0.5" }), /* @__PURE__ */ m("div", {
162
206
  className: "flex-1",
163
- children: [/* @__PURE__ */ h("p", {
207
+ children: [/* @__PURE__ */ p("p", {
164
208
  className: "text-sm text-status-error-text",
165
209
  children: I
166
- }), /* @__PURE__ */ h("button", {
210
+ }), /* @__PURE__ */ p("button", {
167
211
  onClick: () => L(null),
168
212
  className: "mt-2 text-sm text-status-error-text hover:underline",
169
- children: A("auth.sso.dismiss", "Dismiss")
213
+ children: j("auth.sso.dismiss", "Dismiss")
170
214
  })]
171
215
  })]
172
216
  }),
173
- R && /* @__PURE__ */ g("div", {
217
+ R && /* @__PURE__ */ m("div", {
174
218
  className: "mb-6 flex items-start gap-3 p-4 rounded-xl bg-status-success-bg-subtle border border-status-success-border",
175
- children: [/* @__PURE__ */ h("svg", {
219
+ children: [/* @__PURE__ */ p("svg", {
176
220
  className: "w-5 h-5 text-status-success-text flex-shrink-0 mt-0.5",
177
221
  fill: "currentColor",
178
222
  viewBox: "0 0 20 20",
179
- children: /* @__PURE__ */ h("path", {
223
+ children: /* @__PURE__ */ p("path", {
180
224
  fillRule: "evenodd",
181
225
  d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
182
226
  clipRule: "evenodd"
183
227
  })
184
- }), /* @__PURE__ */ g("div", {
228
+ }), /* @__PURE__ */ m("div", {
185
229
  className: "flex-1",
186
- children: [/* @__PURE__ */ h("p", {
230
+ children: [/* @__PURE__ */ p("p", {
187
231
  className: "text-sm text-status-success-text",
188
232
  children: R
189
- }), /* @__PURE__ */ h("button", {
233
+ }), /* @__PURE__ */ p("button", {
190
234
  onClick: () => z(null),
191
235
  className: "mt-2 text-sm text-status-success-text hover:underline",
192
- children: A("auth.sso.dismiss", "Dismiss")
236
+ children: j("auth.sso.dismiss", "Dismiss")
193
237
  })]
194
238
  })]
195
239
  }),
196
- /* @__PURE__ */ h("div", {
240
+ /* @__PURE__ */ p("div", {
197
241
  className: "mb-6 border-b border-border-subtle",
198
- children: /* @__PURE__ */ h("nav", {
242
+ children: /* @__PURE__ */ p("nav", {
199
243
  className: "flex gap-6",
200
244
  children: [
201
245
  {
202
246
  id: "saml",
203
- label: A("auth.sso.samlTab", "SAML 2.0"),
247
+ label: j("auth.sso.samlTab", "SAML 2.0"),
204
248
  icon: "🔐"
205
249
  },
206
250
  {
207
251
  id: "oidc",
208
- label: A("auth.sso.oidcTab", "OIDC Provider"),
252
+ label: j("auth.sso.oidcTab", "OIDC Provider"),
209
253
  icon: "🌐"
210
254
  },
211
255
  {
212
256
  id: "clients",
213
- label: A("auth.sso.clientsTab", "OIDC Clients"),
257
+ label: j("auth.sso.clientsTab", "OIDC Clients"),
214
258
  icon: "🔑"
215
259
  },
216
260
  {
217
261
  id: "test",
218
- label: A("auth.sso.testTab", "Test SSO"),
262
+ label: j("auth.sso.testTab", "Test SSO"),
219
263
  icon: "🧪"
220
264
  }
221
- ].map((e) => /* @__PURE__ */ g("button", {
222
- onClick: () => M(e.id),
223
- className: `pb-3 text-sm font-medium transition-colors relative ${j === e.id ? "text-text-link" : "text-text-secondary hover:text-text-primary"}`,
224
- children: [/* @__PURE__ */ g("span", {
265
+ ].map((e) => /* @__PURE__ */ m("button", {
266
+ onClick: () => ce(e.id),
267
+ className: `pb-3 text-sm font-medium transition-colors relative ${M === e.id ? "text-text-link" : "text-text-secondary hover:text-text-primary"}`,
268
+ children: [/* @__PURE__ */ m("span", {
225
269
  className: "flex items-center gap-2",
226
- children: [/* @__PURE__ */ h("span", { children: e.icon }), e.label]
227
- }), j === e.id && /* @__PURE__ */ h("span", { className: "absolute bottom-0 left-0 right-0 h-0.5 bg-action-primary-bg" })]
270
+ children: [/* @__PURE__ */ p("span", { children: e.icon }), e.label]
271
+ }), M === e.id && /* @__PURE__ */ p("span", { className: "absolute bottom-0 left-0 right-0 h-0.5 bg-action-primary-bg" })]
228
272
  }, e.id))
229
273
  })
230
274
  }),
231
- w && /* @__PURE__ */ g("div", {
275
+ E && /* @__PURE__ */ m("div", {
232
276
  className: "flex items-center justify-center py-12",
233
- children: [/* @__PURE__ */ h(r, { className: "w-8 h-8 text-text-link animate-spin" }), /* @__PURE__ */ h("span", {
277
+ children: [/* @__PURE__ */ p(r, { className: "w-8 h-8 text-text-link animate-spin" }), /* @__PURE__ */ p("span", {
234
278
  className: "ml-3 text-text-secondary",
235
- children: A("auth.sso.loadingConfig", "Loading configuration...")
279
+ children: j("auth.sso.loadingConfig", "Loading configuration...")
236
280
  })]
237
281
  }),
238
- !w && j === "saml" && /* @__PURE__ */ g("div", {
282
+ !E && M === "saml" && /* @__PURE__ */ m("div", {
239
283
  className: "space-y-6",
240
284
  children: [
241
- /* @__PURE__ */ g("div", {
285
+ /* @__PURE__ */ m("div", {
242
286
  className: "p-4 rounded-xl bg-status-info-bg-subtle border border-status-info-border",
243
287
  children: [
244
- /* @__PURE__ */ h("h3", {
288
+ /* @__PURE__ */ p("h3", {
245
289
  className: "font-medium text-status-info-text mb-2",
246
- children: A("auth.sso.samlConfigTitle", "SAML 2.0 Configuration")
290
+ children: j("auth.sso.samlConfigTitle", "SAML 2.0 Configuration")
247
291
  }),
248
- /* @__PURE__ */ h("p", {
292
+ /* @__PURE__ */ p("p", {
249
293
  className: "text-sm text-status-info-text",
250
- children: A("auth.sso.samlConfigDesc", "Configure your Identity Provider (IdP) to enable enterprise SSO. You'll need to get the following information from your IdP (Okta, Azure AD, OneLogin, etc.):")
294
+ children: j("auth.sso.samlConfigDesc", "Configure your Identity Provider (IdP) to enable enterprise SSO. You'll need to get the following information from your IdP (Okta, Azure AD, OneLogin, etc.):")
251
295
  }),
252
- /* @__PURE__ */ g("ul", {
296
+ /* @__PURE__ */ m("ul", {
253
297
  className: "mt-2 text-sm text-status-info-text list-disc list-inside",
254
298
  children: [
255
- /* @__PURE__ */ h("li", { children: A("auth.sso.entityIdItem", "Entity ID (Issuer URL)") }),
256
- /* @__PURE__ */ h("li", { children: A("auth.sso.ssoUrlItem", "SSO URL (Login URL)") }),
257
- /* @__PURE__ */ h("li", { children: A("auth.sso.certificateItem", "X.509 Certificate") })
299
+ /* @__PURE__ */ p("li", { children: j("auth.sso.entityIdItem", "Entity ID (Issuer URL)") }),
300
+ /* @__PURE__ */ p("li", { children: j("auth.sso.ssoUrlItem", "SSO URL (Login URL)") }),
301
+ /* @__PURE__ */ p("li", { children: j("auth.sso.certificateItem", "X.509 Certificate") })
258
302
  ]
259
303
  })
260
304
  ]
261
305
  }),
262
- /* @__PURE__ */ g("div", {
306
+ /* @__PURE__ */ m("div", {
263
307
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
264
308
  children: [
265
- /* @__PURE__ */ h("h3", {
309
+ /* @__PURE__ */ p("h3", {
266
310
  className: "text-lg font-medium text-text-primary mb-4",
267
- children: A("auth.sso.importMetadata", "Import IdP Metadata")
311
+ children: j("auth.sso.importMetadata", "Import IdP Metadata")
268
312
  }),
269
- /* @__PURE__ */ h("p", {
313
+ /* @__PURE__ */ p("p", {
270
314
  className: "text-sm text-text-secondary mb-4",
271
- children: A("auth.sso.importMetadataDesc", "Automatically configure SSO by importing your IdP's metadata XML file or URL.")
315
+ children: j("auth.sso.importMetadataDesc", "Automatically configure SSO by importing your IdP's metadata XML file or URL.")
272
316
  }),
273
- /* @__PURE__ */ g("div", {
317
+ /* @__PURE__ */ m("div", {
274
318
  className: "grid grid-cols-1 md:grid-cols-2 gap-6",
275
- children: [/* @__PURE__ */ g("div", {
319
+ children: [/* @__PURE__ */ m("div", {
276
320
  className: "space-y-3",
277
321
  children: [
278
- /* @__PURE__ */ h("label", {
322
+ /* @__PURE__ */ p("label", {
279
323
  className: "block text-sm font-medium text-text-primary",
280
- children: A("auth.sso.uploadFile", "Upload Metadata File")
324
+ children: j("auth.sso.uploadFile", "Upload Metadata File")
281
325
  }),
282
- /* @__PURE__ */ h("input", {
283
- ref: x,
326
+ /* @__PURE__ */ p("input", {
327
+ ref: b,
284
328
  type: "file",
285
329
  accept: ".xml,application/xml,text/xml",
286
330
  onChange: async (e) => {
@@ -288,188 +332,188 @@ function b() {
288
332
  if (t) {
289
333
  L(null), U(!0);
290
334
  try {
291
- let e = y(await t.text());
335
+ let e = g(await t.text());
292
336
  e ? ($({
293
337
  ...Q,
294
338
  entityId: e.entityId,
295
339
  ssoUrl: e.ssoUrl,
296
340
  sloUrl: e.sloUrl || "",
297
341
  certificate: e.certificate
298
- }), z(A("auth.sso.importSuccess", "SAML metadata imported successfully! Review and save the configuration.")), P(!0)) : L(A("auth.sso.parseError", "Failed to parse SAML metadata. Make sure the file contains valid IdP metadata XML."));
342
+ }), z(j("auth.sso.importSuccess", "SAML metadata imported successfully! Review and save the configuration.")), P(!0)) : L(j("auth.sso.parseError", "Failed to parse SAML metadata. Make sure the file contains valid IdP metadata XML."));
299
343
  } catch {
300
- L(A("auth.sso.readError", "Failed to read metadata file"));
344
+ L(j("auth.sso.readError", "Failed to read metadata file"));
301
345
  } finally {
302
- U(!1), x.current && (x.current.value = "");
346
+ U(!1), b.current && (b.current.value = "");
303
347
  }
304
348
  }
305
349
  },
306
350
  className: "hidden",
307
351
  id: "metadata-file"
308
352
  }),
309
- /* @__PURE__ */ g("label", {
353
+ /* @__PURE__ */ m("label", {
310
354
  htmlFor: "metadata-file",
311
355
  className: "flex items-center justify-center gap-2 w-full px-4 py-3 border-2 border-dashed border-border-default rounded-xl cursor-pointer hover:border-action-primary-bg transition-colors",
312
- children: [H ? /* @__PURE__ */ h(r, { className: "w-5 h-5 animate-spin text-text-link" }) : /* @__PURE__ */ h("svg", {
356
+ children: [H ? /* @__PURE__ */ p(r, { className: "w-5 h-5 animate-spin text-text-link" }) : /* @__PURE__ */ p("svg", {
313
357
  className: "w-5 h-5 text-text-tertiary",
314
358
  fill: "none",
315
359
  viewBox: "0 0 24 24",
316
360
  stroke: "currentColor",
317
- children: /* @__PURE__ */ h("path", {
361
+ children: /* @__PURE__ */ p("path", {
318
362
  strokeLinecap: "round",
319
363
  strokeLinejoin: "round",
320
364
  strokeWidth: 2,
321
365
  d: "M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12"
322
366
  })
323
- }), /* @__PURE__ */ h("span", {
367
+ }), /* @__PURE__ */ p("span", {
324
368
  className: "text-sm text-text-secondary",
325
- children: H ? A("auth.sso.importing", "Importing...") : A("auth.sso.chooseFile", "Choose XML file")
369
+ children: H ? j("auth.sso.importing", "Importing...") : j("auth.sso.chooseFile", "Choose XML file")
326
370
  })]
327
371
  })
328
372
  ]
329
- }), /* @__PURE__ */ g("div", {
373
+ }), /* @__PURE__ */ m("div", {
330
374
  className: "space-y-3",
331
- children: [/* @__PURE__ */ h("label", {
375
+ children: [/* @__PURE__ */ p("label", {
332
376
  className: "block text-sm font-medium text-text-primary",
333
- children: A("auth.sso.fetchFromUrl", "Fetch from URL")
334
- }), /* @__PURE__ */ g("div", {
377
+ children: j("auth.sso.fetchFromUrl", "Fetch from URL")
378
+ }), /* @__PURE__ */ m("div", {
335
379
  className: "flex gap-2",
336
- children: [/* @__PURE__ */ h("input", {
380
+ children: [/* @__PURE__ */ p("input", {
337
381
  id: "sso-metadata-url",
338
382
  type: "url",
339
383
  value: B,
340
384
  onChange: (e) => V(e.target.value),
341
385
  placeholder: "https://idp.example.com/metadata.xml",
342
- "aria-label": A("auth.sso.fetchFromUrl", "Fetch from URL"),
386
+ "aria-label": j("auth.sso.fetchFromUrl", "Fetch from URL"),
343
387
  className: "flex-1 px-4 py-2.5 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all text-sm"
344
- }), /* @__PURE__ */ g("button", {
388
+ }), /* @__PURE__ */ m("button", {
345
389
  type: "button",
346
390
  onClick: async () => {
347
391
  if (!B) {
348
- L(A("auth.sso.enterUrl", "Please enter a metadata URL"));
392
+ L(j("auth.sso.enterUrl", "Please enter a metadata URL"));
349
393
  return;
350
394
  }
351
395
  L(null), U(!0);
352
396
  try {
353
397
  let e = await fetch(B);
354
398
  if (!e.ok) throw Error(`Failed to fetch: ${e.statusText}`);
355
- let t = y(await e.text());
399
+ let t = g(await e.text());
356
400
  t ? ($({
357
401
  ...Q,
358
402
  entityId: t.entityId,
359
403
  ssoUrl: t.ssoUrl,
360
404
  sloUrl: t.sloUrl || "",
361
405
  certificate: t.certificate
362
- }), z(A("auth.sso.importSuccessFromUrl", "SAML metadata imported successfully! Review and save the configuration.")), P(!0), V("")) : L(A("auth.sso.parseUrlError", "Failed to parse SAML metadata from URL."));
406
+ }), z(j("auth.sso.importSuccessFromUrl", "SAML metadata imported successfully! Review and save the configuration.")), P(!0), V("")) : L(j("auth.sso.parseUrlError", "Failed to parse SAML metadata from URL."));
363
407
  } catch (e) {
364
- L(e instanceof Error ? e.message : A("auth.sso.fetchError", "Failed to fetch metadata from URL"));
408
+ L(e instanceof Error ? e.message : j("auth.sso.fetchError", "Failed to fetch metadata from URL"));
365
409
  } finally {
366
410
  U(!1);
367
411
  }
368
412
  },
369
413
  disabled: H || !B,
370
414
  className: "px-4 py-2.5 rounded-xl bg-action-primary-bg text-white font-medium hover:bg-action-primary-bg-hover disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2",
371
- children: [H ? /* @__PURE__ */ h(r, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ h("svg", {
415
+ children: [H ? /* @__PURE__ */ p(r, { className: "w-4 h-4 animate-spin" }) : /* @__PURE__ */ p("svg", {
372
416
  className: "w-4 h-4",
373
417
  fill: "none",
374
418
  viewBox: "0 0 24 24",
375
419
  stroke: "currentColor",
376
- children: /* @__PURE__ */ h("path", {
420
+ children: /* @__PURE__ */ p("path", {
377
421
  strokeLinecap: "round",
378
422
  strokeLinejoin: "round",
379
423
  strokeWidth: 2,
380
424
  d: "M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
381
425
  })
382
- }), A("auth.sso.fetch", "Fetch")]
426
+ }), j("auth.sso.fetch", "Fetch")]
383
427
  })]
384
428
  })]
385
429
  })]
386
430
  })
387
431
  ]
388
432
  }),
389
- /* @__PURE__ */ g("div", {
433
+ /* @__PURE__ */ m("div", {
390
434
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
391
435
  children: [
392
- /* @__PURE__ */ h("h3", {
436
+ /* @__PURE__ */ p("h3", {
393
437
  className: "text-lg font-medium text-text-primary mb-4",
394
- children: A("auth.sso.spMetadata", "Service Provider (SP) Metadata")
438
+ children: j("auth.sso.spMetadata", "Service Provider (SP) Metadata")
395
439
  }),
396
- /* @__PURE__ */ h("p", {
440
+ /* @__PURE__ */ p("p", {
397
441
  className: "text-sm text-text-secondary mb-4",
398
- children: A("auth.sso.spMetadataDesc", "Provide these values to your Identity Provider when setting up the SAML integration:")
442
+ children: j("auth.sso.spMetadataDesc", "Provide these values to your Identity Provider when setting up the SAML integration:")
399
443
  }),
400
- /* @__PURE__ */ g("div", {
444
+ /* @__PURE__ */ m("div", {
401
445
  className: "space-y-4",
402
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
446
+ children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
403
447
  className: "block text-sm font-medium text-text-primary mb-1",
404
- children: A("auth.sso.spEntityId", "SP Entity ID / Audience URI")
405
- }), /* @__PURE__ */ g("div", {
448
+ children: j("auth.sso.spEntityId", "SP Entity ID / Audience URI")
449
+ }), /* @__PURE__ */ m("div", {
406
450
  className: "flex items-center gap-2",
407
- children: [/* @__PURE__ */ g("code", {
451
+ children: [/* @__PURE__ */ m("code", {
408
452
  className: "flex-1 px-3 py-2 rounded-lg bg-bg-sunken text-sm text-text-primary font-mono",
409
453
  children: [window.location.origin, "/auth/saml/metadata"]
410
- }), /* @__PURE__ */ h("button", {
411
- onClick: () => void v(`${window.location.origin}/auth/saml/metadata`),
454
+ }), /* @__PURE__ */ p("button", {
455
+ onClick: () => void h(`${window.location.origin}/auth/saml/metadata`),
412
456
  className: "px-3 py-2 rounded-lg border border-border-default text-text-secondary hover:bg-bg-sunken",
413
- children: A("auth.sso.copy", "Copy")
457
+ children: j("auth.sso.copy", "Copy")
414
458
  })]
415
- })] }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
459
+ })] }), /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
416
460
  className: "block text-sm font-medium text-text-primary mb-1",
417
- children: A("auth.sso.acsUrl", "Assertion Consumer Service (ACS) URL")
418
- }), /* @__PURE__ */ g("div", {
461
+ children: j("auth.sso.acsUrl", "Assertion Consumer Service (ACS) URL")
462
+ }), /* @__PURE__ */ m("div", {
419
463
  className: "flex items-center gap-2",
420
- children: [/* @__PURE__ */ g("code", {
464
+ children: [/* @__PURE__ */ m("code", {
421
465
  className: "flex-1 px-3 py-2 rounded-lg bg-bg-sunken text-sm text-text-primary font-mono",
422
466
  children: [window.location.origin, "/auth/sso/callback"]
423
- }), /* @__PURE__ */ h("button", {
424
- onClick: () => void v(`${window.location.origin}/auth/sso/callback`),
467
+ }), /* @__PURE__ */ p("button", {
468
+ onClick: () => void h(`${window.location.origin}/auth/sso/callback`),
425
469
  className: "px-3 py-2 rounded-lg border border-border-default text-text-secondary hover:bg-bg-sunken",
426
- children: A("auth.sso.copy", "Copy")
470
+ children: j("auth.sso.copy", "Copy")
427
471
  })]
428
472
  })] })]
429
473
  })
430
474
  ]
431
475
  }),
432
- /* @__PURE__ */ g("form", {
476
+ /* @__PURE__ */ m("form", {
433
477
  onSubmit: async (e) => {
434
478
  e.preventDefault(), L(null), z(null);
435
479
  try {
436
- await D(Q), z(A("auth.sso.saveSuccess", "SSO configuration saved successfully!")), P(!1);
480
+ await k(Q), z(j("auth.sso.saveSuccess", "SSO configuration saved successfully!")), P(!1);
437
481
  } catch (e) {
438
- L(e instanceof Error ? e.message : A("auth.sso.saveFailed", "Failed to save configuration"));
482
+ L(e instanceof Error ? e.message : j("auth.sso.saveFailed", "Failed to save configuration"));
439
483
  }
440
484
  },
441
485
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
442
486
  children: [
443
- /* @__PURE__ */ g("div", {
487
+ /* @__PURE__ */ m("div", {
444
488
  className: "flex items-center justify-between mb-6",
445
- children: [/* @__PURE__ */ h("h3", {
489
+ children: [/* @__PURE__ */ p("h3", {
446
490
  className: "text-lg font-medium text-text-primary",
447
- children: A("auth.sso.idpSettings", "Identity Provider (IdP) Settings")
448
- }), !N && S && /* @__PURE__ */ h("button", {
491
+ children: j("auth.sso.idpSettings", "Identity Provider (IdP) Settings")
492
+ }), !N && w && /* @__PURE__ */ p("button", {
449
493
  type: "button",
450
494
  onClick: () => P(!0),
451
495
  className: "px-4 py-2 rounded-lg border border-status-info-border text-text-link hover:bg-status-info-bg-subtle text-sm font-medium transition-colors",
452
- children: A("auth.sso.editConfig", "Edit Configuration")
496
+ children: j("auth.sso.editConfig", "Edit Configuration")
453
497
  })]
454
498
  }),
455
- /* @__PURE__ */ g("div", {
499
+ /* @__PURE__ */ m("div", {
456
500
  className: "space-y-5",
457
501
  children: [
458
- /* @__PURE__ */ g("div", { children: [
459
- /* @__PURE__ */ g("label", {
502
+ /* @__PURE__ */ m("div", { children: [
503
+ /* @__PURE__ */ m("label", {
460
504
  htmlFor: "sso-entity-id",
461
505
  className: "block text-sm font-medium text-text-primary mb-2",
462
506
  children: [
463
- A("auth.sso.idpEntityId", "IdP Entity ID / Issuer URL"),
507
+ j("auth.sso.idpEntityId", "IdP Entity ID / Issuer URL"),
464
508
  " ",
465
- /* @__PURE__ */ h("span", {
509
+ /* @__PURE__ */ p("span", {
466
510
  className: "text-status-error-text",
467
511
  "aria-hidden": "true",
468
512
  children: "*"
469
513
  })
470
514
  ]
471
515
  }),
472
- /* @__PURE__ */ h("input", {
516
+ /* @__PURE__ */ p("input", {
473
517
  id: "sso-entity-id",
474
518
  type: "url",
475
519
  value: Q.entityId,
@@ -477,34 +521,34 @@ function b() {
477
521
  ...Q,
478
522
  entityId: e.target.value
479
523
  }),
480
- disabled: !N && !!S,
481
- placeholder: A("auth.sso.idpEntityIdPlaceholder", "https://your-idp.example.com/saml/metadata"),
524
+ disabled: !N && !!w,
525
+ placeholder: j("auth.sso.idpEntityIdPlaceholder", "https://your-idp.example.com/saml/metadata"),
482
526
  required: !0,
483
527
  "aria-required": "true",
484
528
  "aria-describedby": "sso-entity-id-hint",
485
529
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg disabled:opacity-60 disabled:cursor-not-allowed transition-all"
486
530
  }),
487
- /* @__PURE__ */ h("p", {
531
+ /* @__PURE__ */ p("p", {
488
532
  id: "sso-entity-id-hint",
489
533
  className: "mt-1 text-xs text-text-secondary",
490
- children: A("auth.sso.idpEntityIdHelper", "The unique identifier of your Identity Provider")
534
+ children: j("auth.sso.idpEntityIdHelper", "The unique identifier of your Identity Provider")
491
535
  })
492
536
  ] }),
493
- /* @__PURE__ */ g("div", { children: [
494
- /* @__PURE__ */ g("label", {
537
+ /* @__PURE__ */ m("div", { children: [
538
+ /* @__PURE__ */ m("label", {
495
539
  htmlFor: "sso-sso-url",
496
540
  className: "block text-sm font-medium text-text-primary mb-2",
497
541
  children: [
498
- A("auth.sso.ssoUrl", "SSO URL (Login URL)"),
542
+ j("auth.sso.ssoUrl", "SSO URL (Login URL)"),
499
543
  " ",
500
- /* @__PURE__ */ h("span", {
544
+ /* @__PURE__ */ p("span", {
501
545
  className: "text-status-error-text",
502
546
  "aria-hidden": "true",
503
547
  children: "*"
504
548
  })
505
549
  ]
506
550
  }),
507
- /* @__PURE__ */ h("input", {
551
+ /* @__PURE__ */ p("input", {
508
552
  id: "sso-sso-url",
509
553
  type: "url",
510
554
  value: Q.ssoUrl,
@@ -512,26 +556,26 @@ function b() {
512
556
  ...Q,
513
557
  ssoUrl: e.target.value
514
558
  }),
515
- disabled: !N && !!S,
516
- placeholder: A("auth.sso.ssoUrlPlaceholder", "https://your-idp.example.com/saml/sso"),
559
+ disabled: !N && !!w,
560
+ placeholder: j("auth.sso.ssoUrlPlaceholder", "https://your-idp.example.com/saml/sso"),
517
561
  required: !0,
518
562
  "aria-required": "true",
519
563
  "aria-describedby": "sso-sso-url-hint",
520
564
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg disabled:opacity-60 disabled:cursor-not-allowed transition-all"
521
565
  }),
522
- /* @__PURE__ */ h("p", {
566
+ /* @__PURE__ */ p("p", {
523
567
  id: "sso-sso-url-hint",
524
568
  className: "mt-1 text-xs text-text-secondary",
525
- children: A("auth.sso.ssoUrlHelper", "The URL where users are redirected to authenticate")
569
+ children: j("auth.sso.ssoUrlHelper", "The URL where users are redirected to authenticate")
526
570
  })
527
571
  ] }),
528
- /* @__PURE__ */ g("div", { children: [
529
- /* @__PURE__ */ h("label", {
572
+ /* @__PURE__ */ m("div", { children: [
573
+ /* @__PURE__ */ p("label", {
530
574
  htmlFor: "sso-slo-url",
531
575
  className: "block text-sm font-medium text-text-primary mb-2",
532
- children: A("auth.sso.sloUrl", "Single Logout (SLO) URL")
576
+ children: j("auth.sso.sloUrl", "Single Logout (SLO) URL")
533
577
  }),
534
- /* @__PURE__ */ h("input", {
578
+ /* @__PURE__ */ p("input", {
535
579
  id: "sso-slo-url",
536
580
  type: "url",
537
581
  value: Q.sloUrl,
@@ -539,215 +583,215 @@ function b() {
539
583
  ...Q,
540
584
  sloUrl: e.target.value
541
585
  }),
542
- disabled: !N && !!S,
543
- placeholder: A("auth.sso.sloUrlPlaceholder", "https://your-idp.example.com/saml/slo"),
586
+ disabled: !N && !!w,
587
+ placeholder: j("auth.sso.sloUrlPlaceholder", "https://your-idp.example.com/saml/slo"),
544
588
  "aria-describedby": "sso-slo-url-hint",
545
589
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg disabled:opacity-60 disabled:cursor-not-allowed transition-all"
546
590
  }),
547
- /* @__PURE__ */ h("p", {
591
+ /* @__PURE__ */ p("p", {
548
592
  id: "sso-slo-url-hint",
549
593
  className: "mt-1 text-xs text-text-secondary",
550
- children: A("auth.sso.sloUrlHelper", "Optional: URL for single logout across all applications")
594
+ children: j("auth.sso.sloUrlHelper", "Optional: URL for single logout across all applications")
551
595
  })
552
596
  ] }),
553
- /* @__PURE__ */ g("div", { children: [
554
- /* @__PURE__ */ g("label", {
597
+ /* @__PURE__ */ m("div", { children: [
598
+ /* @__PURE__ */ m("label", {
555
599
  htmlFor: "sso-certificate",
556
600
  className: "block text-sm font-medium text-text-primary mb-2",
557
601
  children: [
558
- A("auth.sso.certificate", "X.509 Certificate"),
602
+ j("auth.sso.certificate", "X.509 Certificate"),
559
603
  " ",
560
- /* @__PURE__ */ h("span", {
604
+ /* @__PURE__ */ p("span", {
561
605
  className: "text-status-error-text",
562
606
  "aria-hidden": "true",
563
607
  children: "*"
564
608
  })
565
609
  ]
566
610
  }),
567
- /* @__PURE__ */ h("textarea", {
611
+ /* @__PURE__ */ p("textarea", {
568
612
  id: "sso-certificate",
569
613
  value: Q.certificate,
570
614
  onChange: (e) => $({
571
615
  ...Q,
572
616
  certificate: e.target.value
573
617
  }),
574
- disabled: !N && !!S,
575
- placeholder: A("auth.sso.certificatePlaceholder", "-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAX...\n-----END CERTIFICATE-----"),
618
+ disabled: !N && !!w,
619
+ placeholder: j("auth.sso.certificatePlaceholder", "-----BEGIN CERTIFICATE-----\nMIIDpDCCAoygAwIBAgIGAX...\n-----END CERTIFICATE-----"),
576
620
  required: !0,
577
621
  "aria-required": "true",
578
622
  "aria-describedby": "sso-certificate-hint",
579
623
  rows: 6,
580
624
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg disabled:opacity-60 disabled:cursor-not-allowed transition-all font-mono text-sm"
581
625
  }),
582
- /* @__PURE__ */ h("p", {
626
+ /* @__PURE__ */ p("p", {
583
627
  id: "sso-certificate-hint",
584
628
  className: "mt-1 text-xs text-text-secondary",
585
- children: A("auth.sso.certificateHelper", "The public X.509 certificate from your IdP for signature verification")
629
+ children: j("auth.sso.certificateHelper", "The public X.509 certificate from your IdP for signature verification")
586
630
  })
587
631
  ] })
588
632
  ]
589
633
  }),
590
- (N || !S) && /* @__PURE__ */ g("div", {
634
+ (N || !w) && /* @__PURE__ */ m("div", {
591
635
  className: "mt-6 flex items-center gap-3",
592
- children: [/* @__PURE__ */ h("button", {
636
+ children: [/* @__PURE__ */ p("button", {
593
637
  type: "submit",
594
- disabled: T,
638
+ disabled: D,
595
639
  className: "auth-primary-button flex items-center gap-2 px-6 py-3 font-medium",
596
- children: T ? /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(r, { className: "w-4 h-4 animate-spin" }), A("auth.sso.saving", "Saving...")] }) : A("auth.sso.saveConfig", "Save Configuration")
597
- }), N && /* @__PURE__ */ h("button", {
640
+ children: D ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(r, { className: "w-4 h-4 animate-spin" }), j("auth.sso.saving", "Saving...")] }) : j("auth.sso.saveConfig", "Save Configuration")
641
+ }), N && /* @__PURE__ */ p("button", {
598
642
  type: "button",
599
643
  onClick: () => {
600
- P(!1), S && $({
601
- entityId: S.entityId || "",
602
- ssoUrl: S.ssoUrl || "",
603
- sloUrl: S.sloUrl || "",
604
- certificate: S.certificate || "",
605
- enabled: S.enabled || !1
644
+ P(!1), w && $({
645
+ entityId: w.entityId || "",
646
+ ssoUrl: w.ssoUrl || "",
647
+ sloUrl: w.sloUrl || "",
648
+ certificate: w.certificate || "",
649
+ enabled: w.enabled || !1
606
650
  });
607
651
  },
608
652
  className: "px-6 py-3 rounded-xl border border-border-default text-text-primary font-medium hover:bg-bg-sunken transition-colors",
609
- children: A("auth.sso.cancel", "Cancel")
653
+ children: j("auth.sso.cancel", "Cancel")
610
654
  })]
611
655
  })
612
656
  ]
613
657
  }),
614
- S && /* @__PURE__ */ g("div", {
658
+ w && /* @__PURE__ */ m("div", {
615
659
  className: "p-6 rounded-xl border border-status-error-border bg-status-error-bg-subtle",
616
660
  children: [
617
- /* @__PURE__ */ h("h3", {
661
+ /* @__PURE__ */ p("h3", {
618
662
  className: "text-lg font-medium text-status-error-text mb-2",
619
- children: A("auth.sso.dangerZone", "Danger Zone")
663
+ children: j("auth.sso.dangerZone", "Danger Zone")
620
664
  }),
621
- /* @__PURE__ */ h("p", {
665
+ /* @__PURE__ */ p("p", {
622
666
  className: "text-sm text-status-error-text mb-4",
623
- children: A("auth.sso.dangerZoneDesc", "Deleting the SSO configuration will prevent users from signing in with their enterprise credentials. This action cannot be undone.")
667
+ children: j("auth.sso.dangerZoneDesc", "Deleting the SSO configuration will prevent users from signing in with their enterprise credentials. This action cannot be undone.")
624
668
  }),
625
- /* @__PURE__ */ h("button", {
669
+ /* @__PURE__ */ p("button", {
626
670
  onClick: () => F(!0),
627
- disabled: E,
671
+ disabled: O,
628
672
  className: "px-4 py-2 rounded-lg bg-status-error-bg text-white font-medium hover:bg-status-error-bg-hover disabled:opacity-50 transition-colors flex items-center gap-2",
629
- children: E ? /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(r, { className: "w-4 h-4 animate-spin" }), A("auth.sso.deleting", "Deleting...")] }) : A("auth.sso.deleteConfig", "Delete SSO Configuration")
673
+ children: O ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(r, { className: "w-4 h-4 animate-spin" }), j("auth.sso.deleting", "Deleting...")] }) : j("auth.sso.deleteConfig", "Delete SSO Configuration")
630
674
  })
631
675
  ]
632
676
  })
633
677
  ]
634
678
  }),
635
- !w && j === "oidc" && /* @__PURE__ */ g("div", {
679
+ !E && M === "oidc" && /* @__PURE__ */ m("div", {
636
680
  className: "space-y-6",
637
681
  children: [
638
- /* @__PURE__ */ g("div", {
682
+ /* @__PURE__ */ m("div", {
639
683
  className: "p-4 rounded-xl bg-accent-purple-subtle border border-accent-purple-subtle",
640
- children: [/* @__PURE__ */ h("h3", {
684
+ children: [/* @__PURE__ */ p("h3", {
641
685
  className: "font-medium text-accent-purple mb-2",
642
- children: A("auth.sso.oidcProviderInfo", "OIDC Provider Information")
643
- }), /* @__PURE__ */ h("p", {
686
+ children: j("auth.sso.oidcProviderInfo", "OIDC Provider Information")
687
+ }), /* @__PURE__ */ p("p", {
644
688
  className: "text-sm text-accent-purple",
645
- children: A("auth.sso.oidcProviderInfoDesc", "Your auth service acts as an OpenID Connect Provider. This allows other applications to authenticate users through your system using standard OAuth 2.0/OIDC flows.")
689
+ children: j("auth.sso.oidcProviderInfoDesc", "Your auth service acts as an OpenID Connect Provider. This allows other applications to authenticate users through your system using standard OAuth 2.0/OIDC flows.")
646
690
  })]
647
691
  }),
648
- /* @__PURE__ */ g("div", {
692
+ /* @__PURE__ */ m("div", {
649
693
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
650
694
  children: [
651
- /* @__PURE__ */ h("h3", {
695
+ /* @__PURE__ */ p("h3", {
652
696
  className: "text-lg font-medium text-text-primary mb-4",
653
- children: A("auth.sso.discoveryEndpoint", "Discovery Endpoint")
697
+ children: j("auth.sso.discoveryEndpoint", "Discovery Endpoint")
654
698
  }),
655
- /* @__PURE__ */ h("p", {
699
+ /* @__PURE__ */ p("p", {
656
700
  className: "text-sm text-text-secondary mb-4",
657
- children: A("auth.sso.discoveryEndpointDesc", "Applications can auto-configure by fetching the OpenID Connect Discovery document:")
701
+ children: j("auth.sso.discoveryEndpointDesc", "Applications can auto-configure by fetching the OpenID Connect Discovery document:")
658
702
  }),
659
- /* @__PURE__ */ g("div", {
703
+ /* @__PURE__ */ m("div", {
660
704
  className: "flex items-center gap-2",
661
- children: [/* @__PURE__ */ h("code", {
705
+ children: [/* @__PURE__ */ p("code", {
662
706
  className: "flex-1 px-3 py-2 rounded-lg bg-bg-sunken text-sm text-text-primary font-mono break-all",
663
- children: C?.issuer ? `${C.issuer}/.well-known/openid-configuration` : "Discovery endpoint unavailable until OIDC is configured"
664
- }), /* @__PURE__ */ h("button", {
707
+ children: T?.issuer ? `${T.issuer}/.well-known/openid-configuration` : "Discovery endpoint unavailable until OIDC is configured"
708
+ }), /* @__PURE__ */ p("button", {
665
709
  onClick: () => {
666
- let e = C?.issuer ? `${C.issuer}/.well-known/openid-configuration` : "";
667
- e && v(e);
710
+ let e = T?.issuer ? `${T.issuer}/.well-known/openid-configuration` : "";
711
+ e && h(e);
668
712
  },
669
- disabled: !C?.issuer,
713
+ disabled: !T?.issuer,
670
714
  className: "px-3 py-2 rounded-lg border border-border-default text-text-secondary hover:bg-bg-sunken flex-shrink-0",
671
- children: A("auth.sso.copy", "Copy")
715
+ children: j("auth.sso.copy", "Copy")
672
716
  })]
673
717
  })
674
718
  ]
675
719
  }),
676
- C && /* @__PURE__ */ g("div", {
720
+ T && /* @__PURE__ */ m("div", {
677
721
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
678
- children: [/* @__PURE__ */ h("h3", {
722
+ children: [/* @__PURE__ */ p("h3", {
679
723
  className: "text-lg font-medium text-text-primary mb-4",
680
- children: A("auth.sso.oidcEndpoints", "OIDC Endpoints")
681
- }), /* @__PURE__ */ h("div", {
724
+ children: j("auth.sso.oidcEndpoints", "OIDC Endpoints")
725
+ }), /* @__PURE__ */ p("div", {
682
726
  className: "space-y-4",
683
727
  children: [
684
728
  {
685
- label: A("auth.sso.issuer", "Issuer"),
686
- value: C.issuer
729
+ label: j("auth.sso.issuer", "Issuer"),
730
+ value: T.issuer
687
731
  },
688
732
  {
689
- label: A("auth.sso.authorizationEndpoint", "Authorization Endpoint"),
690
- value: C.authorizationEndpoint
733
+ label: j("auth.sso.authorizationEndpoint", "Authorization Endpoint"),
734
+ value: T.authorizationEndpoint
691
735
  },
692
736
  {
693
- label: A("auth.sso.tokenEndpoint", "Token Endpoint"),
694
- value: C.tokenEndpoint
737
+ label: j("auth.sso.tokenEndpoint", "Token Endpoint"),
738
+ value: T.tokenEndpoint
695
739
  },
696
740
  {
697
- label: A("auth.sso.userinfoEndpoint", "UserInfo Endpoint"),
698
- value: C.userinfoEndpoint
741
+ label: j("auth.sso.userinfoEndpoint", "UserInfo Endpoint"),
742
+ value: T.userinfoEndpoint
699
743
  },
700
744
  {
701
- label: A("auth.sso.jwksUri", "JWKS URI"),
702
- value: C.jwksUri
745
+ label: j("auth.sso.jwksUri", "JWKS URI"),
746
+ value: T.jwksUri
703
747
  }
704
- ].map((e) => /* @__PURE__ */ g("div", {
748
+ ].map((e) => /* @__PURE__ */ m("div", {
705
749
  className: "flex items-start gap-4",
706
- children: [/* @__PURE__ */ h("span", {
750
+ children: [/* @__PURE__ */ p("span", {
707
751
  className: "w-48 text-sm font-medium text-text-primary flex-shrink-0",
708
752
  children: e.label
709
- }), /* @__PURE__ */ h("code", {
753
+ }), /* @__PURE__ */ p("code", {
710
754
  className: "text-sm text-text-secondary font-mono break-all",
711
755
  children: e.value
712
756
  })]
713
757
  }, e.label))
714
758
  })]
715
759
  }),
716
- /* @__PURE__ */ g("div", {
760
+ /* @__PURE__ */ m("div", {
717
761
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
718
- children: [/* @__PURE__ */ h("h3", {
762
+ children: [/* @__PURE__ */ p("h3", {
719
763
  className: "text-lg font-medium text-text-primary mb-4",
720
- children: A("auth.sso.supportedFeatures", "Supported Features")
721
- }), /* @__PURE__ */ h("div", {
764
+ children: j("auth.sso.supportedFeatures", "Supported Features")
765
+ }), /* @__PURE__ */ p("div", {
722
766
  className: "grid grid-cols-2 gap-4",
723
767
  children: [
724
768
  {
725
- name: A("auth.sso.featAuthCodePkce", "Authorization Code + PKCE"),
769
+ name: j("auth.sso.featAuthCodePkce", "Authorization Code + PKCE"),
726
770
  status: !0
727
771
  },
728
772
  {
729
- name: A("auth.sso.featClientCreds", "Client Credentials"),
773
+ name: j("auth.sso.featClientCreds", "Client Credentials"),
730
774
  status: !0
731
775
  },
732
776
  {
733
- name: A("auth.sso.featDeviceAuth", "Device Authorization"),
777
+ name: j("auth.sso.featDeviceAuth", "Device Authorization"),
734
778
  status: !0
735
779
  },
736
780
  {
737
- name: A("auth.sso.featRefreshTokens", "Refresh Tokens"),
781
+ name: j("auth.sso.featRefreshTokens", "Refresh Tokens"),
738
782
  status: !0
739
783
  },
740
784
  {
741
- name: A("auth.sso.featTokenIntrospection", "Token Introspection"),
785
+ name: j("auth.sso.featTokenIntrospection", "Token Introspection"),
742
786
  status: !0
743
787
  },
744
788
  {
745
- name: A("auth.sso.featTokenRevocation", "Token Revocation"),
789
+ name: j("auth.sso.featTokenRevocation", "Token Revocation"),
746
790
  status: !0
747
791
  }
748
- ].map((e) => /* @__PURE__ */ g("div", {
792
+ ].map((e) => /* @__PURE__ */ m("div", {
749
793
  className: "flex items-center gap-2",
750
- children: [/* @__PURE__ */ h("span", { className: `w-2 h-2 rounded-full ${e.status ? "bg-status-success-text" : "bg-bg-sunken"}` }), /* @__PURE__ */ h("span", {
794
+ children: [/* @__PURE__ */ p("span", { className: `w-2 h-2 rounded-full ${e.status ? "bg-status-success-text" : "bg-bg-sunken"}` }), /* @__PURE__ */ p("span", {
751
795
  className: "text-sm text-text-primary",
752
796
  children: e.name
753
797
  })]
@@ -756,38 +800,38 @@ function b() {
756
800
  })
757
801
  ]
758
802
  }),
759
- !w && j === "clients" && /* @__PURE__ */ g("div", {
803
+ !E && M === "clients" && /* @__PURE__ */ m("div", {
760
804
  className: "space-y-6",
761
805
  children: [
762
- /* @__PURE__ */ g("div", {
806
+ /* @__PURE__ */ m("div", {
763
807
  className: "p-4 rounded-xl bg-status-warning-bg-subtle border border-status-warning-border",
764
- children: [/* @__PURE__ */ h("h3", {
808
+ children: [/* @__PURE__ */ p("h3", {
765
809
  className: "font-medium text-status-warning-text mb-2",
766
- children: A("auth.sso.clientManagement", "OIDC Client Management")
767
- }), /* @__PURE__ */ h("p", {
810
+ children: j("auth.sso.clientManagement", "OIDC Client Management")
811
+ }), /* @__PURE__ */ p("p", {
768
812
  className: "text-sm text-status-warning-text",
769
- children: A("auth.sso.clientManagementDesc", "Register applications that can authenticate users through your OIDC provider. Each client gets unique credentials to use in the OAuth 2.0 / OIDC flow.")
813
+ children: j("auth.sso.clientManagementDesc", "Register applications that can authenticate users through your OIDC provider. Each client gets unique credentials to use in the OAuth 2.0 / OIDC flow.")
770
814
  })]
771
815
  }),
772
- X && /* @__PURE__ */ g("div", {
816
+ X && /* @__PURE__ */ m("div", {
773
817
  className: "p-6 rounded-xl border-2 border-status-success-border bg-status-success-bg-subtle",
774
- children: [/* @__PURE__ */ g("div", {
818
+ children: [/* @__PURE__ */ m("div", {
775
819
  className: "flex items-start justify-between mb-4",
776
- children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("h3", {
820
+ children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("h3", {
777
821
  className: "text-lg font-medium text-status-success-text",
778
- children: A("auth.sso.clientCreatedTitle", "Client Created Successfully!")
779
- }), /* @__PURE__ */ h("p", {
822
+ children: j("auth.sso.clientCreatedTitle", "Client Created Successfully!")
823
+ }), /* @__PURE__ */ p("p", {
780
824
  className: "text-sm text-status-success-text mt-1",
781
- children: A("auth.sso.clientCreatedDesc", "Save these credentials securely. The client secret will not be shown again.")
782
- })] }), /* @__PURE__ */ h("button", {
825
+ children: j("auth.sso.clientCreatedDesc", "Save these credentials securely. The client secret will not be shown again.")
826
+ })] }), /* @__PURE__ */ p("button", {
783
827
  onClick: () => Z(null),
784
828
  className: "text-status-success-text hover:text-status-success-text",
785
- children: /* @__PURE__ */ h("svg", {
829
+ children: /* @__PURE__ */ p("svg", {
786
830
  className: "w-5 h-5",
787
831
  fill: "none",
788
832
  viewBox: "0 0 24 24",
789
833
  stroke: "currentColor",
790
- children: /* @__PURE__ */ h("path", {
834
+ children: /* @__PURE__ */ p("path", {
791
835
  strokeLinecap: "round",
792
836
  strokeLinejoin: "round",
793
837
  strokeWidth: 2,
@@ -795,86 +839,86 @@ function b() {
795
839
  })
796
840
  })
797
841
  })]
798
- }), /* @__PURE__ */ g("div", {
842
+ }), /* @__PURE__ */ m("div", {
799
843
  className: "space-y-3",
800
844
  children: [
801
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
845
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
802
846
  className: "block text-xs font-medium text-status-success-text mb-1",
803
- children: A("auth.sso.clientId", "Client ID")
804
- }), /* @__PURE__ */ g("div", {
847
+ children: j("auth.sso.clientId", "Client ID")
848
+ }), /* @__PURE__ */ m("div", {
805
849
  className: "flex gap-2",
806
- children: [/* @__PURE__ */ h("code", {
850
+ children: [/* @__PURE__ */ p("code", {
807
851
  className: "flex-1 px-3 py-2 rounded-lg bg-bg-surface text-sm font-mono border border-status-success-border",
808
852
  children: X.client_id
809
- }), /* @__PURE__ */ h("button", {
810
- onClick: () => void v(X.client_id),
853
+ }), /* @__PURE__ */ p("button", {
854
+ onClick: () => void h(X.client_id),
811
855
  className: "px-3 py-2 rounded-lg bg-status-success-bg text-white text-sm hover:bg-status-success-bg",
812
- children: A("auth.sso.copy", "Copy")
856
+ children: j("auth.sso.copy", "Copy")
813
857
  })]
814
858
  })] }),
815
- X.client_secret && /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
859
+ X.client_secret && /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
816
860
  className: "block text-xs font-medium text-status-success-text mb-1",
817
- children: A("auth.sso.clientSecret", "Client Secret (save now!)")
818
- }), /* @__PURE__ */ g("div", {
861
+ children: j("auth.sso.clientSecret", "Client Secret (save now!)")
862
+ }), /* @__PURE__ */ m("div", {
819
863
  className: "flex gap-2",
820
- children: [/* @__PURE__ */ h("code", {
864
+ children: [/* @__PURE__ */ p("code", {
821
865
  className: "flex-1 px-3 py-2 rounded-lg bg-bg-surface text-sm font-mono border border-status-success-border",
822
866
  children: X.client_secret
823
- }), /* @__PURE__ */ h("button", {
824
- onClick: () => void v(X.client_secret || ""),
867
+ }), /* @__PURE__ */ p("button", {
868
+ onClick: () => void h(X.client_secret || ""),
825
869
  className: "px-3 py-2 rounded-lg bg-status-success-bg text-white text-sm hover:bg-status-success-bg",
826
- children: A("auth.sso.copy", "Copy")
870
+ children: j("auth.sso.copy", "Copy")
827
871
  })]
828
872
  })] }),
829
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
873
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
830
874
  className: "block text-xs font-medium text-status-success-text mb-1",
831
- children: A("auth.sso.redirectUris", "Redirect URIs")
832
- }), /* @__PURE__ */ h("code", {
875
+ children: j("auth.sso.redirectUris", "Redirect URIs")
876
+ }), /* @__PURE__ */ p("code", {
833
877
  className: "block px-3 py-2 rounded-lg bg-bg-surface text-sm font-mono border border-status-success-border",
834
878
  children: X.redirect_uris.join(", ")
835
879
  })] })
836
880
  ]
837
881
  })]
838
882
  }),
839
- /* @__PURE__ */ g("div", {
883
+ /* @__PURE__ */ m("div", {
840
884
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
841
- children: [/* @__PURE__ */ g("div", {
885
+ children: [/* @__PURE__ */ m("div", {
842
886
  className: "flex items-center justify-between mb-6",
843
- children: [/* @__PURE__ */ h("h3", {
887
+ children: [/* @__PURE__ */ p("h3", {
844
888
  className: "text-lg font-medium text-text-primary",
845
- children: A("auth.sso.registerClient", "Register New Client")
846
- }), !W && /* @__PURE__ */ g("button", {
889
+ children: j("auth.sso.registerClient", "Register New Client")
890
+ }), !W && /* @__PURE__ */ m("button", {
847
891
  onClick: () => G(!0),
848
892
  className: "px-4 py-2 rounded-lg bg-action-primary-bg text-white font-medium hover:bg-action-primary-bg-hover transition-colors flex items-center gap-2",
849
- children: [/* @__PURE__ */ h("svg", {
893
+ children: [/* @__PURE__ */ p("svg", {
850
894
  className: "w-4 h-4",
851
895
  fill: "none",
852
896
  viewBox: "0 0 24 24",
853
897
  stroke: "currentColor",
854
- children: /* @__PURE__ */ h("path", {
898
+ children: /* @__PURE__ */ p("path", {
855
899
  strokeLinecap: "round",
856
900
  strokeLinejoin: "round",
857
901
  strokeWidth: 2,
858
902
  d: "M12 4v16m8-8H4"
859
903
  })
860
- }), A("auth.sso.newClient", "New Client")]
904
+ }), j("auth.sso.newClient", "New Client")]
861
905
  })]
862
- }), W ? /* @__PURE__ */ g("div", {
906
+ }), W ? /* @__PURE__ */ m("div", {
863
907
  className: "space-y-5",
864
908
  children: [
865
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ g("label", {
909
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ m("label", {
866
910
  htmlFor: "oidc-client-name",
867
911
  className: "block text-sm font-medium text-text-primary mb-2",
868
912
  children: [
869
- A("auth.sso.clientName", "Client Name"),
913
+ j("auth.sso.clientName", "Client Name"),
870
914
  " ",
871
- /* @__PURE__ */ h("span", {
915
+ /* @__PURE__ */ p("span", {
872
916
  className: "text-status-error-text",
873
917
  "aria-hidden": "true",
874
918
  children: "*"
875
919
  })
876
920
  ]
877
- }), /* @__PURE__ */ h("input", {
921
+ }), /* @__PURE__ */ p("input", {
878
922
  id: "oidc-client-name",
879
923
  type: "text",
880
924
  value: K.client_name,
@@ -882,25 +926,25 @@ function b() {
882
926
  ...K,
883
927
  client_name: e.target.value
884
928
  }),
885
- placeholder: A("auth.sso.clientNamePlaceholder", "My Application"),
929
+ placeholder: j("auth.sso.clientNamePlaceholder", "My Application"),
886
930
  "aria-required": "true",
887
931
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
888
932
  })] }),
889
- /* @__PURE__ */ g("div", { children: [
890
- /* @__PURE__ */ g("label", {
933
+ /* @__PURE__ */ m("div", { children: [
934
+ /* @__PURE__ */ m("label", {
891
935
  htmlFor: "oidc-redirect-uris",
892
936
  className: "block text-sm font-medium text-text-primary mb-2",
893
937
  children: [
894
- A("auth.sso.redirectUris", "Redirect URIs"),
938
+ j("auth.sso.redirectUris", "Redirect URIs"),
895
939
  " ",
896
- /* @__PURE__ */ h("span", {
940
+ /* @__PURE__ */ p("span", {
897
941
  className: "text-status-error-text",
898
942
  "aria-hidden": "true",
899
943
  children: "*"
900
944
  })
901
945
  ]
902
946
  }),
903
- /* @__PURE__ */ h("input", {
947
+ /* @__PURE__ */ p("input", {
904
948
  id: "oidc-redirect-uris",
905
949
  type: "text",
906
950
  value: K.redirect_uris,
@@ -908,29 +952,29 @@ function b() {
908
952
  ...K,
909
953
  redirect_uris: e.target.value
910
954
  }),
911
- placeholder: A("auth.sso.redirectUrisPlaceholder", "http://localhost:3000/callback, https://app.example.com/callback"),
955
+ placeholder: j("auth.sso.redirectUrisPlaceholder", "http://localhost:3000/callback, https://app.example.com/callback"),
912
956
  "aria-required": "true",
913
957
  "aria-describedby": "oidc-redirect-uris-hint",
914
958
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary placeholder-text-tertiary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all"
915
959
  }),
916
- /* @__PURE__ */ h("p", {
960
+ /* @__PURE__ */ p("p", {
917
961
  id: "oidc-redirect-uris-hint",
918
962
  className: "mt-1 text-xs text-text-secondary",
919
- children: A("auth.sso.redirectUrisHelper", "Separate multiple URIs with commas")
963
+ children: j("auth.sso.redirectUrisHelper", "Separate multiple URIs with commas")
920
964
  })
921
965
  ] }),
922
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
966
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
923
967
  className: "block text-sm font-medium text-text-primary mb-2",
924
- children: A("auth.sso.grantTypes", "Grant Types")
925
- }), /* @__PURE__ */ h("div", {
968
+ children: j("auth.sso.grantTypes", "Grant Types")
969
+ }), /* @__PURE__ */ p("div", {
926
970
  className: "flex flex-wrap gap-3",
927
971
  children: [
928
972
  "authorization_code",
929
973
  "refresh_token",
930
974
  "client_credentials"
931
- ].map((e) => /* @__PURE__ */ g("label", {
975
+ ].map((e) => /* @__PURE__ */ m("label", {
932
976
  className: "flex items-center gap-2 cursor-pointer",
933
- children: [/* @__PURE__ */ h("input", {
977
+ children: [/* @__PURE__ */ p("input", {
934
978
  type: "checkbox",
935
979
  checked: K.grant_types.includes(e),
936
980
  onChange: (t) => {
@@ -943,17 +987,17 @@ function b() {
943
987
  });
944
988
  },
945
989
  className: "w-4 h-4 rounded border-border-default text-text-link focus:ring-action-primary-bg"
946
- }), /* @__PURE__ */ h("span", {
990
+ }), /* @__PURE__ */ p("span", {
947
991
  className: "text-sm text-text-primary",
948
992
  children: e.replace(/_/g, " ")
949
993
  })]
950
994
  }, e))
951
995
  })] }),
952
- /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
996
+ /* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p("label", {
953
997
  htmlFor: "oidc-token-auth-method",
954
998
  className: "block text-sm font-medium text-text-primary mb-2",
955
- children: A("auth.sso.tokenEndpointAuth", "Token Endpoint Auth Method")
956
- }), /* @__PURE__ */ g("select", {
999
+ children: j("auth.sso.tokenEndpointAuth", "Token Endpoint Auth Method")
1000
+ }), /* @__PURE__ */ m("select", {
957
1001
  id: "oidc-token-auth-method",
958
1002
  value: K.token_endpoint_auth_method,
959
1003
  onChange: (e) => q({
@@ -962,32 +1006,32 @@ function b() {
962
1006
  }),
963
1007
  className: "block w-full px-4 py-3 border border-border-default rounded-xl bg-bg-surface text-text-primary focus:outline-none focus:ring-2 focus:ring-action-primary-bg/20 focus:border-action-primary-bg transition-all",
964
1008
  children: [
965
- /* @__PURE__ */ h("option", {
1009
+ /* @__PURE__ */ p("option", {
966
1010
  value: "none",
967
- children: A("auth.sso.tokenAuthNone", "None (Public Client - SPAs, Mobile Apps)")
1011
+ children: j("auth.sso.tokenAuthNone", "None (Public Client - SPAs, Mobile Apps)")
968
1012
  }),
969
- /* @__PURE__ */ h("option", {
1013
+ /* @__PURE__ */ p("option", {
970
1014
  value: "client_secret_basic",
971
- children: A("auth.sso.tokenAuthBasic", "Client Secret Basic")
1015
+ children: j("auth.sso.tokenAuthBasic", "Client Secret Basic")
972
1016
  }),
973
- /* @__PURE__ */ h("option", {
1017
+ /* @__PURE__ */ p("option", {
974
1018
  value: "client_secret_post",
975
- children: A("auth.sso.tokenAuthPost", "Client Secret Post")
1019
+ children: j("auth.sso.tokenAuthPost", "Client Secret Post")
976
1020
  })
977
1021
  ]
978
1022
  })] }),
979
- /* @__PURE__ */ g("div", {
1023
+ /* @__PURE__ */ m("div", {
980
1024
  className: "flex items-center gap-3 pt-2",
981
- children: [/* @__PURE__ */ h("button", {
1025
+ children: [/* @__PURE__ */ p("button", {
982
1026
  onClick: async () => {
983
1027
  if (!K.client_name || !K.redirect_uris) {
984
- L(A("auth.sso.clientRequired", "Client name and redirect URI are required"));
1028
+ L(j("auth.sso.clientRequired", "Client name and redirect URI are required"));
985
1029
  return;
986
1030
  }
987
1031
  Y(!0), L(null);
988
1032
  try {
989
- let e = C?.registrationEndpoint;
990
- if (!e) throw Error(A("auth.sso.oidcNotConfigured", "OIDC dynamic client registration is not configured for this environment."));
1033
+ let e = T?.registrationEndpoint;
1034
+ if (!e) throw Error(j("auth.sso.oidcNotConfigured", "OIDC dynamic client registration is not configured for this environment."));
991
1035
  let t = await fetch(e, {
992
1036
  method: "POST",
993
1037
  headers: { "Content-Type": "application/json" },
@@ -1003,22 +1047,22 @@ function b() {
1003
1047
  let e = await t.json();
1004
1048
  throw Error(e.error_description || e.error || "Registration failed");
1005
1049
  }
1006
- Z(await t.json()), z(A("auth.sso.clientRegistered", "OIDC client registered successfully! Save the client credentials.")), G(!1), q({
1050
+ Z(await t.json()), z(j("auth.sso.clientRegistered", "OIDC client registered successfully! Save the client credentials.")), G(!1), q({
1007
1051
  client_name: "",
1008
1052
  redirect_uris: "",
1009
1053
  grant_types: ["authorization_code", "refresh_token"],
1010
1054
  token_endpoint_auth_method: "none"
1011
1055
  });
1012
1056
  } catch (e) {
1013
- L(e instanceof Error ? e.message : A("auth.sso.registerFailed", "Failed to register client"));
1057
+ L(e instanceof Error ? e.message : j("auth.sso.registerFailed", "Failed to register client"));
1014
1058
  } finally {
1015
1059
  Y(!1);
1016
1060
  }
1017
1061
  },
1018
1062
  disabled: J,
1019
1063
  className: "auth-primary-button flex items-center gap-2 px-6 py-3 font-medium",
1020
- children: J ? /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ h(r, { className: "w-4 h-4 animate-spin" }), A("auth.sso.registering", "Registering...")] }) : A("auth.sso.registerClientButton", "Register Client")
1021
- }), /* @__PURE__ */ h("button", {
1064
+ children: J ? /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p(r, { className: "w-4 h-4 animate-spin" }), j("auth.sso.registering", "Registering...")] }) : j("auth.sso.registerClientButton", "Register Client")
1065
+ }), /* @__PURE__ */ p("button", {
1022
1066
  onClick: () => {
1023
1067
  G(!1), q({
1024
1068
  client_name: "",
@@ -1028,67 +1072,67 @@ function b() {
1028
1072
  });
1029
1073
  },
1030
1074
  className: "px-6 py-3 rounded-xl border border-border-default text-text-primary font-medium hover:bg-bg-sunken transition-colors",
1031
- children: A("auth.sso.cancel", "Cancel")
1075
+ children: j("auth.sso.cancel", "Cancel")
1032
1076
  })]
1033
1077
  })
1034
1078
  ]
1035
- }) : /* @__PURE__ */ g("div", {
1079
+ }) : /* @__PURE__ */ m("div", {
1036
1080
  className: "text-center py-8 text-text-secondary",
1037
- children: [/* @__PURE__ */ h("svg", {
1081
+ children: [/* @__PURE__ */ p("svg", {
1038
1082
  className: "w-12 h-12 mx-auto mb-3 text-text-muted",
1039
1083
  fill: "none",
1040
1084
  viewBox: "0 0 24 24",
1041
1085
  stroke: "currentColor",
1042
- children: /* @__PURE__ */ h("path", {
1086
+ children: /* @__PURE__ */ p("path", {
1043
1087
  strokeLinecap: "round",
1044
1088
  strokeLinejoin: "round",
1045
1089
  strokeWidth: 1.5,
1046
1090
  d: "M15 7a2 2 0 012 2m4 0a6 6 0 01-7.743 5.743L11 17H9v2H7v2H4a1 1 0 01-1-1v-2.586a1 1 0 01.293-.707l5.964-5.964A6 6 0 1121 9z"
1047
1091
  })
1048
- }), /* @__PURE__ */ h("p", {
1092
+ }), /* @__PURE__ */ p("p", {
1049
1093
  className: "text-sm",
1050
- children: A("auth.sso.emptyClients", "Click \"New Client\" to register an OAuth 2.0 / OIDC client application.")
1094
+ children: j("auth.sso.emptyClients", "Click \"New Client\" to register an OAuth 2.0 / OIDC client application.")
1051
1095
  })]
1052
1096
  })]
1053
1097
  }),
1054
- /* @__PURE__ */ g("div", {
1098
+ /* @__PURE__ */ m("div", {
1055
1099
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
1056
- children: [/* @__PURE__ */ h("h3", {
1100
+ children: [/* @__PURE__ */ p("h3", {
1057
1101
  className: "text-lg font-medium text-text-primary mb-4",
1058
- children: A("auth.sso.preconfiguredClients", "Pre-configured Clients")
1059
- }), /* @__PURE__ */ h("div", {
1102
+ children: j("auth.sso.preconfiguredClients", "Pre-configured Clients")
1103
+ }), /* @__PURE__ */ p("div", {
1060
1104
  className: "space-y-4",
1061
- children: /* @__PURE__ */ g("div", {
1105
+ children: /* @__PURE__ */ m("div", {
1062
1106
  className: "p-4 rounded-lg bg-bg-canvas/50 border border-border-default",
1063
1107
  children: [
1064
- /* @__PURE__ */ g("div", {
1108
+ /* @__PURE__ */ m("div", {
1065
1109
  className: "flex items-center justify-between mb-2",
1066
- children: [/* @__PURE__ */ h("span", {
1110
+ children: [/* @__PURE__ */ p("span", {
1067
1111
  className: "font-medium text-text-primary",
1068
1112
  children: "tenant-frontend"
1069
- }), /* @__PURE__ */ h("span", {
1113
+ }), /* @__PURE__ */ p("span", {
1070
1114
  className: "px-2 py-1 rounded-full text-xs bg-status-success-bg-subtle text-status-success-text",
1071
- children: A("auth.sso.active", "Active")
1115
+ children: j("auth.sso.active", "Active")
1072
1116
  })]
1073
1117
  }),
1074
- /* @__PURE__ */ h("p", {
1118
+ /* @__PURE__ */ p("p", {
1075
1119
  className: "text-sm text-text-secondary",
1076
- children: A("auth.sso.preconfigClientDesc", "Default frontend client for tenant authentication")
1120
+ children: j("auth.sso.preconfigClientDesc", "Default frontend client for tenant authentication")
1077
1121
  }),
1078
- /* @__PURE__ */ g("div", {
1122
+ /* @__PURE__ */ m("div", {
1079
1123
  className: "mt-2 flex flex-wrap gap-2",
1080
1124
  children: [
1081
- /* @__PURE__ */ h("span", {
1125
+ /* @__PURE__ */ p("span", {
1082
1126
  className: "px-2 py-0.5 rounded bg-bg-sunken text-xs text-text-primary",
1083
1127
  children: "authorization_code"
1084
1128
  }),
1085
- /* @__PURE__ */ h("span", {
1129
+ /* @__PURE__ */ p("span", {
1086
1130
  className: "px-2 py-0.5 rounded bg-bg-sunken text-xs text-text-primary",
1087
1131
  children: "refresh_token"
1088
1132
  }),
1089
- /* @__PURE__ */ h("span", {
1133
+ /* @__PURE__ */ p("span", {
1090
1134
  className: "px-2 py-0.5 rounded bg-bg-sunken text-xs text-text-primary",
1091
- children: A("auth.sso.pkceRequired", "PKCE required")
1135
+ children: j("auth.sso.pkceRequired", "PKCE required")
1092
1136
  })
1093
1137
  ]
1094
1138
  })
@@ -1098,109 +1142,109 @@ function b() {
1098
1142
  })
1099
1143
  ]
1100
1144
  }),
1101
- !w && j === "test" && /* @__PURE__ */ g("div", {
1145
+ !E && M === "test" && /* @__PURE__ */ m("div", {
1102
1146
  className: "space-y-6",
1103
1147
  children: [
1104
- /* @__PURE__ */ g("div", {
1148
+ /* @__PURE__ */ m("div", {
1105
1149
  className: "p-4 rounded-xl bg-status-warning-bg-subtle border border-status-warning-border",
1106
- children: [/* @__PURE__ */ h("h3", {
1150
+ children: [/* @__PURE__ */ p("h3", {
1107
1151
  className: "font-medium text-status-warning-text mb-2",
1108
- children: A("auth.sso.testLoginTitle", "Test SSO Login")
1109
- }), /* @__PURE__ */ h("p", {
1152
+ children: j("auth.sso.testLoginTitle", "Test SSO Login")
1153
+ }), /* @__PURE__ */ p("p", {
1110
1154
  className: "text-sm text-status-warning-text",
1111
- children: A("auth.sso.testLoginDesc", "Use this section to test your SSO configuration before rolling it out to users. Make sure your IdP is properly configured with the SP metadata above.")
1155
+ children: j("auth.sso.testLoginDesc", "Use this section to test your SSO configuration before rolling it out to users. Make sure your IdP is properly configured with the SP metadata above.")
1112
1156
  })]
1113
1157
  }),
1114
- /* @__PURE__ */ g("div", {
1158
+ /* @__PURE__ */ m("div", {
1115
1159
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
1116
1160
  children: [
1117
- /* @__PURE__ */ h("h3", {
1161
+ /* @__PURE__ */ p("h3", {
1118
1162
  className: "text-lg font-medium text-text-primary mb-4",
1119
- children: A("auth.sso.spInitiatedTest", "SP-Initiated Login Test")
1163
+ children: j("auth.sso.spInitiatedTest", "SP-Initiated Login Test")
1120
1164
  }),
1121
- /* @__PURE__ */ h("p", {
1165
+ /* @__PURE__ */ p("p", {
1122
1166
  className: "text-sm text-text-secondary mb-4",
1123
- children: A("auth.sso.spInitiatedTestDesc", "Click the button below to initiate an SSO login flow. You will be redirected to your IdP to authenticate.")
1167
+ children: j("auth.sso.spInitiatedTestDesc", "Click the button below to initiate an SSO login flow. You will be redirected to your IdP to authenticate.")
1124
1168
  }),
1125
- S && S.enabled ? /* @__PURE__ */ g("a", {
1169
+ w && w.enabled ? /* @__PURE__ */ m("a", {
1126
1170
  href: `${window.location.origin}/auth/sso/login`,
1127
1171
  className: "inline-flex items-center gap-2 px-6 py-3 rounded-xl bg-status-success-bg text-white font-medium shadow-sm hover:opacity-90 transition-all duration-200",
1128
- children: [/* @__PURE__ */ h("svg", {
1172
+ children: [/* @__PURE__ */ p("svg", {
1129
1173
  className: "w-5 h-5",
1130
1174
  fill: "none",
1131
1175
  viewBox: "0 0 24 24",
1132
1176
  stroke: "currentColor",
1133
- children: /* @__PURE__ */ h("path", {
1177
+ children: /* @__PURE__ */ p("path", {
1134
1178
  strokeLinecap: "round",
1135
1179
  strokeLinejoin: "round",
1136
1180
  strokeWidth: 2,
1137
1181
  d: "M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
1138
1182
  })
1139
- }), A("auth.sso.testSsoLoginButton", "Test SSO Login")]
1140
- }) : /* @__PURE__ */ h("div", {
1183
+ }), j("auth.sso.testSsoLoginButton", "Test SSO Login")]
1184
+ }) : /* @__PURE__ */ p("div", {
1141
1185
  className: "p-4 rounded-xl bg-bg-sunken/50 text-text-secondary text-sm",
1142
- children: S ? A("auth.sso.disabledTest", "SSO is disabled. Enable it to test the login flow.") : A("auth.sso.notConfigured", "SSO is not configured. Please configure your IdP settings first.")
1186
+ children: w ? j("auth.sso.disabledTest", "SSO is disabled. Enable it to test the login flow.") : j("auth.sso.notConfigured", "SSO is not configured. Please configure your IdP settings first.")
1143
1187
  })
1144
1188
  ]
1145
1189
  }),
1146
- /* @__PURE__ */ g("div", {
1190
+ /* @__PURE__ */ m("div", {
1147
1191
  className: "p-6 rounded-xl border border-border-subtle bg-bg-surface",
1148
- children: [/* @__PURE__ */ h("h3", {
1192
+ children: [/* @__PURE__ */ p("h3", {
1149
1193
  className: "text-lg font-medium text-text-primary mb-4",
1150
- children: A("auth.sso.testResults", "Test Results")
1151
- }), /* @__PURE__ */ h("p", {
1194
+ children: j("auth.sso.testResults", "Test Results")
1195
+ }), /* @__PURE__ */ p("p", {
1152
1196
  className: "text-sm text-text-secondary",
1153
- children: A("auth.sso.testResultsDesc", "After testing, results will appear here. Check the browser console for detailed logs.")
1197
+ children: j("auth.sso.testResultsDesc", "After testing, results will appear here. Check the browser console for detailed logs.")
1154
1198
  })]
1155
1199
  })
1156
1200
  ]
1157
1201
  })
1158
1202
  ]
1159
- }) : /* @__PURE__ */ h("div", {
1203
+ }) : /* @__PURE__ */ p("div", {
1160
1204
  className: "max-w-5xl mx-auto p-6",
1161
- children: /* @__PURE__ */ g("div", {
1205
+ children: /* @__PURE__ */ m("div", {
1162
1206
  className: "text-center py-16 border-2 border-dashed border-border-subtle rounded-xl",
1163
1207
  children: [
1164
- /* @__PURE__ */ h("div", {
1208
+ /* @__PURE__ */ p("div", {
1165
1209
  className: "w-16 h-16 mx-auto mb-4 rounded-full bg-status-warning-bg-subtle flex items-center justify-center",
1166
- children: /* @__PURE__ */ h(n, { className: "w-8 h-8 text-status-warning-text" })
1210
+ children: /* @__PURE__ */ p(n, { className: "w-8 h-8 text-status-warning-text" })
1167
1211
  }),
1168
- /* @__PURE__ */ h("h2", {
1212
+ /* @__PURE__ */ p("h2", {
1169
1213
  className: "text-xl font-semibold text-text-primary mb-2",
1170
- children: A("auth.sso.enterprisePlanRequired", "Enterprise Plan Required")
1214
+ children: j("auth.sso.enterprisePlanRequired", "Enterprise Plan Required")
1171
1215
  }),
1172
- /* @__PURE__ */ h("p", {
1216
+ /* @__PURE__ */ p("p", {
1173
1217
  className: "text-text-secondary mb-2",
1174
- children: A("auth.sso.enterprisePlanRequiredDesc", "Single Sign-On (SAML / OIDC) configuration is available on the Enterprise plan.")
1218
+ children: j("auth.sso.enterprisePlanRequiredDesc", "Single Sign-On (SAML / OIDC) configuration is available on the Enterprise plan.")
1175
1219
  }),
1176
- /* @__PURE__ */ h("p", {
1220
+ /* @__PURE__ */ p("p", {
1177
1221
  className: "text-sm text-text-secondary",
1178
- children: A("auth.sso.contactSales", "Contact sales to upgrade your workspace to the Enterprise plan.")
1222
+ children: j("auth.sso.contactSales", "Contact sales to upgrade your workspace to the Enterprise plan.")
1179
1223
  })
1180
1224
  ]
1181
1225
  })
1182
- }) : /* @__PURE__ */ h("div", {
1226
+ }) : /* @__PURE__ */ p("div", {
1183
1227
  className: "max-w-5xl mx-auto p-6",
1184
- children: /* @__PURE__ */ g("div", {
1228
+ children: /* @__PURE__ */ m("div", {
1185
1229
  className: "text-center py-16 border-2 border-dashed border-border-subtle rounded-xl",
1186
1230
  children: [
1187
- /* @__PURE__ */ h("div", {
1231
+ /* @__PURE__ */ p("div", {
1188
1232
  className: "w-16 h-16 mx-auto mb-4 rounded-full bg-status-error-bg-subtle flex items-center justify-center",
1189
- children: /* @__PURE__ */ h(n, { className: "w-8 h-8 text-status-error-text" })
1233
+ children: /* @__PURE__ */ p(n, { className: "w-8 h-8 text-status-error-text" })
1190
1234
  }),
1191
- /* @__PURE__ */ h("h2", {
1235
+ /* @__PURE__ */ p("h2", {
1192
1236
  className: "text-xl font-semibold text-text-primary mb-2",
1193
- children: A("auth.sso.adminRequired", "Admin Access Required")
1237
+ children: j("auth.sso.adminRequired", "Admin Access Required")
1194
1238
  }),
1195
- /* @__PURE__ */ h("p", {
1239
+ /* @__PURE__ */ p("p", {
1196
1240
  className: "text-text-secondary",
1197
- children: A("auth.sso.adminRequiredDesc", "You need administrator privileges to configure SSO settings.")
1241
+ children: j("auth.sso.adminRequiredDesc", "You need administrator privileges to configure SSO settings.")
1198
1242
  })
1199
1243
  ]
1200
1244
  })
1201
1245
  });
1202
1246
  }
1203
1247
  //#endregion
1204
- export { b as SsoConfigPage };
1248
+ export { _ as SsoConfigPage };
1205
1249
 
1206
1250
  //# sourceMappingURL=SsoConfigPage.js.map