@getauthui/core 0.1.4 → 0.1.6

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.
@@ -1,7 +1,7 @@
1
- import { state as h, property as g, customElement as O, query as gt } from "lit/decorators.js";
2
- import { css as F, LitElement as it, nothing as o, html as r, svg as d } from "lit";
3
- import { Client as at, Account as nt, Teams as bt, ID as j, Avatars as yt } from "appwrite";
4
- const wt = {
1
+ import { state as d, property as g, customElement as R, query as st } from "lit/decorators.js";
2
+ import { css as O, LitElement as rt, nothing as o, html as r, svg as h } from "lit";
3
+ import { Client as lt, Account as ct, Teams as xt, ID as H, Avatars as kt } from "appwrite";
4
+ const Ct = {
5
5
  signIn: "Sign in",
6
6
  dialogSignIn: "Sign in",
7
7
  signUp: "Sign up",
@@ -43,6 +43,7 @@ const wt = {
43
43
  resetPassword: "Reset password",
44
44
  resetLinkSent: "If an account exists for {email}, a reset link is on its way.",
45
45
  passwordUpdated: "Your password was updated. You can sign in now.",
46
+ passwordChanged: "Your password was updated.",
46
47
  sendResetLink: "Send reset link",
47
48
  requestNewLink: "Request a new link",
48
49
  agreeTo: "By continuing you agree to our",
@@ -169,13 +170,13 @@ const wt = {
169
170
  guestAccountDescription: "Add an email and password to keep your data.",
170
171
  preview: "Preview"
171
172
  };
172
- function $t(e, t = {}) {
173
+ function St(e, t = {}) {
173
174
  return e.replace(
174
175
  /\{(\w+)\}/g,
175
176
  (i, s) => s in t ? String(t[s]) : `{${s}}`
176
177
  );
177
178
  }
178
- const xt = {
179
+ const At = {
179
180
  amazon: "Amazon",
180
181
  apple: "Apple",
181
182
  appwrite: "Appwrite",
@@ -227,9 +228,9 @@ const xt = {
227
228
  zoom: "Zoom"
228
229
  };
229
230
  function q(e) {
230
- return xt[e] ?? e.charAt(0).toUpperCase() + e.slice(1);
231
+ return At[e] ?? e.charAt(0).toUpperCase() + e.slice(1);
231
232
  }
232
- const H = (e, t, i = 401) => Object.assign(new Error(t), { type: e, code: i }), P = () => (/* @__PURE__ */ new Date()).toISOString(), U = (e) => new Date(Date.now() - e * 6e4).toISOString(), W = [
233
+ const j = (e, t, i = 401) => Object.assign(new Error(t), { type: e, code: i }), A = () => (/* @__PURE__ */ new Date()).toISOString(), U = (e) => new Date(Date.now() - e * 6e4).toISOString(), W = [
233
234
  "amber",
234
235
  "brave",
235
236
  "calm",
@@ -242,13 +243,13 @@ const H = (e, t, i = 401) => Object.assign(new Error(t), { type: e, code: i }),
242
243
  "juniper",
243
244
  "kite",
244
245
  "lumen"
245
- ], ot = () => `${W[Math.floor(Math.random() * W.length)]}-${W[Math.floor(Math.random() * W.length)]}`, T = () => Math.random().toString(36).slice(2, 12), ct = () => Array.from({ length: 2 }, () => Math.random().toString(36).slice(2, 7)).join("-"), kt = {
246
+ ], dt = () => `${W[Math.floor(Math.random() * W.length)]}-${W[Math.floor(Math.random() * W.length)]}`, _ = () => Math.random().toString(36).slice(2, 12), ht = () => Array.from({ length: 2 }, () => Math.random().toString(36).slice(2, 7)).join("-"), Pt = {
246
247
  name: "Ada Lovelace",
247
248
  email: "ada@example.com",
248
249
  phone: "+15550100"
249
250
  };
250
- class Ct {
251
- constructor(t = kt) {
251
+ class It {
252
+ constructor(t = Pt) {
252
253
  this.seed = t, this.user = null, this.mfaPending = !1, this.mfaEnabled = !1, this.totpEnrolled = !1, this.recoveryCodes = [], this.lastChallenge = 0, this.sessions = [], this.identities = [], this.logs = [], this.tokens = /* @__PURE__ */ new Map(), this.pendingAuthenticator = null;
253
254
  }
254
255
  // ───────────────────────── helpers ─────────────────────────
@@ -257,7 +258,7 @@ class Ct {
257
258
  return this.user = {
258
259
  $id: "preview-user",
259
260
  $createdAt: U(1440 * 30),
260
- $updatedAt: P(),
261
+ $updatedAt: A(),
261
262
  name: i ? "" : t.name ?? this.seed.name,
262
263
  registration: U(1440 * 30),
263
264
  status: !0,
@@ -270,14 +271,14 @@ class Ct {
270
271
  mfa: this.mfaEnabled,
271
272
  prefs: {},
272
273
  targets: [],
273
- accessedAt: P()
274
+ accessedAt: A()
274
275
  }, this.seedActivity(i ? "anonymous" : "email"), this.user;
275
276
  }
276
277
  seedActivity(t) {
277
278
  if (this.sessions.length > 0) return;
278
279
  const i = {
279
- $createdAt: P(),
280
- $updatedAt: P(),
280
+ $createdAt: A(),
281
+ $updatedAt: A(),
281
282
  userId: "preview-user",
282
283
  expire: new Date(Date.now() + 365 * 864e5).toISOString(),
283
284
  providerUid: "",
@@ -312,7 +313,7 @@ class Ct {
312
313
  },
313
314
  {
314
315
  ...i,
315
- $id: T(),
316
+ $id: _(),
316
317
  $createdAt: U(300),
317
318
  provider: t,
318
319
  ip: "198.51.100.7",
@@ -329,7 +330,7 @@ class Ct {
329
330
  },
330
331
  {
331
332
  ...i,
332
- $id: T(),
333
+ $id: _(),
333
334
  $createdAt: U(1440 * 3),
334
335
  provider: "oauth2",
335
336
  ip: "192.0.2.90",
@@ -358,7 +359,7 @@ class Ct {
358
359
  ], this.logs = [
359
360
  {
360
361
  event: "session.create",
361
- time: P(),
362
+ time: A(),
362
363
  clientName: "Chrome",
363
364
  osName: "macOS",
364
365
  countryName: "Germany",
@@ -384,9 +385,9 @@ class Ct {
384
385
  }
385
386
  requireUser() {
386
387
  if (!this.user)
387
- throw H("general_unauthorized_scope", "User (role: guests) missing scope (account)");
388
+ throw j("general_unauthorized_scope", "User (role: guests) missing scope (account)");
388
389
  if (this.mfaPending)
389
- throw H(
390
+ throw j(
390
391
  "user_more_factors_required",
391
392
  "More factors are required to complete the sign in process."
392
393
  );
@@ -394,7 +395,7 @@ class Ct {
394
395
  }
395
396
  requireRecentChallenge() {
396
397
  if (Date.now() - this.lastChallenge > 30 * 6e4)
397
- throw H(
398
+ throw j(
398
399
  "user_challenge_required",
399
400
  "A recently successful challenge is required to complete this action."
400
401
  );
@@ -430,26 +431,26 @@ class Ct {
430
431
  }
431
432
  async createMagicURLToken(t, i) {
432
433
  return this.tokens.set(t, { email: i }), this.delay({
433
- $id: T(),
434
- $createdAt: P(),
434
+ $id: _(),
435
+ $createdAt: A(),
435
436
  userId: t,
436
437
  secret: "",
437
438
  expire: "",
438
- phrase: ot()
439
+ phrase: dt()
439
440
  });
440
441
  }
441
442
  async createEmailToken(t, i) {
442
443
  return this.tokens.set(t, { email: i }), this.delay({
443
- $id: T(),
444
- $createdAt: P(),
444
+ $id: _(),
445
+ $createdAt: A(),
445
446
  userId: t,
446
447
  secret: "",
447
448
  expire: "",
448
- phrase: ot()
449
+ phrase: dt()
449
450
  });
450
451
  }
451
452
  async createPhoneToken(t, i) {
452
- return this.tokens.set(t, { phone: i }), this.delay({ $id: T(), $createdAt: P(), userId: t, secret: "", expire: "", phrase: "" });
453
+ return this.tokens.set(t, { phone: i }), this.delay({ $id: _(), $createdAt: A(), userId: t, secret: "", expire: "", phrase: "" });
453
454
  }
454
455
  async createSession(t) {
455
456
  return this.delay(() => {
@@ -490,7 +491,7 @@ class Ct {
490
491
  async updateEmail(t) {
491
492
  return this.delay(() => {
492
493
  const i = this.requireUser();
493
- return i.email = t, i.emailVerification = !1, i.passwordUpdate = P(), i;
494
+ return i.email = t, i.emailVerification = !1, i.passwordUpdate = A(), i;
494
495
  });
495
496
  }
496
497
  async updatePhone(t) {
@@ -502,7 +503,7 @@ class Ct {
502
503
  async updatePassword() {
503
504
  return this.delay(() => {
504
505
  const t = this.requireUser();
505
- return t.passwordUpdate = P(), t;
506
+ return t.passwordUpdate = A(), t;
506
507
  });
507
508
  }
508
509
  async updateStatus() {
@@ -541,7 +542,7 @@ class Ct {
541
542
  });
542
543
  }
543
544
  async createMFAChallenge() {
544
- return this.delay({ $id: T(), $createdAt: P(), userId: "preview-user", expire: "" });
545
+ return this.delay({ $id: _(), $createdAt: A(), userId: "preview-user", expire: "" });
545
546
  }
546
547
  async updateMFAChallenge() {
547
548
  return this.delay(() => (this.mfaPending = !1, this.lastChallenge = Date.now(), this.sessions[0]));
@@ -570,32 +571,32 @@ class Ct {
570
571
  async createMFARecoveryCodes() {
571
572
  return this.delay(() => {
572
573
  if (this.recoveryCodes.length > 0)
573
- throw H("user_recovery_codes_already_exists", "Recovery codes already generated.", 409);
574
- return this.recoveryCodes = Array.from({ length: 6 }, ct), { recoveryCodes: this.recoveryCodes };
574
+ throw j("user_recovery_codes_already_exists", "Recovery codes already generated.", 409);
575
+ return this.recoveryCodes = Array.from({ length: 6 }, ht), { recoveryCodes: this.recoveryCodes };
575
576
  });
576
577
  }
577
578
  async getMFARecoveryCodes() {
578
579
  return this.delay(() => (this.requireRecentChallenge(), { recoveryCodes: this.recoveryCodes }));
579
580
  }
580
581
  async updateMFARecoveryCodes() {
581
- return this.delay(() => (this.requireRecentChallenge(), this.recoveryCodes = Array.from({ length: 6 }, ct), { recoveryCodes: this.recoveryCodes }));
582
+ return this.delay(() => (this.requireRecentChallenge(), this.recoveryCodes = Array.from({ length: 6 }, ht), { recoveryCodes: this.recoveryCodes }));
582
583
  }
583
584
  /** Forget everything, as a sign out would. */
584
585
  reset() {
585
586
  this.user = null, this.mfaPending = !1, this.sessions = [], this.identities = [], this.logs = [], this.tokens.clear();
586
587
  }
587
588
  }
588
- function St(e) {
589
+ function Et(e) {
589
590
  let t = 2166136261;
590
591
  const i = () => (t ^= t << 13, t ^= t >>> 17, t ^= t << 5, (t >>> 0) / 4294967296);
591
- for (const x of e) t = (t ^ x.charCodeAt(0)) * 16777619;
592
+ for (const $ of e) t = (t ^ $.charCodeAt(0)) * 16777619;
592
593
  const s = 25;
593
594
  let a = "";
594
- const l = (x, C) => `<rect x="${x}" y="${C}" width="7" height="7"/><rect x="${x + 1}" y="${C + 1}" width="5" height="5" fill="#fff"/><rect x="${x + 2}" y="${C + 2}" width="3" height="3"/>`;
595
- for (let x = 0; x < s; x++)
596
- for (let C = 0; C < s; C++)
597
- !(C < 8 && x < 8 || C >= s - 8 && x < 8 || C < 8 && x >= s - 8) && i() < 0.45 && (a += `<rect x="${C}" y="${x}" width="1" height="1"/>`);
598
- const u = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${s}" shape-rendering="crispEdges"><rect width="${s}" height="${s}" fill="#fff"/><g fill="#000">${l(0, 0)}${l(s - 7, 0)}${l(0, s - 7)}${a}</g></svg>`;
595
+ const c = ($, x) => `<rect x="${$}" y="${x}" width="7" height="7"/><rect x="${$ + 1}" y="${x + 1}" width="5" height="5" fill="#fff"/><rect x="${$ + 2}" y="${x + 2}" width="3" height="3"/>`;
596
+ for (let $ = 0; $ < s; $++)
597
+ for (let x = 0; x < s; x++)
598
+ !(x < 8 && $ < 8 || x >= s - 8 && $ < 8 || x < 8 && $ >= s - 8) && i() < 0.45 && (a += `<rect x="${x}" y="${$}" width="1" height="1"/>`);
599
+ const u = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${s} ${s}" shape-rendering="crispEdges"><rect width="${s}" height="${s}" fill="#fff"/><g fill="#000">${c(0, 0)}${c(s - 7, 0)}${c(0, s - 7)}${a}</g></svg>`;
599
600
  return `data:image/svg+xml;utf8,${encodeURIComponent(u)}`;
600
601
  }
601
602
  const f = {
@@ -633,7 +634,7 @@ const f = {
633
634
  targetAlreadyExists: "user_target_already_exists",
634
635
  argumentInvalid: "general_argument_invalid"
635
636
  };
636
- function R(e) {
637
+ function z(e) {
637
638
  if (e && typeof e == "object") {
638
639
  const t = e;
639
640
  let i = typeof t.message == "string" ? t.message : "Unknown error";
@@ -646,10 +647,10 @@ function R(e) {
646
647
  return { message: String(e), type: "", code: 0 };
647
648
  }
648
649
  function N(e, t) {
649
- return R(e).type === t;
650
+ return z(e).type === t;
650
651
  }
651
652
  function K(e, t, i = "link") {
652
- const s = R(e);
653
+ const s = z(e);
653
654
  switch (s.type) {
654
655
  case f.invalidCredentials:
655
656
  return i === "password" ? t.errorCurrentPassword : t.errorInvalidCredentials;
@@ -691,23 +692,73 @@ function K(e, t, i = "link") {
691
692
  }
692
693
  return s.type === f.projectNotFound || s.type === f.unknownOrigin ? t.errorConfig : s.type === f.routeNotFound ? t.errorConfigEndpoint : s.code === 0 && /fetch|network/i.test(s.message) ? t.errorNetwork : /Invalid `\w+` param/i.test(s.message) ? t.errorGeneric : s.message ? s.message || t.errorGeneric : s.code === 404 || s.type === f.routeNotFound ? t.errorConfigEndpoint : t.errorGeneric;
693
694
  }
694
- function Pt(e) {
695
- const t = R(e);
695
+ function Ut(e) {
696
+ const t = z(e);
696
697
  return !!(t.type === f.projectNotFound || t.type === f.unknownOrigin || t.type === f.routeNotFound || !t.message && t.code === 404 || t.code === 0 && /fetch|network|load failed|failed to fetch/i.test(t.message));
697
698
  }
698
- const Q = (e) => `authui:active-team:${e}`;
699
- function lt(e) {
699
+ const J = (e) => `authui:active-team:${e}`;
700
+ function ut(e) {
700
701
  if (typeof localStorage > "u" || !e) return null;
701
702
  try {
702
- return localStorage.getItem(Q(e));
703
+ return localStorage.getItem(J(e));
703
704
  } catch {
704
705
  return null;
705
706
  }
706
707
  }
707
- function At(e, t) {
708
+ function Mt(e, t) {
708
709
  if (!(typeof localStorage > "u" || !e))
709
710
  try {
710
- t ? localStorage.setItem(Q(e), t) : localStorage.removeItem(Q(e));
711
+ t ? localStorage.setItem(J(e), t) : localStorage.removeItem(J(e));
712
+ } catch {
713
+ }
714
+ }
715
+ const at = "authui:last-method";
716
+ function V(e) {
717
+ if (!(typeof localStorage > "u")) {
718
+ if (!e || e === "mfa" || e === "sign-up")
719
+ if (e === "sign-up") e = "email-password";
720
+ else return;
721
+ try {
722
+ localStorage.setItem(at, e);
723
+ } catch {
724
+ }
725
+ }
726
+ }
727
+ function D() {
728
+ if (typeof localStorage > "u") return null;
729
+ try {
730
+ return localStorage.getItem(at);
731
+ } catch {
732
+ return null;
733
+ }
734
+ }
735
+ function ne() {
736
+ if (!(typeof localStorage > "u"))
737
+ try {
738
+ localStorage.removeItem(at);
739
+ } catch {
740
+ }
741
+ }
742
+ const G = "authui:pending-oauth";
743
+ function Ot(e) {
744
+ if (!(typeof sessionStorage > "u"))
745
+ try {
746
+ sessionStorage.setItem(G, e);
747
+ } catch {
748
+ }
749
+ }
750
+ function wt() {
751
+ if (!(typeof sessionStorage > "u"))
752
+ try {
753
+ const e = sessionStorage.getItem(G);
754
+ sessionStorage.removeItem(G), e && V(`oauth:${e}`);
755
+ } catch {
756
+ }
757
+ }
758
+ function pt() {
759
+ if (!(typeof sessionStorage > "u"))
760
+ try {
761
+ sessionStorage.removeItem(G);
711
762
  } catch {
712
763
  }
713
764
  }
@@ -721,7 +772,7 @@ function S(e, t, i) {
721
772
  new Error(`Appwrite SDK is missing ${t[0]}(). Update the appwrite package.`)
722
773
  );
723
774
  }
724
- const J = "authui", dt = ["userId", "secret", "expire", "project", "error", J], ht = () => ({
775
+ const tt = "authui", mt = ["userId", "secret", "expire", "project", "error", tt], ft = () => ({
725
776
  status: "loading",
726
777
  user: null,
727
778
  mfaFactors: null,
@@ -729,9 +780,9 @@ const J = "authui", dt = ["userId", "secret", "expire", "project", "error", J],
729
780
  configured: !1,
730
781
  configError: null
731
782
  });
732
- class Ut {
783
+ class Ft {
733
784
  constructor() {
734
- this.client = null, this.account = null, this.config = null, this.state = ht(), this.listeners = /* @__PURE__ */ new Map(), this.refreshPromise = null, this.preview = null, this.teams = null, this.activeTeamId = null;
785
+ this.client = null, this.account = null, this.config = null, this.state = ft(), this.listeners = /* @__PURE__ */ new Map(), this.refreshPromise = null, this.preview = null, this.teams = null, this.activeTeamId = null;
735
786
  }
736
787
  // ───────────────────────────── configuration ─────────────────────────────
737
788
  /** Configure the Appwrite client. Safe to call more than once; the last call wins. */
@@ -739,7 +790,7 @@ class Ut {
739
790
  const i = t.endpoint.trim().replace(/\/+$/, "");
740
791
  i && !i.endsWith("/v1") && console.warn(
741
792
  `[authui] endpoint should end with /v1 (got "${t.endpoint}"). Without it Appwrite returns HTML 404 pages.`
742
- ), this.config = t, this.client = new at().setEndpoint(t.endpoint).setProject(t.project), this.preview = t.preview ? new Ct() : null, this.account = this.preview ? this.preview : new nt(this.client), this.teams = null, this.activeTeamId = lt(t.project), this.setState({ configured: !0, status: "loading", configError: null }), this.preview ? this.refresh() : typeof window < "u" && this.handleRedirect().then(() => this.refresh());
793
+ ), this.config = t, this.client = new lt().setEndpoint(t.endpoint).setProject(t.project), this.preview = t.preview ? new It() : null, this.account = this.preview ? this.preview : new ct(this.client), this.teams = null, this.activeTeamId = ut(t.project), this.setState({ configured: !0, status: "loading", configError: null }), this.preview ? this.refresh() : typeof window < "u" && this.handleRedirect().then(() => this.refresh());
743
794
  }
744
795
  /**
745
796
  * Called by <authui-config> when it is on the page but missing endpoint or project.
@@ -785,7 +836,7 @@ class Ut {
785
836
  /** List teams the signed-in user belongs to. Empty in preview or when signed out. */
786
837
  async listTeams() {
787
838
  if (this.preview || !this.client || this.state.status !== "signed-in") return [];
788
- this.teams ??= new bt(this.client);
839
+ this.teams ??= new xt(this.client);
789
840
  try {
790
841
  return (await this.teams.list()).teams ?? [];
791
842
  } catch (t) {
@@ -795,7 +846,7 @@ class Ut {
795
846
  getActiveTeamId() {
796
847
  if (this.activeTeamId) return this.activeTeamId;
797
848
  const t = this.config?.project;
798
- return t ? (this.activeTeamId = lt(t), this.activeTeamId) : null;
849
+ return t ? (this.activeTeamId = ut(t), this.activeTeamId) : null;
799
850
  }
800
851
  /**
801
852
  * Remember the active team locally and emit `active-team`.
@@ -803,10 +854,10 @@ class Ut {
803
854
  */
804
855
  setActiveTeam(t) {
805
856
  const i = this.config?.project;
806
- i && At(i, t?.$id ?? null), this.activeTeamId = t?.$id ?? null, this.emit("active-team", { teamId: this.activeTeamId, team: t });
857
+ i && Mt(i, t?.$id ?? null), this.activeTeamId = t?.$id ?? null, this.emit("active-team", { teamId: this.activeTeamId, team: t });
807
858
  }
808
859
  getStrings() {
809
- return { ...wt, ...this.config?.strings ?? {} };
860
+ return { ...Ct, ...this.config?.strings ?? {} };
810
861
  }
811
862
  getState() {
812
863
  return { ...this.state };
@@ -832,7 +883,7 @@ class Ut {
832
883
  this.state = { ...this.state, ...t }, this.emit("change", this.getState());
833
884
  }
834
885
  fail(t) {
835
- const i = R(t);
886
+ const i = z(t);
836
887
  throw this.emit("error", i), t;
837
888
  }
838
889
  acct() {
@@ -874,13 +925,13 @@ class Ut {
874
925
  message: this.getStrings().errorUserBlocked
875
926
  }
876
927
  }), t && this.emit("signed-out", void 0);
877
- else if (!t && Pt(i)) {
928
+ else if (!t && Ut(i)) {
878
929
  const a = K(i, this.getStrings()) || this.getStrings().errorConfig;
879
930
  console.warn(
880
931
  `[authui] ${a} (endpoint=${this.config?.endpoint ?? "?"}, project=${this.config?.project ?? "?"})`
881
932
  );
882
- const l = R(i);
883
- this.emit("error", { message: a, type: l.type, code: l.code }), this.setState({
933
+ const c = z(i);
934
+ this.emit("error", { message: a, type: c.type, code: c.code }), this.setState({
884
935
  status: "signed-out",
885
936
  user: null,
886
937
  mfaFactors: null,
@@ -924,7 +975,7 @@ class Ut {
924
975
  localStorage.removeItem("cookieFallback");
925
976
  } catch {
926
977
  }
927
- this.config && !this.preview && (this.client = new at().setEndpoint(this.config.endpoint).setProject(this.config.project), this.account = new nt(this.client));
978
+ this.config && !this.preview && (this.client = new lt().setEndpoint(this.config.endpoint).setProject(this.config.project), this.account = new ct(this.client));
928
979
  }
929
980
  // ─────────────────────────────── sign in ───────────────────────────────
930
981
  async signInWithEmailPassword(t, i) {
@@ -937,7 +988,7 @@ class Ut {
937
988
  }
938
989
  async signUp(t, i, s) {
939
990
  try {
940
- await this.acct().create(j.unique(), t.trim(), i, s?.trim() || void 0), await this.acct().createEmailPasswordSession(t.trim(), i);
991
+ await this.acct().create(H.unique(), t.trim(), i, s?.trim() || void 0), await this.acct().createEmailPasswordSession(t.trim(), i);
941
992
  } catch (a) {
942
993
  this.fail(a);
943
994
  }
@@ -980,7 +1031,7 @@ class Ut {
980
1031
  async sendMagicUrl(t) {
981
1032
  try {
982
1033
  return await this.acct().createMagicURLToken(
983
- j.unique(),
1034
+ H.unique(),
984
1035
  t.trim(),
985
1036
  this.redirectUrl("magic-url"),
986
1037
  this.config?.securityPhrase ?? !0
@@ -992,7 +1043,7 @@ class Ut {
992
1043
  async sendEmailOtp(t) {
993
1044
  try {
994
1045
  return await this.acct().createEmailToken(
995
- j.unique(),
1046
+ H.unique(),
996
1047
  t.trim(),
997
1048
  this.config?.securityPhrase ?? !0
998
1049
  );
@@ -1002,7 +1053,7 @@ class Ut {
1002
1053
  }
1003
1054
  async sendPhoneOtp(t) {
1004
1055
  try {
1005
- return await this.acct().createPhoneToken(j.unique(), t.replace(/[\s()-]/g, ""));
1056
+ return await this.acct().createPhoneToken(H.unique(), t.replace(/[\s()-]/g, ""));
1006
1057
  } catch (i) {
1007
1058
  return this.fail(i);
1008
1059
  }
@@ -1276,8 +1327,8 @@ class Ut {
1276
1327
  /** Build the URL Appwrite should send the user back to for a given flow. */
1277
1328
  redirectUrl(t) {
1278
1329
  const i = this.config?.redirectUrl ?? (typeof window < "u" ? window.location.origin + window.location.pathname : ""), s = new URL(i, typeof window < "u" ? window.location.href : void 0);
1279
- for (const a of dt) s.searchParams.delete(a);
1280
- return s.searchParams.set(J, t), s.toString();
1330
+ for (const a of mt) s.searchParams.delete(a);
1331
+ return s.searchParams.set(tt, t), s.toString();
1281
1332
  }
1282
1333
  setPending(t) {
1283
1334
  this.setState({ pending: t });
@@ -1288,11 +1339,11 @@ class Ut {
1288
1339
  */
1289
1340
  async handleRedirect() {
1290
1341
  if (typeof window > "u") return !1;
1291
- const t = new URLSearchParams(window.location.search), i = t.get(J);
1342
+ const t = new URLSearchParams(window.location.search), i = t.get(tt);
1292
1343
  if (!i) return !1;
1293
1344
  const s = t.get("userId") ?? "", a = t.get("secret") ?? "";
1294
1345
  this.cleanUrl();
1295
- const l = () => {
1346
+ const c = () => {
1296
1347
  this.setState({
1297
1348
  pending: {
1298
1349
  type: "notice",
@@ -1305,13 +1356,19 @@ class Ut {
1305
1356
  switch (i) {
1306
1357
  case "oauth":
1307
1358
  case "magic-url":
1308
- s && a ? await this.acct().createSession(s, a) : l();
1359
+ s && a ? (await this.acct().createSession(s, a), i === "oauth" && wt()) : (i === "oauth" && pt(), c());
1309
1360
  break;
1310
1361
  case "oauth-failed":
1311
- this.setState({ pending: { type: "oauth-failed" } });
1362
+ pt(), this.setState({
1363
+ pending: {
1364
+ type: "notice",
1365
+ tone: "error",
1366
+ message: this.getStrings().errorOAuth
1367
+ }
1368
+ });
1312
1369
  break;
1313
1370
  case "recovery":
1314
- s && a ? this.setState({ pending: { type: "reset-password", userId: s, secret: a } }) : l();
1371
+ s && a ? this.setState({ pending: { type: "reset-password", userId: s, secret: a } }) : c();
1315
1372
  break;
1316
1373
  case "verify-email":
1317
1374
  s && a ? (await S(
@@ -1324,27 +1381,27 @@ class Ut {
1324
1381
  message: this.getStrings().emailVerified,
1325
1382
  tone: "success"
1326
1383
  }
1327
- })) : l();
1384
+ })) : c();
1328
1385
  break;
1329
1386
  }
1330
1387
  } catch (u) {
1331
- const x = R(u), C = K(u, this.getStrings(), "link");
1332
- this.emit("error", x), this.setState({ pending: { type: "notice", message: C, tone: "error" } });
1388
+ const $ = z(u), x = K(u, this.getStrings(), "link");
1389
+ this.emit("error", $), this.setState({ pending: { type: "notice", message: x, tone: "error" } });
1333
1390
  }
1334
1391
  return !0;
1335
1392
  }
1336
1393
  cleanUrl() {
1337
1394
  const t = new URL(window.location.href);
1338
- for (const i of dt) t.searchParams.delete(i);
1395
+ for (const i of mt) t.searchParams.delete(i);
1339
1396
  window.history.replaceState(window.history.state, "", t.toString());
1340
1397
  }
1341
1398
  /** Test helper. */
1342
1399
  reset() {
1343
- this.client = null, this.account = null, this.teams = null, this.activeTeamId = null, this.preview = null, this.config = null, this.state = ht(), this.listeners.clear();
1400
+ this.client = null, this.account = null, this.teams = null, this.activeTeamId = null, this.preview = null, this.config = null, this.state = ft(), this.listeners.clear();
1344
1401
  }
1345
1402
  }
1346
- const n = new Ut();
1347
- class It {
1403
+ const n = new Ft();
1404
+ class Tt {
1348
1405
  constructor() {
1349
1406
  this.listeners = /* @__PURE__ */ new Set(), this.observer = null, this.media = null, this.notify = () => {
1350
1407
  const t = this.isDark("auto");
@@ -1372,14 +1429,14 @@ class It {
1372
1429
  this.observer?.disconnect(), this.observer = null, this.media?.removeEventListener?.("change", this.notify), this.media = null;
1373
1430
  }
1374
1431
  }
1375
- const ut = new It(), pt = {
1432
+ const gt = new Tt(), vt = {
1376
1433
  none: "0px",
1377
1434
  sm: "0.25rem",
1378
1435
  md: "0.625rem",
1379
1436
  lg: "0.875rem",
1380
1437
  xl: "1.125rem",
1381
1438
  full: "1.5rem"
1382
- }, Et = F`
1439
+ }, Rt = O`
1383
1440
  :host {
1384
1441
  /* Light theme (matches :root in the console) */
1385
1442
  --authui-background: oklch(1 0 0);
@@ -1457,7 +1514,7 @@ const ut = new It(), pt = {
1457
1514
  --authui-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.5), 0 4px 6px -4px rgba(0, 0, 0, 0.5);
1458
1515
  color-scheme: dark;
1459
1516
  }
1460
- `, Mt = F`
1517
+ `, _t = O`
1461
1518
  *,
1462
1519
  *::before,
1463
1520
  *::after {
@@ -2262,25 +2319,25 @@ const ut = new It(), pt = {
2262
2319
  }
2263
2320
  }
2264
2321
  `;
2265
- var Ft = Object.defineProperty, Ot = (e, t, i, s) => {
2266
- for (var a = void 0, l = e.length - 1, u; l >= 0; l--)
2267
- (u = e[l]) && (a = u(t, i, a) || a);
2268
- return a && Ft(t, i, a), a;
2269
- }, I;
2270
- const vt = (I = class extends it {
2322
+ var Dt = Object.defineProperty, zt = (e, t, i, s) => {
2323
+ for (var a = void 0, c = e.length - 1, u; c >= 0; c--)
2324
+ (u = e[c]) && (a = u(t, i, a) || a);
2325
+ return a && Dt(t, i, a), a;
2326
+ }, M;
2327
+ const $t = (M = class extends rt {
2271
2328
  constructor() {
2272
2329
  super(...arguments), this.auth = n.getState(), this.unsubscribeStore = null, this.unsubscribeTheme = null, this.stopKeys = (t) => t.stopPropagation();
2273
2330
  }
2274
2331
  connectedCallback() {
2275
2332
  super.connectedCallback();
2276
- for (const t of I.KEY_EVENTS) this.addEventListener(t, this.stopKeys);
2333
+ for (const t of M.KEY_EVENTS) this.addEventListener(t, this.stopKeys);
2277
2334
  this.auth = n.getState(), this.unsubscribeStore = n.on("change", (t) => {
2278
2335
  this.auth = t, this.applyBranding();
2279
- }), this.unsubscribeTheme = ut.subscribe(() => this.applyBranding()), this.applyBranding();
2336
+ }), this.unsubscribeTheme = gt.subscribe(() => this.applyBranding()), this.applyBranding();
2280
2337
  }
2281
2338
  disconnectedCallback() {
2282
2339
  super.disconnectedCallback();
2283
- for (const t of I.KEY_EVENTS) this.removeEventListener(t, this.stopKeys);
2340
+ for (const t of M.KEY_EVENTS) this.removeEventListener(t, this.stopKeys);
2284
2341
  this.unsubscribeStore?.(), this.unsubscribeTheme?.(), this.unsubscribeStore = null, this.unsubscribeTheme = null;
2285
2342
  }
2286
2343
  get strings() {
@@ -2288,7 +2345,7 @@ const vt = (I = class extends it {
2288
2345
  }
2289
2346
  /** Translate a string key with optional `{placeholders}`. */
2290
2347
  t(t, i) {
2291
- return $t(this.strings[t], i);
2348
+ return St(this.strings[t], i);
2292
2349
  }
2293
2350
  get config() {
2294
2351
  return n.getConfig();
@@ -2298,27 +2355,27 @@ const vt = (I = class extends it {
2298
2355
  }
2299
2356
  /** Push theme and branding from config onto the host element. */
2300
2357
  applyBranding() {
2301
- const t = this.config?.branding, i = ut.isDark(t?.theme ?? "auto");
2358
+ const t = this.config?.branding, i = gt.isDark(t?.theme ?? "auto");
2302
2359
  this.setAttribute("data-theme", i ? "dark" : "light"), t?.primary && (this.style.setProperty("--authui-primary", t.primary), this.style.setProperty(
2303
2360
  "--authui-primary-foreground",
2304
2361
  t.primaryForeground ?? "#ffffff"
2305
- )), t?.radius && pt[t.radius] && this.style.setProperty("--authui-radius", pt[t.radius]);
2362
+ )), t?.radius && vt[t.radius] && this.style.setProperty("--authui-radius", vt[t.radius]);
2306
2363
  }
2307
2364
  /** Emit a composed custom event from this element. */
2308
2365
  fire(t, i) {
2309
2366
  this.dispatchEvent(new CustomEvent(t, { detail: i, bubbles: !0, composed: !0 }));
2310
2367
  }
2311
- }, I.styles = [Et, Mt], I.KEY_EVENTS = ["keydown", "keyup", "keypress"], I);
2312
- Ot([
2313
- h()
2314
- ], vt.prototype, "auth");
2315
- let A = vt;
2316
- var _t = Object.defineProperty, Tt = Object.getOwnPropertyDescriptor, y = (e, t, i, s) => {
2317
- for (var a = s > 1 ? void 0 : s ? Tt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
2318
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
2319
- return s && a && _t(t, i, a), a;
2368
+ }, M.styles = [Rt, _t], M.KEY_EVENTS = ["keydown", "keyup", "keypress"], M);
2369
+ zt([
2370
+ d()
2371
+ ], $t.prototype, "auth");
2372
+ let E = $t;
2373
+ var Lt = Object.defineProperty, Vt = Object.getOwnPropertyDescriptor, y = (e, t, i, s) => {
2374
+ for (var a = s > 1 ? void 0 : s ? Vt(t, i) : t, c = e.length - 1, u; c >= 0; c--)
2375
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
2376
+ return s && a && Lt(t, i, a), a;
2320
2377
  };
2321
- let b = class extends it {
2378
+ let b = class extends rt {
2322
2379
  constructor() {
2323
2380
  super(...arguments), this.endpoint = "", this.project = "", this.redirectUrl = "", this.successUrl = "", this.methods = "email-password", this.signUp = "true", this.requireName = "true", this.mfa = "true", this.securityPhrase = "true", this.name = "", this.logo = "", this.theme = "auto", this.radius = "", this.primary = "", this.primaryForeground = "", this.termsUrl = "", this.privacyUrl = "", this.preview = "";
2324
2381
  }
@@ -2368,7 +2425,7 @@ let b = class extends it {
2368
2425
  };
2369
2426
  }
2370
2427
  };
2371
- b.styles = F`
2428
+ b.styles = O`
2372
2429
  :host {
2373
2430
  display: none;
2374
2431
  }
@@ -2428,38 +2485,38 @@ y([
2428
2485
  g({ type: String })
2429
2486
  ], b.prototype, "preview", 2);
2430
2487
  b = y([
2431
- O("authui-config")
2488
+ R("authui-config")
2432
2489
  ], b);
2433
- var Dt = Object.defineProperty, Rt = Object.getOwnPropertyDescriptor, Y = (e, t, i, s) => {
2434
- for (var a = s > 1 ? void 0 : s ? Rt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
2435
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
2436
- return s && a && Dt(t, i, a), a;
2490
+ var qt = Object.defineProperty, Nt = Object.getOwnPropertyDescriptor, Z = (e, t, i, s) => {
2491
+ for (var a = s > 1 ? void 0 : s ? Nt(t, i) : t, c = e.length - 1, u; c >= 0; c--)
2492
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
2493
+ return s && a && qt(t, i, a), a;
2437
2494
  };
2438
- const mt = "authui-show:not([ready]){display:none}", ie = "authui-show:not([ready]){display:none}authui-button:not(:defined),authui-user-button:not(:defined){visibility:hidden}";
2439
- let ft = !1;
2440
- function zt() {
2441
- if (!(typeof document > "u" || ft)) {
2442
- ft = !0;
2495
+ const bt = "authui-show:not([ready]){display:none}", oe = "authui-show:not([ready]){display:none}authui-button:not(:defined),authui-user-button:not(:defined){visibility:hidden}";
2496
+ let yt = !1;
2497
+ function Bt() {
2498
+ if (!(typeof document > "u" || yt)) {
2499
+ yt = !0;
2443
2500
  try {
2444
2501
  if (typeof CSSStyleSheet < "u" && "adoptedStyleSheets" in Document.prototype) {
2445
2502
  const e = new CSSStyleSheet();
2446
- e.replaceSync(mt), document.adoptedStyleSheets = [...document.adoptedStyleSheets, e];
2503
+ e.replaceSync(bt), document.adoptedStyleSheets = [...document.adoptedStyleSheets, e];
2447
2504
  return;
2448
2505
  }
2449
2506
  } catch {
2450
2507
  }
2451
2508
  if (!document.getElementById("authui-fouc")) {
2452
2509
  const e = document.createElement("style");
2453
- e.id = "authui-fouc", e.textContent = mt, document.head.appendChild(e);
2510
+ e.id = "authui-fouc", e.textContent = bt, document.head.appendChild(e);
2454
2511
  }
2455
2512
  }
2456
2513
  }
2457
- zt();
2458
- const Lt = ["loading", "signed-out", "signed-in", "mfa-required"];
2459
- function X(e) {
2460
- return e ? e.split(/[\s,]+/).map((t) => t.trim()).filter((t) => Lt.includes(t)) : [];
2514
+ Bt();
2515
+ const Ht = ["loading", "signed-out", "signed-in", "mfa-required"];
2516
+ function Q(e) {
2517
+ return e ? e.split(/[\s,]+/).map((t) => t.trim()).filter((t) => Ht.includes(t)) : [];
2461
2518
  }
2462
- let B = class extends it {
2519
+ let B = class extends rt {
2463
2520
  constructor() {
2464
2521
  super(...arguments), this.when = "", this.unless = "", this.status = n.getState().status, this.unsubscribe = null;
2465
2522
  }
@@ -2471,29 +2528,29 @@ let B = class extends it {
2471
2528
  }
2472
2529
  /** Whether the current status satisfies `when` and `unless`. */
2473
2530
  get visible() {
2474
- const e = X(this.when), t = X(this.unless);
2531
+ const e = Q(this.when), t = Q(this.unless);
2475
2532
  return !(this.status === "loading" && !e.includes("loading") || e.length > 0 && !e.includes(this.status) || t.includes(this.status));
2476
2533
  }
2477
2534
  updated() {
2478
- (this.status !== "loading" || X(this.when).includes("loading")) && (this.setAttribute("ready", ""), this.style.display = "contents");
2535
+ (this.status !== "loading" || Q(this.when).includes("loading")) && (this.setAttribute("ready", ""), this.style.display = "contents");
2479
2536
  }
2480
2537
  render() {
2481
2538
  return this.visible ? r`<slot></slot>` : o;
2482
2539
  }
2483
2540
  };
2484
- Y([
2541
+ Z([
2485
2542
  g({ type: String })
2486
2543
  ], B.prototype, "when", 2);
2487
- Y([
2544
+ Z([
2488
2545
  g({ type: String })
2489
2546
  ], B.prototype, "unless", 2);
2490
- Y([
2491
- h()
2547
+ Z([
2548
+ d()
2492
2549
  ], B.prototype, "status", 2);
2493
- B = Y([
2494
- O("authui-show")
2550
+ B = Z([
2551
+ R("authui-show")
2495
2552
  ], B);
2496
- const Vt = F`
2553
+ const jt = O`
2497
2554
  :host {
2498
2555
  display: block;
2499
2556
  width: 100%;
@@ -2558,160 +2615,160 @@ const Vt = F`
2558
2615
  aria-hidden="true"
2559
2616
  >
2560
2617
  ${e}
2561
- </svg>`, c = {
2618
+ </svg>`, l = {
2562
2619
  mail: v(
2563
- d`<rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/>`
2620
+ h`<rect width="20" height="16" x="2" y="4" rx="2"/><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"/>`
2564
2621
  ),
2565
2622
  phone: v(
2566
- d`<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>`
2623
+ h`<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>`
2567
2624
  ),
2568
2625
  user: v(
2569
- d`<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>`
2626
+ h`<path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/>`
2570
2627
  ),
2571
2628
  userX: v(
2572
- d`<path d="M2 21a8 8 0 0 1 11.873-7"/><circle cx="10" cy="8" r="5"/><path d="m17 17 5 5"/><path d="m22 17-5 5"/>`
2629
+ h`<path d="M2 21a8 8 0 0 1 11.873-7"/><circle cx="10" cy="8" r="5"/><path d="m17 17 5 5"/><path d="m22 17-5 5"/>`
2573
2630
  ),
2574
2631
  lock: v(
2575
- d`<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>`
2632
+ h`<rect width="18" height="11" x="3" y="11" rx="2" ry="2"/><path d="M7 11V7a5 5 0 0 1 10 0v4"/>`
2576
2633
  ),
2577
2634
  key: v(
2578
- d`<path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"/><path d="m21 2-9.6 9.6"/><circle cx="7.5" cy="15.5" r="5.5"/>`
2635
+ h`<path d="m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4"/><path d="m21 2-9.6 9.6"/><circle cx="7.5" cy="15.5" r="5.5"/>`
2579
2636
  ),
2580
2637
  shield: v(
2581
- d`<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>`
2638
+ h`<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/>`
2582
2639
  ),
2583
2640
  shieldCheck: v(
2584
- d`<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/>`
2641
+ h`<path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"/><path d="m9 12 2 2 4-4"/>`
2585
2642
  ),
2586
2643
  smartphone: v(
2587
- d`<rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/>`
2644
+ h`<rect width="14" height="20" x="5" y="2" rx="2" ry="2"/><path d="M12 18h.01"/>`
2588
2645
  ),
2589
2646
  monitor: v(
2590
- d`<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>`
2647
+ h`<rect width="20" height="14" x="2" y="3" rx="2"/><line x1="8" x2="16" y1="21" y2="21"/><line x1="12" x2="12" y1="17" y2="21"/>`
2591
2648
  ),
2592
2649
  globe: v(
2593
- d`<circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/>`
2650
+ h`<circle cx="12" cy="12" r="10"/><path d="M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20"/><path d="M2 12h20"/>`
2594
2651
  ),
2595
2652
  logOut: v(
2596
- d`<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" x2="9" y1="12" y2="12"/>`
2653
+ h`<path d="M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4"/><polyline points="16 17 21 12 16 7"/><line x1="21" x2="9" y1="12" y2="12"/>`
2597
2654
  ),
2598
2655
  settings: v(
2599
- d`<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>`
2656
+ h`<path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"/><circle cx="12" cy="12" r="3"/>`
2600
2657
  ),
2601
- x: v(d`<path d="M18 6 6 18"/><path d="m6 6 12 12"/>`),
2602
- check: v(d`<path d="M20 6 9 17l-5-5"/>`),
2658
+ x: v(h`<path d="M18 6 6 18"/><path d="m6 6 12 12"/>`),
2659
+ check: v(h`<path d="M20 6 9 17l-5-5"/>`),
2603
2660
  users: v(
2604
- d`<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>`
2661
+ h`<path d="M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"/><circle cx="9" cy="7" r="4"/><path d="M22 21v-2a4 4 0 0 0-3-3.87"/><path d="M16 3.13a4 4 0 0 1 0 7.75"/>`
2605
2662
  ),
2606
2663
  copy: v(
2607
- d`<rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>`
2664
+ h`<rect width="14" height="14" x="8" y="8" rx="2" ry="2"/><path d="M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"/>`
2608
2665
  ),
2609
2666
  eye: v(
2610
- d`<path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"/><circle cx="12" cy="12" r="3"/>`
2667
+ h`<path d="M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0"/><circle cx="12" cy="12" r="3"/>`
2611
2668
  ),
2612
2669
  eyeOff: v(
2613
- d`<path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"/><path d="m2 2 20 20"/>`
2670
+ h`<path d="M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49"/><path d="M14.084 14.158a3 3 0 0 1-4.242-4.242"/><path d="M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143"/><path d="m2 2 20 20"/>`
2614
2671
  ),
2615
- arrowLeft: v(d`<path d="m12 19-7-7 7-7"/><path d="M19 12H5"/>`),
2672
+ arrowLeft: v(h`<path d="m12 19-7-7 7-7"/><path d="M19 12H5"/>`),
2616
2673
  alert: v(
2617
- d`<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>`
2674
+ h`<circle cx="12" cy="12" r="10"/><line x1="12" x2="12" y1="8" y2="12"/><line x1="12" x2="12.01" y1="16" y2="16"/>`
2618
2675
  ),
2619
- info: v(d`<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>`),
2620
- checkCircle: v(d`<circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/>`),
2676
+ info: v(h`<circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/>`),
2677
+ checkCircle: v(h`<circle cx="12" cy="12" r="10"/><path d="m9 12 2 2 4-4"/>`),
2621
2678
  link: v(
2622
- d`<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>`
2679
+ h`<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"/>`
2623
2680
  ),
2624
2681
  activity: v(
2625
- d`<path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"/>`
2682
+ h`<path d="M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2"/>`
2626
2683
  ),
2627
2684
  trash: v(
2628
- d`<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/>`
2685
+ h`<path d="M3 6h18"/><path d="M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6"/><path d="M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2"/>`
2629
2686
  ),
2630
2687
  sparkles: v(
2631
- d`<path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"/>`
2688
+ h`<path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"/>`
2632
2689
  ),
2633
2690
  refresh: v(
2634
- d`<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>`
2691
+ h`<path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"/><path d="M21 3v5h-5"/><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"/><path d="M8 16H3v5"/>`
2635
2692
  ),
2636
- chevronDown: v(d`<path d="m6 9 6 6 6-6"/>`),
2693
+ chevronDown: v(h`<path d="m6 9 6 6 6-6"/>`),
2637
2694
  ghost: v(
2638
- d`<path d="M9 10h.01"/><path d="M15 10h.01"/><path d="M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z"/>`
2695
+ h`<path d="M9 10h.01"/><path d="M15 10h.01"/><path d="M12 2a8 8 0 0 0-8 8v12l3-3 2.5 2.5L12 19l2.5 2.5L17 19l3 3V10a8 8 0 0 0-8-8z"/>`
2639
2696
  ),
2640
2697
  qr: v(
2641
- d`<rect width="5" height="5" x="3" y="3" rx="1"/><rect width="5" height="5" x="16" y="3" rx="1"/><rect width="5" height="5" x="3" y="16" rx="1"/><path d="M21 16h-3a2 2 0 0 0-2 2v3"/><path d="M21 21v.01"/><path d="M12 7v3a2 2 0 0 1-2 2H7"/><path d="M3 12h.01"/><path d="M12 3h.01"/><path d="M12 16v.01"/><path d="M16 12h1"/><path d="M21 12v.01"/><path d="M12 21v-1"/>`
2698
+ h`<rect width="5" height="5" x="3" y="3" rx="1"/><rect width="5" height="5" x="16" y="3" rx="1"/><rect width="5" height="5" x="3" y="16" rx="1"/><path d="M21 16h-3a2 2 0 0 0-2 2v3"/><path d="M21 21v.01"/><path d="M12 7v3a2 2 0 0 1-2 2H7"/><path d="M3 12h.01"/><path d="M12 3h.01"/><path d="M12 16v.01"/><path d="M16 12h1"/><path d="M21 12v.01"/><path d="M12 21v-1"/>`
2642
2699
  )
2643
- }, w = (e, t = "0 0 24 24") => r`<svg xmlns="http://www.w3.org/2000/svg" viewBox=${t} aria-hidden="true">${e}</svg>`, qt = {
2700
+ }, w = (e, t = "0 0 24 24") => r`<svg xmlns="http://www.w3.org/2000/svg" viewBox=${t} aria-hidden="true">${e}</svg>`, Wt = {
2644
2701
  google: w(
2645
- d`<path fill="#4285F4" d="M23.49 12.27c0-.79-.07-1.54-.19-2.27H12v4.51h6.47a5.57 5.57 0 0 1-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82z"/><path fill="#34A853" d="M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96H1.29v3.09A11.99 11.99 0 0 0 12 24z"/><path fill="#FBBC05" d="M5.27 14.29A7.2 7.2 0 0 1 4.89 12c0-.8.14-1.57.38-2.29V6.62H1.29A11.97 11.97 0 0 0 0 12c0 1.94.46 3.77 1.29 5.38l3.98-3.09z"/><path fill="#EA4335" d="M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.31 0 3.26 2.69 1.29 6.62l3.98 3.09C6.22 6.86 8.87 4.75 12 4.75z"/>`
2702
+ h`<path fill="#4285F4" d="M23.49 12.27c0-.79-.07-1.54-.19-2.27H12v4.51h6.47a5.57 5.57 0 0 1-2.4 3.58v3h3.86c2.26-2.09 3.56-5.17 3.56-8.82z"/><path fill="#34A853" d="M12 24c3.24 0 5.95-1.08 7.93-2.91l-3.86-3c-1.08.72-2.45 1.16-4.07 1.16-3.13 0-5.78-2.11-6.73-4.96H1.29v3.09A11.99 11.99 0 0 0 12 24z"/><path fill="#FBBC05" d="M5.27 14.29A7.2 7.2 0 0 1 4.89 12c0-.8.14-1.57.38-2.29V6.62H1.29A11.97 11.97 0 0 0 0 12c0 1.94.46 3.77 1.29 5.38l3.98-3.09z"/><path fill="#EA4335" d="M12 4.75c1.77 0 3.35.61 4.6 1.8l3.42-3.42C17.95 1.19 15.24 0 12 0 7.31 0 3.26 2.69 1.29 6.62l3.98 3.09C6.22 6.86 8.87 4.75 12 4.75z"/>`
2646
2703
  ),
2647
2704
  github: w(
2648
- d`<path fill="currentColor" d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/>`
2705
+ h`<path fill="currentColor" d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/>`
2649
2706
  ),
2650
2707
  apple: w(
2651
- d`<path fill="currentColor" d="M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z"/>`
2708
+ h`<path fill="currentColor" d="M17.05 20.28c-.98.95-2.05.8-3.08.35-1.09-.46-2.09-.48-3.24 0-1.44.62-2.2.44-3.06-.35C2.79 15.25 3.51 7.59 9.05 7.31c1.35.07 2.29.74 3.08.8 1.18-.24 2.31-.93 3.57-.84 1.51.12 2.65.72 3.4 1.8-3.12 1.87-2.38 5.98.48 7.13-.57 1.5-1.31 2.99-2.54 4.09zM12.03 7.25c-.15-2.23 1.66-4.07 3.74-4.25.29 2.58-2.34 4.5-3.74 4.25z"/>`
2652
2709
  ),
2653
2710
  facebook: w(
2654
- d`<path fill="#1877F2" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>`
2711
+ h`<path fill="#1877F2" d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/>`
2655
2712
  ),
2656
2713
  x: w(
2657
- d`<path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>`
2714
+ h`<path fill="currentColor" d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/>`
2658
2715
  ),
2659
2716
  microsoft: w(
2660
- d`<path fill="#F25022" d="M1 1h10v10H1z"/><path fill="#7FBA00" d="M13 1h10v10H13z"/><path fill="#00A4EF" d="M1 13h10v10H1z"/><path fill="#FFB900" d="M13 13h10v10H13z"/>`
2717
+ h`<path fill="#F25022" d="M1 1h10v10H1z"/><path fill="#7FBA00" d="M13 1h10v10H13z"/><path fill="#00A4EF" d="M1 13h10v10H1z"/><path fill="#FFB900" d="M13 13h10v10H13z"/>`
2661
2718
  ),
2662
2719
  discord: w(
2663
- d`<path fill="#5865F2" d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/>`
2720
+ h`<path fill="#5865F2" d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z"/>`
2664
2721
  ),
2665
2722
  gitlab: w(
2666
- d`<path fill="#FC6D26" d="m23.6 9.593-.033-.086L20.3.98a.851.851 0 0 0-.336-.405.876.876 0 0 0-1.001.054.874.874 0 0 0-.29.44l-2.205 6.748H7.535L5.33 1.069a.857.857 0 0 0-.29-.441.876.876 0 0 0-1.001-.054.86.86 0 0 0-.336.405L.436 9.502l-.032.086a6.066 6.066 0 0 0 2.012 7.01l.011.009.03.021 4.976 3.727 2.462 1.863 1.5 1.132a1.009 1.009 0 0 0 1.22 0l1.5-1.132 2.461-1.863 5.006-3.75.013-.01a6.068 6.068 0 0 0 2.006-7.002z"/>`
2723
+ h`<path fill="#FC6D26" d="m23.6 9.593-.033-.086L20.3.98a.851.851 0 0 0-.336-.405.876.876 0 0 0-1.001.054.874.874 0 0 0-.29.44l-2.205 6.748H7.535L5.33 1.069a.857.857 0 0 0-.29-.441.876.876 0 0 0-1.001-.054.86.86 0 0 0-.336.405L.436 9.502l-.032.086a6.066 6.066 0 0 0 2.012 7.01l.011.009.03.021 4.976 3.727 2.462 1.863 1.5 1.132a1.009 1.009 0 0 0 1.22 0l1.5-1.132 2.461-1.863 5.006-3.75.013-.01a6.068 6.068 0 0 0 2.006-7.002z"/>`
2667
2724
  ),
2668
2725
  linkedin: w(
2669
- d`<path fill="#0A66C2" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>`
2726
+ h`<path fill="#0A66C2" d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"/>`
2670
2727
  ),
2671
2728
  slack: w(
2672
- d`<path fill="#E01E5A" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z"/><path fill="#36C5F0" d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z"/><path fill="#2EB67D" d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312z"/><path fill="#ECB22E" d="M15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.315A2.527 2.527 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>`
2729
+ h`<path fill="#E01E5A" d="M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313z"/><path fill="#36C5F0" d="M8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312z"/><path fill="#2EB67D" d="M18.956 8.834a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.27 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.163 0a2.528 2.528 0 0 1 2.523 2.522v6.312z"/><path fill="#ECB22E" d="M15.163 18.956a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.163 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.27a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.315A2.527 2.527 0 0 1 24 15.163a2.528 2.528 0 0 1-2.522 2.523h-6.315z"/>`
2673
2730
  ),
2674
2731
  twitch: w(
2675
- d`<path fill="#9146FF" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0 1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/>`
2732
+ h`<path fill="#9146FF" d="M11.571 4.714h1.715v5.143H11.57zm4.715 0H18v5.143h-1.714zM6 0 1.714 4.286v15.428h5.143V24l4.286-4.286h3.428L22.286 12V0zm14.571 11.143-3.428 3.428h-3.429l-3 3v-3H6.857V1.714h13.714Z"/>`
2676
2733
  ),
2677
2734
  spotify: w(
2678
- d`<path fill="#1DB954" d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/>`
2735
+ h`<path fill="#1DB954" d="M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z"/>`
2679
2736
  ),
2680
2737
  notion: w(
2681
- d`<path fill="currentColor" d="M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"/>`
2738
+ h`<path fill="currentColor" d="M4.459 4.208c.746.606 1.026.56 2.428.466l13.215-.793c.28 0 .047-.28-.046-.326L17.86 1.968c-.42-.326-.981-.7-2.055-.607L3.01 2.295c-.466.046-.56.28-.374.466zm.793 3.08v13.904c0 .747.373 1.027 1.214.98l14.523-.84c.841-.046.935-.56.935-1.167V6.354c0-.606-.233-.933-.748-.887l-15.177.887c-.56.047-.747.327-.747.933zm14.337.745c.093.42 0 .84-.42.888l-.7.14v10.264c-.608.327-1.168.514-1.635.514-.748 0-.935-.234-1.495-.933l-4.577-7.186v6.952L12.21 19s0 .84-1.168.84l-3.222.186c-.093-.186 0-.653.327-.746l.84-.233V9.854L7.822 9.76c-.094-.42.14-1.026.793-1.073l3.456-.233 4.764 7.279v-6.44l-1.215-.139c-.093-.514.28-.887.747-.933zM1.936 1.035l13.31-.98c1.634-.14 2.055-.047 3.082.7l4.249 2.986c.7.513.934.653.934 1.213v16.378c0 1.026-.373 1.634-1.68 1.726l-15.458.934c-.98.047-1.448-.093-1.962-.747l-3.129-4.06c-.56-.747-.793-1.306-.793-1.96V2.667c0-.839.374-1.54 1.447-1.632z"/>`
2682
2739
  ),
2683
2740
  dropbox: w(
2684
- d`<path fill="#0061FF" d="M6 1.807 0 5.629l6 3.822 6.001-3.822L6 1.807zm12 0-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zm18-3.822-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/>`
2741
+ h`<path fill="#0061FF" d="M6 1.807 0 5.629l6 3.822 6.001-3.822L6 1.807zm12 0-6 3.822 6 3.822 6-3.822-6-3.822zM0 13.274l6 3.822 6.001-3.822L6 9.452l-6 3.822zm18-3.822-6 3.822 6 3.822 6-3.822-6-3.822zM6 18.371l6.001 3.822 6-3.822-6-3.822L6 18.371z"/>`
2685
2742
  ),
2686
2743
  figma: w(
2687
- d`<path fill="#F24E1E" d="M8 24a4 4 0 0 0 4-4v-4H8a4 4 0 0 0 0 8z"/><path fill="#A259FF" d="M4 12a4 4 0 0 1 4-4h4v8H8a4 4 0 0 1-4-4z"/><path fill="#FF7262" d="M4 4a4 4 0 0 1 4-4h4v8H8a4 4 0 0 1-4-4z"/><path fill="#1ABCFE" d="M12 0h4a4 4 0 0 1 0 8h-4V0z"/><path fill="#0ACF83" d="M20 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0z"/>`
2744
+ h`<path fill="#F24E1E" d="M8 24a4 4 0 0 0 4-4v-4H8a4 4 0 0 0 0 8z"/><path fill="#A259FF" d="M4 12a4 4 0 0 1 4-4h4v8H8a4 4 0 0 1-4-4z"/><path fill="#FF7262" d="M4 4a4 4 0 0 1 4-4h4v8H8a4 4 0 0 1-4-4z"/><path fill="#1ABCFE" d="M12 0h4a4 4 0 0 1 0 8h-4V0z"/><path fill="#0ACF83" d="M20 12a4 4 0 1 1-8 0 4 4 0 0 1 8 0z"/>`
2688
2745
  ),
2689
2746
  bitbucket: w(
2690
- d`<path fill="#2684FF" d="M.778 1.213a.768.768 0 0 0-.768.892l3.263 19.81c.084.5.515.868 1.022.873H19.95a.772.772 0 0 0 .77-.646l3.27-20.03a.768.768 0 0 0-.768-.891zM14.52 15.53H9.522L8.17 8.466h7.561z"/>`
2747
+ h`<path fill="#2684FF" d="M.778 1.213a.768.768 0 0 0-.768.892l3.263 19.81c.084.5.515.868 1.022.873H19.95a.772.772 0 0 0 .77-.646l3.27-20.03a.768.768 0 0 0-.768-.891zM14.52 15.53H9.522L8.17 8.466h7.561z"/>`
2691
2748
  ),
2692
2749
  amazon: w(
2693
- d`<path fill="currentColor" d="M.045 18.02c.072-.116.187-.124.348-.022 3.636 2.11 7.594 3.166 11.87 3.166 2.852 0 5.668-.533 8.447-1.595l.315-.14c.138-.06.234-.1.293-.13.226-.088.39-.046.525.13.12.174.09.336-.12.48-.256.19-.6.41-1.006.654-1.244.743-2.64 1.316-4.185 1.726a17.617 17.617 0 0 1-10.951-.577 17.88 17.88 0 0 1-5.43-3.35c-.1-.074-.151-.15-.151-.22 0-.047.021-.09.051-.13zm6.565-6.218c0-1.005.247-1.863.743-2.577.495-.71 1.17-1.25 2.04-1.615.796-.335 1.756-.575 2.912-.72.39-.046 1.033-.103 1.92-.174v-.37c0-.93-.105-1.558-.3-1.875-.302-.43-.78-.65-1.44-.65h-.182c-.48.046-.896.196-1.246.46-.35.27-.575.63-.675 1.096-.06.3-.206.465-.435.51l-2.52-.315c-.248-.06-.372-.18-.372-.39 0-.046.007-.09.022-.15.247-1.29.855-2.25 1.82-2.88.976-.616 2.1-.975 3.39-1.05h.54c1.65 0 2.957.434 3.888 1.29.135.15.27.3.405.48.12.165.224.314.283.45.075.134.15.33.195.57.06.254.105.42.135.51.03.104.062.3.076.615.01.313.02.493.02.553v5.28c0 .376.06.72.165 1.036.105.313.21.54.315.674l.51.674c.09.136.136.256.136.36 0 .12-.06.226-.18.314-1.2 1.05-1.86 1.62-1.963 1.71-.165.135-.373.15-.61.045a6.62 6.62 0 0 1-.526-.496l-.31-.347a9.858 9.858 0 0 1-.317-.42l-.3-.435c-.81.886-1.603 1.44-2.4 1.665-.494.15-1.093.227-1.83.227-1.11 0-2.04-.343-2.76-1.034-.72-.69-1.08-1.665-1.08-2.94l-.05-.076zm3.753-.438c0 .566.14 1.02.425 1.364.285.34.675.512 1.155.512.045 0 .106-.007.195-.02.09-.016.134-.023.166-.023.614-.16 1.08-.553 1.424-1.178.165-.28.285-.58.36-.91.09-.32.12-.59.135-.8.015-.195.015-.54.015-1.005v-.54c-.84 0-1.484.06-1.92.18-1.275.36-1.92 1.17-1.92 2.43l-.035-.01zm9.162 7.027c.03-.06.075-.11.132-.17.362-.243.714-.41 1.05-.5a8.094 8.094 0 0 1 1.612-.24c.14-.012.28 0 .41.03.65.06 1.05.168 1.172.33.063.09.099.228.099.39v.15c0 .51-.149 1.11-.424 1.8-.278.69-.664 1.248-1.156 1.68-.073.06-.14.09-.197.09-.03 0-.06 0-.09-.012-.09-.044-.107-.12-.064-.24.54-1.26.806-2.143.806-2.64 0-.15-.03-.27-.087-.344-.145-.166-.55-.257-1.224-.257-.243 0-.533.016-.87.045-.363.045-.7.09-1 .135-.09 0-.148-.014-.18-.044-.03-.03-.036-.06-.02-.106 0-.014.007-.03.02-.06z"/>`
2750
+ h`<path fill="currentColor" d="M.045 18.02c.072-.116.187-.124.348-.022 3.636 2.11 7.594 3.166 11.87 3.166 2.852 0 5.668-.533 8.447-1.595l.315-.14c.138-.06.234-.1.293-.13.226-.088.39-.046.525.13.12.174.09.336-.12.48-.256.19-.6.41-1.006.654-1.244.743-2.64 1.316-4.185 1.726a17.617 17.617 0 0 1-10.951-.577 17.88 17.88 0 0 1-5.43-3.35c-.1-.074-.151-.15-.151-.22 0-.047.021-.09.051-.13zm6.565-6.218c0-1.005.247-1.863.743-2.577.495-.71 1.17-1.25 2.04-1.615.796-.335 1.756-.575 2.912-.72.39-.046 1.033-.103 1.92-.174v-.37c0-.93-.105-1.558-.3-1.875-.302-.43-.78-.65-1.44-.65h-.182c-.48.046-.896.196-1.246.46-.35.27-.575.63-.675 1.096-.06.3-.206.465-.435.51l-2.52-.315c-.248-.06-.372-.18-.372-.39 0-.046.007-.09.022-.15.247-1.29.855-2.25 1.82-2.88.976-.616 2.1-.975 3.39-1.05h.54c1.65 0 2.957.434 3.888 1.29.135.15.27.3.405.48.12.165.224.314.283.45.075.134.15.33.195.57.06.254.105.42.135.51.03.104.062.3.076.615.01.313.02.493.02.553v5.28c0 .376.06.72.165 1.036.105.313.21.54.315.674l.51.674c.09.136.136.256.136.36 0 .12-.06.226-.18.314-1.2 1.05-1.86 1.62-1.963 1.71-.165.135-.373.15-.61.045a6.62 6.62 0 0 1-.526-.496l-.31-.347a9.858 9.858 0 0 1-.317-.42l-.3-.435c-.81.886-1.603 1.44-2.4 1.665-.494.15-1.093.227-1.83.227-1.11 0-2.04-.343-2.76-1.034-.72-.69-1.08-1.665-1.08-2.94l-.05-.076zm3.753-.438c0 .566.14 1.02.425 1.364.285.34.675.512 1.155.512.045 0 .106-.007.195-.02.09-.016.134-.023.166-.023.614-.16 1.08-.553 1.424-1.178.165-.28.285-.58.36-.91.09-.32.12-.59.135-.8.015-.195.015-.54.015-1.005v-.54c-.84 0-1.484.06-1.92.18-1.275.36-1.92 1.17-1.92 2.43l-.035-.01zm9.162 7.027c.03-.06.075-.11.132-.17.362-.243.714-.41 1.05-.5a8.094 8.094 0 0 1 1.612-.24c.14-.012.28 0 .41.03.65.06 1.05.168 1.172.33.063.09.099.228.099.39v.15c0 .51-.149 1.11-.424 1.8-.278.69-.664 1.248-1.156 1.68-.073.06-.14.09-.197.09-.03 0-.06 0-.09-.012-.09-.044-.107-.12-.064-.24.54-1.26.806-2.143.806-2.64 0-.15-.03-.27-.087-.344-.145-.166-.55-.257-1.224-.257-.243 0-.533.016-.87.045-.363.045-.7.09-1 .135-.09 0-.148-.014-.18-.044-.03-.03-.036-.06-.02-.106 0-.014.007-.03.02-.06z"/>`
2694
2751
  ),
2695
2752
  paypal: w(
2696
- d`<path fill="#003087" d="M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z"/>`
2753
+ h`<path fill="#003087" d="M7.076 21.337H2.47a.641.641 0 0 1-.633-.74L4.944.901C5.026.382 5.474 0 5.998 0h7.46c2.57 0 4.578.543 5.69 1.81 1.01 1.15 1.304 2.42 1.012 4.287-.023.143-.047.288-.077.437-.983 5.05-4.349 6.797-8.647 6.797h-2.19c-.524 0-.968.382-1.05.9l-1.12 7.106zm14.146-14.42a3.35 3.35 0 0 0-.607-.541c-.013.076-.026.175-.041.254-.93 4.778-4.005 7.201-9.138 7.201h-2.19a.563.563 0 0 0-.556.479l-1.187 7.527h-.506l-.24 1.516a.56.56 0 0 0 .554.647h3.882c.46 0 .85-.334.922-.788.06-.26.76-4.852.816-5.09a.932.932 0 0 1 .923-.788h.58c3.76 0 6.705-1.528 7.565-5.946.36-1.847.174-3.388-.777-4.471z"/>`
2697
2754
  )
2698
2755
  };
2699
- function tt(e) {
2700
- return qt[e] ?? c.globe;
2756
+ function et(e) {
2757
+ return Wt[e] ?? l.globe;
2701
2758
  }
2702
- function st(e) {
2759
+ function nt(e) {
2703
2760
  const t = (e.trim()[0] ?? "?").toUpperCase();
2704
- return /[A-Z0-9]/i.test(t) ? t : c.user;
2761
+ return /[A-Z0-9]/i.test(t) ? t : l.user;
2705
2762
  }
2706
- function G(e) {
2763
+ function Y(e) {
2707
2764
  typeof document > "u" || (document.querySelector("authui-modal") || document.body.appendChild(document.createElement("authui-modal")), queueMicrotask(() => {
2708
2765
  window.dispatchEvent(new CustomEvent("authui:open", { detail: { view: e } }));
2709
2766
  }));
2710
2767
  }
2711
- function se() {
2768
+ function le() {
2712
2769
  typeof window > "u" || window.dispatchEvent(new CustomEvent("authui:close"));
2713
2770
  }
2714
- function et(e) {
2771
+ function it(e) {
2715
2772
  const t = {
2716
2773
  length: e.length >= 8,
2717
2774
  long: e.length >= 12,
@@ -2727,39 +2784,12 @@ function et(e) {
2727
2784
  let s, a;
2728
2785
  return !t.length || i <= 1 ? (s = 1, a = "passwordStrengthTooWeak") : i === 2 ? (s = 2, a = "passwordStrengthWeak") : i === 3 ? (s = 3, a = "passwordStrengthFair") : i >= 5 && t.long && t.lower && t.upper && t.number && t.symbol ? (s = 4, a = "passwordStrengthVeryStrong") : (s = 4, a = "passwordStrengthStrong"), { level: s, percent: s * 25, labelKey: a, checks: t };
2729
2786
  }
2730
- const rt = "authui:last-method";
2731
- function V(e) {
2732
- if (!(typeof localStorage > "u")) {
2733
- if (!e || e === "mfa" || e === "sign-up")
2734
- if (e === "sign-up") e = "email-password";
2735
- else return;
2736
- try {
2737
- localStorage.setItem(rt, e);
2738
- } catch {
2739
- }
2740
- }
2741
- }
2742
- function D() {
2743
- if (typeof localStorage > "u") return null;
2744
- try {
2745
- return localStorage.getItem(rt);
2746
- } catch {
2747
- return null;
2748
- }
2749
- }
2750
- function re() {
2751
- if (!(typeof localStorage > "u"))
2752
- try {
2753
- localStorage.removeItem(rt);
2754
- } catch {
2755
- }
2756
- }
2757
- var Nt = Object.defineProperty, Bt = Object.getOwnPropertyDescriptor, k = (e, t, i, s) => {
2758
- for (var a = s > 1 ? void 0 : s ? Bt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
2759
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
2760
- return s && a && Nt(t, i, a), a;
2787
+ var Kt = Object.defineProperty, Gt = Object.getOwnPropertyDescriptor, C = (e, t, i, s) => {
2788
+ for (var a = s > 1 ? void 0 : s ? Gt(t, i) : t, c = e.length - 1, u; c >= 0; c--)
2789
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
2790
+ return s && a && Kt(t, i, a), a;
2761
2791
  };
2762
- let $ = class extends A {
2792
+ let k = class extends E {
2763
2793
  constructor() {
2764
2794
  super(...arguments), this.view = "sign-in", this.embedded = !1, this.step = "sign-in", this.busy = !1, this.error = "", this.notice = null, this.showPassword = !1, this.token = null, this.focusOnStep = !1, this.resendCooldownUntil = 0, this.challenge = null, this.recovery = null, this.email = "", this.password = "", this.passwordConfirm = "", this.name = "", this.phone = "", this.code = "", this.onSignIn = (e) => {
2765
2795
  e.preventDefault(), this.requireValid(e) && this.run(async () => {
@@ -2775,8 +2805,8 @@ let $ = class extends A {
2775
2805
  });
2776
2806
  }, this.onOAuth = (e) => {
2777
2807
  this.run(async () => {
2778
- if (V(`oauth:${e}`), await n.signInWithOAuth(e), n.isPreview) {
2779
- this.fire("authui-success", { method: "oauth" });
2808
+ if (Ot(e), await n.signInWithOAuth(e), n.isPreview) {
2809
+ wt(), this.fire("authui-success", { method: "oauth" });
2780
2810
  return;
2781
2811
  }
2782
2812
  await new Promise((t) => setTimeout(t, 4e3));
@@ -2793,7 +2823,7 @@ let $ = class extends A {
2793
2823
  }
2794
2824
  const t = this.recovery;
2795
2825
  t && this.run(async () => {
2796
- await n.completePasswordRecovery(t.userId, t.secret, this.password), this.password = "", this.passwordConfirm = "", this.recovery = null, this.auth.pending?.type === "reset-password" && n.setPending(null), this.notice = { tone: "success", message: this.t("passwordUpdated") }, this.go("sign-in");
2826
+ await n.completePasswordRecovery(t.userId, t.secret, this.password), this.password = "", this.passwordConfirm = "", this.recovery = null, this.auth.pending?.type === "reset-password" && n.setPending(null), this.go("sign-in"), this.notice = { tone: "success", message: this.t("passwordUpdated") };
2797
2827
  });
2798
2828
  }, this.onMagicUrl = (e) => {
2799
2829
  e.preventDefault(), this.requireValid(e) && this.run(async () => {
@@ -2864,7 +2894,7 @@ let $ = class extends A {
2864
2894
  const { status: e, pending: t } = this.auth;
2865
2895
  e === "mfa-required" && this.step !== "mfa" && this.go("mfa");
2866
2896
  const i = this.step === "reset-password" || t?.type === "reset-password" || this.recovery !== null;
2867
- (e === "signed-in" || e === "signed-out") && !i && (this.step === "mfa" || this.step === "phone" || this.step === "email-otp" || this.step === "magic-url" || this.step === "forgot-password" || this.token !== null || this.challenge !== null || e === "signed-out") && (this.token = null, this.challenge = null, this.code = "", this.password = "", this.notice = null, this.go(this.view === "sign-up" ? "sign-up" : "sign-in")), t?.type === "reset-password" && this.step !== "reset-password" && (this.recovery = { userId: t.userId, secret: t.secret }, this.go("reset-password")), t?.type === "oauth-failed" && (this.notice = { tone: "error", message: this.t("errorOAuth") }, n.setPending(null)), t?.type === "notice" && !this.notice && (this.notice = {
2897
+ (e === "signed-in" || e === "signed-out") && !i && (this.step === "mfa" || this.step === "phone" || this.step === "email-otp" || this.step === "magic-url" || this.step === "forgot-password" || this.token !== null || this.challenge !== null || e === "signed-out") && (this.token = null, this.challenge = null, this.code = "", this.password = "", this.notice = null, this.go(this.view === "sign-up" ? "sign-up" : "sign-in")), t?.type === "reset-password" && this.step !== "reset-password" && (this.recovery = { userId: t.userId, secret: t.secret }, this.go("reset-password")), t?.type === "oauth-failed" && (this.notice = { tone: "error", message: this.t("errorOAuth") }), t?.type === "notice" && !this.notice && (this.notice = {
2868
2898
  tone: t.tone === "error" ? "error" : t.tone,
2869
2899
  message: t.message
2870
2900
  });
@@ -2874,7 +2904,7 @@ let $ = class extends A {
2874
2904
  this.notice = null, this.auth.pending?.type === "notice" && n.setPending(null);
2875
2905
  }
2876
2906
  go(e) {
2877
- e === "sign-up" && this.config?.signUp === !1 && (e = "sign-in"), this.focusOnStep = !0, this.step = e, this.error = "", this.notice = null, this.auth.pending?.type === "notice" && n.setPending(null), this.busy = !1, this.showPassword = !1, this.password = "", this.passwordConfirm = "", e !== "mfa" && (this.challenge = null), e !== "email-otp" && e !== "phone" && e !== "magic-url" && (this.token = null), this.fire("authui-view", { view: e });
2907
+ e === "sign-up" && this.config?.signUp === !1 && (e = "sign-in"), this.focusOnStep = !0, this.step = e, this.error = "", this.notice = null, this.busy = !1, this.showPassword = !1, this.password = "", this.passwordConfirm = "", e !== "mfa" && (this.challenge = null), e !== "email-otp" && e !== "phone" && e !== "magic-url" && (this.token = null), this.fire("authui-view", { view: e });
2878
2908
  }
2879
2909
  // ───────────────────────────── actions ─────────────────────────────
2880
2910
  async run(e, t = "link") {
@@ -2906,14 +2936,14 @@ let $ = class extends A {
2906
2936
  <div class="panel ${this.embedded ? "embedded" : ""}" part="panel">
2907
2937
  ${this.renderHeader()}
2908
2938
  ${this.notice ? r`<div class="alert alert-${this.notice.tone}" role="status">
2909
- ${this.notice.tone === "success" ? c.checkCircle : this.notice.tone === "error" ? c.alert : c.info}
2939
+ ${this.notice.tone === "success" ? l.checkCircle : this.notice.tone === "error" ? l.alert : l.info}
2910
2940
  <div class="alert-body">${this.notice.message}</div>
2911
2941
  <button
2912
2942
  class="btn btn-ghost btn-icon dismiss"
2913
2943
  @click=${() => this.dismissNotice()}
2914
2944
  aria-label=${this.t("close")}
2915
2945
  >
2916
- ${c.x}
2946
+ ${l.x}
2917
2947
  </button>
2918
2948
  </div>` : o}
2919
2949
  ${e}
@@ -2966,7 +2996,7 @@ let $ = class extends A {
2966
2996
  }
2967
2997
  renderError() {
2968
2998
  return this.error ? r`<div class="alert alert-error" role="alert">
2969
- ${c.alert}
2999
+ ${l.alert}
2970
3000
  <div class="alert-body">${this.error}</div>
2971
3001
  </div>` : o;
2972
3002
  }
@@ -2976,7 +3006,7 @@ let $ = class extends A {
2976
3006
  </button>`;
2977
3007
  }
2978
3008
  passwordField(e) {
2979
- const t = this[e.field], i = e.meter ? et(t) : null;
3009
+ const t = this[e.field], i = e.meter ? it(t) : null;
2980
3010
  return r`
2981
3011
  <div class="field">
2982
3012
  <label class="label" for=${e.id}>
@@ -3007,7 +3037,7 @@ let $ = class extends A {
3007
3037
  aria-label=${this.showPassword ? this.t("hidePassword") : this.t("showPassword")}
3008
3038
  tabindex="-1"
3009
3039
  >
3010
- ${this.showPassword ? c.eyeOff : c.eye}
3040
+ ${this.showPassword ? l.eyeOff : l.eye}
3011
3041
  </button>
3012
3042
  </div>
3013
3043
  ${i && t ? r`<div class="strength" aria-live="polite">
@@ -3076,19 +3106,19 @@ let $ = class extends A {
3076
3106
  backLink(e = "sign-in") {
3077
3107
  return r`<div class="links">
3078
3108
  <button type="button" class="btn btn-link" @click=${() => this.go(e)}>
3079
- ${c.arrowLeft} ${this.t("back")}
3109
+ ${l.arrowLeft} ${this.t("back")}
3080
3110
  </button>
3081
3111
  </div>`;
3082
3112
  }
3083
3113
  renderStep() {
3084
3114
  if (this.auth.configError)
3085
3115
  return r`<div class="alert alert-error" role="alert">
3086
- ${c.alert}
3116
+ ${l.alert}
3087
3117
  <div class="alert-body">${this.auth.configError}</div>
3088
3118
  </div>`;
3089
3119
  if (!this.auth.configured)
3090
3120
  return r`<div class="alert alert-error" role="alert">
3091
- ${c.alert}
3121
+ ${l.alert}
3092
3122
  <div class="alert-body">${this.t("errorNotConfigured")}</div>
3093
3123
  </div>`;
3094
3124
  if (this.auth.status === "loading")
@@ -3119,7 +3149,7 @@ let $ = class extends A {
3119
3149
  <div class="stack">
3120
3150
  <div class="row">
3121
3151
  <div class="inline">
3122
- <span class="avatar">${st(t)}</span>
3152
+ <span class="avatar">${nt(t)}</span>
3123
3153
  <div class="row-main">
3124
3154
  <span class="row-title" title=${t}>${t}</span>
3125
3155
  ${e.email && e.name ? r`<span class="row-sub" title=${e.email}>${e.email}</span>` : o}
@@ -3134,13 +3164,13 @@ let $ = class extends A {
3134
3164
  <button
3135
3165
  class="btn btn-outline btn-block"
3136
3166
  @click=${() => {
3137
- this.embedded ? this.fire("authui-open", { view: "account" }) : G("account");
3167
+ this.embedded ? this.fire("authui-open", { view: "account" }) : Y("account");
3138
3168
  }}
3139
3169
  >
3140
- ${c.settings} ${this.t("manageAccount")}
3170
+ ${l.settings} ${this.t("manageAccount")}
3141
3171
  </button>
3142
3172
  <button class="btn btn-ghost btn-block" @click=${this.onSignOut} ?disabled=${this.busy}>
3143
- ${c.logOut} ${this.t("signOut")}
3173
+ ${l.logOut} ${this.t("signOut")}
3144
3174
  </button>
3145
3175
  </div>
3146
3176
  </div>
@@ -3151,8 +3181,8 @@ let $ = class extends A {
3151
3181
  if (e.length === 0) return o;
3152
3182
  const t = D();
3153
3183
  e.sort((s, a) => {
3154
- const l = t === `oauth:${s}` ? 0 : 1, u = t === `oauth:${a}` ? 0 : 1;
3155
- return l - u;
3184
+ const c = t === `oauth:${s}` ? 0 : 1, u = t === `oauth:${a}` ? 0 : 1;
3185
+ return c - u;
3156
3186
  });
3157
3187
  const i = e.length > 2;
3158
3188
  return r`
@@ -3166,7 +3196,7 @@ let $ = class extends A {
3166
3196
  ?disabled=${this.busy}
3167
3197
  aria-label=${this.t("continueWith", { provider: q(s) })}
3168
3198
  >
3169
- ${tt(s)}
3199
+ ${et(s)}
3170
3200
  <span
3171
3201
  >${i ? q(s) : this.t("continueWith", { provider: q(s) })}</span
3172
3202
  >
@@ -3178,9 +3208,9 @@ let $ = class extends A {
3178
3208
  }
3179
3209
  renderSignIn() {
3180
3210
  const e = this.config?.methods ?? {}, t = e.emailPassword !== !1, i = (e.oauth?.length ?? 0) > 0, s = [
3181
- e.magicUrl ? { step: "magic-url", icon: c.link, label: this.t("sendMagicLink") } : null,
3182
- e.emailOtp ? { step: "email-otp", icon: c.mail, label: this.t("continueWithEmail") } : null,
3183
- e.phone ? { step: "phone", icon: c.smartphone, label: this.t("continueWithPhone") } : null
3211
+ e.magicUrl ? { step: "magic-url", icon: l.link, label: this.t("sendMagicLink") } : null,
3212
+ e.emailOtp ? { step: "email-otp", icon: l.mail, label: this.t("continueWithEmail") } : null,
3213
+ e.phone ? { step: "phone", icon: l.smartphone, label: this.t("continueWithPhone") } : null
3184
3214
  ].filter(Boolean);
3185
3215
  return r`
3186
3216
  <div class="stack">
@@ -3200,14 +3230,14 @@ let $ = class extends A {
3200
3230
  </form>` : this.renderError()}
3201
3231
  ${s.length > 0 ? r`<div class="stack-sm">
3202
3232
  ${s.map((a) => {
3203
- const l = D() === a.step;
3233
+ const c = D() === a.step;
3204
3234
  return r`<button
3205
3235
  type="button"
3206
- class="btn btn-secondary btn-block ${l ? "last-used" : ""}"
3236
+ class="btn btn-secondary btn-block ${c ? "last-used" : ""}"
3207
3237
  @click=${() => this.go(a.step)}
3208
3238
  >
3209
3239
  ${a.icon} ${a.label}
3210
- ${l ? r`<span class="last-used-badge">${this.t("lastUsed")}</span>` : o}
3240
+ ${c ? r`<span class="last-used-badge">${this.t("lastUsed")}</span>` : o}
3211
3241
  </button>`;
3212
3242
  })}
3213
3243
  </div>` : o}
@@ -3217,7 +3247,7 @@ let $ = class extends A {
3217
3247
  @click=${this.onGuest}
3218
3248
  ?disabled=${this.busy}
3219
3249
  >
3220
- ${c.ghost} ${this.t("continueAsGuest")}
3250
+ ${l.ghost} ${this.t("continueAsGuest")}
3221
3251
  ${D() === "anonymous" ? r`<span class="last-used-badge">${this.t("lastUsed")}</span>` : o}
3222
3252
  </button>` : o}
3223
3253
  ${t && this.config?.signUp !== !1 ? r`<div class="links">
@@ -3288,13 +3318,13 @@ let $ = class extends A {
3288
3318
  this.step = "sign-in", this.error = "", this.notice = null, this.focusOnStep = !0, this.fire("authui-view", { view: "sign-in" });
3289
3319
  }}
3290
3320
  >
3291
- ${c.arrowLeft} ${this.t("back")}
3321
+ ${l.arrowLeft} ${this.t("back")}
3292
3322
  </button>
3293
3323
  </div>
3294
3324
  </div>
3295
3325
  ` : r`<div class="stack">
3296
3326
  <div class="alert alert-error" role="alert">
3297
- ${c.alert}
3327
+ ${l.alert}
3298
3328
  <div class="alert-body">${this.t("errorInvalidToken")}</div>
3299
3329
  </div>
3300
3330
  <div class="links">
@@ -3312,7 +3342,7 @@ let $ = class extends A {
3312
3342
  }
3313
3343
  phraseBox(e) {
3314
3344
  return e ? r`<div class="alert alert-info">
3315
- ${c.shield}
3345
+ ${l.shield}
3316
3346
  <div class="alert-title">
3317
3347
  ${this.t("securityPhrase")}: <span class="code">${e}</span>
3318
3348
  </div>
@@ -3322,7 +3352,7 @@ let $ = class extends A {
3322
3352
  renderMagicUrl() {
3323
3353
  return this.token ? r`<div class="stack">
3324
3354
  <div class="alert alert-success" role="status">
3325
- ${c.mail}
3355
+ ${l.mail}
3326
3356
  <div class="alert-body">${this.t("magicLinkSent", { email: this.token.target })}</div>
3327
3357
  </div>
3328
3358
  ${this.phraseBox(this.token.phrase)} ${this.backLink()}
@@ -3357,7 +3387,7 @@ let $ = class extends A {
3357
3387
  const e = this.token?.kind === "phone", t = Date.now() < this.resendCooldownUntil;
3358
3388
  return r`
3359
3389
  <div class="alert alert-info" role="status">
3360
- ${e ? c.smartphone : c.mail}
3390
+ ${e ? l.smartphone : l.mail}
3361
3391
  <div class="alert-body">${this.t("codeSent", { target: this.token.target })}</div>
3362
3392
  </div>
3363
3393
  ${this.phraseBox(this.token.phrase)}
@@ -3427,25 +3457,25 @@ let $ = class extends A {
3427
3457
  const i = [
3428
3458
  {
3429
3459
  factor: "totp",
3430
- icon: c.smartphone,
3460
+ icon: l.smartphone,
3431
3461
  label: this.t("mfaUseAuthenticator"),
3432
3462
  available: e?.totp ?? !0
3433
3463
  },
3434
3464
  {
3435
3465
  factor: "email",
3436
- icon: c.mail,
3466
+ icon: l.mail,
3437
3467
  label: this.t("mfaUseEmail"),
3438
3468
  available: e?.email ?? !0
3439
3469
  },
3440
3470
  {
3441
3471
  factor: "phone",
3442
- icon: c.phone,
3472
+ icon: l.phone,
3443
3473
  label: this.t("mfaUsePhone"),
3444
3474
  available: e?.phone ?? !0
3445
3475
  },
3446
3476
  {
3447
3477
  factor: "recoverycode",
3448
- icon: c.key,
3478
+ icon: l.key,
3449
3479
  label: this.t("mfaUseRecoveryCode"),
3450
3480
  available: e?.recoveryCode ?? !0
3451
3481
  }
@@ -3493,7 +3523,7 @@ let $ = class extends A {
3493
3523
  </form>
3494
3524
  <div class="links">
3495
3525
  <button type="button" class="btn btn-link" @click=${() => this.challenge = null}>
3496
- ${c.arrowLeft} ${this.t("back")}
3526
+ ${l.arrowLeft} ${this.t("back")}
3497
3527
  </button>
3498
3528
  <span aria-hidden="true">·</span>
3499
3529
  <button type="button" class="btn btn-link" @click=${this.onCancelMfa}>
@@ -3504,57 +3534,57 @@ let $ = class extends A {
3504
3534
  `;
3505
3535
  }
3506
3536
  };
3507
- $.styles = [...A.styles, Vt];
3508
- k([
3537
+ k.styles = [...E.styles, jt];
3538
+ C([
3509
3539
  g({ type: String })
3510
- ], $.prototype, "view", 2);
3511
- k([
3540
+ ], k.prototype, "view", 2);
3541
+ C([
3512
3542
  g({ type: Boolean })
3513
- ], $.prototype, "embedded", 2);
3514
- k([
3515
- h()
3516
- ], $.prototype, "step", 2);
3517
- k([
3518
- h()
3519
- ], $.prototype, "busy", 2);
3520
- k([
3521
- h()
3522
- ], $.prototype, "error", 2);
3523
- k([
3524
- h()
3525
- ], $.prototype, "notice", 2);
3526
- k([
3527
- h()
3528
- ], $.prototype, "showPassword", 2);
3529
- k([
3530
- h()
3531
- ], $.prototype, "token", 2);
3532
- k([
3533
- h()
3534
- ], $.prototype, "resendCooldownUntil", 2);
3535
- k([
3536
- h()
3537
- ], $.prototype, "challenge", 2);
3538
- k([
3539
- h()
3540
- ], $.prototype, "recovery", 2);
3541
- k([
3542
- gt("form input:not([type=hidden])")
3543
- ], $.prototype, "firstInput", 2);
3544
- $ = k([
3545
- O("authui-sign-in")
3546
- ], $);
3547
- var jt = Object.defineProperty, Ht = Object.getOwnPropertyDescriptor, m = (e, t, i, s) => {
3548
- for (var a = s > 1 ? void 0 : s ? Ht(t, i) : t, l = e.length - 1, u; l >= 0; l--)
3549
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
3550
- return s && a && jt(t, i, a), a;
3543
+ ], k.prototype, "embedded", 2);
3544
+ C([
3545
+ d()
3546
+ ], k.prototype, "step", 2);
3547
+ C([
3548
+ d()
3549
+ ], k.prototype, "busy", 2);
3550
+ C([
3551
+ d()
3552
+ ], k.prototype, "error", 2);
3553
+ C([
3554
+ d()
3555
+ ], k.prototype, "notice", 2);
3556
+ C([
3557
+ d()
3558
+ ], k.prototype, "showPassword", 2);
3559
+ C([
3560
+ d()
3561
+ ], k.prototype, "token", 2);
3562
+ C([
3563
+ d()
3564
+ ], k.prototype, "resendCooldownUntil", 2);
3565
+ C([
3566
+ d()
3567
+ ], k.prototype, "challenge", 2);
3568
+ C([
3569
+ d()
3570
+ ], k.prototype, "recovery", 2);
3571
+ C([
3572
+ st("form input:not([type=hidden])")
3573
+ ], k.prototype, "firstInput", 2);
3574
+ k = C([
3575
+ R("authui-sign-in")
3576
+ ], k);
3577
+ var Yt = Object.defineProperty, Zt = Object.getOwnPropertyDescriptor, m = (e, t, i, s) => {
3578
+ for (var a = s > 1 ? void 0 : s ? Zt(t, i) : t, c = e.length - 1, u; c >= 0; c--)
3579
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
3580
+ return s && a && Yt(t, i, a), a;
3551
3581
  };
3552
- let p = class extends A {
3582
+ let p = class extends E {
3553
3583
  constructor() {
3554
- super(...arguments), this.embedded = !1, this.tab = "profile", this.active = "profile", this.busy = "", this.notice = null, this.errors = {}, this.nameInput = "", this.emailInput = "", this.emailPassword = "", this.phoneInput = "", this.phonePassword = "", this.phoneCode = "", this.phoneCodeSent = !1, this.guestName = "", this.oldPassword = "", this.newPassword = "", this.newPasswordConfirm = "", this.authenticator = null, this.authenticatorCode = "", this.factors = null, this.recoveryCodes = null, this.stepUp = null, this.stepUpCode = "", this.copied = !1, this.sessions = null, this.identities = null, this.logs = null, this.logsSupported = null, this.logsProbeStarted = !1, this.confirmDelete = !1, this.confirmRegenerate = !1, this.confirmRemoveAuthenticator = !1, this.confirmSignOutAll = !1, this.confirmDisconnectId = null, this.verifyEmailCooldownUntil = 0, this.onTabsKeydown = (e) => {
3584
+ super(...arguments), this.embedded = !1, this.tab = "profile", this.active = "profile", this.busy = "", this.notice = null, this.errors = {}, this.nameInput = "", this.emailInput = "", this.emailPassword = "", this.phoneInput = "", this.phonePassword = "", this.phoneCode = "", this.phoneCodeSent = !1, this.guestName = "", this.oldPassword = "", this.newPassword = "", this.newPasswordConfirm = "", this.authenticator = null, this.authenticatorCode = "", this.factors = null, this.recoveryCodes = null, this.stepUp = null, this.stepUpCode = "", this.copied = !1, this.sessions = null, this.identities = null, this.logs = null, this.logsSupported = null, this.logsProbeStarted = !1, this.confirmDelete = !1, this.confirmRegenerate = !1, this.confirmRemoveAuthenticator = !1, this.confirmSignOutAll = !1, this.confirmDisconnectId = null, this.verifyEmailCooldownUntil = 0, this.verifyEmailCooldownTimer = null, this.onTabsKeydown = (e) => {
3555
3585
  const t = [...this.renderRoot?.querySelectorAll('[role="tab"]') ?? []];
3556
3586
  if (!t.length) return;
3557
- const i = t.findIndex((l) => l.getAttribute("aria-selected") === "true");
3587
+ const i = t.findIndex((c) => c.getAttribute("aria-selected") === "true");
3558
3588
  let s = i;
3559
3589
  if (e.key === "ArrowRight" || e.key === "ArrowDown") s = (i + 1) % t.length;
3560
3590
  else if (e.key === "ArrowLeft" || e.key === "ArrowUp")
@@ -3595,7 +3625,7 @@ let p = class extends A {
3595
3625
  Date.now() < this.verifyEmailCooldownUntil || this.run(
3596
3626
  "verify",
3597
3627
  async () => {
3598
- await n.sendEmailVerification(), this.verifyEmailCooldownUntil = Date.now() + 45e3, window.setTimeout(() => this.requestUpdate(), 45e3);
3628
+ await n.sendEmailVerification(), this.startVerifyEmailCooldown();
3599
3629
  },
3600
3630
  this.t("verificationSent")
3601
3631
  );
@@ -3622,7 +3652,7 @@ let p = class extends A {
3622
3652
  async () => {
3623
3653
  await n.updatePassword(this.newPassword, this.oldPassword), this.oldPassword = this.newPassword = this.newPasswordConfirm = "";
3624
3654
  },
3625
- this.t("passwordUpdated")
3655
+ this.t("passwordChanged")
3626
3656
  );
3627
3657
  }
3628
3658
  }, this.onToggleMfa = () => {
@@ -3692,9 +3722,12 @@ let p = class extends A {
3692
3722
  }, this.onStepUpVerify = (e) => {
3693
3723
  if (e.preventDefault(), !this.requireValid(e)) return;
3694
3724
  const t = this.stepUp;
3695
- t?.challenge && this.run("stepup-code", async () => {
3696
- await n.completeMfaChallenge(t.challenge.id, this.stepUpCode, { signIn: !1 }), this.stepUp = null, this.stepUpCode = "", await t.retry();
3697
- });
3725
+ t?.challenge && (async () => {
3726
+ let i = !1;
3727
+ await this.run("stepup-code", async () => {
3728
+ await n.completeMfaChallenge(t.challenge.id, this.stepUpCode, { signIn: !1 }), this.stepUp = null, this.stepUpCode = "", i = !0;
3729
+ }), i && await t.retry();
3730
+ })();
3698
3731
  }, this.onDeleteSession = (e) => {
3699
3732
  this.run(`session-${e}`, async () => {
3700
3733
  if ((this.sessions ?? []).some((i) => i.$id === e && i.current)) {
@@ -3724,6 +3757,9 @@ let p = class extends A {
3724
3757
  connectedCallback() {
3725
3758
  super.connectedCallback(), this.active = this.tab, this.hydrate();
3726
3759
  }
3760
+ disconnectedCallback() {
3761
+ super.disconnectedCallback(), this.clearVerifyEmailCooldownTimer(), this.noticeTimer && (clearTimeout(this.noticeTimer), this.noticeTimer = null);
3762
+ }
3727
3763
  willUpdate(e) {
3728
3764
  e.has("tab") && e.get("tab") !== void 0 && (this.active = this.tab), e.has("auth") && this.hydrate(), this.ensureLoaded();
3729
3765
  }
@@ -3835,6 +3871,14 @@ let p = class extends A {
3835
3871
  }
3836
3872
  }
3837
3873
  }
3874
+ startVerifyEmailCooldown() {
3875
+ this.verifyEmailCooldownUntil = Date.now() + 45e3, this.clearVerifyEmailCooldownTimer(), this.verifyEmailCooldownTimer = setInterval(() => {
3876
+ this.requestUpdate(), Date.now() >= this.verifyEmailCooldownUntil && this.clearVerifyEmailCooldownTimer();
3877
+ }, 1e3);
3878
+ }
3879
+ clearVerifyEmailCooldownTimer() {
3880
+ this.verifyEmailCooldownTimer && (clearInterval(this.verifyEmailCooldownTimer), this.verifyEmailCooldownTimer = null);
3881
+ }
3838
3882
  bind(e) {
3839
3883
  return (t) => {
3840
3884
  this[e] = t.target.value;
@@ -3844,7 +3888,7 @@ let p = class extends A {
3844
3888
  render() {
3845
3889
  if (!this.auth.configured)
3846
3890
  return r`<div class="alert alert-error" role="alert">
3847
- ${c.alert}
3891
+ ${l.alert}
3848
3892
  <div class="alert-body">${this.t("errorNotConfigured")}</div>
3849
3893
  </div>`;
3850
3894
  if (this.auth.status === "loading")
@@ -3881,7 +3925,7 @@ let p = class extends A {
3881
3925
  )}
3882
3926
  </div>
3883
3927
  ${this.notice ? r`<div class="alert alert-${this.notice.tone}" role="status">
3884
- ${this.notice.tone === "success" ? c.checkCircle : c.info}
3928
+ ${this.notice.tone === "success" ? l.checkCircle : l.info}
3885
3929
  <div class="alert-body">${this.notice.message}</div>
3886
3930
  <button
3887
3931
  class="btn btn-ghost btn-icon dismiss"
@@ -3890,7 +3934,7 @@ let p = class extends A {
3890
3934
  }}
3891
3935
  aria-label=${this.t("close")}
3892
3936
  >
3893
- ${c.x}
3937
+ ${l.x}
3894
3938
  </button>
3895
3939
  </div>` : o}
3896
3940
  ${this.stepUp ? this.renderStepUp() : r`<div
@@ -3909,18 +3953,18 @@ let p = class extends A {
3909
3953
  return r`
3910
3954
  <div class="between">
3911
3955
  <div class="identity">
3912
- <span class="avatar">${st(t)}</span>
3956
+ <span class="avatar">${nt(t)}</span>
3913
3957
  <div class="row-main">
3914
3958
  <span class="row-title" title=${t}>
3915
3959
  ${t}
3916
- ${e.mfa ? r`<span class="badge badge-success">${c.shieldCheck} ${this.t("mfaBadge")}</span>` : o}
3960
+ ${e.mfa ? r`<span class="badge badge-success">${l.shieldCheck} ${this.t("mfaBadge")}</span>` : o}
3917
3961
  ${n.isPreview ? r`<span class="badge badge-info">${this.t("preview")}</span>` : o}
3918
3962
  </span>
3919
3963
  ${e.email && e.name ? r`<span class="row-sub" title=${e.email}>${e.email}</span>` : o}
3920
3964
  </div>
3921
3965
  </div>
3922
3966
  <button class="btn btn-outline btn-sm" @click=${() => n.signOut()}>
3923
- ${c.logOut} ${this.t("signOut")}
3967
+ ${l.logOut} ${this.t("signOut")}
3924
3968
  </button>
3925
3969
  </div>
3926
3970
  `;
@@ -3942,7 +3986,7 @@ let p = class extends A {
3942
3986
  error(e) {
3943
3987
  const t = this.errors[e];
3944
3988
  return t ? r`<div class="alert alert-error" role="alert">
3945
- ${c.alert}
3989
+ ${l.alert}
3946
3990
  <div class="alert-body">${t}</div>
3947
3991
  </div>` : o;
3948
3992
  }
@@ -3960,7 +4004,7 @@ let p = class extends A {
3960
4004
  </section>`;
3961
4005
  }
3962
4006
  verifiedBadge(e) {
3963
- return e ? r`<span class="badge badge-success">${c.check} ${this.t("verified")}</span>` : r`<span class="badge badge-warning">${this.t("unverified")}</span>`;
4007
+ return e ? r`<span class="badge badge-success">${l.check} ${this.t("verified")}</span>` : r`<span class="badge badge-warning">${this.t("unverified")}</span>`;
3964
4008
  }
3965
4009
  // ── Profile ──
3966
4010
  renderProfile() {
@@ -4005,7 +4049,7 @@ let p = class extends A {
4005
4049
  autocomplete="new-password"
4006
4050
  />
4007
4051
  ${this.emailPassword ? (() => {
4008
- const t = et(this.emailPassword);
4052
+ const t = it(this.emailPassword);
4009
4053
  return r`<div class="strength" aria-live="polite">
4010
4054
  <div
4011
4055
  class="strength-meter"
@@ -4225,7 +4269,7 @@ let p = class extends A {
4225
4269
  class="btn btn-outline btn-sm warn"
4226
4270
  @click=${() => this.confirmDelete = !0}
4227
4271
  >
4228
- ${c.userX} ${this.t("deleteAccount")}
4272
+ ${l.userX} ${this.t("deleteAccount")}
4229
4273
  </button>`}`,
4230
4274
  void 0,
4231
4275
  !0
@@ -4271,7 +4315,7 @@ let p = class extends A {
4271
4315
  autocomplete="new-password"
4272
4316
  />
4273
4317
  ${this.newPassword ? (() => {
4274
- const i = et(this.newPassword);
4318
+ const i = it(this.newPassword);
4275
4319
  return r`<div class="strength" aria-live="polite">
4276
4320
  <div
4277
4321
  class="strength-meter"
@@ -4320,7 +4364,7 @@ let p = class extends A {
4320
4364
  </div>`;
4321
4365
  }
4322
4366
  renderMfaCard() {
4323
- const e = this.user, t = this.factors?.totp ?? !1, i = this.authenticator ? n.isPreview ? St(this.authenticator.uri) : new yt(n.getClient()).getQR(this.authenticator.uri, 400, 1).toString() : "";
4367
+ const e = this.user, t = this.factors?.totp ?? !1, i = this.authenticator ? n.isPreview ? Et(this.authenticator.uri) : new kt(n.getClient()).getQR(this.authenticator.uri, 400, 1).toString() : "";
4324
4368
  return this.card(
4325
4369
  this.t("twoFactor"),
4326
4370
  this.t("twoFactorDescription"),
@@ -4340,7 +4384,7 @@ let p = class extends A {
4340
4384
  ></button>
4341
4385
  </div>
4342
4386
  ${e.mfa && !(this.factors?.totp || e.emailVerification || e.phoneVerification) ? r`<div class="alert alert-warning" role="status">
4343
- ${c.alert}
4387
+ ${l.alert}
4344
4388
  <div class="alert-body">
4345
4389
  ${this.t("mfaNoFactorWarning")}
4346
4390
  ${this.factors?.totp ? o : r`<div class="links">
@@ -4360,7 +4404,7 @@ let p = class extends A {
4360
4404
  <div class="toggle-row">
4361
4405
  <div class="row-main">
4362
4406
  <span class="row-title"
4363
- >${c.smartphone} ${this.t("authenticatorApp")}
4407
+ >${l.smartphone} ${this.t("authenticatorApp")}
4364
4408
  ${t ? this.verifiedBadge(!0) : o}</span
4365
4409
  >
4366
4410
  </div>
@@ -4408,7 +4452,7 @@ let p = class extends A {
4408
4452
  this.onCopySecret();
4409
4453
  }}
4410
4454
  >
4411
- ${this.copied ? c.check : c.copy}
4455
+ ${this.copied ? l.check : l.copy}
4412
4456
  ${this.copied ? this.t("copied") : this.t("authenticatorCopyKey")}
4413
4457
  </button>
4414
4458
  </div>
@@ -4450,7 +4494,7 @@ let p = class extends A {
4450
4494
  this.t("recoveryCodesDescription") + " " + this.t("recoveryCodesOnceHint"),
4451
4495
  r`<div class="kv">
4452
4496
  ${this.recoveryCodes ? r`<div class="alert alert-warning">
4453
- ${c.alert}
4497
+ ${l.alert}
4454
4498
  <div class="alert-body">${this.t("recoveryCodesWarning")}</div>
4455
4499
  </div>
4456
4500
  <div class="codes">
@@ -4458,7 +4502,7 @@ let p = class extends A {
4458
4502
  </div>
4459
4503
  <div class="inline">
4460
4504
  <button class="btn btn-outline btn-sm" @click=${this.onCopyCodes}>
4461
- ${this.copied ? c.check : c.copy}
4505
+ ${this.copied ? l.check : l.copy}
4462
4506
  ${this.copied ? this.t("copied") : this.t("copy")}
4463
4507
  </button>
4464
4508
  <button class="btn btn-ghost btn-sm" @click=${() => this.recoveryCodes = null}>
@@ -4470,7 +4514,7 @@ let p = class extends A {
4470
4514
  @click=${this.onRecoveryCodes}
4471
4515
  ?disabled=${!!this.busy}
4472
4516
  >
4473
- ${this.spinner("recovery")} ${c.key}
4517
+ ${this.spinner("recovery")} ${l.key}
4474
4518
  ${e ? this.t("viewRecoveryCodes") : this.t("generateRecoveryCodes")}
4475
4519
  </button>
4476
4520
  ${e ? this.confirmRegenerate ? r`<div class="inline">
@@ -4479,7 +4523,7 @@ let p = class extends A {
4479
4523
  @click=${this.onRegenerateRecoveryCodes}
4480
4524
  ?disabled=${!!this.busy}
4481
4525
  >
4482
- ${c.refresh} ${this.t("regenerateRecoveryCodes")}
4526
+ ${l.refresh} ${this.t("regenerateRecoveryCodes")}
4483
4527
  </button>
4484
4528
  <button
4485
4529
  class="btn btn-ghost btn-sm"
@@ -4492,7 +4536,7 @@ let p = class extends A {
4492
4536
  @click=${this.onRegenerateRecoveryCodes}
4493
4537
  ?disabled=${!!this.busy}
4494
4538
  >
4495
- ${c.refresh} ${this.t("regenerateRecoveryCodes")}
4539
+ ${l.refresh} ${this.t("regenerateRecoveryCodes")}
4496
4540
  </button>` : o}
4497
4541
  </div>`}
4498
4542
  ${this.error("recovery")}
@@ -4504,25 +4548,25 @@ let p = class extends A {
4504
4548
  const e = this.stepUp, t = this.factors, i = [
4505
4549
  {
4506
4550
  factor: "totp",
4507
- icon: c.smartphone,
4551
+ icon: l.smartphone,
4508
4552
  label: this.t("mfaUseAuthenticator"),
4509
4553
  available: t?.totp ?? !0
4510
4554
  },
4511
4555
  {
4512
4556
  factor: "email",
4513
- icon: c.mail,
4557
+ icon: l.mail,
4514
4558
  label: this.t("mfaUseEmail"),
4515
4559
  available: t?.email ?? !0
4516
4560
  },
4517
4561
  {
4518
4562
  factor: "phone",
4519
- icon: c.phone,
4563
+ icon: l.phone,
4520
4564
  label: this.t("mfaUsePhone"),
4521
4565
  available: t?.phone ?? !0
4522
4566
  },
4523
4567
  {
4524
4568
  factor: "recoverycode",
4525
- icon: c.key,
4569
+ icon: l.key,
4526
4570
  label: this.t("mfaUseRecoveryCode"),
4527
4571
  available: t?.recoveryCode ?? !0
4528
4572
  }
@@ -4573,7 +4617,7 @@ let p = class extends A {
4573
4617
  // ── Sessions ──
4574
4618
  deviceIcon(e) {
4575
4619
  const t = (e.deviceName || "").toLowerCase(), i = (e.osName || e.osCode || "").toLowerCase();
4576
- return /phone|tablet|mobile/.test(t) || /ios|android|ipados/.test(i) ? c.smartphone : /desktop|browser/.test(t) || /mac|windows|linux|chrome os/.test(i) ? c.monitor : c.globe;
4620
+ return /phone|tablet|mobile/.test(t) || /ios|android|ipados/.test(i) ? l.smartphone : /desktop|browser/.test(t) || /mac|windows|linux|chrome os/.test(i) ? l.monitor : l.globe;
4577
4621
  }
4578
4622
  renderSessions() {
4579
4623
  const e = this.sessions;
@@ -4605,7 +4649,7 @@ let p = class extends A {
4605
4649
  ?disabled=${!!this.busy}
4606
4650
  aria-label=${this.t("signOutSession")}
4607
4651
  >
4608
- ${c.logOut}
4652
+ ${l.logOut}
4609
4653
  </button>
4610
4654
  </div>
4611
4655
  </div>`
@@ -4621,7 +4665,7 @@ let p = class extends A {
4621
4665
  @click=${this.onSignOutAll}
4622
4666
  ?disabled=${!!this.busy}
4623
4667
  >
4624
- ${this.spinner("sessions-all")} ${c.logOut} ${this.t("signOutAllSessions")}
4668
+ ${this.spinner("sessions-all")} ${l.logOut} ${this.t("signOutAllSessions")}
4625
4669
  </button>
4626
4670
  <button
4627
4671
  class="btn btn-ghost btn-sm"
@@ -4634,7 +4678,7 @@ let p = class extends A {
4634
4678
  @click=${this.onSignOutAll}
4635
4679
  ?disabled=${!!this.busy}
4636
4680
  >
4637
- ${this.spinner("sessions-all")} ${c.logOut} ${this.t("signOutAllSessions")}
4681
+ ${this.spinner("sessions-all")} ${l.logOut} ${this.t("signOutAllSessions")}
4638
4682
  </button>`}`,
4639
4683
  void 0,
4640
4684
  !0
@@ -4652,7 +4696,7 @@ let p = class extends A {
4652
4696
  ${e === null ? r`<div class="empty"><span class="spinner"></span></div>` : e.length === 0 ? r`<div class="empty">${this.t("noConnections")}</div>` : e.map(
4653
4697
  (i) => r`<div class="row">
4654
4698
  <div class="inline">
4655
- <span class="device">${tt(i.provider)}</span>
4699
+ <span class="device">${et(i.provider)}</span>
4656
4700
  <div class="row-main">
4657
4701
  <span class="row-title">${q(i.provider)}</span>
4658
4702
  <span class="row-sub">${i.providerEmail || i.providerUid}</span>
@@ -4693,7 +4737,7 @@ let p = class extends A {
4693
4737
  }}
4694
4738
  ?disabled=${!!this.busy}
4695
4739
  >
4696
- ${this.spinner(`connect-${i}`)} ${tt(i)}
4740
+ ${this.spinner(`connect-${i}`)} ${et(i)}
4697
4741
  ${this.t("connectProvider", { provider: q(i) })}
4698
4742
  </button>`
4699
4743
  )}` : void 0
@@ -4723,8 +4767,8 @@ let p = class extends A {
4723
4767
  }
4724
4768
  };
4725
4769
  p.styles = [
4726
- ...A.styles,
4727
- F`
4770
+ ...E.styles,
4771
+ O`
4728
4772
  :host {
4729
4773
  display: block;
4730
4774
  width: 100%;
@@ -4827,115 +4871,123 @@ m([
4827
4871
  g({ type: String })
4828
4872
  ], p.prototype, "tab", 2);
4829
4873
  m([
4830
- h()
4874
+ d()
4831
4875
  ], p.prototype, "active", 2);
4832
4876
  m([
4833
- h()
4877
+ d()
4834
4878
  ], p.prototype, "busy", 2);
4835
4879
  m([
4836
- h()
4880
+ d()
4837
4881
  ], p.prototype, "notice", 2);
4838
4882
  m([
4839
- h()
4883
+ d()
4840
4884
  ], p.prototype, "errors", 2);
4841
4885
  m([
4842
- h()
4886
+ d()
4843
4887
  ], p.prototype, "nameInput", 2);
4844
4888
  m([
4845
- h()
4889
+ d()
4846
4890
  ], p.prototype, "emailInput", 2);
4847
4891
  m([
4848
- h()
4892
+ d()
4849
4893
  ], p.prototype, "emailPassword", 2);
4850
4894
  m([
4851
- h()
4895
+ d()
4852
4896
  ], p.prototype, "phoneInput", 2);
4853
4897
  m([
4854
- h()
4898
+ d()
4855
4899
  ], p.prototype, "phonePassword", 2);
4856
4900
  m([
4857
- h()
4901
+ d()
4858
4902
  ], p.prototype, "phoneCode", 2);
4859
4903
  m([
4860
- h()
4904
+ d()
4861
4905
  ], p.prototype, "phoneCodeSent", 2);
4862
4906
  m([
4863
- h()
4907
+ d()
4864
4908
  ], p.prototype, "guestName", 2);
4865
4909
  m([
4866
- h()
4910
+ d()
4867
4911
  ], p.prototype, "oldPassword", 2);
4868
4912
  m([
4869
- h()
4913
+ d()
4870
4914
  ], p.prototype, "newPassword", 2);
4871
4915
  m([
4872
- h()
4916
+ d()
4873
4917
  ], p.prototype, "newPasswordConfirm", 2);
4874
4918
  m([
4875
- h()
4919
+ d()
4876
4920
  ], p.prototype, "authenticator", 2);
4877
4921
  m([
4878
- h()
4922
+ d()
4879
4923
  ], p.prototype, "authenticatorCode", 2);
4880
4924
  m([
4881
- h()
4925
+ d()
4882
4926
  ], p.prototype, "factors", 2);
4883
4927
  m([
4884
- h()
4928
+ d()
4885
4929
  ], p.prototype, "recoveryCodes", 2);
4886
4930
  m([
4887
- h()
4931
+ d()
4888
4932
  ], p.prototype, "stepUp", 2);
4889
4933
  m([
4890
- h()
4934
+ d()
4891
4935
  ], p.prototype, "stepUpCode", 2);
4892
4936
  m([
4893
- h()
4937
+ d()
4894
4938
  ], p.prototype, "copied", 2);
4895
4939
  m([
4896
- h()
4940
+ d()
4897
4941
  ], p.prototype, "sessions", 2);
4898
4942
  m([
4899
- h()
4943
+ d()
4900
4944
  ], p.prototype, "identities", 2);
4901
4945
  m([
4902
- h()
4946
+ d()
4903
4947
  ], p.prototype, "logs", 2);
4904
4948
  m([
4905
- h()
4949
+ d()
4906
4950
  ], p.prototype, "logsSupported", 2);
4907
4951
  m([
4908
- h()
4952
+ d()
4909
4953
  ], p.prototype, "confirmDelete", 2);
4910
4954
  m([
4911
- h()
4955
+ d()
4912
4956
  ], p.prototype, "confirmRegenerate", 2);
4913
4957
  m([
4914
- h()
4958
+ d()
4915
4959
  ], p.prototype, "confirmRemoveAuthenticator", 2);
4916
4960
  m([
4917
- h()
4961
+ d()
4918
4962
  ], p.prototype, "confirmSignOutAll", 2);
4919
4963
  m([
4920
- h()
4964
+ d()
4921
4965
  ], p.prototype, "confirmDisconnectId", 2);
4922
4966
  m([
4923
- h()
4967
+ d()
4924
4968
  ], p.prototype, "verifyEmailCooldownUntil", 2);
4925
4969
  p = m([
4926
- O("authui-account")
4970
+ R("authui-account")
4927
4971
  ], p);
4928
- var Wt = Object.defineProperty, Kt = Object.getOwnPropertyDescriptor, L = (e, t, i, s) => {
4929
- for (var a = s > 1 ? void 0 : s ? Kt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
4930
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
4931
- return s && a && Wt(t, i, a), a;
4972
+ var Xt = Object.defineProperty, Qt = Object.getOwnPropertyDescriptor, F = (e, t, i, s) => {
4973
+ for (var a = s > 1 ? void 0 : s ? Qt(t, i) : t, c = e.length - 1, u; c >= 0; c--)
4974
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
4975
+ return s && a && Xt(t, i, a), a;
4932
4976
  };
4933
- let M = class extends A {
4977
+ let P = class extends E {
4934
4978
  constructor() {
4935
- super(...arguments), this.open = !1, this.view = "sign-in", this.closeOnSuccess = !0, this.handledPending = null, this.onOpenEvent = (e) => {
4979
+ super(...arguments), this.open = !1, this.view = "sign-in", this.closeOnSuccess = !0, this.handledPending = null, this.scrollCue = !1, this.bodyResizeObserver = null, this.onOpenEvent = (e) => {
4936
4980
  const t = e.detail ?? {};
4937
4981
  this.show(t.view);
4938
- }, this.onCloseEvent = () => this.hide(), this.onSuccess = () => {
4982
+ }, this.onCloseEvent = () => this.hide(), this.syncScrollCue = () => {
4983
+ const e = this.bodyEl;
4984
+ if (!e) {
4985
+ this.scrollCue = !1;
4986
+ return;
4987
+ }
4988
+ const t = e.scrollHeight > e.clientHeight + 1, i = e.scrollTop + e.clientHeight >= e.scrollHeight - 4, s = t && !i;
4989
+ s !== this.scrollCue && (this.scrollCue = s);
4990
+ }, this.onSuccess = () => {
4939
4991
  this.fire("authui-signed-in", this.auth.user), this.closeOnSuccess && !this.config?.successUrl && this.hide();
4940
4992
  }, this.onInnerOpen = (e) => {
4941
4993
  const t = e.detail?.view;
@@ -4948,7 +5000,7 @@ let M = class extends A {
4948
5000
  super.connectedCallback(), window.addEventListener("authui:open", this.onOpenEvent), window.addEventListener("authui:close", this.onCloseEvent);
4949
5001
  }
4950
5002
  disconnectedCallback() {
4951
- super.disconnectedCallback(), window.removeEventListener("authui:open", this.onOpenEvent), window.removeEventListener("authui:close", this.onCloseEvent);
5003
+ super.disconnectedCallback(), window.removeEventListener("authui:open", this.onOpenEvent), window.removeEventListener("authui:close", this.onCloseEvent), this.bodyResizeObserver?.disconnect(), this.bodyResizeObserver = null;
4952
5004
  }
4953
5005
  show(e) {
4954
5006
  e === "account" && this.auth.status !== "signed-in" ? this.view = "sign-in" : e ? this.view = e : this.auth.status === "signed-in" ? this.view = "account" : this.view = "sign-in", this.open = !0;
@@ -4956,11 +5008,23 @@ let M = class extends A {
4956
5008
  hide() {
4957
5009
  this.open = !1;
4958
5010
  }
5011
+ observeBody() {
5012
+ this.bodyResizeObserver?.disconnect(), this.bodyResizeObserver = null;
5013
+ const e = this.bodyEl;
5014
+ if (!e || typeof ResizeObserver > "u") {
5015
+ this.syncScrollCue();
5016
+ return;
5017
+ }
5018
+ this.bodyResizeObserver = new ResizeObserver(() => this.syncScrollCue()), this.bodyResizeObserver.observe(e), e.firstElementChild && this.bodyResizeObserver.observe(e.firstElementChild), this.syncScrollCue();
5019
+ }
4959
5020
  updated(e) {
4960
- if (e.has("open") && this.dialog && (this.open && !this.dialog.open && (this.dialog.showModal(), requestAnimationFrame(() => this.focusPrimary())), !this.open && this.dialog.open && this.dialog.close()), e.has("auth")) {
5021
+ if (e.has("open") && this.dialog && (this.open && !this.dialog.open && (this.dialog.showModal(), requestAnimationFrame(() => {
5022
+ this.focusPrimary(), this.observeBody();
5023
+ })), !this.open && this.dialog.open && this.dialog.close(), this.open || (this.scrollCue = !1, this.bodyResizeObserver?.disconnect(), this.bodyResizeObserver = null)), e.has("auth")) {
4961
5024
  const t = this.auth.pending;
4962
5025
  t && t !== this.handledPending && t.type !== "notice" && (this.handledPending = t, this.view = "sign-in", this.open = !0), t?.type === "notice" && t !== this.handledPending && (this.handledPending = t, this.open = !0), this.open && this.view === "account" && this.auth.status !== "signed-in" && (this.view = "sign-in"), this.open && this.auth.status === "signed-out" && this.view === "account" && (this.view = "sign-in");
4963
5026
  }
5027
+ this.open && (e.has("view") || e.has("auth") || e.has("open")) && requestAnimationFrame(() => this.observeBody());
4964
5028
  }
4965
5029
  focusPrimary() {
4966
5030
  const e = this.dialog;
@@ -4984,26 +5048,31 @@ let M = class extends A {
4984
5048
  @authui-open=${this.onInnerOpen}
4985
5049
  @authui-success=${this.onSuccess}
4986
5050
  >
4987
- <div class="body">
4988
- <button
4989
- class="btn btn-ghost btn-icon close"
4990
- @click=${this.hide}
4991
- aria-label=${this.t("close")}
4992
- >
4993
- ${c.x}
4994
- </button>
4995
- ${this.open ? t ? r`<authui-account embedded></authui-account>` : r`<authui-sign-in
4996
- embedded
4997
- .view=${this.view === "account" ? "sign-in" : this.view}
4998
- ></authui-sign-in>` : o}
5051
+ <div class="frame">
5052
+ <div class="chrome">
5053
+ <button
5054
+ class="btn btn-ghost btn-icon close"
5055
+ @click=${this.hide}
5056
+ aria-label=${this.t("close")}
5057
+ >
5058
+ ${l.x}
5059
+ </button>
5060
+ </div>
5061
+ <div class="body" @scroll=${this.syncScrollCue}>
5062
+ ${this.open ? t ? r`<authui-account embedded></authui-account>` : r`<authui-sign-in
5063
+ embedded
5064
+ .view=${this.view === "account" ? "sign-in" : this.view}
5065
+ ></authui-sign-in>` : o}
5066
+ </div>
5067
+ <div class="scroll-fade ${this.scrollCue ? "show" : ""}" aria-hidden="true"></div>
4999
5068
  </div>
5000
5069
  </dialog>
5001
5070
  `;
5002
5071
  }
5003
5072
  };
5004
- M.styles = [
5005
- ...A.styles,
5006
- F`
5073
+ P.styles = [
5074
+ ...E.styles,
5075
+ O`
5007
5076
  :host {
5008
5077
  display: contents;
5009
5078
  }
@@ -5040,15 +5109,29 @@ M.styles = [
5040
5109
  transform: none;
5041
5110
  }
5042
5111
  }
5043
- .body {
5044
- padding: 24px;
5112
+ .frame {
5113
+ display: flex;
5114
+ flex-direction: column;
5045
5115
  max-height: calc(100dvh - 2rem);
5116
+ min-height: 0;
5117
+ position: relative;
5118
+ }
5119
+ .chrome {
5120
+ flex-shrink: 0;
5121
+ display: flex;
5122
+ justify-content: flex-end;
5123
+ align-items: center;
5124
+ padding: 8px 8px 0;
5125
+ background: var(--authui-background);
5126
+ }
5127
+ .body {
5128
+ padding: 4px 24px 28px;
5046
5129
  overflow-y: auto;
5130
+ flex: 1 1 auto;
5131
+ min-height: 0;
5132
+ -webkit-overflow-scrolling: touch;
5047
5133
  }
5048
5134
  .close {
5049
- position: absolute;
5050
- top: 12px;
5051
- inset-inline-end: 12px;
5052
5135
  width: 32px;
5053
5136
  height: 32px;
5054
5137
  border-radius: var(--authui-radius-sm);
@@ -5057,36 +5140,56 @@ M.styles = [
5057
5140
  .close:hover {
5058
5141
  opacity: 1;
5059
5142
  }
5143
+ .scroll-fade {
5144
+ pointer-events: none;
5145
+ position: absolute;
5146
+ inset-inline: 0;
5147
+ bottom: 0;
5148
+ height: 40px;
5149
+ border-radius: 0 0 var(--authui-radius-lg) var(--authui-radius-lg);
5150
+ background: linear-gradient(to top, var(--authui-background), transparent);
5151
+ opacity: 0;
5152
+ transition: opacity 150ms;
5153
+ }
5154
+ .scroll-fade.show {
5155
+ opacity: 1;
5156
+ }
5060
5157
  authui-sign-in,
5061
5158
  authui-account {
5062
5159
  max-width: none;
5063
5160
  }
5064
5161
  `
5065
5162
  ];
5066
- L([
5163
+ F([
5067
5164
  g({ type: Boolean, reflect: !0 })
5068
- ], M.prototype, "open", 2);
5069
- L([
5165
+ ], P.prototype, "open", 2);
5166
+ F([
5070
5167
  g({ type: String })
5071
- ], M.prototype, "view", 2);
5072
- L([
5168
+ ], P.prototype, "view", 2);
5169
+ F([
5073
5170
  g({ type: Boolean, attribute: "close-on-success" })
5074
- ], M.prototype, "closeOnSuccess", 2);
5075
- L([
5076
- h()
5077
- ], M.prototype, "handledPending", 2);
5078
- L([
5079
- gt("dialog")
5080
- ], M.prototype, "dialog", 2);
5081
- M = L([
5082
- O("authui-modal")
5083
- ], M);
5084
- var Gt = Object.defineProperty, Yt = Object.getOwnPropertyDescriptor, Z = (e, t, i, s) => {
5085
- for (var a = s > 1 ? void 0 : s ? Yt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
5086
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
5087
- return s && a && Gt(t, i, a), a;
5171
+ ], P.prototype, "closeOnSuccess", 2);
5172
+ F([
5173
+ d()
5174
+ ], P.prototype, "handledPending", 2);
5175
+ F([
5176
+ d()
5177
+ ], P.prototype, "scrollCue", 2);
5178
+ F([
5179
+ st("dialog")
5180
+ ], P.prototype, "dialog", 2);
5181
+ F([
5182
+ st(".body")
5183
+ ], P.prototype, "bodyEl", 2);
5184
+ P = F([
5185
+ R("authui-modal")
5186
+ ], P);
5187
+ var Jt = Object.defineProperty, te = Object.getOwnPropertyDescriptor, X = (e, t, i, s) => {
5188
+ for (var a = s > 1 ? void 0 : s ? te(t, i) : t, c = e.length - 1, u; c >= 0; c--)
5189
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
5190
+ return s && a && Jt(t, i, a), a;
5088
5191
  };
5089
- let z = class extends A {
5192
+ let L = class extends E {
5090
5193
  constructor() {
5091
5194
  super(...arguments), this.view = "sign-in", this.variant = "primary", this.size = "md";
5092
5195
  }
@@ -5094,7 +5197,7 @@ let z = class extends A {
5094
5197
  const e = this.size === "md" ? "" : `btn-${this.size}`;
5095
5198
  return r`<button
5096
5199
  class="btn btn-${this.variant} ${e}"
5097
- @click=${() => G(this.view)}
5200
+ @click=${() => Y(this.view)}
5098
5201
  part="button"
5099
5202
  >
5100
5203
  <slot
@@ -5103,9 +5206,9 @@ let z = class extends A {
5103
5206
  </button>`;
5104
5207
  }
5105
5208
  };
5106
- z.styles = [
5107
- ...A.styles,
5108
- F`
5209
+ L.styles = [
5210
+ ...E.styles,
5211
+ O`
5109
5212
  :host {
5110
5213
  display: inline-block;
5111
5214
  }
@@ -5114,26 +5217,28 @@ z.styles = [
5114
5217
  }
5115
5218
  `
5116
5219
  ];
5117
- Z([
5220
+ X([
5118
5221
  g({ type: String })
5119
- ], z.prototype, "view", 2);
5120
- Z([
5222
+ ], L.prototype, "view", 2);
5223
+ X([
5121
5224
  g({ type: String })
5122
- ], z.prototype, "variant", 2);
5123
- Z([
5225
+ ], L.prototype, "variant", 2);
5226
+ X([
5124
5227
  g({ type: String })
5125
- ], z.prototype, "size", 2);
5126
- z = Z([
5127
- O("authui-button")
5128
- ], z);
5129
- var Zt = Object.defineProperty, Xt = Object.getOwnPropertyDescriptor, _ = (e, t, i, s) => {
5130
- for (var a = s > 1 ? void 0 : s ? Xt(t, i) : t, l = e.length - 1, u; l >= 0; l--)
5131
- (u = e[l]) && (a = (s ? u(t, i, a) : u(a)) || a);
5132
- return s && a && Zt(t, i, a), a;
5228
+ ], L.prototype, "size", 2);
5229
+ L = X([
5230
+ R("authui-button")
5231
+ ], L);
5232
+ var ee = Object.defineProperty, ie = Object.getOwnPropertyDescriptor, T = (e, t, i, s) => {
5233
+ for (var a = s > 1 ? void 0 : s ? ie(t, i) : t, c = e.length - 1, u; c >= 0; c--)
5234
+ (u = e[c]) && (a = (s ? u(t, i, a) : u(a)) || a);
5235
+ return s && a && ee(t, i, a), a;
5133
5236
  };
5134
- let E = class extends A {
5237
+ let I = class extends E {
5135
5238
  constructor() {
5136
- super(...arguments), this.showTeams = !1, this.src = "", this.menuOpen = !1, this.teams = [], this.teamsLoading = !1, this.activeTeamId = null, this.onDocumentClick = (e) => {
5239
+ super(...arguments), this.showTeams = !1, this.src = "", this.menuOpen = !1, this.menuAbove = !1, this.teams = [], this.teamsLoading = !1, this.activeTeamId = null, this.onReposition = () => {
5240
+ this.menuOpen && this.placeMenu();
5241
+ }, this.onDocumentClick = (e) => {
5137
5242
  e.composedPath().includes(this) || (this.menuOpen = !1);
5138
5243
  }, this.onKeydown = (e) => {
5139
5244
  if (!this.menuOpen) {
@@ -5163,10 +5268,21 @@ let E = class extends A {
5163
5268
  };
5164
5269
  }
5165
5270
  connectedCallback() {
5166
- super.connectedCallback(), document.addEventListener("click", this.onDocumentClick, !0), document.addEventListener("keydown", this.onKeydown), this.addEventListener("keydown", this.onKeydown);
5271
+ super.connectedCallback(), document.addEventListener("click", this.onDocumentClick, !0), document.addEventListener("keydown", this.onKeydown), this.addEventListener("keydown", this.onKeydown), window.addEventListener("resize", this.onReposition), window.addEventListener("scroll", this.onReposition, !0);
5167
5272
  }
5168
5273
  disconnectedCallback() {
5169
- super.disconnectedCallback(), document.removeEventListener("click", this.onDocumentClick, !0), document.removeEventListener("keydown", this.onKeydown), this.removeEventListener("keydown", this.onKeydown);
5274
+ super.disconnectedCallback(), document.removeEventListener("click", this.onDocumentClick, !0), document.removeEventListener("keydown", this.onKeydown), this.removeEventListener("keydown", this.onKeydown), window.removeEventListener("resize", this.onReposition), window.removeEventListener("scroll", this.onReposition, !0);
5275
+ }
5276
+ /** Flip the menu above the trigger when there is not enough space below. */
5277
+ placeMenu() {
5278
+ const e = this.renderRoot?.querySelector(".trigger"), t = this.renderRoot?.querySelector(".menu");
5279
+ if (!e || !t) return;
5280
+ const i = e.getBoundingClientRect(), s = 6, a = 8;
5281
+ t.style.maxHeight = "";
5282
+ const c = t.offsetHeight + s, u = window.innerHeight - i.bottom, $ = i.top, x = u < c && $ > u;
5283
+ x !== this.menuAbove && (this.menuAbove = x);
5284
+ const ot = Math.max(80, (x ? $ : u) - s - a);
5285
+ t.style.maxHeight = `${ot}px`;
5170
5286
  }
5171
5287
  focusMenuItem(e) {
5172
5288
  [
@@ -5174,7 +5290,9 @@ let E = class extends A {
5174
5290
  ][e]?.focus();
5175
5291
  }
5176
5292
  updated(e) {
5177
- e.has("menuOpen") && this.menuOpen && (this.showTeams && this.loadTeams(), requestAnimationFrame(() => this.focusMenuItem(0)));
5293
+ e.has("menuOpen") && (this.menuOpen ? (this.showTeams && this.loadTeams(), requestAnimationFrame(() => {
5294
+ this.placeMenu(), this.focusMenuItem(0);
5295
+ })) : this.menuAbove = !1), this.menuOpen && (e.has("teams") || e.has("teamsLoading")) && requestAnimationFrame(() => this.placeMenu());
5178
5296
  }
5179
5297
  async loadTeams() {
5180
5298
  this.teamsLoading = !0, this.activeTeamId = n.getActiveTeamId();
@@ -5191,7 +5309,7 @@ let E = class extends A {
5191
5309
  if (e === "loading" && i)
5192
5310
  return r`<span class="avatar"><span class="spinner"></span></span>`;
5193
5311
  if (e !== "signed-in" || !t)
5194
- return r`<button class="btn btn-primary btn-sm" @click=${() => G("sign-in")}>
5312
+ return r`<button class="btn btn-primary btn-sm" @click=${() => Y("sign-in")}>
5195
5313
  <slot>${this.t("signIn")}</slot>
5196
5314
  </button>`;
5197
5315
  const s = t.name || t.email || t.phone || this.t("guestAccount");
@@ -5204,10 +5322,10 @@ let E = class extends A {
5204
5322
  aria-label=${s}
5205
5323
  >
5206
5324
  <span class="avatar"
5207
- >${this.src ? r`<img src=${this.src} alt="" />` : st(s)}</span
5325
+ >${this.src ? r`<img src=${this.src} alt="" />` : nt(s)}</span
5208
5326
  >
5209
5327
  </button>
5210
- ${this.menuOpen ? r`<div class="menu" role="menu">
5328
+ ${this.menuOpen ? r`<div class="menu ${this.menuAbove ? "above" : ""}" role="menu">
5211
5329
  <div class="menu-header">
5212
5330
  <span class="row-title" title=${s}>${s}</span>
5213
5331
  ${t.email && t.name ? r`<span class="row-sub" title=${t.email}>${t.email}</span>` : o}
@@ -5223,9 +5341,9 @@ let E = class extends A {
5223
5341
  aria-checked=${a.$id === this.activeTeamId ? "true" : "false"}
5224
5342
  @click=${() => this.selectTeam(a)}
5225
5343
  >
5226
- ${c.users}
5344
+ ${l.users}
5227
5345
  <span title=${a.name}>${a.name}</span>
5228
- ${a.$id === this.activeTeamId ? r`<span class="check">${c.check}</span>` : o}
5346
+ ${a.$id === this.activeTeamId ? r`<span class="check">${l.check}</span>` : o}
5229
5347
  </button>`
5230
5348
  )}
5231
5349
  </div>` : o}
@@ -5233,10 +5351,10 @@ let E = class extends A {
5233
5351
  class="menu-item"
5234
5352
  role="menuitem"
5235
5353
  @click=${() => {
5236
- this.menuOpen = !1, G("account");
5354
+ this.menuOpen = !1, Y("account");
5237
5355
  }}
5238
5356
  >
5239
- ${c.settings} ${this.t("manageAccount")}
5357
+ ${l.settings} ${this.t("manageAccount")}
5240
5358
  </button>
5241
5359
  <button
5242
5360
  class="menu-item"
@@ -5245,15 +5363,15 @@ let E = class extends A {
5245
5363
  this.menuOpen = !1, n.signOut();
5246
5364
  }}
5247
5365
  >
5248
- ${c.logOut} ${this.t("signOut")}
5366
+ ${l.logOut} ${this.t("signOut")}
5249
5367
  </button>
5250
5368
  </div>` : o}
5251
5369
  `;
5252
5370
  }
5253
5371
  };
5254
- E.styles = [
5255
- ...A.styles,
5256
- F`
5372
+ I.styles = [
5373
+ ...E.styles,
5374
+ O`
5257
5375
  :host {
5258
5376
  display: inline-block;
5259
5377
  position: relative;
@@ -5278,9 +5396,12 @@ E.styles = [
5278
5396
  .menu {
5279
5397
  position: absolute;
5280
5398
  top: calc(100% + 6px);
5399
+ bottom: auto;
5281
5400
  inset-inline-end: 0;
5282
5401
  min-width: 220px;
5283
5402
  max-width: min(320px, 90vw);
5403
+ max-height: min(360px, calc(100dvh - 16px));
5404
+ overflow-y: auto;
5284
5405
  background: var(--authui-popover);
5285
5406
  color: var(--authui-popover-foreground);
5286
5407
  border: 1px solid var(--authui-border);
@@ -5292,6 +5413,10 @@ E.styles = [
5292
5413
  flex-direction: column;
5293
5414
  gap: 2px;
5294
5415
  }
5416
+ .menu.above {
5417
+ top: auto;
5418
+ bottom: calc(100% + 6px);
5419
+ }
5295
5420
  .menu-header {
5296
5421
  min-width: 0;
5297
5422
  overflow: hidden;
@@ -5362,53 +5487,59 @@ E.styles = [
5362
5487
  }
5363
5488
  `
5364
5489
  ];
5365
- _([
5490
+ T([
5366
5491
  g({ type: Boolean, attribute: "show-teams" })
5367
- ], E.prototype, "showTeams", 2);
5368
- _([
5492
+ ], I.prototype, "showTeams", 2);
5493
+ T([
5369
5494
  g({ type: String })
5370
- ], E.prototype, "src", 2);
5371
- _([
5372
- h()
5373
- ], E.prototype, "menuOpen", 2);
5374
- _([
5375
- h()
5376
- ], E.prototype, "teams", 2);
5377
- _([
5378
- h()
5379
- ], E.prototype, "teamsLoading", 2);
5380
- _([
5381
- h()
5382
- ], E.prototype, "activeTeamId", 2);
5383
- E = _([
5384
- O("authui-user-button")
5385
- ], E);
5495
+ ], I.prototype, "src", 2);
5496
+ T([
5497
+ d()
5498
+ ], I.prototype, "menuOpen", 2);
5499
+ T([
5500
+ d()
5501
+ ], I.prototype, "menuAbove", 2);
5502
+ T([
5503
+ d()
5504
+ ], I.prototype, "teams", 2);
5505
+ T([
5506
+ d()
5507
+ ], I.prototype, "teamsLoading", 2);
5508
+ T([
5509
+ d()
5510
+ ], I.prototype, "activeTeamId", 2);
5511
+ I = T([
5512
+ R("authui-user-button")
5513
+ ], I);
5386
5514
  export {
5387
- Ut as A,
5388
- ie as C,
5515
+ Ft as A,
5516
+ oe as C,
5389
5517
  f as E,
5390
- mt as F,
5391
- Ct as P,
5518
+ bt as F,
5519
+ It as P,
5392
5520
  n as a,
5393
5521
  p as b,
5394
- se as c,
5395
- z as d,
5522
+ le as c,
5523
+ L as d,
5396
5524
  b as e,
5397
- A as f,
5398
- M as g,
5525
+ E as f,
5526
+ P as g,
5399
5527
  B as h,
5400
- $ as i,
5401
- E as j,
5402
- re as k,
5403
- wt as l,
5404
- K as m,
5405
- D as n,
5406
- G as o,
5407
- lt as p,
5408
- Pt as q,
5409
- q as r,
5410
- V as s,
5411
- et as t,
5412
- At as u,
5413
- R as v
5528
+ k as i,
5529
+ I as j,
5530
+ ne as k,
5531
+ pt as l,
5532
+ Ct as m,
5533
+ K as n,
5534
+ Y as o,
5535
+ D as p,
5536
+ ut as q,
5537
+ Ut as r,
5538
+ q as s,
5539
+ V as t,
5540
+ wt as u,
5541
+ it as v,
5542
+ Mt as w,
5543
+ Ot as x,
5544
+ z as y
5414
5545
  };