@strands.gg/accui 0.2.12 → 0.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/accui.css +1 -1
  2. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  3. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +4 -3
  4. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  5. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +1 -1
  6. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  7. package/dist/nuxt/runtime/plugin.client.es.js +1 -1
  8. package/dist/nuxt/runtime/plugin.server.cjs.js +1 -1
  9. package/dist/nuxt/runtime/plugin.server.es.js +1 -1
  10. package/dist/nuxt/types.d.ts +0 -1
  11. package/dist/nuxt/types.d.ts.map +1 -1
  12. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
  13. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +1 -1
  14. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  15. package/dist/nuxt-v4/runtime/plugin.client.es.js +1 -1
  16. package/dist/nuxt-v4/runtime/plugin.server.cjs.js +1 -1
  17. package/dist/nuxt-v4/runtime/plugin.server.es.js +1 -1
  18. package/dist/nuxt-v4/types.d.ts +0 -1
  19. package/dist/nuxt-v4/types.d.ts.map +1 -1
  20. package/dist/strands-auth-ui.cjs.js +4 -11
  21. package/dist/strands-auth-ui.cjs.js.map +1 -1
  22. package/dist/strands-auth-ui.es.js +1222 -1131
  23. package/dist/strands-auth-ui.es.js.map +1 -1
  24. package/dist/types/index.d.ts +3 -1
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/dist/useStrandsAuth-CJsQ5cew.cjs +2 -0
  27. package/dist/useStrandsAuth-CJsQ5cew.cjs.map +1 -0
  28. package/dist/{useStrandsAuth-CPyy4tH6.js → useStrandsAuth-OsoGbmZh.js} +102 -67
  29. package/dist/useStrandsAuth-OsoGbmZh.js.map +1 -0
  30. package/dist/useStrandsConfig-BDUymyIP.cjs +2 -0
  31. package/dist/useStrandsConfig-BDUymyIP.cjs.map +1 -0
  32. package/dist/useStrandsConfig-DMkkLRCA.js +102 -0
  33. package/dist/useStrandsConfig-DMkkLRCA.js.map +1 -0
  34. package/dist/utils/validation.d.ts +0 -1
  35. package/dist/utils/validation.d.ts.map +1 -1
  36. package/dist/vue/components/SignedIn.vue.d.ts +1 -1
  37. package/dist/vue/components/SignedOut.vue.d.ts +1 -1
  38. package/dist/vue/components/StrandsUserProfile.vue.d.ts +4 -12
  39. package/dist/vue/components/StrandsUserProfile.vue.d.ts.map +1 -1
  40. package/dist/vue/composables/useStrandsAuth.d.ts +4 -3
  41. package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
  42. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  43. package/dist/vue/ui/UiLoader.vue.d.ts +2 -2
  44. package/dist/vue/ui/UiLoader.vue.d.ts.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/useStrandsAuth-CPyy4tH6.js.map +0 -1
  47. package/dist/useStrandsAuth-C_MiRZbU.cjs +0 -2
  48. package/dist/useStrandsAuth-C_MiRZbU.cjs.map +0 -1
  49. package/dist/useStrandsConfig-R8O__glt.cjs +0 -2
  50. package/dist/useStrandsConfig-R8O__glt.cjs.map +0 -1
  51. package/dist/useStrandsConfig-j-Bfv_s7.js +0 -98
  52. package/dist/useStrandsConfig-j-Bfv_s7.js.map +0 -1
@@ -1,8 +1,8 @@
1
- import { defineComponent as X, computed as C, createElementBlock as A, openBlock as i, normalizeClass as Y, createElementVNode as r, createCommentVNode as n, toDisplayString as k, renderSlot as Z, createTextVNode as V, useSlots as we, ref as U, createBlock as E, resolveDynamicComponent as pe, mergeProps as Se, withCtx as y, onMounted as J, nextTick as ce, toRefs as qe, watch as se, Fragment as O, renderList as Ae, normalizeStyle as ve, reactive as G, createVNode as d, Transition as R, withModifiers as ae, createSlots as Ve, createStaticVNode as ye, h as z } from "vue";
2
- import { u as _, p as ge } from "./useStrandsConfig-j-Bfv_s7.js";
3
- import { s as ka } from "./useStrandsConfig-j-Bfv_s7.js";
4
- import { u as ne } from "./useStrandsAuth-CPyy4tH6.js";
5
- const Ce = /* @__PURE__ */ X({
1
+ import { defineComponent as Z, computed as x, createElementBlock as A, openBlock as l, normalizeClass as J, createElementVNode as r, createCommentVNode as n, toDisplayString as U, renderSlot as R, createTextVNode as V, useSlots as Ie, ref as q, createBlock as $, resolveDynamicComponent as ke, mergeProps as Xe, withCtx as v, onMounted as re, nextTick as Ce, toRefs as De, watch as me, Fragment as _, renderList as be, normalizeStyle as je, reactive as te, createVNode as d, Transition as ee, withModifiers as fe, createStaticVNode as Ne, h as T } from "vue";
2
+ import { u as se, p as We } from "./useStrandsConfig-DMkkLRCA.js";
3
+ import { s as Ga } from "./useStrandsConfig-DMkkLRCA.js";
4
+ import { u as ge } from "./useStrandsAuth-OsoGbmZh.js";
5
+ const Te = /* @__PURE__ */ Z({
6
6
  __name: "UiAlert",
7
7
  props: {
8
8
  variant: { type: String, required: !1, default: "info" },
@@ -13,18 +13,18 @@ const Ce = /* @__PURE__ */ X({
13
13
  emits: ["dismiss"],
14
14
  setup(o, { expose: t }) {
15
15
  t();
16
- const a = o, e = C(() => {
17
- const x = ["rounded-lg border p-4"], q = {
16
+ const a = o, e = x(() => {
17
+ const S = ["rounded-lg border p-4"], C = {
18
18
  success: "bg-green-50 border-green-200 text-green-800",
19
19
  error: "bg-red-50 border-red-200 text-red-800",
20
20
  warning: "bg-yellow-50 border-yellow-200 text-yellow-800",
21
21
  info: "bg-blue-50 border-blue-200 text-blue-800"
22
22
  };
23
23
  return [
24
- ...x,
25
- q[a.variant]
24
+ ...S,
25
+ C[a.variant]
26
26
  ].join(" ");
27
- }), l = C(() => [
27
+ }), i = x(() => [
28
28
  "text-sm font-medium mb-1",
29
29
  {
30
30
  success: "text-green-800",
@@ -32,7 +32,7 @@ const Ce = /* @__PURE__ */ X({
32
32
  warning: "text-yellow-800",
33
33
  info: "text-blue-800"
34
34
  }[a.variant]
35
- ].join(" ")), u = C(() => [
35
+ ].join(" ")), u = x(() => [
36
36
  "text-sm",
37
37
  {
38
38
  success: "text-green-700",
@@ -40,7 +40,7 @@ const Ce = /* @__PURE__ */ X({
40
40
  warning: "text-yellow-700",
41
41
  info: "text-blue-700"
42
42
  }[a.variant]
43
- ].join(" ")), s = C(() => [
43
+ ].join(" ")), s = x(() => [
44
44
  "inline-flex rounded-md p-1.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
45
45
  {
46
46
  success: "text-green-400 hover:text-green-500",
@@ -48,66 +48,66 @@ const Ce = /* @__PURE__ */ X({
48
48
  warning: "text-yellow-400 hover:text-yellow-500",
49
49
  info: "text-blue-400 hover:text-blue-500"
50
50
  }[a.variant]
51
- ].join(" ")), g = C(() => ({
51
+ ].join(" ")), g = x(() => ({
52
52
  success: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
53
53
  error: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z",
54
54
  warning: "M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z",
55
55
  info: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z"
56
- })[a.variant]), w = { props: a, alertClasses: e, titleClasses: l, messageClasses: u, dismissClasses: s, iconPath: g };
57
- return Object.defineProperty(w, "__isScriptSetup", { enumerable: !1, value: !0 }), w;
56
+ })[a.variant]), h = { props: a, alertClasses: e, titleClasses: i, messageClasses: u, dismissClasses: s, iconPath: g };
57
+ return Object.defineProperty(h, "__isScriptSetup", { enumerable: !1, value: !0 }), h;
58
58
  }
59
- }), D = (o, t) => {
59
+ }), E = (o, t) => {
60
60
  const a = o.__vccOpts || o;
61
- for (const [e, l] of t)
62
- a[e] = l;
61
+ for (const [e, i] of t)
62
+ a[e] = i;
63
63
  return a;
64
- }, xe = { class: "flex items-start" }, Ue = { class: "flex-shrink-0" }, We = {
64
+ }, Ze = { class: "flex items-start" }, Ee = { class: "flex-shrink-0" }, Ye = {
65
65
  class: "h-5 w-5",
66
66
  fill: "currentColor",
67
67
  viewBox: "0 0 20 20",
68
68
  "aria-hidden": "true"
69
- }, ke = ["d"], Ne = { class: "ml-3 flex-1" }, Le = {
69
+ }, Oe = ["d"], Ke = { class: "ml-3 flex-1" }, Qe = {
70
70
  key: 0,
71
71
  class: "ml-auto pl-3"
72
72
  };
73
- function Me(o, t, a, e, l, u) {
74
- return i(), A(
73
+ function He(o, t, a, e, i, u) {
74
+ return l(), A(
75
75
  "div",
76
76
  {
77
- class: Y(e.alertClasses),
77
+ class: J(e.alertClasses),
78
78
  role: "alert"
79
79
  },
80
80
  [
81
- r("div", xe, [
82
- r("div", Ue, [
83
- (i(), A("svg", We, [
81
+ r("div", Ze, [
82
+ r("div", Ee, [
83
+ (l(), A("svg", Ye, [
84
84
  r("path", {
85
85
  "fill-rule": "evenodd",
86
86
  d: e.iconPath,
87
87
  "clip-rule": "evenodd"
88
- }, null, 8, ke)
88
+ }, null, 8, Oe)
89
89
  ]))
90
90
  ]),
91
- r("div", Ne, [
92
- a.title ? (i(), A(
91
+ r("div", Ke, [
92
+ a.title ? (l(), A(
93
93
  "h3",
94
94
  {
95
95
  key: 0,
96
- class: Y(e.titleClasses)
96
+ class: J(e.titleClasses)
97
97
  },
98
- k(a.title),
98
+ U(a.title),
99
99
  3
100
100
  /* TEXT, CLASS */
101
101
  )) : n("v-if", !0),
102
102
  r(
103
103
  "div",
104
104
  {
105
- class: Y(e.messageClasses)
105
+ class: J(e.messageClasses)
106
106
  },
107
107
  [
108
- Z(o.$slots, "default", {}, () => [
108
+ R(o.$slots, "default", {}, () => [
109
109
  V(
110
- k(a.message),
110
+ U(a.message),
111
111
  1
112
112
  /* TEXT */
113
113
  )
@@ -117,12 +117,12 @@ function Me(o, t, a, e, l, u) {
117
117
  /* CLASS */
118
118
  )
119
119
  ]),
120
- a.dismissible ? (i(), A("div", Le, [
120
+ a.dismissible ? (l(), A("div", Qe, [
121
121
  r(
122
122
  "button",
123
123
  {
124
124
  type: "button",
125
- class: Y(e.dismissClasses),
125
+ class: J(e.dismissClasses),
126
126
  onClick: t[0] || (t[0] = (s) => o.$emit("dismiss"))
127
127
  },
128
128
  t[1] || (t[1] = [
@@ -161,7 +161,7 @@ function Me(o, t, a, e, l, u) {
161
161
  /* CLASS */
162
162
  );
163
163
  }
164
- const de = /* @__PURE__ */ D(Ce, [["render", Me], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiAlert.vue"]]), Pe = /* @__PURE__ */ X({
164
+ const he = /* @__PURE__ */ E(Te, [["render", He], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiAlert.vue"]]), Re = /* @__PURE__ */ Z({
165
165
  __name: "UiButton",
166
166
  props: {
167
167
  variant: { type: String, required: !1, default: "primary" },
@@ -175,7 +175,7 @@ const de = /* @__PURE__ */ D(Ce, [["render", Me], ["__file", "/home/runner/work/
175
175
  emits: ["click"],
176
176
  setup(o, { expose: t }) {
177
177
  t();
178
- const a = o, e = C(() => {
178
+ const a = o, e = x(() => {
179
179
  const u = [
180
180
  "inline-flex items-center justify-center font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-strands-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
181
181
  ], s = {
@@ -187,31 +187,31 @@ const de = /* @__PURE__ */ D(Ce, [["render", Me], ["__file", "/home/runner/work/
187
187
  secondary: "bg-gray-200 text-gray-800 hover:bg-gray-300",
188
188
  ghost: "text-strands-500 hover:text-strands-600 hover:bg-strands-50",
189
189
  outline: "border border-strands-500 text-strands-500 hover:bg-strands-500 hover:text-white"
190
- }, w = a.fullWidth ? "w-full" : "";
190
+ }, h = a.fullWidth ? "w-full" : "";
191
191
  return [
192
192
  ...u,
193
193
  s[a.size],
194
194
  g[a.variant],
195
- w
195
+ h
196
196
  ].filter(Boolean).join(" ");
197
- }), l = { props: a, buttonClasses: e };
198
- return Object.defineProperty(l, "__isScriptSetup", { enumerable: !1, value: !0 }), l;
197
+ }), i = { props: a, buttonClasses: e };
198
+ return Object.defineProperty(i, "__isScriptSetup", { enumerable: !1, value: !0 }), i;
199
199
  }
200
- }), Ie = ["type", "disabled"], ze = {
200
+ }), Ge = ["type", "disabled"], Je = {
201
201
  key: 0,
202
202
  class: "flex items-center justify-center gap-2"
203
- }, Be = {
203
+ }, _e = {
204
204
  key: 1,
205
205
  class: "flex items-center justify-center gap-2"
206
206
  };
207
- function Fe(o, t, a, e, l, u) {
208
- return i(), A("button", {
207
+ function $e(o, t, a, e, i, u) {
208
+ return l(), A("button", {
209
209
  type: a.type,
210
210
  disabled: a.disabled || a.loading,
211
- class: Y(e.buttonClasses),
211
+ class: J(e.buttonClasses),
212
212
  onClick: t[0] || (t[0] = (s) => o.$emit("click", s))
213
213
  }, [
214
- a.loading ? (i(), A("span", ze, [
214
+ a.loading ? (l(), A("span", Je, [
215
215
  t[1] || (t[1] = r(
216
216
  "svg",
217
217
  {
@@ -240,17 +240,17 @@ function Fe(o, t, a, e, l, u) {
240
240
  r(
241
241
  "span",
242
242
  null,
243
- k(a.loadingText || "Loading..."),
243
+ U(a.loadingText || "Loading..."),
244
244
  1
245
245
  /* TEXT */
246
246
  )
247
- ])) : (i(), A("span", Be, [
248
- Z(o.$slots, "icon"),
249
- Z(o.$slots, "default")
247
+ ])) : (l(), A("span", _e, [
248
+ R(o.$slots, "icon"),
249
+ R(o.$slots, "default")
250
250
  ]))
251
- ], 10, Ie);
251
+ ], 10, Ge);
252
252
  }
253
- const $ = /* @__PURE__ */ D(Pe, [["render", Fe], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiButton.vue"]]), Xe = /* @__PURE__ */ X({
253
+ const le = /* @__PURE__ */ E(Re, [["render", $e], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiButton.vue"]]), et = /* @__PURE__ */ Z({
254
254
  __name: "UiCard",
255
255
  props: {
256
256
  variant: { type: String, required: !1, default: "default" },
@@ -259,7 +259,7 @@ const $ = /* @__PURE__ */ D(Pe, [["render", Fe], ["__file", "/home/runner/work/s
259
259
  },
260
260
  setup(o, { expose: t }) {
261
261
  t();
262
- const a = o, e = C(() => {
262
+ const a = o, e = x(() => {
263
263
  const u = ["bg-white border border-gray-200"], s = {
264
264
  default: "rounded-lg",
265
265
  modern: "rounded-2xl backdrop-blur-lg",
@@ -268,7 +268,7 @@ const $ = /* @__PURE__ */ D(Pe, [["render", Fe], ["__file", "/home/runner/work/s
268
268
  sm: "p-4",
269
269
  md: "p-6",
270
270
  lg: "p-8"
271
- }, w = {
271
+ }, h = {
272
272
  none: "",
273
273
  sm: "shadow-sm",
274
274
  md: "shadow-md",
@@ -278,40 +278,40 @@ const $ = /* @__PURE__ */ D(Pe, [["render", Fe], ["__file", "/home/runner/work/s
278
278
  ...u,
279
279
  s[a.variant],
280
280
  g[a.padding],
281
- w[a.shadow]
281
+ h[a.shadow]
282
282
  ].filter(Boolean).join(" ");
283
- }), l = { props: a, cardClasses: e };
284
- return Object.defineProperty(l, "__isScriptSetup", { enumerable: !1, value: !0 }), l;
283
+ }), i = { props: a, cardClasses: e };
284
+ return Object.defineProperty(i, "__isScriptSetup", { enumerable: !1, value: !0 }), i;
285
285
  }
286
- }), De = {
286
+ }), tt = {
287
287
  key: 0,
288
288
  class: "border-b border-gray-200 pb-4 mb-6"
289
- }, je = { class: "space-y-6" }, Ze = {
289
+ }, rt = { class: "space-y-6" }, st = {
290
290
  key: 1,
291
291
  class: "border-t border-gray-200 pt-4 mt-6"
292
292
  };
293
- function Te(o, t, a, e, l, u) {
294
- return i(), A(
293
+ function at(o, t, a, e, i, u) {
294
+ return l(), A(
295
295
  "div",
296
296
  {
297
- class: Y(e.cardClasses)
297
+ class: J(e.cardClasses)
298
298
  },
299
299
  [
300
- o.$slots.header ? (i(), A("div", De, [
301
- Z(o.$slots, "header")
300
+ o.$slots.header ? (l(), A("div", tt, [
301
+ R(o.$slots, "header")
302
302
  ])) : n("v-if", !0),
303
- r("div", je, [
304
- Z(o.$slots, "default")
303
+ r("div", rt, [
304
+ R(o.$slots, "default")
305
305
  ]),
306
- o.$slots.footer ? (i(), A("div", Ze, [
307
- Z(o.$slots, "footer")
306
+ o.$slots.footer ? (l(), A("div", st, [
307
+ R(o.$slots, "footer")
308
308
  ])) : n("v-if", !0)
309
309
  ],
310
310
  2
311
311
  /* CLASS */
312
312
  );
313
313
  }
314
- const oe = /* @__PURE__ */ D(Xe, [["render", Te], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiCard.vue"]]), Ye = /* @__PURE__ */ X({
314
+ const ve = /* @__PURE__ */ E(et, [["render", at], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiCard.vue"]]), nt = /* @__PURE__ */ Z({
315
315
  __name: "UiInput",
316
316
  props: {
317
317
  modelValue: { type: [String, Number], required: !1 },
@@ -328,69 +328,69 @@ const oe = /* @__PURE__ */ D(Xe, [["render", Te], ["__file", "/home/runner/work/
328
328
  emits: ["update:modelValue", "blur", "focus"],
329
329
  setup(o, { expose: t, emit: a }) {
330
330
  t();
331
- const e = o, l = a, u = we(), s = U(!1), g = U(`input-${Math.random().toString(36).substr(2, 9)}`), w = C(() => e.type === "password" ? s.value ? "text" : "password" : e.type), x = C(() => {
331
+ const e = o, i = a, u = Ie(), s = q(!1), g = q(`input-${Math.random().toString(36).substr(2, 9)}`), h = x(() => e.type === "password" ? s.value ? "text" : "password" : e.type), S = x(() => {
332
332
  const p = [
333
333
  "block w-full border-gray-300 text-black rounded-lg shadow-sm focus-visible:ring-strands-500 focus-visible:border-strands-500 transition-colors duration-200 disabled:bg-gray-50 disabled:text-gray-500"
334
334
  ], f = {
335
335
  sm: "px-3 py-2 text-sm",
336
336
  md: "px-3 py-2.5 text-sm",
337
337
  lg: "px-4 py-3 text-base"
338
- }, W = e.error ? "border-red-300 focus-visible:ring-red-500 focus-visible:border-red-500" : "", N = u.icon ? "pl-10" : "", B = e.type === "password" ? "pr-10" : "";
338
+ }, W = e.error ? "border-red-300 focus-visible:ring-red-500 focus-visible:border-red-500" : "", M = u.icon ? "pl-10" : "", N = e.type === "password" ? "pr-10" : "";
339
339
  return [
340
340
  ...p,
341
341
  f[e.size],
342
342
  W,
343
- N,
344
- B
343
+ M,
344
+ N
345
345
  ].filter(Boolean).join(" ");
346
- }), S = { props: e, emit: l, slots: u, showPassword: s, inputId: g, computedType: w, inputClasses: x, handleInput: (p) => {
346
+ }), y = { props: e, emit: i, slots: u, showPassword: s, inputId: g, computedType: h, inputClasses: S, handleInput: (p) => {
347
347
  const f = p.target;
348
- l("update:modelValue", f.value);
348
+ i("update:modelValue", f.value);
349
349
  }, togglePasswordVisibility: () => {
350
350
  s.value = !s.value;
351
351
  } };
352
- return Object.defineProperty(S, "__isScriptSetup", { enumerable: !1, value: !0 }), S;
352
+ return Object.defineProperty(y, "__isScriptSetup", { enumerable: !1, value: !0 }), y;
353
353
  }
354
- }), Oe = { class: "space-y-1" }, Ee = ["for"], Qe = {
354
+ }), ot = { class: "space-y-1" }, it = ["for"], lt = {
355
355
  key: 0,
356
356
  class: "text-red-500"
357
- }, Ke = { class: "relative" }, He = ["id", "type", "value", "placeholder", "disabled", "required", "autocomplete"], Re = {
357
+ }, At = { class: "relative" }, dt = ["id", "type", "value", "placeholder", "disabled", "required", "autocomplete"], ut = {
358
358
  key: 0,
359
359
  class: "h-5 w-5",
360
360
  fill: "none",
361
361
  stroke: "currentColor",
362
362
  viewBox: "0 0 24 24"
363
- }, Ge = {
363
+ }, ct = {
364
364
  key: 1,
365
365
  class: "h-5 w-5",
366
366
  fill: "none",
367
367
  stroke: "currentColor",
368
368
  viewBox: "0 0 24 24"
369
- }, Je = {
369
+ }, mt = {
370
370
  key: 1,
371
371
  class: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"
372
- }, _e = {
372
+ }, ft = {
373
373
  key: 1,
374
374
  class: "text-sm text-red-600"
375
- }, $e = {
375
+ }, gt = {
376
376
  key: 2,
377
377
  class: "text-sm text-gray-500"
378
378
  };
379
- function et(o, t, a, e, l, u) {
380
- return i(), A("div", Oe, [
381
- a.label ? (i(), A("label", {
379
+ function vt(o, t, a, e, i, u) {
380
+ return l(), A("div", ot, [
381
+ a.label ? (l(), A("label", {
382
382
  key: 0,
383
383
  for: e.inputId,
384
384
  class: "block text-sm font-medium text-gray-700"
385
385
  }, [
386
386
  V(
387
- k(a.label) + " ",
387
+ U(a.label) + " ",
388
388
  1
389
389
  /* TEXT */
390
390
  ),
391
- a.required ? (i(), A("span", Qe, "*")) : n("v-if", !0)
392
- ], 8, Ee)) : n("v-if", !0),
393
- r("div", Ke, [
391
+ a.required ? (l(), A("span", lt, "*")) : n("v-if", !0)
392
+ ], 8, it)) : n("v-if", !0),
393
+ r("div", At, [
394
394
  r("input", {
395
395
  id: e.inputId,
396
396
  type: e.computedType,
@@ -399,19 +399,19 @@ function et(o, t, a, e, l, u) {
399
399
  disabled: a.disabled,
400
400
  required: a.required,
401
401
  autocomplete: a.autocomplete,
402
- class: Y(e.inputClasses),
402
+ class: J(e.inputClasses),
403
403
  onInput: e.handleInput,
404
404
  onBlur: t[0] || (t[0] = (s) => o.$emit("blur", s)),
405
405
  onFocus: t[1] || (t[1] = (s) => o.$emit("focus", s))
406
- }, null, 42, He),
406
+ }, null, 42, dt),
407
407
  n(" Password visibility toggle "),
408
- a.type === "password" ? (i(), A("button", {
408
+ a.type === "password" ? (l(), A("button", {
409
409
  key: 0,
410
410
  type: "button",
411
411
  class: "absolute inset-y-0 right-0 pr-3 flex items-center text-gray-400 hover:text-gray-600 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-strands-500 focus-visible:ring-offset-2 rounded-md",
412
412
  onClick: e.togglePasswordVisibility
413
413
  }, [
414
- e.showPassword ? (i(), A("svg", Re, t[2] || (t[2] = [
414
+ e.showPassword ? (l(), A("svg", ut, t[2] || (t[2] = [
415
415
  r(
416
416
  "path",
417
417
  {
@@ -424,7 +424,7 @@ function et(o, t, a, e, l, u) {
424
424
  -1
425
425
  /* CACHED */
426
426
  )
427
- ]))) : (i(), A("svg", Ge, t[3] || (t[3] = [
427
+ ]))) : (l(), A("svg", ct, t[3] || (t[3] = [
428
428
  r(
429
429
  "path",
430
430
  {
@@ -452,27 +452,27 @@ function et(o, t, a, e, l, u) {
452
452
  ])))
453
453
  ])) : n("v-if", !0),
454
454
  n(" Icon slot "),
455
- o.$slots.icon ? (i(), A("div", Je, [
456
- Z(o.$slots, "icon", {}, void 0, !0)
455
+ o.$slots.icon ? (l(), A("div", mt, [
456
+ R(o.$slots, "icon", {}, void 0, !0)
457
457
  ])) : n("v-if", !0)
458
458
  ]),
459
459
  n(" Help text or error message "),
460
- a.error ? (i(), A(
460
+ a.error ? (l(), A(
461
461
  "p",
462
- _e,
463
- k(a.error),
462
+ ft,
463
+ U(a.error),
464
464
  1
465
465
  /* TEXT */
466
- )) : a.helpText ? (i(), A(
466
+ )) : a.helpText ? (l(), A(
467
467
  "p",
468
- $e,
469
- k(a.helpText),
468
+ gt,
469
+ U(a.helpText),
470
470
  1
471
471
  /* TEXT */
472
472
  )) : n("v-if", !0)
473
473
  ]);
474
474
  }
475
- const ee = /* @__PURE__ */ D(Ye, [["render", et], ["__scopeId", "data-v-e87dc617"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiInput.vue"]]), tt = /* @__PURE__ */ X({
475
+ const Ae = /* @__PURE__ */ E(nt, [["render", vt], ["__scopeId", "data-v-e87dc617"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiInput.vue"]]), pt = /* @__PURE__ */ Z({
476
476
  __name: "UiLink",
477
477
  props: {
478
478
  href: { type: String, required: !1 },
@@ -485,43 +485,43 @@ const ee = /* @__PURE__ */ D(Ye, [["render", et], ["__scopeId", "data-v-e87dc617
485
485
  emits: ["click"],
486
486
  setup(o, { expose: t, emit: a }) {
487
487
  t();
488
- const e = o, l = a, u = C(() => e.to ? "router-link" : e.href ? "a" : "button"), s = C(() => {
489
- const q = {};
490
- return e.to ? q.to = e.to : e.href ? (q.href = e.href, e.external && (q.target = "_blank", q.rel = "noopener noreferrer")) : q.type = "button", e.disabled && (q.disabled = !0, q["aria-disabled"] = !0), q;
491
- }), g = C(() => {
492
- const q = [
488
+ const e = o, i = a, u = x(() => e.to ? "router-link" : e.href ? "a" : "button"), s = x(() => {
489
+ const C = {};
490
+ return e.to ? C.to = e.to : e.href ? (C.href = e.href, e.external && (C.target = "_blank", C.rel = "noopener noreferrer")) : C.type = "button", e.disabled && (C.disabled = !0, C["aria-disabled"] = !0), C;
491
+ }), g = x(() => {
492
+ const C = [
493
493
  "inline-flex items-center font-medium transition-colors duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-strands-500 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed"
494
494
  ], m = {
495
495
  sm: "text-xs",
496
496
  md: "text-sm",
497
497
  lg: "text-base"
498
- }, S = {
498
+ }, y = {
499
499
  primary: "text-strands-500 hover:text-strands-600",
500
500
  secondary: "text-gray-600 hover:text-gray-800",
501
501
  ghost: "text-gray-500 hover:text-gray-700 hover:bg-gray-100 px-2 py-1 rounded",
502
502
  underline: "text-strands-500 hover:text-strands-600 underline decoration-strands-500 underline-offset-2"
503
503
  };
504
504
  return [
505
- ...q,
505
+ ...C,
506
506
  m[e.size],
507
- S[e.variant]
507
+ y[e.variant]
508
508
  ].filter(Boolean).join(" ");
509
- }), x = { props: e, emit: l, tag: u, linkProps: s, linkClasses: g, handleClick: (q) => {
510
- e.disabled || l("click", q);
509
+ }), S = { props: e, emit: i, tag: u, linkProps: s, linkClasses: g, handleClick: (C) => {
510
+ e.disabled || i("click", C);
511
511
  } };
512
- return Object.defineProperty(x, "__isScriptSetup", { enumerable: !1, value: !0 }), x;
512
+ return Object.defineProperty(S, "__isScriptSetup", { enumerable: !1, value: !0 }), S;
513
513
  }
514
514
  });
515
- function rt(o, t, a, e, l, u) {
516
- return i(), E(pe(e.tag), Se({ class: e.linkClasses }, e.linkProps, { onClick: e.handleClick }), {
517
- default: y(() => [
518
- Z(o.$slots, "default")
515
+ function wt(o, t, a, e, i, u) {
516
+ return l(), $(ke(e.tag), Xe({ class: e.linkClasses }, e.linkProps, { onClick: e.handleClick }), {
517
+ default: v(() => [
518
+ R(o.$slots, "default")
519
519
  ]),
520
520
  _: 3
521
521
  /* FORWARDED */
522
522
  }, 16, ["class"]);
523
523
  }
524
- const te = /* @__PURE__ */ D(tt, [["render", rt], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiLink.vue"]]), st = /* @__PURE__ */ X({
524
+ const de = /* @__PURE__ */ E(pt, [["render", wt], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiLink.vue"]]), ht = /* @__PURE__ */ Z({
525
525
  __name: "UiTabs",
526
526
  props: {
527
527
  modelValue: { type: String, required: !0 },
@@ -530,83 +530,83 @@ const te = /* @__PURE__ */ D(tt, [["render", rt], ["__file", "/home/runner/work/
530
530
  emits: ["update:modelValue"],
531
531
  setup(o, { expose: t, emit: a }) {
532
532
  t();
533
- const e = o, l = a, u = U([]), s = U({
533
+ const e = o, i = a, u = q([]), s = q({
534
534
  width: "0px",
535
535
  left: "0px",
536
536
  opacity: "0"
537
537
  });
538
- let g = -1, w = !1;
539
- const x = async (f, W) => {
540
- w || (l("update:modelValue", f), await ce(), q(W));
541
- }, q = async (f) => {
538
+ let g = -1, h = !1;
539
+ const S = async (f, W) => {
540
+ h || (i("update:modelValue", f), await Ce(), C(W));
541
+ }, C = async (f) => {
542
542
  if (!u.value[f] || f === g) return;
543
- w = !0;
544
- const W = u.value[f], N = W.parentElement;
545
- if (!N) return;
546
- const B = W.getBoundingClientRect(), h = N.getBoundingClientRect(), v = B.left - h.left, c = B.width;
543
+ h = !0;
544
+ const W = u.value[f], M = W.parentElement;
545
+ if (!M) return;
546
+ const N = W.getBoundingClientRect(), k = M.getBoundingClientRect(), b = N.left - k.left, c = N.width;
547
547
  if (g === -1) {
548
548
  s.value = {
549
549
  width: `${c}px`,
550
- left: `${v}px`,
550
+ left: `${b}px`,
551
551
  opacity: "1"
552
- }, g = f, w = !1;
552
+ }, g = f, h = !1;
553
553
  return;
554
554
  }
555
- const T = u.value[g].getBoundingClientRect(), K = T.left - h.left, F = T.width, M = f > g, j = M ? K : v, H = M ? v + c - K : K + F - v;
555
+ const H = u.value[g].getBoundingClientRect(), Y = H.left - k.left, P = H.width, z = f > g, I = z ? Y : b, D = z ? b + c - Y : Y + P - b;
556
556
  s.value = {
557
- width: `${H}px`,
558
- left: `${j}px`,
557
+ width: `${D}px`,
558
+ left: `${I}px`,
559
559
  opacity: "1"
560
560
  }, setTimeout(() => {
561
561
  s.value = {
562
562
  width: `${c}px`,
563
- left: `${v}px`,
563
+ left: `${b}px`,
564
564
  opacity: "1"
565
565
  }, g = f, setTimeout(() => {
566
- w = !1;
566
+ h = !1;
567
567
  }, 150);
568
568
  }, 120);
569
569
  };
570
- J(async () => {
571
- await ce();
570
+ re(async () => {
571
+ await Ce();
572
572
  const f = e.tabs.findIndex((W) => W.value === e.modelValue);
573
- f !== -1 && q(f);
573
+ f !== -1 && C(f);
574
574
  });
575
- const m = C(
575
+ const m = x(
576
576
  () => e.tabs.findIndex((f) => f.value === e.modelValue)
577
- ), { modelValue: S } = qe(e);
578
- se(S, async () => {
579
- await ce();
577
+ ), { modelValue: y } = De(e);
578
+ me(y, async () => {
579
+ await Ce();
580
580
  const f = e.tabs.findIndex((W) => W.value === e.modelValue);
581
- f !== -1 && q(f);
581
+ f !== -1 && C(f);
582
582
  });
583
- const p = { props: e, emit: l, tabButtons: u, underlineStyle: s, get currentTabIndex() {
583
+ const p = { props: e, emit: i, tabButtons: u, underlineStyle: s, get currentTabIndex() {
584
584
  return g;
585
585
  }, set currentTabIndex(f) {
586
586
  g = f;
587
587
  }, get isAnimating() {
588
- return w;
588
+ return h;
589
589
  }, set isAnimating(f) {
590
- w = f;
591
- }, handleTabClick: x, animateUnderlineStretch: q, activeTabIndex: m, modelValue: S };
590
+ h = f;
591
+ }, handleTabClick: S, animateUnderlineStretch: C, activeTabIndex: m, modelValue: y };
592
592
  return Object.defineProperty(p, "__isScriptSetup", { enumerable: !1, value: !0 }), p;
593
593
  }
594
- }), at = { class: "relative" }, nt = {
594
+ }), yt = { class: "relative" }, bt = {
595
595
  class: "relative flex border-b border-neutral-200",
596
596
  role: "tablist"
597
- }, ot = ["aria-selected", "aria-controls", "id", "onClick"];
598
- function it(o, t, a, e, l, u) {
599
- return i(), A("div", at, [
597
+ }, St = ["aria-selected", "aria-controls", "id", "onClick"];
598
+ function Ct(o, t, a, e, i, u) {
599
+ return l(), A("div", yt, [
600
600
  n(" Tab List "),
601
- r("div", nt, [
602
- (i(!0), A(
603
- O,
601
+ r("div", bt, [
602
+ (l(!0), A(
603
+ _,
604
604
  null,
605
- Ae(a.tabs, (s, g) => (i(), A("button", {
605
+ be(a.tabs, (s, g) => (l(), A("button", {
606
606
  key: s.value,
607
607
  ref_for: !0,
608
608
  ref: "tabButtons",
609
- class: Y([
609
+ class: J([
610
610
  "relative flex-1 py-4 px-6 font-medium text-sm transition-colors duration-150",
611
611
  "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-strands-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white",
612
612
  "hover:text-strands-600",
@@ -616,8 +616,8 @@ function it(o, t, a, e, l, u) {
616
616
  "aria-controls": `tabpanel-${s.value}`,
617
617
  id: `tab-${s.value}`,
618
618
  role: "tab",
619
- onClick: (w) => e.handleTabClick(s.value, g)
620
- }, k(s.label), 11, ot))),
619
+ onClick: (h) => e.handleTabClick(s.value, g)
620
+ }, U(s.label), 11, St))),
621
621
  128
622
622
  /* KEYED_FRAGMENT */
623
623
  )),
@@ -626,7 +626,7 @@ function it(o, t, a, e, l, u) {
626
626
  "div",
627
627
  {
628
628
  class: "absolute bottom-[-2px] h-[3px] bg-strands-500 rounded-full transition-all duration-150 ease-[cubic-bezier(0.25,0.46,0.45,0.94)]",
629
- style: ve(e.underlineStyle)
629
+ style: je(e.underlineStyle)
630
630
  },
631
631
  null,
632
632
  4
@@ -635,195 +635,78 @@ function it(o, t, a, e, l, u) {
635
635
  ])
636
636
  ]);
637
637
  }
638
- const be = /* @__PURE__ */ D(st, [["render", it], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiTabs.vue"]]), lt = /* @__PURE__ */ X({
638
+ const Le = /* @__PURE__ */ E(ht, [["render", Ct], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiTabs.vue"]]), qt = `<svg width="302" height="438" viewBox="0 0 302 438" fill="none" xmlns="http://www.w3.org/2000/svg">
639
+ <path d="M71.5001 96C71.5001 96 132 106 137 61.5C142 17 117.5 3.50005 94.5001 1.50003C71.5001 -0.499996 16.0001 8.5 2.00014 72.5C-6.5 130.5 71.5003 227.5 165 218C258.5 208.5 280.758 148.5 283.5 121C286.242 93.5 277.5 61.5 238.5 61.5C153 61.5 150.501 185 170.5 235C190.5 285 199 279 213 314C227.001 349 217.296 411.458 183 427C129.456 450.65 92 426 78.5 407.5C65 389 68.0003 357 94.5001 344.5C121 332 212.41 393.5 301.5 361" stroke="black"/>
640
+ </svg>
641
+ `, Vt = /* @__PURE__ */ Z({
639
642
  __name: "UiLoader",
640
643
  props: {
641
- size: { type: Number, required: !1, default: 48 },
644
+ size: { type: Number, required: !1, default: 80 },
642
645
  variant: { type: String, required: !1, default: "auto" },
643
646
  text: { type: String, required: !1 },
644
- showParticles: { type: Boolean, required: !1, default: !0 },
645
- centered: { type: Boolean, required: !1, default: !0 }
647
+ centered: { type: Boolean, required: !1, default: !0 },
648
+ weight: { type: Number, required: !1, default: 30 }
646
649
  },
647
650
  setup(o, { expose: t }) {
648
651
  t();
649
- const a = o, e = U(Math.random().toString(36).substr(2, 9)), l = C(() => `url(#gradient-${e.value})`), u = C(() => [
652
+ const a = qt.replace(/<svg[^>]*>/, "").replace(/<\/svg>/, "").trim(), e = a.match(/d="([^"]*)"/)?.[1] || "", i = o, u = x(() => [
650
653
  "flex flex-col items-center gap-4",
651
- a.centered ? "justify-center" : ""
652
- ].filter(Boolean).join(" ")), s = C(() => [
653
- "text-sm font-medium animate-pulse",
654
- a.variant === "light" ? "text-gray-600" : a.variant === "dark" ? "text-gray-300" : "text-gray-600 dark:text-gray-300"
655
- ].filter(Boolean).join(" ")), g = C(() => [
656
- "absolute w-1 h-1 rounded-full animate-float",
657
- a.variant === "light" ? "bg-strands-400" : a.variant === "dark" ? "bg-white/40" : "bg-strands-400 dark:bg-white/40"
658
- ].filter(Boolean).join(" ")), w = { props: a, componentId: e, gradientId: l, containerClasses: u, textClasses: s, particleClasses: g };
659
- return Object.defineProperty(w, "__isScriptSetup", { enumerable: !1, value: !0 }), w;
654
+ i.centered ? "justify-center" : ""
655
+ ].filter(Boolean).join(" ")), s = x(() => [
656
+ "text-sm font-medium",
657
+ i.variant === "light" ? "text-gray-600" : i.variant === "dark" ? "text-gray-300" : "text-gray-600 dark:text-gray-300"
658
+ ].filter(Boolean).join(" ")), g = x(
659
+ () => i.variant === "light" ? "#EA00A810" : (i.variant === "dark", "#ffffff10")
660
+ ), h = x(
661
+ () => i.variant === "light" ? "#EA00A8" : (i.variant === "dark", "#ffffff")
662
+ ), S = { path: a, d: e, props: i, containerClasses: u, textClasses: s, semiColor: g, solidColor: h };
663
+ return Object.defineProperty(S, "__isScriptSetup", { enumerable: !1, value: !0 }), S;
660
664
  }
661
- }), At = { class: "relative" }, dt = ["width", "height"], ut = ["stroke"], ct = ["stroke"], mt = ["stroke"], ft = ["fill"], gt = ["id"], pt = ["stop-color"], vt = ["stop-color"], yt = ["stop-color"], bt = {
662
- key: 0,
663
- class: "absolute inset-0 pointer-events-none"
664
- };
665
- function ht(o, t, a, e, l, u) {
666
- return i(), A(
665
+ }), xt = { class: "relative" }, Ut = ["width", "height"], Wt = ["d", "stroke", "stroke-width"], kt = ["d", "stroke", "stroke-width"];
666
+ function Nt(o, t, a, e, i, u) {
667
+ return l(), A(
667
668
  "div",
668
669
  {
669
- class: Y(e.containerClasses)
670
+ class: J(e.containerClasses)
670
671
  },
671
672
  [
672
- r("div", At, [
673
- n(" Main animated SVG "),
674
- (i(), A("svg", {
673
+ r("div", xt, [
674
+ n(" Simple SVG with fun animated path "),
675
+ (l(), A("svg", {
675
676
  width: a.size,
676
677
  height: a.size,
677
- viewBox: "0 0 100 100",
678
- class: "animate-spin-slow"
678
+ viewBox: "0 0 500 500"
679
679
  }, [
680
- n(" Outer decorative ring "),
681
- r("circle", {
682
- cx: "50",
683
- cy: "50",
684
- r: "45",
685
- fill: "none",
686
- stroke: a.variant === "light" ? "rgba(234, 0, 168, 0.1)" : "rgba(255, 255, 255, 0.1)",
687
- "stroke-width": "1",
688
- class: "animate-pulse"
689
- }, null, 8, ut),
690
- n(' Main animated path - Strands "S" inspired curve '),
680
+ n(" Fun wavy path inspired by Strands "),
691
681
  r("path", {
692
- d: `M 25 20
693
- Q 50 10, 75 20
694
- Q 85 35, 75 50
695
- Q 50 60, 25 50
696
- Q 15 65, 25 80
697
- Q 50 90, 75 80`,
682
+ d: e.d,
698
683
  fill: "none",
699
- stroke: e.gradientId,
700
- "stroke-width": "3",
684
+ stroke: e.semiColor,
685
+ "stroke-width": a.weight,
701
686
  "stroke-linecap": "round",
702
687
  "stroke-linejoin": "round",
703
- class: "animate-draw"
704
- }, null, 8, ct),
705
- n(" Secondary path for extra visual interest "),
688
+ transform: "translate(81, 13) scale(1.0)"
689
+ }, null, 8, Wt),
706
690
  r("path", {
707
- d: `M 30 25
708
- Q 50 15, 70 25
709
- Q 75 40, 70 50
710
- Q 50 55, 30 50
711
- Q 25 60, 30 75
712
- Q 50 85, 70 75`,
691
+ d: e.d,
713
692
  fill: "none",
714
- stroke: a.variant === "light" ? "rgba(234, 0, 168, 0.3)" : "rgba(255, 255, 255, 0.3)",
715
- "stroke-width": "1.5",
693
+ stroke: e.solidColor,
694
+ "stroke-width": a.weight,
716
695
  "stroke-linecap": "round",
717
696
  "stroke-linejoin": "round",
718
- class: "animate-draw-delayed"
719
- }, null, 8, mt),
720
- n(" Center pulsing dot "),
721
- r("circle", {
722
- cx: "50",
723
- cy: "50",
724
- r: "3",
725
- fill: a.variant === "light" ? "#EA00A8" : "#ffffff",
726
- class: "animate-pulse-center"
727
- }, null, 8, ft),
728
- n(" Gradient definitions "),
729
- r("defs", null, [
730
- r("linearGradient", {
731
- id: `gradient-${e.componentId}`,
732
- x1: "0%",
733
- y1: "0%",
734
- x2: "100%",
735
- y2: "100%"
736
- }, [
737
- r("stop", {
738
- offset: "0%",
739
- "stop-color": a.variant === "light" ? "#EA00A8" : "#ffffff",
740
- "stop-opacity": "1"
741
- }, t[0] || (t[0] = [
742
- r(
743
- "animate",
744
- {
745
- attributeName: "stop-opacity",
746
- values: "1;0.5;1",
747
- dur: "2s",
748
- repeatCount: "indefinite"
749
- },
750
- null,
751
- -1
752
- /* CACHED */
753
- )
754
- ]), 8, pt),
755
- r("stop", {
756
- offset: "50%",
757
- "stop-color": a.variant === "light" ? "#FF6B9D" : "#ffffff",
758
- "stop-opacity": "0.8"
759
- }, t[1] || (t[1] = [
760
- r(
761
- "animate",
762
- {
763
- attributeName: "stop-opacity",
764
- values: "0.8;0.3;0.8",
765
- dur: "2s",
766
- repeatCount: "indefinite"
767
- },
768
- null,
769
- -1
770
- /* CACHED */
771
- )
772
- ]), 8, vt),
773
- r("stop", {
774
- offset: "100%",
775
- "stop-color": a.variant === "light" ? "#FFB7D7" : "#ffffff",
776
- "stop-opacity": "0.6"
777
- }, t[2] || (t[2] = [
778
- r(
779
- "animate",
780
- {
781
- attributeName: "stop-opacity",
782
- values: "0.6;0.2;0.6",
783
- dur: "2s",
784
- repeatCount: "indefinite"
785
- },
786
- null,
787
- -1
788
- /* CACHED */
789
- )
790
- ]), 8, yt)
791
- ], 8, gt)
792
- ])
793
- ], 8, dt)),
794
- n(" Floating particles for extra flair "),
795
- a.showParticles ? (i(), A("div", bt, [
796
- (i(), A(
797
- O,
798
- null,
799
- Ae(3, (s) => r(
800
- "div",
801
- {
802
- key: s,
803
- class: Y(e.particleClasses),
804
- style: ve({
805
- animationDelay: `${s * 0.5}s`,
806
- left: `${20 + s * 30}%`,
807
- top: `${30 + s * 20}%`
808
- })
809
- },
810
- null,
811
- 6
812
- /* CLASS, STYLE */
813
- )),
814
- 64
815
- /* STABLE_FRAGMENT */
816
- ))
817
- ])) : n("v-if", !0)
697
+ class: "animate-draw-line",
698
+ transform: "translate(81, 13) scale(1.0)"
699
+ }, null, 8, kt)
700
+ ], 8, Ut))
818
701
  ]),
819
702
  n(" Optional text "),
820
- a.text ? (i(), A(
703
+ a.text ? (l(), A(
821
704
  "p",
822
705
  {
823
706
  key: 0,
824
- class: Y(e.textClasses)
707
+ class: J(e.textClasses)
825
708
  },
826
- k(a.text),
709
+ U(a.text),
827
710
  3
828
711
  /* TEXT, CLASS */
829
712
  )) : n("v-if", !0)
@@ -832,26 +715,26 @@ function ht(o, t, a, e, l, u) {
832
715
  /* CLASS */
833
716
  );
834
717
  }
835
- const me = /* @__PURE__ */ D(lt, [["render", ht], ["__scopeId", "data-v-32cc7309"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiLoader.vue"]]), wt = /* @__PURE__ */ X({
718
+ const Se = /* @__PURE__ */ E(Vt, [["render", Nt], ["__scopeId", "data-v-32cc7309"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/ui/UiLoader.vue"]]), Lt = /* @__PURE__ */ Z({
836
719
  __name: "StrandsSecuredFooter",
837
720
  props: {
838
721
  config: { type: Object, required: !1 }
839
722
  },
840
723
  setup(o, { expose: t }) {
841
724
  t();
842
- const a = o, { config: e } = _(a.config), l = C(() => e.value.baseUrl !== "https://accounts.strands.gg"), u = { props: a, config: e, shouldShowSecuredBy: l };
725
+ const a = o, { config: e } = se(a.config), i = x(() => e.value.baseUrl !== "https://accounts.strands.gg"), u = { props: a, config: e, shouldShowSecuredBy: i };
843
726
  return Object.defineProperty(u, "__isScriptSetup", { enumerable: !1, value: !0 }), u;
844
727
  }
845
- }), St = "data:image/png;base64,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", qt = {
728
+ }), Mt = "data:image/png;base64,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", Pt = {
846
729
  key: 0,
847
730
  class: "flex items-center justify-center gap-2 mt-4 -mb-4 pt-4 border-t border-neutral-200"
848
731
  };
849
- function Vt(o, t, a, e, l, u) {
850
- return e.shouldShowSecuredBy ? (i(), A("div", qt, t[0] || (t[0] = [
732
+ function Ft(o, t, a, e, i, u) {
733
+ return e.shouldShowSecuredBy ? (l(), A("div", Pt, t[0] || (t[0] = [
851
734
  r(
852
735
  "img",
853
736
  {
854
- src: St,
737
+ src: Mt,
855
738
  class: "h-12 w-auto"
856
739
  },
857
740
  null,
@@ -860,55 +743,55 @@ function Vt(o, t, a, e, l, u) {
860
743
  )
861
744
  ]))) : n("v-if", !0);
862
745
  }
863
- const ie = /* @__PURE__ */ D(wt, [["render", Vt], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSecuredFooter.vue"]]);
864
- function fe(o = {}) {
865
- const { getUrl: t } = _(), a = U([]), e = U(!1), l = U(null), u = C(
746
+ const pe = /* @__PURE__ */ E(Lt, [["render", Ft], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSecuredFooter.vue"]]);
747
+ function qe(o = {}) {
748
+ const { getUrl: t } = se(), a = q([]), e = q(!1), i = q(null), u = x(
866
749
  () => a.value.filter((m) => m.enabled)
867
750
  ), s = async () => {
868
- e.value = !0, l.value = null;
751
+ e.value = !0, i.value = null;
869
752
  try {
870
- const m = t("oauthProviders"), S = await fetch(m, {
753
+ const m = t("oauthProviders"), y = await fetch(m, {
871
754
  method: "GET",
872
755
  headers: {
873
756
  "Content-Type": "application/json"
874
757
  }
875
758
  });
876
- if (!S.ok) {
877
- const f = await S.json().catch(() => ({}));
878
- throw new Error(f.error?.message || `HTTP ${S.status}: ${S.statusText}`);
759
+ if (!y.ok) {
760
+ const f = await y.json().catch(() => ({}));
761
+ throw new Error(f.error?.message || `HTTP ${y.status}: ${y.statusText}`);
879
762
  }
880
- const p = await S.json();
763
+ const p = await y.json();
881
764
  a.value = p.providers || [];
882
765
  } catch (m) {
883
- const S = m instanceof Error ? m.message : "Failed to fetch OAuth providers";
884
- l.value = S;
766
+ const y = m instanceof Error ? m.message : "Failed to fetch OAuth providers";
767
+ i.value = y;
885
768
  } finally {
886
769
  e.value = !1;
887
770
  }
888
- }, g = async (m, S) => {
889
- const p = { ...o, ...S }, f = new URLSearchParams();
771
+ }, g = async (m, y) => {
772
+ const p = { ...o, ...y }, f = new URLSearchParams();
890
773
  p.redirectUrl && f.append("redirect_url", p.redirectUrl), p.scopes && p.scopes.length > 0 && f.append("scopes", p.scopes.join(","));
891
- const W = f.toString(), N = t("oauthProvider").replace("{provider_id}", m), B = W ? `${N}?${W}` : N;
774
+ const W = f.toString(), M = t("oauthProvider").replace("{provider_id}", m), N = W ? `${M}?${W}` : M;
892
775
  try {
893
- const h = await fetch(B, {
776
+ const k = await fetch(N, {
894
777
  method: "GET",
895
778
  headers: {
896
779
  "Content-Type": "application/json"
897
780
  }
898
781
  });
899
- if (!h.ok) {
900
- const c = await h.json().catch(() => ({}));
901
- throw new Error(c.error?.message || `HTTP ${h.status}: ${h.statusText}`);
782
+ if (!k.ok) {
783
+ const c = await k.json().catch(() => ({}));
784
+ throw new Error(c.error?.message || `HTTP ${k.status}: ${k.statusText}`);
902
785
  }
903
- const v = await h.json();
904
- if (!v.success)
905
- throw new Error(v.error?.message || "Failed to get OAuth auth URL");
906
- return v.data.authUrl;
907
- } catch (h) {
908
- const v = h instanceof Error ? h.message : "Failed to get OAuth auth URL";
909
- throw new Error(v);
786
+ const b = await k.json();
787
+ if (!b.success)
788
+ throw new Error(b.error?.message || "Failed to get OAuth auth URL");
789
+ return b.data.authUrl;
790
+ } catch (k) {
791
+ const b = k instanceof Error ? k.message : "Failed to get OAuth auth URL";
792
+ throw new Error(b);
910
793
  }
911
- }, w = async (m, S) => {
794
+ }, h = async (m, y) => {
912
795
  try {
913
796
  const p = a.value.find((f) => f.id === m);
914
797
  if (!p)
@@ -917,9 +800,9 @@ function fe(o = {}) {
917
800
  throw new Error(`No auth URL configured for provider '${m}'`);
918
801
  window.location.href = p.auth_url;
919
802
  } catch (p) {
920
- throw l.value = p instanceof Error ? p.message : "Failed to redirect to OAuth provider", p;
803
+ throw i.value = p instanceof Error ? p.message : "Failed to redirect to OAuth provider", p;
921
804
  }
922
- }, x = (m) => a.value.find((S) => S.id === m), q = (m) => {
805
+ }, S = (m) => a.value.find((y) => y.id === m), C = (m) => {
923
806
  if (m.iconUrl)
924
807
  return m.iconUrl;
925
808
  switch (m.id.toLowerCase()) {
@@ -937,18 +820,18 @@ function fe(o = {}) {
937
820
  }
938
821
  };
939
822
  return {
940
- providers: C(() => a.value),
823
+ providers: x(() => a.value),
941
824
  enabledProviders: u,
942
- loading: C(() => e.value),
943
- error: C(() => l.value),
825
+ loading: x(() => e.value),
826
+ error: x(() => i.value),
944
827
  fetchProviders: s,
945
828
  getProviderAuthUrl: g,
946
- redirectToProvider: w,
947
- getProviderById: x,
948
- getProviderIcon: q
829
+ redirectToProvider: h,
830
+ getProviderById: S,
831
+ getProviderIcon: C
949
832
  };
950
833
  }
951
- const Ct = /* @__PURE__ */ X({
834
+ const zt = /* @__PURE__ */ Z({
952
835
  __name: "StrandsAuth",
953
836
  props: {
954
837
  mode: { type: String, required: !1, default: "signin" },
@@ -958,60 +841,60 @@ const Ct = /* @__PURE__ */ X({
958
841
  emits: ["success", "error", "forgot-password", "password-reset-sent", "mode-changed"],
959
842
  setup(o, { expose: t, emit: a }) {
960
843
  t();
961
- const e = o, l = a, { getUrl: u, getSupportEmail: s } = _(e.config);
844
+ const e = o, i = a, { getUrl: u, getSupportEmail: s } = se(e.config);
962
845
  console.log("support email:", s());
963
- const { setAuthData: g } = ne(), {
964
- enabledProviders: w,
965
- loading: x,
966
- error: q,
846
+ const { setAuthData: g } = ge(), {
847
+ enabledProviders: h,
848
+ loading: S,
849
+ error: C,
967
850
  fetchProviders: m,
968
- redirectToProvider: S,
851
+ redirectToProvider: y,
969
852
  getProviderIcon: p
970
- } = fe({
853
+ } = qe({
971
854
  redirectUrl: e.redirectUrl
972
855
  });
973
- J(() => {
856
+ re(() => {
974
857
  m().catch((L) => {
975
858
  console.warn("Failed to fetch OAuth providers:", L);
976
859
  });
977
860
  });
978
- const f = C(() => w.value), W = {
979
- async signIn(L, I) {
980
- const b = await fetch(u("signIn"), {
861
+ const f = x(() => h.value), W = {
862
+ async signIn(L, j) {
863
+ const K = await fetch(u("signIn"), {
981
864
  method: "POST",
982
865
  headers: {
983
866
  "Content-Type": "application/json"
984
867
  },
985
- body: JSON.stringify({ email: L, password: I })
868
+ body: JSON.stringify({ email: L, password: j })
986
869
  });
987
- if (!b.ok)
988
- throw b.status === 401 ? new Error("Invalid email or password") : b.status === 403 ? new Error("Please verify your email address before signing in") : new Error(`Sign in failed: ${b.status} ${b.statusText}`);
989
- return await b.json();
870
+ if (!K.ok)
871
+ throw K.status === 401 ? new Error("Invalid email or password") : K.status === 403 ? new Error("Please verify your email address before signing in") : new Error(`Sign in failed: ${K.status} ${K.statusText}`);
872
+ return await K.json();
990
873
  },
991
- async signUp(L, I, b, Q) {
992
- const le = await fetch(u("signUp"), {
874
+ async signUp(L, j, K, we) {
875
+ const ae = await fetch(u("signUp"), {
993
876
  method: "POST",
994
877
  headers: {
995
878
  "Content-Type": "application/json"
996
879
  },
997
- body: JSON.stringify({ email: L, password: I, firstName: b, lastName: Q })
880
+ body: JSON.stringify({ email: L, password: j, firstName: K, lastName: we })
998
881
  });
999
- if (!le.ok) {
1000
- const he = await le.json().catch(() => ({}));
1001
- throw new Error(he.error?.message || `HTTP ${le.status}: ${le.statusText}`);
882
+ if (!ae.ok) {
883
+ const ye = await ae.json().catch(() => ({}));
884
+ throw new Error(ye.error?.message || `HTTP ${ae.status}: ${ae.statusText}`);
1002
885
  }
1003
- return (await le.json()).message;
886
+ return (await ae.json()).message;
1004
887
  },
1005
888
  async requestPasswordReset(L) {
1006
889
  throw new Error("Password reset functionality is not yet implemented in the API. Please contact support.");
1007
890
  }
1008
- }, N = U(e.mode), B = U(!1), h = U(""), v = U(!1), c = G({
891
+ }, M = q(e.mode), N = q(!1), k = q(""), b = q(!1), c = te({
1009
892
  firstName: "",
1010
893
  lastName: "",
1011
894
  email: "",
1012
895
  password: "",
1013
896
  confirmPassword: ""
1014
- }), P = C(() => N.value === "signup"), T = C(() => N.value === "reset-password"), K = C(() => c.password === c.confirmPassword), F = C(() => T.value ? c.email.trim() && !v.value : P.value ? c.email.trim() : c.email.trim() && c.password), M = {
897
+ }), F = x(() => M.value === "signup"), H = x(() => M.value === "reset-password"), Y = x(() => c.password === c.confirmPassword), P = x(() => H.value ? c.email.trim() && !b.value : F.value ? c.email.trim() : c.email.trim() && c.password), z = {
1015
898
  weak: {
1016
899
  label: "Weak",
1017
900
  color: "border-red-300",
@@ -1033,108 +916,108 @@ const Ct = /* @__PURE__ */ X({
1033
916
  textColor: "text-emerald-600",
1034
917
  width: 100
1035
918
  }
1036
- }, j = (L) => {
1037
- let I = 0;
1038
- L.length >= 8 && (I += 1), L.length >= 12 && (I += 1), /[a-z]/.test(L) && (I += 1), /[A-Z]/.test(L) && (I += 1), /[0-9]/.test(L) && (I += 1), /[^A-Za-z0-9]/.test(L) && (I += 1);
1039
- const b = I <= 2 ? M.weak : I <= 4 ? M.medium : M.strong;
1040
- return { score: I, ...b };
1041
- }, H = async () => {
1042
- B.value = !0, h.value = "";
919
+ }, I = (L) => {
920
+ let j = 0;
921
+ L.length >= 8 && (j += 1), L.length >= 12 && (j += 1), /[a-z]/.test(L) && (j += 1), /[A-Z]/.test(L) && (j += 1), /[0-9]/.test(L) && (j += 1), /[^A-Za-z0-9]/.test(L) && (j += 1);
922
+ const K = j <= 2 ? z.weak : j <= 4 ? z.medium : z.strong;
923
+ return { score: j, ...K };
924
+ }, D = async () => {
925
+ N.value = !0, k.value = "";
1043
926
  try {
1044
- if (T.value)
1045
- await W.requestPasswordReset(c.email), v.value = !0, l("password-reset-sent", c.email);
1046
- else if (P.value) {
927
+ if (H.value)
928
+ await W.requestPasswordReset(c.email), b.value = !0, i("password-reset-sent", c.email);
929
+ else if (F.value) {
1047
930
  const L = await W.signUp(
1048
931
  c.email,
1049
932
  c.password,
1050
933
  c.firstName,
1051
934
  c.lastName
1052
935
  );
1053
- l("success", L.user);
936
+ i("success", L.user);
1054
937
  } else {
1055
938
  const L = await W.signIn(c.email, c.password);
1056
- g(L), l("success", L.user);
939
+ g(L), i("success", L.user);
1057
940
  }
1058
941
  } catch (L) {
1059
- const I = L instanceof Error ? L.message : "An unexpected error occurred";
1060
- h.value = I, l("error", I);
942
+ const j = L instanceof Error ? L.message : "An unexpected error occurred";
943
+ k.value = j, i("error", j);
1061
944
  } finally {
1062
- B.value = !1;
945
+ N.value = !1;
1063
946
  }
1064
- }, re = async (L) => {
947
+ }, X = async (L) => {
1065
948
  try {
1066
- await S(L, {
949
+ await y(L, {
1067
950
  redirectUrl: e.redirectUrl
1068
951
  });
1069
- } catch (I) {
1070
- const b = I instanceof Error ? I.message : `Failed to ${P.value ? "sign up" : "sign in"} with ${L}`;
1071
- h.value = b, l("error", b);
952
+ } catch (j) {
953
+ const K = j instanceof Error ? j.message : `Failed to ${F.value ? "sign up" : "sign in"} with ${L}`;
954
+ k.value = K, i("error", K);
1072
955
  }
1073
956
  };
1074
- se(() => e.mode, (L) => {
1075
- N.value = L;
1076
- }), se(N, (L) => {
1077
- h.value = "", v.value = !1, c.firstName = "", c.lastName = "", c.email = "", c.password = "", c.confirmPassword = "", l("mode-changed", L);
957
+ me(() => e.mode, (L) => {
958
+ M.value = L;
959
+ }), me(M, (L) => {
960
+ k.value = "", b.value = !1, c.firstName = "", c.lastName = "", c.email = "", c.password = "", c.confirmPassword = "", i("mode-changed", L);
1078
961
  });
1079
- const ue = { props: e, emit: l, getUrl: u, getSupportEmail: s, setAuthData: g, enabledProviders: w, oauthLoading: x, oauthError: q, fetchProviders: m, redirectToProvider: S, getProviderIcon: p, displayProviders: f, authApi: W, currentMode: N, loading: B, error: h, isPasswordResetSubmitted: v, form: c, isSignUp: P, isPasswordReset: T, isPasswordMatch: K, isFormValid: F, PASSWORD_STRENGTH_CONFIGS: M, getPasswordStrength: j, handleAuth: H, handleOAuthAuth: re, get StrandsUiCard() {
1080
- return oe;
962
+ const O = { props: e, emit: i, getUrl: u, getSupportEmail: s, setAuthData: g, enabledProviders: h, oauthLoading: S, oauthError: C, fetchProviders: m, redirectToProvider: y, getProviderIcon: p, displayProviders: f, authApi: W, currentMode: M, loading: N, error: k, isPasswordResetSubmitted: b, form: c, isSignUp: F, isPasswordReset: H, isPasswordMatch: Y, isFormValid: P, PASSWORD_STRENGTH_CONFIGS: z, getPasswordStrength: I, handleAuth: D, handleOAuthAuth: X, get StrandsUiCard() {
963
+ return ve;
1081
964
  }, get StrandsUiButton() {
1082
- return $;
965
+ return le;
1083
966
  }, get StrandsUiInput() {
1084
- return ee;
967
+ return Ae;
1085
968
  }, get StrandsUiAlert() {
1086
- return de;
969
+ return he;
1087
970
  }, get StrandsUiLink() {
1088
- return te;
971
+ return de;
1089
972
  }, get StrandsUiTabs() {
1090
- return be;
1091
- }, StrandsSecuredFooter: ie };
1092
- return Object.defineProperty(ue, "__isScriptSetup", { enumerable: !1, value: !0 }), ue;
973
+ return Le;
974
+ }, StrandsSecuredFooter: pe };
975
+ return Object.defineProperty(O, "__isScriptSetup", { enumerable: !1, value: !0 }), O;
1093
976
  }
1094
- }), xt = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, Ut = { class: "text-center mb-8" }, Wt = {
977
+ }), Bt = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, It = { class: "text-center mb-8" }, Xt = {
1095
978
  key: 0,
1096
979
  class: "mb-8"
1097
- }, kt = {
980
+ }, Dt = {
1098
981
  key: 0,
1099
982
  class: "space-y-3 mb-6"
1100
- }, Nt = { class: "w-5 h-5 flex items-center justify-center" }, Lt = {
983
+ }, jt = { class: "w-5 h-5 flex items-center justify-center" }, Tt = {
1101
984
  key: 0,
1102
985
  class: "w-5 h-5"
1103
- }, Mt = ["src", "alt"], Pt = {
986
+ }, Zt = ["src", "alt"], Et = {
1104
987
  key: 2,
1105
988
  class: "w-5 h-5 fill-current",
1106
989
  viewBox: "0 0 24 24"
1107
- }, It = { class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center" }, zt = { class: "text-xs font-semibold text-neutral-600" }, Bt = { class: "font-medium" }, Ft = {
990
+ }, Yt = { class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center" }, Ot = { class: "text-xs font-semibold text-neutral-600" }, Kt = { class: "font-medium" }, Qt = {
1108
991
  key: 0,
1109
992
  class: "divider-with-text"
1110
- }, Xt = { class: "divider-text" }, Dt = {
993
+ }, Ht = { class: "divider-text" }, Rt = {
1111
994
  key: 0,
1112
995
  class: "mb-4"
1113
- }, jt = { class: "flex items-center justify-between mb-2" }, Zt = {
996
+ }, Gt = { class: "flex items-center justify-between mb-2" }, Jt = {
1114
997
  key: 0,
1115
998
  class: "mt-8 text-center"
1116
- }, Tt = {
999
+ }, _t = {
1117
1000
  key: 0,
1118
1001
  class: "mt-6 text-center"
1119
- }, Yt = { class: "text-neutral-400 text-sm" };
1120
- function Ot(o, t, a, e, l, u) {
1121
- return i(), A("div", xt, [
1002
+ }, $t = { class: "text-neutral-400 text-sm" };
1003
+ function er(o, t, a, e, i, u) {
1004
+ return l(), A("div", Bt, [
1122
1005
  d(e.StrandsUiCard, { variant: "modern" }, {
1123
- default: y(() => [
1006
+ default: v(() => [
1124
1007
  n(" Header "),
1125
- r("div", Ut, [
1126
- d(R, {
1008
+ r("div", It, [
1009
+ d(ee, {
1127
1010
  name: "fade",
1128
1011
  mode: "out-in"
1129
1012
  }, {
1130
- default: y(() => [
1131
- (i(), A(
1013
+ default: v(() => [
1014
+ (l(), A(
1132
1015
  "h1",
1133
1016
  {
1134
1017
  key: e.currentMode,
1135
1018
  class: "text-3xl font-bold text-gradient mb-2"
1136
1019
  },
1137
- k(e.isPasswordReset ? "Reset password" : e.isSignUp ? "Create account" : "Welcome back"),
1020
+ U(e.isPasswordReset ? "Reset password" : e.isSignUp ? "Create account" : "Welcome back"),
1138
1021
  1
1139
1022
  /* TEXT */
1140
1023
  ))
@@ -1142,18 +1025,18 @@ function Ot(o, t, a, e, l, u) {
1142
1025
  _: 1
1143
1026
  /* STABLE */
1144
1027
  }),
1145
- d(R, {
1028
+ d(ee, {
1146
1029
  name: "fade",
1147
1030
  mode: "out-in"
1148
1031
  }, {
1149
- default: y(() => [
1150
- (i(), A(
1032
+ default: v(() => [
1033
+ (l(), A(
1151
1034
  "p",
1152
1035
  {
1153
1036
  key: e.currentMode,
1154
1037
  class: "text-neutral-600"
1155
1038
  },
1156
- k(e.isPasswordReset ? "Enter your email address and we'll send you a link to reset your password" : e.isSignUp ? "We'll send you a magic link to get started" : "Sign in to your account to continue"),
1039
+ U(e.isPasswordReset ? "Enter your email address and we'll send you a link to reset your password" : e.isSignUp ? "We'll send you a magic link to get started" : "Sign in to your account to continue"),
1157
1040
  1
1158
1041
  /* TEXT */
1159
1042
  ))
@@ -1163,9 +1046,9 @@ function Ot(o, t, a, e, l, u) {
1163
1046
  })
1164
1047
  ]),
1165
1048
  n(" Tab Switcher (only show for signin/signup) "),
1166
- d(R, { name: "height-fade" }, {
1167
- default: y(() => [
1168
- e.isPasswordReset ? n("v-if", !0) : (i(), A("div", Wt, [
1049
+ d(ee, { name: "height-fade" }, {
1050
+ default: v(() => [
1051
+ e.isPasswordReset ? n("v-if", !0) : (l(), A("div", Xt, [
1169
1052
  d(e.StrandsUiTabs, {
1170
1053
  modelValue: e.currentMode,
1171
1054
  "onUpdate:modelValue": t[0] || (t[0] = (s) => e.currentMode = s),
@@ -1180,13 +1063,13 @@ function Ot(o, t, a, e, l, u) {
1180
1063
  /* STABLE */
1181
1064
  }),
1182
1065
  n(" OAuth Providers (not shown for password reset) "),
1183
- d(R, { name: "height-fade" }, {
1184
- default: y(() => [
1185
- !e.isPasswordReset && e.displayProviders?.length ? (i(), A("div", kt, [
1186
- (i(!0), A(
1187
- O,
1066
+ d(ee, { name: "height-fade" }, {
1067
+ default: v(() => [
1068
+ !e.isPasswordReset && e.displayProviders?.length ? (l(), A("div", Dt, [
1069
+ (l(!0), A(
1070
+ _,
1188
1071
  null,
1189
- Ae(e.displayProviders, (s) => (i(), E(e.StrandsUiButton, {
1072
+ be(e.displayProviders, (s) => (l(), $(e.StrandsUiButton, {
1190
1073
  key: s.id,
1191
1074
  variant: "outline",
1192
1075
  "full-width": "",
@@ -1194,17 +1077,17 @@ function Ot(o, t, a, e, l, u) {
1194
1077
  onClick: (g) => e.handleOAuthAuth(s.id),
1195
1078
  class: "btn-oauth group"
1196
1079
  }, {
1197
- default: y(() => [
1198
- r("div", Nt, [
1080
+ default: v(() => [
1081
+ r("div", jt, [
1199
1082
  n(" Dynamic provider icons "),
1200
- s.icon || s.iconUrl ? (i(), A("div", Lt, [
1083
+ s.icon || s.iconUrl ? (l(), A("div", Tt, [
1201
1084
  r("img", {
1202
1085
  src: s.icon || s.iconUrl,
1203
1086
  alt: `${s.displayName || s.name} icon`,
1204
1087
  class: "w-5 h-5"
1205
- }, null, 8, Mt)
1206
- ])) : s.id === "google" ? (i(), A(
1207
- O,
1088
+ }, null, 8, Zt)
1089
+ ])) : s.id === "google" ? (l(), A(
1090
+ _,
1208
1091
  { key: 1 },
1209
1092
  [
1210
1093
  n(" Built-in SVG icons for common providers "),
@@ -1238,7 +1121,7 @@ function Ot(o, t, a, e, l, u) {
1238
1121
  ],
1239
1122
  2112
1240
1123
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
1241
- )) : s.id === "github" ? (i(), A("svg", Pt, [...t[7] || (t[7] = [
1124
+ )) : s.id === "github" ? (l(), A("svg", Et, [...t[7] || (t[7] = [
1242
1125
  r(
1243
1126
  "path",
1244
1127
  { d: "M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" },
@@ -1246,16 +1129,16 @@ function Ot(o, t, a, e, l, u) {
1246
1129
  -1
1247
1130
  /* CACHED */
1248
1131
  )
1249
- ])])) : (i(), A(
1250
- O,
1132
+ ])])) : (l(), A(
1133
+ _,
1251
1134
  { key: 3 },
1252
1135
  [
1253
1136
  n(" Generic icon for other providers "),
1254
- r("div", It, [
1137
+ r("div", Yt, [
1255
1138
  r(
1256
1139
  "span",
1257
- zt,
1258
- k((s.displayName || s.name).charAt(0).toUpperCase()),
1140
+ Ot,
1141
+ U((s.displayName || s.name).charAt(0).toUpperCase()),
1259
1142
  1
1260
1143
  /* TEXT */
1261
1144
  )
@@ -1267,8 +1150,8 @@ function Ot(o, t, a, e, l, u) {
1267
1150
  ]),
1268
1151
  r(
1269
1152
  "span",
1270
- Bt,
1271
- " Continue with " + k(s.displayName || s.name.charAt(0).toUpperCase() + s.name.slice(1)),
1153
+ Kt,
1154
+ " Continue with " + U(s.displayName || s.name.charAt(0).toUpperCase() + s.name.slice(1)),
1272
1155
  1
1273
1156
  /* TEXT */
1274
1157
  )
@@ -1285,13 +1168,13 @@ function Ot(o, t, a, e, l, u) {
1285
1168
  /* STABLE */
1286
1169
  }),
1287
1170
  n(" Divider (not shown for password reset) "),
1288
- d(R, { name: "height-fade" }, {
1289
- default: y(() => [
1290
- !e.isPasswordReset && e.displayProviders?.length ? (i(), A("div", Ft, [
1171
+ d(ee, { name: "height-fade" }, {
1172
+ default: v(() => [
1173
+ !e.isPasswordReset && e.displayProviders?.length ? (l(), A("div", Qt, [
1291
1174
  r(
1292
1175
  "span",
1293
- Xt,
1294
- "Or " + k(e.isSignUp ? "create account" : "sign in") + " with email",
1176
+ Ht,
1177
+ "Or " + U(e.isSignUp ? "create account" : "sign in") + " with email",
1295
1178
  1
1296
1179
  /* TEXT */
1297
1180
  )
@@ -1304,7 +1187,7 @@ function Ot(o, t, a, e, l, u) {
1304
1187
  r(
1305
1188
  "form",
1306
1189
  {
1307
- onSubmit: ae(e.handleAuth, ["prevent"]),
1190
+ onSubmit: fe(e.handleAuth, ["prevent"]),
1308
1191
  class: "space-y-6"
1309
1192
  },
1310
1193
  [
@@ -1313,7 +1196,7 @@ function Ot(o, t, a, e, l, u) {
1313
1196
  r(
1314
1197
  "div",
1315
1198
  {
1316
- class: Y(["email-field-spacing", !e.isPasswordReset && !e.isSignUp ? "has-password" : "no-password"])
1199
+ class: J(["email-field-spacing", !e.isPasswordReset && !e.isSignUp ? "has-password" : "no-password"])
1317
1200
  },
1318
1201
  [
1319
1202
  d(e.StrandsUiInput, {
@@ -1331,10 +1214,10 @@ function Ot(o, t, a, e, l, u) {
1331
1214
  /* CLASS */
1332
1215
  ),
1333
1216
  n(" Password (Sign In Only) "),
1334
- d(R, { name: "password-fade" }, {
1335
- default: y(() => [
1336
- !e.isPasswordReset && !e.isSignUp ? (i(), A("div", Dt, [
1337
- r("div", jt, [
1217
+ d(ee, { name: "password-fade" }, {
1218
+ default: v(() => [
1219
+ !e.isPasswordReset && !e.isSignUp ? (l(), A("div", Rt, [
1220
+ r("div", Gt, [
1338
1221
  t[9] || (t[9] = r(
1339
1222
  "span",
1340
1223
  { class: "text-sm font-medium text-gray-700" },
@@ -1347,7 +1230,7 @@ function Ot(o, t, a, e, l, u) {
1347
1230
  size: "sm",
1348
1231
  onClick: t[2] || (t[2] = (s) => e.currentMode = "reset-password")
1349
1232
  }, {
1350
- default: y(() => t[8] || (t[8] = [
1233
+ default: v(() => t[8] || (t[8] = [
1351
1234
  V(
1352
1235
  " Forgot password? ",
1353
1236
  -1
@@ -1381,9 +1264,9 @@ function Ot(o, t, a, e, l, u) {
1381
1264
  loading: e.loading,
1382
1265
  "loading-text": e.isPasswordReset ? "Sending link..." : e.isSignUp ? "Sending magic link..." : "Signing in..."
1383
1266
  }, {
1384
- default: y(() => [
1267
+ default: v(() => [
1385
1268
  V(
1386
- k(e.isPasswordReset ? e.isPasswordResetSubmitted ? "Link sent!" : "Send reset link" : e.isSignUp ? "Send magic link" : "Sign in"),
1269
+ U(e.isPasswordReset ? e.isPasswordResetSubmitted ? "Link sent!" : "Send reset link" : e.isSignUp ? "Send magic link" : "Sign in"),
1387
1270
  1
1388
1271
  /* TEXT */
1389
1272
  )
@@ -1396,12 +1279,12 @@ function Ot(o, t, a, e, l, u) {
1396
1279
  /* NEED_HYDRATION */
1397
1280
  ),
1398
1281
  n(" Success Message for Password Reset "),
1399
- d(R, {
1282
+ d(ee, {
1400
1283
  name: "expand",
1401
1284
  mode: "out-in"
1402
1285
  }, {
1403
- default: y(() => [
1404
- e.isPasswordReset && e.isPasswordResetSubmitted ? (i(), E(e.StrandsUiAlert, {
1286
+ default: v(() => [
1287
+ e.isPasswordReset && e.isPasswordResetSubmitted ? (l(), $(e.StrandsUiAlert, {
1405
1288
  key: "reset-success",
1406
1289
  variant: "success",
1407
1290
  message: `Check your email - We've sent a password reset link to ${e.form.email}`,
@@ -1412,14 +1295,14 @@ function Ot(o, t, a, e, l, u) {
1412
1295
  /* STABLE */
1413
1296
  }),
1414
1297
  n(" Back to Sign In (Password Reset Only) "),
1415
- d(R, { name: "height-fade" }, {
1416
- default: y(() => [
1417
- e.isPasswordReset ? (i(), A("div", Zt, [
1298
+ d(ee, { name: "height-fade" }, {
1299
+ default: v(() => [
1300
+ e.isPasswordReset ? (l(), A("div", Jt, [
1418
1301
  d(e.StrandsUiLink, {
1419
1302
  onClick: t[4] || (t[4] = (s) => e.currentMode = "signin"),
1420
1303
  class: "inline-flex items-center gap-2"
1421
1304
  }, {
1422
- default: y(() => t[10] || (t[10] = [
1305
+ default: v(() => t[10] || (t[10] = [
1423
1306
  r(
1424
1307
  "svg",
1425
1308
  {
@@ -1454,7 +1337,7 @@ function Ot(o, t, a, e, l, u) {
1454
1337
  /* STABLE */
1455
1338
  }),
1456
1339
  n(" Error Alert "),
1457
- e.error ? (i(), E(e.StrandsUiAlert, {
1340
+ e.error ? (l(), $(e.StrandsUiAlert, {
1458
1341
  key: 0,
1459
1342
  variant: "error",
1460
1343
  message: e.error,
@@ -1463,10 +1346,10 @@ function Ot(o, t, a, e, l, u) {
1463
1346
  onDismiss: t[5] || (t[5] = (s) => e.error = "")
1464
1347
  }, null, 8, ["message"])) : n("v-if", !0),
1465
1348
  n(" Need help "),
1466
- d(R, { name: "support-fade" }, {
1467
- default: y(() => [
1468
- e.getSupportEmail() ? (i(), A("div", Tt, [
1469
- r("p", Yt, [
1349
+ d(ee, { name: "support-fade" }, {
1350
+ default: v(() => [
1351
+ e.getSupportEmail() ? (l(), A("div", _t, [
1352
+ r("p", $t, [
1470
1353
  t[12] || (t[12] = V(
1471
1354
  " Need help? ",
1472
1355
  -1
@@ -1476,7 +1359,7 @@ function Ot(o, t, a, e, l, u) {
1476
1359
  variant: "primary",
1477
1360
  href: `mailto:${e.getSupportEmail()}`
1478
1361
  }, {
1479
- default: y(() => t[11] || (t[11] = [
1362
+ default: v(() => t[11] || (t[11] = [
1480
1363
  V(
1481
1364
  " Contact Support ",
1482
1365
  -1
@@ -1502,7 +1385,7 @@ function Ot(o, t, a, e, l, u) {
1502
1385
  })
1503
1386
  ]);
1504
1387
  }
1505
- const na = /* @__PURE__ */ D(Ct, [["render", Ot], ["__scopeId", "data-v-4583e1b6"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsAuth.vue"]]), Et = /* @__PURE__ */ X({
1388
+ const Ua = /* @__PURE__ */ E(zt, [["render", er], ["__scopeId", "data-v-4583e1b6"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsAuth.vue"]]), tr = /* @__PURE__ */ Z({
1506
1389
  __name: "StrandsSignIn",
1507
1390
  props: {
1508
1391
  redirectUrl: { type: String, required: !1, default: "/" },
@@ -1512,28 +1395,28 @@ const na = /* @__PURE__ */ D(Ct, [["render", Ot], ["__scopeId", "data-v-4583e1b6
1512
1395
  emits: ["success", "error", "forgot-password", "switch-to-signup"],
1513
1396
  setup(o, { expose: t, emit: a }) {
1514
1397
  t();
1515
- const e = o, l = a, { getUrl: u, getSupportEmail: s } = _(e.config), { setAuthData: g } = ne(), {
1516
- enabledProviders: w,
1517
- loading: x,
1518
- error: q,
1398
+ const e = o, i = a, { getUrl: u, getSupportEmail: s } = se(e.config), { setAuthData: g } = ge(), {
1399
+ enabledProviders: h,
1400
+ loading: S,
1401
+ error: C,
1519
1402
  fetchProviders: m,
1520
- redirectToProvider: S
1521
- } = fe({
1403
+ redirectToProvider: y
1404
+ } = qe({
1522
1405
  redirectUrl: e.redirectUrl,
1523
1406
  scopes: e.oauthScopes
1524
1407
  });
1525
- J(() => {
1526
- m().catch((v) => {
1527
- console.warn("Failed to fetch OAuth providers:", v);
1408
+ re(() => {
1409
+ m().catch((b) => {
1410
+ console.warn("Failed to fetch OAuth providers:", b);
1528
1411
  });
1529
1412
  });
1530
- const p = U(!1), f = U(""), W = G({
1413
+ const p = q(!1), f = q(""), W = te({
1531
1414
  email: "",
1532
1415
  password: ""
1533
- }), h = { props: e, emit: l, getUrl: u, getSupportEmail: s, setAuthData: g, enabledProviders: w, oauthLoading: x, oauthError: q, fetchProviders: m, redirectToProvider: S, loading: p, error: f, form: W, handleSignIn: async () => {
1416
+ }), k = { props: e, emit: i, getUrl: u, getSupportEmail: s, setAuthData: g, enabledProviders: h, oauthLoading: S, oauthError: C, fetchProviders: m, redirectToProvider: y, loading: p, error: f, form: W, handleSignIn: async () => {
1534
1417
  p.value = !0, f.value = "";
1535
1418
  try {
1536
- const v = await fetch(u("signIn"), {
1419
+ const b = await fetch(u("signIn"), {
1537
1420
  method: "POST",
1538
1421
  headers: {
1539
1422
  "Content-Type": "application/json"
@@ -1543,63 +1426,63 @@ const na = /* @__PURE__ */ D(Ct, [["render", Ot], ["__scopeId", "data-v-4583e1b6
1543
1426
  password: W.password
1544
1427
  })
1545
1428
  });
1546
- if (!v.ok)
1547
- throw v.status === 401 ? new Error("Invalid email or password") : v.status === 403 ? new Error("Please verify your email address before signing in") : new Error(`Sign in failed: ${v.status} ${v.statusText}`);
1548
- const c = await v.json();
1549
- g(c), l("success", c.user);
1550
- } catch (v) {
1551
- const c = v instanceof Error ? v.message : "Sign in failed";
1552
- f.value = c, l("error", c);
1429
+ if (!b.ok)
1430
+ throw b.status === 401 ? new Error("Invalid email or password") : b.status === 403 ? new Error("Please verify your email address before signing in") : new Error(`Sign in failed: ${b.status} ${b.statusText}`);
1431
+ const c = await b.json();
1432
+ g(c), i("success", c.user);
1433
+ } catch (b) {
1434
+ const c = b instanceof Error ? b.message : "Sign in failed";
1435
+ f.value = c, i("error", c);
1553
1436
  } finally {
1554
1437
  p.value = !1;
1555
1438
  }
1556
- }, handleOAuthSignIn: async (v) => {
1439
+ }, handleOAuthSignIn: async (b) => {
1557
1440
  try {
1558
- await S(v, {
1441
+ await y(b, {
1559
1442
  redirectUrl: e.redirectUrl,
1560
1443
  scopes: e.oauthScopes
1561
1444
  });
1562
1445
  } catch (c) {
1563
- const P = c instanceof Error ? c.message : `Failed to sign in with ${v}`;
1564
- f.value = P, l("error", P);
1446
+ const F = c instanceof Error ? c.message : `Failed to sign in with ${b}`;
1447
+ f.value = F, i("error", F);
1565
1448
  }
1566
1449
  }, get StrandsUiCard() {
1567
- return oe;
1450
+ return ve;
1568
1451
  }, get StrandsUiButton() {
1569
- return $;
1452
+ return le;
1570
1453
  }, get StrandsUiInput() {
1571
- return ee;
1454
+ return Ae;
1572
1455
  }, get StrandsUiAlert() {
1573
- return de;
1456
+ return he;
1574
1457
  }, get StrandsUiLink() {
1575
- return te;
1576
- }, StrandsSecuredFooter: ie };
1577
- return Object.defineProperty(h, "__isScriptSetup", { enumerable: !1, value: !0 }), h;
1458
+ return de;
1459
+ }, StrandsSecuredFooter: pe };
1460
+ return Object.defineProperty(k, "__isScriptSetup", { enumerable: !1, value: !0 }), k;
1578
1461
  }
1579
- }), Qt = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, Kt = {
1462
+ }), rr = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, sr = {
1580
1463
  key: 0,
1581
1464
  class: "space-y-3 mb-6"
1582
- }, Ht = { class: "w-5 h-5 flex items-center justify-center" }, Rt = {
1465
+ }, ar = { class: "w-5 h-5 flex items-center justify-center" }, nr = {
1583
1466
  key: 0,
1584
1467
  class: "w-5 h-5"
1585
- }, Gt = ["src", "alt"], Jt = {
1468
+ }, or = ["src", "alt"], ir = {
1586
1469
  key: 2,
1587
1470
  class: "w-5 h-5 fill-current",
1588
1471
  viewBox: "0 0 24 24"
1589
- }, _t = {
1472
+ }, lr = {
1590
1473
  key: 3,
1591
1474
  class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center"
1592
- }, $t = { class: "text-xs font-semibold text-neutral-600" }, er = { class: "font-medium" }, tr = {
1475
+ }, Ar = { class: "text-xs font-semibold text-neutral-600" }, dr = { class: "font-medium" }, ur = {
1593
1476
  key: 1,
1594
1477
  class: "divider-with-text"
1595
- }, rr = { class: "space-y-4" }, sr = { class: "flex items-center justify-between mb-2" }, ar = { class: "mt-8 text-center" }, nr = { class: "text-sm text-neutral-600" }, or = {
1478
+ }, cr = { class: "space-y-4" }, mr = { class: "flex items-center justify-between mb-2" }, fr = { class: "mt-8 text-center" }, gr = { class: "text-sm text-neutral-600" }, vr = {
1596
1479
  key: 3,
1597
1480
  class: "mt-6 text-center"
1598
- }, ir = { class: "text-neutral-400 text-sm" };
1599
- function lr(o, t, a, e, l, u) {
1600
- return i(), A("div", Qt, [
1481
+ }, pr = { class: "text-neutral-400 text-sm" };
1482
+ function wr(o, t, a, e, i, u) {
1483
+ return l(), A("div", rr, [
1601
1484
  d(e.StrandsUiCard, { variant: "modern" }, {
1602
- default: y(() => [
1485
+ default: v(() => [
1603
1486
  n(" Header "),
1604
1487
  t[15] || (t[15] = r(
1605
1488
  "div",
@@ -1612,11 +1495,11 @@ function lr(o, t, a, e, l, u) {
1612
1495
  /* CACHED */
1613
1496
  )),
1614
1497
  n(" OAuth Providers "),
1615
- e.enabledProviders?.length ? (i(), A("div", Kt, [
1616
- (i(!0), A(
1617
- O,
1498
+ e.enabledProviders?.length ? (l(), A("div", sr, [
1499
+ (l(!0), A(
1500
+ _,
1618
1501
  null,
1619
- Ae(e.enabledProviders, (s) => (i(), E(e.StrandsUiButton, {
1502
+ be(e.enabledProviders, (s) => (l(), $(e.StrandsUiButton, {
1620
1503
  key: s.id,
1621
1504
  variant: "outline",
1622
1505
  "full-width": "",
@@ -1624,17 +1507,17 @@ function lr(o, t, a, e, l, u) {
1624
1507
  onClick: (g) => e.handleOAuthSignIn(s.id),
1625
1508
  class: "btn-oauth group"
1626
1509
  }, {
1627
- default: y(() => [
1628
- r("div", Ht, [
1510
+ default: v(() => [
1511
+ r("div", ar, [
1629
1512
  n(" Dynamic provider icons "),
1630
- s.icon || s.iconUrl ? (i(), A("div", Rt, [
1513
+ s.icon || s.iconUrl ? (l(), A("div", nr, [
1631
1514
  r("img", {
1632
1515
  src: s.icon || s.iconUrl,
1633
1516
  alt: `${s.displayName || s.name} icon`,
1634
1517
  class: "w-5 h-5"
1635
- }, null, 8, Gt)
1636
- ])) : s.id === "google" ? (i(), A(
1637
- O,
1518
+ }, null, 8, or)
1519
+ ])) : s.id === "google" ? (l(), A(
1520
+ _,
1638
1521
  { key: 1 },
1639
1522
  [
1640
1523
  n(" Built-in SVG icons for common providers "),
@@ -1668,7 +1551,7 @@ function lr(o, t, a, e, l, u) {
1668
1551
  ],
1669
1552
  2112
1670
1553
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
1671
- )) : s.id === "github" ? (i(), A("svg", Jt, [...t[6] || (t[6] = [
1554
+ )) : s.id === "github" ? (l(), A("svg", ir, [...t[6] || (t[6] = [
1672
1555
  r(
1673
1556
  "path",
1674
1557
  { d: "M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" },
@@ -1676,11 +1559,11 @@ function lr(o, t, a, e, l, u) {
1676
1559
  -1
1677
1560
  /* CACHED */
1678
1561
  )
1679
- ])])) : (i(), A("div", _t, [
1562
+ ])])) : (l(), A("div", lr, [
1680
1563
  r(
1681
1564
  "span",
1682
- $t,
1683
- k((s.displayName || s.name).charAt(0).toUpperCase()),
1565
+ Ar,
1566
+ U((s.displayName || s.name).charAt(0).toUpperCase()),
1684
1567
  1
1685
1568
  /* TEXT */
1686
1569
  )
@@ -1688,8 +1571,8 @@ function lr(o, t, a, e, l, u) {
1688
1571
  ]),
1689
1572
  r(
1690
1573
  "span",
1691
- er,
1692
- "Continue with " + k(s.displayName || s.name),
1574
+ dr,
1575
+ "Continue with " + U(s.displayName || s.name),
1693
1576
  1
1694
1577
  /* TEXT */
1695
1578
  )
@@ -1702,7 +1585,7 @@ function lr(o, t, a, e, l, u) {
1702
1585
  ))
1703
1586
  ])) : n("v-if", !0),
1704
1587
  n(" Divider "),
1705
- e.enabledProviders?.length ? (i(), A("div", tr, t[7] || (t[7] = [
1588
+ e.enabledProviders?.length ? (l(), A("div", ur, t[7] || (t[7] = [
1706
1589
  r(
1707
1590
  "span",
1708
1591
  { class: "divider-text" },
@@ -1715,11 +1598,11 @@ function lr(o, t, a, e, l, u) {
1715
1598
  r(
1716
1599
  "form",
1717
1600
  {
1718
- onSubmit: ae(e.handleSignIn, ["prevent"]),
1601
+ onSubmit: fe(e.handleSignIn, ["prevent"]),
1719
1602
  class: "space-y-6"
1720
1603
  },
1721
1604
  [
1722
- r("div", rr, [
1605
+ r("div", cr, [
1723
1606
  d(e.StrandsUiInput, {
1724
1607
  id: "email",
1725
1608
  modelValue: e.form.email,
@@ -1732,7 +1615,7 @@ function lr(o, t, a, e, l, u) {
1732
1615
  error: e.error ? "Invalid email or password" : void 0
1733
1616
  }, null, 8, ["modelValue", "error"]),
1734
1617
  r("div", null, [
1735
- r("div", sr, [
1618
+ r("div", mr, [
1736
1619
  t[9] || (t[9] = r(
1737
1620
  "span",
1738
1621
  { class: "text-sm font-medium text-neutral-700" },
@@ -1744,7 +1627,7 @@ function lr(o, t, a, e, l, u) {
1744
1627
  onClick: t[1] || (t[1] = (s) => o.$emit("forgot-password")),
1745
1628
  class: "text-sm"
1746
1629
  }, {
1747
- default: y(() => t[8] || (t[8] = [
1630
+ default: v(() => t[8] || (t[8] = [
1748
1631
  V(
1749
1632
  " Forgot password? ",
1750
1633
  -1
@@ -1775,7 +1658,7 @@ function lr(o, t, a, e, l, u) {
1775
1658
  loading: e.loading,
1776
1659
  "loading-text": "Signing in..."
1777
1660
  }, {
1778
- default: y(() => t[10] || (t[10] = [
1661
+ default: v(() => t[10] || (t[10] = [
1779
1662
  V(
1780
1663
  " Sign in ",
1781
1664
  -1
@@ -1790,7 +1673,7 @@ function lr(o, t, a, e, l, u) {
1790
1673
  /* NEED_HYDRATION */
1791
1674
  ),
1792
1675
  n(" Error Alert "),
1793
- e.error ? (i(), E(e.StrandsUiAlert, {
1676
+ e.error ? (l(), $(e.StrandsUiAlert, {
1794
1677
  key: 2,
1795
1678
  variant: "error",
1796
1679
  message: e.error,
@@ -1799,8 +1682,8 @@ function lr(o, t, a, e, l, u) {
1799
1682
  onDismiss: t[3] || (t[3] = (s) => e.error = "")
1800
1683
  }, null, 8, ["message"])) : n("v-if", !0),
1801
1684
  n(" Sign up link "),
1802
- r("div", ar, [
1803
- r("p", nr, [
1685
+ r("div", fr, [
1686
+ r("p", gr, [
1804
1687
  t[12] || (t[12] = V(
1805
1688
  " Don't have an account? ",
1806
1689
  -1
@@ -1809,7 +1692,7 @@ function lr(o, t, a, e, l, u) {
1809
1692
  d(e.StrandsUiLink, {
1810
1693
  onClick: t[4] || (t[4] = (s) => o.$emit("switch-to-signup"))
1811
1694
  }, {
1812
- default: y(() => t[11] || (t[11] = [
1695
+ default: v(() => t[11] || (t[11] = [
1813
1696
  V(
1814
1697
  " Sign up ",
1815
1698
  -1
@@ -1822,8 +1705,8 @@ function lr(o, t, a, e, l, u) {
1822
1705
  ])
1823
1706
  ]),
1824
1707
  n(" Need help "),
1825
- e.getSupportEmail() ? (i(), A("div", or, [
1826
- r("p", ir, [
1708
+ e.getSupportEmail() ? (l(), A("div", vr, [
1709
+ r("p", pr, [
1827
1710
  t[14] || (t[14] = V(
1828
1711
  " Need help? ",
1829
1712
  -1
@@ -1833,7 +1716,7 @@ function lr(o, t, a, e, l, u) {
1833
1716
  variant: "primary",
1834
1717
  href: `mailto:${e.getSupportEmail()}`
1835
1718
  }, {
1836
- default: y(() => t[13] || (t[13] = [
1719
+ default: v(() => t[13] || (t[13] = [
1837
1720
  V(
1838
1721
  " Contact Support ",
1839
1722
  -1
@@ -1855,7 +1738,7 @@ function lr(o, t, a, e, l, u) {
1855
1738
  })
1856
1739
  ]);
1857
1740
  }
1858
- const oa = /* @__PURE__ */ D(Et, [["render", lr], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSignIn.vue"]]), Ar = /* @__PURE__ */ X({
1741
+ const Wa = /* @__PURE__ */ E(tr, [["render", wr], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSignIn.vue"]]), hr = /* @__PURE__ */ Z({
1859
1742
  __name: "StrandsSignUp",
1860
1743
  props: {
1861
1744
  redirectUrl: { type: String, required: !1, default: "/" },
@@ -1865,125 +1748,125 @@ const oa = /* @__PURE__ */ D(Et, [["render", lr], ["__file", "/home/runner/work/
1865
1748
  emits: ["success", "error", "switch-to-signin"],
1866
1749
  setup(o, { expose: t, emit: a }) {
1867
1750
  t();
1868
- const e = o, l = a, { getUrl: u, getSupportEmail: s } = _(e.config), {
1751
+ const e = o, i = a, { getUrl: u, getSupportEmail: s } = se(e.config), {
1869
1752
  enabledProviders: g,
1870
- loading: w,
1871
- error: x,
1872
- fetchProviders: q,
1753
+ loading: h,
1754
+ error: S,
1755
+ fetchProviders: C,
1873
1756
  redirectToProvider: m
1874
- } = fe({
1757
+ } = qe({
1875
1758
  redirectUrl: e.redirectUrl,
1876
1759
  scopes: e.oauthScopes
1877
1760
  });
1878
- J(() => {
1879
- q().catch((F) => {
1880
- console.warn("Failed to fetch OAuth providers:", F);
1761
+ re(() => {
1762
+ C().catch((P) => {
1763
+ console.warn("Failed to fetch OAuth providers:", P);
1881
1764
  });
1882
1765
  });
1883
- const S = U(!1), p = U(""), f = U(!1), W = U(""), N = U("Magic Link Sent!"), B = U(""), h = G({
1766
+ const y = q(!1), p = q(""), f = q(!1), W = q(""), M = q("Magic Link Sent!"), N = q(""), k = te({
1884
1767
  email: ""
1885
- }), v = C(() => h.email.trim() && h.email.includes("@")), K = { props: e, emit: l, getUrl: u, getSupportEmail: s, enabledProviders: g, oauthLoading: w, oauthError: x, fetchProviders: q, redirectToProvider: m, loading: S, error: p, signupSuccess: f, successMessage: W, successTitle: N, successEmail: B, form: h, isFormValid: v, handleSignUp: async () => {
1886
- S.value = !0, p.value = "";
1768
+ }), b = x(() => k.email.trim() && k.email.includes("@")), Y = { props: e, emit: i, getUrl: u, getSupportEmail: s, enabledProviders: g, oauthLoading: h, oauthError: S, fetchProviders: C, redirectToProvider: m, loading: y, error: p, signupSuccess: f, successMessage: W, successTitle: M, successEmail: N, form: k, isFormValid: b, handleSignUp: async () => {
1769
+ y.value = !0, p.value = "";
1887
1770
  try {
1888
- const F = u("signUp");
1889
- console.log("Attempting sign up to URL:", F);
1890
- const M = await fetch(F, {
1771
+ const P = u("signUp");
1772
+ console.log("Attempting sign up to URL:", P);
1773
+ const z = await fetch(P, {
1891
1774
  method: "POST",
1892
1775
  headers: {
1893
1776
  "Content-Type": "application/json"
1894
1777
  },
1895
1778
  body: JSON.stringify({
1896
- email: h.email
1779
+ email: k.email
1897
1780
  })
1898
1781
  });
1899
- if (process.env.NODE_ENV === "development" && console.log("Sign up response status:", M.status), !M.ok) {
1900
- let H = `Sign up failed (${M.status})`;
1782
+ if (process.env.NODE_ENV === "development" && console.log("Sign up response status:", z.status), !z.ok) {
1783
+ let D = `Sign up failed (${z.status})`;
1901
1784
  try {
1902
- const re = await M.json();
1903
- H = re.message || re.error || H;
1785
+ const X = await z.json();
1786
+ D = X.message || X.error || D;
1904
1787
  } catch {
1905
- H = await M.text() || H;
1788
+ D = await z.text() || D;
1906
1789
  }
1907
- throw new Error(H);
1790
+ throw new Error(D);
1908
1791
  }
1909
- const j = await M.json();
1910
- console.log("Magic link sign up success:", j), f.value = !0, B.value = h.email, W.value = j.message || "Magic link sent! Check your email.", j.message && (j.message.includes("already have an account") || j.message.includes("Welcome back") ? N.value = "Welcome Back!" : j.message.includes("Magic link sent") || j.message.includes("Check your email") ? N.value = "Magic Link Sent!" : N.value = "Success!"), l("success", {
1911
- email: h.email,
1912
- message: j.message || "Magic link sent! Check your email."
1792
+ const I = await z.json();
1793
+ console.log("Magic link sign up success:", I), f.value = !0, N.value = k.email, W.value = I.message || "Magic link sent! Check your email.", I.message && (I.message.includes("already have an account") || I.message.includes("Welcome back") ? M.value = "Welcome Back!" : I.message.includes("Magic link sent") || I.message.includes("Check your email") ? M.value = "Magic Link Sent!" : M.value = "Success!"), i("success", {
1794
+ email: k.email,
1795
+ message: I.message || "Magic link sent! Check your email."
1913
1796
  });
1914
- } catch (F) {
1915
- console.error("Sign up error:", F);
1916
- let M = "Unable to send magic link. Please try again.";
1917
- if (F instanceof Error)
1918
- if (F.message.includes("fetch"))
1919
- M = "Unable to connect to authentication service. Please check your internet connection and try again.";
1920
- else if (F.message.includes("CORS")) {
1921
- const j = s();
1922
- M = j ? `Authentication service configuration error. Please contact ${j}.` : "Authentication service configuration error.";
1797
+ } catch (P) {
1798
+ console.error("Sign up error:", P);
1799
+ let z = "Unable to send magic link. Please try again.";
1800
+ if (P instanceof Error)
1801
+ if (P.message.includes("fetch"))
1802
+ z = "Unable to connect to authentication service. Please check your internet connection and try again.";
1803
+ else if (P.message.includes("CORS")) {
1804
+ const I = s();
1805
+ z = I ? `Authentication service configuration error. Please contact ${I}.` : "Authentication service configuration error.";
1923
1806
  } else
1924
- M = F.message;
1925
- p.value = M, l("error", M);
1807
+ z = P.message;
1808
+ p.value = z, i("error", z);
1926
1809
  } finally {
1927
- S.value = !1;
1810
+ y.value = !1;
1928
1811
  }
1929
1812
  }, resetToForm: () => {
1930
- f.value = !1, W.value = "", N.value = "Magic Link Sent!", B.value = "", h.email = "", p.value = "";
1931
- }, handleOAuthSignUp: async (F) => {
1813
+ f.value = !1, W.value = "", M.value = "Magic Link Sent!", N.value = "", k.email = "", p.value = "";
1814
+ }, handleOAuthSignUp: async (P) => {
1932
1815
  try {
1933
- await m(F, {
1816
+ await m(P, {
1934
1817
  redirectUrl: e.redirectUrl,
1935
1818
  scopes: e.oauthScopes
1936
1819
  });
1937
- } catch (M) {
1938
- const j = M instanceof Error ? M.message : `Failed to sign up with ${F}`;
1939
- p.value = j, l("error", j);
1820
+ } catch (z) {
1821
+ const I = z instanceof Error ? z.message : `Failed to sign up with ${P}`;
1822
+ p.value = I, i("error", I);
1940
1823
  }
1941
1824
  }, get StrandsUiCard() {
1942
- return oe;
1825
+ return ve;
1943
1826
  }, get StrandsUiButton() {
1944
- return $;
1827
+ return le;
1945
1828
  }, get StrandsUiInput() {
1946
- return ee;
1829
+ return Ae;
1947
1830
  }, get StrandsUiLink() {
1948
- return te;
1949
- }, StrandsSecuredFooter: ie };
1950
- return Object.defineProperty(K, "__isScriptSetup", { enumerable: !1, value: !0 }), K;
1831
+ return de;
1832
+ }, StrandsSecuredFooter: pe };
1833
+ return Object.defineProperty(Y, "__isScriptSetup", { enumerable: !1, value: !0 }), Y;
1951
1834
  }
1952
- }), dr = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, ur = { class: "text-center" }, cr = { class: "text-2xl font-bold text-gray-900 mb-2" }, mr = { class: "text-gray-600 mb-4" }, fr = {
1835
+ }), yr = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, br = { class: "text-center" }, Sr = { class: "text-2xl font-bold text-gray-900 mb-2" }, Cr = { class: "text-gray-600 mb-4" }, qr = {
1953
1836
  key: 0,
1954
1837
  class: "text-sm text-gray-500 mb-4"
1955
- }, gr = {
1838
+ }, Vr = {
1956
1839
  key: 0,
1957
1840
  class: "space-y-3 mb-6"
1958
- }, pr = { class: "w-5 h-5 flex items-center justify-center" }, vr = {
1841
+ }, xr = { class: "w-5 h-5 flex items-center justify-center" }, Ur = {
1959
1842
  key: 0,
1960
1843
  class: "w-5 h-5"
1961
- }, yr = ["src", "alt"], br = {
1844
+ }, Wr = ["src", "alt"], kr = {
1962
1845
  key: 2,
1963
1846
  class: "w-5 h-5 fill-current",
1964
1847
  viewBox: "0 0 24 24"
1965
- }, hr = {
1848
+ }, Nr = {
1966
1849
  key: 3,
1967
1850
  class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center"
1968
- }, wr = { class: "text-xs font-semibold text-neutral-600" }, Sr = { class: "font-medium" }, qr = {
1851
+ }, Lr = { class: "text-xs font-semibold text-neutral-600" }, Mr = { class: "font-medium" }, Pr = {
1969
1852
  key: 1,
1970
1853
  class: "divider-with-text"
1971
- }, Vr = {
1854
+ }, Fr = {
1972
1855
  key: 2,
1973
1856
  class: "mt-6 animate-fade-in"
1974
- }, Cr = { class: "alert-error" }, xr = { class: "flex items-start gap-3" }, Ur = { class: "font-medium" }, Wr = { class: "mt-8 text-center" }, kr = { class: "text-sm text-neutral-600" }, Nr = {
1857
+ }, zr = { class: "alert-error" }, Br = { class: "flex items-start gap-3" }, Ir = { class: "font-medium" }, Xr = { class: "mt-8 text-center" }, Dr = { class: "text-sm text-neutral-600" }, jr = {
1975
1858
  key: 3,
1976
1859
  class: "mt-6 text-center"
1977
- }, Lr = { class: "text-neutral-400 text-sm" };
1978
- function Mr(o, t, a, e, l, u) {
1979
- return i(), A("div", dr, [
1860
+ }, Tr = { class: "text-neutral-400 text-sm" };
1861
+ function Zr(o, t, a, e, i, u) {
1862
+ return l(), A("div", yr, [
1980
1863
  n(" Success State "),
1981
- e.signupSuccess ? (i(), E(e.StrandsUiCard, {
1864
+ e.signupSuccess ? (l(), $(e.StrandsUiCard, {
1982
1865
  key: 0,
1983
1866
  variant: "modern"
1984
1867
  }, {
1985
- default: y(() => [
1986
- r("div", ur, [
1868
+ default: v(() => [
1869
+ r("div", br, [
1987
1870
  t[3] || (t[3] = r(
1988
1871
  "div",
1989
1872
  { class: "text-green-500 text-6xl mb-4" },
@@ -1993,23 +1876,23 @@ function Mr(o, t, a, e, l, u) {
1993
1876
  )),
1994
1877
  r(
1995
1878
  "h1",
1996
- cr,
1997
- k(e.successTitle),
1879
+ Sr,
1880
+ U(e.successTitle),
1998
1881
  1
1999
1882
  /* TEXT */
2000
1883
  ),
2001
1884
  r(
2002
1885
  "p",
2003
- mr,
2004
- k(e.successMessage),
1886
+ Cr,
1887
+ U(e.successMessage),
2005
1888
  1
2006
1889
  /* TEXT */
2007
1890
  ),
2008
- e.successEmail ? (i(), A("div", fr, [
1891
+ e.successEmail ? (l(), A("div", qr, [
2009
1892
  r(
2010
1893
  "strong",
2011
1894
  null,
2012
- k(e.successEmail),
1895
+ U(e.successEmail),
2013
1896
  1
2014
1897
  /* TEXT */
2015
1898
  )
@@ -2026,7 +1909,7 @@ function Mr(o, t, a, e, l, u) {
2026
1909
  "full-width": "",
2027
1910
  onClick: e.resetToForm
2028
1911
  }, {
2029
- default: y(() => t[2] || (t[2] = [
1912
+ default: v(() => t[2] || (t[2] = [
2030
1913
  V(
2031
1914
  " Send Another Link ",
2032
1915
  -1
@@ -2040,13 +1923,13 @@ function Mr(o, t, a, e, l, u) {
2040
1923
  ]),
2041
1924
  _: 1
2042
1925
  /* STABLE */
2043
- })) : (i(), A(
2044
- O,
1926
+ })) : (l(), A(
1927
+ _,
2045
1928
  { key: 1 },
2046
1929
  [
2047
1930
  n(" Signup Form "),
2048
1931
  d(e.StrandsUiCard, { variant: "modern" }, {
2049
- default: y(() => [
1932
+ default: v(() => [
2050
1933
  n(" Header "),
2051
1934
  t[13] || (t[13] = r(
2052
1935
  "div",
@@ -2059,11 +1942,11 @@ function Mr(o, t, a, e, l, u) {
2059
1942
  /* CACHED */
2060
1943
  )),
2061
1944
  n(" OAuth Providers "),
2062
- e.enabledProviders?.length ? (i(), A("div", gr, [
2063
- (i(!0), A(
2064
- O,
1945
+ e.enabledProviders?.length ? (l(), A("div", Vr, [
1946
+ (l(!0), A(
1947
+ _,
2065
1948
  null,
2066
- Ae(e.enabledProviders, (s) => (i(), E(e.StrandsUiButton, {
1949
+ be(e.enabledProviders, (s) => (l(), $(e.StrandsUiButton, {
2067
1950
  key: s.id,
2068
1951
  variant: "outline",
2069
1952
  "full-width": "",
@@ -2071,17 +1954,17 @@ function Mr(o, t, a, e, l, u) {
2071
1954
  onClick: (g) => e.handleOAuthSignUp(s.id),
2072
1955
  class: "btn-oauth group"
2073
1956
  }, {
2074
- default: y(() => [
2075
- r("div", pr, [
1957
+ default: v(() => [
1958
+ r("div", xr, [
2076
1959
  n(" Dynamic provider icons "),
2077
- s.icon || s.iconUrl ? (i(), A("div", vr, [
1960
+ s.icon || s.iconUrl ? (l(), A("div", Ur, [
2078
1961
  r("img", {
2079
1962
  src: s.icon || s.iconUrl,
2080
1963
  alt: `${s.displayName || s.name} icon`,
2081
1964
  class: "w-5 h-5"
2082
- }, null, 8, yr)
2083
- ])) : s.id === "google" ? (i(), A(
2084
- O,
1965
+ }, null, 8, Wr)
1966
+ ])) : s.id === "google" ? (l(), A(
1967
+ _,
2085
1968
  { key: 1 },
2086
1969
  [
2087
1970
  n(" Built-in SVG icons for common providers "),
@@ -2115,7 +1998,7 @@ function Mr(o, t, a, e, l, u) {
2115
1998
  ],
2116
1999
  2112
2117
2000
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
2118
- )) : s.id === "github" ? (i(), A("svg", br, [...t[6] || (t[6] = [
2001
+ )) : s.id === "github" ? (l(), A("svg", kr, [...t[6] || (t[6] = [
2119
2002
  r(
2120
2003
  "path",
2121
2004
  { d: "M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z" },
@@ -2123,11 +2006,11 @@ function Mr(o, t, a, e, l, u) {
2123
2006
  -1
2124
2007
  /* CACHED */
2125
2008
  )
2126
- ])])) : (i(), A("div", hr, [
2009
+ ])])) : (l(), A("div", Nr, [
2127
2010
  r(
2128
2011
  "span",
2129
- wr,
2130
- k((s.displayName || s.name).charAt(0).toUpperCase()),
2012
+ Lr,
2013
+ U((s.displayName || s.name).charAt(0).toUpperCase()),
2131
2014
  1
2132
2015
  /* TEXT */
2133
2016
  )
@@ -2135,8 +2018,8 @@ function Mr(o, t, a, e, l, u) {
2135
2018
  ]),
2136
2019
  r(
2137
2020
  "span",
2138
- Sr,
2139
- "Continue with " + k(s.displayName || s.name),
2021
+ Mr,
2022
+ "Continue with " + U(s.displayName || s.name),
2140
2023
  1
2141
2024
  /* TEXT */
2142
2025
  )
@@ -2149,7 +2032,7 @@ function Mr(o, t, a, e, l, u) {
2149
2032
  ))
2150
2033
  ])) : n("v-if", !0),
2151
2034
  n(" Divider "),
2152
- e.enabledProviders?.length ? (i(), A("div", qr, t[7] || (t[7] = [
2035
+ e.enabledProviders?.length ? (l(), A("div", Pr, t[7] || (t[7] = [
2153
2036
  r(
2154
2037
  "span",
2155
2038
  { class: "divider-text" },
@@ -2162,7 +2045,7 @@ function Mr(o, t, a, e, l, u) {
2162
2045
  r(
2163
2046
  "form",
2164
2047
  {
2165
- onSubmit: ae(e.handleSignUp, ["prevent"]),
2048
+ onSubmit: fe(e.handleSignUp, ["prevent"]),
2166
2049
  class: "space-y-6"
2167
2050
  },
2168
2051
  [
@@ -2188,7 +2071,7 @@ function Mr(o, t, a, e, l, u) {
2188
2071
  loading: e.loading,
2189
2072
  "loading-text": "Sending magic link..."
2190
2073
  }, {
2191
- default: y(() => t[8] || (t[8] = [
2074
+ default: v(() => t[8] || (t[8] = [
2192
2075
  V(
2193
2076
  " Send magic link ",
2194
2077
  -1
@@ -2203,9 +2086,9 @@ function Mr(o, t, a, e, l, u) {
2203
2086
  /* NEED_HYDRATION */
2204
2087
  ),
2205
2088
  n(" Error Alert "),
2206
- e.error ? (i(), A("div", Vr, [
2207
- r("div", Cr, [
2208
- r("div", xr, [
2089
+ e.error ? (l(), A("div", Fr, [
2090
+ r("div", zr, [
2091
+ r("div", Br, [
2209
2092
  t[9] || (t[9] = r(
2210
2093
  "svg",
2211
2094
  {
@@ -2225,8 +2108,8 @@ function Mr(o, t, a, e, l, u) {
2225
2108
  )),
2226
2109
  r(
2227
2110
  "p",
2228
- Ur,
2229
- k(e.error),
2111
+ Ir,
2112
+ U(e.error),
2230
2113
  1
2231
2114
  /* TEXT */
2232
2115
  )
@@ -2234,8 +2117,8 @@ function Mr(o, t, a, e, l, u) {
2234
2117
  ])
2235
2118
  ])) : n("v-if", !0),
2236
2119
  n(" Sign in link "),
2237
- r("div", Wr, [
2238
- r("p", kr, [
2120
+ r("div", Xr, [
2121
+ r("p", Dr, [
2239
2122
  t[10] || (t[10] = V(
2240
2123
  " Already have an account? ",
2241
2124
  -1
@@ -2249,8 +2132,8 @@ function Mr(o, t, a, e, l, u) {
2249
2132
  ])
2250
2133
  ]),
2251
2134
  n(" Need help "),
2252
- e.getSupportEmail() ? (i(), A("div", Nr, [
2253
- r("p", Lr, [
2135
+ e.getSupportEmail() ? (l(), A("div", jr, [
2136
+ r("p", Tr, [
2254
2137
  t[12] || (t[12] = V(
2255
2138
  " Need help? ",
2256
2139
  -1
@@ -2260,7 +2143,7 @@ function Mr(o, t, a, e, l, u) {
2260
2143
  variant: "primary",
2261
2144
  href: `mailto:${e.getSupportEmail()}`
2262
2145
  }, {
2263
- default: y(() => t[11] || (t[11] = [
2146
+ default: v(() => t[11] || (t[11] = [
2264
2147
  V(
2265
2148
  " Contact Support ",
2266
2149
  -1
@@ -2286,7 +2169,7 @@ function Mr(o, t, a, e, l, u) {
2286
2169
  ))
2287
2170
  ]);
2288
2171
  }
2289
- const ia = /* @__PURE__ */ D(Ar, [["render", Mr], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSignUp.vue"]]), Pr = /* @__PURE__ */ X({
2172
+ const ka = /* @__PURE__ */ E(hr, [["render", Zr], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsSignUp.vue"]]), Er = /* @__PURE__ */ Z({
2290
2173
  __name: "StrandsCompleteSignUp",
2291
2174
  props: {
2292
2175
  token: { type: String, required: !1 },
@@ -2296,50 +2179,50 @@ const ia = /* @__PURE__ */ D(Ar, [["render", Mr], ["__file", "/home/runner/work/
2296
2179
  emits: ["success", "error", "invalid-token", "request-new-link", "start-registration"],
2297
2180
  setup(o, { expose: t, emit: a }) {
2298
2181
  t();
2299
- const e = o, l = a, { getUrl: u, getSupportEmail: s } = _(e.config), { setAuthData: g } = ne(), w = U(!1), x = U(!1), q = U(!1), m = U(""), S = U(""), p = G({
2182
+ const e = o, i = a, { getUrl: u, getSupportEmail: s } = se(e.config), { setAuthData: g } = ge(), h = q(!1), S = q(!1), C = q(!1), m = q(""), y = q(""), p = te({
2300
2183
  username: "",
2301
2184
  firstName: "",
2302
2185
  lastName: "",
2303
2186
  password: ""
2304
- }), f = G({
2187
+ }), f = te({
2305
2188
  username: "",
2306
2189
  firstName: "",
2307
2190
  lastName: "",
2308
2191
  password: ""
2309
- }), W = C(() => {
2310
- const c = p.username.trim() && p.password.trim(), P = p.password.length >= 8, T = !!e.token;
2311
- return c && P && T;
2192
+ }), W = x(() => {
2193
+ const c = p.username.trim() && p.password.trim(), F = p.password.length >= 8, H = !!e.token;
2194
+ return c && F && H;
2312
2195
  });
2313
- se(
2196
+ me(
2314
2197
  () => p.password,
2315
2198
  (c) => {
2316
2199
  c && c.length < 8 ? f.password = "Password must be at least 8 characters long" : f.password = "";
2317
2200
  }
2318
- ), se(
2201
+ ), me(
2319
2202
  () => p.username,
2320
2203
  (c) => {
2321
2204
  c && c.length < 2 ? f.username = "Username must be at least 2 characters long" : f.username = "";
2322
2205
  }
2323
2206
  );
2324
- const N = C(() => ({
2207
+ const M = x(() => ({
2325
2208
  baseUrl: e.config?.baseUrl || "http://localhost:8000",
2326
2209
  referrerUrl: e.redirectUrl || "http://localhost:3001"
2327
2210
  }));
2328
- J(() => {
2211
+ re(() => {
2329
2212
  if (e.token)
2330
2213
  try {
2331
2214
  const c = e.token.split(".");
2332
2215
  if (c.length === 3) {
2333
- const P = JSON.parse(atob(c[1]));
2334
- P.email && (S.value = P.email);
2216
+ const F = JSON.parse(atob(c[1]));
2217
+ F.email && (y.value = F.email);
2335
2218
  }
2336
2219
  } catch (c) {
2337
2220
  console.warn("Could not decode token for email display:", c);
2338
2221
  }
2339
2222
  });
2340
- const B = () => {
2341
- N.value.referrerUrl && (console.log("Redirecting to referrer:", N.value.referrerUrl), window.location.href = N.value.referrerUrl);
2342
- }, v = { props: e, emit: l, getUrl: u, getSupportEmail: s, setAuthData: g, registrationComplete: w, invalidToken: x, loading: q, error: m, email: S, form: p, fieldErrors: f, isFormValid: W, authConfig: N, redirectToReferrer: B, handleCompleteSignUp: async () => {
2223
+ const N = () => {
2224
+ M.value.referrerUrl && (console.log("Redirecting to referrer:", M.value.referrerUrl), window.location.href = M.value.referrerUrl);
2225
+ }, b = { props: e, emit: i, getUrl: u, getSupportEmail: s, setAuthData: g, registrationComplete: h, invalidToken: S, loading: C, error: m, email: y, form: p, fieldErrors: f, isFormValid: W, authConfig: M, redirectToReferrer: N, handleCompleteSignUp: async () => {
2343
2226
  if (!e.token) {
2344
2227
  m.value = "Registration token is required";
2345
2228
  return;
@@ -2350,9 +2233,9 @@ const ia = /* @__PURE__ */ D(Ar, [["render", Mr], ["__file", "/home/runner/work/
2350
2233
  m.value = "Please fill in all required fields correctly";
2351
2234
  return;
2352
2235
  }
2353
- q.value = !0;
2236
+ C.value = !0;
2354
2237
  try {
2355
- const c = await fetch(`${N.value.baseUrl}/api/v1/auth/complete-registration`, {
2238
+ const c = await fetch(`${M.value.baseUrl}/api/v1/auth/complete-registration`, {
2356
2239
  method: "POST",
2357
2240
  headers: {
2358
2241
  "Content-Type": "application/json"
@@ -2366,51 +2249,51 @@ const ia = /* @__PURE__ */ D(Ar, [["render", Mr], ["__file", "/home/runner/work/
2366
2249
  })
2367
2250
  });
2368
2251
  if (!c.ok) {
2369
- const T = await c.text();
2370
- throw new Error(`Failed to complete registration: ${T}`);
2252
+ const H = await c.text();
2253
+ throw new Error(`Failed to complete registration: ${H}`);
2371
2254
  }
2372
- const P = await c.json();
2373
- console.log("Registration success:", P), P.access_token && P.refresh_token && P.user ? (g(P), console.log("Auth tokens stored successfully for user:", P.user.email)) : console.warn("Registration response missing auth tokens or user data"), w.value = !0, l("success", P), setTimeout(() => {
2374
- B();
2255
+ const F = await c.json();
2256
+ console.log("Registration success:", F), F.access_token && F.refresh_token && F.user ? (g(F), console.log("Auth tokens stored successfully for user:", F.user.email)) : console.warn("Registration response missing auth tokens or user data"), h.value = !0, i("success", F), setTimeout(() => {
2257
+ N();
2375
2258
  }, 2e3);
2376
2259
  } catch (c) {
2377
- c instanceof Error ? c.message.includes("CONFLICT") || c.message.includes("409") ? m.value = "This account already exists. Please try signing in instead." : c.message.includes("BAD_REQUEST") || c.message.includes("400") ? (m.value = "Invalid or expired registration link. Please request a new one.", x.value = !0, l("invalid-token")) : m.value = c.message : m.value = "Failed to complete registration. Please try again.", l("error", m.value);
2260
+ c instanceof Error ? c.message.includes("CONFLICT") || c.message.includes("409") ? m.value = "This account already exists. Please try signing in instead." : c.message.includes("BAD_REQUEST") || c.message.includes("400") ? (m.value = "Invalid or expired registration link. Please request a new one.", S.value = !0, i("invalid-token")) : m.value = c.message : m.value = "Failed to complete registration. Please try again.", i("error", m.value);
2378
2261
  } finally {
2379
- q.value = !1;
2262
+ C.value = !1;
2380
2263
  }
2381
2264
  }, get StrandsUiCard() {
2382
- return oe;
2265
+ return ve;
2383
2266
  }, get StrandsUiButton() {
2384
- return $;
2267
+ return le;
2385
2268
  }, get StrandsUiInput() {
2386
- return ee;
2269
+ return Ae;
2387
2270
  }, get StrandsUiAlert() {
2388
- return de;
2271
+ return he;
2389
2272
  }, get StrandsUiLink() {
2390
- return te;
2391
- }, StrandsSecuredFooter: ie };
2392
- return Object.defineProperty(v, "__isScriptSetup", { enumerable: !1, value: !0 }), v;
2273
+ return de;
2274
+ }, StrandsSecuredFooter: pe };
2275
+ return Object.defineProperty(b, "__isScriptSetup", { enumerable: !1, value: !0 }), b;
2393
2276
  }
2394
- }), Ir = {
2277
+ }), Yr = {
2395
2278
  key: 0,
2396
2279
  class: "min-w-100 w-full max-w-md mx-auto animate-slide-up"
2397
- }, zr = { class: "text-center" }, Br = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, Fr = { class: "text-center" }, Xr = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, Dr = { class: "text-center mb-8" }, jr = {
2280
+ }, Or = { class: "text-center" }, Kr = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, Qr = { class: "text-center" }, Hr = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, Rr = { class: "text-center mb-8" }, Gr = {
2398
2281
  key: 0,
2399
2282
  class: "mt-2"
2400
- }, Zr = { class: "text-sm text-neutral-500" }, Tr = { class: "font-medium text-neutral-700" }, Yr = {
2283
+ }, Jr = { class: "text-sm text-neutral-500" }, _r = { class: "font-medium text-neutral-700" }, $r = {
2401
2284
  key: 1,
2402
2285
  class: "mt-6 text-center"
2403
- }, Or = { class: "text-neutral-400 text-sm" }, Er = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, Qr = { class: "text-center" };
2404
- function Kr(o, t, a, e, l, u) {
2405
- return i(), A(
2406
- O,
2286
+ }, es = { class: "text-neutral-400 text-sm" }, ts = { class: "min-w-100 w-full max-w-md mx-auto animate-slide-up" }, rs = { class: "text-center" };
2287
+ function ss(o, t, a, e, i, u) {
2288
+ return l(), A(
2289
+ _,
2407
2290
  null,
2408
2291
  [
2409
2292
  n(" Success State "),
2410
- e.registrationComplete ? (i(), A("div", Ir, [
2293
+ e.registrationComplete ? (l(), A("div", Yr, [
2411
2294
  d(e.StrandsUiCard, { variant: "modern" }, {
2412
- default: y(() => [
2413
- r("div", zr, [
2295
+ default: v(() => [
2296
+ r("div", Or, [
2414
2297
  t[8] || (t[8] = r(
2415
2298
  "div",
2416
2299
  { class: "text-green-500 text-6xl mb-4" },
@@ -2444,7 +2327,7 @@ function Kr(o, t, a, e, l, u) {
2444
2327
  "full-width": "",
2445
2328
  onClick: e.redirectToReferrer
2446
2329
  }, {
2447
- default: y(() => t[7] || (t[7] = [
2330
+ default: v(() => t[7] || (t[7] = [
2448
2331
  V(
2449
2332
  " Go to Dashboard ",
2450
2333
  -1
@@ -2460,15 +2343,15 @@ function Kr(o, t, a, e, l, u) {
2460
2343
  _: 1
2461
2344
  /* STABLE */
2462
2345
  })
2463
- ])) : e.invalidToken ? (i(), A(
2464
- O,
2346
+ ])) : e.invalidToken ? (l(), A(
2347
+ _,
2465
2348
  { key: 1 },
2466
2349
  [
2467
2350
  n(" Invalid Token State "),
2468
- r("div", Br, [
2351
+ r("div", Kr, [
2469
2352
  d(e.StrandsUiCard, { variant: "modern" }, {
2470
- default: y(() => [
2471
- r("div", Fr, [
2353
+ default: v(() => [
2354
+ r("div", Qr, [
2472
2355
  t[13] || (t[13] = r(
2473
2356
  "div",
2474
2357
  { class: "text-red-500 text-6xl mb-4" },
@@ -2502,7 +2385,7 @@ function Kr(o, t, a, e, l, u) {
2502
2385
  "full-width": "",
2503
2386
  onClick: t[0] || (t[0] = (s) => o.$emit("request-new-link"))
2504
2387
  }, {
2505
- default: y(() => t[12] || (t[12] = [
2388
+ default: v(() => t[12] || (t[12] = [
2506
2389
  V(
2507
2390
  " Request New Link ",
2508
2391
  -1
@@ -2522,16 +2405,16 @@ function Kr(o, t, a, e, l, u) {
2522
2405
  ],
2523
2406
  2112
2524
2407
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
2525
- )) : a.token ? (i(), A(
2526
- O,
2408
+ )) : a.token ? (l(), A(
2409
+ _,
2527
2410
  { key: 2 },
2528
2411
  [
2529
2412
  n(" Registration Form "),
2530
- r("div", Xr, [
2413
+ r("div", Hr, [
2531
2414
  d(e.StrandsUiCard, { variant: "modern" }, {
2532
- default: y(() => [
2415
+ default: v(() => [
2533
2416
  n(" Header "),
2534
- r("div", Dr, [
2417
+ r("div", Rr, [
2535
2418
  t[18] || (t[18] = r(
2536
2419
  "h1",
2537
2420
  { class: "text-3xl font-bold text-gradient mb-2" },
@@ -2546,8 +2429,8 @@ function Kr(o, t, a, e, l, u) {
2546
2429
  -1
2547
2430
  /* CACHED */
2548
2431
  )),
2549
- e.email ? (i(), A("div", jr, [
2550
- r("p", Zr, [
2432
+ e.email ? (l(), A("div", Gr, [
2433
+ r("p", Jr, [
2551
2434
  t[17] || (t[17] = V(
2552
2435
  "Creating account for: ",
2553
2436
  -1
@@ -2555,8 +2438,8 @@ function Kr(o, t, a, e, l, u) {
2555
2438
  )),
2556
2439
  r(
2557
2440
  "span",
2558
- Tr,
2559
- k(e.email),
2441
+ _r,
2442
+ U(e.email),
2560
2443
  1
2561
2444
  /* TEXT */
2562
2445
  )
@@ -2567,7 +2450,7 @@ function Kr(o, t, a, e, l, u) {
2567
2450
  r(
2568
2451
  "form",
2569
2452
  {
2570
- onSubmit: ae(e.handleCompleteSignUp, ["prevent"]),
2453
+ onSubmit: fe(e.handleCompleteSignUp, ["prevent"]),
2571
2454
  class: "space-y-6"
2572
2455
  },
2573
2456
  [
@@ -2641,7 +2524,7 @@ function Kr(o, t, a, e, l, u) {
2641
2524
  loading: e.loading,
2642
2525
  "loading-text": "Creating account..."
2643
2526
  }, {
2644
- default: y(() => t[21] || (t[21] = [
2527
+ default: v(() => t[21] || (t[21] = [
2645
2528
  V(
2646
2529
  " Complete Registration ",
2647
2530
  -1
@@ -2656,7 +2539,7 @@ function Kr(o, t, a, e, l, u) {
2656
2539
  /* NEED_HYDRATION */
2657
2540
  ),
2658
2541
  n(" Error Alert "),
2659
- e.error ? (i(), E(e.StrandsUiAlert, {
2542
+ e.error ? (l(), $(e.StrandsUiAlert, {
2660
2543
  key: 0,
2661
2544
  variant: "error",
2662
2545
  message: e.error,
@@ -2665,8 +2548,8 @@ function Kr(o, t, a, e, l, u) {
2665
2548
  onDismiss: t[5] || (t[5] = (s) => e.error = "")
2666
2549
  }, null, 8, ["message"])) : n("v-if", !0),
2667
2550
  n(" Need help "),
2668
- e.getSupportEmail() ? (i(), A("div", Yr, [
2669
- r("p", Or, [
2551
+ e.getSupportEmail() ? (l(), A("div", $r, [
2552
+ r("p", es, [
2670
2553
  t[23] || (t[23] = V(
2671
2554
  " Need help? ",
2672
2555
  -1
@@ -2676,7 +2559,7 @@ function Kr(o, t, a, e, l, u) {
2676
2559
  variant: "primary",
2677
2560
  href: `mailto:${e.getSupportEmail()}`
2678
2561
  }, {
2679
- default: y(() => t[22] || (t[22] = [
2562
+ default: v(() => t[22] || (t[22] = [
2680
2563
  V(
2681
2564
  " Contact Support ",
2682
2565
  -1
@@ -2700,15 +2583,15 @@ function Kr(o, t, a, e, l, u) {
2700
2583
  ],
2701
2584
  2112
2702
2585
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
2703
- )) : (i(), A(
2704
- O,
2586
+ )) : (l(), A(
2587
+ _,
2705
2588
  { key: 3 },
2706
2589
  [
2707
2590
  n(" No Token State "),
2708
- r("div", Er, [
2591
+ r("div", ts, [
2709
2592
  d(e.StrandsUiCard, { variant: "modern" }, {
2710
- default: y(() => [
2711
- r("div", Qr, [
2593
+ default: v(() => [
2594
+ r("div", rs, [
2712
2595
  t[25] || (t[25] = r(
2713
2596
  "div",
2714
2597
  { class: "text-yellow-500 text-6xl mb-4" },
@@ -2742,7 +2625,7 @@ function Kr(o, t, a, e, l, u) {
2742
2625
  "full-width": "",
2743
2626
  onClick: t[6] || (t[6] = (s) => o.$emit("start-registration"))
2744
2627
  }, {
2745
- default: y(() => t[24] || (t[24] = [
2628
+ default: v(() => t[24] || (t[24] = [
2746
2629
  V(
2747
2630
  " Start Registration ",
2748
2631
  -1
@@ -2768,7 +2651,7 @@ function Kr(o, t, a, e, l, u) {
2768
2651
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
2769
2652
  );
2770
2653
  }
2771
- const la = /* @__PURE__ */ D(Pr, [["render", Kr], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsCompleteSignUp.vue"]]), Hr = /* @__PURE__ */ X({
2654
+ const Na = /* @__PURE__ */ E(Er, [["render", ss], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsCompleteSignUp.vue"]]), as = /* @__PURE__ */ Z({
2772
2655
  __name: "StrandsUserProfile",
2773
2656
  props: {
2774
2657
  user: { type: Object, required: !1 },
@@ -2778,109 +2661,244 @@ const la = /* @__PURE__ */ D(Pr, [["render", Kr], ["__file", "/home/runner/work/
2778
2661
  emits: ["profile-updated", "error", "manage-sessions", "mfa-toggle"],
2779
2662
  setup(o, { expose: t, emit: a }) {
2780
2663
  t();
2781
- const e = o, l = a, { getSupportEmail: u } = _(e.config), { fetchProfile: s, updateProfile: g, currentUser: w, isAuthenticated: x } = ne(), q = U(null), m = U(!1), S = C(() => w.value || e.user || q.value), p = U(!1), f = U(!1), W = U(""), N = U(""), B = U([
2782
- { id: "1", device: "Chrome on Mac", location: "San Francisco, CA", lastActive: "2 minutes ago", current: !0 },
2783
- { id: "2", device: "Safari on iPhone", location: "San Francisco, CA", lastActive: "1 hour ago", current: !1 }
2784
- ]), h = G({
2664
+ const e = o, i = a, { getSupportEmail: u, config: s, getUrl: g } = se(e.config), { fetchProfile: h, updateProfile: S, changeEmail: C, currentUser: m, currentSession: y, isAuthenticated: p, refreshToken: f } = ge(), W = q(null), M = q(!1), N = x(() => {
2665
+ const w = m.value || e.user || W.value;
2666
+ return console.log("Current user computed:", {
2667
+ hasAuthUser: !!m.value,
2668
+ hasPropUser: !!e.user,
2669
+ hasInternalUser: !!W.value,
2670
+ selectedUser: w,
2671
+ avatar: w?.avatar
2672
+ }), w;
2673
+ }), k = q(!1), b = q(!1), c = q(!1), F = q(!1), H = q(!1), Y = q(""), P = q(""), z = q([]), I = q(null), D = te({
2785
2674
  firstName: "",
2786
2675
  lastName: "",
2787
- email: "",
2788
- phone: ""
2789
- }), v = G({
2676
+ email: ""
2677
+ }), X = te({
2678
+ newEmail: "",
2679
+ password: "",
2680
+ errors: {
2681
+ newEmail: "",
2682
+ password: ""
2683
+ }
2684
+ }), O = te({
2790
2685
  current: "",
2791
2686
  new: "",
2792
2687
  confirm: ""
2793
- }), c = G({
2688
+ }), L = te({
2794
2689
  firstName: "",
2795
2690
  lastName: "",
2796
- email: "",
2797
- phone: ""
2798
- }), P = C(() => {
2799
- const b = S.value;
2800
- return b ? h.firstName !== b.firstName || h.lastName !== b.lastName || h.email !== b.email || h.phone !== (b.phone || "") : !1;
2801
- }), T = C(() => v.current && v.new && v.confirm && v.new === v.confirm && v.new.length >= 8), K = (b, Q) => !b && !Q ? "U" : `${b?.[0] || ""}${Q?.[0] || ""}`.toUpperCase(), F = async () => {
2802
- if (!(!e.autoFetch || e.user || !x.value)) {
2803
- m.value = !0;
2691
+ email: ""
2692
+ }), j = x(() => {
2693
+ const w = N.value;
2694
+ return w ? D.firstName !== (w.firstName || "") || D.lastName !== (w.lastName || "") : !1;
2695
+ }), K = x(() => O.current && O.new && O.confirm && O.new === O.confirm && O.new.length >= 8), we = x(() => X.newEmail && X.password && X.newEmail !== N.value?.email && X.newEmail.includes("@")), ae = x(() => {
2696
+ const w = N.value;
2697
+ if (!w) return "Never";
2698
+ const B = w.passwordUpdatedAt || w.createdAt;
2699
+ if (!B) return "Never";
2700
+ const Q = new Date(B), oe = (/* @__PURE__ */ new Date()).getTime() - Q.getTime(), G = Math.floor(oe / (1e3 * 60 * 60 * 24));
2701
+ if (G === 0) return "Today";
2702
+ if (G === 1) return "Yesterday";
2703
+ if (G < 30) return `${G} days ago`;
2704
+ if (G < 365) {
2705
+ const ce = Math.floor(G / 30);
2706
+ return ce === 1 ? "1 month ago" : `${ce} months ago`;
2707
+ }
2708
+ const ie = Math.floor(G / 365);
2709
+ return ie === 1 ? "1 year ago" : `${ie} years ago`;
2710
+ }), Ve = (w, B) => !w && !B ? "U" : `${w?.[0] || ""}${B?.[0] || ""}`.toUpperCase(), ye = async () => {
2711
+ if (!(!e.autoFetch || e.user || !p.value)) {
2712
+ M.value = !0;
2804
2713
  try {
2805
- await s();
2806
- } catch (b) {
2807
- const Q = b instanceof Error ? b.message : "Failed to load profile";
2808
- N.value = Q, l("error", Q);
2714
+ await h();
2715
+ } catch (w) {
2716
+ const B = w instanceof Error ? w.message : "Failed to load profile";
2717
+ P.value = B, i("error", B);
2809
2718
  } finally {
2810
- m.value = !1;
2719
+ M.value = !1;
2811
2720
  }
2812
2721
  }
2813
2722
  };
2814
- se(() => S.value, (b) => {
2815
- b && (h.firstName = b.firstName, h.lastName = b.lastName, h.email = b.email, h.phone = b.phone || "");
2816
- }, { immediate: !0 }), J(() => {
2817
- F();
2723
+ me(() => N.value, (w) => {
2724
+ w && (D.firstName = w.firstName || "", D.lastName = w.lastName || "", D.email = w.email);
2725
+ }, { immediate: !0 }), re(() => {
2726
+ ye();
2818
2727
  });
2819
- const M = () => {
2820
- W.value = "", N.value = "", Object.keys(c).forEach((b) => {
2821
- c[b] = "";
2728
+ const ue = () => {
2729
+ Y.value = "", P.value = "", Object.keys(L).forEach((w) => {
2730
+ L[w] = "";
2822
2731
  });
2823
- }, I = { props: e, emit: l, getSupportEmail: u, fetchProfile: s, updateProfile: g, authUser: w, isAuthenticated: x, internalUser: q, fetchingProfile: m, currentUser: S, loading: p, showPasswordChange: f, successMessage: W, errorMessage: N, activeSessions: B, form: h, passwordForm: v, errors: c, hasChanges: P, isPasswordFormValid: T, getInitials: K, fetchUserProfile: F, clearMessages: M, handleUpdateProfile: async () => {
2824
- M(), p.value = !0;
2732
+ }, Me = async () => {
2733
+ ue(), k.value = !0;
2825
2734
  try {
2826
- const b = await g({
2827
- firstName: h.firstName,
2828
- lastName: h.lastName,
2829
- email: h.email,
2830
- phone: h.phone || void 0
2735
+ const w = await S({
2736
+ firstName: D.firstName,
2737
+ lastName: D.lastName
2831
2738
  });
2832
- b && (W.value = "Profile updated successfully", l("profile-updated", b));
2833
- } catch (b) {
2834
- const Q = b instanceof Error ? b.message : "Failed to update profile";
2835
- N.value = Q, l("error", Q);
2739
+ w && (Y.value = "Profile updated successfully", i("profile-updated", w));
2740
+ } catch (w) {
2741
+ const B = w instanceof Error ? w.message : "Failed to update profile";
2742
+ P.value = B, i("error", B);
2836
2743
  } finally {
2837
- p.value = !1;
2744
+ k.value = !1;
2838
2745
  }
2839
- }, handlePasswordChange: async () => {
2840
- if (T.value) {
2841
- M(), p.value = !0;
2746
+ }, Pe = async () => {
2747
+ if (K.value) {
2748
+ ue(), k.value = !0;
2842
2749
  try {
2843
- await new Promise((b) => setTimeout(b, 1e3)), W.value = "Password updated successfully", f.value = !1, v.current = "", v.new = "", v.confirm = "";
2750
+ await new Promise((w) => setTimeout(w, 1e3)), Y.value = "Password updated successfully", c.value = !1, O.current = "", O.new = "", O.confirm = "";
2844
2751
  } catch {
2845
- N.value = "Failed to update password";
2752
+ P.value = "Failed to update password";
2753
+ } finally {
2754
+ k.value = !1;
2755
+ }
2756
+ }
2757
+ }, Fe = async () => {
2758
+ if (we.value) {
2759
+ X.errors.newEmail = "", X.errors.password = "", ue(), H.value = !0;
2760
+ try {
2761
+ const w = await C(X.newEmail, X.password);
2762
+ Y.value = w.message || "Email updated successfully. Please verify your new email address.", F.value = !1, X.newEmail = "", X.password = "", N.value && i("profile-updated", N.value);
2763
+ } catch (w) {
2764
+ const B = w instanceof Error ? w.message : "Failed to update email";
2765
+ B.includes("password") ? X.errors.password = "Invalid password" : B.includes("email") ? X.errors.newEmail = B : P.value = B, i("error", B);
2846
2766
  } finally {
2847
- p.value = !1;
2767
+ H.value = !1;
2848
2768
  }
2849
2769
  }
2850
- }, handleImageUpload: () => {
2851
- l("error", "Image upload functionality not yet implemented");
2852
- }, handleMFAToggle: () => {
2853
- l("mfa-toggle", !S.value?.mfaEnabled);
2770
+ }, ze = () => {
2771
+ b.value || I.value?.click();
2772
+ }, Be = async (w) => {
2773
+ const Q = w.target.files?.[0];
2774
+ if (!Q) return;
2775
+ if (!Q.type.startsWith("image/")) {
2776
+ P.value = "Please select an image file";
2777
+ return;
2778
+ }
2779
+ const ne = 5 * 1024 * 1024;
2780
+ if (Q.size > ne) {
2781
+ P.value = "File size must be less than 5MB";
2782
+ return;
2783
+ }
2784
+ await xe(Q);
2785
+ }, xe = async (w) => {
2786
+ b.value = !0, ue();
2787
+ try {
2788
+ if (!y.value?.accessToken)
2789
+ throw new Error("No access token available. Please sign in again.");
2790
+ const B = new FormData();
2791
+ B.append("avatar", w);
2792
+ const Q = await fetch(g("avatar"), {
2793
+ method: "POST",
2794
+ body: B,
2795
+ headers: {
2796
+ Authorization: `Bearer ${y.value.accessToken}`
2797
+ }
2798
+ });
2799
+ if (!Q.ok)
2800
+ if (Q.status === 401)
2801
+ try {
2802
+ if (console.log("Access token expired, attempting to refresh..."), await f() && y.value?.accessToken) {
2803
+ console.log("Token refreshed successfully, retrying avatar upload...");
2804
+ const G = await fetch(g("avatar"), {
2805
+ method: "POST",
2806
+ body: B,
2807
+ headers: {
2808
+ Authorization: `Bearer ${y.value.accessToken}`
2809
+ }
2810
+ });
2811
+ if (!G.ok) {
2812
+ const ce = await G.json().catch(() => ({}));
2813
+ throw new Error(ce.message || `Upload failed: ${G.status} ${G.statusText}`);
2814
+ }
2815
+ const ie = await G.json();
2816
+ console.log("Avatar upload retry success:", ie), m.value && (console.log("Updating authUser avatar from:", m.value.avatar, "to:", ie.avatar_url), m.value.avatar = ie.avatar_url, typeof window < "u" && localStorage.setItem("strands_auth_user", JSON.stringify(m.value))), W.value && (W.value.avatar = ie.avatar_url);
2817
+ try {
2818
+ await h(), console.log("Profile refreshed after avatar upload retry");
2819
+ } catch (ce) {
2820
+ console.warn("Failed to refresh profile after avatar upload retry:", ce);
2821
+ }
2822
+ Y.value = "Avatar updated successfully", N.value && i("profile-updated", N.value);
2823
+ return;
2824
+ } else
2825
+ throw new Error("Authentication expired. Please sign in again.");
2826
+ } catch {
2827
+ throw new Error("Authentication expired. Please sign in again.");
2828
+ }
2829
+ else {
2830
+ const oe = await Q.json().catch(() => ({}));
2831
+ throw new Error(oe.message || `Upload failed: ${Q.status} ${Q.statusText}`);
2832
+ }
2833
+ const ne = await Q.json();
2834
+ console.log("Avatar upload success:", ne), m.value && (console.log("Updating authUser avatar from:", m.value.avatar, "to:", ne.avatar_url), m.value.avatar = ne.avatar_url, typeof window < "u" && localStorage.setItem("strands_auth_user", JSON.stringify(m.value))), W.value && (W.value.avatar = ne.avatar_url);
2835
+ try {
2836
+ await h(), console.log("Profile refreshed after avatar upload");
2837
+ } catch (oe) {
2838
+ console.warn("Failed to refresh profile after avatar upload:", oe);
2839
+ }
2840
+ Y.value = "Avatar updated successfully", N.value && i("profile-updated", N.value);
2841
+ } catch (B) {
2842
+ const Q = B instanceof Error ? B.message : "Failed to upload avatar";
2843
+ P.value = Q, i("error", Q);
2844
+ } finally {
2845
+ b.value = !1, I.value && (I.value.value = "");
2846
+ }
2847
+ }, Ue = { props: e, emit: i, getSupportEmail: u, strandsConfig: s, getUrl: g, fetchProfile: h, updateProfile: S, changeEmail: C, authUser: m, currentSession: y, isAuthenticated: p, refreshToken: f, internalUser: W, fetchingProfile: M, currentUser: N, loading: k, uploading: b, showPasswordChange: c, showEmailChange: F, emailChangeLoading: H, successMessage: Y, errorMessage: P, activeSessions: z, fileInputRef: I, form: D, emailChangeForm: X, passwordForm: O, errors: L, hasChanges: j, isPasswordFormValid: K, isEmailChangeFormValid: we, passwordLastUpdated: ae, getInitials: Ve, fetchUserProfile: ye, clearMessages: ue, handleUpdateProfile: Me, handlePasswordChange: Pe, handleEmailChange: Fe, triggerFileUpload: ze, handleFileSelect: Be, uploadAvatar: xe, handleMFAToggle: () => {
2848
+ i("mfa-toggle", !N.value?.mfaEnabled);
2854
2849
  }, handleCancel: () => {
2855
- const b = S.value;
2856
- b && (h.firstName = b.firstName, h.lastName = b.lastName, h.email = b.email, h.phone = b.phone || ""), M(), f.value = !1, v.current = "", v.new = "", v.confirm = "";
2850
+ const w = N.value;
2851
+ w && (D.firstName = w.firstName || "", D.lastName = w.lastName || "", D.email = w.email), ue(), c.value = !1, F.value = !1, O.current = "", O.new = "", O.confirm = "", X.newEmail = "", X.password = "", X.errors.newEmail = "", X.errors.password = "";
2857
2852
  }, get StrandsUiButton() {
2858
- return $;
2853
+ return le;
2859
2854
  }, get StrandsUiInput() {
2860
- return ee;
2855
+ return Ae;
2861
2856
  }, get StrandsUiLink() {
2862
- return te;
2863
- }, StrandsSecuredFooter: ie };
2864
- return Object.defineProperty(I, "__isScriptSetup", { enumerable: !1, value: !0 }), I;
2857
+ return de;
2858
+ }, get StrandsUiLoader() {
2859
+ return Se;
2860
+ }, StrandsSecuredFooter: pe };
2861
+ return Object.defineProperty(Ue, "__isScriptSetup", { enumerable: !1, value: !0 }), Ue;
2865
2862
  }
2866
- }), Rr = { class: "w-full min-w-xl max-w-2xl mx-auto animate-slide-up" }, Gr = { class: "card-modern" }, Jr = { class: "flex flex-col items-center mb-8" }, _r = { class: "relative group" }, $r = { class: "w-24 h-24 rounded-full bg-gradient-to-r from-strands-400 to-strands-600 flex items-center justify-center text-white text-2xl font-bold shadow-large" }, es = { class: "grid grid-cols-1 md:grid-cols-2 gap-6" }, ts = { class: "space-y-4" }, rs = { class: "space-y-4" }, ss = { class: "space-y-4 p-4 bg-gray-50 rounded-xl" }, as = { class: "flex items-center justify-between" }, ns = {
2863
+ }), ns = { class: "w-full min-w-xl max-w-2xl mx-auto animate-slide-up" }, os = { class: "card-modern" }, is = { class: "flex flex-col items-center mb-8" }, ls = { class: "relative group" }, As = {
2867
2864
  key: 0,
2868
- class: "space-y-3"
2869
- }, os = { class: "p-4 bg-gray-50 rounded-xl" }, is = { class: "flex items-center justify-between" }, ls = { class: "text-sm text-gray-600" }, As = { class: "p-4 bg-gray-50 rounded-xl" }, ds = { class: "flex items-center justify-between" }, us = { class: "text-sm text-gray-600" }, cs = { class: "flex flex-col sm:flex-row gap-3 pt-6 border-t border-gray-200" }, ms = {
2865
+ class: "w-24 h-24 rounded-full shadow-large overflow-hidden"
2866
+ }, ds = ["src", "alt"], us = {
2867
+ key: 1,
2868
+ class: "w-24 h-24 rounded-full bg-gradient-to-r from-strands-400 to-strands-600 flex items-center justify-center text-white text-2xl font-bold shadow-large"
2869
+ }, cs = ["disabled"], ms = {
2870
+ key: 1,
2871
+ class: "w-6 h-6 text-white",
2872
+ fill: "none",
2873
+ stroke: "currentColor",
2874
+ viewBox: "0 0 24 24"
2875
+ }, fs = ["disabled"], gs = { class: "grid grid-cols-1 md:grid-cols-2 gap-6" }, vs = { class: "space-y-4" }, ps = { class: "space-y-4 p-4 bg-gray-50 rounded-xl" }, ws = { class: "flex items-center justify-between" }, hs = { class: "text-sm text-gray-600" }, ys = {
2876
+ key: 0,
2877
+ class: "text-sm text-amber-600 font-medium"
2878
+ }, bs = {
2879
+ key: 0,
2880
+ class: "space-y-3 overflow-hidden"
2881
+ }, Ss = { class: "space-y-4" }, Cs = { class: "space-y-4 p-4 bg-gray-50 rounded-xl" }, qs = { class: "flex items-center justify-between" }, Vs = { class: "text-sm text-gray-600" }, xs = {
2882
+ key: 0,
2883
+ class: "space-y-3 overflow-hidden"
2884
+ }, Us = { class: "p-4 bg-gray-50 rounded-xl" }, Ws = { class: "flex items-center justify-between" }, ks = { class: "text-sm text-gray-600" }, Ns = { class: "p-4 bg-gray-50 rounded-xl" }, Ls = { class: "flex items-center justify-between" }, Ms = { class: "text-sm text-gray-600" }, Ps = {
2885
+ key: 0,
2886
+ class: "flex flex-col sm:flex-row gap-3 pt-6 border-t border-gray-200 animate-slide-up"
2887
+ }, Fs = {
2870
2888
  key: 0,
2871
2889
  class: "mt-6 animate-fade-in"
2872
- }, fs = { class: "alert-success" }, gs = { class: "flex items-start gap-3" }, ps = { class: "font-medium" }, vs = {
2890
+ }, zs = { class: "alert-success" }, Bs = { class: "flex items-start gap-3" }, Is = { class: "font-medium" }, Xs = {
2873
2891
  key: 1,
2874
2892
  class: "mt-6 animate-fade-in"
2875
- }, ys = { class: "alert-error" }, bs = { class: "flex items-start gap-3" }, hs = { class: "font-medium" }, ws = {
2893
+ }, Ds = { class: "alert-error" }, js = { class: "flex items-start gap-3" }, Ts = { class: "font-medium" }, Zs = {
2876
2894
  key: 2,
2877
2895
  class: "mt-6 text-center"
2878
- }, Ss = { class: "text-gray-400 text-sm" };
2879
- function qs(o, t, a, e, l, u) {
2880
- return i(), A("div", Rr, [
2881
- r("div", Gr, [
2896
+ }, Es = { class: "text-gray-400 text-sm" };
2897
+ function Ys(o, t, a, e, i, u) {
2898
+ return l(), A("div", ns, [
2899
+ r("div", os, [
2882
2900
  n(" Header "),
2883
- t[23] || (t[23] = r(
2901
+ t[24] || (t[24] = r(
2884
2902
  "div",
2885
2903
  { class: "text-center mb-8" },
2886
2904
  [
@@ -2891,63 +2909,89 @@ function qs(o, t, a, e, l, u) {
2891
2909
  /* CACHED */
2892
2910
  )),
2893
2911
  n(" Profile Image Section "),
2894
- r("div", Jr, [
2895
- r("div", _r, [
2896
- r(
2912
+ r("div", is, [
2913
+ r("div", ls, [
2914
+ e.currentUser?.avatar ? (l(), A("div", As, [
2915
+ r("img", {
2916
+ src: e.currentUser.avatar,
2917
+ alt: `${e.currentUser.firstName} ${e.currentUser.lastName}`,
2918
+ class: "w-full h-full object-cover"
2919
+ }, null, 8, ds)
2920
+ ])) : (l(), A(
2897
2921
  "div",
2898
- $r,
2899
- k(e.getInitials(e.currentUser?.firstName, e.currentUser?.lastName)),
2922
+ us,
2923
+ U(e.getInitials(e.currentUser?.firstName, e.currentUser?.lastName)),
2900
2924
  1
2901
2925
  /* TEXT */
2902
- ),
2926
+ )),
2903
2927
  r("button", {
2904
2928
  class: "absolute inset-0 rounded-full bg-black/40 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200",
2905
- onClick: e.handleImageUpload
2906
- }, t[9] || (t[9] = [
2907
- r(
2908
- "svg",
2909
- {
2910
- class: "w-6 h-6 text-white",
2911
- fill: "none",
2912
- stroke: "currentColor",
2913
- viewBox: "0 0 24 24"
2914
- },
2915
- [
2916
- r("path", {
2929
+ onClick: e.triggerFileUpload,
2930
+ disabled: e.uploading
2931
+ }, [
2932
+ e.uploading ? (l(), $(e.StrandsUiLoader, {
2933
+ key: 0,
2934
+ size: 24,
2935
+ variant: "dark"
2936
+ })) : (l(), A("svg", ms, t[10] || (t[10] = [
2937
+ r(
2938
+ "path",
2939
+ {
2917
2940
  "stroke-linecap": "round",
2918
2941
  "stroke-linejoin": "round",
2919
2942
  "stroke-width": "2",
2920
2943
  d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"
2921
- }),
2922
- r("path", {
2944
+ },
2945
+ null,
2946
+ -1
2947
+ /* CACHED */
2948
+ ),
2949
+ r(
2950
+ "path",
2951
+ {
2923
2952
  "stroke-linecap": "round",
2924
2953
  "stroke-linejoin": "round",
2925
2954
  "stroke-width": "2",
2926
2955
  d: "M15 13a3 3 0 11-6 0 3 3 0 016 0z"
2927
- })
2928
- ],
2929
- -1
2930
- /* CACHED */
2931
- )
2932
- ]))
2956
+ },
2957
+ null,
2958
+ -1
2959
+ /* CACHED */
2960
+ )
2961
+ ])))
2962
+ ], 8, cs)
2933
2963
  ]),
2934
2964
  r("button", {
2935
- class: "mt-3 text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200",
2936
- onClick: e.handleImageUpload
2937
- }, " Change photo ")
2965
+ class: "mt-3 text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200 disabled:opacity-50",
2966
+ onClick: e.triggerFileUpload,
2967
+ disabled: e.uploading
2968
+ }, U(e.uploading ? "Uploading..." : "Change photo"), 9, fs),
2969
+ r(
2970
+ "input",
2971
+ {
2972
+ ref: "fileInputRef",
2973
+ type: "file",
2974
+ accept: "image/*",
2975
+ class: "hidden",
2976
+ onChange: e.handleFileSelect
2977
+ },
2978
+ null,
2979
+ 544
2980
+ /* NEED_HYDRATION, NEED_PATCH */
2981
+ )
2938
2982
  ]),
2939
2983
  n(" Profile Form "),
2940
2984
  r(
2941
2985
  "form",
2942
2986
  {
2943
- onSubmit: ae(e.handleUpdateProfile, ["prevent"]),
2987
+ onSubmit: fe(e.handleUpdateProfile, ["prevent"]),
2944
2988
  class: "space-y-6"
2945
2989
  },
2946
2990
  [
2947
- r("div", es, [
2991
+ r("div", gs, [
2948
2992
  n(" Personal Information "),
2949
- r("div", ts, [
2950
- t[11] || (t[11] = r(
2993
+ r("div", vs, [
2994
+ t[12] || (t[12] = r(
2951
2995
  "h3",
2952
2996
  { class: "text-lg font-semibold text-gray-900 mb-4" },
2953
2997
  "Personal Information",
@@ -2962,7 +3006,6 @@ function qs(o, t, a, e, l, u) {
2962
3006
  label: "First name",
2963
3007
  placeholder: "Enter your first name",
2964
3008
  autocomplete: "given-name",
2965
- required: "",
2966
3009
  disabled: e.loading || e.fetchingProfile,
2967
3010
  error: e.errors.firstName
2968
3011
  }, null, 8, ["modelValue", "disabled", "error"]),
@@ -2974,54 +3017,90 @@ function qs(o, t, a, e, l, u) {
2974
3017
  label: "Last name",
2975
3018
  placeholder: "Enter your last name",
2976
3019
  autocomplete: "family-name",
2977
- required: "",
2978
3020
  disabled: e.loading || e.fetchingProfile,
2979
3021
  error: e.errors.lastName
2980
3022
  }, null, 8, ["modelValue", "disabled", "error"]),
2981
- d(e.StrandsUiInput, {
2982
- id: "email",
2983
- modelValue: e.form.email,
2984
- "onUpdate:modelValue": t[2] || (t[2] = (s) => e.form.email = s),
2985
- type: "email",
2986
- label: "Email address",
2987
- placeholder: "Enter your email address",
2988
- autocomplete: "email",
2989
- required: "",
2990
- disabled: e.loading || e.fetchingProfile,
2991
- error: e.errors.email
2992
- }, Ve({
2993
- _: 2
2994
- /* DYNAMIC */
2995
- }, [
2996
- e.form.email !== e.currentUser?.email ? {
2997
- name: "help",
2998
- fn: y(() => [
2999
- t[10] || (t[10] = r(
3000
- "p",
3001
- { class: "text-yellow-600" },
3002
- "Changing your email will require verification",
3023
+ n(" Email Change Section "),
3024
+ r("div", ps, [
3025
+ r("div", ws, [
3026
+ r("div", null, [
3027
+ t[11] || (t[11] = r(
3028
+ "h4",
3029
+ { class: "font-medium text-gray-900" },
3030
+ "Email Address",
3003
3031
  -1
3004
3032
  /* CACHED */
3005
- ))
3033
+ )),
3034
+ r(
3035
+ "p",
3036
+ hs,
3037
+ U(e.currentUser?.email),
3038
+ 1
3039
+ /* TEXT */
3040
+ ),
3041
+ e.currentUser?.emailVerified ? n("v-if", !0) : (l(), A("p", ys, "⚠️ Email not verified"))
3006
3042
  ]),
3007
- key: "0"
3008
- } : void 0
3009
- ]), 1032, ["modelValue", "disabled", "error"]),
3010
- d(e.StrandsUiInput, {
3011
- id: "phone",
3012
- modelValue: e.form.phone,
3013
- "onUpdate:modelValue": t[3] || (t[3] = (s) => e.form.phone = s),
3014
- type: "tel",
3015
- label: "Phone number",
3016
- placeholder: "Enter your phone number",
3017
- autocomplete: "tel",
3018
- disabled: e.loading || e.fetchingProfile,
3019
- error: e.errors.phone
3020
- }, null, 8, ["modelValue", "disabled", "error"])
3043
+ d(e.StrandsUiButton, {
3044
+ variant: "secondary",
3045
+ size: "sm",
3046
+ onClick: t[2] || (t[2] = (s) => e.showEmailChange = !e.showEmailChange)
3047
+ }, {
3048
+ default: v(() => [
3049
+ V(
3050
+ U(e.showEmailChange ? "Cancel" : "Change"),
3051
+ 1
3052
+ /* TEXT */
3053
+ )
3054
+ ]),
3055
+ _: 1
3056
+ /* STABLE */
3057
+ })
3058
+ ]),
3059
+ d(ee, { name: "expand" }, {
3060
+ default: v(() => [
3061
+ e.showEmailChange ? (l(), A("div", bs, [
3062
+ d(e.StrandsUiInput, {
3063
+ modelValue: e.emailChangeForm.newEmail,
3064
+ "onUpdate:modelValue": t[3] || (t[3] = (s) => e.emailChangeForm.newEmail = s),
3065
+ type: "email",
3066
+ placeholder: "New email address",
3067
+ autocomplete: "email",
3068
+ error: e.emailChangeForm.errors.newEmail
3069
+ }, null, 8, ["modelValue", "error"]),
3070
+ d(e.StrandsUiInput, {
3071
+ modelValue: e.emailChangeForm.password,
3072
+ "onUpdate:modelValue": t[4] || (t[4] = (s) => e.emailChangeForm.password = s),
3073
+ type: "password",
3074
+ placeholder: "Current password",
3075
+ autocomplete: "current-password",
3076
+ error: e.emailChangeForm.errors.password
3077
+ }, null, 8, ["modelValue", "error"]),
3078
+ d(e.StrandsUiButton, {
3079
+ variant: "primary",
3080
+ size: "sm",
3081
+ onClick: e.handleEmailChange,
3082
+ disabled: !e.isEmailChangeFormValid || e.emailChangeLoading
3083
+ }, {
3084
+ default: v(() => [
3085
+ V(
3086
+ U(e.emailChangeLoading ? "Updating..." : "Update Email"),
3087
+ 1
3088
+ /* TEXT */
3089
+ )
3090
+ ]),
3091
+ _: 1
3092
+ /* STABLE */
3093
+ }, 8, ["disabled"])
3094
+ ])) : n("v-if", !0)
3095
+ ]),
3096
+ _: 1
3097
+ /* STABLE */
3098
+ })
3099
+ ])
3021
3100
  ]),
3022
3101
  n(" Security Settings "),
3023
- r("div", rs, [
3024
- t[17] || (t[17] = r(
3102
+ r("div", Ss, [
3103
+ t[18] || (t[18] = r(
3025
3104
  "h3",
3026
3105
  { class: "text-lg font-semibold text-gray-900 mb-4" },
3027
3106
  "Security Settings",
@@ -3029,26 +3108,32 @@ function qs(o, t, a, e, l, u) {
3029
3108
  /* CACHED */
3030
3109
  )),
3031
3110
  n(" Password Change "),
3032
- r("div", ss, [
3033
- r("div", as, [
3034
- t[12] || (t[12] = r(
3035
- "div",
3036
- null,
3037
- [
3038
- r("h4", { class: "font-medium text-gray-900" }, "Password"),
3039
- r("p", { class: "text-sm text-gray-600" }, "Last updated 30 days ago")
3040
- ],
3041
- -1
3042
- /* CACHED */
3043
- )),
3111
+ r("div", Cs, [
3112
+ r("div", qs, [
3113
+ r("div", null, [
3114
+ t[13] || (t[13] = r(
3115
+ "h4",
3116
+ { class: "font-medium text-gray-900" },
3117
+ "Password",
3118
+ -1
3119
+ /* CACHED */
3120
+ )),
3121
+ r(
3122
+ "p",
3123
+ Vs,
3124
+ "Last updated " + U(e.passwordLastUpdated),
3125
+ 1
3126
+ /* TEXT */
3127
+ )
3128
+ ]),
3044
3129
  d(e.StrandsUiButton, {
3045
3130
  variant: "secondary",
3046
3131
  size: "sm",
3047
- onClick: t[4] || (t[4] = (s) => e.showPasswordChange = !e.showPasswordChange)
3132
+ onClick: t[5] || (t[5] = (s) => e.showPasswordChange = !e.showPasswordChange)
3048
3133
  }, {
3049
- default: y(() => [
3134
+ default: v(() => [
3050
3135
  V(
3051
- k(e.showPasswordChange ? "Cancel" : "Change"),
3136
+ U(e.showPasswordChange ? "Cancel" : "Change"),
3052
3137
  1
3053
3138
  /* TEXT */
3054
3139
  )
@@ -3057,51 +3142,57 @@ function qs(o, t, a, e, l, u) {
3057
3142
  /* STABLE */
3058
3143
  })
3059
3144
  ]),
3060
- e.showPasswordChange ? (i(), A("div", ns, [
3061
- d(e.StrandsUiInput, {
3062
- modelValue: e.passwordForm.current,
3063
- "onUpdate:modelValue": t[5] || (t[5] = (s) => e.passwordForm.current = s),
3064
- type: "password",
3065
- placeholder: "Current password",
3066
- autocomplete: "current-password"
3067
- }, null, 8, ["modelValue"]),
3068
- d(e.StrandsUiInput, {
3069
- modelValue: e.passwordForm.new,
3070
- "onUpdate:modelValue": t[6] || (t[6] = (s) => e.passwordForm.new = s),
3071
- type: "password",
3072
- placeholder: "New password",
3073
- autocomplete: "new-password"
3074
- }, null, 8, ["modelValue"]),
3075
- d(e.StrandsUiInput, {
3076
- modelValue: e.passwordForm.confirm,
3077
- "onUpdate:modelValue": t[7] || (t[7] = (s) => e.passwordForm.confirm = s),
3078
- type: "password",
3079
- placeholder: "Confirm new password",
3080
- autocomplete: "new-password"
3081
- }, null, 8, ["modelValue"]),
3082
- d(e.StrandsUiButton, {
3083
- variant: "primary",
3084
- size: "sm",
3085
- onClick: e.handlePasswordChange,
3086
- disabled: !e.isPasswordFormValid
3087
- }, {
3088
- default: y(() => t[13] || (t[13] = [
3089
- V(
3090
- " Update Password ",
3091
- -1
3092
- /* CACHED */
3093
- )
3094
- ])),
3095
- _: 1,
3096
- __: [13]
3097
- }, 8, ["disabled"])
3098
- ])) : n("v-if", !0)
3145
+ d(ee, { name: "expand" }, {
3146
+ default: v(() => [
3147
+ e.showPasswordChange ? (l(), A("div", xs, [
3148
+ d(e.StrandsUiInput, {
3149
+ modelValue: e.passwordForm.current,
3150
+ "onUpdate:modelValue": t[6] || (t[6] = (s) => e.passwordForm.current = s),
3151
+ type: "password",
3152
+ placeholder: "Current password",
3153
+ autocomplete: "current-password"
3154
+ }, null, 8, ["modelValue"]),
3155
+ d(e.StrandsUiInput, {
3156
+ modelValue: e.passwordForm.new,
3157
+ "onUpdate:modelValue": t[7] || (t[7] = (s) => e.passwordForm.new = s),
3158
+ type: "password",
3159
+ placeholder: "New password",
3160
+ autocomplete: "new-password"
3161
+ }, null, 8, ["modelValue"]),
3162
+ d(e.StrandsUiInput, {
3163
+ modelValue: e.passwordForm.confirm,
3164
+ "onUpdate:modelValue": t[8] || (t[8] = (s) => e.passwordForm.confirm = s),
3165
+ type: "password",
3166
+ placeholder: "Confirm new password",
3167
+ autocomplete: "new-password"
3168
+ }, null, 8, ["modelValue"]),
3169
+ d(e.StrandsUiButton, {
3170
+ variant: "primary",
3171
+ size: "sm",
3172
+ onClick: e.handlePasswordChange,
3173
+ disabled: !e.isPasswordFormValid
3174
+ }, {
3175
+ default: v(() => t[14] || (t[14] = [
3176
+ V(
3177
+ " Update Password ",
3178
+ -1
3179
+ /* CACHED */
3180
+ )
3181
+ ])),
3182
+ _: 1,
3183
+ __: [14]
3184
+ }, 8, ["disabled"])
3185
+ ])) : n("v-if", !0)
3186
+ ]),
3187
+ _: 1
3188
+ /* STABLE */
3189
+ })
3099
3190
  ]),
3100
3191
  n(" Two-Factor Authentication "),
3101
- r("div", os, [
3102
- r("div", is, [
3192
+ r("div", Us, [
3193
+ r("div", Ws, [
3103
3194
  r("div", null, [
3104
- t[14] || (t[14] = r(
3195
+ t[15] || (t[15] = r(
3105
3196
  "h4",
3106
3197
  { class: "font-medium text-gray-900" },
3107
3198
  "Two-Factor Authentication",
@@ -3110,8 +3201,8 @@ function qs(o, t, a, e, l, u) {
3110
3201
  )),
3111
3202
  r(
3112
3203
  "p",
3113
- ls,
3114
- k(e.currentUser?.mfaEnabled ? "Enabled" : "Add extra security to your account"),
3204
+ ks,
3205
+ U(e.currentUser?.mfaEnabled ? "Enabled" : "Add extra security to your account"),
3115
3206
  1
3116
3207
  /* TEXT */
3117
3208
  )
@@ -3121,9 +3212,9 @@ function qs(o, t, a, e, l, u) {
3121
3212
  size: "sm",
3122
3213
  onClick: e.handleMFAToggle
3123
3214
  }, {
3124
- default: y(() => [
3215
+ default: v(() => [
3125
3216
  V(
3126
- k(e.currentUser?.mfaEnabled ? "Disable" : "Enable"),
3217
+ U(e.currentUser?.mfaEnabled ? "Disable" : "Enable"),
3127
3218
  1
3128
3219
  /* TEXT */
3129
3220
  )
@@ -3134,10 +3225,10 @@ function qs(o, t, a, e, l, u) {
3134
3225
  ])
3135
3226
  ]),
3136
3227
  n(" Active Sessions "),
3137
- r("div", As, [
3138
- r("div", ds, [
3228
+ r("div", Ns, [
3229
+ r("div", Ls, [
3139
3230
  r("div", null, [
3140
- t[15] || (t[15] = r(
3231
+ t[16] || (t[16] = r(
3141
3232
  "h4",
3142
3233
  { class: "font-medium text-gray-900" },
3143
3234
  "Active Sessions",
@@ -3146,8 +3237,8 @@ function qs(o, t, a, e, l, u) {
3146
3237
  )),
3147
3238
  r(
3148
3239
  "p",
3149
- us,
3150
- k(e.activeSessions.length) + " active device(s)",
3240
+ Ms,
3241
+ U(e.activeSessions.length) + " active device(s)",
3151
3242
  1
3152
3243
  /* TEXT */
3153
3244
  )
@@ -3155,33 +3246,34 @@ function qs(o, t, a, e, l, u) {
3155
3246
  d(e.StrandsUiButton, {
3156
3247
  variant: "secondary",
3157
3248
  size: "sm",
3158
- onClick: t[8] || (t[8] = (s) => o.$emit("manage-sessions"))
3249
+ onClick: t[9] || (t[9] = (s) => o.$emit("manage-sessions")),
3250
+ disabled: ""
3159
3251
  }, {
3160
- default: y(() => t[16] || (t[16] = [
3252
+ default: v(() => t[17] || (t[17] = [
3161
3253
  V(
3162
- " Manage ",
3254
+ " Coming Soon ",
3163
3255
  -1
3164
3256
  /* CACHED */
3165
3257
  )
3166
3258
  ])),
3167
3259
  _: 1,
3168
- __: [16]
3260
+ __: [17]
3169
3261
  })
3170
3262
  ])
3171
3263
  ])
3172
3264
  ])
3173
3265
  ]),
3174
- n(" Action Buttons "),
3175
- r("div", cs, [
3266
+ n(" Action Buttons - Only show when changes are made "),
3267
+ e.hasChanges ? (l(), A("div", Ps, [
3176
3268
  d(e.StrandsUiButton, {
3177
3269
  type: "submit",
3178
3270
  variant: "primary",
3179
- disabled: e.loading || !e.hasChanges,
3271
+ disabled: e.loading,
3180
3272
  loading: e.loading
3181
3273
  }, {
3182
- default: y(() => [
3274
+ default: v(() => [
3183
3275
  V(
3184
- k(e.loading ? "Saving changes..." : "Save changes"),
3276
+ U(e.loading ? "Saving changes..." : "Save changes"),
3185
3277
  1
3186
3278
  /* TEXT */
3187
3279
  )
@@ -3194,7 +3286,7 @@ function qs(o, t, a, e, l, u) {
3194
3286
  onClick: e.handleCancel,
3195
3287
  disabled: e.loading
3196
3288
  }, {
3197
- default: y(() => t[18] || (t[18] = [
3289
+ default: v(() => t[19] || (t[19] = [
3198
3290
  V(
3199
3291
  " Cancel ",
3200
3292
  -1
@@ -3202,18 +3294,18 @@ function qs(o, t, a, e, l, u) {
3202
3294
  )
3203
3295
  ])),
3204
3296
  _: 1,
3205
- __: [18]
3297
+ __: [19]
3206
3298
  }, 8, ["disabled"])
3207
- ])
3299
+ ])) : n("v-if", !0)
3208
3300
  ],
3209
3301
  32
3210
3302
  /* NEED_HYDRATION */
3211
3303
  ),
3212
3304
  n(" Success/Error Messages "),
3213
- e.successMessage ? (i(), A("div", ms, [
3214
- r("div", fs, [
3215
- r("div", gs, [
3216
- t[19] || (t[19] = r(
3305
+ e.successMessage ? (l(), A("div", Fs, [
3306
+ r("div", zs, [
3307
+ r("div", Bs, [
3308
+ t[20] || (t[20] = r(
3217
3309
  "svg",
3218
3310
  {
3219
3311
  class: "w-4 h-4 mt-0.5 flex-shrink-0",
@@ -3232,18 +3324,18 @@ function qs(o, t, a, e, l, u) {
3232
3324
  )),
3233
3325
  r(
3234
3326
  "p",
3235
- ps,
3236
- k(e.successMessage),
3327
+ Is,
3328
+ U(e.successMessage),
3237
3329
  1
3238
3330
  /* TEXT */
3239
3331
  )
3240
3332
  ])
3241
3333
  ])
3242
3334
  ])) : n("v-if", !0),
3243
- e.errorMessage ? (i(), A("div", vs, [
3244
- r("div", ys, [
3245
- r("div", bs, [
3246
- t[20] || (t[20] = r(
3335
+ e.errorMessage ? (l(), A("div", Xs, [
3336
+ r("div", Ds, [
3337
+ r("div", js, [
3338
+ t[21] || (t[21] = r(
3247
3339
  "svg",
3248
3340
  {
3249
3341
  class: "w-4 h-4 mt-0.5 flex-shrink-0",
@@ -3262,8 +3354,8 @@ function qs(o, t, a, e, l, u) {
3262
3354
  )),
3263
3355
  r(
3264
3356
  "p",
3265
- hs,
3266
- k(e.errorMessage),
3357
+ Ts,
3358
+ U(e.errorMessage),
3267
3359
  1
3268
3360
  /* TEXT */
3269
3361
  )
@@ -3271,9 +3363,9 @@ function qs(o, t, a, e, l, u) {
3271
3363
  ])
3272
3364
  ])) : n("v-if", !0),
3273
3365
  n(" Need help "),
3274
- e.getSupportEmail() ? (i(), A("div", ws, [
3275
- r("p", Ss, [
3276
- t[22] || (t[22] = V(
3366
+ e.getSupportEmail() ? (l(), A("div", Zs, [
3367
+ r("p", Es, [
3368
+ t[23] || (t[23] = V(
3277
3369
  " Need help? ",
3278
3370
  -1
3279
3371
  /* CACHED */
@@ -3282,7 +3374,7 @@ function qs(o, t, a, e, l, u) {
3282
3374
  variant: "primary",
3283
3375
  href: `mailto:${e.getSupportEmail()}`
3284
3376
  }, {
3285
- default: y(() => t[21] || (t[21] = [
3377
+ default: v(() => t[22] || (t[22] = [
3286
3378
  V(
3287
3379
  " Contact Support ",
3288
3380
  -1
@@ -3290,7 +3382,7 @@ function qs(o, t, a, e, l, u) {
3290
3382
  )
3291
3383
  ])),
3292
3384
  _: 1,
3293
- __: [21]
3385
+ __: [22]
3294
3386
  }, 8, ["href"])
3295
3387
  ])
3296
3388
  ])) : n("v-if", !0),
@@ -3301,7 +3393,7 @@ function qs(o, t, a, e, l, u) {
3301
3393
  ])
3302
3394
  ]);
3303
3395
  }
3304
- const Aa = /* @__PURE__ */ D(Hr, [["render", qs], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsUserProfile.vue"]]), Vs = /* @__PURE__ */ X({
3396
+ const La = /* @__PURE__ */ E(as, [["render", Ys], ["__scopeId", "data-v-9670e06b"], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsUserProfile.vue"]]), Os = /* @__PURE__ */ Z({
3305
3397
  __name: "StrandsPasswordReset",
3306
3398
  props: {
3307
3399
  config: { type: Object, required: !1 }
@@ -3309,38 +3401,38 @@ const Aa = /* @__PURE__ */ D(Hr, [["render", qs], ["__file", "/home/runner/work/
3309
3401
  emits: ["success", "error", "back-to-signin"],
3310
3402
  setup(o, { expose: t, emit: a }) {
3311
3403
  t();
3312
- const e = o, l = a, { getSupportEmail: u } = _(e.config), s = U(!1), g = U(""), w = U(!1), x = G({
3404
+ const e = o, i = a, { getSupportEmail: u } = se(e.config), s = q(!1), g = q(""), h = q(!1), S = te({
3313
3405
  email: ""
3314
- }), m = { props: e, emit: l, getSupportEmail: u, loading: s, error: g, isSubmitted: w, form: x, handlePasswordReset: async () => {
3406
+ }), m = { props: e, emit: i, getSupportEmail: u, loading: s, error: g, isSubmitted: h, form: S, handlePasswordReset: async () => {
3315
3407
  s.value = !0, g.value = "";
3316
3408
  try {
3317
- console.log("Password reset request:", { email: x.email }), await new Promise((S) => setTimeout(S, 1e3)), w.value = !0, l("success", x.email);
3409
+ console.log("Password reset request:", { email: S.email }), await new Promise((y) => setTimeout(y, 1e3)), h.value = !0, i("success", S.email);
3318
3410
  } catch {
3319
- g.value = "Failed to send password reset email. Please try again.", l("error", g.value);
3411
+ g.value = "Failed to send password reset email. Please try again.", i("error", g.value);
3320
3412
  } finally {
3321
3413
  s.value = !1;
3322
3414
  }
3323
3415
  }, get StrandsUiCard() {
3324
- return oe;
3416
+ return ve;
3325
3417
  }, get StrandsUiButton() {
3326
- return $;
3418
+ return le;
3327
3419
  }, get StrandsUiInput() {
3328
- return ee;
3420
+ return Ae;
3329
3421
  }, get StrandsUiAlert() {
3330
- return de;
3422
+ return he;
3331
3423
  }, get StrandsUiLink() {
3332
- return te;
3333
- }, StrandsSecuredFooter: ie };
3424
+ return de;
3425
+ }, StrandsSecuredFooter: pe };
3334
3426
  return Object.defineProperty(m, "__isScriptSetup", { enumerable: !1, value: !0 }), m;
3335
3427
  }
3336
- }), Cs = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, xs = { class: "mt-8 text-center" }, Us = {
3428
+ }), Ks = { class: "w-full min-w-100 max-w-md mx-auto animate-slide-up" }, Qs = { class: "mt-8 text-center" }, Hs = {
3337
3429
  key: 2,
3338
3430
  class: "mt-6 text-center"
3339
- }, Ws = { class: "text-neutral-400 text-sm" };
3340
- function ks(o, t, a, e, l, u) {
3341
- return i(), A("div", Cs, [
3431
+ }, Rs = { class: "text-neutral-400 text-sm" };
3432
+ function Gs(o, t, a, e, i, u) {
3433
+ return l(), A("div", Ks, [
3342
3434
  d(e.StrandsUiCard, { variant: "modern" }, {
3343
- default: y(() => [
3435
+ default: v(() => [
3344
3436
  n(" Header "),
3345
3437
  t[6] || (t[6] = r(
3346
3438
  "div",
@@ -3356,7 +3448,7 @@ function ks(o, t, a, e, l, u) {
3356
3448
  r(
3357
3449
  "form",
3358
3450
  {
3359
- onSubmit: ae(e.handlePasswordReset, ["prevent"]),
3451
+ onSubmit: fe(e.handlePasswordReset, ["prevent"]),
3360
3452
  class: "space-y-6"
3361
3453
  },
3362
3454
  [
@@ -3380,9 +3472,9 @@ function ks(o, t, a, e, l, u) {
3380
3472
  loading: e.loading,
3381
3473
  "loading-text": "Sending link..."
3382
3474
  }, {
3383
- default: y(() => [
3475
+ default: v(() => [
3384
3476
  V(
3385
- k(e.isSubmitted ? "Link sent!" : "Send reset link"),
3477
+ U(e.isSubmitted ? "Link sent!" : "Send reset link"),
3386
3478
  1
3387
3479
  /* TEXT */
3388
3480
  )
@@ -3395,14 +3487,14 @@ function ks(o, t, a, e, l, u) {
3395
3487
  /* NEED_HYDRATION */
3396
3488
  ),
3397
3489
  n(" Success Message "),
3398
- e.isSubmitted ? (i(), E(e.StrandsUiAlert, {
3490
+ e.isSubmitted ? (l(), $(e.StrandsUiAlert, {
3399
3491
  key: 0,
3400
3492
  variant: "success",
3401
3493
  message: `Check your email - We've sent a password reset link to ${e.form.email}`,
3402
3494
  class: "mt-6 animate-fade-in"
3403
3495
  }, null, 8, ["message"])) : n("v-if", !0),
3404
3496
  n(" Error Message "),
3405
- e.error ? (i(), E(e.StrandsUiAlert, {
3497
+ e.error ? (l(), $(e.StrandsUiAlert, {
3406
3498
  key: 1,
3407
3499
  variant: "error",
3408
3500
  message: e.error,
@@ -3411,12 +3503,12 @@ function ks(o, t, a, e, l, u) {
3411
3503
  onDismiss: t[1] || (t[1] = (s) => e.error = "")
3412
3504
  }, null, 8, ["message"])) : n("v-if", !0),
3413
3505
  n(" Back to Sign In "),
3414
- r("div", xs, [
3506
+ r("div", Qs, [
3415
3507
  d(e.StrandsUiLink, {
3416
3508
  onClick: t[2] || (t[2] = (s) => o.$emit("back-to-signin")),
3417
3509
  class: "inline-flex items-center gap-2"
3418
3510
  }, {
3419
- default: y(() => t[3] || (t[3] = [
3511
+ default: v(() => t[3] || (t[3] = [
3420
3512
  r(
3421
3513
  "svg",
3422
3514
  {
@@ -3447,8 +3539,8 @@ function ks(o, t, a, e, l, u) {
3447
3539
  })
3448
3540
  ]),
3449
3541
  n(" Need help "),
3450
- e.getSupportEmail() ? (i(), A("div", Us, [
3451
- r("p", Ws, [
3542
+ e.getSupportEmail() ? (l(), A("div", Hs, [
3543
+ r("p", Rs, [
3452
3544
  t[5] || (t[5] = V(
3453
3545
  " Need help? ",
3454
3546
  -1
@@ -3458,7 +3550,7 @@ function ks(o, t, a, e, l, u) {
3458
3550
  variant: "primary",
3459
3551
  href: `mailto:${e.getSupportEmail()}`
3460
3552
  }, {
3461
- default: y(() => t[4] || (t[4] = [
3553
+ default: v(() => t[4] || (t[4] = [
3462
3554
  V(
3463
3555
  " Contact Support ",
3464
3556
  -1
@@ -3480,7 +3572,7 @@ function ks(o, t, a, e, l, u) {
3480
3572
  })
3481
3573
  ]);
3482
3574
  }
3483
- const da = /* @__PURE__ */ D(Vs, [["render", ks], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsPasswordReset.vue"]]), Ns = /* @__PURE__ */ X({
3575
+ const Ma = /* @__PURE__ */ E(Os, [["render", Gs], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsPasswordReset.vue"]]), Js = /* @__PURE__ */ Z({
3484
3576
  __name: "StrandsMFASetup",
3485
3577
  emits: ["success", "error", "back"],
3486
3578
  setup(o, { expose: t }) {
@@ -3488,9 +3580,9 @@ const da = /* @__PURE__ */ D(Vs, [["render", ks], ["__file", "/home/runner/work/
3488
3580
  const a = {};
3489
3581
  return Object.defineProperty(a, "__isScriptSetup", { enumerable: !1, value: !0 }), a;
3490
3582
  }
3491
- }), Ls = { class: "max-w-md mx-auto bg-white rounded-lg shadow-lg p-6" }, Ms = { class: "space-y-6" }, Ps = { class: "flex gap-3 pt-4" };
3492
- function Is(o, t, a, e, l, u) {
3493
- return i(), A("div", Ls, [
3583
+ }), _s = { class: "max-w-md mx-auto bg-white rounded-lg shadow-lg p-6" }, $s = { class: "space-y-6" }, ea = { class: "flex gap-3 pt-4" };
3584
+ function ta(o, t, a, e, i, u) {
3585
+ return l(), A("div", _s, [
3494
3586
  t[5] || (t[5] = r(
3495
3587
  "div",
3496
3588
  { class: "text-center mb-6" },
@@ -3501,9 +3593,9 @@ function Is(o, t, a, e, l, u) {
3501
3593
  -1
3502
3594
  /* CACHED */
3503
3595
  )),
3504
- r("div", Ms, [
3596
+ r("div", $s, [
3505
3597
  n(" QR Code Section "),
3506
- t[2] || (t[2] = ye('<div class="text-center"><div class="w-48 h-48 bg-gray-100 rounded-lg mx-auto mb-4 flex items-center justify-center"><div class="text-gray-400"><svg class="w-12 h-12" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M12 12h.01M12 12v4.01"></path></svg></div></div><p class="text-sm text-gray-600">Scan this QR code with your authenticator app</p></div>', 1)),
3598
+ t[2] || (t[2] = Ne('<div class="text-center"><div class="w-48 h-48 bg-gray-100 rounded-lg mx-auto mb-4 flex items-center justify-center"><div class="text-gray-400"><svg class="w-12 h-12" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v1m6 11h2m-6 0h-2v4m0-11v3m0 0h.01M12 12h4.01M12 12h.01M12 12v4.01"></path></svg></div></div><p class="text-sm text-gray-600">Scan this QR code with your authenticator app</p></div>', 1)),
3507
3599
  n(" Setup Key "),
3508
3600
  t[3] || (t[3] = r(
3509
3601
  "div",
@@ -3533,7 +3625,7 @@ function Is(o, t, a, e, l, u) {
3533
3625
  /* CACHED */
3534
3626
  )),
3535
3627
  n(" Actions "),
3536
- r("div", Ps, [
3628
+ r("div", ea, [
3537
3629
  t[1] || (t[1] = r(
3538
3630
  "button",
3539
3631
  {
@@ -3553,7 +3645,7 @@ function Is(o, t, a, e, l, u) {
3553
3645
  ])
3554
3646
  ]);
3555
3647
  }
3556
- const ua = /* @__PURE__ */ D(Ns, [["render", Is], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsMFASetup.vue"]]), zs = /* @__PURE__ */ X({
3648
+ const Pa = /* @__PURE__ */ E(Js, [["render", ta], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsMFASetup.vue"]]), ra = /* @__PURE__ */ Z({
3557
3649
  __name: "SignedIn",
3558
3650
  props: {
3559
3651
  showFallback: { type: Boolean, required: !1, default: !0 }
@@ -3561,48 +3653,48 @@ const ua = /* @__PURE__ */ D(Ns, [["render", Is], ["__file", "/home/runner/work/
3561
3653
  emits: ["sign-in-required"],
3562
3654
  setup(o, { expose: t, emit: a }) {
3563
3655
  t();
3564
- const e = a, l = U(!1), { isAuthenticated: u, isLoading: s, user: g, signOut: w } = ne(), x = C(() => s.value || !l.value);
3565
- J(() => {
3656
+ const e = a, i = q(!1), { isAuthenticated: u, isLoading: s, user: g, signOut: h } = ge(), S = x(() => s.value || !i.value);
3657
+ re(() => {
3566
3658
  setTimeout(() => {
3567
- l.value = !0;
3659
+ i.value = !0;
3568
3660
  }, 100);
3569
3661
  });
3570
- const m = { emit: e, isComponentReady: l, isAuthenticated: u, isLoading: s, user: g, signOut: w, showLoading: x, signIn: () => {
3662
+ const m = { emit: e, isComponentReady: i, isAuthenticated: u, isLoading: s, user: g, signOut: h, showLoading: S, signIn: () => {
3571
3663
  e("sign-in-required");
3572
3664
  }, get StrandsUiLoader() {
3573
- return me;
3665
+ return Se;
3574
3666
  } };
3575
3667
  return Object.defineProperty(m, "__isScriptSetup", { enumerable: !1, value: !0 }), m;
3576
3668
  }
3577
- }), Bs = {
3669
+ }), sa = {
3578
3670
  key: 0,
3579
3671
  class: "animate-fade-in"
3580
- }, Fs = {
3672
+ }, aa = {
3581
3673
  key: 1,
3582
3674
  class: "animate-fade-in"
3583
- }, Xs = {
3675
+ }, na = {
3584
3676
  key: 2,
3585
3677
  class: "animate-fade-in py-8"
3586
3678
  };
3587
- function Ds(o, t, a, e, l, u) {
3588
- return e.isAuthenticated && !e.showLoading ? (i(), A("div", Bs, [
3589
- Z(o.$slots, "default", {
3679
+ function oa(o, t, a, e, i, u) {
3680
+ return e.isAuthenticated && !e.showLoading ? (l(), A("div", sa, [
3681
+ R(o.$slots, "default", {
3590
3682
  user: e.user,
3591
3683
  signOut: e.signOut
3592
3684
  })
3593
- ])) : a.showFallback && !e.showLoading ? (i(), A("div", Fs, [
3594
- Z(o.$slots, "fallback", { signIn: e.signIn }, () => [
3685
+ ])) : a.showFallback && !e.showLoading ? (l(), A("div", aa, [
3686
+ R(o.$slots, "fallback", { signIn: e.signIn }, () => [
3595
3687
  n(" Default fallback content "),
3596
3688
  r("div", { class: "text-center py-8" }, [
3597
- t[0] || (t[0] = ye('<div class="w-16 h-16 mx-auto mb-4 bg-neutral-100 rounded-full flex items-center justify-center"><svg class="w-8 h-8 text-neutral-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg></div><h3 class="text-lg font-semibold text-neutral-900 mb-2">Sign in required</h3><p class="text-neutral-600 mb-4">You need to be signed in to access this content.</p>', 3)),
3689
+ t[0] || (t[0] = Ne('<div class="w-16 h-16 mx-auto mb-4 bg-neutral-100 rounded-full flex items-center justify-center"><svg class="w-8 h-8 text-neutral-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg></div><h3 class="text-lg font-semibold text-neutral-900 mb-2">Sign in required</h3><p class="text-neutral-600 mb-4">You need to be signed in to access this content.</p>', 3)),
3598
3690
  r("button", {
3599
3691
  onClick: e.signIn,
3600
3692
  class: "btn-primary !w-auto px-6 py-2"
3601
3693
  }, " Sign in ")
3602
3694
  ])
3603
3695
  ])
3604
- ])) : e.showLoading ? (i(), A("div", Xs, [
3605
- Z(o.$slots, "loading", {}, () => [
3696
+ ])) : e.showLoading ? (l(), A("div", na, [
3697
+ R(o.$slots, "loading", {}, () => [
3606
3698
  d(e.StrandsUiLoader, {
3607
3699
  size: 64,
3608
3700
  text: "Checking authentication...",
@@ -3612,7 +3704,7 @@ function Ds(o, t, a, e, l, u) {
3612
3704
  ])
3613
3705
  ])) : n("v-if", !0);
3614
3706
  }
3615
- const ca = /* @__PURE__ */ D(zs, [["render", Ds], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SignedIn.vue"]]), js = /* @__PURE__ */ X({
3707
+ const Fa = /* @__PURE__ */ E(ra, [["render", oa], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SignedIn.vue"]]), ia = /* @__PURE__ */ Z({
3616
3708
  __name: "SignedOut",
3617
3709
  props: {
3618
3710
  showFallback: { type: Boolean, required: !1, default: !0 }
@@ -3620,38 +3712,38 @@ const ca = /* @__PURE__ */ D(zs, [["render", Ds], ["__file", "/home/runner/work/
3620
3712
  emits: ["sign-in-clicked", "sign-up-clicked"],
3621
3713
  setup(o, { expose: t, emit: a }) {
3622
3714
  t();
3623
- const e = o, l = a, { isAuthenticated: u, isLoading: s, user: g, signOut: w } = ne(), m = { props: e, emit: l, isAuthenticated: u, isLoading: s, user: g, signOut: w, signIn: () => {
3624
- l("sign-in-clicked");
3715
+ const e = o, i = a, { isAuthenticated: u, isLoading: s, user: g, signOut: h } = ge(), m = { props: e, emit: i, isAuthenticated: u, isLoading: s, user: g, signOut: h, signIn: () => {
3716
+ i("sign-in-clicked");
3625
3717
  }, signUp: () => {
3626
- l("sign-up-clicked");
3718
+ i("sign-up-clicked");
3627
3719
  }, get StrandsUiLoader() {
3628
- return me;
3720
+ return Se;
3629
3721
  } };
3630
3722
  return Object.defineProperty(m, "__isScriptSetup", { enumerable: !1, value: !0 }), m;
3631
3723
  }
3632
- }), Zs = {
3724
+ }), la = {
3633
3725
  key: 0,
3634
3726
  class: "animate-fade-in"
3635
- }, Ts = {
3727
+ }, Aa = {
3636
3728
  key: 1,
3637
3729
  class: "animate-fade-in"
3638
- }, Ys = { class: "text-center py-8" }, Os = { class: "text-neutral-600 mb-4" }, Es = {
3730
+ }, da = { class: "text-center py-8" }, ua = { class: "text-neutral-600 mb-4" }, ca = {
3639
3731
  key: 2,
3640
3732
  class: "animate-fade-in py-8"
3641
3733
  };
3642
- function Qs(o, t, a, e, l, u) {
3643
- return !e.isAuthenticated && !e.isLoading ? (i(), A("div", Zs, [
3644
- Z(o.$slots, "default", {
3734
+ function ma(o, t, a, e, i, u) {
3735
+ return !e.isAuthenticated && !e.isLoading ? (l(), A("div", la, [
3736
+ R(o.$slots, "default", {
3645
3737
  signIn: e.signIn,
3646
3738
  signUp: e.signUp
3647
3739
  })
3648
- ])) : a.showFallback && e.isAuthenticated && !e.isLoading ? (i(), A("div", Ts, [
3649
- Z(o.$slots, "fallback", {
3740
+ ])) : a.showFallback && e.isAuthenticated && !e.isLoading ? (l(), A("div", Aa, [
3741
+ R(o.$slots, "fallback", {
3650
3742
  user: e.user,
3651
3743
  signOut: e.signOut
3652
3744
  }, () => [
3653
3745
  n(" Default fallback content for signed in users "),
3654
- r("div", Ys, [
3746
+ r("div", da, [
3655
3747
  t[1] || (t[1] = r(
3656
3748
  "div",
3657
3749
  { class: "w-16 h-16 mx-auto mb-4 bg-strands-100 rounded-full flex items-center justify-center" },
@@ -3682,8 +3774,8 @@ function Qs(o, t, a, e, l, u) {
3682
3774
  )),
3683
3775
  r(
3684
3776
  "p",
3685
- Os,
3686
- "You're currently signed in as " + k(e.user?.email) + ".",
3777
+ ua,
3778
+ "You're currently signed in as " + U(e.user?.email) + ".",
3687
3779
  1
3688
3780
  /* TEXT */
3689
3781
  ),
@@ -3693,8 +3785,8 @@ function Qs(o, t, a, e, l, u) {
3693
3785
  }, " Sign out ")
3694
3786
  ])
3695
3787
  ])
3696
- ])) : e.isLoading ? (i(), A("div", Es, [
3697
- Z(o.$slots, "loading", {}, () => [
3788
+ ])) : e.isLoading ? (l(), A("div", ca, [
3789
+ R(o.$slots, "loading", {}, () => [
3698
3790
  d(e.StrandsUiLoader, {
3699
3791
  size: 64,
3700
3792
  text: "Checking authentication...",
@@ -3704,7 +3796,7 @@ function Qs(o, t, a, e, l, u) {
3704
3796
  ])
3705
3797
  ])) : n("v-if", !0);
3706
3798
  }
3707
- const ma = /* @__PURE__ */ D(js, [["render", Qs], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SignedOut.vue"]]), Ks = /* @__PURE__ */ X({
3799
+ const za = /* @__PURE__ */ E(ia, [["render", ma], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SignedOut.vue"]]), fa = /* @__PURE__ */ Z({
3708
3800
  __name: "StrandsLogo",
3709
3801
  props: {
3710
3802
  class: { type: String, required: !1, default: "" }
@@ -3715,13 +3807,13 @@ const ma = /* @__PURE__ */ D(js, [["render", Qs], ["__file", "/home/runner/work/
3715
3807
  return Object.defineProperty(a, "__isScriptSetup", { enumerable: !1, value: !0 }), a;
3716
3808
  }
3717
3809
  });
3718
- function Hs(o, t, a, e, l, u) {
3719
- return i(), A(
3810
+ function ga(o, t, a, e, i, u) {
3811
+ return l(), A(
3720
3812
  "svg",
3721
3813
  {
3722
3814
  viewBox: "0 0 22571 9413",
3723
3815
  xmlns: "http://www.w3.org/2000/svg",
3724
- class: Y(a.class),
3816
+ class: J(a.class),
3725
3817
  role: "img",
3726
3818
  "aria-label": "Strands Services Logo"
3727
3819
  },
@@ -3756,7 +3848,7 @@ function Hs(o, t, a, e, l, u) {
3756
3848
  /* CLASS */
3757
3849
  );
3758
3850
  }
3759
- const fa = /* @__PURE__ */ D(Ks, [["render", Hs], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsLogo.vue"]]), Rs = /* @__PURE__ */ X({
3851
+ const Ba = /* @__PURE__ */ E(fa, [["render", ga], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsLogo.vue"]]), va = /* @__PURE__ */ Z({
3760
3852
  __name: "StrandsConfigProvider",
3761
3853
  props: {
3762
3854
  config: { type: Object, required: !0 }
@@ -3764,17 +3856,17 @@ const fa = /* @__PURE__ */ D(Ks, [["render", Hs], ["__file", "/home/runner/work/
3764
3856
  setup(o, { expose: t }) {
3765
3857
  t();
3766
3858
  const a = o;
3767
- J(() => {
3768
- ge(a.config);
3769
- }), ge(a.config);
3859
+ re(() => {
3860
+ We(a.config);
3861
+ }), We(a.config);
3770
3862
  const e = { props: a };
3771
3863
  return Object.defineProperty(e, "__isScriptSetup", { enumerable: !1, value: !0 }), e;
3772
3864
  }
3773
3865
  });
3774
- function Gs(o, t, a, e, l, u) {
3775
- return Z(o.$slots, "default");
3866
+ function pa(o, t, a, e, i, u) {
3867
+ return R(o.$slots, "default");
3776
3868
  }
3777
- const ga = /* @__PURE__ */ D(Rs, [["render", Gs], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsConfigProvider.vue"]]), Js = /* @__PURE__ */ X({
3869
+ const Ia = /* @__PURE__ */ E(va, [["render", pa], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/StrandsConfigProvider.vue"]]), wa = /* @__PURE__ */ Z({
3778
3870
  __name: "SvgIcon",
3779
3871
  props: {
3780
3872
  name: { type: String, required: !0 },
@@ -3792,43 +3884,43 @@ const ga = /* @__PURE__ */ D(Rs, [["render", Gs], ["__file", "/home/runner/work/
3792
3884
  md: "w-5 h-5",
3793
3885
  lg: "w-6 h-6",
3794
3886
  xl: "w-8 h-8"
3795
- }, l = C(() => `${e[a.size]} ${a.class}`), u = C(() => "0 0 24 24"), s = {
3796
- eye: () => z("g", [
3797
- z("path", {
3887
+ }, i = x(() => `${e[a.size]} ${a.class}`), u = x(() => "0 0 24 24"), s = {
3888
+ eye: () => T("g", [
3889
+ T("path", {
3798
3890
  "stroke-linecap": "round",
3799
3891
  "stroke-linejoin": "round",
3800
3892
  "stroke-width": "2",
3801
3893
  d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
3802
3894
  }),
3803
- z("path", {
3895
+ T("path", {
3804
3896
  "stroke-linecap": "round",
3805
3897
  "stroke-linejoin": "round",
3806
3898
  "stroke-width": "2",
3807
3899
  d: "M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z"
3808
3900
  })
3809
3901
  ]),
3810
- "eye-slash": () => z("g", [
3811
- z("path", {
3902
+ "eye-slash": () => T("g", [
3903
+ T("path", {
3812
3904
  "stroke-linecap": "round",
3813
3905
  "stroke-linejoin": "round",
3814
3906
  "stroke-width": "2",
3815
3907
  d: "M13.875 18.825A10.05 10.05 0 0112 19c-4.478 0-8.268-2.943-9.543-7a9.97 9.97 0 011.563-3.029m5.858.908a3 3 0 114.243 4.243M9.878 9.878l4.242 4.242M9.878 9.878L3 3m6.878 6.878L21 21"
3816
3908
  })
3817
3909
  ]),
3818
- camera: () => z("path", {
3910
+ camera: () => T("path", {
3819
3911
  "stroke-linecap": "round",
3820
3912
  "stroke-linejoin": "round",
3821
3913
  "stroke-width": "2",
3822
3914
  d: "M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"
3823
3915
  }),
3824
- "chevron-left": () => z("path", {
3916
+ "chevron-left": () => T("path", {
3825
3917
  "stroke-linecap": "round",
3826
3918
  "stroke-linejoin": "round",
3827
3919
  "stroke-width": "2",
3828
3920
  d: "M15 19l-7-7 7-7"
3829
3921
  }),
3830
- loading: () => z("g", [
3831
- z("circle", {
3922
+ loading: () => T("g", [
3923
+ T("circle", {
3832
3924
  class: "opacity-25",
3833
3925
  cx: "12",
3834
3926
  cy: "12",
@@ -3836,146 +3928,145 @@ const ga = /* @__PURE__ */ D(Rs, [["render", Gs], ["__file", "/home/runner/work/
3836
3928
  stroke: "currentColor",
3837
3929
  "stroke-width": "4"
3838
3930
  }),
3839
- z("path", {
3931
+ T("path", {
3840
3932
  class: "opacity-75",
3841
3933
  fill: "currentColor",
3842
3934
  d: "m4 12a8 8 0 0 1 8-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 0 1 4 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
3843
3935
  })
3844
3936
  ]),
3845
- "check-circle": () => z("path", {
3937
+ "check-circle": () => T("path", {
3846
3938
  "fill-rule": "evenodd",
3847
3939
  d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.236 4.53L7.53 10.173a.75.75 0 00-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",
3848
3940
  "clip-rule": "evenodd"
3849
3941
  }),
3850
- "x-circle": () => z("path", {
3942
+ "x-circle": () => T("path", {
3851
3943
  "fill-rule": "evenodd",
3852
3944
  d: "M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z",
3853
3945
  "clip-rule": "evenodd"
3854
3946
  }),
3855
- lock: () => z("path", {
3947
+ lock: () => T("path", {
3856
3948
  "stroke-linecap": "round",
3857
3949
  "stroke-linejoin": "round",
3858
3950
  "stroke-width": "2",
3859
3951
  d: "M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"
3860
3952
  }),
3861
- user: () => z("path", {
3953
+ user: () => T("path", {
3862
3954
  "stroke-linecap": "round",
3863
3955
  "stroke-linejoin": "round",
3864
3956
  "stroke-width": "2",
3865
3957
  d: "M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"
3866
3958
  }),
3867
- google: () => z("g", { fill: "currentColor" }, [
3868
- z("path", {
3959
+ google: () => T("g", { fill: "currentColor" }, [
3960
+ T("path", {
3869
3961
  fill: "#4285F4",
3870
3962
  d: "M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"
3871
3963
  }),
3872
- z("path", {
3964
+ T("path", {
3873
3965
  fill: "#34A853",
3874
3966
  d: "M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"
3875
3967
  }),
3876
- z("path", {
3968
+ T("path", {
3877
3969
  fill: "#FBBC05",
3878
3970
  d: "M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"
3879
3971
  }),
3880
- z("path", {
3972
+ T("path", {
3881
3973
  fill: "#EA4335",
3882
3974
  d: "M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"
3883
3975
  })
3884
3976
  ]),
3885
- github: () => z("path", {
3977
+ github: () => T("path", {
3886
3978
  "fill-rule": "evenodd",
3887
3979
  d: "M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z",
3888
3980
  "clip-rule": "evenodd"
3889
3981
  })
3890
- }, g = C(() => {
3891
- const x = s[a.name];
3892
- return x ? x() : z("path", { d: "" });
3893
- }), w = { props: a, sizeClasses: e, iconClass: l, viewBox: u, icons: s, iconComponent: g };
3894
- return Object.defineProperty(w, "__isScriptSetup", { enumerable: !1, value: !0 }), w;
3982
+ }, g = x(() => {
3983
+ const S = s[a.name];
3984
+ return S ? S() : T("path", { d: "" });
3985
+ }), h = { props: a, sizeClasses: e, iconClass: i, viewBox: u, icons: s, iconComponent: g };
3986
+ return Object.defineProperty(h, "__isScriptSetup", { enumerable: !1, value: !0 }), h;
3895
3987
  }
3896
- }), _s = ["fill", "stroke", "viewBox", "aria-hidden"];
3897
- function $s(o, t, a, e, l, u) {
3898
- return i(), A("svg", {
3899
- class: Y(e.iconClass),
3988
+ }), ha = ["fill", "stroke", "viewBox", "aria-hidden"];
3989
+ function ya(o, t, a, e, i, u) {
3990
+ return l(), A("svg", {
3991
+ class: J(e.iconClass),
3900
3992
  fill: a.fill,
3901
3993
  stroke: a.stroke,
3902
3994
  viewBox: e.viewBox,
3903
3995
  "aria-hidden": a.ariaHidden
3904
3996
  }, [
3905
- (i(), E(pe(e.iconComponent)))
3906
- ], 10, _s);
3997
+ (l(), $(ke(e.iconComponent)))
3998
+ ], 10, ha);
3907
3999
  }
3908
- const pa = /* @__PURE__ */ D(Js, [["render", $s], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SvgIcon.vue"]]), ea = {
3909
- StrandsUiAlert: de,
3910
- StrandsUiButton: $,
3911
- StrandsUiCard: oe,
3912
- StrandsUiInput: ee,
3913
- StrandsUiLink: te,
3914
- StrandsUiTabs: be,
3915
- StrandsUiLoader: me
3916
- }, va = {
4000
+ const Xa = /* @__PURE__ */ E(wa, [["render", ya], ["__file", "/home/runner/work/strands-accounts/strands-accounts/apps/accounts-ui/src/vue/components/SvgIcon.vue"]]), ba = {
4001
+ StrandsUiAlert: he,
4002
+ StrandsUiButton: le,
4003
+ StrandsUiCard: ve,
4004
+ StrandsUiInput: Ae,
4005
+ StrandsUiLink: de,
4006
+ StrandsUiTabs: Le,
4007
+ StrandsUiLoader: Se
4008
+ }, Da = {
3917
4009
  install(o, t = {}) {
3918
4010
  const { prefix: a = "" } = t;
3919
- Object.entries(ea).forEach(([e, l]) => {
4011
+ Object.entries(ba).forEach(([e, i]) => {
3920
4012
  const u = a ? `${a}${e}` : e;
3921
- o.component(u, l);
4013
+ o.component(u, i);
3922
4014
  });
3923
4015
  }
3924
- }, ya = (o) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o), ba = (o) => {
4016
+ }, ja = (o) => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(o), Ta = (o) => {
3925
4017
  const t = [];
3926
4018
  let a = 0;
3927
4019
  o.length < 8 ? t.push("Password must be at least 8 characters long") : a += 1, /[A-Z]/.test(o) ? a += 1 : t.push("Password must contain at least one uppercase letter"), /[a-z]/.test(o) ? a += 1 : t.push("Password must contain at least one lowercase letter"), /\d/.test(o) ? a += 1 : t.push("Password must contain at least one number"), /[!@#$%^&*(),.?":{}|<>]/.test(o) ? a += 1 : t.push("Password must contain at least one special character");
3928
4020
  const e = t.length === 0;
3929
- let l = "weak";
3930
- return a >= 4 ? l = "strong" : a >= 3 && (l = "medium"), { isValid: e, strength: l, errors: t };
3931
- }, ha = (o) => o.trim().length >= 2, wa = (o) => /^[\+]?[1-9][\d]{0,15}$/.test(o.replace(/[\s\-\(\)]/g, "")), Sa = (o) => o.trim().length > 0, qa = (o, t) => o === t, Va = (o, t) => {
4021
+ let i = "weak";
4022
+ return a >= 4 ? i = "strong" : a >= 3 && (i = "medium"), { isValid: e, strength: i, errors: t };
4023
+ }, Za = (o) => o.trim().length >= 2, Ea = (o) => o.trim().length > 0, Ya = (o, t) => o === t, Oa = (o, t) => {
3932
4024
  const a = o?.charAt(0).toUpperCase() || "", e = t?.charAt(0).toUpperCase() || "";
3933
4025
  return a + e || "U";
3934
- }, Ca = (o) => (typeof o == "string" ? new Date(o) : o).toLocaleDateString("en-US", {
4026
+ }, Ka = (o) => (typeof o == "string" ? new Date(o) : o).toLocaleDateString("en-US", {
3935
4027
  year: "numeric",
3936
4028
  month: "long",
3937
4029
  day: "numeric"
3938
- }), xa = (o, t) => {
4030
+ }), Qa = (o, t) => {
3939
4031
  let a;
3940
4032
  return (...e) => {
3941
4033
  clearTimeout(a), a = setTimeout(() => o(...e), t);
3942
4034
  };
3943
4035
  };
3944
4036
  export {
3945
- ca as SignedIn,
3946
- ma as SignedOut,
3947
- na as StrandsAuth,
3948
- la as StrandsCompleteSignUp,
3949
- ga as StrandsConfigProvider,
3950
- fa as StrandsLogo,
3951
- ua as StrandsMFASetup,
3952
- da as StrandsPasswordReset,
3953
- ie as StrandsSecuredFooter,
3954
- oa as StrandsSignIn,
3955
- ia as StrandsSignUp,
3956
- va as StrandsUIPlugin,
3957
- de as StrandsUiAlert,
3958
- $ as StrandsUiButton,
3959
- oe as StrandsUiCard,
3960
- ee as StrandsUiInput,
3961
- te as StrandsUiLink,
3962
- me as StrandsUiLoader,
3963
- be as StrandsUiTabs,
3964
- Aa as StrandsUserProfile,
3965
- pa as SvgIcon,
3966
- xa as debounce,
3967
- Ca as formatDate,
3968
- Va as getInitials,
3969
- Sa as isRequired,
3970
- ya as isValidEmail,
3971
- ha as isValidName,
3972
- wa as isValidPhone,
3973
- qa as passwordsMatch,
3974
- ge as provideStrandsConfig,
3975
- ka as setStrandsConfig,
3976
- fe as useOAuthProviders,
3977
- ne as useStrandsAuth,
3978
- _ as useStrandsConfig,
3979
- ba as validatePassword
4037
+ Fa as SignedIn,
4038
+ za as SignedOut,
4039
+ Ua as StrandsAuth,
4040
+ Na as StrandsCompleteSignUp,
4041
+ Ia as StrandsConfigProvider,
4042
+ Ba as StrandsLogo,
4043
+ Pa as StrandsMFASetup,
4044
+ Ma as StrandsPasswordReset,
4045
+ pe as StrandsSecuredFooter,
4046
+ Wa as StrandsSignIn,
4047
+ ka as StrandsSignUp,
4048
+ Da as StrandsUIPlugin,
4049
+ he as StrandsUiAlert,
4050
+ le as StrandsUiButton,
4051
+ ve as StrandsUiCard,
4052
+ Ae as StrandsUiInput,
4053
+ de as StrandsUiLink,
4054
+ Se as StrandsUiLoader,
4055
+ Le as StrandsUiTabs,
4056
+ La as StrandsUserProfile,
4057
+ Xa as SvgIcon,
4058
+ Qa as debounce,
4059
+ Ka as formatDate,
4060
+ Oa as getInitials,
4061
+ Ea as isRequired,
4062
+ ja as isValidEmail,
4063
+ Za as isValidName,
4064
+ Ya as passwordsMatch,
4065
+ We as provideStrandsConfig,
4066
+ Ga as setStrandsConfig,
4067
+ qe as useOAuthProviders,
4068
+ ge as useStrandsAuth,
4069
+ se as useStrandsConfig,
4070
+ Ta as validatePassword
3980
4071
  };
3981
4072
  //# sourceMappingURL=strands-auth-ui.es.js.map