@strands.gg/accui 0.0.3 → 0.0.5

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 (46) hide show
  1. package/README.md +249 -20
  2. package/dist/accui.css +1 -0
  3. package/dist/index.d.ts +4 -10
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/nuxt/module.d.ts +2 -1
  6. package/dist/nuxt/module.d.ts.map +1 -1
  7. package/dist/nuxt/types.d.ts +1 -0
  8. package/dist/nuxt/types.d.ts.map +1 -1
  9. package/dist/strands-auth-ui.es.js +1735 -1231
  10. package/dist/strands-auth-ui.es.js.map +1 -1
  11. package/dist/strands-auth-ui.umd.js +1 -1
  12. package/dist/strands-auth-ui.umd.js.map +1 -1
  13. package/dist/vue/components/StrandsAuth.vue.d.ts +8 -6
  14. package/dist/vue/components/StrandsAuth.vue.d.ts.map +1 -1
  15. package/dist/vue/components/StrandsConfigProvider.vue.d.ts +22 -0
  16. package/dist/vue/components/StrandsConfigProvider.vue.d.ts.map +1 -0
  17. package/dist/vue/components/StrandsPasswordReset.vue.d.ts.map +1 -1
  18. package/dist/vue/components/StrandsSignIn.vue.d.ts +4 -2
  19. package/dist/vue/components/StrandsSignIn.vue.d.ts.map +1 -1
  20. package/dist/vue/components/StrandsSignUp.vue.d.ts +4 -2
  21. package/dist/vue/components/StrandsSignUp.vue.d.ts.map +1 -1
  22. package/dist/vue/components/index.d.ts +1 -1
  23. package/dist/vue/components/index.d.ts.map +1 -1
  24. package/dist/vue/composables/useOAuthProviders.d.ts +71 -0
  25. package/dist/vue/composables/useOAuthProviders.d.ts.map +1 -0
  26. package/dist/vue/composables/useStrandsConfig.d.ts +35 -0
  27. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -0
  28. package/dist/vue/index.d.ts +2 -0
  29. package/dist/vue/index.d.ts.map +1 -1
  30. package/dist/vue/ui/UiAlert.vue.d.ts +31 -0
  31. package/dist/vue/ui/UiAlert.vue.d.ts.map +1 -0
  32. package/dist/vue/ui/UiButton.vue.d.ts +39 -0
  33. package/dist/vue/ui/UiButton.vue.d.ts.map +1 -0
  34. package/dist/vue/ui/UiCard.vue.d.ts +29 -0
  35. package/dist/vue/ui/UiCard.vue.d.ts.map +1 -0
  36. package/dist/vue/ui/UiInput.vue.d.ts +41 -0
  37. package/dist/vue/ui/UiInput.vue.d.ts.map +1 -0
  38. package/dist/vue/ui/UiLink.vue.d.ts +35 -0
  39. package/dist/vue/ui/UiLink.vue.d.ts.map +1 -0
  40. package/dist/vue/ui/UiTabs.vue.d.ts +17 -0
  41. package/dist/vue/ui/UiTabs.vue.d.ts.map +1 -0
  42. package/dist/vue/ui/index.d.ts +13 -0
  43. package/dist/vue/ui/index.d.ts.map +1 -0
  44. package/package.json +1 -1
  45. package/dist/vue/components/StrandsDeviceManager.vue.d.ts +0 -3
  46. package/dist/vue/components/StrandsDeviceManager.vue.d.ts.map +0 -1
@@ -1,1026 +1,1544 @@
1
- import { createElementBlock as s, openBlock as a, createElementVNode as A, defineComponent as L, ref as x, reactive as k, computed as U, watch as tA, createCommentVNode as b, createVNode as I, toDisplayString as V, normalizeClass as w, Fragment as T, renderList as R, withModifiers as O, withDirectives as C, vModelText as y, normalizeStyle as sA, createStaticVNode as Y, createTextVNode as Z, unref as N, renderSlot as H } from "vue";
2
- const rA = "data:image/png;base64,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", lA = (F, h) => {
3
- const c = F.__vccOpts || F;
4
- for (const [f, n] of h)
5
- c[f] = n;
6
- return c;
7
- }, oA = {}, nA = { class: "flex items-center justify-center gap-2 mt-4 -mb-4 pt-4 border-t border-neutral-200" };
8
- function iA(F, h) {
9
- return a(), s("div", nA, h[0] || (h[0] = [
10
- A("img", {
11
- src: rA,
1
+ import { defineComponent as P, computed as N, createElementBlock as a, openBlock as A, normalizeClass as I, createElementVNode as e, createCommentVNode as W, toDisplayString as L, renderSlot as Z, createTextVNode as j, useSlots as qe, ref as U, createBlock as E, resolveDynamicComponent as Ce, mergeProps as We, withCtx as D, onMounted as ae, nextTick as ce, toRefs as xe, watch as ne, Fragment as oe, renderList as ie, unref as w, normalizeStyle as Ne, inject as Le, provide as Ue, reactive as J, createVNode as x, Transition as H, withModifiers as re, withDirectives as G, vModelText as R, createStaticVNode as ve } from "vue";
2
+ const Me = { class: "flex items-start" }, ze = { class: "flex-shrink-0" }, Se = {
3
+ class: "h-5 w-5",
4
+ fill: "currentColor",
5
+ viewBox: "0 0 20 20",
6
+ "aria-hidden": "true"
7
+ }, De = ["d"], Xe = { class: "ml-3 flex-1" }, ke = {
8
+ key: 0,
9
+ class: "ml-auto pl-3"
10
+ }, se = /* @__PURE__ */ P({
11
+ __name: "UiAlert",
12
+ props: {
13
+ variant: { default: "info" },
14
+ title: {},
15
+ message: {},
16
+ dismissible: { type: Boolean, default: !1 }
17
+ },
18
+ emits: ["dismiss"],
19
+ setup(V) {
20
+ const g = V, s = N(() => {
21
+ const n = ["rounded-lg border p-4"], b = {
22
+ success: "bg-green-50 border-green-200 text-green-800",
23
+ error: "bg-red-50 border-red-200 text-red-800",
24
+ warning: "bg-yellow-50 border-yellow-200 text-yellow-800",
25
+ info: "bg-blue-50 border-blue-200 text-blue-800"
26
+ };
27
+ return [
28
+ ...n,
29
+ b[g.variant]
30
+ ].join(" ");
31
+ }), r = N(() => [
32
+ "text-sm font-medium mb-1",
33
+ {
34
+ success: "text-green-800",
35
+ error: "text-red-800",
36
+ warning: "text-yellow-800",
37
+ info: "text-blue-800"
38
+ }[g.variant]
39
+ ].join(" ")), u = N(() => [
40
+ "text-sm",
41
+ {
42
+ success: "text-green-700",
43
+ error: "text-red-700",
44
+ warning: "text-yellow-700",
45
+ info: "text-blue-700"
46
+ }[g.variant]
47
+ ].join(" ")), o = N(() => [
48
+ "inline-flex rounded-md p-1.5 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2",
49
+ {
50
+ success: "text-green-400 hover:text-green-500",
51
+ error: "text-red-400 hover:text-red-500",
52
+ warning: "text-yellow-400 hover:text-yellow-500",
53
+ info: "text-blue-400 hover:text-blue-500"
54
+ }[g.variant]
55
+ ].join(" ")), i = N(() => ({
56
+ 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",
57
+ 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",
58
+ 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",
59
+ 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"
60
+ })[g.variant]);
61
+ return (n, b) => (A(), a("div", {
62
+ class: I(s.value),
63
+ role: "alert"
64
+ }, [
65
+ e("div", Me, [
66
+ e("div", ze, [
67
+ (A(), a("svg", Se, [
68
+ e("path", {
69
+ "fill-rule": "evenodd",
70
+ d: i.value,
71
+ "clip-rule": "evenodd"
72
+ }, null, 8, De)
73
+ ]))
74
+ ]),
75
+ e("div", Xe, [
76
+ n.title ? (A(), a("h3", {
77
+ key: 0,
78
+ class: I(r.value)
79
+ }, L(n.title), 3)) : W("", !0),
80
+ e("div", {
81
+ class: I(u.value)
82
+ }, [
83
+ Z(n.$slots, "default", {}, () => [
84
+ j(L(n.message), 1)
85
+ ])
86
+ ], 2)
87
+ ]),
88
+ n.dismissible ? (A(), a("div", ke, [
89
+ e("button", {
90
+ type: "button",
91
+ class: I(o.value),
92
+ onClick: b[0] || (b[0] = (c) => n.$emit("dismiss"))
93
+ }, b[1] || (b[1] = [
94
+ e("span", { class: "sr-only" }, "Dismiss", -1),
95
+ e("svg", {
96
+ class: "h-5 w-5",
97
+ fill: "currentColor",
98
+ viewBox: "0 0 20 20"
99
+ }, [
100
+ e("path", {
101
+ "fill-rule": "evenodd",
102
+ d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
103
+ "clip-rule": "evenodd"
104
+ })
105
+ ], -1)
106
+ ]), 2)
107
+ ])) : W("", !0)
108
+ ])
109
+ ], 2));
110
+ }
111
+ }), Be = ["type", "disabled"], Fe = {
112
+ key: 0,
113
+ class: "flex items-center justify-center gap-2"
114
+ }, Pe = {
115
+ key: 1,
116
+ class: "flex items-center justify-center gap-2"
117
+ }, _ = /* @__PURE__ */ P({
118
+ __name: "UiButton",
119
+ props: {
120
+ variant: { default: "primary" },
121
+ size: { default: "md" },
122
+ type: { default: "button" },
123
+ disabled: { type: Boolean, default: !1 },
124
+ loading: { type: Boolean, default: !1 },
125
+ loadingText: {},
126
+ fullWidth: { type: Boolean, default: !1 }
127
+ },
128
+ emits: ["click"],
129
+ setup(V) {
130
+ const g = V, s = N(() => {
131
+ const r = [
132
+ "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"
133
+ ], u = {
134
+ sm: "px-3 py-2 text-sm rounded-md",
135
+ md: "px-4 py-2.5 text-sm rounded-lg",
136
+ lg: "px-6 py-3 text-base rounded-lg"
137
+ }, o = {
138
+ primary: "bg-strands-500 text-white hover:bg-strands-600 shadow-sm",
139
+ secondary: "bg-gray-200 text-gray-800 hover:bg-gray-300",
140
+ ghost: "text-strands-500 hover:text-strands-600 hover:bg-strands-50",
141
+ outline: "border border-strands-500 text-strands-500 hover:bg-strands-500 hover:text-white"
142
+ }, i = g.fullWidth ? "w-full" : "";
143
+ return [
144
+ ...r,
145
+ u[g.size],
146
+ o[g.variant],
147
+ i
148
+ ].filter(Boolean).join(" ");
149
+ });
150
+ return (r, u) => (A(), a("button", {
151
+ type: r.type,
152
+ disabled: r.disabled || r.loading,
153
+ class: I(s.value),
154
+ onClick: u[0] || (u[0] = (o) => r.$emit("click", o))
155
+ }, [
156
+ r.loading ? (A(), a("span", Fe, [
157
+ u[1] || (u[1] = e("svg", {
158
+ class: "animate-spin w-4 h-4",
159
+ fill: "none",
160
+ viewBox: "0 0 24 24"
161
+ }, [
162
+ e("circle", {
163
+ class: "opacity-25",
164
+ cx: "12",
165
+ cy: "12",
166
+ r: "10",
167
+ stroke: "currentColor",
168
+ "stroke-width": "4"
169
+ }),
170
+ e("path", {
171
+ class: "opacity-75",
172
+ fill: "currentColor",
173
+ 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"
174
+ })
175
+ ], -1)),
176
+ e("span", null, L(r.loadingText || "Loading..."), 1)
177
+ ])) : (A(), a("span", Pe, [
178
+ Z(r.$slots, "icon"),
179
+ Z(r.$slots, "default")
180
+ ]))
181
+ ], 10, Be));
182
+ }
183
+ }), Ie = {
184
+ key: 0,
185
+ class: "border-b border-gray-200 pb-4 mb-6"
186
+ }, je = { class: "space-y-6" }, Ze = {
187
+ key: 1,
188
+ class: "border-t border-gray-200 pt-4 mt-6"
189
+ }, ue = /* @__PURE__ */ P({
190
+ __name: "UiCard",
191
+ props: {
192
+ variant: { default: "default" },
193
+ padding: { default: "md" },
194
+ shadow: { default: "sm" }
195
+ },
196
+ setup(V) {
197
+ const g = V, s = N(() => {
198
+ const r = ["bg-white border border-gray-200"], u = {
199
+ default: "rounded-lg",
200
+ modern: "rounded-2xl backdrop-blur-lg",
201
+ minimal: "rounded-md"
202
+ }, o = {
203
+ sm: "p-4",
204
+ md: "p-6",
205
+ lg: "p-8"
206
+ }, i = {
207
+ none: "",
208
+ sm: "shadow-sm",
209
+ md: "shadow-md",
210
+ lg: "shadow-lg"
211
+ };
212
+ return [
213
+ ...r,
214
+ u[g.variant],
215
+ o[g.padding],
216
+ i[g.shadow]
217
+ ].filter(Boolean).join(" ");
218
+ });
219
+ return (r, u) => (A(), a("div", {
220
+ class: I(s.value)
221
+ }, [
222
+ r.$slots.header ? (A(), a("div", Ie, [
223
+ Z(r.$slots, "header")
224
+ ])) : W("", !0),
225
+ e("div", je, [
226
+ Z(r.$slots, "default")
227
+ ]),
228
+ r.$slots.footer ? (A(), a("div", Ze, [
229
+ Z(r.$slots, "footer")
230
+ ])) : W("", !0)
231
+ ], 2));
232
+ }
233
+ }), Te = { class: "space-y-1" }, Ye = ["for"], Ke = {
234
+ key: 0,
235
+ class: "text-red-500"
236
+ }, Qe = { class: "relative" }, Oe = ["id", "type", "value", "placeholder", "disabled", "required", "autocomplete"], Ee = {
237
+ key: 0,
238
+ class: "h-5 w-5",
239
+ fill: "none",
240
+ stroke: "currentColor",
241
+ viewBox: "0 0 24 24"
242
+ }, He = {
243
+ key: 1,
244
+ class: "h-5 w-5",
245
+ fill: "none",
246
+ stroke: "currentColor",
247
+ viewBox: "0 0 24 24"
248
+ }, Ge = {
249
+ key: 1,
250
+ class: "absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none"
251
+ }, Re = {
252
+ key: 1,
253
+ class: "text-sm text-red-600"
254
+ }, Je = {
255
+ key: 2,
256
+ class: "text-sm text-gray-500"
257
+ }, ee = /* @__PURE__ */ P({
258
+ __name: "UiInput",
259
+ props: {
260
+ modelValue: {},
261
+ type: { default: "text" },
262
+ label: {},
263
+ placeholder: {},
264
+ disabled: { type: Boolean },
265
+ required: { type: Boolean },
266
+ error: {},
267
+ helpText: {},
268
+ autocomplete: {},
269
+ size: { default: "md" }
270
+ },
271
+ emits: ["update:modelValue", "blur", "focus"],
272
+ setup(V, { emit: g }) {
273
+ const s = V, r = g, u = qe(), o = U(!1), i = U(`input-${Math.random().toString(36).substr(2, 9)}`), n = N(() => s.type === "password" ? o.value ? "text" : "password" : s.type), b = N(() => {
274
+ const t = [
275
+ "block w-full border-gray-300 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"
276
+ ], p = {
277
+ sm: "px-3 py-2 text-sm",
278
+ md: "px-3 py-2.5 text-sm",
279
+ lg: "px-4 py-3 text-base"
280
+ }, m = s.error ? "border-red-300 focus-visible:ring-red-500 focus-visible:border-red-500" : "", z = u.icon ? "pl-10" : "", h = s.type === "password" ? "pr-10" : "";
281
+ return [
282
+ ...t,
283
+ p[s.size],
284
+ m,
285
+ z,
286
+ h
287
+ ].filter(Boolean).join(" ");
288
+ }), c = (t) => {
289
+ const p = t.target;
290
+ r("update:modelValue", p.value);
291
+ }, f = () => {
292
+ o.value = !o.value;
293
+ };
294
+ return (t, p) => (A(), a("div", Te, [
295
+ t.label ? (A(), a("label", {
296
+ key: 0,
297
+ for: i.value,
298
+ class: "block text-sm font-medium text-gray-700"
299
+ }, [
300
+ j(L(t.label) + " ", 1),
301
+ t.required ? (A(), a("span", Ke, "*")) : W("", !0)
302
+ ], 8, Ye)) : W("", !0),
303
+ e("div", Qe, [
304
+ e("input", {
305
+ id: i.value,
306
+ type: n.value,
307
+ value: t.modelValue,
308
+ placeholder: t.placeholder,
309
+ disabled: t.disabled,
310
+ required: t.required,
311
+ autocomplete: t.autocomplete,
312
+ class: I(b.value),
313
+ onInput: c,
314
+ onBlur: p[0] || (p[0] = (m) => t.$emit("blur", m)),
315
+ onFocus: p[1] || (p[1] = (m) => t.$emit("focus", m))
316
+ }, null, 42, Oe),
317
+ t.type === "password" ? (A(), a("button", {
318
+ key: 0,
319
+ type: "button",
320
+ 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",
321
+ onClick: f
322
+ }, [
323
+ o.value ? (A(), a("svg", Ee, p[2] || (p[2] = [
324
+ e("path", {
325
+ "stroke-linecap": "round",
326
+ "stroke-linejoin": "round",
327
+ "stroke-width": "2",
328
+ 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"
329
+ }, null, -1)
330
+ ]))) : (A(), a("svg", He, p[3] || (p[3] = [
331
+ e("path", {
332
+ "stroke-linecap": "round",
333
+ "stroke-linejoin": "round",
334
+ "stroke-width": "2",
335
+ d: "M15 12a3 3 0 11-6 0 3 3 0 016 0z"
336
+ }, null, -1),
337
+ e("path", {
338
+ "stroke-linecap": "round",
339
+ "stroke-linejoin": "round",
340
+ "stroke-width": "2",
341
+ 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"
342
+ }, null, -1)
343
+ ])))
344
+ ])) : W("", !0),
345
+ t.$slots.icon ? (A(), a("div", Ge, [
346
+ Z(t.$slots, "icon")
347
+ ])) : W("", !0)
348
+ ]),
349
+ t.error ? (A(), a("p", Re, L(t.error), 1)) : t.helpText ? (A(), a("p", Je, L(t.helpText), 1)) : W("", !0)
350
+ ]));
351
+ }
352
+ }), Ae = /* @__PURE__ */ P({
353
+ __name: "UiLink",
354
+ props: {
355
+ href: {},
356
+ to: {},
357
+ variant: { default: "primary" },
358
+ size: { default: "md" },
359
+ disabled: { type: Boolean, default: !1 },
360
+ external: { type: Boolean, default: !1 }
361
+ },
362
+ emits: ["click"],
363
+ setup(V, { emit: g }) {
364
+ const s = V, r = g, u = N(() => s.to ? "router-link" : s.href ? "a" : "button"), o = N(() => {
365
+ const b = {};
366
+ return s.to ? b.to = s.to : s.href ? (b.href = s.href, s.external && (b.target = "_blank", b.rel = "noopener noreferrer")) : b.type = "button", s.disabled && (b.disabled = !0, b["aria-disabled"] = !0), b;
367
+ }), i = N(() => {
368
+ const b = [
369
+ "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"
370
+ ], c = {
371
+ sm: "text-xs",
372
+ md: "text-sm",
373
+ lg: "text-base"
374
+ }, f = {
375
+ primary: "text-strands-500 hover:text-strands-600",
376
+ secondary: "text-gray-600 hover:text-gray-800",
377
+ ghost: "text-gray-500 hover:text-gray-700 hover:bg-gray-100 px-2 py-1 rounded",
378
+ underline: "text-strands-500 hover:text-strands-600 underline decoration-strands-500 underline-offset-2"
379
+ };
380
+ return [
381
+ ...b,
382
+ c[s.size],
383
+ f[s.variant]
384
+ ].filter(Boolean).join(" ");
385
+ }), n = (b) => {
386
+ s.disabled || r("click", b);
387
+ };
388
+ return (b, c) => (A(), E(Ce(u.value), We({ class: i.value }, o.value, { onClick: n }), {
389
+ default: D(() => [
390
+ Z(b.$slots, "default")
391
+ ]),
392
+ _: 3
393
+ }, 16, ["class"]));
394
+ }
395
+ }), _e = { class: "relative" }, $e = {
396
+ class: "relative flex border-b border-neutral-200",
397
+ role: "tablist"
398
+ }, et = ["aria-selected", "aria-controls", "id", "onClick"], tt = /* @__PURE__ */ P({
399
+ __name: "UiTabs",
400
+ props: {
401
+ modelValue: {},
402
+ tabs: {}
403
+ },
404
+ emits: ["update:modelValue"],
405
+ setup(V, { emit: g }) {
406
+ const s = V, r = g, u = U([]), o = U({
407
+ width: "0px",
408
+ left: "0px",
409
+ opacity: "0"
410
+ });
411
+ let i = -1, n = !1;
412
+ const b = async (t, p) => {
413
+ n || (r("update:modelValue", t), await ce(), c(p));
414
+ }, c = async (t) => {
415
+ if (!u.value[t] || t === i) return;
416
+ n = !0;
417
+ const p = u.value[t], m = p.parentElement;
418
+ if (!m) return;
419
+ const z = p.getBoundingClientRect(), h = m.getBoundingClientRect(), l = z.left - h.left, y = z.width;
420
+ if (i === -1) {
421
+ o.value = {
422
+ width: `${y}px`,
423
+ left: `${l}px`,
424
+ opacity: "1"
425
+ }, i = t, n = !1;
426
+ return;
427
+ }
428
+ const v = u.value[i].getBoundingClientRect(), F = v.left - h.left, q = v.width, d = t > i, S = d ? F : l, C = d ? l + y - F : F + q - l;
429
+ o.value = {
430
+ width: `${C}px`,
431
+ left: `${S}px`,
432
+ opacity: "1"
433
+ }, setTimeout(() => {
434
+ o.value = {
435
+ width: `${y}px`,
436
+ left: `${l}px`,
437
+ opacity: "1"
438
+ }, i = t, setTimeout(() => {
439
+ n = !1;
440
+ }, 150);
441
+ }, 120);
442
+ };
443
+ ae(async () => {
444
+ await ce();
445
+ const t = s.tabs.findIndex((p) => p.value === s.modelValue);
446
+ t !== -1 && c(t);
447
+ }), N(
448
+ () => s.tabs.findIndex((t) => t.value === s.modelValue)
449
+ );
450
+ const { modelValue: f } = xe(s);
451
+ return ne(f, async () => {
452
+ await ce();
453
+ const t = s.tabs.findIndex((p) => p.value === s.modelValue);
454
+ t !== -1 && c(t);
455
+ }), (t, p) => (A(), a("div", _e, [
456
+ e("div", $e, [
457
+ (A(!0), a(oe, null, ie(t.tabs, (m, z) => (A(), a("button", {
458
+ key: m.value,
459
+ ref_for: !0,
460
+ ref_key: "tabButtons",
461
+ ref: u,
462
+ class: I([
463
+ "relative flex-1 py-4 px-6 font-medium text-sm transition-colors duration-150",
464
+ "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-strands-500 focus-visible:ring-offset-2 focus-visible:ring-offset-white",
465
+ "hover:text-strands-600",
466
+ w(f) === m.value ? "text-strands-600" : "text-neutral-600"
467
+ ]),
468
+ "aria-selected": w(f) === m.value,
469
+ "aria-controls": `tabpanel-${m.value}`,
470
+ id: `tab-${m.value}`,
471
+ role: "tab",
472
+ onClick: (h) => b(m.value, z)
473
+ }, L(m.label), 11, et))), 128)),
474
+ e("div", {
475
+ 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)]",
476
+ style: Ne(o.value)
477
+ }, null, 4)
478
+ ])
479
+ ]));
480
+ }
481
+ }), st = "data:image/png;base64,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", we = (V, g) => {
482
+ const s = V.__vccOpts || V;
483
+ for (const [r, u] of g)
484
+ s[r] = u;
485
+ return s;
486
+ }, At = {}, at = { class: "flex items-center justify-center gap-2 mt-4 -mb-4 pt-4 border-t border-neutral-200" };
487
+ function rt(V, g) {
488
+ return A(), a("div", at, g[0] || (g[0] = [
489
+ e("img", {
490
+ src: st,
12
491
  class: "h-12 w-auto"
13
492
  }, null, -1)
14
493
  ]));
15
494
  }
16
- const G = /* @__PURE__ */ lA(oA, [["render", iA]]), dA = { class: "w-full max-w-md mx-auto animate-slide-up" }, uA = { class: "card-modern" }, cA = { class: "text-center mb-8" }, mA = { class: "text-3xl font-bold text-gradient mb-2" }, pA = { class: "text-neutral-600" }, vA = { class: "flex bg-neutral-100 rounded-xl p-1 mb-8" }, fA = {
17
- key: 0,
495
+ const le = /* @__PURE__ */ we(At, [["render", rt]]), Y = {
496
+ signIn: "/api/v1/auth/sign-in",
497
+ signUp: "/api/v1/auth/sign-up",
498
+ signOut: "/api/v1/auth/sign-out",
499
+ refresh: "/api/v1/auth/refresh",
500
+ passwordReset: "/api/v1/auth/password-reset",
501
+ passwordResetConfirm: "/api/v1/auth/password-reset/confirm",
502
+ profile: "/api/v1/user/profile",
503
+ verifyEmail: "/api/v1/auth/verify-email",
504
+ oauthProviders: "/api/v1/oauth/providers",
505
+ oauthProvider: "/api/v1/oauth/providers/{provider_id}"
506
+ }, ye = Symbol("strands-config"), pe = U(null);
507
+ function be(V) {
508
+ pe.value = V, Ue(ye, V);
509
+ }
510
+ function de(V) {
511
+ const g = Le(ye, null), s = N(() => {
512
+ const o = g || pe.value || V;
513
+ if (!o || !o.baseUrl)
514
+ throw new Error(
515
+ "StrandsAuth configuration is required. Please provide a baseUrl using provideStrandsConfig() or pass it as a prop."
516
+ );
517
+ return o;
518
+ }), r = N(() => {
519
+ const i = s.value.endpoints || {};
520
+ return {
521
+ signIn: i.signIn || Y.signIn,
522
+ signUp: i.signUp || Y.signUp,
523
+ signOut: i.signOut || Y.signOut,
524
+ refresh: i.refresh || Y.refresh,
525
+ passwordReset: i.passwordReset || Y.passwordReset,
526
+ passwordResetConfirm: i.passwordResetConfirm || Y.passwordResetConfirm,
527
+ profile: i.profile || Y.profile,
528
+ verifyEmail: i.verifyEmail || Y.verifyEmail,
529
+ oauthProviders: i.oauthProviders || Y.oauthProviders,
530
+ oauthProvider: i.oauthProvider || Y.oauthProvider
531
+ };
532
+ });
533
+ return {
534
+ config: s,
535
+ endpoints: r,
536
+ getUrl: (o) => {
537
+ const i = s.value;
538
+ if (!i.baseUrl)
539
+ throw new Error("Base URL is required in configuration");
540
+ let n;
541
+ typeof o == "string" && o in r.value ? n = r.value[o] : typeof o == "string" ? n = o : n = r.value[o];
542
+ const b = i.baseUrl.replace(/\/$/, ""), c = n.startsWith("/") ? n : `/${n}`;
543
+ return `${b}${c}`;
544
+ }
545
+ };
546
+ }
547
+ function eA(V) {
548
+ pe.value = V;
549
+ }
550
+ function fe(V = {}) {
551
+ const { getUrl: g } = de(), s = U([]), r = U(!1), u = U(null), o = N(
552
+ () => s.value.filter((t) => t.enabled)
553
+ ), i = async () => {
554
+ var t, p;
555
+ r.value = !0, u.value = null;
556
+ try {
557
+ const m = await fetch(g("oauthProviders"), {
558
+ method: "GET",
559
+ headers: {
560
+ "Content-Type": "application/json"
561
+ }
562
+ });
563
+ if (!m.ok) {
564
+ const h = await m.json().catch(() => ({}));
565
+ throw new Error(((t = h.error) == null ? void 0 : t.message) || `HTTP ${m.status}: ${m.statusText}`);
566
+ }
567
+ const z = await m.json();
568
+ if (!z.success)
569
+ throw new Error(((p = z.error) == null ? void 0 : p.message) || "Failed to fetch OAuth providers");
570
+ s.value = z.data || [];
571
+ } catch (m) {
572
+ const z = m instanceof Error ? m.message : "Failed to fetch OAuth providers";
573
+ u.value = z, console.error("OAuth providers fetch error:", m);
574
+ } finally {
575
+ r.value = !1;
576
+ }
577
+ }, n = async (t, p) => {
578
+ var X, v;
579
+ const m = { ...V, ...p }, z = new URLSearchParams();
580
+ m.redirectUrl && z.append("redirect_url", m.redirectUrl), m.scopes && m.scopes.length > 0 && z.append("scopes", m.scopes.join(","));
581
+ const h = z.toString(), l = g("oauthProvider").replace("{provider_id}", t), y = h ? `${l}?${h}` : l;
582
+ try {
583
+ const F = await fetch(y, {
584
+ method: "GET",
585
+ headers: {
586
+ "Content-Type": "application/json"
587
+ }
588
+ });
589
+ if (!F.ok) {
590
+ const d = await F.json().catch(() => ({}));
591
+ throw new Error(((X = d.error) == null ? void 0 : X.message) || `HTTP ${F.status}: ${F.statusText}`);
592
+ }
593
+ const q = await F.json();
594
+ if (!q.success)
595
+ throw new Error(((v = q.error) == null ? void 0 : v.message) || "Failed to get OAuth auth URL");
596
+ return q.data.authUrl;
597
+ } catch (F) {
598
+ const q = F instanceof Error ? F.message : "Failed to get OAuth auth URL";
599
+ throw new Error(q);
600
+ }
601
+ }, b = async (t, p) => {
602
+ try {
603
+ const m = await n(t, p);
604
+ window.location.href = m;
605
+ } catch (m) {
606
+ throw u.value = m instanceof Error ? m.message : "Failed to redirect to OAuth provider", m;
607
+ }
608
+ }, c = (t) => s.value.find((p) => p.id === t), f = (t) => {
609
+ if (t.iconUrl)
610
+ return t.iconUrl;
611
+ switch (t.id.toLowerCase()) {
612
+ case "google":
613
+ return "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik0yMi41NiAxMi4yNWMwLS43OC0uMDctMS41My0uMi0yLjI1SDEydjQuMjZoNS45MmMtLjI2IDEuMzctMS4wNCAyLjUzLTIuMjEgMy4zMXYyLjc3aDMuNTdjMi4wOC0xLjkyIDMuMjgtNC43NCAzLjI4LTguMDl6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTEyIDIzYzIuOTcgMCA1LjQ2LS45OCA3LjI4LTIuNjZsLTMuNTctMi43N2MtLjk4LjY2LTIuMjMgMS4wNi0zLjcxIDEuMDYtMi44NiAwLTUuMjktMS45My02LjE2LTQuNTNIMi4xOHYyLjg0QzMuOTkgMjAuNTMgNy43IDIzIDEyIDIzeiIvPjxwYXRoIGZpbGw9IiNGQkJDMDUiIGQ9Ik01Ljg0IDE0LjA5Yy0uMjItLjY2LS4zNS0xLjM2LS4zNS0yLjA5cy4xMy0xLjQzLjM1LTIuMDlWNy4wN0gyLjE4QzEuNDMgOC41NSAxIDEwLjIyIDEgMTJzLjQzIDMuNDUgMS4xOCA0LjkzbDIuODUtMi4yMi44MS0uNjJ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTEyIDUuMzhjMS42MiAwIDMuMDYuNTYgNC4yMSAxLjY0bDMuMTUtMy4xNUMxNy40NSAyLjA5IDE0Ljk3IDEgMTIgMSA3LjcgMSAzLjk5IDMuNDcgMi4xOCA3LjA3bDMuNjYgMi44NGMuODctMi42IDMuMy00LjUzIDYuMTYtNC41M3oiLz48L3N2Zz4=";
614
+ case "github":
615
+ return "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDBoLTEyYy02LjYyNiAwLTEyIDUuMzczLTEyIDEyIDAgNS4zMDIgMy40MzggOS44IDguMjA3IDExLjM4Ny41OTkuMTExLjc5My0uMjYxLjc5My0uNTc3di0yLjIzNGMtMy4zMzguNzI2LTQuMDMzLTEuNDE2LTQuMDMzLTEuNDE2LS41NDYtMS4zODctMS4zMzMtMS43NTYtMS4zMzMtMS43NTYtMS4wODktLjc0NS4wODMtLjcyOS4wODMtLjcyOSAxLjIwNS4wODQgMS44MzkgMS4yMzcgMS44MzkgMS4yMzcgMS4wNyAxLjgzNCAyLjgwNyAxLjMwNCAzLjQ5Mi45OTcuMTA3LS43NzUuNDE4LTEuMzA1Ljc2Mi0xLjYwNC0yLjY2NS0uMzA1LTUuNDY3LTEuMzM0LTUuNDY3LTUuOTMxIDAtMS4zMTEuNDY5LTIuMzgxIDEuMjM2LTMuMjIxLS4xMjQtLjMwMy0uNTM1LTEuNTI0LjExNy0zLjE3NiAwIDAgMS4wMDgtLjMyMiAzLjMwMSAxLjIzLjk1Ny0uMjY2IDEuOTgzLS4zOTkgMy4wMDMtLjQwNCAxLjAyLjAwNSAyLjA0Ny4xMzggMy4wMDYuNDA0IDIuMjkxLTEuNTUyIDMuMjk3LTEuMjMgMy4yOTctMS4yMy42NTMgMS42NTMuMjQyIDIuODc0LjExOCAzLjE3Ni43Ny44NCAxLjIzNSAxLjkxMSAxLjIzNSAzLjIyMSAwIDQuNjA5LTIuODA3IDUuNjI0LTUuNDc5IDUuOTIxLjQzLjM3Mi44MjMgMS4xMDIuODIzIDIuMjIydjMuMjkzYzAgLjMxOS4xOTIuNjk0LjgwMS41NzYgNC43NjUtMS41ODkgOC4xOTktNi4wODYgOC4xOTktMTEuMzg2IDAtNi42MjctNS4zNzMtMTItMTItMTJ6Ii8+PC9zdmc+";
616
+ case "microsoft":
617
+ case "azure":
618
+ return "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxyZWN0IGZpbGw9IiNmMjUwMjIiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSIvPjxyZWN0IGZpbGw9IiM3ZmJhMDAiIHg9IjEzIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiLz48cmVjdCBmaWxsPSIjMDBhNGVmIiB5PSIxMyIgd2lkdGg9IjExIiBoZWlnaHQ9IjExIi8+PHJlY3QgZmlsbD0iI2ZmYjkwMCIgeD0iMTMiIHk9IjEzIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiLz48L3N2Zz4=";
619
+ case "discord":
620
+ return "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiM1ODY1RjIiPjxwYXRoIGQ9Ik0yMC4zMTcgNC4zNjk2QTE5Ljc5MTMgMTkuNzkxMyAwIDAgMCAxOC4yMDU4IDMuMzY5NmMtLjk2NDIuMzU2NC0xLjk5NTguNjE1NC0zLjA1OC43NzNhMTQuNzI0NCAxNC43MjQ0IDAgMCAwLTYuMjk1NCAwIDEzLjU0OTQgMTMuNTQ5NCAwIDAgMC0zLjA1OC0uNzczIDEzLjY5MyAxMy42OTMgMCAwIDAtNS4wNjc2LTEuMjc5NCAyMC4xOTg0IDIwLjE5ODQgMCAwIDAtMi42NDk3IDkuMTE2MyAyMC4yODE4IDIwLjI4MTggMCAwIDAgMi4zNzU4IDIuNjNjMS4zMzIyLjEyNTggMi42NjUuMTcyMiA0LjA0NC4xNzIyaDEuMzE1NGMxLjM3OSAwIDIuNzExOC0uMDQ2NCA0LjA0NC0uMTcyMmEyMC4yODE4IDIwLjI4MTggMCAwIDAgMi4zNzU4LTIuNjMgMjAuMTk4NCAyMC4xOTg0IDAgMCAwIDIuNjQ5Ny05LjExNjNBMTkuNzkxMyAxOS43OTEzIDAgMCAwIDIwLjMxNyA0LjM2OTZ6TTE4LjE5IDEyQzE3LjY3IDE0LjQ5IDEzLjk5IDE2IDEyIDE2UzYuMzMgMTQuNDkgNS44MSAxMmMuNTItMi40OSA0LjE5LTQgNi4xOS00UzE3LjY3IDkuNTEgMTguMTkgMTJ6Ii8+PC9zdmc+";
621
+ default:
622
+ return "data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48dGV4dCB4PSIxMiIgeT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIiBmb250LXNpemU9IjEyIj57cHJvdmlkZXIuaWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9PC90ZXh0Pjwvc3ZnPg==";
623
+ }
624
+ };
625
+ return {
626
+ providers: N(() => s.value),
627
+ enabledProviders: o,
628
+ loading: N(() => r.value),
629
+ error: N(() => u.value),
630
+ fetchProviders: i,
631
+ getProviderAuthUrl: n,
632
+ redirectToProvider: b,
633
+ getProviderById: c,
634
+ getProviderIcon: f
635
+ };
636
+ }
637
+ const lt = { class: "w-full max-w-md mx-auto animate-slide-up" }, nt = { class: "text-center mb-8" }, ot = {
638
+ key: "tabs",
639
+ class: "mb-8"
640
+ }, it = {
641
+ key: "oauth",
18
642
  class: "space-y-3 mb-6"
19
- }, qA = ["onClick"], VA = { class: "w-5 h-5 flex items-center justify-center" }, gA = {
643
+ }, ut = { class: "w-5 h-5 flex items-center justify-center" }, dt = {
20
644
  key: 0,
21
- viewBox: "0 0 24 24",
22
645
  class: "w-5 h-5"
23
- }, bA = {
646
+ }, ct = ["src", "alt"], mt = {
24
647
  key: 1,
648
+ viewBox: "0 0 24 24",
649
+ class: "w-5 h-5"
650
+ }, vt = {
651
+ key: 2,
25
652
  class: "w-5 h-5 fill-current",
26
653
  viewBox: "0 0 24 24"
27
- }, wA = {
28
- key: 2,
654
+ }, pt = {
655
+ key: 3,
29
656
  class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center"
30
- }, WA = { class: "text-xs font-semibold text-neutral-600" }, hA = { class: "font-medium" }, CA = {
31
- key: 1,
657
+ }, ft = { class: "text-xs font-semibold text-neutral-600" }, gt = { class: "font-medium" }, bt = {
658
+ key: "divider",
32
659
  class: "divider-with-text"
33
- }, yA = { class: "divider-text" }, xA = { class: "space-y-4" }, FA = {
34
- key: 0,
35
- class: "grid grid-cols-2 gap-4"
36
- }, XA = {
37
- key: 0,
38
- class: "flex items-center justify-between mb-2"
39
- }, UA = {
40
- key: 1,
41
- for: "password",
42
- class: "label-modern"
43
- }, NA = ["autocomplete", "placeholder"], BA = {
44
- key: 2,
45
- class: "mt-2"
46
- }, PA = { class: "flex items-center justify-between text-xs mb-1" }, LA = { class: "w-full bg-neutral-200 rounded-full h-2" }, zA = { key: 1 }, ZA = {
47
- key: 0,
48
- class: "animate-fade-in"
49
- }, kA = ["disabled"], SA = {
50
- key: 0,
51
- class: "flex items-center justify-center gap-2"
52
- }, KA = { key: 1 }, YA = {
53
- key: 2,
54
- class: "mt-6 animate-fade-in"
55
- }, DA = { class: "alert-error" }, QA = { class: "flex items-start gap-3" }, HA = { class: "font-medium" }, Rt = /* @__PURE__ */ L({
660
+ }, wt = { class: "divider-text" }, yt = { class: "space-y-4" }, Vt = { key: "password-section" }, ht = { class: "flex items-center justify-between mb-2" }, qt = {
661
+ key: "back-link",
662
+ class: "mt-8 text-center"
663
+ }, Ct = /* @__PURE__ */ P({
56
664
  __name: "StrandsAuth",
57
665
  props: {
58
666
  mode: { default: "signin" },
59
- oauthProviders: { default: () => [] },
60
- redirectUrl: { default: "/" }
667
+ redirectUrl: { default: "/" },
668
+ config: {}
61
669
  },
62
- emits: ["success", "error", "forgot-password", "mode-changed"],
63
- setup(F, { emit: h }) {
64
- const c = F, f = h, n = x(c.mode), r = x(!1), m = x(""), t = k({
670
+ emits: ["success", "error", "forgot-password", "password-reset-sent", "mode-changed"],
671
+ setup(V, { emit: g }) {
672
+ const s = V, r = g, { getUrl: u } = de(s.config), {
673
+ enabledProviders: o,
674
+ loading: i,
675
+ error: n,
676
+ fetchProviders: b,
677
+ redirectToProvider: c,
678
+ getProviderIcon: f
679
+ } = fe({
680
+ redirectUrl: s.redirectUrl
681
+ });
682
+ ae(() => {
683
+ b().catch((S) => {
684
+ console.warn("Failed to fetch OAuth providers:", S);
685
+ });
686
+ });
687
+ const t = N(() => o.value), p = {
688
+ async signIn(S, C) {
689
+ var T, Q;
690
+ const M = await fetch(u("signIn"), {
691
+ method: "POST",
692
+ headers: {
693
+ "Content-Type": "application/json"
694
+ },
695
+ body: JSON.stringify({ email: S, password: C })
696
+ });
697
+ if (!M.ok) {
698
+ const B = await M.json().catch(() => ({}));
699
+ throw new Error(((T = B.error) == null ? void 0 : T.message) || `HTTP ${M.status}: ${M.statusText}`);
700
+ }
701
+ const k = await M.json();
702
+ if (!k.success)
703
+ throw new Error(((Q = k.error) == null ? void 0 : Q.message) || "Sign in failed");
704
+ return k.data;
705
+ },
706
+ async signUp(S, C, M, k) {
707
+ var B, ge;
708
+ const T = await fetch(u("signUp"), {
709
+ method: "POST",
710
+ headers: {
711
+ "Content-Type": "application/json"
712
+ },
713
+ body: JSON.stringify({ email: S, password: C, firstName: M, lastName: k })
714
+ });
715
+ if (!T.ok) {
716
+ const he = await T.json().catch(() => ({}));
717
+ throw new Error(((B = he.error) == null ? void 0 : B.message) || `HTTP ${T.status}: ${T.statusText}`);
718
+ }
719
+ const Q = await T.json();
720
+ if (!Q.success)
721
+ throw new Error(((ge = Q.error) == null ? void 0 : ge.message) || "Sign up failed");
722
+ return Q.data;
723
+ },
724
+ async requestPasswordReset(S) {
725
+ throw new Error("Password reset functionality is not yet implemented in the API. Please contact support.");
726
+ }
727
+ }, m = U(s.mode), z = U(!1), h = U(""), l = U(!1), y = J({
65
728
  firstName: "",
66
729
  lastName: "",
67
730
  email: "",
68
731
  password: "",
69
732
  confirmPassword: ""
70
- }), i = U(() => n.value === "signup"), e = U(() => t.password === t.confirmPassword), p = U(() => {
71
- const u = t.email.trim() && t.password;
72
- return i.value ? u && t.firstName.trim() && t.lastName.trim() && t.confirmPassword && e.value && g(t.password).score >= 2 : u;
73
- }), g = (u) => {
74
- let o = 0;
75
- return u.length >= 8 && (o += 1), u.length >= 12 && (o += 1), /[a-z]/.test(u) && (o += 1), /[A-Z]/.test(u) && (o += 1), /[0-9]/.test(u) && (o += 1), /[^A-Za-z0-9]/.test(u) && (o += 1), o <= 2 ? {
76
- score: o,
77
- label: "Weak",
78
- color: "border-red-300",
79
- bgColor: "bg-red-400",
80
- textColor: "text-red-600",
81
- width: 33
82
- } : o <= 4 ? {
83
- score: o,
84
- label: "Medium",
85
- color: "border-yellow-300",
86
- bgColor: "bg-yellow-400",
87
- textColor: "text-yellow-600",
88
- width: 66
89
- } : {
90
- score: o,
91
- label: "Strong",
92
- color: "border-emerald-300",
93
- bgColor: "bg-emerald-400",
94
- textColor: "text-emerald-600",
95
- width: 100
96
- };
97
- }, v = (u) => {
98
- n.value = u, m.value = "", t.firstName = "", t.lastName = "", t.email = "", t.password = "", t.confirmPassword = "", f("mode-changed", u);
99
- }, l = () => {
100
- }, S = async () => {
101
- r.value = !0, m.value = "";
733
+ }), X = N(() => m.value === "signup"), v = N(() => m.value === "reset-password");
734
+ N(() => y.password === y.confirmPassword);
735
+ const F = N(() => v.value ? y.email.trim() && !l.value : X.value ? y.email.trim() : y.email.trim() && y.password), q = async () => {
736
+ z.value = !0, h.value = "";
102
737
  try {
103
- i.value ? (console.log("Sign up attempt:", { ...t, password: "***", confirmPassword: "***" }), f("success", {
104
- email: t.email,
105
- firstName: t.firstName,
106
- lastName: t.lastName
107
- })) : (console.log("Sign in attempt:", { email: t.email, password: "***" }), f("success", { email: t.email }));
108
- } catch {
109
- m.value = i.value ? "Failed to create account" : "Invalid email or password", f("error", m.value);
738
+ if (v.value)
739
+ await p.requestPasswordReset(y.email), l.value = !0, r("password-reset-sent", y.email);
740
+ else if (X.value) {
741
+ const S = await p.signUp(
742
+ y.email,
743
+ y.password,
744
+ y.firstName,
745
+ y.lastName
746
+ );
747
+ r("success", S.user);
748
+ } else {
749
+ const S = await p.signIn(y.email, y.password);
750
+ r("success", S.user);
751
+ }
752
+ } catch (S) {
753
+ const C = S instanceof Error ? S.message : "An unexpected error occurred";
754
+ h.value = C, r("error", C);
110
755
  } finally {
111
- r.value = !1;
756
+ z.value = !1;
112
757
  }
113
- }, z = async (u) => {
758
+ }, d = async (S) => {
114
759
  try {
115
- console.log("OAuth auth:", u, i.value ? "signup" : "signin");
116
- } catch {
117
- m.value = `Failed to ${i.value ? "sign up" : "sign in"} with ${u}`, f("error", m.value);
760
+ await c(S, {
761
+ redirectUrl: s.redirectUrl
762
+ });
763
+ } catch (C) {
764
+ const M = C instanceof Error ? C.message : `Failed to ${X.value ? "sign up" : "sign in"} with ${S}`;
765
+ h.value = M, r("error", M);
118
766
  }
119
767
  };
120
- return tA(() => c.mode, (u) => {
121
- n.value = u;
122
- }), (u, o) => {
123
- var D, j;
124
- return a(), s("div", dA, [
125
- A("div", uA, [
126
- A("div", cA, [
127
- A("h1", mA, V(i.value ? "Create account" : "Welcome back"), 1),
128
- A("p", pA, V(i.value ? "Join us and start your journey today" : "Sign in to your account to continue"), 1)
129
- ]),
130
- A("div", vA, [
131
- A("button", {
132
- onClick: o[0] || (o[0] = (W) => v("signin")),
133
- class: w([
134
- "flex-1 py-3 px-4 rounded-lg font-medium transition-all duration-200",
135
- i.value ? "text-neutral-600 hover:text-neutral-700" : "bg-white text-strands-600 shadow-soft"
136
- ])
137
- }, " Sign In ", 2),
138
- A("button", {
139
- onClick: o[1] || (o[1] = (W) => v("signup")),
140
- class: w([
141
- "flex-1 py-3 px-4 rounded-lg font-medium transition-all duration-200",
142
- i.value ? "bg-white text-strands-600 shadow-soft" : "text-neutral-600 hover:text-neutral-700"
143
- ])
144
- }, " Sign Up ", 2)
145
- ]),
146
- (D = u.oauthProviders) != null && D.length ? (a(), s("div", fA, [
147
- (a(!0), s(T, null, R(u.oauthProviders, (W) => (a(), s("button", {
148
- key: W,
149
- onClick: (q) => z(W),
150
- class: "btn-oauth w-full group"
151
- }, [
152
- A("div", VA, [
153
- W === "google" ? (a(), s("svg", gA, o[9] || (o[9] = [
154
- A("path", {
155
- fill: "#4285F4",
156
- 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"
157
- }, null, -1),
158
- A("path", {
159
- fill: "#34A853",
160
- 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"
161
- }, null, -1),
162
- A("path", {
163
- fill: "#FBBC05",
164
- 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"
165
- }, null, -1),
166
- A("path", {
167
- fill: "#EA4335",
168
- 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"
169
- }, null, -1)
170
- ]))) : W === "github" ? (a(), s("svg", bA, o[10] || (o[10] = [
171
- A("path", { 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" }, null, -1)
172
- ]))) : (a(), s("div", wA, [
173
- A("span", WA, V(W.charAt(0).toUpperCase()), 1)
174
- ]))
768
+ return ne(() => s.mode, (S) => {
769
+ m.value = S;
770
+ }), ne(m, (S) => {
771
+ h.value = "", l.value = !1, y.firstName = "", y.lastName = "", y.email = "", y.password = "", y.confirmPassword = "", r("mode-changed", S);
772
+ }), (S, C) => (A(), a("div", lt, [
773
+ x(w(ue), { variant: "modern" }, {
774
+ default: D(() => [
775
+ e("div", nt, [
776
+ x(H, {
777
+ name: "fade",
778
+ mode: "out-in"
779
+ }, {
780
+ default: D(() => [
781
+ (A(), a("h1", {
782
+ key: m.value,
783
+ class: "text-3xl font-bold text-gradient mb-2"
784
+ }, L(v.value ? "Reset password" : X.value ? "Create account" : "Welcome back"), 1))
175
785
  ]),
176
- A("span", hA, "Continue with " + V(W.charAt(0).toUpperCase() + W.slice(1)), 1)
177
- ], 8, qA))), 128))
178
- ])) : b("", !0),
179
- (j = u.oauthProviders) != null && j.length ? (a(), s("div", CA, [
180
- A("span", yA, "Or " + V(i.value ? "create account" : "sign in") + " with email", 1)
181
- ])) : b("", !0),
182
- A("form", {
183
- onSubmit: O(S, ["prevent"]),
786
+ _: 1
787
+ }),
788
+ x(H, {
789
+ name: "fade",
790
+ mode: "out-in"
791
+ }, {
792
+ default: D(() => [
793
+ (A(), a("p", {
794
+ key: m.value,
795
+ class: "text-neutral-600"
796
+ }, L(v.value ? "Enter your email address and we'll send you a link to reset your password" : X.value ? "We'll send you a magic link to get started" : "Sign in to your account to continue"), 1))
797
+ ]),
798
+ _: 1
799
+ })
800
+ ]),
801
+ x(H, {
802
+ name: "height-fade",
803
+ mode: "out-in"
804
+ }, {
805
+ default: D(() => [
806
+ v.value ? W("", !0) : (A(), a("div", ot, [
807
+ x(w(tt), {
808
+ modelValue: m.value,
809
+ "onUpdate:modelValue": C[0] || (C[0] = (M) => m.value = M),
810
+ tabs: [
811
+ { label: "Sign In", value: "signin" },
812
+ { label: "Sign Up", value: "signup" }
813
+ ]
814
+ }, null, 8, ["modelValue"])
815
+ ]))
816
+ ]),
817
+ _: 1
818
+ }),
819
+ x(H, {
820
+ name: "height-fade",
821
+ mode: "out-in"
822
+ }, {
823
+ default: D(() => {
824
+ var M;
825
+ return [
826
+ !v.value && ((M = t.value) != null && M.length) ? (A(), a("div", it, [
827
+ (A(!0), a(oe, null, ie(t.value, (k) => (A(), E(w(_), {
828
+ key: k.id,
829
+ variant: "outline",
830
+ "full-width": "",
831
+ disabled: w(i),
832
+ onClick: (T) => d(k.id),
833
+ class: "btn-oauth group"
834
+ }, {
835
+ default: D(() => [
836
+ e("div", ut, [
837
+ k.iconUrl ? (A(), a("div", dt, [
838
+ e("img", {
839
+ src: k.iconUrl,
840
+ alt: `${k.displayName || k.name} icon`,
841
+ class: "w-5 h-5"
842
+ }, null, 8, ct)
843
+ ])) : k.id === "google" ? (A(), a("svg", mt, C[6] || (C[6] = [
844
+ e("path", {
845
+ fill: "#4285F4",
846
+ 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"
847
+ }, null, -1),
848
+ e("path", {
849
+ fill: "#34A853",
850
+ 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"
851
+ }, null, -1),
852
+ e("path", {
853
+ fill: "#FBBC05",
854
+ 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"
855
+ }, null, -1),
856
+ e("path", {
857
+ fill: "#EA4335",
858
+ 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"
859
+ }, null, -1)
860
+ ]))) : k.id === "github" ? (A(), a("svg", vt, C[7] || (C[7] = [
861
+ e("path", { 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" }, null, -1)
862
+ ]))) : (A(), a("div", pt, [
863
+ e("span", ft, L((k.displayName || k.name).charAt(0).toUpperCase()), 1)
864
+ ]))
865
+ ]),
866
+ e("span", gt, " Continue with " + L(k.displayName || k.name.charAt(0).toUpperCase() + k.name.slice(1)), 1)
867
+ ]),
868
+ _: 2
869
+ }, 1032, ["disabled", "onClick"]))), 128))
870
+ ])) : W("", !0)
871
+ ];
872
+ }),
873
+ _: 1
874
+ }),
875
+ x(H, {
876
+ name: "height-fade",
877
+ mode: "out-in"
878
+ }, {
879
+ default: D(() => {
880
+ var M;
881
+ return [
882
+ !v.value && ((M = t.value) != null && M.length) ? (A(), a("div", bt, [
883
+ e("span", wt, "Or " + L(X.value ? "create account" : "sign in") + " with email", 1)
884
+ ])) : W("", !0)
885
+ ];
886
+ }),
887
+ _: 1
888
+ }),
889
+ e("form", {
890
+ onSubmit: re(q, ["prevent"]),
184
891
  class: "space-y-6"
185
892
  }, [
186
- A("div", xA, [
187
- i.value ? (a(), s("div", FA, [
188
- A("div", null, [
189
- o[11] || (o[11] = A("label", {
190
- for: "firstName",
191
- class: "label-modern"
192
- }, "First name", -1)),
193
- C(A("input", {
194
- id: "firstName",
195
- "onUpdate:modelValue": o[2] || (o[2] = (W) => t.firstName = W),
196
- type: "text",
197
- required: "",
198
- autocomplete: "given-name",
199
- class: w([
200
- "input-modern",
201
- m.value && "input-error"
893
+ e("div", yt, [
894
+ x(w(ee), {
895
+ modelValue: y.email,
896
+ "onUpdate:modelValue": C[1] || (C[1] = (M) => y.email = M),
897
+ type: "email",
898
+ label: "Email address",
899
+ placeholder: "Enter your email",
900
+ required: "",
901
+ autocomplete: "email",
902
+ error: h.value && !y.email ? "Email is required" : ""
903
+ }, null, 8, ["modelValue", "error"]),
904
+ x(H, {
905
+ name: "height-fade",
906
+ mode: "out-in"
907
+ }, {
908
+ default: D(() => [
909
+ !v.value && !X.value ? (A(), a("div", Vt, [
910
+ e("div", ht, [
911
+ C[9] || (C[9] = e("span", { class: "text-sm font-medium text-gray-700" }, "Password", -1)),
912
+ x(w(Ae), {
913
+ variant: "primary",
914
+ size: "sm",
915
+ onClick: C[2] || (C[2] = (M) => m.value = "reset-password")
916
+ }, {
917
+ default: D(() => C[8] || (C[8] = [
918
+ j(" Forgot password? ", -1)
919
+ ])),
920
+ _: 1,
921
+ __: [8]
922
+ })
202
923
  ]),
203
- placeholder: "Enter first name"
204
- }, null, 2), [
205
- [y, t.firstName]
206
- ])
207
- ]),
208
- A("div", null, [
209
- o[12] || (o[12] = A("label", {
210
- for: "lastName",
211
- class: "label-modern"
212
- }, "Last name", -1)),
213
- C(A("input", {
214
- id: "lastName",
215
- "onUpdate:modelValue": o[3] || (o[3] = (W) => t.lastName = W),
216
- type: "text",
217
- required: "",
218
- autocomplete: "family-name",
219
- class: w([
220
- "input-modern",
221
- m.value && "input-error"
222
- ]),
223
- placeholder: "Enter last name"
224
- }, null, 2), [
225
- [y, t.lastName]
226
- ])
227
- ])
228
- ])) : b("", !0),
229
- A("div", null, [
230
- o[13] || (o[13] = A("label", {
231
- for: "email",
232
- class: "label-modern"
233
- }, "Email address", -1)),
234
- C(A("input", {
235
- id: "email",
236
- "onUpdate:modelValue": o[4] || (o[4] = (W) => t.email = W),
237
- type: "email",
238
- required: "",
239
- autocomplete: "email",
240
- class: w([
241
- "input-modern",
242
- m.value && "input-error"
243
- ]),
244
- placeholder: "Enter your email address"
245
- }, null, 2), [
246
- [y, t.email]
247
- ])
248
- ]),
249
- A("div", null, [
250
- i.value ? (a(), s("label", UA, "Password")) : (a(), s("div", XA, [
251
- o[14] || (o[14] = A("label", {
252
- for: "password",
253
- class: "label-modern mb-0"
254
- }, "Password", -1)),
255
- A("button", {
256
- type: "button",
257
- class: "text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200",
258
- onClick: o[5] || (o[5] = (W) => u.$emit("forgot-password"))
259
- }, " Forgot password? ")
260
- ])),
261
- C(A("input", {
262
- id: "password",
263
- "onUpdate:modelValue": o[6] || (o[6] = (W) => t.password = W),
264
- type: "password",
265
- required: "",
266
- autocomplete: i.value ? "new-password" : "current-password",
267
- class: w([
268
- "input-modern",
269
- m.value && "input-error",
270
- i.value && t.password && g(t.password).color
271
- ]),
272
- placeholder: i.value ? "Create a secure password" : "Enter your password",
273
- onInput: o[7] || (o[7] = (W) => i.value && l())
274
- }, null, 42, NA), [
275
- [y, t.password]
924
+ x(w(ee), {
925
+ modelValue: y.password,
926
+ "onUpdate:modelValue": C[3] || (C[3] = (M) => y.password = M),
927
+ type: "password",
928
+ placeholder: "Enter your password",
929
+ required: "",
930
+ autocomplete: "current-password",
931
+ error: h.value && !y.password ? "Password is required" : ""
932
+ }, null, 8, ["modelValue", "error"])
933
+ ])) : W("", !0)
276
934
  ]),
277
- i.value && t.password ? (a(), s("div", BA, [
278
- A("div", PA, [
279
- o[15] || (o[15] = A("span", { class: "text-neutral-600" }, "Password strength", -1)),
280
- A("span", {
281
- class: w(g(t.password).textColor)
282
- }, V(g(t.password).label), 3)
283
- ]),
284
- A("div", LA, [
285
- A("div", {
286
- class: w(["h-2 rounded-full transition-all duration-300", g(t.password).bgColor]),
287
- style: sA({ width: `${g(t.password).width}%` })
288
- }, null, 6)
289
- ])
290
- ])) : b("", !0)
291
- ]),
292
- i.value ? (a(), s("div", zA, [
293
- o[16] || (o[16] = A("label", {
294
- for: "confirmPassword",
295
- class: "label-modern"
296
- }, "Confirm password", -1)),
297
- C(A("input", {
298
- id: "confirmPassword",
299
- "onUpdate:modelValue": o[8] || (o[8] = (W) => t.confirmPassword = W),
300
- type: "password",
301
- required: "",
302
- autocomplete: "new-password",
303
- class: w([
304
- "input-modern",
305
- m.value && "input-error",
306
- t.confirmPassword && !e.value && "input-error"
307
- ]),
308
- placeholder: "Confirm your password"
309
- }, null, 2), [
310
- [y, t.confirmPassword]
311
- ])
312
- ])) : b("", !0)
935
+ _: 1
936
+ })
313
937
  ]),
314
- i.value && !e.value && t.confirmPassword ? (a(), s("div", ZA, o[17] || (o[17] = [
315
- Y('<div class="alert-warning"><div class="flex items-start gap-3"><svg class="w-4 h-4 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"></path></svg><p class="font-medium">Passwords do not match</p></div></div>', 1)
316
- ]))) : b("", !0),
317
- A("button", {
938
+ x(w(_), {
318
939
  type: "submit",
319
- disabled: r.value || !p.value,
320
- class: "btn-primary"
321
- }, [
322
- r.value ? (a(), s("span", SA, [
323
- o[18] || (o[18] = A("svg", {
324
- class: "animate-spin w-4 h-4",
325
- fill: "none",
326
- viewBox: "0 0 24 24"
327
- }, [
328
- A("circle", {
329
- class: "opacity-25",
330
- cx: "12",
331
- cy: "12",
332
- r: "10",
333
- stroke: "currentColor",
334
- "stroke-width": "4"
335
- }),
336
- A("path", {
337
- class: "opacity-75",
338
- fill: "currentColor",
339
- 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"
340
- })
341
- ], -1)),
342
- Z(" " + V(i.value ? "Creating account..." : "Signing in..."), 1)
343
- ])) : (a(), s("span", KA, V(i.value ? "Create account" : "Sign in"), 1))
344
- ], 8, kA)
940
+ variant: "primary",
941
+ "full-width": "",
942
+ disabled: z.value || !F.value,
943
+ loading: z.value,
944
+ "loading-text": v.value ? "Sending link..." : X.value ? "Sending magic link..." : "Signing in..."
945
+ }, {
946
+ default: D(() => [
947
+ j(L(v.value ? l.value ? "Link sent!" : "Send reset link" : X.value ? "Send magic link" : "Sign in"), 1)
948
+ ]),
949
+ _: 1
950
+ }, 8, ["disabled", "loading", "loading-text"])
345
951
  ], 32),
346
- m.value ? (a(), s("div", YA, [
347
- A("div", DA, [
348
- A("div", QA, [
349
- o[19] || (o[19] = A("svg", {
350
- class: "w-4 h-4 mt-0.5 flex-shrink-0",
351
- fill: "currentColor",
352
- viewBox: "0 0 20 20"
353
- }, [
354
- A("path", {
355
- "fill-rule": "evenodd",
356
- 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",
357
- "clip-rule": "evenodd"
358
- })
359
- ], -1)),
360
- A("p", HA, V(m.value), 1)
361
- ])
362
- ])
363
- ])) : b("", !0),
364
- I(G)
365
- ])
366
- ]);
367
- };
952
+ x(H, {
953
+ name: "expand",
954
+ mode: "out-in"
955
+ }, {
956
+ default: D(() => [
957
+ v.value && l.value ? (A(), E(w(se), {
958
+ key: "reset-success",
959
+ variant: "success",
960
+ message: `Check your email - We've sent a password reset link to ${y.email}`,
961
+ class: "mt-6 animate-fade-in"
962
+ }, null, 8, ["message"])) : W("", !0)
963
+ ]),
964
+ _: 1
965
+ }),
966
+ x(H, {
967
+ name: "height-fade",
968
+ mode: "out-in"
969
+ }, {
970
+ default: D(() => [
971
+ v.value ? (A(), a("div", qt, [
972
+ x(w(Ae), {
973
+ onClick: C[4] || (C[4] = (M) => m.value = "signin"),
974
+ class: "inline-flex items-center gap-2"
975
+ }, {
976
+ default: D(() => C[10] || (C[10] = [
977
+ e("svg", {
978
+ class: "w-4 h-4",
979
+ fill: "none",
980
+ stroke: "currentColor",
981
+ viewBox: "0 0 24 24"
982
+ }, [
983
+ e("path", {
984
+ "stroke-linecap": "round",
985
+ "stroke-linejoin": "round",
986
+ "stroke-width": "2",
987
+ d: "M15 19l-7-7 7-7"
988
+ })
989
+ ], -1),
990
+ j(" Back to sign in ", -1)
991
+ ])),
992
+ _: 1,
993
+ __: [10]
994
+ })
995
+ ])) : W("", !0)
996
+ ]),
997
+ _: 1
998
+ }),
999
+ h.value ? (A(), E(w(se), {
1000
+ key: 0,
1001
+ variant: "error",
1002
+ message: h.value,
1003
+ class: "mt-6 animate-fade-in",
1004
+ dismissible: "",
1005
+ onDismiss: C[5] || (C[5] = (M) => h.value = "")
1006
+ }, null, 8, ["message"])) : W("", !0),
1007
+ x(le)
1008
+ ]),
1009
+ _: 1
1010
+ })
1011
+ ]));
368
1012
  }
369
- }), IA = { class: "w-full max-w-md mx-auto animate-slide-up" }, OA = { class: "card-modern" }, GA = {
1013
+ }), tA = /* @__PURE__ */ we(Ct, [["__scopeId", "data-v-7f6add9f"]]), Wt = { class: "w-full max-w-md mx-auto animate-slide-up" }, xt = {
370
1014
  key: 0,
371
1015
  class: "space-y-3 mb-6"
372
- }, jA = ["onClick"], MA = { class: "w-5 h-5 flex items-center justify-center" }, TA = {
1016
+ }, Nt = { class: "w-5 h-5 flex items-center justify-center" }, Lt = {
373
1017
  key: 0,
374
- viewBox: "0 0 24 24",
375
1018
  class: "w-5 h-5"
376
- }, RA = {
1019
+ }, Ut = ["src", "alt"], Mt = {
377
1020
  key: 1,
1021
+ viewBox: "0 0 24 24",
1022
+ class: "w-5 h-5"
1023
+ }, zt = {
1024
+ key: 2,
378
1025
  class: "w-5 h-5 fill-current",
379
1026
  viewBox: "0 0 24 24"
380
- }, JA = {
381
- key: 2,
1027
+ }, St = {
1028
+ key: 3,
382
1029
  class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center"
383
- }, EA = { class: "text-xs font-semibold text-neutral-600" }, _A = { class: "font-medium" }, $A = {
1030
+ }, Dt = { class: "text-xs font-semibold text-neutral-600" }, Xt = { class: "font-medium" }, kt = {
384
1031
  key: 1,
385
1032
  class: "divider-with-text"
386
- }, Ae = { class: "space-y-4" }, ee = { class: "flex items-center justify-between mb-2" }, te = ["disabled"], se = {
387
- key: 0,
388
- class: "flex items-center justify-center gap-2"
389
- }, ae = { key: 1 }, re = {
390
- key: 2,
391
- class: "mt-6 animate-fade-in"
392
- }, le = { class: "alert-error" }, oe = { class: "flex items-start gap-3" }, ne = { class: "font-medium" }, ie = { class: "mt-8 text-center" }, de = { class: "text-sm text-neutral-600" }, Jt = /* @__PURE__ */ L({
1033
+ }, Bt = { class: "space-y-4" }, Ft = { class: "flex items-center justify-between mb-2" }, Pt = { class: "mt-8 text-center" }, It = { class: "text-sm text-neutral-600" }, sA = /* @__PURE__ */ P({
393
1034
  __name: "StrandsSignIn",
394
1035
  props: {
395
- oauthProviders: { default: () => [] },
396
- redirectUrl: { default: "/" }
1036
+ redirectUrl: { default: "/" },
1037
+ oauthScopes: { default: () => [] },
1038
+ config: {}
397
1039
  },
398
1040
  emits: ["success", "error", "forgot-password", "switch-to-signup"],
399
- setup(F, { emit: h }) {
400
- const c = h, f = x(!1), n = x(""), r = k({
1041
+ setup(V, { emit: g }) {
1042
+ const s = V, r = g, { getUrl: u } = de(s.config), {
1043
+ enabledProviders: o,
1044
+ loading: i,
1045
+ error: n,
1046
+ fetchProviders: b,
1047
+ redirectToProvider: c
1048
+ } = fe({
1049
+ redirectUrl: s.redirectUrl,
1050
+ scopes: s.oauthScopes
1051
+ });
1052
+ ae(() => {
1053
+ b().catch((h) => {
1054
+ console.warn("Failed to fetch OAuth providers:", h);
1055
+ });
1056
+ });
1057
+ const f = U(!1), t = U(""), p = J({
401
1058
  email: "",
402
1059
  password: ""
403
1060
  }), m = async () => {
404
- f.value = !0, n.value = "";
1061
+ f.value = !0, t.value = "";
405
1062
  try {
406
- console.log("Sign in attempt:", r), c("success", { email: r.email });
1063
+ console.log("Sign in attempt:", p), r("success", { email: p.email });
407
1064
  } catch {
408
- n.value = "Invalid email or password", c("error", n.value);
1065
+ t.value = "Invalid email or password", r("error", t.value);
409
1066
  } finally {
410
1067
  f.value = !1;
411
1068
  }
412
- }, t = async (i) => {
1069
+ }, z = async (h) => {
413
1070
  try {
414
- console.log("OAuth sign in:", i);
415
- } catch {
416
- n.value = `Failed to sign in with ${i}`, c("error", n.value);
1071
+ await c(h, {
1072
+ redirectUrl: s.redirectUrl,
1073
+ scopes: s.oauthScopes
1074
+ });
1075
+ } catch (l) {
1076
+ const y = l instanceof Error ? l.message : `Failed to sign in with ${h}`;
1077
+ t.value = y, r("error", y);
417
1078
  }
418
1079
  };
419
- return (i, e) => {
420
- var p, g;
421
- return a(), s("div", IA, [
422
- A("div", OA, [
423
- e[12] || (e[12] = A("div", { class: "text-center mb-8" }, [
424
- A("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Welcome back"),
425
- A("p", { class: "text-neutral-600" }, "Sign in to your account to continue")
426
- ], -1)),
427
- (p = i.oauthProviders) != null && p.length ? (a(), s("div", GA, [
428
- (a(!0), s(T, null, R(i.oauthProviders, (v) => (a(), s("button", {
429
- key: v,
430
- onClick: (l) => t(v),
431
- class: "btn-oauth w-full group"
1080
+ return (h, l) => (A(), a("div", Wt, [
1081
+ x(w(ue), { variant: "modern" }, {
1082
+ default: D(() => {
1083
+ var y, X;
1084
+ return [
1085
+ l[13] || (l[13] = e("div", { class: "text-center mb-8" }, [
1086
+ e("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Welcome back"),
1087
+ e("p", { class: "text-neutral-600" }, "Sign in to your account to continue")
1088
+ ], -1)),
1089
+ (y = w(o)) != null && y.length ? (A(), a("div", xt, [
1090
+ (A(!0), a(oe, null, ie(w(o), (v) => (A(), E(w(_), {
1091
+ key: v.id,
1092
+ variant: "outline",
1093
+ "full-width": "",
1094
+ disabled: w(i),
1095
+ onClick: (F) => z(v.id),
1096
+ class: "btn-oauth group"
1097
+ }, {
1098
+ default: D(() => [
1099
+ e("div", Nt, [
1100
+ v.iconUrl ? (A(), a("div", Lt, [
1101
+ e("img", {
1102
+ src: v.iconUrl,
1103
+ alt: `${v.displayName || v.name} icon`,
1104
+ class: "w-5 h-5"
1105
+ }, null, 8, Ut)
1106
+ ])) : v.id === "google" ? (A(), a("svg", Mt, l[5] || (l[5] = [
1107
+ e("path", {
1108
+ fill: "#4285F4",
1109
+ 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"
1110
+ }, null, -1),
1111
+ e("path", {
1112
+ fill: "#34A853",
1113
+ 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"
1114
+ }, null, -1),
1115
+ e("path", {
1116
+ fill: "#FBBC05",
1117
+ 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"
1118
+ }, null, -1),
1119
+ e("path", {
1120
+ fill: "#EA4335",
1121
+ 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"
1122
+ }, null, -1)
1123
+ ]))) : v.id === "github" ? (A(), a("svg", zt, l[6] || (l[6] = [
1124
+ e("path", { 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" }, null, -1)
1125
+ ]))) : (A(), a("div", St, [
1126
+ e("span", Dt, L((v.displayName || v.name).charAt(0).toUpperCase()), 1)
1127
+ ]))
1128
+ ]),
1129
+ e("span", Xt, "Continue with " + L(v.displayName || v.name), 1)
1130
+ ]),
1131
+ _: 2
1132
+ }, 1032, ["disabled", "onClick"]))), 128))
1133
+ ])) : W("", !0),
1134
+ (X = w(o)) != null && X.length ? (A(), a("div", kt, l[7] || (l[7] = [
1135
+ e("span", { class: "divider-text" }, "Or sign in with email", -1)
1136
+ ]))) : W("", !0),
1137
+ e("form", {
1138
+ onSubmit: re(m, ["prevent"]),
1139
+ class: "space-y-6"
432
1140
  }, [
433
- A("div", MA, [
434
- v === "google" ? (a(), s("svg", TA, e[4] || (e[4] = [
435
- A("path", {
436
- fill: "#4285F4",
437
- 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"
438
- }, null, -1),
439
- A("path", {
440
- fill: "#34A853",
441
- 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"
442
- }, null, -1),
443
- A("path", {
444
- fill: "#FBBC05",
445
- 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"
446
- }, null, -1),
447
- A("path", {
448
- fill: "#EA4335",
449
- 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"
450
- }, null, -1)
451
- ]))) : v === "github" ? (a(), s("svg", RA, e[5] || (e[5] = [
452
- A("path", { 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" }, null, -1)
453
- ]))) : (a(), s("div", JA, [
454
- A("span", EA, V(v.charAt(0).toUpperCase()), 1)
455
- ]))
456
- ]),
457
- A("span", _A, "Continue with " + V(v.charAt(0).toUpperCase() + v.slice(1)), 1)
458
- ], 8, jA))), 128))
459
- ])) : b("", !0),
460
- (g = i.oauthProviders) != null && g.length ? (a(), s("div", $A, e[6] || (e[6] = [
461
- A("span", { class: "divider-text" }, "Or sign in with email", -1)
462
- ]))) : b("", !0),
463
- A("form", {
464
- onSubmit: O(m, ["prevent"]),
465
- class: "space-y-6"
466
- }, [
467
- A("div", Ae, [
468
- A("div", null, [
469
- e[7] || (e[7] = A("label", {
470
- for: "email",
471
- class: "label-modern"
472
- }, "Email address", -1)),
473
- C(A("input", {
1141
+ e("div", Bt, [
1142
+ x(w(ee), {
474
1143
  id: "email",
475
- "onUpdate:modelValue": e[0] || (e[0] = (v) => r.email = v),
1144
+ modelValue: p.email,
1145
+ "onUpdate:modelValue": l[0] || (l[0] = (v) => p.email = v),
476
1146
  type: "email",
477
- required: "",
1147
+ label: "Email address",
1148
+ placeholder: "Enter your email address",
478
1149
  autocomplete: "email",
479
- class: w([
480
- "input-modern",
481
- n.value && "input-error"
482
- ]),
483
- placeholder: "Enter your email address"
484
- }, null, 2), [
485
- [y, r.email]
486
- ])
487
- ]),
488
- A("div", null, [
489
- A("div", ee, [
490
- e[8] || (e[8] = A("label", {
491
- for: "password",
492
- class: "label-modern mb-0"
493
- }, "Password", -1)),
494
- A("button", {
495
- type: "button",
496
- class: "text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200",
497
- onClick: e[1] || (e[1] = (v) => i.$emit("forgot-password"))
498
- }, " Forgot password? ")
499
- ]),
500
- C(A("input", {
501
- id: "password",
502
- "onUpdate:modelValue": e[2] || (e[2] = (v) => r.password = v),
503
- type: "password",
504
1150
  required: "",
505
- autocomplete: "current-password",
506
- class: w([
507
- "input-modern",
508
- n.value && "input-error"
1151
+ error: t.value ? "Invalid email or password" : void 0
1152
+ }, null, 8, ["modelValue", "error"]),
1153
+ e("div", null, [
1154
+ e("div", Ft, [
1155
+ l[9] || (l[9] = e("span", { class: "text-sm font-medium text-neutral-700" }, "Password", -1)),
1156
+ x(w(Ae), {
1157
+ onClick: l[1] || (l[1] = (v) => h.$emit("forgot-password")),
1158
+ class: "text-sm"
1159
+ }, {
1160
+ default: D(() => l[8] || (l[8] = [
1161
+ j(" Forgot password? ", -1)
1162
+ ])),
1163
+ _: 1,
1164
+ __: [8]
1165
+ })
509
1166
  ]),
510
- placeholder: "Enter your password"
511
- }, null, 2), [
512
- [y, r.password]
1167
+ x(w(ee), {
1168
+ id: "password",
1169
+ modelValue: p.password,
1170
+ "onUpdate:modelValue": l[2] || (l[2] = (v) => p.password = v),
1171
+ type: "password",
1172
+ placeholder: "Enter your password",
1173
+ autocomplete: "current-password",
1174
+ required: "",
1175
+ error: t.value ? "Invalid email or password" : void 0
1176
+ }, null, 8, ["modelValue", "error"])
513
1177
  ])
1178
+ ]),
1179
+ x(w(_), {
1180
+ type: "submit",
1181
+ variant: "primary",
1182
+ "full-width": "",
1183
+ disabled: f.value || !p.email || !p.password,
1184
+ loading: f.value,
1185
+ "loading-text": "Signing in..."
1186
+ }, {
1187
+ default: D(() => l[10] || (l[10] = [
1188
+ j(" Sign in ", -1)
1189
+ ])),
1190
+ _: 1,
1191
+ __: [10]
1192
+ }, 8, ["disabled", "loading"])
1193
+ ], 32),
1194
+ t.value ? (A(), E(w(se), {
1195
+ key: 2,
1196
+ variant: "error",
1197
+ message: t.value,
1198
+ class: "mt-6 animate-fade-in",
1199
+ dismissible: "",
1200
+ onDismiss: l[3] || (l[3] = (v) => t.value = "")
1201
+ }, null, 8, ["message"])) : W("", !0),
1202
+ e("div", Pt, [
1203
+ e("p", It, [
1204
+ l[12] || (l[12] = j(" Don't have an account? ", -1)),
1205
+ x(w(Ae), {
1206
+ onClick: l[4] || (l[4] = (v) => h.$emit("switch-to-signup"))
1207
+ }, {
1208
+ default: D(() => l[11] || (l[11] = [
1209
+ j(" Sign up ", -1)
1210
+ ])),
1211
+ _: 1,
1212
+ __: [11]
1213
+ })
514
1214
  ])
515
1215
  ]),
516
- A("button", {
517
- type: "submit",
518
- disabled: f.value || !r.email || !r.password,
519
- class: "btn-primary"
520
- }, [
521
- f.value ? (a(), s("span", se, e[9] || (e[9] = [
522
- A("svg", {
523
- class: "animate-spin w-4 h-4",
524
- fill: "none",
525
- viewBox: "0 0 24 24"
526
- }, [
527
- A("circle", {
528
- class: "opacity-25",
529
- cx: "12",
530
- cy: "12",
531
- r: "10",
532
- stroke: "currentColor",
533
- "stroke-width": "4"
534
- }),
535
- A("path", {
536
- class: "opacity-75",
537
- fill: "currentColor",
538
- 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"
539
- })
540
- ], -1),
541
- Z(" Signing in... ", -1)
542
- ]))) : (a(), s("span", ae, "Sign in"))
543
- ], 8, te)
544
- ], 32),
545
- n.value ? (a(), s("div", re, [
546
- A("div", le, [
547
- A("div", oe, [
548
- e[10] || (e[10] = A("svg", {
549
- class: "w-4 h-4 mt-0.5 flex-shrink-0",
550
- fill: "currentColor",
551
- viewBox: "0 0 20 20"
552
- }, [
553
- A("path", {
554
- "fill-rule": "evenodd",
555
- 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",
556
- "clip-rule": "evenodd"
557
- })
558
- ], -1)),
559
- A("p", ne, V(n.value), 1)
560
- ])
561
- ])
562
- ])) : b("", !0),
563
- A("div", ie, [
564
- A("p", de, [
565
- e[11] || (e[11] = Z(" Don't have an account? ", -1)),
566
- A("button", {
567
- type: "button",
568
- class: "font-semibold text-strands-600 hover:text-strands-700 transition-colors duration-200",
569
- onClick: e[3] || (e[3] = (v) => i.$emit("switch-to-signup"))
570
- }, " Sign up ")
571
- ])
572
- ]),
573
- I(G)
574
- ])
575
- ]);
576
- };
1216
+ x(le)
1217
+ ];
1218
+ }),
1219
+ _: 1,
1220
+ __: [13]
1221
+ })
1222
+ ]));
577
1223
  }
578
- }), ue = { class: "w-full max-w-md mx-auto animate-slide-up" }, ce = { class: "card-modern" }, me = {
1224
+ }), jt = { class: "w-full max-w-md mx-auto animate-slide-up" }, Zt = {
579
1225
  key: 0,
580
1226
  class: "space-y-3 mb-6"
581
- }, pe = ["onClick"], ve = { class: "w-5 h-5 flex items-center justify-center" }, fe = {
1227
+ }, Tt = { class: "w-5 h-5 flex items-center justify-center" }, Yt = {
582
1228
  key: 0,
583
- viewBox: "0 0 24 24",
584
1229
  class: "w-5 h-5"
585
- }, qe = {
1230
+ }, Kt = ["src", "alt"], Qt = {
586
1231
  key: 1,
1232
+ viewBox: "0 0 24 24",
1233
+ class: "w-5 h-5"
1234
+ }, Ot = {
1235
+ key: 2,
587
1236
  class: "w-5 h-5 fill-current",
588
1237
  viewBox: "0 0 24 24"
589
- }, Ve = {
590
- key: 2,
1238
+ }, Et = {
1239
+ key: 3,
591
1240
  class: "w-5 h-5 rounded-full bg-neutral-300 flex items-center justify-center"
592
- }, ge = { class: "text-xs font-semibold text-neutral-600" }, be = { class: "font-medium" }, we = {
1241
+ }, Ht = { class: "text-xs font-semibold text-neutral-600" }, Gt = { class: "font-medium" }, Rt = {
593
1242
  key: 1,
594
1243
  class: "divider-with-text"
595
- }, We = { class: "space-y-4" }, he = { class: "grid grid-cols-2 gap-4" }, Ce = {
596
- key: 0,
597
- class: "mt-2"
598
- }, ye = { class: "flex items-center justify-between text-xs mb-1" }, xe = { class: "w-full bg-neutral-200 rounded-full h-2" }, Fe = {
599
- key: 0,
600
- class: "animate-fade-in"
601
- }, Xe = ["disabled"], Ue = {
602
- key: 0,
603
- class: "flex items-center justify-center gap-2"
604
- }, Ne = { key: 1 }, Be = {
1244
+ }, Jt = {
605
1245
  key: 2,
606
1246
  class: "mt-6 animate-fade-in"
607
- }, Pe = { class: "alert-error" }, Le = { class: "flex items-start gap-3" }, ze = { class: "font-medium" }, Ze = { class: "mt-8 text-center" }, ke = { class: "text-sm text-neutral-600" }, Et = /* @__PURE__ */ L({
1247
+ }, _t = { class: "alert-error" }, $t = { class: "flex items-start gap-3" }, es = { class: "font-medium" }, ts = { class: "mt-8 text-center" }, ss = { class: "text-sm text-neutral-600" }, AA = /* @__PURE__ */ P({
608
1248
  __name: "StrandsSignUp",
609
1249
  props: {
610
- oauthProviders: { default: () => [] },
611
- redirectUrl: { default: "/" }
1250
+ redirectUrl: { default: "/" },
1251
+ oauthScopes: { default: () => [] },
1252
+ config: {}
612
1253
  },
613
1254
  emits: ["success", "error", "switch-to-signin"],
614
- setup(F, { emit: h }) {
615
- const c = h, f = x(!1), n = x(""), r = k({
616
- firstName: "",
617
- lastName: "",
618
- email: "",
619
- password: "",
620
- confirmPassword: ""
621
- }), m = U(() => r.password === r.confirmPassword), t = U(() => r.firstName.trim() && r.lastName.trim() && r.email.trim() && r.password && r.confirmPassword && m.value && i(r.password).score >= 2), i = (v) => {
622
- let l = 0;
623
- return v.length >= 8 && (l += 1), v.length >= 12 && (l += 1), /[a-z]/.test(v) && (l += 1), /[A-Z]/.test(v) && (l += 1), /[0-9]/.test(v) && (l += 1), /[^A-Za-z0-9]/.test(v) && (l += 1), l <= 2 ? {
624
- score: l,
625
- label: "Weak",
626
- color: "border-red-300",
627
- bgColor: "bg-red-400",
628
- textColor: "text-red-600",
629
- width: 33
630
- } : l <= 4 ? {
631
- score: l,
632
- label: "Medium",
633
- color: "border-yellow-300",
634
- bgColor: "bg-yellow-400",
635
- textColor: "text-yellow-600",
636
- width: 66
637
- } : {
638
- score: l,
639
- label: "Strong",
640
- color: "border-emerald-300",
641
- bgColor: "bg-emerald-400",
642
- textColor: "text-emerald-600",
643
- width: 100
644
- };
645
- }, e = () => {
646
- }, p = async () => {
647
- if (!m.value) {
648
- n.value = "Passwords do not match";
649
- return;
650
- }
651
- f.value = !0, n.value = "";
1255
+ setup(V, { emit: g }) {
1256
+ const s = V, r = g, { getUrl: u } = de(s.config), {
1257
+ enabledProviders: o,
1258
+ loading: i,
1259
+ error: n,
1260
+ fetchProviders: b,
1261
+ redirectToProvider: c
1262
+ } = fe({
1263
+ redirectUrl: s.redirectUrl,
1264
+ scopes: s.oauthScopes
1265
+ });
1266
+ ae(() => {
1267
+ b().catch((h) => {
1268
+ console.warn("Failed to fetch OAuth providers:", h);
1269
+ });
1270
+ });
1271
+ const f = U(!1), t = U(""), p = J({
1272
+ email: ""
1273
+ });
1274
+ N(() => p.email.trim() && p.email.includes("@"));
1275
+ const m = async () => {
1276
+ f.value = !0, t.value = "";
652
1277
  try {
653
- console.log("Sign up attempt:", { ...r, password: "***", confirmPassword: "***" }), c("success", {
654
- email: r.email,
655
- firstName: r.firstName,
656
- lastName: r.lastName
1278
+ console.log("Magic link sign up attempt:", { email: p.email }), r("success", {
1279
+ email: p.email
657
1280
  });
658
1281
  } catch {
659
- n.value = "Failed to create account", c("error", n.value);
1282
+ t.value = "Failed to send magic link", r("error", t.value);
660
1283
  } finally {
661
1284
  f.value = !1;
662
1285
  }
663
- }, g = async (v) => {
1286
+ }, z = async (h) => {
664
1287
  try {
665
- console.log("OAuth sign up:", v);
666
- } catch {
667
- n.value = `Failed to sign up with ${v}`, c("error", n.value);
1288
+ await c(h, {
1289
+ redirectUrl: s.redirectUrl,
1290
+ scopes: s.oauthScopes
1291
+ });
1292
+ } catch (l) {
1293
+ const y = l instanceof Error ? l.message : `Failed to sign up with ${h}`;
1294
+ t.value = y, r("error", y);
668
1295
  }
669
1296
  };
670
- return (v, l) => {
671
- var S, z;
672
- return a(), s("div", ue, [
673
- A("div", ce, [
674
- l[19] || (l[19] = A("div", { class: "text-center mb-8" }, [
675
- A("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Create account"),
676
- A("p", { class: "text-neutral-600" }, "Join us and start your journey today")
677
- ], -1)),
678
- (S = v.oauthProviders) != null && S.length ? (a(), s("div", me, [
679
- (a(!0), s(T, null, R(v.oauthProviders, (u) => (a(), s("button", {
680
- key: u,
681
- onClick: (o) => g(u),
682
- class: "btn-oauth w-full group"
683
- }, [
684
- A("div", ve, [
685
- u === "google" ? (a(), s("svg", fe, l[6] || (l[6] = [
686
- A("path", {
687
- fill: "#4285F4",
688
- 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"
689
- }, null, -1),
690
- A("path", {
691
- fill: "#34A853",
692
- 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"
693
- }, null, -1),
694
- A("path", {
695
- fill: "#FBBC05",
696
- 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"
697
- }, null, -1),
698
- A("path", {
699
- fill: "#EA4335",
700
- 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"
701
- }, null, -1)
702
- ]))) : u === "github" ? (a(), s("svg", qe, l[7] || (l[7] = [
703
- A("path", { 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" }, null, -1)
704
- ]))) : (a(), s("div", Ve, [
705
- A("span", ge, V(u.charAt(0).toUpperCase()), 1)
706
- ]))
707
- ]),
708
- A("span", be, "Continue with " + V(u.charAt(0).toUpperCase() + u.slice(1)), 1)
709
- ], 8, pe))), 128))
710
- ])) : b("", !0),
711
- (z = v.oauthProviders) != null && z.length ? (a(), s("div", we, l[8] || (l[8] = [
712
- A("span", { class: "divider-text" }, "Or create account with email", -1)
713
- ]))) : b("", !0),
714
- A("form", {
715
- onSubmit: O(p, ["prevent"]),
716
- class: "space-y-6"
717
- }, [
718
- A("div", We, [
719
- A("div", he, [
720
- A("div", null, [
721
- l[9] || (l[9] = A("label", {
722
- for: "firstName",
723
- class: "label-modern"
724
- }, "First name", -1)),
725
- C(A("input", {
726
- id: "firstName",
727
- "onUpdate:modelValue": l[0] || (l[0] = (u) => r.firstName = u),
728
- type: "text",
729
- required: "",
730
- autocomplete: "given-name",
731
- class: w([
732
- "input-modern",
733
- n.value && "input-error"
734
- ]),
735
- placeholder: "Enter first name"
736
- }, null, 2), [
737
- [y, r.firstName]
738
- ])
1297
+ return (h, l) => (A(), a("div", jt, [
1298
+ x(w(ue), { variant: "modern" }, {
1299
+ default: D(() => {
1300
+ var y, X;
1301
+ return [
1302
+ l[8] || (l[8] = e("div", { class: "text-center mb-8" }, [
1303
+ e("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Create account"),
1304
+ e("p", { class: "text-neutral-600" }, "We'll send you a magic link to get started")
1305
+ ], -1)),
1306
+ (y = w(o)) != null && y.length ? (A(), a("div", Zt, [
1307
+ (A(!0), a(oe, null, ie(w(o), (v) => (A(), E(w(_), {
1308
+ key: v.id,
1309
+ variant: "outline",
1310
+ "full-width": "",
1311
+ disabled: w(i),
1312
+ onClick: (F) => z(v.id),
1313
+ class: "btn-oauth group"
1314
+ }, {
1315
+ default: D(() => [
1316
+ e("div", Tt, [
1317
+ v.iconUrl ? (A(), a("div", Yt, [
1318
+ e("img", {
1319
+ src: v.iconUrl,
1320
+ alt: `${v.displayName || v.name} icon`,
1321
+ class: "w-5 h-5"
1322
+ }, null, 8, Kt)
1323
+ ])) : v.id === "google" ? (A(), a("svg", Qt, l[2] || (l[2] = [
1324
+ e("path", {
1325
+ fill: "#4285F4",
1326
+ 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"
1327
+ }, null, -1),
1328
+ e("path", {
1329
+ fill: "#34A853",
1330
+ 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"
1331
+ }, null, -1),
1332
+ e("path", {
1333
+ fill: "#FBBC05",
1334
+ 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"
1335
+ }, null, -1),
1336
+ e("path", {
1337
+ fill: "#EA4335",
1338
+ 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"
1339
+ }, null, -1)
1340
+ ]))) : v.id === "github" ? (A(), a("svg", Ot, l[3] || (l[3] = [
1341
+ e("path", { 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" }, null, -1)
1342
+ ]))) : (A(), a("div", Et, [
1343
+ e("span", Ht, L((v.displayName || v.name).charAt(0).toUpperCase()), 1)
1344
+ ]))
1345
+ ]),
1346
+ e("span", Gt, "Continue with " + L(v.displayName || v.name), 1)
739
1347
  ]),
740
- A("div", null, [
741
- l[10] || (l[10] = A("label", {
742
- for: "lastName",
743
- class: "label-modern"
744
- }, "Last name", -1)),
745
- C(A("input", {
746
- id: "lastName",
747
- "onUpdate:modelValue": l[1] || (l[1] = (u) => r.lastName = u),
748
- type: "text",
749
- required: "",
750
- autocomplete: "family-name",
751
- class: w([
752
- "input-modern",
753
- n.value && "input-error"
754
- ]),
755
- placeholder: "Enter last name"
756
- }, null, 2), [
757
- [y, r.lastName]
758
- ])
759
- ])
760
- ]),
761
- A("div", null, [
762
- l[11] || (l[11] = A("label", {
763
- for: "email",
764
- class: "label-modern"
765
- }, "Email address", -1)),
766
- C(A("input", {
1348
+ _: 2
1349
+ }, 1032, ["disabled", "onClick"]))), 128))
1350
+ ])) : W("", !0),
1351
+ (X = w(o)) != null && X.length ? (A(), a("div", Rt, l[4] || (l[4] = [
1352
+ e("span", { class: "divider-text" }, "Or create account with email", -1)
1353
+ ]))) : W("", !0),
1354
+ e("form", {
1355
+ onSubmit: re(m, ["prevent"]),
1356
+ class: "space-y-6"
1357
+ }, [
1358
+ e("div", null, [
1359
+ x(w(ee), {
767
1360
  id: "email",
768
- "onUpdate:modelValue": l[2] || (l[2] = (u) => r.email = u),
1361
+ modelValue: p.email,
1362
+ "onUpdate:modelValue": l[0] || (l[0] = (v) => p.email = v),
769
1363
  type: "email",
770
- required: "",
1364
+ label: "Email address",
1365
+ placeholder: "Enter your email address",
771
1366
  autocomplete: "email",
772
- class: w([
773
- "input-modern",
774
- n.value && "input-error"
775
- ]),
776
- placeholder: "Enter your email address"
777
- }, null, 2), [
778
- [y, r.email]
779
- ])
780
- ]),
781
- A("div", null, [
782
- l[13] || (l[13] = A("label", {
783
- for: "password",
784
- class: "label-modern"
785
- }, "Password", -1)),
786
- C(A("input", {
787
- id: "password",
788
- "onUpdate:modelValue": l[3] || (l[3] = (u) => r.password = u),
789
- type: "password",
790
1367
  required: "",
791
- autocomplete: "new-password",
792
- class: w([
793
- "input-modern",
794
- n.value && "input-error",
795
- r.password && i(r.password).color
796
- ]),
797
- placeholder: "Create a secure password",
798
- onInput: e
799
- }, null, 34), [
800
- [y, r.password]
801
- ]),
802
- r.password ? (a(), s("div", Ce, [
803
- A("div", ye, [
804
- l[12] || (l[12] = A("span", { class: "text-neutral-600" }, "Password strength", -1)),
805
- A("span", {
806
- class: w(i(r.password).textColor)
807
- }, V(i(r.password).label), 3)
808
- ]),
809
- A("div", xe, [
810
- A("div", {
811
- class: w(["h-2 rounded-full transition-all duration-300", i(r.password).bgColor]),
812
- style: sA({ width: `${i(r.password).width}%` })
813
- }, null, 6)
814
- ])
815
- ])) : b("", !0)
1368
+ error: t.value
1369
+ }, null, 8, ["modelValue", "error"])
816
1370
  ]),
817
- A("div", null, [
818
- l[14] || (l[14] = A("label", {
819
- for: "confirmPassword",
820
- class: "label-modern"
821
- }, "Confirm password", -1)),
822
- C(A("input", {
823
- id: "confirmPassword",
824
- "onUpdate:modelValue": l[4] || (l[4] = (u) => r.confirmPassword = u),
825
- type: "password",
826
- required: "",
827
- autocomplete: "new-password",
828
- class: w([
829
- "input-modern",
830
- n.value && "input-error",
831
- r.confirmPassword && !m.value && "input-error"
832
- ]),
833
- placeholder: "Confirm your password"
834
- }, null, 2), [
835
- [y, r.confirmPassword]
1371
+ x(w(_), {
1372
+ type: "submit",
1373
+ variant: "primary",
1374
+ "full-width": "",
1375
+ disabled: f.value,
1376
+ loading: f.value,
1377
+ "loading-text": "Sending magic link..."
1378
+ }, {
1379
+ default: D(() => l[5] || (l[5] = [
1380
+ j(" Send magic link ", -1)
1381
+ ])),
1382
+ _: 1,
1383
+ __: [5]
1384
+ }, 8, ["disabled", "loading"])
1385
+ ], 32),
1386
+ t.value ? (A(), a("div", Jt, [
1387
+ e("div", _t, [
1388
+ e("div", $t, [
1389
+ l[6] || (l[6] = e("svg", {
1390
+ class: "w-4 h-4 mt-0.5 flex-shrink-0",
1391
+ fill: "currentColor",
1392
+ viewBox: "0 0 20 20"
1393
+ }, [
1394
+ e("path", {
1395
+ "fill-rule": "evenodd",
1396
+ 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",
1397
+ "clip-rule": "evenodd"
1398
+ })
1399
+ ], -1)),
1400
+ e("p", es, L(t.value), 1)
836
1401
  ])
837
1402
  ])
838
- ]),
839
- !m.value && r.confirmPassword ? (a(), s("div", Fe, l[15] || (l[15] = [
840
- Y('<div class="alert-warning"><div class="flex items-start gap-3"><svg class="w-4 h-4 mt-0.5 flex-shrink-0" fill="currentColor" viewBox="0 0 20 20"><path fill-rule="evenodd" d="M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z" clip-rule="evenodd"></path></svg><p class="font-medium">Passwords do not match</p></div></div>', 1)
841
- ]))) : b("", !0),
842
- A("button", {
843
- type: "submit",
844
- disabled: f.value || !t.value,
845
- class: "btn-primary"
846
- }, [
847
- f.value ? (a(), s("span", Ue, l[16] || (l[16] = [
848
- A("svg", {
849
- class: "animate-spin w-4 h-4",
850
- fill: "none",
851
- viewBox: "0 0 24 24"
852
- }, [
853
- A("circle", {
854
- class: "opacity-25",
855
- cx: "12",
856
- cy: "12",
857
- r: "10",
858
- stroke: "currentColor",
859
- "stroke-width": "4"
860
- }),
861
- A("path", {
862
- class: "opacity-75",
863
- fill: "currentColor",
864
- 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"
865
- })
866
- ], -1),
867
- Z(" Creating account... ", -1)
868
- ]))) : (a(), s("span", Ne, "Create account"))
869
- ], 8, Xe)
870
- ], 32),
871
- n.value ? (a(), s("div", Be, [
872
- A("div", Pe, [
873
- A("div", Le, [
874
- l[17] || (l[17] = A("svg", {
875
- class: "w-4 h-4 mt-0.5 flex-shrink-0",
876
- fill: "currentColor",
877
- viewBox: "0 0 20 20"
878
- }, [
879
- A("path", {
880
- "fill-rule": "evenodd",
881
- 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",
882
- "clip-rule": "evenodd"
883
- })
884
- ], -1)),
885
- A("p", ze, V(n.value), 1)
1403
+ ])) : W("", !0),
1404
+ e("div", ts, [
1405
+ e("p", ss, [
1406
+ l[7] || (l[7] = j(" Already have an account? ", -1)),
1407
+ e("button", {
1408
+ type: "button",
1409
+ class: "font-semibold text-strands-500 hover:text-strands-600 transition-colors duration-200",
1410
+ onClick: l[1] || (l[1] = (v) => h.$emit("switch-to-signin"))
1411
+ }, " Sign in ")
886
1412
  ])
887
- ])
888
- ])) : b("", !0),
889
- A("div", Ze, [
890
- A("p", ke, [
891
- l[18] || (l[18] = Z(" Already have an account? ", -1)),
892
- A("button", {
893
- type: "button",
894
- class: "font-semibold text-strands-600 hover:text-strands-700 transition-colors duration-200",
895
- onClick: l[5] || (l[5] = (u) => v.$emit("switch-to-signin"))
896
- }, " Sign in ")
897
- ])
898
- ]),
899
- I(G)
900
- ])
901
- ]);
902
- };
1413
+ ]),
1414
+ x(le)
1415
+ ];
1416
+ }),
1417
+ _: 1,
1418
+ __: [8]
1419
+ })
1420
+ ]));
903
1421
  }
904
- }), Se = { class: "w-full max-w-2xl mx-auto animate-slide-up" }, Ke = { class: "card-modern" }, Ye = { class: "flex flex-col items-center mb-8" }, De = { class: "relative group" }, Qe = { 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" }, He = { class: "grid grid-cols-1 md:grid-cols-2 gap-6" }, Ie = { class: "space-y-4" }, Oe = ["disabled"], Ge = {
1422
+ }), As = { class: "w-full max-w-2xl mx-auto animate-slide-up" }, as = { class: "card-modern" }, rs = { class: "flex flex-col items-center mb-8" }, ls = { class: "relative group" }, ns = { 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" }, os = { class: "grid grid-cols-1 md:grid-cols-2 gap-6" }, is = { class: "space-y-4" }, us = ["disabled"], ds = {
905
1423
  key: 0,
906
1424
  class: "mt-1 text-sm text-red-600"
907
- }, je = ["disabled"], Me = {
1425
+ }, cs = ["disabled"], ms = {
908
1426
  key: 0,
909
1427
  class: "mt-1 text-sm text-red-600"
910
- }, Te = ["disabled"], Re = {
1428
+ }, vs = ["disabled"], ps = {
911
1429
  key: 0,
912
1430
  class: "mt-1 text-sm text-red-600"
913
- }, Je = {
1431
+ }, fs = {
914
1432
  key: 1,
915
1433
  class: "mt-1 text-sm text-yellow-600"
916
- }, Ee = ["disabled"], _e = {
1434
+ }, gs = ["disabled"], bs = {
917
1435
  key: 0,
918
1436
  class: "mt-1 text-sm text-red-600"
919
- }, $e = { class: "space-y-4" }, At = { class: "space-y-4 p-4 bg-neutral-50 rounded-xl" }, et = { class: "flex items-center justify-between" }, tt = {
1437
+ }, ws = { class: "space-y-4" }, ys = { class: "space-y-4 p-4 bg-neutral-50 rounded-xl" }, Vs = { class: "flex items-center justify-between" }, hs = {
920
1438
  key: 0,
921
1439
  class: "space-y-3"
922
- }, st = ["disabled"], at = { class: "p-4 bg-neutral-50 rounded-xl" }, rt = { class: "flex items-center justify-between" }, lt = { class: "text-sm text-neutral-600" }, ot = { class: "p-4 bg-neutral-50 rounded-xl" }, nt = { class: "flex items-center justify-between" }, it = { class: "text-sm text-neutral-600" }, dt = { class: "flex flex-col sm:flex-row gap-3 pt-6 border-t border-neutral-200" }, ut = ["disabled"], ct = {
1440
+ }, qs = ["disabled"], Cs = { class: "p-4 bg-neutral-50 rounded-xl" }, Ws = { class: "flex items-center justify-between" }, xs = { class: "text-sm text-neutral-600" }, Ns = { class: "p-4 bg-neutral-50 rounded-xl" }, Ls = { class: "flex items-center justify-between" }, Us = { class: "text-sm text-neutral-600" }, Ms = { class: "flex flex-col sm:flex-row gap-3 pt-6 border-t border-neutral-200" }, zs = ["disabled"], Ss = {
923
1441
  key: 0,
924
1442
  class: "flex items-center justify-center gap-2"
925
- }, mt = { key: 1 }, pt = ["disabled"], vt = {
1443
+ }, Ds = { key: 1 }, Xs = ["disabled"], ks = {
926
1444
  key: 0,
927
1445
  class: "mt-6 animate-fade-in"
928
- }, ft = { class: "alert-success" }, qt = { class: "flex items-start gap-3" }, Vt = { class: "font-medium" }, gt = {
1446
+ }, Bs = { class: "alert-success" }, Fs = { class: "flex items-start gap-3" }, Ps = { class: "font-medium" }, Is = {
929
1447
  key: 1,
930
1448
  class: "mt-6 animate-fade-in"
931
- }, bt = { class: "alert-error" }, wt = { class: "flex items-start gap-3" }, Wt = { class: "font-medium" }, _t = /* @__PURE__ */ L({
1449
+ }, js = { class: "alert-error" }, Zs = { class: "flex items-start gap-3" }, Ts = { class: "font-medium" }, aA = /* @__PURE__ */ P({
932
1450
  __name: "StrandsUserProfile",
933
1451
  props: {
934
1452
  user: {}
935
1453
  },
936
1454
  emits: ["profile-updated", "error", "manage-sessions", "mfa-toggle"],
937
- setup(F, { emit: h }) {
938
- const c = F, f = h, n = x(!1), r = x(!1), m = x(""), t = x(""), i = x([
1455
+ setup(V, { emit: g }) {
1456
+ const s = V, r = g, u = U(!1), o = U(!1), i = U(""), n = U(""), b = U([
939
1457
  { id: "1", device: "Chrome on Mac", location: "San Francisco, CA", lastActive: "2 minutes ago", current: !0 },
940
1458
  { id: "2", device: "Safari on iPhone", location: "San Francisco, CA", lastActive: "1 hour ago", current: !1 }
941
- ]), e = k({
1459
+ ]), c = J({
942
1460
  firstName: "",
943
1461
  lastName: "",
944
1462
  email: "",
945
1463
  phone: ""
946
- }), p = k({
1464
+ }), f = J({
947
1465
  current: "",
948
1466
  new: "",
949
1467
  confirm: ""
950
- }), g = k({
1468
+ }), t = J({
951
1469
  firstName: "",
952
1470
  lastName: "",
953
1471
  email: "",
954
1472
  phone: ""
955
- }), v = U(() => c.user ? e.firstName !== c.user.firstName || e.lastName !== c.user.lastName || e.email !== c.user.email || e.phone !== (c.user.phone || "") : !1), l = U(() => p.current && p.new && p.confirm && p.new === p.confirm && p.new.length >= 8), S = (q, d) => !q && !d ? "U" : `${(q == null ? void 0 : q[0]) || ""}${(d == null ? void 0 : d[0]) || ""}`.toUpperCase();
956
- tA(() => c.user, (q) => {
957
- q && (e.firstName = q.firstName, e.lastName = q.lastName, e.email = q.email, e.phone = q.phone || "");
1473
+ }), p = N(() => s.user ? c.firstName !== s.user.firstName || c.lastName !== s.user.lastName || c.email !== s.user.email || c.phone !== (s.user.phone || "") : !1), m = N(() => f.current && f.new && f.confirm && f.new === f.confirm && f.new.length >= 8), z = (q, d) => !q && !d ? "U" : `${(q == null ? void 0 : q[0]) || ""}${(d == null ? void 0 : d[0]) || ""}`.toUpperCase();
1474
+ ne(() => s.user, (q) => {
1475
+ q && (c.firstName = q.firstName, c.lastName = q.lastName, c.email = q.email, c.phone = q.phone || "");
958
1476
  }, { immediate: !0 });
959
- const z = () => {
960
- m.value = "", t.value = "", Object.keys(g).forEach((q) => {
961
- g[q] = "";
1477
+ const h = () => {
1478
+ i.value = "", n.value = "", Object.keys(t).forEach((q) => {
1479
+ t[q] = "";
962
1480
  });
963
- }, u = async () => {
964
- z(), n.value = !0;
1481
+ }, l = async () => {
1482
+ h(), u.value = !0;
965
1483
  try {
966
- console.log("Profile update:", e), await new Promise((d) => setTimeout(d, 1e3));
1484
+ console.log("Profile update:", c), await new Promise((d) => setTimeout(d, 1e3));
967
1485
  const q = {
968
- ...c.user,
969
- ...e
1486
+ ...s.user,
1487
+ ...c
970
1488
  };
971
- m.value = "Profile updated successfully", f("profile-updated", q);
1489
+ i.value = "Profile updated successfully", r("profile-updated", q);
972
1490
  } catch {
973
- t.value = "Failed to update profile", f("error", t.value);
1491
+ n.value = "Failed to update profile", r("error", n.value);
974
1492
  } finally {
975
- n.value = !1;
1493
+ u.value = !1;
976
1494
  }
977
- }, o = async () => {
978
- if (l.value) {
979
- z(), n.value = !0;
1495
+ }, y = async () => {
1496
+ if (m.value) {
1497
+ h(), u.value = !0;
980
1498
  try {
981
- console.log("Password change:", { current: "***", new: "***" }), await new Promise((q) => setTimeout(q, 1e3)), m.value = "Password updated successfully", r.value = !1, p.current = "", p.new = "", p.confirm = "";
1499
+ console.log("Password change:", { current: "***", new: "***" }), await new Promise((q) => setTimeout(q, 1e3)), i.value = "Password updated successfully", o.value = !1, f.current = "", f.new = "", f.confirm = "";
982
1500
  } catch {
983
- t.value = "Failed to update password";
1501
+ n.value = "Failed to update password";
984
1502
  } finally {
985
- n.value = !1;
1503
+ u.value = !1;
986
1504
  }
987
1505
  }
988
- }, D = () => {
1506
+ }, X = () => {
989
1507
  console.log("Image upload clicked");
990
- }, j = () => {
1508
+ }, v = () => {
991
1509
  var q;
992
- f("mfa-toggle", !((q = c.user) != null && q.mfaEnabled));
993
- }, W = () => {
994
- c.user && (e.firstName = c.user.firstName, e.lastName = c.user.lastName, e.email = c.user.email, e.phone = c.user.phone || ""), z(), r.value = !1, p.current = "", p.new = "", p.confirm = "";
1510
+ r("mfa-toggle", !((q = s.user) != null && q.mfaEnabled));
1511
+ }, F = () => {
1512
+ s.user && (c.firstName = s.user.firstName, c.lastName = s.user.lastName, c.email = s.user.email, c.phone = s.user.phone || ""), h(), o.value = !1, f.current = "", f.new = "", f.confirm = "";
995
1513
  };
996
1514
  return (q, d) => {
997
- var J, E, _, $, AA, eA;
998
- return a(), s("div", Se, [
999
- A("div", Ke, [
1000
- d[22] || (d[22] = A("div", { class: "text-center mb-8" }, [
1001
- A("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Profile Settings"),
1002
- A("p", { class: "text-neutral-600" }, "Manage your account information and preferences")
1515
+ var S, C, M, k, T, Q;
1516
+ return A(), a("div", As, [
1517
+ e("div", as, [
1518
+ d[22] || (d[22] = e("div", { class: "text-center mb-8" }, [
1519
+ e("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Profile Settings"),
1520
+ e("p", { class: "text-neutral-600" }, "Manage your account information and preferences")
1003
1521
  ], -1)),
1004
- A("div", Ye, [
1005
- A("div", De, [
1006
- A("div", Qe, V(S((J = q.user) == null ? void 0 : J.firstName, (E = q.user) == null ? void 0 : E.lastName)), 1),
1007
- A("button", {
1522
+ e("div", rs, [
1523
+ e("div", ls, [
1524
+ e("div", ns, L(z((S = q.user) == null ? void 0 : S.firstName, (C = q.user) == null ? void 0 : C.lastName)), 1),
1525
+ e("button", {
1008
1526
  class: "absolute inset-0 rounded-full bg-black/40 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-200",
1009
- onClick: D
1527
+ onClick: X
1010
1528
  }, d[9] || (d[9] = [
1011
- A("svg", {
1529
+ e("svg", {
1012
1530
  class: "w-6 h-6 text-white",
1013
1531
  fill: "none",
1014
1532
  stroke: "currentColor",
1015
1533
  viewBox: "0 0 24 24"
1016
1534
  }, [
1017
- A("path", {
1535
+ e("path", {
1018
1536
  "stroke-linecap": "round",
1019
1537
  "stroke-linejoin": "round",
1020
1538
  "stroke-width": "2",
1021
1539
  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"
1022
1540
  }),
1023
- A("path", {
1541
+ e("path", {
1024
1542
  "stroke-linecap": "round",
1025
1543
  "stroke-linejoin": "round",
1026
1544
  "stroke-width": "2",
@@ -1029,201 +1547,201 @@ const G = /* @__PURE__ */ lA(oA, [["render", iA]]), dA = { class: "w-full max-w-
1029
1547
  ], -1)
1030
1548
  ]))
1031
1549
  ]),
1032
- A("button", {
1550
+ e("button", {
1033
1551
  class: "mt-3 text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200",
1034
- onClick: D
1552
+ onClick: X
1035
1553
  }, " Change photo ")
1036
1554
  ]),
1037
- A("form", {
1038
- onSubmit: O(u, ["prevent"]),
1555
+ e("form", {
1556
+ onSubmit: re(l, ["prevent"]),
1039
1557
  class: "space-y-6"
1040
1558
  }, [
1041
- A("div", He, [
1042
- A("div", Ie, [
1043
- d[14] || (d[14] = A("h3", { class: "text-lg font-semibold text-neutral-900 mb-4" }, "Personal Information", -1)),
1044
- A("div", null, [
1045
- d[10] || (d[10] = A("label", {
1559
+ e("div", os, [
1560
+ e("div", is, [
1561
+ d[14] || (d[14] = e("h3", { class: "text-lg font-semibold text-neutral-900 mb-4" }, "Personal Information", -1)),
1562
+ e("div", null, [
1563
+ d[10] || (d[10] = e("label", {
1046
1564
  for: "firstName",
1047
1565
  class: "label-modern"
1048
1566
  }, "First name", -1)),
1049
- C(A("input", {
1567
+ G(e("input", {
1050
1568
  id: "firstName",
1051
- "onUpdate:modelValue": d[0] || (d[0] = (X) => e.firstName = X),
1569
+ "onUpdate:modelValue": d[0] || (d[0] = (B) => c.firstName = B),
1052
1570
  type: "text",
1053
1571
  required: "",
1054
1572
  autocomplete: "given-name",
1055
- class: w([
1573
+ class: I([
1056
1574
  "input-modern",
1057
- g.firstName && "input-error"
1575
+ t.firstName && "input-error"
1058
1576
  ]),
1059
1577
  placeholder: "Enter your first name",
1060
- disabled: n.value
1061
- }, null, 10, Oe), [
1062
- [y, e.firstName]
1578
+ disabled: u.value
1579
+ }, null, 10, us), [
1580
+ [R, c.firstName]
1063
1581
  ]),
1064
- g.firstName ? (a(), s("p", Ge, V(g.firstName), 1)) : b("", !0)
1582
+ t.firstName ? (A(), a("p", ds, L(t.firstName), 1)) : W("", !0)
1065
1583
  ]),
1066
- A("div", null, [
1067
- d[11] || (d[11] = A("label", {
1584
+ e("div", null, [
1585
+ d[11] || (d[11] = e("label", {
1068
1586
  for: "lastName",
1069
1587
  class: "label-modern"
1070
1588
  }, "Last name", -1)),
1071
- C(A("input", {
1589
+ G(e("input", {
1072
1590
  id: "lastName",
1073
- "onUpdate:modelValue": d[1] || (d[1] = (X) => e.lastName = X),
1591
+ "onUpdate:modelValue": d[1] || (d[1] = (B) => c.lastName = B),
1074
1592
  type: "text",
1075
1593
  required: "",
1076
1594
  autocomplete: "family-name",
1077
- class: w([
1595
+ class: I([
1078
1596
  "input-modern",
1079
- g.lastName && "input-error"
1597
+ t.lastName && "input-error"
1080
1598
  ]),
1081
1599
  placeholder: "Enter your last name",
1082
- disabled: n.value
1083
- }, null, 10, je), [
1084
- [y, e.lastName]
1600
+ disabled: u.value
1601
+ }, null, 10, cs), [
1602
+ [R, c.lastName]
1085
1603
  ]),
1086
- g.lastName ? (a(), s("p", Me, V(g.lastName), 1)) : b("", !0)
1604
+ t.lastName ? (A(), a("p", ms, L(t.lastName), 1)) : W("", !0)
1087
1605
  ]),
1088
- A("div", null, [
1089
- d[12] || (d[12] = A("label", {
1606
+ e("div", null, [
1607
+ d[12] || (d[12] = e("label", {
1090
1608
  for: "email",
1091
1609
  class: "label-modern"
1092
1610
  }, "Email address", -1)),
1093
- C(A("input", {
1611
+ G(e("input", {
1094
1612
  id: "email",
1095
- "onUpdate:modelValue": d[2] || (d[2] = (X) => e.email = X),
1613
+ "onUpdate:modelValue": d[2] || (d[2] = (B) => c.email = B),
1096
1614
  type: "email",
1097
1615
  required: "",
1098
1616
  autocomplete: "email",
1099
- class: w([
1617
+ class: I([
1100
1618
  "input-modern",
1101
- g.email && "input-error"
1619
+ t.email && "input-error"
1102
1620
  ]),
1103
1621
  placeholder: "Enter your email address",
1104
- disabled: n.value
1105
- }, null, 10, Te), [
1106
- [y, e.email]
1622
+ disabled: u.value
1623
+ }, null, 10, vs), [
1624
+ [R, c.email]
1107
1625
  ]),
1108
- g.email ? (a(), s("p", Re, V(g.email), 1)) : b("", !0),
1109
- e.email !== ((_ = q.user) == null ? void 0 : _.email) ? (a(), s("p", Je, " Changing your email will require verification ")) : b("", !0)
1626
+ t.email ? (A(), a("p", ps, L(t.email), 1)) : W("", !0),
1627
+ c.email !== ((M = q.user) == null ? void 0 : M.email) ? (A(), a("p", fs, " Changing your email will require verification ")) : W("", !0)
1110
1628
  ]),
1111
- A("div", null, [
1112
- d[13] || (d[13] = A("label", {
1629
+ e("div", null, [
1630
+ d[13] || (d[13] = e("label", {
1113
1631
  for: "phone",
1114
1632
  class: "label-modern"
1115
1633
  }, "Phone number", -1)),
1116
- C(A("input", {
1634
+ G(e("input", {
1117
1635
  id: "phone",
1118
- "onUpdate:modelValue": d[3] || (d[3] = (X) => e.phone = X),
1636
+ "onUpdate:modelValue": d[3] || (d[3] = (B) => c.phone = B),
1119
1637
  type: "tel",
1120
1638
  autocomplete: "tel",
1121
- class: w([
1639
+ class: I([
1122
1640
  "input-modern",
1123
- g.phone && "input-error"
1641
+ t.phone && "input-error"
1124
1642
  ]),
1125
1643
  placeholder: "Enter your phone number",
1126
- disabled: n.value
1127
- }, null, 10, Ee), [
1128
- [y, e.phone]
1644
+ disabled: u.value
1645
+ }, null, 10, gs), [
1646
+ [R, c.phone]
1129
1647
  ]),
1130
- g.phone ? (a(), s("p", _e, V(g.phone), 1)) : b("", !0)
1648
+ t.phone ? (A(), a("p", bs, L(t.phone), 1)) : W("", !0)
1131
1649
  ])
1132
1650
  ]),
1133
- A("div", $e, [
1134
- d[18] || (d[18] = A("h3", { class: "text-lg font-semibold text-neutral-900 mb-4" }, "Security Settings", -1)),
1135
- A("div", At, [
1136
- A("div", et, [
1137
- d[15] || (d[15] = A("div", null, [
1138
- A("h4", { class: "font-medium text-neutral-900" }, "Password"),
1139
- A("p", { class: "text-sm text-neutral-600" }, "Last updated 30 days ago")
1651
+ e("div", ws, [
1652
+ d[18] || (d[18] = e("h3", { class: "text-lg font-semibold text-neutral-900 mb-4" }, "Security Settings", -1)),
1653
+ e("div", ys, [
1654
+ e("div", Vs, [
1655
+ d[15] || (d[15] = e("div", null, [
1656
+ e("h4", { class: "font-medium text-neutral-900" }, "Password"),
1657
+ e("p", { class: "text-sm text-neutral-600" }, "Last updated 30 days ago")
1140
1658
  ], -1)),
1141
- A("button", {
1659
+ e("button", {
1142
1660
  type: "button",
1143
1661
  class: "btn-secondary !w-auto px-4 py-2 text-sm",
1144
- onClick: d[4] || (d[4] = (X) => r.value = !r.value)
1145
- }, V(r.value ? "Cancel" : "Change"), 1)
1662
+ onClick: d[4] || (d[4] = (B) => o.value = !o.value)
1663
+ }, L(o.value ? "Cancel" : "Change"), 1)
1146
1664
  ]),
1147
- r.value ? (a(), s("div", tt, [
1148
- C(A("input", {
1149
- "onUpdate:modelValue": d[5] || (d[5] = (X) => p.current = X),
1665
+ o.value ? (A(), a("div", hs, [
1666
+ G(e("input", {
1667
+ "onUpdate:modelValue": d[5] || (d[5] = (B) => f.current = B),
1150
1668
  type: "password",
1151
1669
  placeholder: "Current password",
1152
1670
  class: "input-modern",
1153
1671
  autocomplete: "current-password"
1154
1672
  }, null, 512), [
1155
- [y, p.current]
1673
+ [R, f.current]
1156
1674
  ]),
1157
- C(A("input", {
1158
- "onUpdate:modelValue": d[6] || (d[6] = (X) => p.new = X),
1675
+ G(e("input", {
1676
+ "onUpdate:modelValue": d[6] || (d[6] = (B) => f.new = B),
1159
1677
  type: "password",
1160
1678
  placeholder: "New password",
1161
1679
  class: "input-modern",
1162
1680
  autocomplete: "new-password"
1163
1681
  }, null, 512), [
1164
- [y, p.new]
1682
+ [R, f.new]
1165
1683
  ]),
1166
- C(A("input", {
1167
- "onUpdate:modelValue": d[7] || (d[7] = (X) => p.confirm = X),
1684
+ G(e("input", {
1685
+ "onUpdate:modelValue": d[7] || (d[7] = (B) => f.confirm = B),
1168
1686
  type: "password",
1169
1687
  placeholder: "Confirm new password",
1170
1688
  class: "input-modern",
1171
1689
  autocomplete: "new-password"
1172
1690
  }, null, 512), [
1173
- [y, p.confirm]
1691
+ [R, f.confirm]
1174
1692
  ]),
1175
- A("button", {
1693
+ e("button", {
1176
1694
  type: "button",
1177
1695
  class: "btn-primary !w-auto px-4 py-2 text-sm",
1178
- onClick: o,
1179
- disabled: !l.value
1180
- }, " Update Password ", 8, st)
1181
- ])) : b("", !0)
1696
+ onClick: y,
1697
+ disabled: !m.value
1698
+ }, " Update Password ", 8, qs)
1699
+ ])) : W("", !0)
1182
1700
  ]),
1183
- A("div", at, [
1184
- A("div", rt, [
1185
- A("div", null, [
1186
- d[16] || (d[16] = A("h4", { class: "font-medium text-neutral-900" }, "Two-Factor Authentication", -1)),
1187
- A("p", lt, V(($ = q.user) != null && $.mfaEnabled ? "Enabled" : "Add extra security to your account"), 1)
1701
+ e("div", Cs, [
1702
+ e("div", Ws, [
1703
+ e("div", null, [
1704
+ d[16] || (d[16] = e("h4", { class: "font-medium text-neutral-900" }, "Two-Factor Authentication", -1)),
1705
+ e("p", xs, L((k = q.user) != null && k.mfaEnabled ? "Enabled" : "Add extra security to your account"), 1)
1188
1706
  ]),
1189
- A("button", {
1707
+ e("button", {
1190
1708
  type: "button",
1191
- class: w([
1192
- (AA = q.user) != null && AA.mfaEnabled ? "btn-secondary" : "btn-primary",
1709
+ class: I([
1710
+ (T = q.user) != null && T.mfaEnabled ? "btn-secondary" : "btn-primary",
1193
1711
  "!w-auto px-4 py-2 text-sm"
1194
1712
  ]),
1195
- onClick: j
1196
- }, V((eA = q.user) != null && eA.mfaEnabled ? "Disable" : "Enable"), 3)
1713
+ onClick: v
1714
+ }, L((Q = q.user) != null && Q.mfaEnabled ? "Disable" : "Enable"), 3)
1197
1715
  ])
1198
1716
  ]),
1199
- A("div", ot, [
1200
- A("div", nt, [
1201
- A("div", null, [
1202
- d[17] || (d[17] = A("h4", { class: "font-medium text-neutral-900" }, "Active Sessions", -1)),
1203
- A("p", it, V(i.value.length) + " active device(s)", 1)
1717
+ e("div", Ns, [
1718
+ e("div", Ls, [
1719
+ e("div", null, [
1720
+ d[17] || (d[17] = e("h4", { class: "font-medium text-neutral-900" }, "Active Sessions", -1)),
1721
+ e("p", Us, L(b.value.length) + " active device(s)", 1)
1204
1722
  ]),
1205
- A("button", {
1723
+ e("button", {
1206
1724
  type: "button",
1207
1725
  class: "btn-secondary !w-auto px-4 py-2 text-sm",
1208
- onClick: d[8] || (d[8] = (X) => q.$emit("manage-sessions"))
1726
+ onClick: d[8] || (d[8] = (B) => q.$emit("manage-sessions"))
1209
1727
  }, " Manage ")
1210
1728
  ])
1211
1729
  ])
1212
1730
  ])
1213
1731
  ]),
1214
- A("div", dt, [
1215
- A("button", {
1732
+ e("div", Ms, [
1733
+ e("button", {
1216
1734
  type: "submit",
1217
- disabled: n.value || !v.value,
1735
+ disabled: u.value || !p.value,
1218
1736
  class: "btn-primary"
1219
1737
  }, [
1220
- n.value ? (a(), s("span", ct, d[19] || (d[19] = [
1221
- A("svg", {
1738
+ u.value ? (A(), a("span", Ss, d[19] || (d[19] = [
1739
+ e("svg", {
1222
1740
  class: "animate-spin w-4 h-4",
1223
1741
  fill: "none",
1224
1742
  viewBox: "0 0 24 24"
1225
1743
  }, [
1226
- A("circle", {
1744
+ e("circle", {
1227
1745
  class: "opacity-25",
1228
1746
  cx: "12",
1229
1747
  cy: "12",
@@ -1231,397 +1749,339 @@ const G = /* @__PURE__ */ lA(oA, [["render", iA]]), dA = { class: "w-full max-w-
1231
1749
  stroke: "currentColor",
1232
1750
  "stroke-width": "4"
1233
1751
  }),
1234
- A("path", {
1752
+ e("path", {
1235
1753
  class: "opacity-75",
1236
1754
  fill: "currentColor",
1237
1755
  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"
1238
1756
  })
1239
1757
  ], -1),
1240
- Z(" Saving changes... ", -1)
1241
- ]))) : (a(), s("span", mt, "Save changes"))
1242
- ], 8, ut),
1243
- A("button", {
1758
+ j(" Saving changes... ", -1)
1759
+ ]))) : (A(), a("span", Ds, "Save changes"))
1760
+ ], 8, zs),
1761
+ e("button", {
1244
1762
  type: "button",
1245
1763
  class: "btn-secondary",
1246
- onClick: W,
1247
- disabled: n.value
1248
- }, " Cancel ", 8, pt)
1764
+ onClick: F,
1765
+ disabled: u.value
1766
+ }, " Cancel ", 8, Xs)
1249
1767
  ])
1250
1768
  ], 32),
1251
- m.value ? (a(), s("div", vt, [
1252
- A("div", ft, [
1253
- A("div", qt, [
1254
- d[20] || (d[20] = A("svg", {
1769
+ i.value ? (A(), a("div", ks, [
1770
+ e("div", Bs, [
1771
+ e("div", Fs, [
1772
+ d[20] || (d[20] = e("svg", {
1255
1773
  class: "w-4 h-4 mt-0.5 flex-shrink-0",
1256
1774
  fill: "currentColor",
1257
1775
  viewBox: "0 0 20 20"
1258
1776
  }, [
1259
- A("path", {
1777
+ e("path", {
1260
1778
  "fill-rule": "evenodd",
1261
1779
  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",
1262
1780
  "clip-rule": "evenodd"
1263
1781
  })
1264
1782
  ], -1)),
1265
- A("p", Vt, V(m.value), 1)
1783
+ e("p", Ps, L(i.value), 1)
1266
1784
  ])
1267
1785
  ])
1268
- ])) : b("", !0),
1269
- t.value ? (a(), s("div", gt, [
1270
- A("div", bt, [
1271
- A("div", wt, [
1272
- d[21] || (d[21] = A("svg", {
1786
+ ])) : W("", !0),
1787
+ n.value ? (A(), a("div", Is, [
1788
+ e("div", js, [
1789
+ e("div", Zs, [
1790
+ d[21] || (d[21] = e("svg", {
1273
1791
  class: "w-4 h-4 mt-0.5 flex-shrink-0",
1274
1792
  fill: "currentColor",
1275
1793
  viewBox: "0 0 20 20"
1276
1794
  }, [
1277
- A("path", {
1795
+ e("path", {
1278
1796
  "fill-rule": "evenodd",
1279
1797
  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",
1280
1798
  "clip-rule": "evenodd"
1281
1799
  })
1282
1800
  ], -1)),
1283
- A("p", Wt, V(t.value), 1)
1801
+ e("p", Ts, L(n.value), 1)
1284
1802
  ])
1285
1803
  ])
1286
- ])) : b("", !0),
1287
- I(G)
1804
+ ])) : W("", !0),
1805
+ x(le)
1288
1806
  ])
1289
1807
  ]);
1290
1808
  };
1291
1809
  }
1292
- }), ht = { class: "w-full max-w-md mx-auto animate-slide-up" }, Ct = { class: "card-modern" }, yt = ["disabled"], xt = ["disabled"], Ft = {
1293
- key: 0,
1294
- class: "flex items-center justify-center gap-2"
1295
- }, Xt = { key: 1 }, Ut = { key: 2 }, Nt = {
1296
- key: 0,
1297
- class: "mt-6 animate-fade-in"
1298
- }, Bt = { class: "alert-success" }, Pt = { class: "flex items-start gap-3" }, Lt = { class: "text-sm mt-1" }, zt = {
1299
- key: 1,
1300
- class: "mt-6 animate-fade-in"
1301
- }, Zt = { class: "alert-error" }, kt = { class: "flex items-start gap-3" }, St = { class: "font-medium" }, Kt = { class: "mt-8 text-center" }, $t = /* @__PURE__ */ L({
1810
+ }), Ys = { class: "w-full max-w-md mx-auto animate-slide-up" }, Ks = { class: "mt-8 text-center" }, rA = /* @__PURE__ */ P({
1302
1811
  __name: "StrandsPasswordReset",
1303
1812
  emits: ["success", "error", "back-to-signin"],
1304
- setup(F, { emit: h }) {
1305
- const c = h, f = x(!1), n = x(""), r = x(!1), m = k({
1813
+ setup(V, { emit: g }) {
1814
+ const s = g, r = U(!1), u = U(""), o = U(!1), i = J({
1306
1815
  email: ""
1307
- }), t = async () => {
1308
- f.value = !0, n.value = "";
1816
+ }), n = async () => {
1817
+ r.value = !0, u.value = "";
1309
1818
  try {
1310
- console.log("Password reset request:", { email: m.email }), await new Promise((i) => setTimeout(i, 1e3)), r.value = !0, c("success", m.email);
1819
+ console.log("Password reset request:", { email: i.email }), await new Promise((b) => setTimeout(b, 1e3)), o.value = !0, s("success", i.email);
1311
1820
  } catch {
1312
- n.value = "Failed to send password reset email. Please try again.", c("error", n.value);
1821
+ u.value = "Failed to send password reset email. Please try again.", s("error", u.value);
1313
1822
  } finally {
1314
- f.value = !1;
1823
+ r.value = !1;
1315
1824
  }
1316
1825
  };
1317
- return (i, e) => (a(), s("div", ht, [
1318
- A("div", Ct, [
1319
- e[8] || (e[8] = A("div", { class: "text-center mb-8" }, [
1320
- A("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Reset password"),
1321
- A("p", { class: "text-neutral-600" }, "Enter your email address and we'll send you a link to reset your password")
1322
- ], -1)),
1323
- A("form", {
1324
- onSubmit: O(t, ["prevent"]),
1325
- class: "space-y-6"
1326
- }, [
1327
- A("div", null, [
1328
- e[2] || (e[2] = A("label", {
1329
- for: "email",
1330
- class: "label-modern"
1331
- }, "Email address", -1)),
1332
- C(A("input", {
1826
+ return (b, c) => (A(), a("div", Ys, [
1827
+ x(w(ue), { variant: "modern" }, {
1828
+ default: D(() => [
1829
+ c[4] || (c[4] = e("div", { class: "text-center mb-8" }, [
1830
+ e("h1", { class: "text-3xl font-bold text-gradient mb-2" }, "Reset password"),
1831
+ e("p", { class: "text-neutral-600" }, "Enter your email address and we'll send you a link to reset your password")
1832
+ ], -1)),
1833
+ e("form", {
1834
+ onSubmit: re(n, ["prevent"]),
1835
+ class: "space-y-6"
1836
+ }, [
1837
+ x(w(ee), {
1333
1838
  id: "email",
1334
- "onUpdate:modelValue": e[0] || (e[0] = (p) => m.email = p),
1839
+ modelValue: i.email,
1840
+ "onUpdate:modelValue": c[0] || (c[0] = (f) => i.email = f),
1335
1841
  type: "email",
1336
- required: "",
1842
+ label: "Email address",
1843
+ placeholder: "Enter your email address",
1337
1844
  autocomplete: "email",
1338
- class: w([
1339
- "input-modern",
1340
- n.value && "input-error"
1845
+ required: "",
1846
+ disabled: r.value || o.value,
1847
+ error: u.value ? "Email address not found" : void 0
1848
+ }, null, 8, ["modelValue", "disabled", "error"]),
1849
+ x(w(_), {
1850
+ type: "submit",
1851
+ variant: "primary",
1852
+ "full-width": "",
1853
+ disabled: r.value || !i.email.trim() || o.value,
1854
+ loading: r.value,
1855
+ "loading-text": "Sending link..."
1856
+ }, {
1857
+ default: D(() => [
1858
+ j(L(o.value ? "Link sent!" : "Send reset link"), 1)
1341
1859
  ]),
1342
- placeholder: "Enter your email address",
1343
- disabled: f.value || r.value
1344
- }, null, 10, yt), [
1345
- [y, m.email]
1346
- ])
1347
- ]),
1348
- A("button", {
1349
- type: "submit",
1350
- disabled: f.value || !m.email.trim() || r.value,
1351
- class: "btn-primary"
1352
- }, [
1353
- f.value ? (a(), s("span", Ft, e[3] || (e[3] = [
1354
- A("svg", {
1355
- class: "animate-spin w-4 h-4",
1356
- fill: "none",
1357
- viewBox: "0 0 24 24"
1358
- }, [
1359
- A("circle", {
1360
- class: "opacity-25",
1361
- cx: "12",
1362
- cy: "12",
1363
- r: "10",
1860
+ _: 1
1861
+ }, 8, ["disabled", "loading"])
1862
+ ], 32),
1863
+ o.value ? (A(), E(w(se), {
1864
+ key: 0,
1865
+ variant: "success",
1866
+ message: `Check your email - We've sent a password reset link to ${i.email}`,
1867
+ class: "mt-6 animate-fade-in"
1868
+ }, null, 8, ["message"])) : W("", !0),
1869
+ u.value ? (A(), E(w(se), {
1870
+ key: 1,
1871
+ variant: "error",
1872
+ message: u.value,
1873
+ class: "mt-6 animate-fade-in",
1874
+ dismissible: "",
1875
+ onDismiss: c[1] || (c[1] = (f) => u.value = "")
1876
+ }, null, 8, ["message"])) : W("", !0),
1877
+ e("div", Ks, [
1878
+ x(w(Ae), {
1879
+ onClick: c[2] || (c[2] = (f) => b.$emit("back-to-signin")),
1880
+ class: "inline-flex items-center gap-2"
1881
+ }, {
1882
+ default: D(() => c[3] || (c[3] = [
1883
+ e("svg", {
1884
+ class: "w-4 h-4",
1885
+ fill: "none",
1364
1886
  stroke: "currentColor",
1365
- "stroke-width": "4"
1366
- }),
1367
- A("path", {
1368
- class: "opacity-75",
1369
- fill: "currentColor",
1370
- 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"
1371
- })
1372
- ], -1),
1373
- Z(" Sending link... ", -1)
1374
- ]))) : r.value ? (a(), s("span", Xt, "Link sent!")) : (a(), s("span", Ut, "Send reset link"))
1375
- ], 8, xt)
1376
- ], 32),
1377
- r.value ? (a(), s("div", Nt, [
1378
- A("div", Bt, [
1379
- A("div", Pt, [
1380
- e[5] || (e[5] = A("svg", {
1381
- class: "w-4 h-4 mt-0.5 flex-shrink-0",
1382
- fill: "currentColor",
1383
- viewBox: "0 0 20 20"
1384
- }, [
1385
- A("path", {
1386
- "fill-rule": "evenodd",
1387
- 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",
1388
- "clip-rule": "evenodd"
1389
- })
1390
- ], -1)),
1391
- A("div", null, [
1392
- e[4] || (e[4] = A("p", { class: "font-medium" }, "Check your email", -1)),
1393
- A("p", Lt, "We've sent a password reset link to " + V(m.email), 1)
1394
- ])
1395
- ])
1396
- ])
1397
- ])) : b("", !0),
1398
- n.value ? (a(), s("div", zt, [
1399
- A("div", Zt, [
1400
- A("div", kt, [
1401
- e[6] || (e[6] = A("svg", {
1402
- class: "w-4 h-4 mt-0.5 flex-shrink-0",
1403
- fill: "currentColor",
1404
- viewBox: "0 0 20 20"
1405
- }, [
1406
- A("path", {
1407
- "fill-rule": "evenodd",
1408
- 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",
1409
- "clip-rule": "evenodd"
1410
- })
1411
- ], -1)),
1412
- A("p", St, V(n.value), 1)
1413
- ])
1414
- ])
1415
- ])) : b("", !0),
1416
- A("div", Kt, [
1417
- A("button", {
1418
- type: "button",
1419
- class: "inline-flex items-center gap-2 text-sm text-strands-600 hover:text-strands-700 font-medium transition-colors duration-200",
1420
- onClick: e[1] || (e[1] = (p) => i.$emit("back-to-signin"))
1421
- }, e[7] || (e[7] = [
1422
- A("svg", {
1423
- class: "w-4 h-4",
1424
- fill: "none",
1425
- stroke: "currentColor",
1426
- viewBox: "0 0 24 24"
1427
- }, [
1428
- A("path", {
1429
- "stroke-linecap": "round",
1430
- "stroke-linejoin": "round",
1431
- "stroke-width": "2",
1432
- d: "M15 19l-7-7 7-7"
1433
- })
1434
- ], -1),
1435
- Z(" Back to sign in ", -1)
1436
- ]))
1887
+ viewBox: "0 0 24 24"
1888
+ }, [
1889
+ e("path", {
1890
+ "stroke-linecap": "round",
1891
+ "stroke-linejoin": "round",
1892
+ "stroke-width": "2",
1893
+ d: "M15 19l-7-7 7-7"
1894
+ })
1895
+ ], -1),
1896
+ j(" Back to sign in ", -1)
1897
+ ])),
1898
+ _: 1,
1899
+ __: [3]
1900
+ })
1901
+ ]),
1902
+ x(le)
1437
1903
  ]),
1438
- I(G)
1439
- ])
1904
+ _: 1,
1905
+ __: [4]
1906
+ })
1440
1907
  ]));
1441
1908
  }
1442
- }), Yt = { class: "max-w-md mx-auto bg-white rounded-lg shadow-lg p-6" }, As = /* @__PURE__ */ L({
1909
+ }), Qs = { class: "max-w-md mx-auto bg-white rounded-lg shadow-lg p-6" }, lA = /* @__PURE__ */ P({
1443
1910
  __name: "StrandsMFASetup",
1444
- setup(F) {
1445
- return (h, c) => (a(), s("div", Yt, c[0] || (c[0] = [
1446
- Y('<div class="text-center mb-6"><h2 class="text-2xl font-bold text-gray-900">Two-Factor Authentication</h2><p class="text-gray-600 mt-2">Secure your account with 2FA</p></div><div class="space-y-4"><p class="text-gray-500">MFA setup functionality will be implemented here.</p></div>', 2)
1911
+ setup(V) {
1912
+ return (g, s) => (A(), a("div", Qs, s[0] || (s[0] = [
1913
+ ve('<div class="text-center mb-6"><h2 class="text-2xl font-bold text-gray-900">Two-Factor Authentication</h2><p class="text-gray-600 mt-2">Secure your account with 2FA</p></div><div class="space-y-4"><p class="text-gray-500">MFA setup functionality will be implemented here.</p></div>', 2)
1447
1914
  ])));
1448
1915
  }
1449
- }), Dt = { class: "max-w-2xl mx-auto bg-white rounded-lg shadow-lg p-6" }, es = /* @__PURE__ */ L({
1450
- __name: "StrandsDeviceManager",
1451
- setup(F) {
1452
- return (h, c) => (a(), s("div", Dt, c[0] || (c[0] = [
1453
- Y('<div class="text-center mb-6"><h2 class="text-2xl font-bold text-gray-900">Device Manager</h2><p class="text-gray-600 mt-2">Manage your active devices and sessions</p></div><div class="space-y-4"><p class="text-gray-500">Device management functionality will be implemented here.</p></div>', 2)
1454
- ])));
1455
- }
1456
- }), B = x(null), K = x(null), Q = x(!1), P = x(!1), M = x(!1);
1457
- function aA() {
1458
- const F = U(() => B.value !== null), h = async (t) => {
1459
- P.value = !0;
1916
+ }), K = U(null), $ = U(null), te = U(!1), O = U(!1), me = U(!1);
1917
+ function Ve() {
1918
+ const V = N(() => K.value !== null), g = async (n) => {
1919
+ O.value = !0;
1460
1920
  try {
1461
- return console.log("Sign in with:", t), await new Promise((i) => setTimeout(i, 1e3)), B.value = {
1921
+ return console.log("Sign in with:", n), await new Promise((b) => setTimeout(b, 1e3)), K.value = {
1462
1922
  id: "1",
1463
- email: t.email,
1923
+ email: n.email,
1464
1924
  firstName: "John",
1465
1925
  lastName: "Doe",
1466
1926
  mfaEnabled: !1,
1467
1927
  createdAt: "2024-01-15T10:30:00Z",
1468
1928
  updatedAt: "2024-01-20T14:45:00Z"
1469
- }, K.value = {
1929
+ }, $.value = {
1470
1930
  accessToken: "mock-access-token",
1471
1931
  refreshToken: "mock-refresh-token",
1472
1932
  expiresAt: new Date(Date.now() + 300 * 1e3)
1473
1933
  // 5 minutes
1474
- }, B.value;
1934
+ }, K.value;
1475
1935
  } finally {
1476
- P.value = !1;
1936
+ O.value = !1;
1477
1937
  }
1478
- }, c = async (t) => {
1479
- P.value = !0;
1938
+ }, s = async (n) => {
1939
+ O.value = !0;
1480
1940
  try {
1481
- return console.log("Sign up with:", t), await new Promise((i) => setTimeout(i, 1e3)), B.value = {
1941
+ return console.log("Sign up with:", n), await new Promise((b) => setTimeout(b, 1e3)), K.value = {
1482
1942
  id: "1",
1483
- email: t.email,
1484
- firstName: t.firstName,
1485
- lastName: t.lastName,
1943
+ email: n.email,
1944
+ firstName: n.firstName,
1945
+ lastName: n.lastName,
1486
1946
  mfaEnabled: !1,
1487
1947
  createdAt: (/* @__PURE__ */ new Date()).toISOString(),
1488
1948
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
1489
- }, K.value = {
1949
+ }, $.value = {
1490
1950
  accessToken: "mock-access-token",
1491
1951
  refreshToken: "mock-refresh-token",
1492
1952
  expiresAt: new Date(Date.now() + 300 * 1e3)
1493
1953
  // 5 minutes
1494
- }, B.value;
1954
+ }, K.value;
1495
1955
  } finally {
1496
- P.value = !1;
1956
+ O.value = !1;
1497
1957
  }
1498
- }, f = async () => {
1499
- P.value = !0;
1958
+ }, r = async () => {
1959
+ O.value = !0;
1500
1960
  try {
1501
- console.log("Sign out"), await new Promise((t) => setTimeout(t, 500)), B.value = null, K.value = null;
1961
+ console.log("Sign out"), await new Promise((n) => setTimeout(n, 500)), K.value = null, $.value = null;
1502
1962
  } finally {
1503
- P.value = !1;
1963
+ O.value = !1;
1504
1964
  }
1505
- }, n = async () => {
1506
- if (K.value) {
1507
- Q.value = !0;
1965
+ }, u = async () => {
1966
+ if ($.value) {
1967
+ te.value = !0;
1508
1968
  try {
1509
- console.log("Refresh token"), K.value.expiresAt = new Date(Date.now() + 300 * 1e3);
1969
+ console.log("Refresh token"), $.value.expiresAt = new Date(Date.now() + 300 * 1e3);
1510
1970
  } finally {
1511
- Q.value = !1;
1971
+ te.value = !1;
1512
1972
  }
1513
1973
  }
1514
- }, r = async (t) => {
1515
- Q.value = !0;
1974
+ }, o = async (n) => {
1975
+ te.value = !0;
1516
1976
  try {
1517
- console.log("Update profile:", t), B.value && Object.assign(B.value, t);
1977
+ console.log("Update profile:", n), K.value && Object.assign(K.value, n);
1518
1978
  } finally {
1519
- Q.value = !1;
1979
+ te.value = !1;
1520
1980
  }
1521
- }, m = async () => {
1522
- if (!M.value) {
1523
- P.value = !0;
1981
+ }, i = async () => {
1982
+ if (!me.value) {
1983
+ O.value = !0;
1524
1984
  try {
1525
- console.log("Initializing auth state"), await new Promise((t) => setTimeout(t, 500)), M.value = !0;
1526
- } catch (t) {
1527
- console.error("Auth initialization error:", t);
1985
+ console.log("Initializing auth state"), await new Promise((n) => setTimeout(n, 500)), me.value = !0;
1986
+ } catch (n) {
1987
+ console.error("Auth initialization error:", n);
1528
1988
  } finally {
1529
- P.value = !1;
1989
+ O.value = !1;
1530
1990
  }
1531
1991
  }
1532
1992
  };
1533
- return M.value || m(), {
1993
+ return me.value || i(), {
1534
1994
  // State
1535
- user: U(() => B.value),
1536
- currentUser: U(() => B.value),
1537
- currentSession: U(() => K.value),
1538
- isAuthenticated: F,
1539
- isLoading: U(() => P.value),
1540
- loading: U(() => Q.value),
1995
+ user: N(() => K.value),
1996
+ currentUser: N(() => K.value),
1997
+ currentSession: N(() => $.value),
1998
+ isAuthenticated: V,
1999
+ isLoading: N(() => O.value),
2000
+ loading: N(() => te.value),
1541
2001
  // Methods
1542
- signIn: h,
1543
- signUp: c,
1544
- signOut: f,
1545
- refreshToken: n,
1546
- updateProfile: r,
1547
- initialize: m
2002
+ signIn: g,
2003
+ signUp: s,
2004
+ signOut: r,
2005
+ refreshToken: u,
2006
+ updateProfile: o,
2007
+ initialize: i
1548
2008
  };
1549
2009
  }
1550
- const Qt = {
2010
+ const Os = {
1551
2011
  key: 0,
1552
2012
  class: "animate-fade-in"
1553
- }, Ht = {
2013
+ }, Es = {
1554
2014
  key: 1,
1555
2015
  class: "animate-fade-in"
1556
- }, ts = /* @__PURE__ */ L({
2016
+ }, nA = /* @__PURE__ */ P({
1557
2017
  __name: "SignedIn",
1558
2018
  props: {
1559
2019
  showFallback: { type: Boolean, default: !0 }
1560
2020
  },
1561
2021
  emits: ["sign-in-required"],
1562
- setup(F, { emit: h }) {
1563
- const c = h, { isAuthenticated: f, user: n, signOut: r } = aA(), m = () => {
1564
- c("sign-in-required");
2022
+ setup(V, { emit: g }) {
2023
+ const s = g, { isAuthenticated: r, user: u, signOut: o } = Ve(), i = () => {
2024
+ s("sign-in-required");
1565
2025
  };
1566
- return (t, i) => N(f) ? (a(), s("div", Qt, [
1567
- H(t.$slots, "default", {
1568
- user: N(n),
1569
- signOut: N(r)
2026
+ return (n, b) => w(r) ? (A(), a("div", Os, [
2027
+ Z(n.$slots, "default", {
2028
+ user: w(u),
2029
+ signOut: w(o)
1570
2030
  })
1571
- ])) : t.showFallback ? (a(), s("div", Ht, [
1572
- H(t.$slots, "fallback", { signIn: m }, () => [
1573
- A("div", { class: "text-center py-8" }, [
1574
- i[0] || (i[0] = Y('<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)),
1575
- A("button", {
1576
- onClick: m,
2031
+ ])) : n.showFallback ? (A(), a("div", Es, [
2032
+ Z(n.$slots, "fallback", { signIn: i }, () => [
2033
+ e("div", { class: "text-center py-8" }, [
2034
+ b[0] || (b[0] = ve('<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)),
2035
+ e("button", {
2036
+ onClick: i,
1577
2037
  class: "btn-primary !w-auto px-6 py-2"
1578
2038
  }, " Sign in ")
1579
2039
  ])
1580
2040
  ])
1581
- ])) : b("", !0);
2041
+ ])) : W("", !0);
1582
2042
  }
1583
- }), It = {
2043
+ }), Hs = {
1584
2044
  key: 0,
1585
2045
  class: "animate-fade-in"
1586
- }, Ot = {
2046
+ }, Gs = {
1587
2047
  key: 1,
1588
2048
  class: "animate-fade-in"
1589
- }, Gt = { class: "text-center py-8" }, jt = { class: "text-neutral-600 mb-4" }, Mt = {
2049
+ }, Rs = { class: "text-center py-8" }, Js = { class: "text-neutral-600 mb-4" }, _s = {
1590
2050
  key: 2,
1591
2051
  class: "animate-pulse"
1592
- }, ss = /* @__PURE__ */ L({
2052
+ }, oA = /* @__PURE__ */ P({
1593
2053
  __name: "SignedOut",
1594
2054
  props: {
1595
2055
  showFallback: { type: Boolean, default: !0 }
1596
2056
  },
1597
2057
  emits: ["sign-in-clicked", "sign-up-clicked"],
1598
- setup(F, { emit: h }) {
1599
- const c = h, { isAuthenticated: f, isLoading: n, user: r, signOut: m } = aA(), t = () => {
1600
- c("sign-in-clicked");
1601
- }, i = () => {
1602
- c("sign-up-clicked");
2058
+ setup(V, { emit: g }) {
2059
+ const s = g, { isAuthenticated: r, isLoading: u, user: o, signOut: i } = Ve(), n = () => {
2060
+ s("sign-in-clicked");
2061
+ }, b = () => {
2062
+ s("sign-up-clicked");
1603
2063
  };
1604
- return (e, p) => !N(f) && !N(n) ? (a(), s("div", It, [
1605
- H(e.$slots, "default", {
1606
- signIn: t,
1607
- signUp: i
2064
+ return (c, f) => !w(r) && !w(u) ? (A(), a("div", Hs, [
2065
+ Z(c.$slots, "default", {
2066
+ signIn: n,
2067
+ signUp: b
1608
2068
  })
1609
- ])) : e.showFallback && N(f) ? (a(), s("div", Ot, [
1610
- H(e.$slots, "fallback", {
1611
- user: N(r),
1612
- signOut: N(m)
2069
+ ])) : c.showFallback && w(r) ? (A(), a("div", Gs, [
2070
+ Z(c.$slots, "fallback", {
2071
+ user: w(o),
2072
+ signOut: w(i)
1613
2073
  }, () => {
1614
- var g;
2074
+ var t;
1615
2075
  return [
1616
- A("div", Gt, [
1617
- p[1] || (p[1] = A("div", { class: "w-16 h-16 mx-auto mb-4 bg-strands-100 rounded-full flex items-center justify-center" }, [
1618
- A("svg", {
2076
+ e("div", Rs, [
2077
+ f[1] || (f[1] = e("div", { class: "w-16 h-16 mx-auto mb-4 bg-strands-100 rounded-full flex items-center justify-center" }, [
2078
+ e("svg", {
1619
2079
  class: "w-8 h-8 text-strands-600",
1620
2080
  fill: "none",
1621
2081
  stroke: "currentColor",
1622
2082
  viewBox: "0 0 24 24"
1623
2083
  }, [
1624
- A("path", {
2084
+ e("path", {
1625
2085
  "stroke-linecap": "round",
1626
2086
  "stroke-linejoin": "round",
1627
2087
  "stroke-width": "2",
@@ -1629,40 +2089,84 @@ const Qt = {
1629
2089
  })
1630
2090
  ])
1631
2091
  ], -1)),
1632
- p[2] || (p[2] = A("h3", { class: "text-lg font-semibold text-neutral-900 mb-2" }, "Already signed in", -1)),
1633
- A("p", jt, "You're currently signed in as " + V((g = N(r)) == null ? void 0 : g.email) + ".", 1),
1634
- A("button", {
1635
- onClick: p[0] || (p[0] = //@ts-ignore
1636
- (...v) => N(m) && N(m)(...v)),
2092
+ f[2] || (f[2] = e("h3", { class: "text-lg font-semibold text-neutral-900 mb-2" }, "Already signed in", -1)),
2093
+ e("p", Js, "You're currently signed in as " + L((t = w(o)) == null ? void 0 : t.email) + ".", 1),
2094
+ e("button", {
2095
+ onClick: f[0] || (f[0] = //@ts-ignore
2096
+ (...p) => w(i) && w(i)(...p)),
1637
2097
  class: "btn-secondary !w-auto px-6 py-2"
1638
2098
  }, " Sign out ")
1639
2099
  ])
1640
2100
  ];
1641
2101
  })
1642
- ])) : N(n) ? (a(), s("div", Mt, [
1643
- H(e.$slots, "loading", {}, () => [
1644
- p[3] || (p[3] = Y('<div class="text-center py-8"><div class="w-16 h-16 mx-auto mb-4 bg-neutral-200 rounded-full flex items-center justify-center"><svg class="animate-spin w-6 h-6 text-neutral-400" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" 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"></path></svg></div><p class="text-neutral-500">Checking authentication...</p></div>', 1))
2102
+ ])) : w(u) ? (A(), a("div", _s, [
2103
+ Z(c.$slots, "loading", {}, () => [
2104
+ f[3] || (f[3] = ve('<div class="text-center py-8"><div class="w-16 h-16 mx-auto mb-4 bg-neutral-200 rounded-full flex items-center justify-center"><svg class="animate-spin w-6 h-6 text-neutral-400" fill="none" viewBox="0 0 24 24"><circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle><path class="opacity-75" fill="currentColor" 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"></path></svg></div><p class="text-neutral-500">Checking authentication...</p></div>', 1))
1645
2105
  ])
1646
- ])) : b("", !0);
2106
+ ])) : W("", !0);
2107
+ }
2108
+ }), iA = /* @__PURE__ */ P({
2109
+ __name: "StrandsLogo",
2110
+ props: {
2111
+ class: { default: "" }
2112
+ },
2113
+ setup(V) {
2114
+ return (g, s) => (A(), a("svg", {
2115
+ viewBox: "0 0 22571 9413",
2116
+ xmlns: "http://www.w3.org/2000/svg",
2117
+ class: I(g.class),
2118
+ role: "img",
2119
+ "aria-label": "Strands Services Logo"
2120
+ }, s[0] || (s[0] = [
2121
+ e("g", null, [
2122
+ e("text", {
2123
+ x: "3798.06",
2124
+ y: "7203.65",
2125
+ style: { "font-family": "'CourierNewPS-BoldMT', 'Courier New', monospace", "font-weight": "700", "font-size": "5295.12px", fill: "currentColor" }
2126
+ }, " trands ")
2127
+ ], -1),
2128
+ e("g", null, [
2129
+ e("path", {
2130
+ d: "M2370.75,8047.43c-172.831,0 -349.758,-28.381 -520.19,-86.274c-362.325,-122.988 -626.515,-354.842 -724.651,-635.835c-94.464,-270.121 -70.883,-674.383 204.038,-923.606c318.411,-288.759 731.429,-170.714 1168.59,-45.891c186.811,53.375 395.367,112.962 625.668,152.923c-0.424,-11.579 -0.988,-21.181 -1.412,-28.806c-14.12,-228.042 -92.911,-347.217 -223.524,-544.618c-83.592,-126.376 -178.48,-269.696 -272.097,-466.956c-74.978,-158.006 -138.096,-327.308 -188.082,-502.822c-408.216,-4.095 -801.606,-101.666 -1135.83,-290.313c-874.468,-493.079 -1531.48,-1711.66 -1068.34,-2543.62c195.283,-350.747 599.829,-639.082 1030.5,-734.394c321.095,-71.166 618.185,-23.298 836.343,134.707c228.183,165.207 391.131,461.309 425.16,772.66c29.371,267.862 -42.784,514.825 -203.049,695.423c-247.669,279.016 -675.371,371.786 -1089.66,236.232l175.515,-536.852c194.295,63.541 396.497,32.9 491.809,-74.414c68.059,-76.673 72.436,-183.14 64.105,-259.107c-18.356,-167.889 -111.973,-316.576 -195,-376.728c-85.569,-61.988 -221.547,-76.532 -382.8,-40.666c-271.533,60.152 -542.641,248.375 -659.133,457.778c-126.942,228.042 -103.784,560.433 63.541,912.027c171.137,359.643 465.968,682.997 788.616,865.007c216.181,121.999 473.593,192.882 744.843,211.097c-19.91,-172.69 -27.111,-345.522 -20.475,-513.977c23.864,-608.865 225.642,-1098.41 567.917,-1378.28c338.604,-276.898 921.487,-426.997 1334.79,-159.7c453.119,293.136 534.452,990.394 350.041,1468.36c-164.077,425.444 -583.307,786.075 -1150.24,989.406c-130.048,46.738 -262.355,83.451 -395.226,110.28c35.583,109.432 77.379,215.192 125.105,315.446c76.673,161.253 156.17,281.558 233.126,397.767c150.521,227.619 292.854,442.67 316.152,821.517c1.694,28.522 3.248,65.659 3.53,109.431c88.534,-1.694 179.61,-7.766 273.086,-19.344c234.819,-28.947 692.521,-185.215 954.251,-408.635l202.34,499.143c-286.222,212.469 -804.15,435.189 -1087.4,470.066c-144.592,17.791 -283.817,24.851 -417.395,24.004c-75.684,261.648 -223.665,536.852 -507.34,722.674c-206.438,135.272 -466.251,204.885 -736.795,204.885l-0.424,0Zm-542.076,-1260.51c-52.669,-0 -93.617,9.743 -119.316,33.182c-79.073,71.731 -79.78,234.114 -50.127,318.977c38.69,110.702 185.116,223.523 373.057,287.347c271.956,92.346 572.576,70.319 765.882,-56.34c114.374,-74.837 189.353,-185.258 238.209,-303.303c-263.484,-45.185 -495.48,-111.409 -693.022,-167.89c-205.873,-58.881 -391.978,-111.973 -514.683,-111.973Zm1872.91,-4019.61c-153.346,0 -336.768,62.27 -471.193,172.126c-212.227,173.538 -343.828,524.708 -361.055,963.283c-5.93,149.393 1.271,302.88 20.192,455.802c110.421,-21.463 219.994,-51.257 327.167,-89.805c406.239,-145.721 710.531,-392.966 814.032,-661.11c98.842,-256.141 62.835,-666.052 -130.047,-790.875c-51.963,-33.606 -121.717,-49.421 -199.096,-49.421Z",
2131
+ style: { fill: "currentColor", "fill-rule": "nonzero" }
2132
+ })
2133
+ ], -1)
2134
+ ]), 2));
2135
+ }
2136
+ }), uA = /* @__PURE__ */ P({
2137
+ __name: "StrandsConfigProvider",
2138
+ props: {
2139
+ config: {}
2140
+ },
2141
+ setup(V) {
2142
+ const g = V;
2143
+ return ae(() => {
2144
+ be(g.config);
2145
+ }), be(g.config), (s, r) => Z(s.$slots, "default");
1647
2146
  }
1648
2147
  });
1649
2148
  export {
1650
- Rt as Auth,
1651
- es as DeviceManager,
1652
- As as MFASetup,
1653
- $t as PasswordReset,
1654
- Jt as SignIn,
1655
- Et as SignUp,
1656
- ts as SignedIn,
1657
- ss as SignedOut,
1658
- Rt as StrandsAuth,
1659
- es as StrandsDeviceManager,
1660
- As as StrandsMFASetup,
1661
- $t as StrandsPasswordReset,
1662
- Jt as StrandsSignIn,
1663
- Et as StrandsSignUp,
1664
- _t as StrandsUserProfile,
1665
- _t as UserProfile,
1666
- aA as useStrandsAuth
2149
+ nA as SignedIn,
2150
+ oA as SignedOut,
2151
+ tA as StrandsAuth,
2152
+ uA as StrandsConfigProvider,
2153
+ iA as StrandsLogo,
2154
+ lA as StrandsMFASetup,
2155
+ rA as StrandsPasswordReset,
2156
+ le as StrandsSecuredFooter,
2157
+ sA as StrandsSignIn,
2158
+ AA as StrandsSignUp,
2159
+ aA as StrandsUserProfile,
2160
+ se as UiAlert,
2161
+ _ as UiButton,
2162
+ ue as UiCard,
2163
+ ee as UiInput,
2164
+ Ae as UiLink,
2165
+ tt as UiTabs,
2166
+ be as provideStrandsConfig,
2167
+ eA as setStrandsConfig,
2168
+ fe as useOAuthProviders,
2169
+ Ve as useStrandsAuth,
2170
+ de as useStrandsConfig
1667
2171
  };
1668
2172
  //# sourceMappingURL=strands-auth-ui.es.js.map