@strands.gg/accui 0.2.2 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/accui.css +1 -1
  2. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -1
  3. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  4. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +15 -21
  5. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  6. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +2 -2
  7. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js.map +1 -1
  8. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -1
  9. package/dist/nuxt/runtime/plugin.client.es.js +1 -1
  10. package/dist/nuxt-v4/module.cjs.js +7 -1
  11. package/dist/nuxt-v4/module.cjs.js.map +1 -1
  12. package/dist/nuxt-v4/module.d.ts +5 -0
  13. package/dist/nuxt-v4/module.d.ts.map +1 -1
  14. package/dist/nuxt-v4/module.es.js +27 -18
  15. package/dist/nuxt-v4/module.es.js.map +1 -1
  16. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +1 -1
  17. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js.map +1 -1
  18. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.d.ts +21 -59
  19. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.d.ts.map +1 -1
  20. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js +45 -36
  21. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.es.js.map +1 -1
  22. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +1 -1
  23. package/dist/nuxt-v4/runtime/plugin.client.cjs.js.map +1 -1
  24. package/dist/nuxt-v4/runtime/plugin.client.d.ts.map +1 -1
  25. package/dist/nuxt-v4/runtime/plugin.client.es.js +23 -12
  26. package/dist/nuxt-v4/runtime/plugin.client.es.js.map +1 -1
  27. package/dist/nuxt-v4/types.d.ts +2 -2
  28. package/dist/nuxt-v4/types.d.ts.map +1 -1
  29. package/dist/nuxt-v4.d.ts +1 -0
  30. package/dist/nuxt-v4.d.ts.map +1 -1
  31. package/dist/strands-auth-ui.cjs.js +1 -1
  32. package/dist/strands-auth-ui.cjs.js.map +1 -1
  33. package/dist/strands-auth-ui.es.js +1468 -1315
  34. package/dist/strands-auth-ui.es.js.map +1 -1
  35. package/dist/types/index.d.ts +5 -0
  36. package/dist/types/index.d.ts.map +1 -1
  37. package/dist/useStrandsAuth-BGunGG2x.cjs +2 -0
  38. package/dist/useStrandsAuth-BGunGG2x.cjs.map +1 -0
  39. package/dist/useStrandsAuth-DiD32KI7.js +91 -0
  40. package/dist/useStrandsAuth-DiD32KI7.js.map +1 -0
  41. package/dist/useStrandsConfig-CtzCmeS1.js +105 -0
  42. package/dist/useStrandsConfig-CtzCmeS1.js.map +1 -0
  43. package/dist/useStrandsConfig-DamqmMUO.cjs +2 -0
  44. package/dist/useStrandsConfig-DamqmMUO.cjs.map +1 -0
  45. package/dist/vue/components/StrandsAuth.vue.d.ts.map +1 -1
  46. package/dist/vue/components/StrandsCompleteSignUp.vue.d.ts.map +1 -1
  47. package/dist/vue/components/StrandsPasswordReset.vue.d.ts +7 -3
  48. package/dist/vue/components/StrandsPasswordReset.vue.d.ts.map +1 -1
  49. package/dist/vue/components/StrandsSecuredFooter.vue.d.ts +5 -1
  50. package/dist/vue/components/StrandsSecuredFooter.vue.d.ts.map +1 -1
  51. package/dist/vue/components/StrandsSignIn.vue.d.ts.map +1 -1
  52. package/dist/vue/components/StrandsSignUp.vue.d.ts.map +1 -1
  53. package/dist/vue/components/StrandsUserProfile.vue.d.ts +2 -0
  54. package/dist/vue/components/StrandsUserProfile.vue.d.ts.map +1 -1
  55. package/dist/vue/composables/useStrandsAuth.d.ts +2 -1
  56. package/dist/vue/composables/useStrandsAuth.d.ts.map +1 -1
  57. package/dist/vue/composables/useStrandsConfig.d.ts +2 -0
  58. package/dist/vue/composables/useStrandsConfig.d.ts.map +1 -1
  59. package/dist/vue/ui/UiInput.vue.d.ts.map +1 -1
  60. package/package.json +1 -1
  61. package/dist/useStrandsAuth-Bh7evftS.js +0 -66
  62. package/dist/useStrandsAuth-Bh7evftS.js.map +0 -1
  63. package/dist/useStrandsAuth-sAfTQeGC.cjs +0 -2
  64. package/dist/useStrandsAuth-sAfTQeGC.cjs.map +0 -1
  65. package/dist/useStrandsConfig-BYwF65Ph.js +0 -89
  66. package/dist/useStrandsConfig-BYwF65Ph.js.map +0 -1
  67. package/dist/useStrandsConfig-Bhbfl0PJ.cjs +0 -2
  68. package/dist/useStrandsConfig-Bhbfl0PJ.cjs.map +0 -1
package/dist/accui.css CHANGED
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-yellow-700: oklch(55.4% .135 66.442);--color-yellow-800: oklch(47.6% .114 61.907);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-300: oklch(84.5% .143 164.978);--color-emerald-400: oklch(76.5% .177 163.223);--color-emerald-600: oklch(59.6% .145 163.225);--color-blue-50: oklch(97% .014 254.604);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-neutral-50: oklch(98.5% 0 0);--color-neutral-100: oklch(97% 0 0);--color-neutral-200: oklch(92.2% 0 0);--color-neutral-300: oklch(87% 0 0);--color-neutral-400: oklch(70.8% 0 0);--color-neutral-500: oklch(55.6% 0 0);--color-neutral-600: oklch(43.9% 0 0);--color-neutral-700: oklch(37.1% 0 0);--color-neutral-900: oklch(20.5% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-md: 28rem;--container-2xl: 42rem;--container-4xl: 56rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--text-6xl: 3.75rem;--text-6xl--line-height: 1;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-lg: 16px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--color-strands-50: #fdf2f8;--color-strands-100: #fce7f3;--color-strands-400: #f472b6;--color-strands-500: #EA00A8;--color-strands-600: #db2777;--color-strands-700: #be185d}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::-moz-placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){{color:color-mix(in oklab,currentcolor 50%,transparent)}}::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.bottom-\[-2px\]{bottom:-2px}.left-0{left:calc(var(--spacing) * 0)}.float-right{float:right}.container{width:100%}@media (width >= 40rem){.container{max-width:40rem}}@media (width >= 48rem){.container{max-width:48rem}}@media (width >= 64rem){.container{max-width:64rem}}@media (width >= 80rem){.container{max-width:80rem}}@media (width >= 96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-\[3px\]{height:3px}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-md{max-width:var(--container-md)}.min-w-100{min-width:calc(var(--spacing) * 100)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-200{border-color:var(--color-blue-200)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-strands-500{border-color:var(--color-strands-500)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-300{border-color:var(--color-yellow-300)}.bg-black\/40{background-color:color-mix(in srgb,#000 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-strands-100{background-color:var(--color-strands-100)}.bg-strands-500{background-color:var(--color-strands-500)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-neutral-50{--tw-gradient-from: var(--color-neutral-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-strands-400{--tw-gradient-from: var(--color-strands-400);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-neutral-100{--tw-gradient-to: var(--color-neutral-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-strands-600{--tw-gradient-to: var(--color-strands-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentcolor}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading, var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.text-black{color:var(--color-black)}.text-blue-400{color:var(--color-blue-400)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-emerald-600{color:var(--color-emerald-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-900{color:var(--color-neutral-900)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-strands-500{color:var(--color-strands-500)}.text-strands-600{color:var(--color-strands-600)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-strands-500{text-decoration-color:var(--color-strands-500)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-75{opacity:75%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-lg{--tw-backdrop-blur: blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.ease-\[cubic-bezier\(0\.25\,0\.46\,0\.45\,0\.94\)\]{--tw-ease: cubic-bezier(.25,.46,.45,.94);transition-timing-function:cubic-bezier(.25,.46,.45,.94)}@media (hover: hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:100%}}@media (hover: hover){.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}}@media (hover: hover){.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}}@media (hover: hover){.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}}@media (hover: hover){.hover\:bg-strands-50:hover{background-color:var(--color-strands-50)}}@media (hover: hover){.hover\:bg-strands-500:hover{background-color:var(--color-strands-500)}}@media (hover: hover){.hover\:bg-strands-600:hover{background-color:var(--color-strands-600)}}@media (hover: hover){.hover\:text-blue-500:hover{color:var(--color-blue-500)}}@media (hover: hover){.hover\:text-gray-600:hover{color:var(--color-gray-600)}}@media (hover: hover){.hover\:text-gray-700:hover{color:var(--color-gray-700)}}@media (hover: hover){.hover\:text-gray-800:hover{color:var(--color-gray-800)}}@media (hover: hover){.hover\:text-green-500:hover{color:var(--color-green-500)}}@media (hover: hover){.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}}@media (hover: hover){.hover\:text-red-500:hover{color:var(--color-red-500)}}@media (hover: hover){.hover\:text-strands-600:hover{color:var(--color-strands-600)}}@media (hover: hover){.hover\:text-strands-700:hover{color:var(--color-strands-700)}}@media (hover: hover){.hover\:text-white:hover{color:var(--color-white)}}@media (hover: hover){.hover\:text-yellow-500:hover{color:var(--color-yellow-500)}}.focus\:border-strands-500:focus{border-color:var(--color-strands-500)}.focus\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-gray-500:focus{--tw-ring-color: var(--color-gray-500)}.focus\:ring-strands-500:focus{--tw-ring-color: var(--color-strands-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\:border-red-500:focus-visible{border-color:var(--color-red-500)}.focus-visible\:border-strands-500:focus-visible{border-color:var(--color-strands-500)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color: var(--color-red-500)}.focus-visible\:ring-strands-500:focus-visible{--tw-ring-color: var(--color-strands-500)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-white:focus-visible{--tw-ring-offset-color: var(--color-white)}.focus-visible\:outline-none:focus-visible{--tw-outline-style: none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-50:disabled{opacity:50%}@media (width >= 40rem){.sm\:flex-row{flex-direction:row}}@media (width >= 48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width >= 48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@layer components{.btn-primary{border-radius:var(--radius-lg);background-color:var(--color-strands-500);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);color:var(--color-white);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}@media (hover: hover){.btn-primary:hover{background-color:var(--color-strands-600)}}.btn-secondary{border-radius:var(--radius-lg);background-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);color:var(--color-gray-800);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}@media (hover: hover){.btn-secondary:hover{background-color:var(--color-gray-300)}}.btn-oauth{display:flex;width:100%;align-items:center;justify-content:center;gap:calc(var(--spacing) * 3);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);color:var(--color-gray-700);transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .2s;transition-duration:.2s}@media (hover: hover){.btn-oauth:hover{border-color:var(--color-strands-500)}}@media (hover: hover){.btn-oauth:hover{background-color:var(--color-gray-50)}}.card-modern{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding:calc(var(--spacing) * 8);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur: blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.text-gradient{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from: var(--color-strands-500);--tw-gradient-to: var(--color-strands-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));-webkit-background-clip:text;background-clip:text;color:transparent}.animate-slide-up{animation:slideUp .3s ease-out}.animate-fade-in{animation:fadeIn .2s ease-out}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false;}@property --tw-gradient-via-stops{syntax: "*"; inherits: false;}@property --tw-gradient-from-position{syntax: "<length-percentage>"; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: "<length-percentage>"; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: "<length-percentage>"; inherits: false; initial-value: 100%;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial}}}.fade-enter-active[data-v-4583e1b6],.fade-leave-active[data-v-4583e1b6]{transition:opacity .15s ease}.fade-enter-from[data-v-4583e1b6],.fade-leave-to[data-v-4583e1b6]{opacity:0}.height-fade-enter-active[data-v-4583e1b6]{transition:all .25s cubic-bezier(.25,.46,.45,.94);overflow:hidden}.height-fade-leave-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.25,.46,.45,.94);overflow:hidden}.height-fade-enter-from[data-v-4583e1b6],.height-fade-leave-to[data-v-4583e1b6]{opacity:0;max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;transform:translateY(-10px)}.height-fade-enter-to[data-v-4583e1b6],.height-fade-leave-from[data-v-4583e1b6]{opacity:1;max-height:500px;transform:translateY(0)}.slide-fade-enter-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1)}.slide-fade-leave-active[data-v-4583e1b6]{transition:all .15s cubic-bezier(.4,0,.2,1)}.slide-fade-enter-from[data-v-4583e1b6]{transform:translateY(25px);opacity:0}.slide-fade-leave-to[data-v-4583e1b6]{transform:translateY(-15px);opacity:0}.expand-enter-active[data-v-4583e1b6],.expand-leave-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1);overflow:hidden}.expand-enter-from[data-v-4583e1b6],.expand-leave-to[data-v-4583e1b6]{max-height:0;opacity:0;transform:translateY(-15px)}.expand-enter-to[data-v-4583e1b6],.expand-leave-from[data-v-4583e1b6]{max-height:300px;opacity:1;transform:translateY(0)}.content-switch-enter-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1)}.content-switch-leave-active[data-v-4583e1b6]{transition:all .15s cubic-bezier(.4,0,.2,1)}.content-switch-enter-from[data-v-4583e1b6]{transform:translateY(30px);opacity:0}.content-switch-leave-to[data-v-4583e1b6]{transform:translateY(-20px);opacity:0}
1
+ /*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties;@layer theme,base,components,utilities;@layer theme{:root,:host{--font-sans: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-red-50: oklch(97.1% .013 17.38);--color-red-100: oklch(93.6% .032 17.717);--color-red-200: oklch(88.5% .062 18.334);--color-red-300: oklch(80.8% .114 19.571);--color-red-400: oklch(70.4% .191 22.216);--color-red-500: oklch(63.7% .237 25.331);--color-red-600: oklch(57.7% .245 27.325);--color-red-700: oklch(50.5% .213 27.518);--color-red-800: oklch(44.4% .177 26.899);--color-yellow-50: oklch(98.7% .026 102.212);--color-yellow-100: oklch(97.3% .071 103.193);--color-yellow-200: oklch(94.5% .129 101.54);--color-yellow-300: oklch(90.5% .182 98.111);--color-yellow-400: oklch(85.2% .199 91.936);--color-yellow-500: oklch(79.5% .184 86.047);--color-yellow-600: oklch(68.1% .162 75.834);--color-yellow-700: oklch(55.4% .135 66.442);--color-yellow-800: oklch(47.6% .114 61.907);--color-green-50: oklch(98.2% .018 155.826);--color-green-100: oklch(96.2% .044 156.743);--color-green-200: oklch(92.5% .084 155.995);--color-green-400: oklch(79.2% .209 151.711);--color-green-500: oklch(72.3% .219 149.579);--color-green-700: oklch(52.7% .154 150.069);--color-green-800: oklch(44.8% .119 151.328);--color-green-900: oklch(39.3% .095 152.535);--color-emerald-300: oklch(84.5% .143 164.978);--color-emerald-400: oklch(76.5% .177 163.223);--color-emerald-600: oklch(59.6% .145 163.225);--color-blue-50: oklch(97% .014 254.604);--color-blue-200: oklch(88.2% .059 254.128);--color-blue-400: oklch(70.7% .165 254.624);--color-blue-500: oklch(62.3% .214 259.815);--color-blue-700: oklch(48.8% .243 264.376);--color-blue-800: oklch(42.4% .199 265.638);--color-blue-900: oklch(37.9% .146 265.522);--color-gray-50: oklch(98.5% .002 247.839);--color-gray-100: oklch(96.7% .003 264.542);--color-gray-200: oklch(92.8% .006 264.531);--color-gray-300: oklch(87.2% .01 258.338);--color-gray-400: oklch(70.7% .022 261.325);--color-gray-500: oklch(55.1% .027 264.364);--color-gray-600: oklch(44.6% .03 256.802);--color-gray-700: oklch(37.3% .034 259.733);--color-gray-800: oklch(27.8% .033 256.848);--color-gray-900: oklch(21% .034 264.665);--color-neutral-50: oklch(98.5% 0 0);--color-neutral-100: oklch(97% 0 0);--color-neutral-200: oklch(92.2% 0 0);--color-neutral-300: oklch(87% 0 0);--color-neutral-400: oklch(70.8% 0 0);--color-neutral-500: oklch(55.6% 0 0);--color-neutral-600: oklch(43.9% 0 0);--color-neutral-700: oklch(37.1% 0 0);--color-neutral-900: oklch(20.5% 0 0);--color-black: #000;--color-white: #fff;--spacing: .25rem;--container-md: 28rem;--container-2xl: 42rem;--container-4xl: 56rem;--text-xs: .75rem;--text-xs--line-height: calc(1 / .75);--text-sm: .875rem;--text-sm--line-height: calc(1.25 / .875);--text-base: 1rem;--text-base--line-height: 1.5 ;--text-lg: 1.125rem;--text-lg--line-height: calc(1.75 / 1.125);--text-2xl: 1.5rem;--text-2xl--line-height: calc(2 / 1.5);--text-3xl: 1.875rem;--text-3xl--line-height: 1.2 ;--text-4xl: 2.25rem;--text-4xl--line-height: calc(2.5 / 2.25);--text-6xl: 3.75rem;--text-6xl--line-height: 1;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-2xl: 1rem;--ease-in-out: cubic-bezier(.4, 0, .2, 1);--animate-spin: spin 1s linear infinite;--animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--blur-lg: 16px;--default-transition-duration: .15s;--default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);--default-font-family: var(--font-sans);--default-mono-font-family: var(--font-mono);--strands-accent: #EA00A8;--color-strands-50: hsl(from var(--strands-accent) h s calc(l/20) );--color-strands-100: hsl(from var(--strands-accent) h s calc(l*.1) );--color-strands-400: hsl(from var(--strands-accent) h s calc(l*.8) );--color-strands-500: hsl(from var(--strands-accent) h s l );--color-strands-600: hsl(from var(--strands-accent) h s calc(l*1.2) );--color-strands-700: hsl(from var(--strands-accent) h s calc(l*1.4) )}}@layer base{*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var(--default-font-variation-settings, normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings, normal);font-variation-settings:var(--default-mono-font-variation-settings, normal);font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::-moz-placeholder{opacity:1}::placeholder{opacity:1}@supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px){::-moz-placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){{color:color-mix(in oklab,currentcolor 50%,transparent)}}::placeholder{color:currentcolor}@supports (color: color-mix(in lab,red,red)){{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer utilities{.pointer-events-none{pointer-events:none}.visible{visibility:visible}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing) * 0)}.inset-y-0{inset-block:calc(var(--spacing) * 0)}.right-0{right:calc(var(--spacing) * 0)}.bottom-\[-2px\]{bottom:-2px}.left-0{left:calc(var(--spacing) * 0)}.float-right{float:right}.container{width:100%}@media (width >= 40rem){.container{max-width:40rem}}@media (width >= 48rem){.container{max-width:48rem}}@media (width >= 64rem){.container{max-width:64rem}}@media (width >= 80rem){.container{max-width:80rem}}@media (width >= 96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-4{margin-top:calc(var(--spacing) * 4)}.mt-6{margin-top:calc(var(--spacing) * 6)}.mt-8{margin-top:calc(var(--spacing) * 8)}.-mb-4{margin-bottom:calc(var(--spacing) * -4)}.mb-1{margin-bottom:calc(var(--spacing) * 1)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.mb-6{margin-bottom:calc(var(--spacing) * 6)}.mb-8{margin-bottom:calc(var(--spacing) * 8)}.mb-12{margin-bottom:calc(var(--spacing) * 12)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-3{margin-left:calc(var(--spacing) * 3)}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-flex{display:inline-flex}.h-3{height:calc(var(--spacing) * 3)}.h-4{height:calc(var(--spacing) * 4)}.h-5{height:calc(var(--spacing) * 5)}.h-6{height:calc(var(--spacing) * 6)}.h-8{height:calc(var(--spacing) * 8)}.h-12{height:calc(var(--spacing) * 12)}.h-16{height:calc(var(--spacing) * 16)}.h-24{height:calc(var(--spacing) * 24)}.h-48{height:calc(var(--spacing) * 48)}.h-\[3px\]{height:3px}.min-h-screen{min-height:100vh}.\!w-auto{width:auto!important}.w-3{width:calc(var(--spacing) * 3)}.w-4{width:calc(var(--spacing) * 4)}.w-5{width:calc(var(--spacing) * 5)}.w-6{width:calc(var(--spacing) * 6)}.w-8{width:calc(var(--spacing) * 8)}.w-12{width:calc(var(--spacing) * 12)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-auto{width:auto}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-md{max-width:var(--container-md)}.min-w-100{min-width:calc(var(--spacing) * 100)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 4) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 4) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 8) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 8) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse: 0;margin-block-start:calc(calc(var(--spacing) * 12) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 12) * calc(1 - var(--tw-space-y-reverse)))}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-full{border-radius:calc(infinity * 1px)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-blue-200{border-color:var(--color-blue-200)}.border-emerald-300{border-color:var(--color-emerald-300)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-green-200{border-color:var(--color-green-200)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-red-200{border-color:var(--color-red-200)}.border-red-300{border-color:var(--color-red-300)}.border-strands-500{border-color:var(--color-strands-500)}.border-yellow-200{border-color:var(--color-yellow-200)}.border-yellow-300{border-color:var(--color-yellow-300)}.bg-black\/40{background-color:color-mix(in srgb,#000 40%,transparent)}@supports (color: color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black) 40%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-emerald-400{background-color:var(--color-emerald-400)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-300{background-color:var(--color-neutral-300)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-400{background-color:var(--color-red-400)}.bg-red-500{background-color:var(--color-red-500)}.bg-strands-100{background-color:var(--color-strands-100)}.bg-strands-500{background-color:var(--color-strands-500)}.bg-white{background-color:var(--color-white)}.bg-yellow-50{background-color:var(--color-yellow-50)}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-yellow-400{background-color:var(--color-yellow-400)}.bg-gradient-to-br{--tw-gradient-position: to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-neutral-50{--tw-gradient-from: var(--color-neutral-50);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.from-strands-400{--tw-gradient-from: var(--color-strands-400);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-neutral-100{--tw-gradient-to: var(--color-neutral-100);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.to-strands-600{--tw-gradient-to: var(--color-strands-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))}.fill-current{fill:currentcolor}.p-1\.5{padding:calc(var(--spacing) * 1.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-6{padding:calc(var(--spacing) * 6)}.p-8{padding:calc(var(--spacing) * 8)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-1{padding-block:calc(var(--spacing) * 1)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pt-6{padding-top:calc(var(--spacing) * 6)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-10{padding-right:calc(var(--spacing) * 10)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-10{padding-left:calc(var(--spacing) * 10)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading, var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading, var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading, var(--text-4xl--line-height))}.text-6xl{font-size:var(--text-6xl);line-height:var(--tw-leading, var(--text-6xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading, var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading, var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading, var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading, var(--text-xs--line-height))}.font-bold{--tw-font-weight: var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight: var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight: var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-all{word-break:break-all}.text-black{color:var(--color-black)}.text-blue-400{color:var(--color-blue-400)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-blue-900{color:var(--color-blue-900)}.text-emerald-600{color:var(--color-emerald-600)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-400{color:var(--color-green-400)}.text-green-500{color:var(--color-green-500)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-green-900{color:var(--color-green-900)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-900{color:var(--color-neutral-900)}.text-red-400{color:var(--color-red-400)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-red-800{color:var(--color-red-800)}.text-strands-500{color:var(--color-strands-500)}.text-strands-600{color:var(--color-strands-600)}.text-white{color:var(--color-white)}.text-yellow-400{color:var(--color-yellow-400)}.text-yellow-500{color:var(--color-yellow-500)}.text-yellow-600{color:var(--color-yellow-600)}.text-yellow-700{color:var(--color-yellow-700)}.text-yellow-800{color:var(--color-yellow-800)}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-strands-500{text-decoration-color:var(--color-strands-500)}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0%}.opacity-25{opacity:25%}.opacity-75{opacity:75%}.shadow{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 3px 0 var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 1px 2px -1px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur: blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.backdrop-blur-lg{--tw-backdrop-blur: blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}.duration-150{--tw-duration: .15s;transition-duration:.15s}.duration-200{--tw-duration: .2s;transition-duration:.2s}.ease-\[cubic-bezier\(0\.25\,0\.46\,0\.45\,0\.94\)\]{--tw-ease: cubic-bezier(.25,.46,.45,.94);transition-timing-function:cubic-bezier(.25,.46,.45,.94)}.ease-in-out{--tw-ease: var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media (hover: hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:100%}}@media (hover: hover){.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}}@media (hover: hover){.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}}@media (hover: hover){.hover\:bg-neutral-50:hover{background-color:var(--color-neutral-50)}}@media (hover: hover){.hover\:bg-strands-50:hover{background-color:var(--color-strands-50)}}@media (hover: hover){.hover\:bg-strands-500:hover{background-color:var(--color-strands-500)}}@media (hover: hover){.hover\:bg-strands-600:hover{background-color:var(--color-strands-600)}}@media (hover: hover){.hover\:text-blue-500:hover{color:var(--color-blue-500)}}@media (hover: hover){.hover\:text-gray-600:hover{color:var(--color-gray-600)}}@media (hover: hover){.hover\:text-gray-700:hover{color:var(--color-gray-700)}}@media (hover: hover){.hover\:text-gray-800:hover{color:var(--color-gray-800)}}@media (hover: hover){.hover\:text-green-500:hover{color:var(--color-green-500)}}@media (hover: hover){.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}}@media (hover: hover){.hover\:text-red-500:hover{color:var(--color-red-500)}}@media (hover: hover){.hover\:text-strands-600:hover{color:var(--color-strands-600)}}@media (hover: hover){.hover\:text-strands-700:hover{color:var(--color-strands-700)}}@media (hover: hover){.hover\:text-white:hover{color:var(--color-white)}}@media (hover: hover){.hover\:text-yellow-500:hover{color:var(--color-yellow-500)}}.focus\:border-strands-500:focus{border-color:var(--color-strands-500)}.focus\:ring-2:focus{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-gray-500:focus{--tw-ring-color: var(--color-gray-500)}.focus\:ring-strands-500:focus{--tw-ring-color: var(--color-strands-500)}.focus\:ring-offset-2:focus{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style: none;outline-style:none}.focus-visible\:border-red-500:focus-visible{border-color:var(--color-red-500)}.focus-visible\:border-strands-500:focus-visible{border-color:var(--color-strands-500)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-red-500:focus-visible{--tw-ring-color: var(--color-red-500)}.focus-visible\:ring-strands-500:focus-visible{--tw-ring-color: var(--color-strands-500)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px;--tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:ring-offset-white:focus-visible{--tw-ring-offset-color: var(--color-white)}.focus-visible\:outline-none:focus-visible{--tw-outline-style: none;outline-style:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{background-color:var(--color-gray-50)}.disabled\:text-gray-500:disabled{color:var(--color-gray-500)}.disabled\:opacity-50:disabled{opacity:50%}@media (width >= 40rem){.sm\:flex-row{flex-direction:row}}@media (width >= 48rem){.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width >= 48rem){.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}}@layer components{.btn-primary{border-radius:var(--radius-lg);background-color:var(--color-strands-500);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);color:var(--color-white);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}@media (hover: hover){.btn-primary:hover{background-color:var(--color-strands-600)}}.btn-secondary{border-radius:var(--radius-lg);background-color:var(--color-gray-200);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 2);color:var(--color-gray-800);transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration))}@media (hover: hover){.btn-secondary:hover{background-color:var(--color-gray-300)}}.btn-oauth{display:flex;width:100%;align-items:center;justify-content:center;gap:calc(var(--spacing) * 3);border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-300);background-color:var(--color-white);padding-inline:calc(var(--spacing) * 4);padding-block:calc(var(--spacing) * 3);color:var(--color-gray-700);transition-property:all;transition-timing-function:var(--tw-ease, var(--default-transition-timing-function));transition-duration:var(--tw-duration, var(--default-transition-duration));--tw-duration: .2s;transition-duration:.2s}@media (hover: hover){.btn-oauth:hover{border-color:var(--color-strands-500)}}@media (hover: hover){.btn-oauth:hover{background-color:var(--color-gray-50)}}.card-modern{border-radius:var(--radius-2xl);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-gray-200);background-color:var(--color-white);padding:calc(var(--spacing) * 8);--tw-shadow: 0 10px 15px -3px var(--tw-shadow-color, rgb(0 0 0 / .1)), 0 4px 6px -4px var(--tw-shadow-color, rgb(0 0 0 / .1));box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);--tw-backdrop-blur: blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,) var(--tw-backdrop-brightness,) var(--tw-backdrop-contrast,) var(--tw-backdrop-grayscale,) var(--tw-backdrop-hue-rotate,) var(--tw-backdrop-invert,) var(--tw-backdrop-opacity,) var(--tw-backdrop-saturate,) var(--tw-backdrop-sepia,)}.text-gradient{--tw-gradient-position: to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops));--tw-gradient-from: var(--color-strands-500);--tw-gradient-to: var(--color-strands-600);--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));-webkit-background-clip:text;background-clip:text;color:transparent}.animate-slide-up{animation:slideUp .3s ease-out}.animate-fade-in{animation:fadeIn .2s ease-out}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@property --tw-rotate-x{syntax: "*"; inherits: false;}@property --tw-rotate-y{syntax: "*"; inherits: false;}@property --tw-rotate-z{syntax: "*"; inherits: false;}@property --tw-skew-x{syntax: "*"; inherits: false;}@property --tw-skew-y{syntax: "*"; inherits: false;}@property --tw-space-y-reverse{syntax: "*"; inherits: false; initial-value: 0;}@property --tw-border-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-gradient-position{syntax: "*"; inherits: false;}@property --tw-gradient-from{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-via{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-to{syntax: "<color>"; inherits: false; initial-value: #0000;}@property --tw-gradient-stops{syntax: "*"; inherits: false;}@property --tw-gradient-via-stops{syntax: "*"; inherits: false;}@property --tw-gradient-from-position{syntax: "<length-percentage>"; inherits: false; initial-value: 0%;}@property --tw-gradient-via-position{syntax: "<length-percentage>"; inherits: false; initial-value: 50%;}@property --tw-gradient-to-position{syntax: "<length-percentage>"; inherits: false; initial-value: 100%;}@property --tw-font-weight{syntax: "*"; inherits: false;}@property --tw-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-shadow-color{syntax: "*"; inherits: false;}@property --tw-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-inset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-shadow-color{syntax: "*"; inherits: false;}@property --tw-inset-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-ring-color{syntax: "*"; inherits: false;}@property --tw-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-inset-ring-color{syntax: "*"; inherits: false;}@property --tw-inset-ring-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-ring-inset{syntax: "*"; inherits: false;}@property --tw-ring-offset-width{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --tw-ring-offset-color{syntax: "*"; inherits: false; initial-value: #fff;}@property --tw-ring-offset-shadow{syntax: "*"; inherits: false; initial-value: 0 0 #0000;}@property --tw-outline-style{syntax: "*"; inherits: false; initial-value: solid;}@property --tw-blur{syntax: "*"; inherits: false;}@property --tw-brightness{syntax: "*"; inherits: false;}@property --tw-contrast{syntax: "*"; inherits: false;}@property --tw-grayscale{syntax: "*"; inherits: false;}@property --tw-hue-rotate{syntax: "*"; inherits: false;}@property --tw-invert{syntax: "*"; inherits: false;}@property --tw-opacity{syntax: "*"; inherits: false;}@property --tw-saturate{syntax: "*"; inherits: false;}@property --tw-sepia{syntax: "*"; inherits: false;}@property --tw-drop-shadow{syntax: "*"; inherits: false;}@property --tw-drop-shadow-color{syntax: "*"; inherits: false;}@property --tw-drop-shadow-alpha{syntax: "<percentage>"; inherits: false; initial-value: 100%;}@property --tw-drop-shadow-size{syntax: "*"; inherits: false;}@property --tw-backdrop-blur{syntax: "*"; inherits: false;}@property --tw-backdrop-brightness{syntax: "*"; inherits: false;}@property --tw-backdrop-contrast{syntax: "*"; inherits: false;}@property --tw-backdrop-grayscale{syntax: "*"; inherits: false;}@property --tw-backdrop-hue-rotate{syntax: "*"; inherits: false;}@property --tw-backdrop-invert{syntax: "*"; inherits: false;}@property --tw-backdrop-opacity{syntax: "*"; inherits: false;}@property --tw-backdrop-saturate{syntax: "*"; inherits: false;}@property --tw-backdrop-sepia{syntax: "*"; inherits: false;}@property --tw-duration{syntax: "*"; inherits: false;}@property --tw-ease{syntax: "*"; inherits: false;}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}@layer properties{@supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x: initial;--tw-rotate-y: initial;--tw-rotate-z: initial;--tw-skew-x: initial;--tw-skew-y: initial;--tw-space-y-reverse: 0;--tw-border-style: solid;--tw-gradient-position: initial;--tw-gradient-from: #0000;--tw-gradient-via: #0000;--tw-gradient-to: #0000;--tw-gradient-stops: initial;--tw-gradient-via-stops: initial;--tw-gradient-from-position: 0%;--tw-gradient-via-position: 50%;--tw-gradient-to-position: 100%;--tw-font-weight: initial;--tw-shadow: 0 0 #0000;--tw-shadow-color: initial;--tw-shadow-alpha: 100%;--tw-inset-shadow: 0 0 #0000;--tw-inset-shadow-color: initial;--tw-inset-shadow-alpha: 100%;--tw-ring-color: initial;--tw-ring-shadow: 0 0 #0000;--tw-inset-ring-color: initial;--tw-inset-ring-shadow: 0 0 #0000;--tw-ring-inset: initial;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-offset-shadow: 0 0 #0000;--tw-outline-style: solid;--tw-blur: initial;--tw-brightness: initial;--tw-contrast: initial;--tw-grayscale: initial;--tw-hue-rotate: initial;--tw-invert: initial;--tw-opacity: initial;--tw-saturate: initial;--tw-sepia: initial;--tw-drop-shadow: initial;--tw-drop-shadow-color: initial;--tw-drop-shadow-alpha: 100%;--tw-drop-shadow-size: initial;--tw-backdrop-blur: initial;--tw-backdrop-brightness: initial;--tw-backdrop-contrast: initial;--tw-backdrop-grayscale: initial;--tw-backdrop-hue-rotate: initial;--tw-backdrop-invert: initial;--tw-backdrop-opacity: initial;--tw-backdrop-saturate: initial;--tw-backdrop-sepia: initial;--tw-duration: initial;--tw-ease: initial}}}input[type=email][data-v-e87dc617],input[type=password][data-v-e87dc617],input[type=text][data-v-e87dc617],input[type=number][data-v-e87dc617],input[type=tel][data-v-e87dc617],input[type=url][data-v-e87dc617]{background-color:#fff!important;background-image:none!important;border:1px solid rgb(209 213 219)!important;border-radius:.5rem!important;box-shadow:0 1px 2px #0000000d!important;color:#000!important;font-family:inherit!important;font-size:.875rem!important;line-height:1.25rem!important;padding:.625rem .75rem!important;transition:border-color .2s,box-shadow .2s!important}input[type=email][data-v-e87dc617]:focus,input[type=password][data-v-e87dc617]:focus,input[type=text][data-v-e87dc617]:focus,input[type=number][data-v-e87dc617]:focus,input[type=tel][data-v-e87dc617]:focus,input[type=url][data-v-e87dc617]:focus{border-color:#ea00a8!important;box-shadow:0 0 0 3px #ea00a81a!important;outline:none!important}input.border-red-300[data-v-e87dc617]{border-color:#fca5a5!important}input.border-red-300[data-v-e87dc617]:focus{border-color:#ef4444!important;box-shadow:0 0 0 3px #ef44441a!important}input[data-v-e87dc617]:disabled{background-color:#f9fafb!important;color:#6b7280!important;cursor:not-allowed!important}input[data-bwautofill][data-v-e87dc617],input[data-lpignore][data-v-e87dc617],input[data-form-type][data-v-e87dc617],input[data-1p-ignore][data-v-e87dc617]{background-color:#fff!important;background-image:none!important;border:1px solid rgb(209 213 219)!important;box-shadow:0 1px 2px #0000000d!important}input[data-v-e87dc617]:-webkit-autofill,input[data-v-e87dc617]:-webkit-autofill:hover,input[data-v-e87dc617]:-webkit-autofill:focus,input[data-v-e87dc617]:-webkit-autofill:active{-webkit-box-shadow:0 0 0 30px white inset!important;-webkit-text-fill-color:black!important;border:1px solid rgb(209 213 219)!important;border-radius:.5rem!important;-webkit-transition:background-color 5000s ease-in-out 0s!important;transition:background-color 5000s ease-in-out 0s!important}input[type=password][data-v-e87dc617]{padding-right:2.5rem!important}input[data-v-e87dc617]::-ms-reveal,input[data-v-e87dc617]::-ms-clear{display:none!important}input.px-3.py-2[data-v-e87dc617]{padding:.5rem .75rem!important}input.px-3.py-2\.5[data-v-e87dc617]{padding:.625rem .75rem!important}input.px-4.py-3[data-v-e87dc617]{padding:.75rem 1rem!important}input.pl-10[data-v-e87dc617]{padding-left:2.5rem!important}input.pr-10[data-v-e87dc617]{padding-right:2.5rem!important}.fade-enter-active[data-v-4583e1b6],.fade-leave-active[data-v-4583e1b6]{transition:opacity .15s ease}.fade-enter-from[data-v-4583e1b6],.fade-leave-to[data-v-4583e1b6]{opacity:0}.height-fade-enter-active[data-v-4583e1b6]{transition:all .25s cubic-bezier(.25,.46,.45,.94);overflow:hidden}.height-fade-leave-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.25,.46,.45,.94);overflow:hidden}.height-fade-enter-from[data-v-4583e1b6],.height-fade-leave-to[data-v-4583e1b6]{opacity:0;max-height:0;margin-top:0;margin-bottom:0;padding-top:0;padding-bottom:0;transform:translateY(-10px)}.height-fade-enter-to[data-v-4583e1b6],.height-fade-leave-from[data-v-4583e1b6]{opacity:1;max-height:500px;transform:translateY(0)}.slide-fade-enter-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1)}.slide-fade-leave-active[data-v-4583e1b6]{transition:all .15s cubic-bezier(.4,0,.2,1)}.slide-fade-enter-from[data-v-4583e1b6]{transform:translateY(25px);opacity:0}.slide-fade-leave-to[data-v-4583e1b6]{transform:translateY(-15px);opacity:0}.expand-enter-active[data-v-4583e1b6],.expand-leave-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1);overflow:hidden}.expand-enter-from[data-v-4583e1b6],.expand-leave-to[data-v-4583e1b6]{max-height:0;opacity:0;transform:translateY(-15px)}.expand-enter-to[data-v-4583e1b6],.expand-leave-from[data-v-4583e1b6]{max-height:300px;opacity:1;transform:translateY(0)}.content-switch-enter-active[data-v-4583e1b6]{transition:all .2s cubic-bezier(.4,0,.2,1)}.content-switch-leave-active[data-v-4583e1b6]{transition:all .15s cubic-bezier(.4,0,.2,1)}.content-switch-enter-from[data-v-4583e1b6]{transform:translateY(30px);opacity:0}.content-switch-leave-to[data-v-4583e1b6]{transform:translateY(-20px);opacity:0}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("nuxt/app"),a=require("../../../useStrandsAuth-sAfTQeGC.cjs"),u=()=>{const t=e.useRuntimeConfig().public.strandsAuth,n=a.useStrandsAuth();return{...n,initialize:async()=>{await n.initialize()},signIn:async s=>{const i=await n.signIn(s);return i&&t.onSignInUrl&&await e.navigateTo(t.onSignInUrl),i},signUp:async s=>await n.signUp({email:s.email,password:"",firstName:"",lastName:""}),signOut:async()=>{await n.signOut(),t.onSignOutUrl&&await e.navigateTo(t.onSignOutUrl)}}},r=()=>{const{user:t}=u();return t},o=()=>{const{isAuthenticated:t,isLoading:n}=u();return{isAuthenticated:t,isLoading:n}};exports.useAuthState=o;exports.useAuthUser=r;exports.useStrandsAuth=u;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("nuxt/app"),a=require("../../../useStrandsAuth-BGunGG2x.cjs"),u=()=>{const t=e.useRuntimeConfig().public.strandsAuth,n=a.useStrandsAuth();return{...n,initialize:async()=>{await n.initialize()},signIn:async s=>{const i=await n.signIn(s);return i&&t.onSignInUrl&&await e.navigateTo(t.onSignInUrl),i},signUp:async s=>await n.signUp({email:s.email,password:"",firstName:"",lastName:""}),signOut:async()=>{await n.signOut(),t.onSignOutUrl&&await e.navigateTo(t.onSignOutUrl)}}},r=()=>{const{user:t}=u();return{user:t}},o=()=>{const{isAuthenticated:t,isLoading:n}=u();return{isAuthenticated:t,isLoading:n}};exports.useAuthState=o;exports.useAuthUser=r;exports.useStrandsAuth=u;
2
2
  //# sourceMappingURL=useStrandsAuth.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStrandsAuth.cjs.js","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { useRuntimeConfig } from 'nuxt/app'\nimport { navigateTo } from 'nuxt/app'\nimport { useStrandsAuth as useVueStrandsAuth } from '../../../vue/composables/useStrandsAuth'\nimport type { StrandsAuthConfig } from '../../module'\n\nexport const useStrandsAuth = () => {\n const config = useRuntimeConfig().public['strandsAuth'] as StrandsAuthConfig\n \n // Get the base Vue composable\n const vueAuth = useVueStrandsAuth()\n\n // Initialize function for setup\n const initialize = async () => {\n await vueAuth.initialize()\n }\n\n // Enhanced signIn with Nuxt navigation\n const signIn = async (credentials: { email: string; password: string }) => {\n const result = await vueAuth.signIn(credentials)\n \n // Navigate to configured sign-in URL on success\n if (result && config.onSignInUrl) {\n await navigateTo(config.onSignInUrl)\n }\n \n return result\n }\n\n // Enhanced signUp with Nuxt navigation (magic link flow)\n const signUp = async (userData: { email: string }) => {\n // For magic link flow, we just need an email\n const result = await vueAuth.signUp({\n email: userData.email,\n password: '', // Empty password for magic link\n firstName: '', // Will be filled later in the magic link flow\n lastName: ''\n })\n \n // For magic link, we don't navigate immediately\n // The user will complete signup via the magic link\n \n return result\n }\n\n // Enhanced signOut with Nuxt navigation\n const signOut = async () => {\n await vueAuth.signOut()\n \n // Navigate to configured sign-out URL\n if (config.onSignOutUrl) {\n await navigateTo(config.onSignOutUrl)\n }\n }\n\n return {\n // Re-export Vue composable state and methods\n ...vueAuth,\n \n // Add initialize function\n initialize,\n \n // Override methods with Nuxt-specific navigation\n signIn,\n signUp,\n signOut,\n }\n}\n\n// Convenience composables\nexport const useAuthUser = () => {\n const { user } = useStrandsAuth()\n return user\n}\n\nexport const useAuthState = () => {\n const { isAuthenticated, isLoading } = useStrandsAuth()\n return { isAuthenticated, isLoading }\n}"],"names":["useStrandsAuth","config","useRuntimeConfig","vueAuth","useVueStrandsAuth","credentials","result","navigateTo","userData","useAuthUser","user","useAuthState","isAuthenticated","isLoading"],"mappings":"8JAMaA,EAAiB,IAAM,CAClC,MAAMC,EAASC,EAAAA,mBAAmB,OAAO,YAGnCC,EAAUC,EAAAA,eAAA,EA6ChB,MAAO,CAEL,GAAGD,EAGH,WA/CiB,SAAY,CAC7B,MAAMA,EAAQ,WAAA,CAChB,EAgDE,OA7Ca,MAAOE,GAAqD,CACzE,MAAMC,EAAS,MAAMH,EAAQ,OAAOE,CAAW,EAG/C,OAAIC,GAAUL,EAAO,aACnB,MAAMM,EAAAA,WAAWN,EAAO,WAAW,EAG9BK,CACT,EAqCE,OAlCa,MAAOE,GAEL,MAAML,EAAQ,OAAO,CAClC,MAAOK,EAAS,MAChB,SAAU,GACV,UAAW,GACX,SAAU,EAAA,CACX,EA4BD,QAnBc,SAAY,CAC1B,MAAML,EAAQ,QAAA,EAGVF,EAAO,cACT,MAAMM,EAAAA,WAAWN,EAAO,YAAY,CAExC,CAYE,CAEJ,EAGaQ,EAAc,IAAM,CAC/B,KAAM,CAAE,KAAAC,CAAA,EAASV,EAAA,EACjB,OAAOU,CACT,EAEaC,EAAe,IAAM,CAChC,KAAM,CAAE,gBAAAC,EAAiB,UAAAC,CAAA,EAAcb,EAAA,EACvC,MAAO,CAAE,gBAAAY,EAAiB,UAAAC,CAAA,CAC5B"}
1
+ {"version":3,"file":"useStrandsAuth.cjs.js","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"sourcesContent":["import type { Ref, ComputedRef } from 'vue'\nimport { useRuntimeConfig } from 'nuxt/app'\nimport { navigateTo } from 'nuxt/app'\nimport { useStrandsAuth as useVueStrandsAuth } from '../../../vue/composables/useStrandsAuth'\nimport type { StrandsAuthConfig } from '../../module'\nimport type { User } from '../../../types'\n\nexport const useStrandsAuth = () => {\n const config = useRuntimeConfig().public['strandsAuth'] as StrandsAuthConfig\n \n // Get the base Vue composable\n const vueAuth = useVueStrandsAuth()\n\n // Initialize function for setup\n const initialize = async () => {\n await vueAuth.initialize()\n }\n\n // Enhanced signIn with Nuxt navigation\n const signIn = async (credentials: { email: string; password: string }) => {\n const result = await vueAuth.signIn(credentials)\n \n // Navigate to configured sign-in URL on success\n if (result && config.onSignInUrl) {\n await navigateTo(config.onSignInUrl)\n }\n \n return result\n }\n\n // Enhanced signUp with Nuxt navigation (magic link flow)\n const signUp = async (userData: { email: string }) => {\n // For magic link flow, we just need an email\n const result = await vueAuth.signUp({\n email: userData.email,\n password: '', // Empty password for magic link\n firstName: '', // Will be filled later in the magic link flow\n lastName: ''\n })\n \n // For magic link, we don't navigate immediately\n // The user will complete signup via the magic link\n \n return result\n }\n\n // Enhanced signOut with Nuxt navigation\n const signOut = async () => {\n await vueAuth.signOut()\n \n // Navigate to configured sign-out URL\n if (config.onSignOutUrl) {\n await navigateTo(config.onSignOutUrl)\n }\n }\n\n return {\n // Re-export Vue composable state and methods\n ...vueAuth,\n \n // Add initialize function\n initialize,\n \n // Override methods with Nuxt-specific navigation\n signIn,\n signUp,\n signOut,\n }\n}\n\n// Convenience composables\nexport const useAuthUser = (): { user: ComputedRef<User | null> } => {\n const { user } = useStrandsAuth()\n return { user }\n}\n\nexport const useAuthState = (): { isAuthenticated: ComputedRef<boolean>, isLoading: ComputedRef<boolean> } => {\n const { isAuthenticated, isLoading } = useStrandsAuth()\n return { isAuthenticated, isLoading }\n}"],"names":["useStrandsAuth","config","useRuntimeConfig","vueAuth","useVueStrandsAuth","credentials","result","navigateTo","userData","useAuthUser","user","useAuthState","isAuthenticated","isLoading"],"mappings":"8JAOaA,EAAiB,IAAM,CAClC,MAAMC,EAASC,EAAAA,mBAAmB,OAAO,YAGnCC,EAAUC,EAAAA,eAAA,EA6ChB,MAAO,CAEL,GAAGD,EAGH,WA/CiB,SAAY,CAC7B,MAAMA,EAAQ,WAAA,CAChB,EAgDE,OA7Ca,MAAOE,GAAqD,CACzE,MAAMC,EAAS,MAAMH,EAAQ,OAAOE,CAAW,EAG/C,OAAIC,GAAUL,EAAO,aACnB,MAAMM,EAAAA,WAAWN,EAAO,WAAW,EAG9BK,CACT,EAqCE,OAlCa,MAAOE,GAEL,MAAML,EAAQ,OAAO,CAClC,MAAOK,EAAS,MAChB,SAAU,GACV,UAAW,GACX,SAAU,EAAA,CACX,EA4BD,QAnBc,SAAY,CAC1B,MAAML,EAAQ,QAAA,EAGVF,EAAO,cACT,MAAMM,EAAAA,WAAWN,EAAO,YAAY,CAExC,CAYE,CAEJ,EAGaQ,EAAc,IAA0C,CACnE,KAAM,CAAE,KAAAC,CAAA,EAASV,EAAA,EACjB,MAAO,CAAE,KAAAU,CAAA,CACX,EAEaC,EAAe,IAAkF,CAC5G,KAAM,CAAE,gBAAAC,EAAiB,UAAAC,CAAA,EAAcb,EAAA,EACvC,MAAO,CAAE,gBAAAY,EAAiB,UAAAC,CAAA,CAC5B"}
@@ -1,3 +1,5 @@
1
+ import { ComputedRef } from 'vue';
2
+ import { User } from '../../../types';
1
3
  export declare const useStrandsAuth: () => {
2
4
  initialize: () => Promise<void>;
3
5
  signIn: (credentials: {
@@ -8,7 +10,7 @@ export declare const useStrandsAuth: () => {
8
10
  email: string;
9
11
  }) => Promise<never>;
10
12
  signOut: () => Promise<void>;
11
- user: import('vue').ComputedRef<{
13
+ user: ComputedRef<{
12
14
  id: string;
13
15
  email: string;
14
16
  firstName: string;
@@ -20,7 +22,7 @@ export declare const useStrandsAuth: () => {
20
22
  createdAt: string | Date;
21
23
  updatedAt: string | Date;
22
24
  } | null>;
23
- currentUser: import('vue').ComputedRef<{
25
+ currentUser: ComputedRef<{
24
26
  id: string;
25
27
  email: string;
26
28
  firstName: string;
@@ -32,7 +34,7 @@ export declare const useStrandsAuth: () => {
32
34
  createdAt: string | Date;
33
35
  updatedAt: string | Date;
34
36
  } | null>;
35
- currentSession: import('vue').ComputedRef<{
37
+ currentSession: ComputedRef<{
36
38
  id?: string | undefined;
37
39
  userId?: string | undefined;
38
40
  accessToken: string;
@@ -40,26 +42,18 @@ export declare const useStrandsAuth: () => {
40
42
  expiresAt: Date;
41
43
  createdAt?: Date | undefined;
42
44
  } | null>;
43
- isAuthenticated: import('vue').ComputedRef<boolean>;
44
- isLoading: import('vue').ComputedRef<boolean>;
45
- loading: import('vue').ComputedRef<boolean>;
45
+ isAuthenticated: ComputedRef<boolean>;
46
+ isLoading: ComputedRef<boolean>;
47
+ loading: ComputedRef<boolean>;
46
48
  refreshToken: () => Promise<void>;
47
- updateProfile: (profileData: Partial<import('../../..').User>) => Promise<void>;
49
+ updateProfile: (profileData: Partial<User>) => Promise<void>;
50
+ setAuthData: (authResponse: import('../../..').AuthResponse) => void;
51
+ };
52
+ export declare const useAuthUser: () => {
53
+ user: ComputedRef<User | null>;
48
54
  };
49
- export declare const useAuthUser: () => import('vue').ComputedRef<{
50
- id: string;
51
- email: string;
52
- firstName: string;
53
- lastName: string;
54
- phone?: string | undefined;
55
- avatar?: string | undefined;
56
- mfaEnabled: boolean;
57
- emailVerified: boolean;
58
- createdAt: string | Date;
59
- updatedAt: string | Date;
60
- } | null>;
61
55
  export declare const useAuthState: () => {
62
- isAuthenticated: import('vue').ComputedRef<boolean>;
63
- isLoading: import('vue').ComputedRef<boolean>;
56
+ isAuthenticated: ComputedRef<boolean>;
57
+ isLoading: ComputedRef<boolean>;
64
58
  };
65
59
  //# sourceMappingURL=useStrandsAuth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useStrandsAuth.d.ts","sourceRoot":"","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,cAAc;;0BAYU;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;uBAYtC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqClD,CAAA;AAGD,eAAO,MAAM,WAAW;;;;;;;;;;;SAGvB,CAAA;AAED,eAAO,MAAM,YAAY;;;CAGxB,CAAA"}
1
+ {"version":3,"file":"useStrandsAuth.d.ts","sourceRoot":"","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,KAAK,CAAA;AAK3C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAA;AAE1C,eAAO,MAAM,cAAc;;0BAYU;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;uBAYtC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqClD,CAAA;AAGD,eAAO,MAAM,WAAW,QAAO;IAAE,IAAI,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC,CAAA;CAG9D,CAAA;AAED,eAAO,MAAM,YAAY,QAAO;IAAE,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAAC,SAAS,EAAE,WAAW,CAAC,OAAO,CAAC,CAAA;CAGvG,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { useRuntimeConfig as e, navigateTo as a } from "nuxt/app";
2
- import { u as r } from "../../../useStrandsAuth-Bh7evftS.js";
2
+ import { u as r } from "../../../useStrandsAuth-DiD32KI7.js";
3
3
  const u = () => {
4
4
  const n = e().public.strandsAuth, t = r();
5
5
  return {
@@ -28,7 +28,7 @@ const u = () => {
28
28
  };
29
29
  }, U = () => {
30
30
  const { user: n } = u();
31
- return n;
31
+ return { user: n };
32
32
  }, f = () => {
33
33
  const { isAuthenticated: n, isLoading: t } = u();
34
34
  return { isAuthenticated: n, isLoading: t };
@@ -1 +1 @@
1
- {"version":3,"file":"useStrandsAuth.es.js","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { useRuntimeConfig } from 'nuxt/app'\nimport { navigateTo } from 'nuxt/app'\nimport { useStrandsAuth as useVueStrandsAuth } from '../../../vue/composables/useStrandsAuth'\nimport type { StrandsAuthConfig } from '../../module'\n\nexport const useStrandsAuth = () => {\n const config = useRuntimeConfig().public['strandsAuth'] as StrandsAuthConfig\n \n // Get the base Vue composable\n const vueAuth = useVueStrandsAuth()\n\n // Initialize function for setup\n const initialize = async () => {\n await vueAuth.initialize()\n }\n\n // Enhanced signIn with Nuxt navigation\n const signIn = async (credentials: { email: string; password: string }) => {\n const result = await vueAuth.signIn(credentials)\n \n // Navigate to configured sign-in URL on success\n if (result && config.onSignInUrl) {\n await navigateTo(config.onSignInUrl)\n }\n \n return result\n }\n\n // Enhanced signUp with Nuxt navigation (magic link flow)\n const signUp = async (userData: { email: string }) => {\n // For magic link flow, we just need an email\n const result = await vueAuth.signUp({\n email: userData.email,\n password: '', // Empty password for magic link\n firstName: '', // Will be filled later in the magic link flow\n lastName: ''\n })\n \n // For magic link, we don't navigate immediately\n // The user will complete signup via the magic link\n \n return result\n }\n\n // Enhanced signOut with Nuxt navigation\n const signOut = async () => {\n await vueAuth.signOut()\n \n // Navigate to configured sign-out URL\n if (config.onSignOutUrl) {\n await navigateTo(config.onSignOutUrl)\n }\n }\n\n return {\n // Re-export Vue composable state and methods\n ...vueAuth,\n \n // Add initialize function\n initialize,\n \n // Override methods with Nuxt-specific navigation\n signIn,\n signUp,\n signOut,\n }\n}\n\n// Convenience composables\nexport const useAuthUser = () => {\n const { user } = useStrandsAuth()\n return user\n}\n\nexport const useAuthState = () => {\n const { isAuthenticated, isLoading } = useStrandsAuth()\n return { isAuthenticated, isLoading }\n}"],"names":["useStrandsAuth","config","useRuntimeConfig","vueAuth","useVueStrandsAuth","credentials","result","navigateTo","userData","useAuthUser","user","useAuthState","isAuthenticated","isLoading"],"mappings":";;AAMO,MAAMA,IAAiB,MAAM;AAClC,QAAMC,IAASC,IAAmB,OAAO,aAGnCC,IAAUC,EAAA;AA6ChB,SAAO;AAAA;AAAA,IAEL,GAAGD;AAAA;AAAA,IAGH,YA/CiB,YAAY;AAC7B,YAAMA,EAAQ,WAAA;AAAA,IAChB;AAAA;AAAA,IAgDE,QA7Ca,OAAOE,MAAqD;AACzE,YAAMC,IAAS,MAAMH,EAAQ,OAAOE,CAAW;AAG/C,aAAIC,KAAUL,EAAO,eACnB,MAAMM,EAAWN,EAAO,WAAW,GAG9BK;AAAA,IACT;AAAA,IAqCE,QAlCa,OAAOE,MAEL,MAAML,EAAQ,OAAO;AAAA,MAClC,OAAOK,EAAS;AAAA,MAChB,UAAU;AAAA;AAAA,MACV,WAAW;AAAA;AAAA,MACX,UAAU;AAAA,IAAA,CACX;AAAA,IA4BD,SAnBc,YAAY;AAC1B,YAAML,EAAQ,QAAA,GAGVF,EAAO,gBACT,MAAMM,EAAWN,EAAO,YAAY;AAAA,IAExC;AAAA,EAYE;AAEJ,GAGaQ,IAAc,MAAM;AAC/B,QAAM,EAAE,MAAAC,EAAA,IAASV,EAAA;AACjB,SAAOU;AACT,GAEaC,IAAe,MAAM;AAChC,QAAM,EAAE,iBAAAC,GAAiB,WAAAC,EAAA,IAAcb,EAAA;AACvC,SAAO,EAAE,iBAAAY,GAAiB,WAAAC,EAAA;AAC5B;"}
1
+ {"version":3,"file":"useStrandsAuth.es.js","sources":["../../../../../../apps/accounts-ui/src/nuxt/runtime/composables/useStrandsAuth.ts"],"sourcesContent":["import type { Ref, ComputedRef } from 'vue'\nimport { useRuntimeConfig } from 'nuxt/app'\nimport { navigateTo } from 'nuxt/app'\nimport { useStrandsAuth as useVueStrandsAuth } from '../../../vue/composables/useStrandsAuth'\nimport type { StrandsAuthConfig } from '../../module'\nimport type { User } from '../../../types'\n\nexport const useStrandsAuth = () => {\n const config = useRuntimeConfig().public['strandsAuth'] as StrandsAuthConfig\n \n // Get the base Vue composable\n const vueAuth = useVueStrandsAuth()\n\n // Initialize function for setup\n const initialize = async () => {\n await vueAuth.initialize()\n }\n\n // Enhanced signIn with Nuxt navigation\n const signIn = async (credentials: { email: string; password: string }) => {\n const result = await vueAuth.signIn(credentials)\n \n // Navigate to configured sign-in URL on success\n if (result && config.onSignInUrl) {\n await navigateTo(config.onSignInUrl)\n }\n \n return result\n }\n\n // Enhanced signUp with Nuxt navigation (magic link flow)\n const signUp = async (userData: { email: string }) => {\n // For magic link flow, we just need an email\n const result = await vueAuth.signUp({\n email: userData.email,\n password: '', // Empty password for magic link\n firstName: '', // Will be filled later in the magic link flow\n lastName: ''\n })\n \n // For magic link, we don't navigate immediately\n // The user will complete signup via the magic link\n \n return result\n }\n\n // Enhanced signOut with Nuxt navigation\n const signOut = async () => {\n await vueAuth.signOut()\n \n // Navigate to configured sign-out URL\n if (config.onSignOutUrl) {\n await navigateTo(config.onSignOutUrl)\n }\n }\n\n return {\n // Re-export Vue composable state and methods\n ...vueAuth,\n \n // Add initialize function\n initialize,\n \n // Override methods with Nuxt-specific navigation\n signIn,\n signUp,\n signOut,\n }\n}\n\n// Convenience composables\nexport const useAuthUser = (): { user: ComputedRef<User | null> } => {\n const { user } = useStrandsAuth()\n return { user }\n}\n\nexport const useAuthState = (): { isAuthenticated: ComputedRef<boolean>, isLoading: ComputedRef<boolean> } => {\n const { isAuthenticated, isLoading } = useStrandsAuth()\n return { isAuthenticated, isLoading }\n}"],"names":["useStrandsAuth","config","useRuntimeConfig","vueAuth","useVueStrandsAuth","credentials","result","navigateTo","userData","useAuthUser","user","useAuthState","isAuthenticated","isLoading"],"mappings":";;AAOO,MAAMA,IAAiB,MAAM;AAClC,QAAMC,IAASC,IAAmB,OAAO,aAGnCC,IAAUC,EAAA;AA6ChB,SAAO;AAAA;AAAA,IAEL,GAAGD;AAAA;AAAA,IAGH,YA/CiB,YAAY;AAC7B,YAAMA,EAAQ,WAAA;AAAA,IAChB;AAAA;AAAA,IAgDE,QA7Ca,OAAOE,MAAqD;AACzE,YAAMC,IAAS,MAAMH,EAAQ,OAAOE,CAAW;AAG/C,aAAIC,KAAUL,EAAO,eACnB,MAAMM,EAAWN,EAAO,WAAW,GAG9BK;AAAA,IACT;AAAA,IAqCE,QAlCa,OAAOE,MAEL,MAAML,EAAQ,OAAO;AAAA,MAClC,OAAOK,EAAS;AAAA,MAChB,UAAU;AAAA;AAAA,MACV,WAAW;AAAA;AAAA,MACX,UAAU;AAAA,IAAA,CACX;AAAA,IA4BD,SAnBc,YAAY;AAC1B,YAAML,EAAQ,QAAA,GAGVF,EAAO,gBACT,MAAMM,EAAWN,EAAO,YAAY;AAAA,IAExC;AAAA,EAYE;AAEJ,GAGaQ,IAAc,MAA0C;AACnE,QAAM,EAAE,MAAAC,EAAA,IAASV,EAAA;AACjB,SAAO,EAAE,MAAAU,EAAA;AACX,GAEaC,IAAe,MAAkF;AAC5G,QAAM,EAAE,iBAAAC,GAAiB,WAAAC,EAAA,IAAcb,EAAA;AACvC,SAAO,EAAE,iBAAAY,GAAiB,WAAAC,EAAA;AAC5B;"}
@@ -1,2 +1,2 @@
1
- "use strict";const e=require("nuxt/app"),i=require("../../useStrandsConfig-Bhbfl0PJ.cjs"),o=e.defineNuxtPlugin({name:"strands-auth-client",async setup(){const n=e.useRuntimeConfig().public.strandsAuth;n&&n.baseUrl?(i.provideStrandsConfig({baseUrl:n.baseUrl,endpoints:n.endpoints}),console.log("[Strands Auth] Configuration provided:",{baseUrl:n.baseUrl})):console.warn("[Strands Auth] No baseUrl found in config:",n),n?.accentColor&&typeof window<"u"&&document.documentElement.style.setProperty("--strands-accent",n.accentColor);const{useStrandsAuth:t}=await Promise.resolve().then(()=>require("./composables/useStrandsAuth.cjs.js")),{initialize:s}=t();await s(),console.log("[Strands Auth] Client plugin initialized")}});module.exports=o;
1
+ "use strict";const e=require("nuxt/app"),i=require("../../useStrandsConfig-DamqmMUO.cjs"),o=e.defineNuxtPlugin({name:"strands-auth-client",async setup(){const n=e.useRuntimeConfig().public.strandsAuth;n&&n.baseUrl?(i.provideStrandsConfig({baseUrl:n.baseUrl,endpoints:n.endpoints}),console.log("[Strands Auth] Configuration provided:",{baseUrl:n.baseUrl})):console.warn("[Strands Auth] No baseUrl found in config:",n),n?.accentColor&&typeof window<"u"&&document.documentElement.style.setProperty("--strands-accent",n.accentColor);const{useStrandsAuth:t}=await Promise.resolve().then(()=>require("./composables/useStrandsAuth.cjs.js")),{initialize:s}=t();await s(),console.log("[Strands Auth] Client plugin initialized")}});module.exports=o;
2
2
  //# sourceMappingURL=plugin.client.cjs.js.map
@@ -1,5 +1,5 @@
1
1
  import { defineNuxtPlugin as o, useRuntimeConfig as i } from "nuxt/app";
2
- import { provideStrandsConfig as s } from "../../useStrandsConfig-BYwF65Ph.js";
2
+ import { provideStrandsConfig as s } from "../../useStrandsConfig-CtzCmeS1.js";
3
3
  const c = o({
4
4
  name: "strands-auth-client",
5
5
  async setup() {
@@ -1,2 +1,8 @@
1
- "use strict";const t=require("@nuxt/kit");var u=typeof document<"u"?document.currentScript:null;const d=t.defineNuxtModule({meta:{name:"@strands.gg/accui/nuxt-v4",configKey:"strandsAuth",compatibility:{nuxt:"^4.0.0"}},defaults:{baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignInUrl:"/dashboard",onSignOutUrl:"/",autoRefresh:!0,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:!1,styles:!0},async setup(e,r){const s=t.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:u&&u.tagName.toUpperCase()==="SCRIPT"&&u.src||new URL("nuxt-v4/module.cjs.js",document.baseURI).href);!e.clientId&&!e.devMode&&console.warn("⚠️ Strands Auth: clientId is required for production use"),r.options.runtimeConfig.public=r.options.runtimeConfig.public||{};const a={baseUrl:e.baseUrl,clientId:e.clientId,accentColor:e.accentColor,redirectUrl:e.redirectUrl,onSignInUrl:e.onSignInUrl,onSignOutUrl:e.onSignOutUrl,autoRefresh:e.autoRefresh,refreshInterval:e.refreshInterval,protectedRoutes:e.protectedRoutes,guestOnlyRoutes:e.guestOnlyRoutes,devMode:e.devMode,styles:e.styles!==!1};r.options.runtimeConfig.public.strandsAuth=a,r.options.appConfig.strandsAuth=a,e.styles!==!1&&r.options.css.push("@strands.gg/accui/style.css"),t.addPlugin({src:s.resolve("./runtime/plugin.client.es.js"),mode:"client"}),t.addPlugin({src:s.resolve("./runtime/plugin.server.es.js"),mode:"server"}),t.addRouteMiddleware({name:"auth",path:s.resolve("./runtime/middleware/auth.global.es.js"),global:!0}),t.addImports([{name:"useStrandsAuth",as:"useStrandsAuth",from:s.resolve("./runtime/composables/useStrandsAuth.es.js")},{name:"useAuthUser",as:"useAuthUser",from:s.resolve("./runtime/composables/useStrandsAuth.es.js")},{name:"useAuthState",as:"useAuthState",from:s.resolve("./runtime/composables/useStrandsAuth.es.js")}]);const o=["StrandsAuth","StrandsSignIn","StrandsSignUp","StrandsCompleteSignUp","StrandsUserProfile","StrandsPasswordReset","StrandsMFASetup","StrandsConfigProvider","SignedIn","SignedOut","StrandsLogo","StrandsSecuredFooter"];for(const n of o)t.addComponent({name:n,export:n,filePath:"@strands.gg/accui"});r.hook("prepare:types",n=>{n.references.push({types:"@strands.gg/auth-nuxt-v4"})})}});module.exports=d;
1
+ "use strict";const r=require("@nuxt/kit");var u=typeof document<"u"?document.currentScript:null;const c=r.defineNuxtModule({meta:{name:"@strands.gg/accui/nuxt-v4",configKey:"strandsAuth",compatibility:{nuxt:"^4.0.0"}},defaults:{baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignInUrl:"/dashboard",onSignOutUrl:"/",autoRefresh:!0,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:!1,styles:!0},async setup(e,s){const t=r.createResolver(typeof document>"u"?require("url").pathToFileURL(__filename).href:u&&u.tagName.toUpperCase()==="SCRIPT"&&u.src||new URL("nuxt-v4/module.cjs.js",document.baseURI).href);!e.clientId&&!e.devMode&&console.warn("⚠️ Strands Auth: clientId is required for production use"),s.options.runtimeConfig.public=s.options.runtimeConfig.public||{};const a={baseUrl:e.baseUrl,clientId:e.clientId,accentColor:e.accentColor,redirectUrl:e.redirectUrl,onSignInUrl:e.onSignInUrl,onSignOutUrl:e.onSignOutUrl,autoRefresh:e.autoRefresh,refreshInterval:e.refreshInterval,protectedRoutes:e.protectedRoutes,guestOnlyRoutes:e.guestOnlyRoutes,devMode:e.devMode,styles:e.styles!==!1,supportEmail:e.supportEmail};s.options.runtimeConfig.public.strandsAuth=a,s.options.appConfig.strandsAuth=a,e.styles!==!1&&s.options.css.push("@strands.gg/accui/style.css");const o=t.resolve("./runtime/plugin.client.ts"),l=t.resolve("./runtime/plugin.server.ts"),d=t.resolve("./runtime/middleware/auth.global.ts");r.addPlugin({src:o,mode:"client"}),r.addPlugin({src:l,mode:"server"}),r.addRouteMiddleware({name:"auth",path:d,global:!0}),r.addImports([{name:"useStrandsAuth",as:"useStrandsAuth",from:t.resolve("./runtime/composables/useStrandsAuth")},{name:"useAuthUser",as:"useAuthUser",from:t.resolve("./runtime/composables/useStrandsAuth")},{name:"useAuthState",as:"useAuthState",from:t.resolve("./runtime/composables/useStrandsAuth")}]);const i=["StrandsAuth","StrandsSignIn","StrandsSignUp","StrandsCompleteSignUp","StrandsUserProfile","StrandsPasswordReset","StrandsMFASetup","StrandsConfigProvider","SignedIn","SignedOut","StrandsLogo","StrandsSecuredFooter"];for(const n of i)r.addComponent({name:n,export:n,filePath:"@strands.gg/accui"});s.hook("prepare:types",n=>{n.references.push({types:"@strands.gg/auth-nuxt-v4"}),n.declarations.push(`
2
+ declare global {
3
+ const useStrandsAuth: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useStrandsAuth']
4
+ const useAuthUser: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useAuthUser']
5
+ const useAuthState: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useAuthState']
6
+ }
7
+ `)})}});module.exports=c;
2
8
  //# sourceMappingURL=module.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.cjs.js","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\nexport interface StrandsAuthConfig {\n /**\n * Base URL for the Strands Auth API\n * @default 'https://your-api.example.com'\n */\n baseUrl?: string\n\n /**\n * Client ID for authentication\n */\n clientId?: string\n\n /**\n * Primary accent color for the auth components\n * @default '#EA00A8'\n */\n accentColor?: string\n\n /**\n * Default redirect URL after successful authentication\n * @default '/'\n */\n redirectUrl?: string\n\n /**\n * URL to redirect to after successful sign in\n * @default '/dashboard'\n */\n onSignInUrl?: string\n\n /**\n * URL to redirect to after successful sign out\n * @default '/'\n */\n onSignOutUrl?: string\n\n /**\n * Enable automatic token refresh\n * @default true\n */\n autoRefresh?: boolean\n\n /**\n * Token refresh interval in minutes\n * @default 4\n */\n refreshInterval?: number\n\n /**\n * Pages that should redirect to sign in if user is not authenticated\n * @default []\n */\n protectedRoutes?: string[]\n\n /**\n * Pages that should redirect away if user IS authenticated\n * @default ['/auth', '/login', '/register']\n */\n guestOnlyRoutes?: string[]\n\n /**\n * Enable development mode (shows debug info)\n * @default false\n */\n devMode?: boolean\n\n /**\n * Automatically import CSS styles\n * Set to false if you want to manually import styles or use custom styling\n * @default true\n */\n styles?: boolean\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt-v4',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^4.0.0'\n }\n },\n defaults: {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true\n },\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Ensure we have required configuration\n if (!options.clientId && !options.devMode) {\n console.warn('⚠️ Strands Auth: clientId is required for production use')\n }\n\n // Add runtime config with proper typing for Nuxt v4\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n const runtimeConfig = {\n baseUrl: options.baseUrl,\n clientId: options.clientId,\n accentColor: options.accentColor,\n redirectUrl: options.redirectUrl,\n onSignInUrl: options.onSignInUrl,\n onSignOutUrl: options.onSignOutUrl,\n autoRefresh: options.autoRefresh,\n refreshInterval: options.refreshInterval,\n protectedRoutes: options.protectedRoutes,\n guestOnlyRoutes: options.guestOnlyRoutes,\n devMode: options.devMode,\n styles: options.styles !== false // Default to true, allow disabling\n }\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = runtimeConfig\n \n // Also add it to app config for immediate access\n ;(nuxt.options.appConfig as any).strandsAuth = runtimeConfig\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n }\n\n // Add the main plugin with highest priority to ensure config is set early\n addPlugin({\n src: resolver.resolve('./runtime/plugin.client.es.js'),\n mode: 'client'\n })\n\n // Add server plugin for SSR support \n addPlugin({\n src: resolver.resolve('./runtime/plugin.server.es.js'),\n mode: 'server'\n })\n\n // Add middleware for route protection (updated for Nuxt v4)\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve('./runtime/middleware/auth.global.es.js'),\n global: true\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations (updated for Nuxt v4)\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt-v4'\n })\n })\n }\n})\n"],"names":["module$1","defineNuxtModule","options","nuxt","resolver","createResolver","runtimeConfig","addPlugin","addRouteMiddleware","addImports","components","component","addComponent","opts"],"mappings":"gGA4EA,MAAAA,EAAeC,mBAAoC,CACjD,KAAM,CACJ,KAAM,4BACN,UAAW,cACX,cAAe,CACb,KAAM,QAAA,CACR,EAEF,SAAU,CACR,QAAS,+BACT,YAAa,UACb,YAAa,IACb,YAAa,aACb,aAAc,IACd,YAAa,GACb,gBAAiB,EACjB,gBAAiB,CAAA,EACjB,gBAAiB,CAAC,QAAS,SAAU,WAAW,EAChD,QAAS,GACT,OAAQ,EAAA,EAEV,MAAM,MAAMC,EAASC,EAAM,CACzB,MAAMC,EAAWC,EAAAA,qLAA8B,EAG3C,CAACH,EAAQ,UAAY,CAACA,EAAQ,SAChC,QAAQ,KAAK,2DAA2D,EAI1EC,EAAK,QAAQ,cAAc,OAASA,EAAK,QAAQ,cAAc,QAAU,CAAA,EACzE,MAAMG,EAAgB,CACpB,QAASJ,EAAQ,QACjB,SAAUA,EAAQ,SAClB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,YACrB,aAAcA,EAAQ,aACtB,YAAaA,EAAQ,YACrB,gBAAiBA,EAAQ,gBACzB,gBAAiBA,EAAQ,gBACzB,gBAAiBA,EAAQ,gBACzB,QAASA,EAAQ,QACjB,OAAQA,EAAQ,SAAW,EAAA,EAE3BC,EAAK,QAAQ,cAAc,OAAe,YAAcG,EAGxDH,EAAK,QAAQ,UAAkB,YAAcG,EAG3CJ,EAAQ,SAAW,IACrBC,EAAK,QAAQ,IAAI,KAAK,6BAA6B,EAIrDI,YAAU,CACR,IAAKH,EAAS,QAAQ,+BAA+B,EACrD,KAAM,QAAA,CACP,EAGDG,YAAU,CACR,IAAKH,EAAS,QAAQ,+BAA+B,EACrD,KAAM,QAAA,CACP,EAGDI,qBAAmB,CACjB,KAAM,OACN,KAAMJ,EAAS,QAAQ,wCAAwC,EAC/D,OAAQ,EAAA,CACT,EAGDK,aAAW,CACT,CACE,KAAM,iBACN,GAAI,iBACJ,KAAML,EAAS,QAAQ,4CAA4C,CAAA,EAErE,CACE,KAAM,cACN,GAAI,cACJ,KAAMA,EAAS,QAAQ,4CAA4C,CAAA,EAErE,CACE,KAAM,eACN,GAAI,eACJ,KAAMA,EAAS,QAAQ,4CAA4C,CAAA,CACrE,CACD,EAGD,MAAMM,EAAa,CACjB,cACA,gBACA,gBACA,wBACA,qBACA,uBACA,kBACA,wBACA,WACA,YACA,cACA,sBAAA,EAGF,UAAWC,KAAaD,EACtBE,eAAa,CACX,KAAMD,EACN,OAAQA,EACR,SAAU,mBAAA,CACX,EAIHR,EAAK,KAAK,gBAAkBU,GAAS,CACnCA,EAAK,WAAW,KAAK,CACnB,MAAO,0BAAA,CACR,CACH,CAAC,CACH,CACF,CAAC"}
1
+ {"version":3,"file":"module.cjs.js","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\nexport interface StrandsAuthConfig {\n /**\n * Base URL for the Strands Auth API\n * @default 'https://your-api.example.com'\n */\n baseUrl?: string\n\n /**\n * Client ID for authentication\n */\n clientId?: string\n\n /**\n * Primary accent color for the auth components\n * @default '#EA00A8'\n */\n accentColor?: string\n\n /**\n * Default redirect URL after successful authentication\n * @default '/'\n */\n redirectUrl?: string\n\n /**\n * URL to redirect to after successful sign in\n * @default '/dashboard'\n */\n onSignInUrl?: string\n\n /**\n * URL to redirect to after successful sign out\n * @default '/'\n */\n onSignOutUrl?: string\n\n /**\n * Enable automatic token refresh\n * @default true\n */\n autoRefresh?: boolean\n\n /**\n * Token refresh interval in minutes\n * @default 4\n */\n refreshInterval?: number\n\n /**\n * Pages that should redirect to sign in if user is not authenticated\n * @default []\n */\n protectedRoutes?: string[]\n\n /**\n * Pages that should redirect away if user IS authenticated\n * @default ['/auth', '/login', '/register']\n */\n guestOnlyRoutes?: string[]\n\n /**\n * Enable development mode (shows debug info)\n * @default false\n */\n devMode?: boolean\n\n /**\n * Support email address for contact links\n * @optional\n */\n supportEmail?: string\n\n /**\n * Automatically import CSS styles\n * Set to false if you want to manually import styles or use custom styling\n * @default true\n */\n styles?: boolean\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt-v4',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^4.0.0'\n }\n },\n defaults: {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true\n },\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Ensure we have required configuration\n if (!options.clientId && !options.devMode) {\n console.warn('⚠️ Strands Auth: clientId is required for production use')\n }\n\n // Add runtime config with proper typing for Nuxt v4\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n const runtimeConfig = {\n baseUrl: options.baseUrl,\n clientId: options.clientId,\n accentColor: options.accentColor,\n redirectUrl: options.redirectUrl,\n onSignInUrl: options.onSignInUrl,\n onSignOutUrl: options.onSignOutUrl,\n autoRefresh: options.autoRefresh,\n refreshInterval: options.refreshInterval,\n protectedRoutes: options.protectedRoutes,\n guestOnlyRoutes: options.guestOnlyRoutes,\n devMode: options.devMode,\n styles: options.styles !== false, // Default to true, allow disabling\n supportEmail: options.supportEmail\n }\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = runtimeConfig\n \n // Also add it to app config for immediate access\n ;(nuxt.options.appConfig as any).strandsAuth = runtimeConfig\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n }\n\n // Plugin and middleware paths - use TypeScript source files for monorepo development\n const clientPluginPath = resolver.resolve('./runtime/plugin.client.ts')\n const serverPluginPath = resolver.resolve('./runtime/plugin.server.ts') \n const middlewarePath = resolver.resolve('./runtime/middleware/auth.global.ts')\n\n // Add the main plugin with highest priority to ensure config is set early\n addPlugin({\n src: clientPluginPath,\n mode: 'client'\n })\n\n // Add server plugin for SSR support \n addPlugin({\n src: serverPluginPath,\n mode: 'server'\n })\n\n // Add middleware for route protection (updated for Nuxt v4)\n addRouteMiddleware({\n name: 'auth',\n path: middlewarePath,\n global: true\n })\n\n // Auto-import composables - use relative path to TypeScript source for better type resolution\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations (updated for Nuxt v4)\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt-v4'\n })\n \n // Add the composables to the auto-imports types\n opts.declarations.push(`\n declare global {\n const useStrandsAuth: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useStrandsAuth']\n const useAuthUser: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useAuthUser']\n const useAuthState: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useAuthState']\n }\n `)\n })\n }\n})\n"],"names":["module$1","defineNuxtModule","options","nuxt","resolver","createResolver","runtimeConfig","clientPluginPath","serverPluginPath","middlewarePath","addPlugin","addRouteMiddleware","addImports","components","component","addComponent","opts"],"mappings":"gGAkFA,MAAAA,EAAeC,mBAAoC,CACjD,KAAM,CACJ,KAAM,4BACN,UAAW,cACX,cAAe,CACb,KAAM,QAAA,CACR,EAEF,SAAU,CACR,QAAS,+BACT,YAAa,UACb,YAAa,IACb,YAAa,aACb,aAAc,IACd,YAAa,GACb,gBAAiB,EACjB,gBAAiB,CAAA,EACjB,gBAAiB,CAAC,QAAS,SAAU,WAAW,EAChD,QAAS,GACT,OAAQ,EAAA,EAEV,MAAM,MAAMC,EAASC,EAAM,CACzB,MAAMC,EAAWC,EAAAA,qLAA8B,EAG3C,CAACH,EAAQ,UAAY,CAACA,EAAQ,SAChC,QAAQ,KAAK,2DAA2D,EAI1EC,EAAK,QAAQ,cAAc,OAASA,EAAK,QAAQ,cAAc,QAAU,CAAA,EACzE,MAAMG,EAAgB,CACpB,QAASJ,EAAQ,QACjB,SAAUA,EAAQ,SAClB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,YACrB,YAAaA,EAAQ,YACrB,aAAcA,EAAQ,aACtB,YAAaA,EAAQ,YACrB,gBAAiBA,EAAQ,gBACzB,gBAAiBA,EAAQ,gBACzB,gBAAiBA,EAAQ,gBACzB,QAASA,EAAQ,QACjB,OAAQA,EAAQ,SAAW,GAC3B,aAAcA,EAAQ,YAAA,EAEtBC,EAAK,QAAQ,cAAc,OAAe,YAAcG,EAGxDH,EAAK,QAAQ,UAAkB,YAAcG,EAG3CJ,EAAQ,SAAW,IACrBC,EAAK,QAAQ,IAAI,KAAK,6BAA6B,EAIrD,MAAMI,EAAmBH,EAAS,QAAQ,4BAA4B,EAChEI,EAAmBJ,EAAS,QAAQ,4BAA4B,EAChEK,EAAiBL,EAAS,QAAQ,qCAAqC,EAG7EM,YAAU,CACR,IAAKH,EACL,KAAM,QAAA,CACP,EAGDG,YAAU,CACR,IAAKF,EACL,KAAM,QAAA,CACP,EAGDG,qBAAmB,CACjB,KAAM,OACN,KAAMF,EACN,OAAQ,EAAA,CACT,EAGDG,aAAW,CACT,CACE,KAAM,iBACN,GAAI,iBACJ,KAAMR,EAAS,QAAQ,sCAAsC,CAAA,EAE/D,CACE,KAAM,cACN,GAAI,cACJ,KAAMA,EAAS,QAAQ,sCAAsC,CAAA,EAE/D,CACE,KAAM,eACN,GAAI,eACJ,KAAMA,EAAS,QAAQ,sCAAsC,CAAA,CAC/D,CACD,EAGD,MAAMS,EAAa,CACjB,cACA,gBACA,gBACA,wBACA,qBACA,uBACA,kBACA,wBACA,WACA,YACA,cACA,sBAAA,EAGF,UAAWC,KAAaD,EACtBE,eAAa,CACX,KAAMD,EACN,OAAQA,EACR,SAAU,mBAAA,CACX,EAIHX,EAAK,KAAK,gBAAkBa,GAAS,CACnCA,EAAK,WAAW,KAAK,CACnB,MAAO,0BAAA,CACR,EAGDA,EAAK,aAAa,KAAK;AAAA;AAAA,iDAEoBZ,EAAS,QAAQ,sCAAsC,CAAC;AAAA,8CAC3DA,EAAS,QAAQ,sCAAsC,CAAC;AAAA,+CACvDA,EAAS,QAAQ,sCAAsC,CAAC;AAAA;AAAA,OAEhG,CACH,CAAC,CACH,CACF,CAAC"}
@@ -53,6 +53,11 @@ export interface StrandsAuthConfig {
53
53
  * @default false
54
54
  */
55
55
  devMode?: boolean;
56
+ /**
57
+ * Support email address for contact links
58
+ * @optional
59
+ */
60
+ supportEmail?: string;
56
61
  /**
57
62
  * Automatically import CSS styles
58
63
  * Set to false if you want to manually import styles or use custom styling
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;;AAED,wBA4HE"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAE1B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IAEjB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;;AAED,wBA2IE"}
@@ -1,5 +1,5 @@
1
- import { defineNuxtModule as u, createResolver as l, addPlugin as a, addRouteMiddleware as d, addImports as i, addComponent as c } from "@nuxt/kit";
2
- const g = u({
1
+ import { defineNuxtModule as i, createResolver as c, addPlugin as a, addRouteMiddleware as m, addImports as h, addComponent as p } from "@nuxt/kit";
2
+ const S = i({
3
3
  meta: {
4
4
  name: "@strands.gg/accui/nuxt-v4",
5
5
  configKey: "strandsAuth",
@@ -21,7 +21,7 @@ const g = u({
21
21
  styles: !0
22
22
  },
23
23
  async setup(e, s) {
24
- const t = l(import.meta.url);
24
+ const t = c(import.meta.url);
25
25
  !e.clientId && !e.devMode && console.warn("⚠️ Strands Auth: clientId is required for production use"), s.options.runtimeConfig.public = s.options.runtimeConfig.public || {};
26
26
  const n = {
27
27
  baseUrl: e.baseUrl,
@@ -35,37 +35,40 @@ const g = u({
35
35
  protectedRoutes: e.protectedRoutes,
36
36
  guestOnlyRoutes: e.guestOnlyRoutes,
37
37
  devMode: e.devMode,
38
- styles: e.styles !== !1
38
+ styles: e.styles !== !1,
39
39
  // Default to true, allow disabling
40
+ supportEmail: e.supportEmail
40
41
  };
41
- s.options.runtimeConfig.public.strandsAuth = n, s.options.appConfig.strandsAuth = n, e.styles !== !1 && s.options.css.push("@strands.gg/accui/style.css"), a({
42
- src: t.resolve("./runtime/plugin.client.es.js"),
42
+ s.options.runtimeConfig.public.strandsAuth = n, s.options.appConfig.strandsAuth = n, e.styles !== !1 && s.options.css.push("@strands.gg/accui/style.css");
43
+ const u = t.resolve("./runtime/plugin.client.ts"), o = t.resolve("./runtime/plugin.server.ts"), l = t.resolve("./runtime/middleware/auth.global.ts");
44
+ a({
45
+ src: u,
43
46
  mode: "client"
44
47
  }), a({
45
- src: t.resolve("./runtime/plugin.server.es.js"),
48
+ src: o,
46
49
  mode: "server"
47
- }), d({
50
+ }), m({
48
51
  name: "auth",
49
- path: t.resolve("./runtime/middleware/auth.global.es.js"),
52
+ path: l,
50
53
  global: !0
51
- }), i([
54
+ }), h([
52
55
  {
53
56
  name: "useStrandsAuth",
54
57
  as: "useStrandsAuth",
55
- from: t.resolve("./runtime/composables/useStrandsAuth.es.js")
58
+ from: t.resolve("./runtime/composables/useStrandsAuth")
56
59
  },
57
60
  {
58
61
  name: "useAuthUser",
59
62
  as: "useAuthUser",
60
- from: t.resolve("./runtime/composables/useStrandsAuth.es.js")
63
+ from: t.resolve("./runtime/composables/useStrandsAuth")
61
64
  },
62
65
  {
63
66
  name: "useAuthState",
64
67
  as: "useAuthState",
65
- from: t.resolve("./runtime/composables/useStrandsAuth.es.js")
68
+ from: t.resolve("./runtime/composables/useStrandsAuth")
66
69
  }
67
70
  ]);
68
- const o = [
71
+ const d = [
69
72
  "StrandsAuth",
70
73
  "StrandsSignIn",
71
74
  "StrandsSignUp",
@@ -79,8 +82,8 @@ const g = u({
79
82
  "StrandsLogo",
80
83
  "StrandsSecuredFooter"
81
84
  ];
82
- for (const r of o)
83
- c({
85
+ for (const r of d)
86
+ p({
84
87
  name: r,
85
88
  export: r,
86
89
  filePath: "@strands.gg/accui"
@@ -88,11 +91,17 @@ const g = u({
88
91
  s.hook("prepare:types", (r) => {
89
92
  r.references.push({
90
93
  types: "@strands.gg/auth-nuxt-v4"
91
- });
94
+ }), r.declarations.push(`
95
+ declare global {
96
+ const useStrandsAuth: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useStrandsAuth']
97
+ const useAuthUser: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useAuthUser']
98
+ const useAuthState: typeof import('${t.resolve("./runtime/composables/useStrandsAuth")}')['useAuthState']
99
+ }
100
+ `);
92
101
  });
93
102
  }
94
103
  });
95
104
  export {
96
- g as default
105
+ S as default
97
106
  };
98
107
  //# sourceMappingURL=module.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.es.js","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\nexport interface StrandsAuthConfig {\n /**\n * Base URL for the Strands Auth API\n * @default 'https://your-api.example.com'\n */\n baseUrl?: string\n\n /**\n * Client ID for authentication\n */\n clientId?: string\n\n /**\n * Primary accent color for the auth components\n * @default '#EA00A8'\n */\n accentColor?: string\n\n /**\n * Default redirect URL after successful authentication\n * @default '/'\n */\n redirectUrl?: string\n\n /**\n * URL to redirect to after successful sign in\n * @default '/dashboard'\n */\n onSignInUrl?: string\n\n /**\n * URL to redirect to after successful sign out\n * @default '/'\n */\n onSignOutUrl?: string\n\n /**\n * Enable automatic token refresh\n * @default true\n */\n autoRefresh?: boolean\n\n /**\n * Token refresh interval in minutes\n * @default 4\n */\n refreshInterval?: number\n\n /**\n * Pages that should redirect to sign in if user is not authenticated\n * @default []\n */\n protectedRoutes?: string[]\n\n /**\n * Pages that should redirect away if user IS authenticated\n * @default ['/auth', '/login', '/register']\n */\n guestOnlyRoutes?: string[]\n\n /**\n * Enable development mode (shows debug info)\n * @default false\n */\n devMode?: boolean\n\n /**\n * Automatically import CSS styles\n * Set to false if you want to manually import styles or use custom styling\n * @default true\n */\n styles?: boolean\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt-v4',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^4.0.0'\n }\n },\n defaults: {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true\n },\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Ensure we have required configuration\n if (!options.clientId && !options.devMode) {\n console.warn('⚠️ Strands Auth: clientId is required for production use')\n }\n\n // Add runtime config with proper typing for Nuxt v4\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n const runtimeConfig = {\n baseUrl: options.baseUrl,\n clientId: options.clientId,\n accentColor: options.accentColor,\n redirectUrl: options.redirectUrl,\n onSignInUrl: options.onSignInUrl,\n onSignOutUrl: options.onSignOutUrl,\n autoRefresh: options.autoRefresh,\n refreshInterval: options.refreshInterval,\n protectedRoutes: options.protectedRoutes,\n guestOnlyRoutes: options.guestOnlyRoutes,\n devMode: options.devMode,\n styles: options.styles !== false // Default to true, allow disabling\n }\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = runtimeConfig\n \n // Also add it to app config for immediate access\n ;(nuxt.options.appConfig as any).strandsAuth = runtimeConfig\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n }\n\n // Add the main plugin with highest priority to ensure config is set early\n addPlugin({\n src: resolver.resolve('./runtime/plugin.client.es.js'),\n mode: 'client'\n })\n\n // Add server plugin for SSR support \n addPlugin({\n src: resolver.resolve('./runtime/plugin.server.es.js'),\n mode: 'server'\n })\n\n // Add middleware for route protection (updated for Nuxt v4)\n addRouteMiddleware({\n name: 'auth',\n path: resolver.resolve('./runtime/middleware/auth.global.es.js'),\n global: true\n })\n\n // Auto-import composables\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve('./runtime/composables/useStrandsAuth.es.js')\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations (updated for Nuxt v4)\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt-v4'\n })\n })\n }\n})\n"],"names":["module","defineNuxtModule","options","nuxt","resolver","createResolver","runtimeConfig","addPlugin","addRouteMiddleware","addImports","components","component","addComponent","opts"],"mappings":";AA4EA,MAAAA,IAAeC,EAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,iBAAiB,CAAA;AAAA,IACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,IAChD,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAAA,EAEV,MAAM,MAAMC,GAASC,GAAM;AACzB,UAAMC,IAAWC,EAAe,YAAY,GAAG;AAG/C,IAAI,CAACH,EAAQ,YAAY,CAACA,EAAQ,WAChC,QAAQ,KAAK,2DAA2D,GAI1EC,EAAK,QAAQ,cAAc,SAASA,EAAK,QAAQ,cAAc,UAAU,CAAA;AACzE,UAAMG,IAAgB;AAAA,MACpB,SAASJ,EAAQ;AAAA,MACjB,UAAUA,EAAQ;AAAA,MAClB,aAAaA,EAAQ;AAAA,MACrB,aAAaA,EAAQ;AAAA,MACrB,aAAaA,EAAQ;AAAA,MACrB,cAAcA,EAAQ;AAAA,MACtB,aAAaA,EAAQ;AAAA,MACrB,iBAAiBA,EAAQ;AAAA,MACzB,iBAAiBA,EAAQ;AAAA,MACzB,iBAAiBA,EAAQ;AAAA,MACzB,SAASA,EAAQ;AAAA,MACjB,QAAQA,EAAQ,WAAW;AAAA;AAAA,IAAA;AAE3B,IAAAC,EAAK,QAAQ,cAAc,OAAe,cAAcG,GAGxDH,EAAK,QAAQ,UAAkB,cAAcG,GAG3CJ,EAAQ,WAAW,MACrBC,EAAK,QAAQ,IAAI,KAAK,6BAA6B,GAIrDI,EAAU;AAAA,MACR,KAAKH,EAAS,QAAQ,+BAA+B;AAAA,MACrD,MAAM;AAAA,IAAA,CACP,GAGDG,EAAU;AAAA,MACR,KAAKH,EAAS,QAAQ,+BAA+B;AAAA,MACrD,MAAM;AAAA,IAAA,CACP,GAGDI,EAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAMJ,EAAS,QAAQ,wCAAwC;AAAA,MAC/D,QAAQ;AAAA,IAAA,CACT,GAGDK,EAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAML,EAAS,QAAQ,4CAA4C;AAAA,MAAA;AAAA,MAErE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAMA,EAAS,QAAQ,4CAA4C;AAAA,MAAA;AAAA,MAErE;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAMA,EAAS,QAAQ,4CAA4C;AAAA,MAAA;AAAA,IACrE,CACD;AAGD,UAAMM,IAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAWC,KAAaD;AACtB,MAAAE,EAAa;AAAA,QACX,MAAMD;AAAA,QACN,QAAQA;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAIH,IAAAR,EAAK,KAAK,iBAAiB,CAACU,MAAS;AACnC,MAAAA,EAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;"}
1
+ {"version":3,"file":"module.es.js","sources":["../../../../apps/accounts-ui/src/nuxt-v4/module.ts"],"sourcesContent":["import { defineNuxtModule, addPlugin, createResolver, addImports, addComponent, addRouteMiddleware } from '@nuxt/kit'\n\nexport interface StrandsAuthConfig {\n /**\n * Base URL for the Strands Auth API\n * @default 'https://your-api.example.com'\n */\n baseUrl?: string\n\n /**\n * Client ID for authentication\n */\n clientId?: string\n\n /**\n * Primary accent color for the auth components\n * @default '#EA00A8'\n */\n accentColor?: string\n\n /**\n * Default redirect URL after successful authentication\n * @default '/'\n */\n redirectUrl?: string\n\n /**\n * URL to redirect to after successful sign in\n * @default '/dashboard'\n */\n onSignInUrl?: string\n\n /**\n * URL to redirect to after successful sign out\n * @default '/'\n */\n onSignOutUrl?: string\n\n /**\n * Enable automatic token refresh\n * @default true\n */\n autoRefresh?: boolean\n\n /**\n * Token refresh interval in minutes\n * @default 4\n */\n refreshInterval?: number\n\n /**\n * Pages that should redirect to sign in if user is not authenticated\n * @default []\n */\n protectedRoutes?: string[]\n\n /**\n * Pages that should redirect away if user IS authenticated\n * @default ['/auth', '/login', '/register']\n */\n guestOnlyRoutes?: string[]\n\n /**\n * Enable development mode (shows debug info)\n * @default false\n */\n devMode?: boolean\n\n /**\n * Support email address for contact links\n * @optional\n */\n supportEmail?: string\n\n /**\n * Automatically import CSS styles\n * Set to false if you want to manually import styles or use custom styling\n * @default true\n */\n styles?: boolean\n}\n\nexport default defineNuxtModule<StrandsAuthConfig>({\n meta: {\n name: '@strands.gg/accui/nuxt-v4',\n configKey: 'strandsAuth',\n compatibility: {\n nuxt: '^4.0.0'\n }\n },\n defaults: {\n baseUrl: 'https://your-api.example.com',\n accentColor: '#EA00A8',\n redirectUrl: '/',\n onSignInUrl: '/dashboard',\n onSignOutUrl: '/',\n autoRefresh: true,\n refreshInterval: 4,\n protectedRoutes: [],\n guestOnlyRoutes: ['/auth', '/login', '/register'],\n devMode: false,\n styles: true\n },\n async setup(options, nuxt) {\n const resolver = createResolver(import.meta.url)\n\n // Ensure we have required configuration\n if (!options.clientId && !options.devMode) {\n console.warn('⚠️ Strands Auth: clientId is required for production use')\n }\n\n // Add runtime config with proper typing for Nuxt v4\n nuxt.options.runtimeConfig.public = nuxt.options.runtimeConfig.public || {}\n const runtimeConfig = {\n baseUrl: options.baseUrl,\n clientId: options.clientId,\n accentColor: options.accentColor,\n redirectUrl: options.redirectUrl,\n onSignInUrl: options.onSignInUrl,\n onSignOutUrl: options.onSignOutUrl,\n autoRefresh: options.autoRefresh,\n refreshInterval: options.refreshInterval,\n protectedRoutes: options.protectedRoutes,\n guestOnlyRoutes: options.guestOnlyRoutes,\n devMode: options.devMode,\n styles: options.styles !== false, // Default to true, allow disabling\n supportEmail: options.supportEmail\n }\n ;(nuxt.options.runtimeConfig.public as any).strandsAuth = runtimeConfig\n \n // Also add it to app config for immediate access\n ;(nuxt.options.appConfig as any).strandsAuth = runtimeConfig\n\n // Conditionally add CSS for styling based on autoImportStyles setting\n if (options.styles !== false) {\n nuxt.options.css.push('@strands.gg/accui/style.css')\n }\n\n // Plugin and middleware paths - use TypeScript source files for monorepo development\n const clientPluginPath = resolver.resolve('./runtime/plugin.client.ts')\n const serverPluginPath = resolver.resolve('./runtime/plugin.server.ts') \n const middlewarePath = resolver.resolve('./runtime/middleware/auth.global.ts')\n\n // Add the main plugin with highest priority to ensure config is set early\n addPlugin({\n src: clientPluginPath,\n mode: 'client'\n })\n\n // Add server plugin for SSR support \n addPlugin({\n src: serverPluginPath,\n mode: 'server'\n })\n\n // Add middleware for route protection (updated for Nuxt v4)\n addRouteMiddleware({\n name: 'auth',\n path: middlewarePath,\n global: true\n })\n\n // Auto-import composables - use relative path to TypeScript source for better type resolution\n addImports([\n {\n name: 'useStrandsAuth',\n as: 'useStrandsAuth',\n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n },\n {\n name: 'useAuthUser',\n as: 'useAuthUser', \n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n },\n {\n name: 'useAuthState',\n as: 'useAuthState',\n from: resolver.resolve('./runtime/composables/useStrandsAuth')\n }\n ])\n\n // Auto-register components from the main bundle export\n const components = [\n 'StrandsAuth',\n 'StrandsSignIn', \n 'StrandsSignUp',\n 'StrandsCompleteSignUp',\n 'StrandsUserProfile',\n 'StrandsPasswordReset',\n 'StrandsMFASetup',\n 'StrandsConfigProvider',\n 'SignedIn',\n 'SignedOut',\n 'StrandsLogo',\n 'StrandsSecuredFooter'\n ]\n\n for (const component of components) {\n addComponent({\n name: component,\n export: component,\n filePath: '@strands.gg/accui'\n })\n }\n\n // Add type declarations (updated for Nuxt v4)\n nuxt.hook('prepare:types', (opts) => {\n opts.references.push({\n types: '@strands.gg/auth-nuxt-v4'\n })\n \n // Add the composables to the auto-imports types\n opts.declarations.push(`\n declare global {\n const useStrandsAuth: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useStrandsAuth']\n const useAuthUser: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useAuthUser']\n const useAuthState: typeof import('${resolver.resolve('./runtime/composables/useStrandsAuth')}')['useAuthState']\n }\n `)\n })\n }\n})\n"],"names":["module","defineNuxtModule","options","nuxt","resolver","createResolver","runtimeConfig","clientPluginPath","serverPluginPath","middlewarePath","addPlugin","addRouteMiddleware","addImports","components","component","addComponent","opts"],"mappings":";AAkFA,MAAAA,IAAeC,EAAoC;AAAA,EACjD,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA,MACb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAEF,UAAU;AAAA,IACR,SAAS;AAAA,IACT,aAAa;AAAA,IACb,aAAa;AAAA,IACb,aAAa;AAAA,IACb,cAAc;AAAA,IACd,aAAa;AAAA,IACb,iBAAiB;AAAA,IACjB,iBAAiB,CAAA;AAAA,IACjB,iBAAiB,CAAC,SAAS,UAAU,WAAW;AAAA,IAChD,SAAS;AAAA,IACT,QAAQ;AAAA,EAAA;AAAA,EAEV,MAAM,MAAMC,GAASC,GAAM;AACzB,UAAMC,IAAWC,EAAe,YAAY,GAAG;AAG/C,IAAI,CAACH,EAAQ,YAAY,CAACA,EAAQ,WAChC,QAAQ,KAAK,2DAA2D,GAI1EC,EAAK,QAAQ,cAAc,SAASA,EAAK,QAAQ,cAAc,UAAU,CAAA;AACzE,UAAMG,IAAgB;AAAA,MACpB,SAASJ,EAAQ;AAAA,MACjB,UAAUA,EAAQ;AAAA,MAClB,aAAaA,EAAQ;AAAA,MACrB,aAAaA,EAAQ;AAAA,MACrB,aAAaA,EAAQ;AAAA,MACrB,cAAcA,EAAQ;AAAA,MACtB,aAAaA,EAAQ;AAAA,MACrB,iBAAiBA,EAAQ;AAAA,MACzB,iBAAiBA,EAAQ;AAAA,MACzB,iBAAiBA,EAAQ;AAAA,MACzB,SAASA,EAAQ;AAAA,MACjB,QAAQA,EAAQ,WAAW;AAAA;AAAA,MAC3B,cAAcA,EAAQ;AAAA,IAAA;AAEtB,IAAAC,EAAK,QAAQ,cAAc,OAAe,cAAcG,GAGxDH,EAAK,QAAQ,UAAkB,cAAcG,GAG3CJ,EAAQ,WAAW,MACrBC,EAAK,QAAQ,IAAI,KAAK,6BAA6B;AAIrD,UAAMI,IAAmBH,EAAS,QAAQ,4BAA4B,GAChEI,IAAmBJ,EAAS,QAAQ,4BAA4B,GAChEK,IAAiBL,EAAS,QAAQ,qCAAqC;AAG7E,IAAAM,EAAU;AAAA,MACR,KAAKH;AAAA,MACL,MAAM;AAAA,IAAA,CACP,GAGDG,EAAU;AAAA,MACR,KAAKF;AAAA,MACL,MAAM;AAAA,IAAA,CACP,GAGDG,EAAmB;AAAA,MACjB,MAAM;AAAA,MACN,MAAMF;AAAA,MACN,QAAQ;AAAA,IAAA,CACT,GAGDG,EAAW;AAAA,MACT;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAMR,EAAS,QAAQ,sCAAsC;AAAA,MAAA;AAAA,MAE/D;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAMA,EAAS,QAAQ,sCAAsC;AAAA,MAAA;AAAA,MAE/D;AAAA,QACE,MAAM;AAAA,QACN,IAAI;AAAA,QACJ,MAAMA,EAAS,QAAQ,sCAAsC;AAAA,MAAA;AAAA,IAC/D,CACD;AAGD,UAAMS,IAAa;AAAA,MACjB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IAAA;AAGF,eAAWC,KAAaD;AACtB,MAAAE,EAAa;AAAA,QACX,MAAMD;AAAA,QACN,QAAQA;AAAA,QACR,UAAU;AAAA,MAAA,CACX;AAIH,IAAAX,EAAK,KAAK,iBAAiB,CAACa,MAAS;AACnC,MAAAA,EAAK,WAAW,KAAK;AAAA,QACnB,OAAO;AAAA,MAAA,CACR,GAGDA,EAAK,aAAa,KAAK;AAAA;AAAA,iDAEoBZ,EAAS,QAAQ,sCAAsC,CAAC;AAAA,8CAC3DA,EAAS,QAAQ,sCAAsC,CAAC;AAAA,+CACvDA,EAAS,QAAQ,sCAAsC,CAAC;AAAA;AAAA,OAEhG;AAAA,IACH,CAAC;AAAA,EACH;AACF,CAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("nuxt/app"),u=require("../../../useStrandsAuth-sAfTQeGC.cjs"),a=()=>{const t=e.useRuntimeConfig().public.strandsAuth,n=u.useStrandsAuth();return{...n,initialize:async()=>{try{await n.initialize()}catch(s){console.warn("[Strands Auth v4] Initialize failed:",s)}},signIn:async s=>{const i=await n.signIn(s);return i&&t.onSignInUrl&&await e.navigateTo(t.onSignInUrl),i},signUp:async s=>await n.signUp({email:s.email,password:"",firstName:"",lastName:""}),signOut:async()=>{await n.signOut(),t.onSignOutUrl&&await e.navigateTo(t.onSignOutUrl)}}},r=()=>{const{user:t}=a();return t},o=()=>{const{isAuthenticated:t,isLoading:n}=a();return{isAuthenticated:t,isLoading:n}};exports.useAuthState=o;exports.useAuthUser=r;exports.useStrandsAuth=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("nuxt/app"),l=require("../../../useStrandsAuth-BGunGG2x.cjs"),r=()=>{const n=i.useRuntimeConfig().public.strandsAuth,t=l.useStrandsAuth(),a=async()=>{try{await t.initialize()}catch(e){console.warn("[Strands Auth v4] Initialize failed:",e)}},u=async e=>{const s=await t.signIn(e);return s&&n.onSignInUrl&&await i.navigateTo(n.onSignInUrl),s},o=async e=>await t.signUp({email:e.email,password:"",firstName:"",lastName:""}),c=async()=>{await t.signOut(),n.onSignOutUrl&&await i.navigateTo(n.onSignOutUrl)};return{user:t.user,currentUser:t.currentUser,currentSession:t.currentSession,isAuthenticated:t.isAuthenticated,isLoading:t.isLoading,loading:t.loading,signIn:u,signUp:o,signOut:c,refreshToken:t.refreshToken,updateProfile:t.updateProfile,setAuthData:t.setAuthData,initialize:a}},g=()=>{const{user:n}=r();return{user:n}},d=()=>{const{isAuthenticated:n,isLoading:t}=r();return{isAuthenticated:n,isLoading:t}};exports.useAuthState=d;exports.useAuthUser=g;exports.useStrandsAuth=r;
2
2
  //# sourceMappingURL=useStrandsAuth.cjs.js.map