@strands.gg/accui 2.1.5 → 2.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (173) hide show
  1. package/dist/index.d.ts +1 -6
  2. package/dist/js/auth-components-BJhPF4dS.js +8195 -0
  3. package/dist/js/auth-components-BJhPF4dS.js.br +0 -0
  4. package/dist/js/auth-components-BJhPF4dS.js.gz +0 -0
  5. package/dist/js/auth-components-CXT-W3fG.js +1 -0
  6. package/dist/js/auth-components-CXT-W3fG.js.br +0 -0
  7. package/dist/js/auth-components-CXT-W3fG.js.gz +0 -0
  8. package/dist/js/composables-BqIRpDGP.js +1609 -0
  9. package/dist/js/composables-BqIRpDGP.js.br +0 -0
  10. package/dist/js/composables-BqIRpDGP.js.gz +0 -0
  11. package/dist/js/composables-BqLSXNon.js +1 -0
  12. package/dist/js/composables-BqLSXNon.js.br +0 -0
  13. package/dist/js/composables-BqLSXNon.js.gz +0 -0
  14. package/dist/js/icons-CQ3z-CUv.js +398 -0
  15. package/dist/js/icons-CQ3z-CUv.js.br +0 -0
  16. package/dist/js/icons-CQ3z-CUv.js.gz +0 -0
  17. package/dist/js/icons-MGGFfB13.js +1 -0
  18. package/dist/js/index-87OecKtg.js +1 -0
  19. package/dist/js/index-B113vWue.js +106 -0
  20. package/dist/js/nuxt/module-BA8ZjBpp.js +1 -0
  21. package/dist/{nuxt/module.es.js → js/nuxt/module-YfdoaPCb.js} +2 -0
  22. package/dist/{nuxt/runtime/composables/useAuthenticatedFetch.es.js → js/nuxt/runtime/composables/useAuthenticatedFetch-DToDCO6a.js} +1 -1
  23. package/dist/js/nuxt/runtime/composables/useAuthenticatedFetch-qYkd06Dm.js +1 -0
  24. package/dist/{nuxt/runtime/composables/useStrandsAuth.es.js → js/nuxt/runtime/composables/useStrandsAuth-8b_bomlH.js} +1 -1
  25. package/dist/js/nuxt/runtime/composables/useStrandsAuth-Dn15YEQw.js +1 -0
  26. package/dist/{nuxt/runtime/middleware/auth.global.es.js → js/nuxt/runtime/middleware/auth.global-_2xq-SvK.js} +1 -1
  27. package/dist/js/nuxt/runtime/middleware/auth.global-dZpk-3-I.js +1 -0
  28. package/dist/js/nuxt/runtime/plugin.client-D7S6ulTg.js +1 -0
  29. package/dist/{nuxt/runtime/plugin.client.es.js → js/nuxt/runtime/plugin.client-KK_pCEfA.js} +2 -4
  30. package/dist/js/nuxt/runtime/plugin.server-BpSAN5Gh.js +1 -0
  31. package/dist/{nuxt/runtime/plugin.server.es.js → js/nuxt/runtime/plugin.server-CGdeJOoz.js} +1 -1
  32. package/dist/js/nuxt/runtime/plugins/auth-interceptor.client-BQu0eR16.js +1 -0
  33. package/dist/{nuxt/runtime/plugins/auth-interceptor.client.es.js → js/nuxt/runtime/plugins/auth-interceptor.client-DIa4pC59.js} +1 -1
  34. package/dist/js/nuxt-DqhAWeo-.js +1 -0
  35. package/dist/{nuxt.es.js → js/nuxt-MUpTW0D9.js} +3 -3
  36. package/dist/{nuxt-v4/module.es.js → js/nuxt-v4/module-CCvkwSrU.js} +2 -0
  37. package/dist/js/nuxt-v4/module-CDtxGAn8.js +1 -0
  38. package/dist/{nuxt-v4/runtime/composables/useAuthenticatedFetch.es.js → js/nuxt-v4/runtime/composables/useAuthenticatedFetch-I0BKB43E.js} +1 -1
  39. package/dist/js/nuxt-v4/runtime/composables/useAuthenticatedFetch-fAO6ieYd.js +1 -0
  40. package/dist/{nuxt-v4/runtime/composables/useStrandsAuth.es.js → js/nuxt-v4/runtime/composables/useStrandsAuth-BZe8CTx0.js} +1 -1
  41. package/dist/js/nuxt-v4/runtime/composables/useStrandsAuth-DPGVMZ-e.js +1 -0
  42. package/dist/js/nuxt-v4/runtime/middleware/auth.global-B0pyByUu.js +1 -0
  43. package/dist/{nuxt-v4/runtime/middleware/auth.global.es.js → js/nuxt-v4/runtime/middleware/auth.global-C_saJaMU.js} +1 -1
  44. package/dist/{nuxt-v4/runtime/plugin.client.es.js → js/nuxt-v4/runtime/plugin.client-CxLmYQfu.js} +2 -4
  45. package/dist/js/nuxt-v4/runtime/plugin.client-DGO53i-e.js +1 -0
  46. package/dist/{nuxt-v4/runtime/plugin.server.es.js → js/nuxt-v4/runtime/plugin.server-BM6HYyiZ.js} +1 -1
  47. package/dist/js/nuxt-v4/runtime/plugin.server-D_dUMHYo.js +1 -0
  48. package/dist/js/nuxt-v4/runtime/plugins/auth-interceptor.client-CUNOTFBp.js +1 -0
  49. package/dist/{nuxt-v4/runtime/plugins/auth-interceptor.client.es.js → js/nuxt-v4/runtime/plugins/auth-interceptor.client-Qht8QSLW.js} +1 -1
  50. package/dist/{nuxt-v4.es.js → js/nuxt-v4-C5JN4uyM.js} +3 -3
  51. package/dist/js/nuxt-v4-DuwGUuhX.js +1 -0
  52. package/dist/js/ui-components-BC1UK39i.js +5204 -0
  53. package/dist/js/ui-components-BC1UK39i.js.br +0 -0
  54. package/dist/js/ui-components-BC1UK39i.js.gz +0 -0
  55. package/dist/js/ui-components-CocLXkUI.js +1 -0
  56. package/dist/js/ui-components-CocLXkUI.js.br +0 -0
  57. package/dist/js/ui-components-CocLXkUI.js.gz +0 -0
  58. package/dist/js/utils-B9zcSW52.js +1 -0
  59. package/dist/js/utils-B9zcSW52.js.br +0 -0
  60. package/dist/js/utils-B9zcSW52.js.gz +0 -0
  61. package/dist/js/utils-BZHeJkZf.js +1080 -0
  62. package/dist/js/utils-BZHeJkZf.js.br +0 -0
  63. package/dist/js/utils-BZHeJkZf.js.gz +0 -0
  64. package/dist/nuxt/module.d.ts +1 -5
  65. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.d.ts +1 -20
  66. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +1 -142
  67. package/dist/nuxt/runtime/middleware/auth.global.d.ts +1 -3
  68. package/dist/nuxt/runtime/plugin.client.d.ts +1 -3
  69. package/dist/nuxt/runtime/plugin.server.d.ts +1 -3
  70. package/dist/nuxt/runtime/plugins/auth-interceptor.client.d.ts +1 -3
  71. package/dist/nuxt-v4/module.d.ts +1 -5
  72. package/dist/nuxt-v4/runtime/composables/useAuthenticatedFetch.d.ts +1 -20
  73. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.d.ts +1 -27
  74. package/dist/nuxt-v4/runtime/middleware/auth.global.d.ts +1 -3
  75. package/dist/nuxt-v4/runtime/plugin.client.d.ts +1 -3
  76. package/dist/nuxt-v4/runtime/plugin.server.d.ts +1 -3
  77. package/dist/nuxt-v4/runtime/plugins/auth-interceptor.client.d.ts +1 -3
  78. package/dist/nuxt-v4.d.ts +1 -4
  79. package/dist/nuxt.d.ts +1 -4
  80. package/dist/robots.txt +4 -0
  81. package/dist/sitemap.xml +9 -0
  82. package/dist/styles/accui-DF7zRGFD.css +1 -0
  83. package/dist/styles/accui-DF7zRGFD.css.br +0 -0
  84. package/dist/styles/accui-DF7zRGFD.css.gz +0 -0
  85. package/package.json +5 -1
  86. package/dist/accui.css +0 -1
  87. package/dist/nuxt/module.cjs.js +0 -1
  88. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.cjs.js +0 -1
  89. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +0 -1
  90. package/dist/nuxt/runtime/middleware/auth.d.ts +0 -7
  91. package/dist/nuxt/runtime/middleware/auth.global.cjs.js +0 -1
  92. package/dist/nuxt/runtime/middleware/guest.d.ts +0 -7
  93. package/dist/nuxt/runtime/plugin.client.cjs.js +0 -1
  94. package/dist/nuxt/runtime/plugin.server.cjs.js +0 -1
  95. package/dist/nuxt/runtime/plugins/auth-interceptor.client.cjs.js +0 -1
  96. package/dist/nuxt/types.d.ts +0 -45
  97. package/dist/nuxt-v4/module.cjs.js +0 -1
  98. package/dist/nuxt-v4/runtime/composables/useAuthenticatedFetch.cjs.js +0 -1
  99. package/dist/nuxt-v4/runtime/composables/useStrandsAuth.cjs.js +0 -1
  100. package/dist/nuxt-v4/runtime/middleware/auth.global.cjs.js +0 -1
  101. package/dist/nuxt-v4/runtime/plugin.client.cjs.js +0 -1
  102. package/dist/nuxt-v4/runtime/plugin.server.cjs.js +0 -1
  103. package/dist/nuxt-v4/runtime/plugins/auth-interceptor.client.cjs.js +0 -1
  104. package/dist/nuxt-v4/types.d.ts +0 -63
  105. package/dist/nuxt-v4.cjs.js +0 -1
  106. package/dist/nuxt.cjs.js +0 -1
  107. package/dist/shared/defaults.d.ts +0 -2
  108. package/dist/strands-auth-ui.cjs.js +0 -1
  109. package/dist/strands-auth-ui.es.js +0 -10561
  110. package/dist/types/index.d.ts +0 -236
  111. package/dist/useStrandsAuth-CTlaiFqK.cjs +0 -1
  112. package/dist/useStrandsAuth-Cev-PTun.js +0 -899
  113. package/dist/useStrandsConfig-Cxb360Os.js +0 -179
  114. package/dist/useStrandsConfig-Z9_36OcV.cjs +0 -1
  115. package/dist/utils/index.d.ts +0 -1
  116. package/dist/utils/slots.d.ts +0 -1
  117. package/dist/utils/validation.d.ts +0 -12
  118. package/dist/vue/components/SignedIn.vue.d.ts +0 -54
  119. package/dist/vue/components/SignedOut.vue.d.ts +0 -54
  120. package/dist/vue/components/StrandsAuth.vue.d.ts +0 -25
  121. package/dist/vue/components/StrandsBackupCodesModal.vue.d.ts +0 -12
  122. package/dist/vue/components/StrandsCompleteSignUp.vue.d.ts +0 -21
  123. package/dist/vue/components/StrandsConfigProvider.vue.d.ts +0 -22
  124. package/dist/vue/components/StrandsConfirmModal.vue.d.ts +0 -22
  125. package/dist/vue/components/StrandsEmailMfaSetupModal.vue.d.ts +0 -12
  126. package/dist/vue/components/StrandsHardwareKeySetupModal.vue.d.ts +0 -15
  127. package/dist/vue/components/StrandsLogo.vue.d.ts +0 -8
  128. package/dist/vue/components/StrandsMFASetup.vue.d.ts +0 -16
  129. package/dist/vue/components/StrandsMfaModal.vue.d.ts +0 -12
  130. package/dist/vue/components/StrandsMfaVerification.vue.d.ts +0 -17
  131. package/dist/vue/components/StrandsPasswordReset.vue.d.ts +0 -15
  132. package/dist/vue/components/StrandsSecuredFooter.vue.d.ts +0 -22
  133. package/dist/vue/components/StrandsSessionsModal.vue.d.ts +0 -14
  134. package/dist/vue/components/StrandsSettingsModal.vue.d.ts +0 -18
  135. package/dist/vue/components/StrandsSignIn.vue.d.ts +0 -21
  136. package/dist/vue/components/StrandsSignUp.vue.d.ts +0 -19
  137. package/dist/vue/components/StrandsTotpSetupModal.vue.d.ts +0 -12
  138. package/dist/vue/components/StrandsUserButton.vue.d.ts +0 -30
  139. package/dist/vue/components/StrandsUserProfile.vue.d.ts +0 -26
  140. package/dist/vue/components/SvgIcon.vue.d.ts +0 -17
  141. package/dist/vue/components/VirtualList.vue.d.ts +0 -37
  142. package/dist/vue/components/icons/IconGithub.vue.d.ts +0 -3
  143. package/dist/vue/components/icons/IconGoogle.vue.d.ts +0 -3
  144. package/dist/vue/components/icons/index.d.ts +0 -2
  145. package/dist/vue/components/index.d.ts +0 -26
  146. package/dist/vue/composables/useAuthenticatedFetch.d.ts +0 -20
  147. package/dist/vue/composables/useOAuthProviders.d.ts +0 -74
  148. package/dist/vue/composables/useStrandsAuth.d.ts +0 -130
  149. package/dist/vue/composables/useStrandsConfig.d.ts +0 -11
  150. package/dist/vue/composables/useStrandsMfa.d.ts +0 -38
  151. package/dist/vue/index.d.ts +0 -12
  152. package/dist/vue/plugins/StrandsUIPlugin.d.ts +0 -19
  153. package/dist/vue/ui/UiAlert.vue.d.ts +0 -31
  154. package/dist/vue/ui/UiAvatarEditor.vue.d.ts +0 -25
  155. package/dist/vue/ui/UiButton.vue.d.ts +0 -54
  156. package/dist/vue/ui/UiCard.vue.d.ts +0 -29
  157. package/dist/vue/ui/UiInput.vue.d.ts +0 -48
  158. package/dist/vue/ui/UiLevelProgress.vue.d.ts +0 -19
  159. package/dist/vue/ui/UiLink.vue.d.ts +0 -42
  160. package/dist/vue/ui/UiLoader.vue.d.ts +0 -15
  161. package/dist/vue/ui/UiModal.vue.d.ts +0 -33
  162. package/dist/vue/ui/UiTabs.vue.d.ts +0 -17
  163. package/dist/vue/ui/UiToggle.vue.d.ts +0 -15
  164. package/dist/vue/ui/index.d.ts +0 -29
  165. package/dist/vue/utils/contrast.d.ts +0 -79
  166. package/dist/vue/utils/debounce.d.ts +0 -12
  167. package/dist/vue/utils/fontPreloader.d.ts +0 -19
  168. package/dist/vue/utils/iconProps.d.ts +0 -9
  169. package/dist/vue/utils/lazyComponents.d.ts +0 -2
  170. package/dist/vue/utils/levels.d.ts +0 -27
  171. package/dist/vue/utils/performanceInit.d.ts +0 -40
  172. package/dist/vue/utils/requestCache.d.ts +0 -49
  173. package/dist/vue/utils/sounds.d.ts +0 -56
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),t=require("./utils-B9zcSW52.js"),a=e.ref("system"),n=e.ref(0),i="strands-ui-theme";function r(e){"undefined"!=typeof document&&(e?(document.documentElement.setAttribute("data-theme","dark"),document.documentElement.classList.add("dark")):(document.documentElement.setAttribute("data-theme","light"),document.documentElement.classList.remove("dark")))}let o=null;const s={baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignInUrl:"/dashboard",onSignOutUrl:"/",autoRefresh:1,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:0,styles:1,endpoints:{},useSquircle:1},c=Symbol("strands-config"),d=e.ref(null);function u(e){"undefined"!=typeof window&&document.documentElement&&(document.documentElement.style.setProperty("--strands-accent",e),document.documentElement.style.setProperty("--accui-strands-accent",e),document.documentElement.style.setProperty("--accui-strands-50",`color-mix(in srgb, ${e} 10%, white)`),document.documentElement.style.setProperty("--accui-strands-100",`color-mix(in srgb, ${e} 20%, white)`),document.documentElement.style.setProperty("--accui-strands-200",`color-mix(in srgb, ${e} 30%, white)`),document.documentElement.style.setProperty("--accui-strands-300",`color-mix(in srgb, ${e} 40%, white)`),document.documentElement.style.setProperty("--accui-strands-400",`color-mix(in srgb, ${e} 70%, white)`),document.documentElement.style.setProperty("--accui-strands-500",e),document.documentElement.style.setProperty("--accui-strands-600",`color-mix(in srgb, ${e} 85%, black)`),document.documentElement.style.setProperty("--accui-strands-700",`color-mix(in srgb, ${e} 70%, black)`),document.documentElement.style.setProperty("--accui-strands-800",`color-mix(in srgb, ${e} 55%, black)`),document.documentElement.style.setProperty("--accui-strands-900",`color-mix(in srgb, ${e} 40%, black)`),document.documentElement.style.setProperty("--accui-strands-950",`color-mix(in srgb, ${e} 25%, black)`))}function l(t){const a=e.inject(c,null);let n=null;try{if("undefined"!=typeof window)if(window.__STRANDS_CONFIG__)n=window.__STRANDS_CONFIG__;else if(window.__NUXT__){const e=window.__NUXT__;n=e?.config?.public?.strandsAuth||e?.public?.strandsAuth||e?.strandsAuth}}catch(o){}const i=e.computed(()=>{const e={...s,...t||{},...a||{},...d.value||{},...n||{}};if(e.baseUrl,"undefined"!=typeof window&&document.documentElement){const t=void 0!==e.useSquircle?e.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",t?"1":"0"),e.accentColor&&document.documentElement.style.setProperty("--strands-accent",e.accentColor)}return e}),r=e.computed(()=>{const e=i.value.endpoints||{};return{signIn:e.signIn||"/api/v1/auth/sign-in",signUp:e.signUp||"/api/v1/auth/sign-up",signOut:e.signOut||"/api/v1/auth/sign-out",refresh:e.refresh||"/api/v1/auth/refresh",passwordReset:e.passwordReset||"/api/v1/auth/password-reset",passwordResetConfirm:e.passwordResetConfirm||"/api/v1/auth/password-reset/confirm",completeRegistration:e.completeRegistration||"/api/v1/auth/complete-registration",profile:e.profile||"/api/v1/user/profile",verifyEmail:e.verifyEmail||"/api/v1/auth/verify-email",oauthProviders:e.oauthProviders||"/api/v1/oauth/providers",oauthProvider:e.oauthProvider||"/api/v1/oauth/providers/{provider_id}",changeEmail:e.changeEmail||"/api/v1/user/change-email",avatar:e.avatar||"/api/v1/user/avatar",settings:e.settings||"/api/v1/user/settings",changeUsername:e.changeUsername||"/api/v1/user/username",usernameCooldown:e.usernameCooldown||"/api/v1/user/username/cooldown",checkUsernameAvailability:e.checkUsernameAvailability||"/api/v1/username/{username}/available",mfaDevices:e.mfaDevices||"/api/v1/mfa/devices",mfaTotpSetup:e.mfaTotpSetup||"/api/v1/mfa/totp/setup",mfaTotpVerify:e.mfaTotpVerify||"/api/v1/mfa/totp/verify",mfaEmailSetup:e.mfaEmailSetup||"/api/v1/mfa/email/setup",mfaEmailSend:e.mfaEmailSend||"/api/v1/mfa/email/send",mfaEmailVerify:e.mfaEmailVerify||"/api/v1/mfa/email/verify",mfaDeviceDisable:e.mfaDeviceDisable||"/api/v1/mfa/device/disable",mfaBackupCodes:e.mfaBackupCodes||"/api/v1/mfa/backup-codes/regenerate",mfaHardwareStartRegistration:e.mfaHardwareStartRegistration||"/api/v1/mfa/hardware/start-registration",mfaHardwareCompleteRegistration:e.mfaHardwareCompleteRegistration||"/api/v1/mfa/hardware/complete-registration",mfaSigninSendEmail:e.mfaSigninSendEmail||"/api/v1/auth/mfa/email/send",mfaSigninVerify:e.mfaSigninVerify||"/api/v1/auth/mfa/verify",mfaBackupCodeVerify:e.mfaBackupCodeVerify||"/api/v1/auth/mfa/backup-code/verify",mfaWebAuthnChallenge:e.mfaWebAuthnChallenge||"/api/v1/auth/mfa/webauthn/challenge",sessions:e.sessions||"/api/v1/sessions",sessionsStats:e.sessionsStats||"/api/v1/sessions/stats",sessionRevoke:e.sessionRevoke||"/api/v1/sessions/{session_id}/revoke",sessionsRevokeAll:e.sessionsRevokeAll||"/api/v1/sessions/revoke-all"}});return{config:i,endpoints:r,getUrl:e=>{const t=i.value;if(!t.baseUrl)throw new Error("Base URL is required in configuration");let a;return a="string"==typeof e&&e in r.value?r.value[e]:"string"==typeof e?e:r.value[e],`${t.baseUrl.replace(/\/$/,"")}${a.startsWith("/")?a:`/${a}`}`},getSupportEmail:()=>i.value.supportEmail||null}}const y=e=>({id:e.id,email:e.email,firstName:e.first_name||e.firstName||"",lastName:e.last_name||e.lastName||"",avatar:e.avatar_url||e.avatar,mfaEnabled:e.mfa_enabled??e.mfaEnabled??0,emailVerified:e.email_verified??e.emailVerified??0,passwordUpdatedAt:e.password_updated_at||e.passwordUpdatedAt,settings:e.settings||{},xp:e.xp||0,level:e.level||1,next_level_xp:e.next_level_xp||e.next_level_xp||4,username:e.username,usernameLastChangedAt:e.username_last_changed_at||e.usernameLastChangedAt,createdAt:e.created_at||e.createdAt,updatedAt:e.updated_at||e.updatedAt||(new Date).toISOString()}),f={currentUser:e.ref(null),currentSession:e.ref(null),loadingStates:e.ref({initializing:1,signingIn:0,signingUp:0,signingOut:0,refreshingToken:0,sendingMfaEmail:0,verifyingMfa:0,loadingProfile:0}),isInitialized:e.ref(0),mfaRequired:e.ref(0),mfaSessionId:e.ref(null),availableMfaMethods:e.ref([])};let h=null,w=null;function M(){const{getUrl:a}=l(),{fetch:n,clear:i,invalidate:r}=t.useRequestCache(),{currentUser:o,currentSession:s,loadingStates:c,isInitialized:d,mfaRequired:u,mfaSessionId:M,availableMfaMethods:g}=f,m=e.computed(()=>c.value.initializing),p=e.computed(()=>c.value.signingIn),I=e.computed(()=>c.value.signingUp),S=e.computed(()=>c.value.signingOut),T=e.computed(()=>c.value.refreshingToken),N=e.computed(()=>c.value.sendingMfaEmail),j=e.computed(()=>c.value.verifyingMfa);e.computed(()=>c.value.loadingProfile);const D=e.computed(()=>c.value.signingIn||c.value.signingUp||c.value.signingOut||c.value.refreshingToken||c.value.sendingMfaEmail||c.value.verifyingMfa||c.value.loadingProfile),E=e.computed(()=>c.value.initializing||D.value),L=e.computed(()=>{const e=c.value;return e.initializing?"Checking authentication...":e.signingIn?"Signing you in...":e.signingUp?"Creating your account...":e.signingOut?"Signing you out...":e.refreshingToken?"Refreshing session...":e.sendingMfaEmail?"Sending verification code...":e.verifyingMfa?"Verifying code...":e.loadingProfile?"Loading profile...":"Loading..."}),A=()=>{const e={};return s.value?.accessToken&&(e.Authorization=`Bearer ${s.value.accessToken}`),s.value?.refreshToken&&(e["x-refresh-token"]=s.value.refreshToken),e},v=e.computed(()=>null!==o.value),O=async()=>{c.value.signingOut=1;try{C(),w=null,i(),o.value=null,s.value=null,u.value=0,M.value=null,g.value=[],"undefined"!=typeof window&&(localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user"))}finally{c.value.signingOut=0}},z=async()=>{if(!s.value?.refreshToken)return 0;if(w)return await w;w=(async()=>{c.value.refreshingToken=1;try{const e=await fetch(a("refresh"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({refresh_token:s.value.refreshToken})});if(!e.ok){if(401===e.status)return await O(),0;throw new Error(`Token refresh failed: ${e.status} ${e.statusText}`)}const t=await e.json();t.user&&(o.value=y(t.user),o.value&&"undefined"!=typeof window&&localStorage.setItem("strands_auth_user",JSON.stringify(o.value)));const n={accessToken:t.access_token,refreshToken:t.refresh_token,expiresAt:new Date(Date.now()+3e5),userId:t.user?.id||o.value?.id};return s.value=n,"undefined"!=typeof window&&localStorage.setItem("strands_auth_session",JSON.stringify(n)),b(),r(`sessions:${s.value.accessToken.slice(0,20)}`),1}catch(e){return await O(),0}finally{c.value.refreshingToken=0}})();const e=await w;return w=null,e},k=async e=>{try{e.user&&(o.value=y(e.user));const t={accessToken:e.access_token,refreshToken:e.refresh_token,expiresAt:new Date(Date.now()+3e5),userId:o.value?.id||e.user?.id};s.value=t,"undefined"!=typeof window&&(localStorage.setItem("strands_auth_session",JSON.stringify(t)),o.value&&localStorage.setItem("strands_auth_user",JSON.stringify(o.value))),b()}catch(t){}},b=()=>{if(h&&clearTimeout(h),!s.value)return;if("undefined"!=typeof document&&"hidden"===document.visibilityState)return;const e=new Date,t=s.value.expiresAt.getTime()-e.getTime()-6e4;t<=0?z():h=setTimeout(async()=>{"undefined"!=typeof document&&"visible"!==document.visibilityState||await z()&&b()},t)},C=()=>{h&&(clearTimeout(h),h=null)},x=async()=>{if(!d.value){c.value.initializing=1;try{if("undefined"!=typeof window){const t=localStorage.getItem("strands_auth_session"),a=localStorage.getItem("strands_auth_user");if(t&&a)try{const e=JSON.parse(t),n=JSON.parse(a);e.expiresAt=new Date(e.expiresAt),e.expiresAt>new Date?(s.value=e,o.value=n,b()):(localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user"))}catch(e){localStorage.removeItem("strands_auth_session"),localStorage.removeItem("strands_auth_user")}}d.value=1,await new Promise(e=>setTimeout(e,50))}catch(e){}finally{c.value.initializing=0}}};"undefined"!=typeof document&&document.addEventListener("visibilitychange",()=>{"visible"===document.visibilityState&&s.value?b():"hidden"===document.visibilityState&&C()});const P=()=>{C(),i(),"undefined"!=typeof document&&document.removeEventListener("visibilitychange",()=>{})};try{e.onUnmounted(P)}catch(_){}return d.value||x(),{user:e.computed(()=>o.value),currentUser:e.computed(()=>o.value),currentSession:e.computed(()=>s.value),isAuthenticated:v,isLoading:e.computed(()=>E.value||!d.value),loading:e.computed(()=>D.value),loadingMessage:L,isInitializing:m,isSigningIn:p,isSigningUp:I,isSigningOut:S,isRefreshingToken:T,isSendingMfaEmail:N,isVerifyingMfa:j,mfaRequired:e.computed(()=>u.value),mfaSessionId:e.computed(()=>M.value),availableMfaMethods:e.computed(()=>g.value),signIn:async e=>{c.value.signingIn=1;try{u.value=0,M.value=null,g.value=[];const t={"Content-Type":"application/json"};"undefined"!=typeof window&&window.location&&(t.Origin=window.location.origin);const n=await fetch(a("signIn"),{method:"POST",headers:t,body:JSON.stringify(e)});if(!n.ok)throw 401===n.status?new Error("Invalid email or password"):403===n.status?new Error("Please verify your email address before signing in"):new Error(`Sign in failed: ${n.status} ${n.statusText}`);const i=await n.json();if(i.mfa_required){u.value=1,M.value=i.mfa_session_id||null;const e=(i.available_mfa_methods||[]).map(e=>{let t=`${e.device_type.charAt(0).toUpperCase()+e.device_type.slice(1)} Authentication`;return"hardware"===e.device_type?t=e.device_name||"Security Key":"totp"===e.device_type?t=e.device_name||"Authenticator App":"email"===e.device_type&&(t=e.device_name||"Email Verification"),{id:e.device_id,device_type:e.device_type,device_name:e.device_name||t,is_active:1,created_at:(new Date).toISOString(),last_used_at:e.last_used_at,credential_id:e.credential_id,device_info:e.device_info}});return g.value=e,c.value.signingIn=0,i}return await k(i),i}catch(t){throw t}finally{c.value.signingIn=0}},signUp:async e=>{c.value.signingUp=1;try{throw new Error("Sign up not implemented - please integrate with auth SDK")}finally{c.value.signingUp=0}},signOut:O,refreshToken:z,fetchProfile:async()=>{const e=`profile:${s.value.accessToken.slice(0,20)}`;c.value.loadingProfile=1;try{return await n(e,async()=>{const e=await fetch(a("profile"),{method:"GET",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value?.accessToken}`}});if(!e.ok)throw 401===e.status?new Error("Authentication expired. Please sign in again."):new Error(`Failed to fetch profile: ${e.status} ${e.statusText}`);const t=await e.json();return o.value=y(t),o.value&&"undefined"!=typeof window&&localStorage.setItem("strands_auth_user",JSON.stringify(o.value)),o.value})}finally{c.value.loadingProfile=0}},updateProfile:async e=>{c.value.loadingProfile=1;try{const n=await fetch(a("profile"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({first_name:e.firstName,last_name:e.lastName})});if(!n.ok)throw 401===n.status?new Error("Authentication expired. Please sign in again."):new Error(`Profile update failed: ${n.status} ${n.statusText}`);const i=await n.json();return o.value=y(i),o.value&&t.debouncedSetItem("strands_auth_user",JSON.stringify(o.value)),o.value}finally{c.value.loadingProfile=0}},updateUserSettings:async e=>{c.value.loadingProfile=1;try{const n=await fetch(a("settings"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({settings:e})});if(!n.ok)throw 401===n.status?new Error("Authentication expired. Please sign in again."):new Error(`Settings update failed: ${n.status} ${n.statusText}`);const i=await n.json();return o.value=y(i),o.value&&t.debouncedSetItem("strands_auth_user",JSON.stringify(o.value)),o.value}finally{c.value.loadingProfile=0}},changeEmail:async(e,t)=>{c.value.loadingProfile=1;try{const n=await fetch(a("changeEmail"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({new_email:e,password:t})});if(!n.ok){if(401===n.status)throw new Error("Authentication expired. Please sign in again.");{const e=await n.json().catch(()=>({}));throw new Error(e.message||`Email change failed: ${n.status} ${n.statusText}`)}}const i=await n.json();return o.value&&(o.value={...o.value,email:e,emailVerified:0,updatedAt:(new Date).toISOString()},"undefined"!=typeof window&&localStorage.setItem("strands_auth_user",JSON.stringify(o.value))),i}finally{c.value.loadingProfile=0}},changeUsername:async e=>{c.value.loadingProfile=1;try{const t=await fetch(a("changeUsername"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({username:e})});if(!t.ok){const e=await t.json().catch(()=>({}));if(409===t.status)throw new Error("Username is already taken");if(e.cooldown_end)throw new Error(`You can only change your username once every 30 days. You can change it again on ${new Date(e.cooldown_end).toLocaleDateString()}`);throw new Error(e.message||`Username change failed: ${t.status} ${t.statusText}`)}const n=await t.json();return o.value&&(o.value={...o.value,username:e,usernameLastChangedAt:(new Date).toISOString(),updatedAt:(new Date).toISOString()},"undefined"!=typeof window&&localStorage.setItem("strands_auth_user",JSON.stringify(o.value))),n}finally{c.value.loadingProfile=0}},getUsernameCooldown:async()=>{const e=await fetch(a("usernameCooldown"),{method:"GET",headers:{Authorization:`Bearer ${s.value.accessToken}`}});if(!e.ok)throw new Error(`Failed to get username cooldown: ${e.status} ${e.statusText}`);return e.json()},checkUsernameAvailability:async e=>{const t=a("checkUsernameAvailability").replace("{username}",encodeURIComponent(e)),n=await fetch(t,{method:"GET",headers:{"Content-Type":"application/json"}});if(!n.ok)throw new Error(`Failed to check username availability: ${n.status} ${n.statusText}`);return n.json()},getUserSessions:async()=>{const e=`sessions:${s.value?.accessToken?.slice(0,20)||"no-token"}`;try{return await n(e,async()=>{const e=A(),t=await fetch(a("sessions"),{method:"GET",headers:e});if(!t.ok)throw await t.text(),new Error(`Failed to get user sessions: ${t.status} ${t.statusText}`);return t.json()},12e4)}catch(t){throw t}},getSessionStats:async()=>{const e=await fetch(a("sessionsStats"),{method:"GET",headers:A()});if(!e.ok)throw new Error(`Failed to get session stats: ${e.status} ${e.statusText}`);return e.json()},revokeSession:async e=>{const t=a("sessionRevoke").replace("{session_id}",encodeURIComponent(e)),n=await fetch(t,{method:"POST",headers:A()});if(!n.ok)throw new Error(`Failed to revoke session: ${n.status} ${n.statusText}`);return 200===n.status},revokeAllOtherSessions:async()=>{const e=await fetch(a("sessionsRevokeAll"),{method:"POST",headers:A()});if(!e.ok)throw new Error(`Failed to revoke all other sessions: ${e.status} ${e.statusText}`);return 200===e.status},initialize:x,setAuthData:k,verifyMfa:async(e,t,n=0)=>{if(!M.value)throw new Error("No MFA session available");c.value.verifyingMfa=1;try{const i=a(n?"mfaBackupCodeVerify":"mfaSigninVerify"),r=n?{mfa_session_id:M.value,backup_code:t}:{mfa_session_id:M.value,device_id:e,code:t},o=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok){const e=await o.text();let t="MFA verification failed";try{const a=JSON.parse(e);t=a.message||a.error||e}catch{t=e||"MFA verification failed"}throw new Error(t)}const s=await o.json();return u.value=0,M.value=null,g.value=[],await k(s),s}finally{c.value.verifyingMfa=0}},sendMfaEmailCode:async e=>{if(!M.value)throw new Error("No MFA session available");c.value.sendingMfaEmail=1;try{const t=await fetch(a("mfaSigninSendEmail"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mfa_session_id:M.value,device_id:e})});if(!t.ok){const e=await t.text();let a="Failed to send MFA email code";try{const t=JSON.parse(e);a=t.message||t.error||e}catch{a=e||"Failed to send MFA email code"}throw new Error(a)}return await t.json()}finally{c.value.sendingMfaEmail=0}},getMfaWebAuthnChallenge:async e=>{if(!M.value)throw new Error("No MFA session available");const t=await fetch(a("mfaWebAuthnChallenge"),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({mfa_session_id:M.value,device_id:e})});if(!t.ok){const e=await t.text();let a="Failed to get WebAuthn challenge";try{const t=JSON.parse(e);a=t.message||t.error||e}catch{a=e||a}throw new Error(a)}return t.json()},registerHardwareKey:async(e,t,n="hardware")=>{const i=await fetch(a("mfaHardwareStartRegistration"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({device_name:e,device_type:n})});if(!i.ok){const e=await i.text();let t="Failed to start hardware key registration";try{const a=JSON.parse(e);t=a.message||a.error||e}catch{t=e||"Failed to start hardware key registration"}throw new Error(t)}return i.json()},completeHardwareKeyRegistration:async(e,t,n)=>{const i=await fetch(a("mfaHardwareCompleteRegistration"),{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${s.value.accessToken}`},body:JSON.stringify({device_id:e,credential:t})});if(!i.ok){const e=await i.text();let t="Failed to complete hardware key registration";try{const a=JSON.parse(e);t=a.message||a.error||e}catch{t=e||"Failed to complete hardware key registration"}throw new Error(t)}return i.json()},startTokenRefreshTimer:b,stopTokenRefreshTimer:C,getAuthHeaders:A,forceReInit:()=>{d.value=0,c.value.initializing=1,x()}}}const g=e.ref([]),m=e.ref(0),p=e.ref(0),I=new Map;function S(){const{config:e}=l(),{currentSession:t,refreshToken:a,getAuthHeaders:n}=M(),i=async(i,r={})=>{const{autoRefresh:o=1,requireAuth:s=1,baseURL:c,...d}=r;if(s&&!t.value?.accessToken)throw new Error("User is not authenticated");let u=i;const l=c||e.value.baseUrl;l&&"string"==typeof i&&!i.startsWith("http")&&(u=new URL(i,l).toString());const y=new Headers(d.headers);if(t.value?.accessToken)try{const e=n();Object.entries(e).forEach(([e,t])=>{y.set(e,t)})}catch(w){if(s)throw w}const f={...d,headers:y};let h=await fetch(u,f);if(401===h.status&&o&&t.value?.refreshToken)try{if(await a()&&t.value?.accessToken){const e=n();Object.entries(e).forEach(([e,t])=>{y.set(e,t)}),h=await fetch(u,{...f,headers:y})}}catch(M){}return h};return{authenticatedFetch:i,get:(e,t)=>i(e,{...t,method:"GET"}),post:(e,t,a)=>{const n=new Headers(a?.headers);return t&&"object"==typeof t&&!n.has("Content-Type")&&n.set("Content-Type","application/json"),i(e,{...a,method:"POST",headers:n,body:"object"==typeof t?JSON.stringify(t):t})},put:(e,t,a)=>{const n=new Headers(a?.headers);return t&&"object"==typeof t&&!n.has("Content-Type")&&n.set("Content-Type","application/json"),i(e,{...a,method:"PUT",headers:n,body:"object"==typeof t?JSON.stringify(t):t})},delete:(e,t)=>i(e,{...t,method:"DELETE"}),patch:(e,t,a)=>{const n=new Headers(a?.headers);return t&&"object"==typeof t&&!n.has("Content-Type")&&n.set("Content-Type","application/json"),i(e,{...a,method:"PATCH",headers:n,body:"object"==typeof t?JSON.stringify(t):t})}}}const T={get:async(e,t)=>{const{get:a}=S();return a(e,t)},post:async(e,t,a)=>{const{post:n}=S();return n(e,t,a)},put:async(e,t,a)=>{const{put:n}=S();return n(e,t,a)},delete:async(e,t)=>{const{delete:a}=S();return a(e,t)},patch:async(e,t,a)=>{const{patch:n}=S();return n(e,t,a)}};exports.$authFetch=T,exports.STRANDS_AUTH_DEFAULTS=s,exports.provideStrandsConfig=function(t){if(d.value=t,"undefined"!=typeof window&&document.documentElement){const e=void 0!==t.useSquircle?t.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",e?"1":"0"),t.accentColor&&u(t.accentColor)}try{e.provide(c,t)}catch(a){}},exports.setStrandsConfig=function(e){if(d.value=e,"undefined"!=typeof window&&document.documentElement){const t=void 0!==e.useSquircle?e.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",t?"1":"0"),e.accentColor&&u(e.accentColor)}},exports.useAuthenticatedFetch=S,exports.useGlobalDarkMode=function(){return o||(o=function(){const t=e.computed(()=>"dark"===a.value?1:"light"===a.value?0:n.value),o=e.computed(()=>{switch(a.value){case"light":return"Light";case"dark":return"Dark";default:return"System"}});function s(e){a.value=e,function(e){if("undefined"!=typeof window)try{localStorage.setItem(i,e)}catch(t){}}(e)}function c(){if("undefined"==typeof window)return;n.value="undefined"==typeof window?0:window.matchMedia("(prefers-color-scheme: dark)").matches;const o=window.matchMedia("(prefers-color-scheme: dark)"),s=e=>{n.value=e.matches};o.addEventListener?o.addEventListener("change",s):o.addListener(s),a.value=function(){if("undefined"==typeof window)return"system";try{const e=localStorage.getItem(i);if(e&&["light","dark","system"].includes(e))return e}catch(e){}return"system"}(),r(t.value),e.watch(t,e=>{r(e)},{immediate:0})}return e.onMounted(()=>{c()}),{currentTheme:e.computed(()=>a.value),isDark:t,themeLabel:o,setTheme:s,toggle:function(){s(t.value?"light":"dark")},cycleTheme:function(){switch(a.value){case"light":s("dark");break;case"dark":s("system");break;default:s("light")}},initialize:c,themeOptions:[{value:"light",label:"Light",icon:"sun"},{value:"dark",label:"Dark",icon:"moon"},{value:"system",label:"System",icon:"monitor"}]}}(),"undefined"!=typeof window&&o.initialize()),o},exports.useOAuthProviders=function(t={}){const{getUrl:a,config:n}=l(),i=e.ref([]),r=e.ref(0),o=e.ref(null),s=e.computed(()=>i.value.filter(e=>e.enabled));return{providers:e.computed(()=>i.value),enabledProviders:s,loading:e.computed(()=>r.value),error:e.computed(()=>o.value),fetchProviders:async()=>{const e=JSON.stringify(t),s=I.get(e);if(s&&Date.now()-s.timestamp<3e5)return i.value=s.data,s.data;r.value=1,o.value=null;try{let r=a("oauthProviders");const o=t.redirectUrl||n.value?.oauth2RedirectUrl;if(o){const e=new URLSearchParams;let t=o;o.startsWith("/")&&(t=`${window.location.origin}${o}`),e.append("redirect_url",t),r=`${r}?${e.toString()}`}const s=await fetch(r,{method:"GET",headers:{"Content-Type":"application/json"}});if(!s.ok){const e=await s.json().catch(()=>({}));throw new Error(e.error?.message||`HTTP ${s.status}: ${s.statusText}`)}const c=await s.json();i.value=c.providers||[],I.set(e,{data:i.value,timestamp:Date.now()})}catch(c){const e=c instanceof Error?c.message:"Failed to fetch OAuth providers";o.value=e}finally{r.value=0}},getProviderAuthUrl:async(e,n)=>{const i={...t,...n},r=new URLSearchParams;if(i.redirectUrl){let e=i.redirectUrl;i.redirectUrl.startsWith("/")&&(e=`${window.location.origin}${i.redirectUrl}`),r.append("redirect_url",e)}i.scopes&&i.scopes.length>0&&r.append("scopes",i.scopes.join(","));const o=r.toString(),s=a("oauthProvider").replace("{provider_id}",e),c=o?`${s}?${o}`:s;try{const e=await fetch(c,{method:"GET",headers:{"Content-Type":"application/json"}});if(!e.ok){const t=await e.json().catch(()=>({}));throw new Error(t.error?.message||`HTTP ${e.status}: ${e.statusText}`)}const t=await e.json();if(!t.success)throw new Error(t.error?.message||"Failed to get OAuth auth URL");return t.data.authUrl}catch(d){const e=d instanceof Error?d.message:"Failed to get OAuth auth URL";throw new Error(e)}},redirectToProvider:async(e,t)=>{try{const t=i.value.find(t=>t.id===e);if(!t)throw new Error(`OAuth provider '${e}' not found`);if(!t.auth_url)throw new Error(`No auth URL configured for provider '${e}'`);window.location.href=t.auth_url}catch(a){throw o.value=a instanceof Error?a.message:"Failed to redirect to OAuth provider",a}},getProviderById:e=>i.value.find(t=>t.id===e),getProviderIcon:e=>{if(e.iconUrl)return e.iconUrl;switch(e.id.toLowerCase()){case"google":return"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxwYXRoIGZpbGw9IiM0Mjg1RjQiIGQ9Ik0yMi41NiAxMi4yNWMwLS43OC0uMDctMS41My0uMi0yLjI1SDEydjQuMjZoNS45MmMtLjI2IDEuMzctMS4wNCAyLjUzLTIuMjEgMy4zMXYyLjc3aDMuNTdjMi4wOC0xLjkyIDMuMjgtNC43NCAzLjI4LTguMDl6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTEyIDIzYzIuOTcgMCA1LjQ2LS45OCA3LjI4LTIuNjZsLTMuNTctMi43N2MtLjk4LjY2LTIuMjMgMS4wNi0zLjcxIDEuMDYtMi44NiAwLTUuMjktMS45My02LjE2LTQuNTNIMi4xOHYyLjg0QzMuOTkgMjAuNTMgNy43IDIzIDEyIDIzeiIvPjxwYXRoIGZpbGw9IiNGQkJDMDUiIGQ9Ik01Ljg0IDE0LjA5Yy0uMjItLjY2LS4zNS0xLjM2LS4zNS0yLjA5cy4xMy0xLjQzLjM1LTIuMDlWNy4wN0gyLjE4QzEuNDMgOC41NSAxIDEwLjIyIDEgMTJzLjQzIDMuNDUgMS4xOCA0LjkzbDIuODUtMi4yMi44MS0uNjJ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTEyIDUuMzhjMS42MiAwIDMuMDYuNTYgNC4yMSAxLjY0bDMuMTUtMy4xNUMxNy40NSAyLjA5IDE0Ljk3IDEgMTIgMSA3LjcgMSAzLjk5IDMuNDcgMi4xOCA3LjA3bDMuNjYgMi44NGMuODctMi42IDMuMy00LjUzIDYuMTYtNC41M3oiLz48L3N2Zz4=";case"github":return"data:image/svg+xml;base64,PHN2ZyBmaWxsPSJjdXJyZW50Q29sb3IiIHZpZXdCb3g9IjAgMCAyNCAyNCI+PHBhdGggZD0iTTEyIDBoLTEyYy02LjYyNiAwLTEyIDUuMzczLTEyIDEyIDAgNS4zMDIgMy40MzggOS44IDguMjA3IDExLjM4Ny41OTkuMTExLjc5My0uMjYxLjc5My0uNTc3di0yLjIzNGMtMy4zMzguNzI2LTQuMDMzLTEuNDE2LTQuMDMzLTEuNDE2LS41NDYtMS4zODctMS4zMzMtMS43NTYtMS4zMzMtMS43NTYtMS4wODktLjc0NS4wODMtLjcyOS4wODMtLjcyOSAxLjIwNS4wODQgMS44MzkgMS4yMzcgMS44MzkgMS4yMzcgMS4wNyAxLjgzNCAyLjgwNyAxLjMwNCAzLjQ5Mi45OTcuMTA3LS43NzUuNDE4LTEuMzA1Ljc2Mi0xLjYwNC0yLjY2NS0uMzA1LTUuNDY3LTEuMzM0LTUuNDY3LTUuOTMxIDAtMS4zMTEuNDY5LTIuMzgxIDEuMjM2LTMuMjIxLS4xMjQtLjMwMy0uNTM1LTEuNTI0LjExNy0zLjE3NiAwIDAgMS4wMDgtLjMyMiAzLjMwMSAxLjIzLjk1Ny0uMjY2IDEuOTgzLS4zOTkgMy4wMDMtLjQwNCAxLjAyLjAwNSAyLjA0Ny4xMzggMy4wMDYuNDA0IDIuMjkxLTEuNTUyIDMuMjk3LTEuMjMgMy4yOTctMS4yMy42NTMgMS42NTMuMjQyIDIuODc0LjExOCAzLjE3Ni43Ny44NCAxLjIzNSAxLjkxMSAxLjIzNSAzLjIyMSAwIDQuNjA5LTIuODA3IDUuNjI0LTUuNDc5IDUuOTIxLjQzLjM3Mi44MjMgMS4xMDIuODIzIDIuMjIydjMuMjkzYzAgLjMxOS4xOTIuNjk0LjgwMS41NzYgNC43NjUtMS41ODkgOC4xOTktNi4wODYgOC4xOTktMTEuMzg2IDAtNi42MjctNS4zNzMtMTItMTItMTJ6Ii8+PC9zdmc+";case"microsoft":case"azure":return"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPjxyZWN0IGZpbGw9IiNmMjUwMjIiIHdpZHRoPSIxMSIgaGVpZ2h0PSIxMSIvPjxyZWN0IGZpbGw9IiM3ZmJhMDAiIHg9IjEzIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiLz48cmVjdCBmaWxsPSIjMDBhNGVmIiB5PSIxMyIgd2lkdGg9IjExIiBoZWlnaHQ9IjExIi8+PHJlY3QgZmlsbD0iI2ZmYjkwMCIgeD0iMTMiIHk9IjEzIiB3aWR0aD0iMTEiIGhlaWdodD0iMTEiLz48L3N2Zz4=";case"discord":return"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9IiM1ODY1RjIiPjxwYXRoIGQ9Ik0yMC4zMTcgNC4zNjk2QTE5Ljc5MTMgMTkuNzkxMyAwIDAgMCAxOC4yMDU4IDMuMzY5NmMtLjk2NDIuMzU2NC0xLjk5NTguNjE1NC0zLjA1OC43NzNhMTQuNzI0NCAxNC43MjQ0IDAgMCAwLTYuMjk1NCAwIDEzLjU0OTQgMTMuNTQ5NCAwIDAgMC0zLjA1OC0uNzczIDEzLjY5MyAxMy42OTMgMCAwIDAtNS4wNjc2LTEuMjc5NCAyMC4xOTg0IDIwLjE5ODQgMCAwIDAtMi42NDk3IDkuMTE2MyAyMC4yODE4IDIwLjI4MTggMCAwIDAgMi4zNzU4IDIuNjNjMS4zMzIyLjEyNTggMi42NjUuMTcyMiA0LjA0NC4xNzIyaDEuMzE1NGMxLjM3OSAwIDIuNzExOC0uMDQ2NCA0LjA0NC0uMTcyMmEyMC4yODE4IDIwLjI4MTggMCAwIDAgMi4zNzU4LTIuNjMgMjAuMTk4NCAyMC4xOTg0IDAgMCAwIDIuNjQ5Ny05LjExNjNBMTkuNzkxMyAxOS43OTEzIDAgMCAwIDIwLjMxNyA0LjM2OTZ6TTE4LjE5IDEyQzE3LjY3IDE0LjQ5IDEzLjk5IDE2IDEyIDE2UzYuMzMgMTQuNDkgNS44MSAxMmMuNTItMi40OSA0LjE5LTQgNi4xOS00UzE3LjY3IDkuNTEgMTguMTkgMTJ6Ii8+PC9zdmc+";default:return"data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9ImN1cnJlbnRDb2xvciI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiLz48dGV4dCB4PSIxMiIgeT0iMTciIHRleHQtYW5jaG9yPSJtaWRkbGUiIGZpbGw9IndoaXRlIiBmb250LXNpemU9IjEyIj57cHJvdmlkZXIuaWQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9PC90ZXh0Pjwvc3ZnPg=="}}}},exports.useStrandsAuth=M,exports.useStrandsConfig=l,exports.useStrandsMfa=function(){const{getUrl:t}=l(),{currentSession:a}=M(),n=e.computed(()=>g.value.length>0),i=e.computed(()=>g.value.filter(e=>e.is_active&&"hardware"!==e.device_type&&"passkey"!==e.device_type)),r=async(e,t={})=>{const n={"Content-Type":"application/json",...t.headers};a.value?.accessToken&&(n.Authorization=`Bearer ${a.value.accessToken}`);const i=await fetch(e,{...t,headers:n});if(!i.ok){const e=await i.text();let t=`Request failed: ${i.status} ${i.statusText}`;try{t=JSON.parse(e).message||t}catch{e&&(t=e)}throw new Error(t)}return i.json()},o=async()=>{p.value=1;try{const e=await r(t("mfaDevices"),{method:"GET"});return g.value=e.devices||[],m.value=e.mfa_enabled||0,e}finally{p.value=0}};return{mfaDevices:e.computed(()=>g.value),mfaEnabled:e.computed(()=>m.value),loading:e.computed(()=>p.value),hasMfaDevices:n,activeMfaDevices:i,fetchMfaDevices:o,setupTotp:async e=>{p.value=1;try{const a=await r(t("mfaTotpSetup"),{method:"POST",body:JSON.stringify({device_name:e})});return await o(),a}finally{p.value=0}},verifyTotpSetup:async(e,a)=>{p.value=1;try{await r(t("mfaTotpVerify"),{method:"POST",body:JSON.stringify({device_id:e,totp_code:a})}),await o()}finally{p.value=0}},setupEmailMfa:async e=>{p.value=1;try{const a=await r(t("mfaEmailSetup"),{method:"POST",body:JSON.stringify({device_name:e})});return await o(),a}finally{p.value=0}},sendEmailMfaCode:async e=>{p.value=1;try{await r(t("mfaEmailSend"),{method:"POST",body:JSON.stringify({device_id:e})})}finally{p.value=0}},verifyEmailMfaCode:async(e,a)=>{p.value=1;try{return(await r(t("mfaEmailVerify"),{method:"POST",body:JSON.stringify({device_id:e,code:a})})).verified||0}finally{p.value=0}},disableMfaDevice:async e=>{p.value=1;try{await r(t("mfaDeviceDisable"),{method:"POST",body:JSON.stringify({device_id:e})}),await o()}finally{p.value=0}},regenerateBackupCodes:async e=>{p.value=1;try{return await r(t("mfaBackupCodes"),{method:"POST",body:JSON.stringify({device_id:e})})}finally{p.value=0}},getDeviceTypeIcon:e=>{switch(e){case"totp":return"📱";case"email":return"📧";case"hardware":return"🔑";case"passkey":return"🔐";default:return"🔒"}},getDeviceTypeName:e=>{switch(e){case"totp":return"Authenticator App";case"email":return"Email Verification";case"hardware":return"Hardware Key";case"passkey":return"Passkey";default:return"Unknown"}},formatLastUsed:e=>{if(!e)return"Never";const t=new Date(e),a=(new Date).getTime()-t.getTime(),n=Math.floor(a/864e5);return 0===n?"Today":1===n?"Yesterday":n<30?`${n} days ago`:t.toLocaleDateString()}}};
@@ -0,0 +1,398 @@
1
+ import { h } from "vue";
2
+ /**
3
+ * @license lucide-vue-next v0.542.0 - ISC
4
+ *
5
+ * This source code is licensed under the ISC license.
6
+ * See the LICENSE file in the root directory of this source tree.
7
+ */
8
+ const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
9
+ const toCamelCase = (string) => string.replace(
10
+ /^([A-Z])|[\s-_]+(\w)/g,
11
+ (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()
12
+ );
13
+ const toPascalCase = (string) => {
14
+ const camelCase = toCamelCase(string);
15
+ return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
16
+ };
17
+ const mergeClasses = (...classes) => classes.filter((className, index, array) => {
18
+ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
19
+ }).join(" ").trim();
20
+ const isEmptyString = (value) => value === "";
21
+ /**
22
+ * @license lucide-vue-next v0.542.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */
27
+ var defaultAttributes = {
28
+ xmlns: "http://www.w3.org/2000/svg",
29
+ width: 24,
30
+ height: 24,
31
+ viewBox: "0 0 24 24",
32
+ fill: "none",
33
+ stroke: "currentColor",
34
+ "stroke-width": 2,
35
+ "stroke-linecap": "round",
36
+ "stroke-linejoin": "round"
37
+ };
38
+ /**
39
+ * @license lucide-vue-next v0.542.0 - ISC
40
+ *
41
+ * This source code is licensed under the ISC license.
42
+ * See the LICENSE file in the root directory of this source tree.
43
+ */
44
+ const Icon = ({
45
+ name,
46
+ iconNode,
47
+ absoluteStrokeWidth,
48
+ "absolute-stroke-width": absoluteStrokeWidthKebabCase,
49
+ strokeWidth,
50
+ "stroke-width": strokeWidthKebabCase,
51
+ size = defaultAttributes.width,
52
+ color = defaultAttributes.stroke,
53
+ ...props
54
+ }, { slots }) => {
55
+ return h(
56
+ "svg",
57
+ {
58
+ ...defaultAttributes,
59
+ ...props,
60
+ width: size,
61
+ height: size,
62
+ stroke: color,
63
+ "stroke-width": isEmptyString(absoluteStrokeWidth) || isEmptyString(absoluteStrokeWidthKebabCase) || absoluteStrokeWidth === true || absoluteStrokeWidthKebabCase === true ? Number(strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"]) * 24 / Number(size) : strokeWidth || strokeWidthKebabCase || defaultAttributes["stroke-width"],
64
+ class: mergeClasses(
65
+ "lucide",
66
+ props.class,
67
+ ...name ? [`lucide-${toKebabCase(toPascalCase(name))}-icon`, `lucide-${toKebabCase(name)}`] : ["lucide-icon"]
68
+ )
69
+ },
70
+ [...iconNode.map((child) => h(...child)), ...slots.default ? [slots.default()] : []]
71
+ );
72
+ };
73
+ /**
74
+ * @license lucide-vue-next v0.542.0 - ISC
75
+ *
76
+ * This source code is licensed under the ISC license.
77
+ * See the LICENSE file in the root directory of this source tree.
78
+ */
79
+ const createLucideIcon = (iconName, iconNode) => (props, { slots, attrs }) => h(
80
+ Icon,
81
+ {
82
+ ...attrs,
83
+ ...props,
84
+ iconNode,
85
+ name: iconName
86
+ },
87
+ slots
88
+ );
89
+ /**
90
+ * @license lucide-vue-next v0.542.0 - ISC
91
+ *
92
+ * This source code is licensed under the ISC license.
93
+ * See the LICENSE file in the root directory of this source tree.
94
+ */
95
+ const Bell = createLucideIcon("bell", [
96
+ ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
97
+ [
98
+ "path",
99
+ {
100
+ d: "M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",
101
+ key: "11g9vi"
102
+ }
103
+ ]
104
+ ]);
105
+ /**
106
+ * @license lucide-vue-next v0.542.0 - ISC
107
+ *
108
+ * This source code is licensed under the ISC license.
109
+ * See the LICENSE file in the root directory of this source tree.
110
+ */
111
+ const Check = createLucideIcon("check", [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]]);
112
+ /**
113
+ * @license lucide-vue-next v0.542.0 - ISC
114
+ *
115
+ * This source code is licensed under the ISC license.
116
+ * See the LICENSE file in the root directory of this source tree.
117
+ */
118
+ const ChevronDown = createLucideIcon("chevron-down", [
119
+ ["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]
120
+ ]);
121
+ /**
122
+ * @license lucide-vue-next v0.542.0 - ISC
123
+ *
124
+ * This source code is licensed under the ISC license.
125
+ * See the LICENSE file in the root directory of this source tree.
126
+ */
127
+ const ChevronRight = createLucideIcon("chevron-right", [
128
+ ["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]
129
+ ]);
130
+ /**
131
+ * @license lucide-vue-next v0.542.0 - ISC
132
+ *
133
+ * This source code is licensed under the ISC license.
134
+ * See the LICENSE file in the root directory of this source tree.
135
+ */
136
+ const ChevronUp = createLucideIcon("chevron-up", [
137
+ ["path", { d: "m18 15-6-6-6 6", key: "153udz" }]
138
+ ]);
139
+ /**
140
+ * @license lucide-vue-next v0.542.0 - ISC
141
+ *
142
+ * This source code is licensed under the ISC license.
143
+ * See the LICENSE file in the root directory of this source tree.
144
+ */
145
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", [
146
+ ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
147
+ ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
148
+ ]);
149
+ /**
150
+ * @license lucide-vue-next v0.542.0 - ISC
151
+ *
152
+ * This source code is licensed under the ISC license.
153
+ * See the LICENSE file in the root directory of this source tree.
154
+ */
155
+ const CreditCard = createLucideIcon("credit-card", [
156
+ ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
157
+ ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
158
+ ]);
159
+ /**
160
+ * @license lucide-vue-next v0.542.0 - ISC
161
+ *
162
+ * This source code is licensed under the ISC license.
163
+ * See the LICENSE file in the root directory of this source tree.
164
+ */
165
+ const DollarSign = createLucideIcon("dollar-sign", [
166
+ ["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
167
+ ["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
168
+ ]);
169
+ /**
170
+ * @license lucide-vue-next v0.542.0 - ISC
171
+ *
172
+ * This source code is licensed under the ISC license.
173
+ * See the LICENSE file in the root directory of this source tree.
174
+ */
175
+ const ExternalLink = createLucideIcon("external-link", [
176
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
177
+ ["path", { d: "M10 14 21 3", key: "gplh6r" }],
178
+ ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
179
+ ]);
180
+ /**
181
+ * @license lucide-vue-next v0.542.0 - ISC
182
+ *
183
+ * This source code is licensed under the ISC license.
184
+ * See the LICENSE file in the root directory of this source tree.
185
+ */
186
+ const Funnel = createLucideIcon("funnel", [
187
+ [
188
+ "path",
189
+ {
190
+ d: "M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",
191
+ key: "sc7q7i"
192
+ }
193
+ ]
194
+ ]);
195
+ /**
196
+ * @license lucide-vue-next v0.542.0 - ISC
197
+ *
198
+ * This source code is licensed under the ISC license.
199
+ * See the LICENSE file in the root directory of this source tree.
200
+ */
201
+ const GripVertical = createLucideIcon("grip-vertical", [
202
+ ["circle", { cx: "9", cy: "12", r: "1", key: "1vctgf" }],
203
+ ["circle", { cx: "9", cy: "5", r: "1", key: "hp0tcf" }],
204
+ ["circle", { cx: "9", cy: "19", r: "1", key: "fkjjf6" }],
205
+ ["circle", { cx: "15", cy: "12", r: "1", key: "1tmaij" }],
206
+ ["circle", { cx: "15", cy: "5", r: "1", key: "19l28e" }],
207
+ ["circle", { cx: "15", cy: "19", r: "1", key: "f4zoj3" }]
208
+ ]);
209
+ /**
210
+ * @license lucide-vue-next v0.542.0 - ISC
211
+ *
212
+ * This source code is licensed under the ISC license.
213
+ * See the LICENSE file in the root directory of this source tree.
214
+ */
215
+ const House = createLucideIcon("house", [
216
+ ["path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" }],
217
+ [
218
+ "path",
219
+ {
220
+ d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",
221
+ key: "1d0kgt"
222
+ }
223
+ ]
224
+ ]);
225
+ /**
226
+ * @license lucide-vue-next v0.542.0 - ISC
227
+ *
228
+ * This source code is licensed under the ISC license.
229
+ * See the LICENSE file in the root directory of this source tree.
230
+ */
231
+ const Mail = createLucideIcon("mail", [
232
+ ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
233
+ ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
234
+ ]);
235
+ /**
236
+ * @license lucide-vue-next v0.542.0 - ISC
237
+ *
238
+ * This source code is licensed under the ISC license.
239
+ * See the LICENSE file in the root directory of this source tree.
240
+ */
241
+ const MapPin = createLucideIcon("map-pin", [
242
+ [
243
+ "path",
244
+ {
245
+ d: "M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",
246
+ key: "1r0f0z"
247
+ }
248
+ ],
249
+ ["circle", { cx: "12", cy: "10", r: "3", key: "ilqhr7" }]
250
+ ]);
251
+ /**
252
+ * @license lucide-vue-next v0.542.0 - ISC
253
+ *
254
+ * This source code is licensed under the ISC license.
255
+ * See the LICENSE file in the root directory of this source tree.
256
+ */
257
+ const Monitor = createLucideIcon("monitor", [
258
+ ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
259
+ ["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
260
+ ["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
261
+ ]);
262
+ /**
263
+ * @license lucide-vue-next v0.542.0 - ISC
264
+ *
265
+ * This source code is licensed under the ISC license.
266
+ * See the LICENSE file in the root directory of this source tree.
267
+ */
268
+ const Moon = createLucideIcon("moon", [
269
+ [
270
+ "path",
271
+ {
272
+ d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",
273
+ key: "kfwtm"
274
+ }
275
+ ]
276
+ ]);
277
+ /**
278
+ * @license lucide-vue-next v0.542.0 - ISC
279
+ *
280
+ * This source code is licensed under the ISC license.
281
+ * See the LICENSE file in the root directory of this source tree.
282
+ */
283
+ const Navigation = createLucideIcon("navigation", [
284
+ ["polygon", { points: "3 11 22 2 13 21 11 13 3 11", key: "1ltx0t" }]
285
+ ]);
286
+ /**
287
+ * @license lucide-vue-next v0.542.0 - ISC
288
+ *
289
+ * This source code is licensed under the ISC license.
290
+ * See the LICENSE file in the root directory of this source tree.
291
+ */
292
+ const Phone = createLucideIcon("phone", [
293
+ [
294
+ "path",
295
+ {
296
+ d: "M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",
297
+ key: "9njp5v"
298
+ }
299
+ ]
300
+ ]);
301
+ /**
302
+ * @license lucide-vue-next v0.542.0 - ISC
303
+ *
304
+ * This source code is licensed under the ISC license.
305
+ * See the LICENSE file in the root directory of this source tree.
306
+ */
307
+ const Plus = createLucideIcon("plus", [
308
+ ["path", { d: "M5 12h14", key: "1ays0h" }],
309
+ ["path", { d: "M12 5v14", key: "s699le" }]
310
+ ]);
311
+ /**
312
+ * @license lucide-vue-next v0.542.0 - ISC
313
+ *
314
+ * This source code is licensed under the ISC license.
315
+ * See the LICENSE file in the root directory of this source tree.
316
+ */
317
+ const Search = createLucideIcon("search", [
318
+ ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
319
+ ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
320
+ ]);
321
+ /**
322
+ * @license lucide-vue-next v0.542.0 - ISC
323
+ *
324
+ * This source code is licensed under the ISC license.
325
+ * See the LICENSE file in the root directory of this source tree.
326
+ */
327
+ const Sun = createLucideIcon("sun", [
328
+ ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
329
+ ["path", { d: "M12 2v2", key: "tus03m" }],
330
+ ["path", { d: "M12 20v2", key: "1lh1kg" }],
331
+ ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }],
332
+ ["path", { d: "m17.66 17.66 1.41 1.41", key: "ptbguv" }],
333
+ ["path", { d: "M2 12h2", key: "1t8f8n" }],
334
+ ["path", { d: "M20 12h2", key: "1q8mjw" }],
335
+ ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
336
+ ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
337
+ ]);
338
+ /**
339
+ * @license lucide-vue-next v0.542.0 - ISC
340
+ *
341
+ * This source code is licensed under the ISC license.
342
+ * See the LICENSE file in the root directory of this source tree.
343
+ */
344
+ const Trash2 = createLucideIcon("trash-2", [
345
+ ["path", { d: "M10 11v6", key: "nco0om" }],
346
+ ["path", { d: "M14 11v6", key: "outv1u" }],
347
+ ["path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6", key: "miytrc" }],
348
+ ["path", { d: "M3 6h18", key: "d0wm0j" }],
349
+ ["path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2", key: "e791ji" }]
350
+ ]);
351
+ /**
352
+ * @license lucide-vue-next v0.542.0 - ISC
353
+ *
354
+ * This source code is licensed under the ISC license.
355
+ * See the LICENSE file in the root directory of this source tree.
356
+ */
357
+ const User = createLucideIcon("user", [
358
+ ["path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" }],
359
+ ["circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" }]
360
+ ]);
361
+ /**
362
+ * @license lucide-vue-next v0.542.0 - ISC
363
+ *
364
+ * This source code is licensed under the ISC license.
365
+ * See the LICENSE file in the root directory of this source tree.
366
+ */
367
+ const Users = createLucideIcon("users", [
368
+ ["path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" }],
369
+ ["path", { d: "M16 3.128a4 4 0 0 1 0 7.744", key: "16gr8j" }],
370
+ ["path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" }],
371
+ ["circle", { cx: "9", cy: "7", r: "4", key: "nufk8" }]
372
+ ]);
373
+ export {
374
+ Bell as B,
375
+ ChevronDown as C,
376
+ DollarSign as D,
377
+ ExternalLink as E,
378
+ Funnel as F,
379
+ GripVertical as G,
380
+ House as H,
381
+ Monitor as M,
382
+ Navigation as N,
383
+ Plus as P,
384
+ Sun as S,
385
+ Trash2 as T,
386
+ User as U,
387
+ Moon as a,
388
+ ChevronRight as b,
389
+ Check as c,
390
+ MapPin as d,
391
+ CreditCard as e,
392
+ Phone as f,
393
+ Mail as g,
394
+ Search as h,
395
+ ChevronUp as i,
396
+ ChevronsUpDown as j,
397
+ Users as k
398
+ };
Binary file
Binary file
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),t=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),r=e=>{const t=(e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase()))(e);return t.charAt(0).toUpperCase()+t.slice(1)},a=(...e)=>e.filter((e,t,r)=>Boolean(e)&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),h=e=>""===e;var y={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};const c=({name:c,iconNode:o,absoluteStrokeWidth:p,"absolute-stroke-width":k,strokeWidth:s,"stroke-width":i,size:d=y.width,color:l=y.stroke,...x},{slots:n})=>e.h("svg",{...y,...x,width:d,height:d,stroke:l,"stroke-width":h(p)||h(k)||1==p||1==k?24*Number(s||i||y["stroke-width"])/Number(d):s||i||y["stroke-width"],class:a("lucide",x.class,...c?[`lucide-${t(r(c))}-icon`,`lucide-${t(c)}`]:["lucide-icon"])},[...o.map(t=>e.h(...t)),...n.default?[n.default()]:[]]),o=(t,r)=>(a,{slots:h,attrs:y})=>e.h(c,{...y,...a,iconNode:r,name:t},h),p=o("bell",[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]]),k=o("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),s=o("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]),i=o("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]),d=o("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]),l=o("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]),x=o("credit-card",[["rect",{width:"20",height:"14",x:"2",y:"5",rx:"2",key:"ynyp8z"}],["line",{x1:"2",x2:"22",y1:"10",y2:"10",key:"1b3vmo"}]]),n=o("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]]),v=o("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]),m=o("funnel",[["path",{d:"M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z",key:"sc7q7i"}]]),u=o("grip-vertical",[["circle",{cx:"9",cy:"12",r:"1",key:"1vctgf"}],["circle",{cx:"9",cy:"5",r:"1",key:"hp0tcf"}],["circle",{cx:"9",cy:"19",r:"1",key:"fkjjf6"}],["circle",{cx:"15",cy:"12",r:"1",key:"1tmaij"}],["circle",{cx:"15",cy:"5",r:"1",key:"19l28e"}],["circle",{cx:"15",cy:"19",r:"1",key:"f4zoj3"}]]),M=o("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]]),w=o("mail",[["path",{d:"m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7",key:"132q7q"}],["rect",{x:"2",y:"4",width:"20",height:"16",rx:"2",key:"izxlao"}]]),g=o("map-pin",[["path",{d:"M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0",key:"1r0f0z"}],["circle",{cx:"12",cy:"10",r:"3",key:"ilqhr7"}]]),q=o("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),f=o("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),j=o("navigation",[["polygon",{points:"3 11 22 2 13 21 11 13 3 11",key:"1ltx0t"}]]),z=o("phone",[["path",{d:"M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384",key:"9njp5v"}]]),A=o("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),b=o("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]]),H=o("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),N=o("trash-2",[["path",{d:"M10 11v6",key:"nco0om"}],["path",{d:"M14 11v6",key:"outv1u"}],["path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6",key:"miytrc"}],["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2",key:"e791ji"}]]),$=o("user",[["path",{d:"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2",key:"975kel"}],["circle",{cx:"12",cy:"7",r:"4",key:"17ys0d"}]]),C=o("users",[["path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2",key:"1yyitq"}],["path",{d:"M16 3.128a4 4 0 0 1 0 7.744",key:"16gr8j"}],["path",{d:"M22 21v-2a4 4 0 0 0-3-3.87",key:"kshegd"}],["circle",{cx:"9",cy:"7",r:"4",key:"nufk8"}]]);exports.Bell=p,exports.Check=k,exports.ChevronDown=s,exports.ChevronRight=i,exports.ChevronUp=d,exports.ChevronsUpDown=l,exports.CreditCard=x,exports.DollarSign=n,exports.ExternalLink=v,exports.Funnel=m,exports.GripVertical=u,exports.House=M,exports.Mail=w,exports.MapPin=g,exports.Monitor=q,exports.Moon=f,exports.Navigation=j,exports.Phone=z,exports.Plus=A,exports.Search=b,exports.Sun=H,exports.Trash2=N,exports.User=$,exports.Users=C;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./ui-components-CocLXkUI.js"),t=require("./auth-components-CXT-W3fG.js"),r=require("./composables-BqLSXNon.js"),e=require("./utils-B9zcSW52.js"),o={StrandsUiAlert:s.StrandsUiAlert,StrandsUiButton:s.StrandsUiButton,StrandsUiCard:s.StrandsUiCard,StrandsUiInput:s.StrandsUiInput,StrandsUiLink:s.StrandsUiLink,StrandsUiTabs:s.StrandsUiTabs,StrandsUiLoader:s.StrandsUiLoader},p={install(s,t={}){const{prefix:r=""}=t;Object.entries(o).forEach(([t,e])=>{const o=r?`${r}${t}`:t;s.component(o,e)})}};exports.StrandsUiAlert=s.StrandsUiAlert,exports.StrandsUiAvatarEditor=s.t,exports.StrandsUiButton=s.StrandsUiButton,exports.StrandsUiCard=s.StrandsUiCard,exports.StrandsUiColorPicker=s.o,exports.StrandsUiDivider=s.UiDivider,exports.StrandsUiHero=s.UiHero,exports.StrandsUiInput=s.StrandsUiInput,exports.StrandsUiLevelProgress=s.StrandsUiLevelProgress,exports.StrandsUiLink=s.StrandsUiLink,exports.StrandsUiLoader=s.StrandsUiLoader,exports.StrandsUiModal=s.UiModal,exports.StrandsUiTable=s.UiTable,exports.StrandsUiTabs=s.StrandsUiTabs,exports.StrandsUiThemeToggle=s.UiThemeToggle,exports.StrandsUiToggle=s.UiToggle,exports.StrandsUiTooltip=s.UiTooltip,exports.UiAlert=s.StrandsUiAlert,exports.UiAvatarEditor=s.t,exports.UiAvatarEditorSimple=s.t,exports.UiButton=s.StrandsUiButton,exports.UiCard=s.StrandsUiCard,exports.UiColorPicker=s.o,exports.UiDivider=s.UiDivider,exports.UiHero=s.UiHero,exports.UiInput=s.StrandsUiInput,exports.UiLevelProgress=s.StrandsUiLevelProgress,exports.UiLink=s.StrandsUiLink,exports.UiLoader=s.StrandsUiLoader,exports.UiModal=s.UiModal,exports.UiTable=s.UiTable,exports.UiTabs=s.StrandsUiTabs,exports.UiThemeToggle=s.UiThemeToggle,exports.UiToggle=s.UiToggle,exports.UiTooltip=s.UiTooltip,exports.IconGithub=t.p,exports.IconGoogle=t.i,exports.SignedIn=t.SignedIn,exports.SignedOut=t.SignedOut,exports.StrandsAuth=t.StrandsAuth,exports.StrandsBackupCodesModal=t.StrandsBackupCodesModal,exports.StrandsCompleteSignUp=t.StrandsCompleteSignUp,exports.StrandsConfigProvider=t.o,exports.StrandsConfirmModal=t.StrandsConfirmModal,exports.StrandsEmailMfaSetupModal=t.StrandsEmailMfaSetupModal,exports.StrandsHardwareKeySetupModal=t.StrandsHardwareKeySetupModal,exports.StrandsLogo=t.t,exports.StrandsMFASetup=t.StrandsMFASetup,exports.StrandsMfaModal=t.StrandsMfaModal,exports.StrandsMfaVerification=t.StrandsMfaVerification,exports.StrandsNav=t.StrandsNav,exports.StrandsNavItem=t.StrandsNavItem,exports.StrandsPasswordReset=t.StrandsPasswordReset,exports.StrandsSecuredFooter=t.StrandsSecuredFooter,exports.StrandsSessionsModal=t.StrandsSessionsModal,exports.StrandsSettingsModal=t.StrandsSettingsModal,exports.StrandsSignIn=t.StrandsSignIn,exports.StrandsSignUp=t.StrandsSignUp,exports.StrandsTotpSetupModal=t.StrandsTotpSetupModal,exports.StrandsUserButton=t.StrandsUserButton,exports.StrandsUserProfile=t.StrandsUserProfile,exports.SvgIcon=t.u,exports.VirtualList=t.VirtualList,exports.$authFetch=r.$authFetch,exports.provideStrandsConfig=r.provideStrandsConfig,exports.setStrandsConfig=r.setStrandsConfig,exports.useAuthenticatedFetch=r.useAuthenticatedFetch,exports.useOAuthProviders=r.useOAuthProviders,exports.useStrandsAuth=r.useStrandsAuth,exports.useStrandsConfig=r.useStrandsConfig,exports.debounce=e.debounce,exports.formatDate=e.formatDate,exports.getInitials=e.getInitials,exports.isRequired=e.isRequired,exports.isValidEmail=e.isValidEmail,exports.isValidName=e.isValidName,exports.passwordsMatch=e.passwordsMatch,exports.preloadCriticalComponents=e.preloadCriticalComponents,exports.tailwindColors=e.tailwindColors,exports.validatePassword=e.validatePassword,exports.StrandsUIPlugin=p;
@@ -0,0 +1,106 @@
1
+ import { S as StrandsUiLoader, d as StrandsUiTabs, e as StrandsUiLink, b as StrandsUiInput, c as StrandsUiCard, a as StrandsUiButton, f as StrandsUiAlert } from "./ui-components-BC1UK39i.js";
2
+ import { _, i, k, m, h, U, l, n, g, j, _ as _2, _ as _3, i as i2, k as k2, m as m2, h as h2, U as U2, l as l2, n as n2, g as g2, j as j2 } from "./ui-components-BC1UK39i.js";
3
+ import { z, y, i as i3, j as j3, S, w, c, m as m3, h as h3, u, v, k as k3, r, s, f, p, q, e, l as l3, g as g3, x, a, b, t, o, d, n as n3, V } from "./auth-components-BJhPF4dS.js";
4
+ import { $, p as p2, s as s2, e as e2, c as c2, b as b2, u as u2 } from "./composables-BqIRpDGP.js";
5
+ import { h as h4, f as f2, g as g4, c as c3, i as i4, b as b3, e as e3, a as a2, t as t2, v as v2 } from "./utils-BZHeJkZf.js";
6
+ const components = {
7
+ StrandsUiAlert,
8
+ StrandsUiButton,
9
+ StrandsUiCard,
10
+ StrandsUiInput,
11
+ StrandsUiLink,
12
+ StrandsUiTabs,
13
+ StrandsUiLoader
14
+ };
15
+ const StrandsUIPlugin = {
16
+ install(app, options = {}) {
17
+ const { prefix = "" } = options;
18
+ Object.entries(components).forEach(([name, component]) => {
19
+ const componentName = prefix ? `${prefix}${name}` : name;
20
+ app.component(componentName, component);
21
+ });
22
+ }
23
+ };
24
+ export {
25
+ $ as $authFetch,
26
+ z as IconGithub,
27
+ y as IconGoogle,
28
+ i3 as SignedIn,
29
+ j3 as SignedOut,
30
+ S as StrandsAuth,
31
+ w as StrandsBackupCodesModal,
32
+ c as StrandsCompleteSignUp,
33
+ m3 as StrandsConfigProvider,
34
+ h3 as StrandsConfirmModal,
35
+ u as StrandsEmailMfaSetupModal,
36
+ v as StrandsHardwareKeySetupModal,
37
+ k3 as StrandsLogo,
38
+ r as StrandsMFASetup,
39
+ s as StrandsMfaModal,
40
+ f as StrandsMfaVerification,
41
+ p as StrandsNav,
42
+ q as StrandsNavItem,
43
+ e as StrandsPasswordReset,
44
+ l3 as StrandsSecuredFooter,
45
+ g3 as StrandsSessionsModal,
46
+ x as StrandsSettingsModal,
47
+ a as StrandsSignIn,
48
+ b as StrandsSignUp,
49
+ t as StrandsTotpSetupModal,
50
+ StrandsUIPlugin,
51
+ StrandsUiAlert,
52
+ _ as StrandsUiAvatarEditor,
53
+ StrandsUiButton,
54
+ StrandsUiCard,
55
+ i as StrandsUiColorPicker,
56
+ k as StrandsUiDivider,
57
+ m as StrandsUiHero,
58
+ StrandsUiInput,
59
+ h as StrandsUiLevelProgress,
60
+ StrandsUiLink,
61
+ StrandsUiLoader,
62
+ U as StrandsUiModal,
63
+ l as StrandsUiTable,
64
+ StrandsUiTabs,
65
+ n as StrandsUiThemeToggle,
66
+ g as StrandsUiToggle,
67
+ j as StrandsUiTooltip,
68
+ o as StrandsUserButton,
69
+ d as StrandsUserProfile,
70
+ n3 as SvgIcon,
71
+ StrandsUiAlert as UiAlert,
72
+ _2 as UiAvatarEditor,
73
+ _3 as UiAvatarEditorSimple,
74
+ StrandsUiButton as UiButton,
75
+ StrandsUiCard as UiCard,
76
+ i2 as UiColorPicker,
77
+ k2 as UiDivider,
78
+ m2 as UiHero,
79
+ StrandsUiInput as UiInput,
80
+ h2 as UiLevelProgress,
81
+ StrandsUiLink as UiLink,
82
+ StrandsUiLoader as UiLoader,
83
+ U2 as UiModal,
84
+ l2 as UiTable,
85
+ StrandsUiTabs as UiTabs,
86
+ n2 as UiThemeToggle,
87
+ g2 as UiToggle,
88
+ j2 as UiTooltip,
89
+ V as VirtualList,
90
+ h4 as debounce,
91
+ f2 as formatDate,
92
+ g4 as getInitials,
93
+ c3 as isRequired,
94
+ i4 as isValidEmail,
95
+ b3 as isValidName,
96
+ e3 as passwordsMatch,
97
+ a2 as preloadCriticalComponents,
98
+ p2 as provideStrandsConfig,
99
+ s2 as setStrandsConfig,
100
+ t2 as tailwindColors,
101
+ e2 as useAuthenticatedFetch,
102
+ c2 as useOAuthProviders,
103
+ b2 as useStrandsAuth,
104
+ u2 as useStrandsConfig,
105
+ v2 as validatePassword
106
+ };
@@ -0,0 +1 @@
1
+ "use strict";const e=require("@nuxt/kit");require("./runtime/composables/useStrandsAuth-Dn15YEQw.js"),require("./runtime/composables/useAuthenticatedFetch-qYkd06Dm.js");var t="undefined"!=typeof document?document.currentScript:null;const s=e.defineNuxtModule({meta:{name:"@strands.gg/accui/nuxt",configKey:"strandsAuth",compatibility:{nuxt:"^3.0.0"}},defaults:{baseUrl:"https://your-api.example.com",accentColor:"#EA00A8",redirectUrl:"/",onSignInUrl:"/dashboard",onSignOutUrl:"/",autoRefresh:1,refreshInterval:4,protectedRoutes:[],guestOnlyRoutes:["/auth","/login","/register"],devMode:0,styles:1,supportEmail:"",oauth2RedirectUrl:""},async setup(s,n){const r=e.createResolver("undefined"==typeof document?require("url").pathToFileURL(__filename).href:t&&"SCRIPT"===t.tagName.toUpperCase()&&t.src||new URL("js/nuxt/module-BA8ZjBpp.js",document.baseURI).href);n.options.runtimeConfig.public=n.options.runtimeConfig.public||{},n.options.runtimeConfig.public.strandsAuth={...s,styles:0!=s.styles},0!=s.styles&&n.options.css.push("@strands.gg/accui/style.css");const a="es.js";e.addPlugin({src:r.resolve(`./runtime/plugin.client.${a}`),mode:"client"}),e.addPlugin({src:r.resolve(`./runtime/plugin.server.${a}`),mode:"server"}),e.addPlugin({src:r.resolve(`./runtime/plugins/auth-interceptor.client.${a}`),mode:"client"}),e.addRouteMiddleware({name:"auth",path:r.resolve(`./runtime/middleware/auth.global.${a}`),global:1}),n.hook("pages:extend",e=>{}),e.addImports([{name:"useStrandsAuth",as:"useStrandsAuth",from:r.resolve(`./runtime/composables/useStrandsAuth.${a}`)},{name:"useAuthUser",as:"useAuthUser",from:r.resolve(`./runtime/composables/useStrandsAuth.${a}`)},{name:"useAuthState",as:"useAuthState",from:r.resolve(`./runtime/composables/useStrandsAuth.${a}`)},{name:"useAuthenticatedFetch",as:"useAuthenticatedFetch",from:r.resolve(`./runtime/composables/useAuthenticatedFetch.${a}`)}]);const u=["StrandsAuth","StrandsSignIn","StrandsSignUp","StrandsCompleteSignUp","StrandsUserProfile","StrandsUserButton","StrandsPasswordReset","StrandsMFASetup","StrandsConfigProvider","SignedIn","SignedOut","StrandsLogo","StrandsSecuredFooter","StrandsUiAlert","StrandsUiButton","StrandsUiCard","StrandsUiInput","StrandsUiLink","StrandsUiTabs","StrandsUiLoader"];for(const t of u)e.addComponent({name:t,export:t,filePath:"@strands.gg/accui"});n.hook("prepare:types",e=>{e.references.push({types:"@strands.gg/auth-nuxt"})})}});module.exports=s;
@@ -1,4 +1,6 @@
1
1
  import { defineNuxtModule, createResolver, addPlugin, addRouteMiddleware, addImports, addComponent } from "@nuxt/kit";
2
+ import "./runtime/composables/useStrandsAuth-8b_bomlH.js";
3
+ import "./runtime/composables/useAuthenticatedFetch-DToDCO6a.js";
2
4
  const moduleDefaults = {
3
5
  baseUrl: "https://your-api.example.com",
4
6
  accentColor: "#EA00A8",
@@ -1,5 +1,5 @@
1
1
  import { useRuntimeConfig } from "nuxt/app";
2
- import { useStrandsAuth } from "./useStrandsAuth.es.js";
2
+ import { useStrandsAuth } from "./useStrandsAuth-8b_bomlH.js";
3
3
  function useAuthenticatedFetch() {
4
4
  const config = useRuntimeConfig().public["strandsAuth"];
5
5
  const { currentSession, refreshToken, getAuthHeaders } = useStrandsAuth();