@strands.gg/accui 2.7.0 → 2.7.2

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 (59) hide show
  1. package/dist/accui.css +1 -0
  2. package/dist/index.cjs.js +1 -0
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.es.js +40821 -0
  5. package/dist/nuxt/module.cjs.js +1 -0
  6. package/dist/nuxt/module.d.ts +5 -0
  7. package/dist/nuxt/module.es.js +193 -0
  8. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.cjs.js +1 -0
  9. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.es.js +134 -0
  10. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +1 -0
  11. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +56 -0
  12. package/dist/nuxt/runtime/middleware/auth.global.cjs.js +1 -0
  13. package/dist/nuxt/runtime/middleware/auth.global.es.js +54 -0
  14. package/dist/nuxt/runtime/plugin.client.cjs.js +1 -0
  15. package/dist/nuxt/runtime/plugin.client.es.js +26 -0
  16. package/dist/nuxt/runtime/plugin.server.cjs.js +1 -0
  17. package/dist/nuxt/runtime/plugin.server.es.js +17 -0
  18. package/dist/nuxt/runtime/plugins/auth-interceptor.client.cjs.js +1 -0
  19. package/dist/nuxt/runtime/plugins/auth-interceptor.client.es.js +77 -0
  20. package/dist/nuxt.cjs.js +1 -0
  21. package/dist/nuxt.d.ts +2 -0
  22. package/dist/nuxt.es.js +11 -0
  23. package/dist/types/index.d.ts +292 -1
  24. package/dist/useStrandsAuth-BqNW7g0R.cjs.js +1 -0
  25. package/dist/useStrandsAuth-GX6lPddh.es.js +913 -0
  26. package/dist/useStrandsConfig-BUmt8HfH.cjs.js +1 -0
  27. package/dist/useStrandsConfig-f200kXFG.es.js +238 -0
  28. package/package.json +1 -1
  29. package/dist/shared/defaults.d.ts +0 -1
  30. package/dist/utils/colors.d.ts +0 -1
  31. package/dist/utils/index.d.ts +0 -1
  32. package/dist/utils/slots.d.ts +0 -1
  33. package/dist/utils/validation.d.ts +0 -1
  34. package/dist/vue/components/StrandsNav/index.d.ts +0 -1
  35. package/dist/vue/components/icons/index.d.ts +0 -1
  36. package/dist/vue/components/index.d.ts +0 -1
  37. package/dist/vue/composables/useAuthenticatedFetch.d.ts +0 -1
  38. package/dist/vue/composables/useDarkMode.d.ts +0 -1
  39. package/dist/vue/composables/useFloatingPosition.d.ts +0 -1
  40. package/dist/vue/composables/useModalStack.d.ts +0 -1
  41. package/dist/vue/composables/useOAuthProviders.d.ts +0 -1
  42. package/dist/vue/composables/useStrandsAuth.d.ts +0 -1
  43. package/dist/vue/composables/useStrandsConfig.d.ts +0 -1
  44. package/dist/vue/composables/useStrandsMfa.d.ts +0 -1
  45. package/dist/vue/composables/useTheme.d.ts +0 -1
  46. package/dist/vue/index.d.ts +0 -1
  47. package/dist/vue/plugins/StrandsUIPlugin.d.ts +0 -1
  48. package/dist/vue/ui/UiButton/index.d.ts +0 -1
  49. package/dist/vue/ui/index.d.ts +0 -1
  50. package/dist/vue/utils/contrast.d.ts +0 -1
  51. package/dist/vue/utils/debounce.d.ts +0 -1
  52. package/dist/vue/utils/fontPreloader.d.ts +0 -1
  53. package/dist/vue/utils/iconProps.d.ts +0 -1
  54. package/dist/vue/utils/lazyComponents.d.ts +0 -1
  55. package/dist/vue/utils/levels.d.ts +0 -1
  56. package/dist/vue/utils/modalStack.d.ts +0 -1
  57. package/dist/vue/utils/performanceInit.d.ts +0 -1
  58. package/dist/vue/utils/requestCache.d.ts +0 -1
  59. package/dist/vue/utils/sounds.d.ts +0 -1
@@ -0,0 +1 @@
1
+ "use strict";const e=require("vue"),i={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},a=Symbol("strands-config"),s=e.ref(null);function t(e){if("undefined"==typeof window||!document.documentElement)return;if("undefined"!=typeof CSS&&CSS.registerProperty)try{CSS.registerProperty({name:"--strands-accent",syntax:"<color>",inherits:1,initialValue:e})}catch(a){}document.documentElement.style.setProperty("--strands-accent",e),document.documentElement.style.setProperty("--accui-strands-accent",e);const i={"--accui-strands-50":`color-mix(in srgb, ${e} 10%, white)`,"--accui-strands-100":`color-mix(in srgb, ${e} 20%, white)`,"--accui-strands-200":`color-mix(in srgb, ${e} 30%, white)`,"--accui-strands-300":`color-mix(in srgb, ${e} 40%, white)`,"--accui-strands-400":`color-mix(in srgb, ${e} 70%, white)`,"--accui-strands-500":e,"--accui-strands-600":`color-mix(in srgb, ${e} 85%, black)`,"--accui-strands-700":`color-mix(in srgb, ${e} 70%, black)`,"--accui-strands-800":`color-mix(in srgb, ${e} 55%, black)`,"--accui-strands-900":`color-mix(in srgb, ${e} 40%, black)`,"--accui-strands-950":`color-mix(in srgb, ${e} 25%, black)`};for(const[s,t]of Object.entries(i))document.documentElement.style.setProperty(s,t)}exports.STRANDS_AUTH_DEFAULTS=i,exports.provideStrandsConfig=function(i){if(s.value=i,"undefined"!=typeof window&&document.documentElement){const e=void 0!==i.useSquircle?i.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",e?"1":"0"),i.accentColor&&t(i.accentColor)}try{e.provide(a,i)}catch(n){}},exports.setStrandsConfig=function(e){if(s.value=e,"undefined"!=typeof window&&document.documentElement){const i=void 0!==e.useSquircle?e.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",i?"1":"0"),e.accentColor&&t(e.accentColor)}},exports.useStrandsConfig=function(t){let n=null;try{n=e.inject(a,null)}catch(u){n=null}let r=null;try{if("undefined"!=typeof window)if(window.__STRANDS_CONFIG__)r=window.__STRANDS_CONFIG__;else if(window.__NUXT__){const e=window.__NUXT__;r=e?.config?.public?.strandsAuth||e?.public?.strandsAuth||e?.strandsAuth}}catch(u){}const o=e.computed(()=>{const e={...i,...t||{},...n||{},...s.value||{},...r||{}};if(e.baseUrl,"undefined"!=typeof window&&document.documentElement){const i=void 0!==e.useSquircle?e.useSquircle:1;document.documentElement.style.setProperty("--strands-allow-squircle",i?"1":"0"),e.accentColor&&document.documentElement.style.setProperty("--strands-accent",e.accentColor)}return e}),c=e.computed(()=>{const e=o.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:o,endpoints:c,getUrl:e=>{const i=o.value;if(!i.baseUrl)throw new Error("Base URL is required in configuration");let a;return a="string"==typeof e&&e in c.value?c.value[e]:"string"==typeof e?e:c.value[e],`${i.baseUrl.replace(/\/$/,"")}${a.startsWith("/")?a:`/${a}`}`},getSupportEmail:()=>o.value.supportEmail||null}};
@@ -0,0 +1,238 @@
1
+ import { ref, inject, computed, provide } from "vue";
2
+ const STRANDS_AUTH_DEFAULTS = {
3
+ baseUrl: "https://your-api.example.com",
4
+ accentColor: "#EA00A8",
5
+ redirectUrl: "/",
6
+ onSignInUrl: "/dashboard",
7
+ onSignOutUrl: "/",
8
+ autoRefresh: true,
9
+ refreshInterval: 4,
10
+ protectedRoutes: [],
11
+ guestOnlyRoutes: ["/auth", "/login", "/register"],
12
+ devMode: false,
13
+ styles: true,
14
+ endpoints: {},
15
+ useSquircle: true
16
+ };
17
+ const DEFAULT_ENDPOINTS = {
18
+ signIn: "/api/v1/auth/sign-in",
19
+ signUp: "/api/v1/auth/sign-up",
20
+ signOut: "/api/v1/auth/sign-out",
21
+ refresh: "/api/v1/auth/refresh",
22
+ passwordReset: "/api/v1/auth/password-reset",
23
+ passwordResetConfirm: "/api/v1/auth/password-reset/confirm",
24
+ completeRegistration: "/api/v1/auth/complete-registration",
25
+ profile: "/api/v1/user/profile",
26
+ verifyEmail: "/api/v1/auth/verify-email",
27
+ oauthProviders: "/api/v1/oauth/providers",
28
+ oauthProvider: "/api/v1/oauth/providers/{provider_id}",
29
+ changeEmail: "/api/v1/user/change-email",
30
+ avatar: "/api/v1/user/avatar",
31
+ settings: "/api/v1/user/settings",
32
+ // Username endpoints
33
+ changeUsername: "/api/v1/user/username",
34
+ usernameCooldown: "/api/v1/user/username/cooldown",
35
+ checkUsernameAvailability: "/api/v1/username/{username}/available",
36
+ // MFA endpoints
37
+ mfaDevices: "/api/v1/mfa/devices",
38
+ mfaTotpSetup: "/api/v1/mfa/totp/setup",
39
+ mfaTotpVerify: "/api/v1/mfa/totp/verify",
40
+ mfaEmailSetup: "/api/v1/mfa/email/setup",
41
+ mfaEmailSend: "/api/v1/mfa/email/send",
42
+ mfaEmailVerify: "/api/v1/mfa/email/verify",
43
+ mfaDeviceDisable: "/api/v1/mfa/device/disable",
44
+ mfaBackupCodes: "/api/v1/mfa/backup-codes/regenerate",
45
+ // Hardware key endpoints
46
+ mfaHardwareStartRegistration: "/api/v1/mfa/hardware/start-registration",
47
+ mfaHardwareCompleteRegistration: "/api/v1/mfa/hardware/complete-registration",
48
+ // MFA sign-in specific endpoints
49
+ mfaSigninSendEmail: "/api/v1/auth/mfa/email/send",
50
+ mfaSigninVerify: "/api/v1/auth/mfa/verify",
51
+ mfaBackupCodeVerify: "/api/v1/auth/mfa/backup-code/verify",
52
+ mfaWebAuthnChallenge: "/api/v1/auth/mfa/webauthn/challenge",
53
+ // Session management endpoints
54
+ sessions: "/api/v1/sessions",
55
+ sessionsStats: "/api/v1/sessions/stats",
56
+ sessionRevoke: "/api/v1/sessions/{session_id}/revoke",
57
+ sessionsRevokeAll: "/api/v1/sessions/revoke-all"
58
+ };
59
+ const STRANDS_CONFIG_KEY = Symbol("strands-config");
60
+ const globalConfig = ref(null);
61
+ function generateColorShades(accentColor) {
62
+ if (typeof window === "undefined" || !document.documentElement) return;
63
+ if (typeof CSS !== "undefined" && CSS.registerProperty) {
64
+ try {
65
+ CSS.registerProperty({
66
+ name: "--strands-accent",
67
+ syntax: "<color>",
68
+ inherits: true,
69
+ initialValue: accentColor
70
+ });
71
+ } catch (e) {
72
+ }
73
+ }
74
+ document.documentElement.style.setProperty("--strands-accent", accentColor);
75
+ document.documentElement.style.setProperty("--accui-strands-accent", accentColor);
76
+ const shades = {
77
+ "--accui-strands-50": `color-mix(in srgb, ${accentColor} 10%, white)`,
78
+ "--accui-strands-100": `color-mix(in srgb, ${accentColor} 20%, white)`,
79
+ "--accui-strands-200": `color-mix(in srgb, ${accentColor} 30%, white)`,
80
+ "--accui-strands-300": `color-mix(in srgb, ${accentColor} 40%, white)`,
81
+ "--accui-strands-400": `color-mix(in srgb, ${accentColor} 70%, white)`,
82
+ "--accui-strands-500": accentColor,
83
+ "--accui-strands-600": `color-mix(in srgb, ${accentColor} 85%, black)`,
84
+ "--accui-strands-700": `color-mix(in srgb, ${accentColor} 70%, black)`,
85
+ "--accui-strands-800": `color-mix(in srgb, ${accentColor} 55%, black)`,
86
+ "--accui-strands-900": `color-mix(in srgb, ${accentColor} 40%, black)`,
87
+ "--accui-strands-950": `color-mix(in srgb, ${accentColor} 25%, black)`
88
+ };
89
+ for (const [property, value] of Object.entries(shades)) {
90
+ document.documentElement.style.setProperty(property, value);
91
+ }
92
+ }
93
+ function provideStrandsConfig(config) {
94
+ globalConfig.value = config;
95
+ if (typeof window !== "undefined" && document.documentElement) {
96
+ const useSquircle = config.useSquircle !== void 0 ? config.useSquircle : true;
97
+ document.documentElement.style.setProperty("--strands-allow-squircle", useSquircle ? "1" : "0");
98
+ if (config.accentColor) {
99
+ generateColorShades(config.accentColor);
100
+ }
101
+ }
102
+ try {
103
+ provide(STRANDS_CONFIG_KEY, config);
104
+ } catch (error) {
105
+ console.warn("[Strands Auth] Could not provide config via Vue provide/inject. Config available via global state only.", error);
106
+ }
107
+ }
108
+ function useStrandsConfig(fallbackConfig) {
109
+ let injectedConfig = null;
110
+ try {
111
+ injectedConfig = inject(STRANDS_CONFIG_KEY, null);
112
+ } catch (error) {
113
+ injectedConfig = null;
114
+ }
115
+ let nuxtConfig = null;
116
+ try {
117
+ if (typeof window !== "undefined") {
118
+ if (window.__STRANDS_CONFIG__) {
119
+ nuxtConfig = window.__STRANDS_CONFIG__;
120
+ } else if (window.__NUXT__) {
121
+ const nuxtData = window.__NUXT__;
122
+ nuxtConfig = nuxtData?.config?.public?.strandsAuth || nuxtData?.public?.strandsAuth || nuxtData?.strandsAuth;
123
+ }
124
+ }
125
+ } catch (error) {
126
+ console.error("[Strands Auth] Error accessing runtime configuration:", error);
127
+ }
128
+ const activeConfig = computed(() => {
129
+ const config = {
130
+ ...STRANDS_AUTH_DEFAULTS,
131
+ ...fallbackConfig || {},
132
+ ...injectedConfig || {},
133
+ ...globalConfig.value || {},
134
+ ...nuxtConfig || {}
135
+ };
136
+ if (config.baseUrl === STRANDS_AUTH_DEFAULTS.baseUrl && typeof window === "undefined") {
137
+ console.warn("[Strands Auth] No baseUrl configured for SSR. Please provide a baseUrl in your strandsAuth configuration.");
138
+ }
139
+ if (typeof window !== "undefined" && document.documentElement) {
140
+ const useSquircle = config.useSquircle !== void 0 ? config.useSquircle : true;
141
+ document.documentElement.style.setProperty("--strands-allow-squircle", useSquircle ? "1" : "0");
142
+ if (config.accentColor) {
143
+ document.documentElement.style.setProperty("--strands-accent", config.accentColor);
144
+ }
145
+ }
146
+ return config;
147
+ });
148
+ const endpoints = computed(() => {
149
+ const config = activeConfig.value;
150
+ const customEndpoints = config.endpoints || {};
151
+ return {
152
+ signIn: customEndpoints.signIn || DEFAULT_ENDPOINTS.signIn,
153
+ signUp: customEndpoints.signUp || DEFAULT_ENDPOINTS.signUp,
154
+ signOut: customEndpoints.signOut || DEFAULT_ENDPOINTS.signOut,
155
+ refresh: customEndpoints.refresh || DEFAULT_ENDPOINTS.refresh,
156
+ passwordReset: customEndpoints.passwordReset || DEFAULT_ENDPOINTS.passwordReset,
157
+ passwordResetConfirm: customEndpoints.passwordResetConfirm || DEFAULT_ENDPOINTS.passwordResetConfirm,
158
+ completeRegistration: customEndpoints.completeRegistration || DEFAULT_ENDPOINTS.completeRegistration,
159
+ profile: customEndpoints.profile || DEFAULT_ENDPOINTS.profile,
160
+ verifyEmail: customEndpoints.verifyEmail || DEFAULT_ENDPOINTS.verifyEmail,
161
+ oauthProviders: customEndpoints.oauthProviders || DEFAULT_ENDPOINTS.oauthProviders,
162
+ oauthProvider: customEndpoints.oauthProvider || DEFAULT_ENDPOINTS.oauthProvider,
163
+ changeEmail: customEndpoints.changeEmail || DEFAULT_ENDPOINTS.changeEmail,
164
+ avatar: customEndpoints.avatar || DEFAULT_ENDPOINTS.avatar,
165
+ settings: customEndpoints.settings || DEFAULT_ENDPOINTS.settings,
166
+ // Username endpoints
167
+ changeUsername: customEndpoints.changeUsername || DEFAULT_ENDPOINTS.changeUsername,
168
+ usernameCooldown: customEndpoints.usernameCooldown || DEFAULT_ENDPOINTS.usernameCooldown,
169
+ checkUsernameAvailability: customEndpoints.checkUsernameAvailability || DEFAULT_ENDPOINTS.checkUsernameAvailability,
170
+ // MFA endpoints
171
+ mfaDevices: customEndpoints.mfaDevices || DEFAULT_ENDPOINTS.mfaDevices,
172
+ mfaTotpSetup: customEndpoints.mfaTotpSetup || DEFAULT_ENDPOINTS.mfaTotpSetup,
173
+ mfaTotpVerify: customEndpoints.mfaTotpVerify || DEFAULT_ENDPOINTS.mfaTotpVerify,
174
+ mfaEmailSetup: customEndpoints.mfaEmailSetup || DEFAULT_ENDPOINTS.mfaEmailSetup,
175
+ mfaEmailSend: customEndpoints.mfaEmailSend || DEFAULT_ENDPOINTS.mfaEmailSend,
176
+ mfaEmailVerify: customEndpoints.mfaEmailVerify || DEFAULT_ENDPOINTS.mfaEmailVerify,
177
+ mfaDeviceDisable: customEndpoints.mfaDeviceDisable || DEFAULT_ENDPOINTS.mfaDeviceDisable,
178
+ mfaBackupCodes: customEndpoints.mfaBackupCodes || DEFAULT_ENDPOINTS.mfaBackupCodes,
179
+ // Hardware key endpoints
180
+ mfaHardwareStartRegistration: customEndpoints.mfaHardwareStartRegistration || DEFAULT_ENDPOINTS.mfaHardwareStartRegistration,
181
+ mfaHardwareCompleteRegistration: customEndpoints.mfaHardwareCompleteRegistration || DEFAULT_ENDPOINTS.mfaHardwareCompleteRegistration,
182
+ // MFA sign-in specific endpoints
183
+ mfaSigninSendEmail: customEndpoints.mfaSigninSendEmail || DEFAULT_ENDPOINTS.mfaSigninSendEmail,
184
+ mfaSigninVerify: customEndpoints.mfaSigninVerify || DEFAULT_ENDPOINTS.mfaSigninVerify,
185
+ mfaBackupCodeVerify: customEndpoints.mfaBackupCodeVerify || DEFAULT_ENDPOINTS.mfaBackupCodeVerify,
186
+ mfaWebAuthnChallenge: customEndpoints.mfaWebAuthnChallenge || DEFAULT_ENDPOINTS.mfaWebAuthnChallenge,
187
+ // Session management endpoints
188
+ sessions: customEndpoints.sessions || DEFAULT_ENDPOINTS.sessions,
189
+ sessionsStats: customEndpoints.sessionsStats || DEFAULT_ENDPOINTS.sessionsStats,
190
+ sessionRevoke: customEndpoints.sessionRevoke || DEFAULT_ENDPOINTS.sessionRevoke,
191
+ sessionsRevokeAll: customEndpoints.sessionsRevokeAll || DEFAULT_ENDPOINTS.sessionsRevokeAll
192
+ };
193
+ });
194
+ const getUrl = (endpoint) => {
195
+ const config = activeConfig.value;
196
+ if (!config.baseUrl) {
197
+ throw new Error("Base URL is required in configuration");
198
+ }
199
+ let endpointPath;
200
+ if (typeof endpoint === "string" && endpoint in endpoints.value) {
201
+ endpointPath = endpoints.value[endpoint];
202
+ } else if (typeof endpoint === "string") {
203
+ endpointPath = endpoint;
204
+ } else {
205
+ endpointPath = endpoints.value[endpoint];
206
+ }
207
+ const baseUrl = config.baseUrl.replace(/\/$/, "");
208
+ const path = endpointPath.startsWith("/") ? endpointPath : `/${endpointPath}`;
209
+ console.debug(`[Strands Auth] Constructing URL for endpoint "${endpoint}": ${baseUrl}${path}`);
210
+ return `${baseUrl}${path}`;
211
+ };
212
+ const getSupportEmail = () => {
213
+ const config = activeConfig.value;
214
+ return config.supportEmail || null;
215
+ };
216
+ return {
217
+ config: activeConfig,
218
+ endpoints,
219
+ getUrl,
220
+ getSupportEmail
221
+ };
222
+ }
223
+ function setStrandsConfig(config) {
224
+ globalConfig.value = config;
225
+ if (typeof window !== "undefined" && document.documentElement) {
226
+ const useSquircle = config.useSquircle !== void 0 ? config.useSquircle : true;
227
+ document.documentElement.style.setProperty("--strands-allow-squircle", useSquircle ? "1" : "0");
228
+ if (config.accentColor) {
229
+ generateColorShades(config.accentColor);
230
+ }
231
+ }
232
+ }
233
+ export {
234
+ STRANDS_AUTH_DEFAULTS as S,
235
+ provideStrandsConfig as p,
236
+ setStrandsConfig as s,
237
+ useStrandsConfig as u
238
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strands.gg/accui",
3
- "version": "2.7.0",
3
+ "version": "2.7.2",
4
4
  "description": "Strands Authentication UI Components",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs.js",
@@ -1 +0,0 @@
1
- export * from '../../../src/shared/defaults.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/utils/colors.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/utils/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/utils/slots.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/utils/validation.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/components/StrandsNav/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/components/icons/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/components/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useAuthenticatedFetch.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useDarkMode.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useFloatingPosition.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useModalStack.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useOAuthProviders.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useStrandsAuth.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useStrandsConfig.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useStrandsMfa.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/composables/useTheme.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/plugins/StrandsUIPlugin.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/ui/UiButton/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/ui/index.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/contrast.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/debounce.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/fontPreloader.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/iconProps.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/lazyComponents.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/levels.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/modalStack.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/performanceInit.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/requestCache.ts';
@@ -1 +0,0 @@
1
- export * from '../../../src/vue/utils/sounds.ts';