@strands.gg/accui 2.8.0 → 2.9.0

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 (70) hide show
  1. package/dist/index.d.ts +3 -17
  2. package/dist/nuxt/module.d.ts +4 -5
  3. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.d.ts +20 -0
  4. package/dist/nuxt/runtime/composables/useStrandsAuth.d.ts +65 -0
  5. package/dist/nuxt/runtime/middleware/auth.d.ts +6 -0
  6. package/dist/nuxt/runtime/middleware/auth.global.d.ts +2 -0
  7. package/dist/nuxt/runtime/middleware/guest.d.ts +6 -0
  8. package/dist/nuxt/runtime/plugin.client.d.ts +2 -0
  9. package/dist/nuxt/runtime/plugin.server.d.ts +2 -0
  10. package/dist/nuxt/runtime/plugins/auth-interceptor.client.d.ts +2 -0
  11. package/dist/nuxt/types.d.ts +45 -0
  12. package/dist/nuxt.d.ts +3 -1
  13. package/dist/shared/defaults.d.ts +2 -0
  14. package/dist/types/composables.d.ts +96 -0
  15. package/dist/types/index.d.ts +210 -260
  16. package/dist/utils/colors.d.ts +10 -0
  17. package/dist/utils/index.d.ts +2 -0
  18. package/dist/utils/slots.d.ts +1 -0
  19. package/dist/utils/validation.d.ts +12 -0
  20. package/dist/vue/components/StrandsNav/index.d.ts +8 -0
  21. package/dist/vue/components/StrandsNav/types.d.ts +12 -0
  22. package/dist/vue/components/icons/index.d.ts +2 -0
  23. package/dist/vue/components/index.d.ts +27 -0
  24. package/dist/vue/composables/useAuthenticatedFetch.d.ts +20 -0
  25. package/dist/vue/composables/useDarkMode.d.ts +48 -0
  26. package/dist/vue/composables/useFloatingPosition.d.ts +22 -0
  27. package/dist/vue/composables/useModalStack.d.ts +86 -0
  28. package/dist/vue/composables/useOAuthProviders.d.ts +73 -0
  29. package/dist/vue/composables/useStrandsAuth.d.ts +2 -0
  30. package/dist/vue/composables/useStrandsConfig.d.ts +5 -0
  31. package/dist/vue/composables/useStrandsMfa.d.ts +36 -0
  32. package/dist/vue/composables/useTheme.d.ts +18 -0
  33. package/dist/vue/index.d.ts +16 -0
  34. package/dist/vue/plugins/StrandsUIPlugin.d.ts +20 -0
  35. package/dist/vue/ui/UiButton/index.d.ts +13 -0
  36. package/dist/vue/ui/index.d.ts +54 -0
  37. package/dist/vue/utils/contrast.d.ts +75 -0
  38. package/dist/vue/utils/debounce.d.ts +12 -0
  39. package/dist/vue/utils/fontPreloader.d.ts +11 -0
  40. package/dist/vue/utils/iconProps.d.ts +9 -0
  41. package/dist/vue/utils/lazyComponents.d.ts +4 -0
  42. package/dist/vue/utils/levels.d.ts +27 -0
  43. package/dist/vue/utils/modalStack.d.ts +31 -0
  44. package/dist/vue/utils/performanceInit.d.ts +40 -0
  45. package/dist/vue/utils/requestCache.d.ts +49 -0
  46. package/dist/vue/utils/sounds.d.ts +57 -0
  47. package/package.json +2 -3
  48. package/dist/accui.css +0 -1
  49. package/dist/index.cjs.js +0 -1
  50. package/dist/index.es.js +0 -40821
  51. package/dist/nuxt/module.cjs.js +0 -1
  52. package/dist/nuxt/module.es.js +0 -193
  53. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.cjs.js +0 -1
  54. package/dist/nuxt/runtime/composables/useAuthenticatedFetch.es.js +0 -134
  55. package/dist/nuxt/runtime/composables/useStrandsAuth.cjs.js +0 -1
  56. package/dist/nuxt/runtime/composables/useStrandsAuth.es.js +0 -56
  57. package/dist/nuxt/runtime/middleware/auth.global.cjs.js +0 -1
  58. package/dist/nuxt/runtime/middleware/auth.global.es.js +0 -54
  59. package/dist/nuxt/runtime/plugin.client.cjs.js +0 -1
  60. package/dist/nuxt/runtime/plugin.client.es.js +0 -26
  61. package/dist/nuxt/runtime/plugin.server.cjs.js +0 -1
  62. package/dist/nuxt/runtime/plugin.server.es.js +0 -17
  63. package/dist/nuxt/runtime/plugins/auth-interceptor.client.cjs.js +0 -1
  64. package/dist/nuxt/runtime/plugins/auth-interceptor.client.es.js +0 -77
  65. package/dist/nuxt.cjs.js +0 -1
  66. package/dist/nuxt.es.js +0 -11
  67. package/dist/useStrandsAuth-Ca9Zqmfy.cjs.js +0 -1
  68. package/dist/useStrandsAuth-jI_X_wiK.es.js +0 -916
  69. package/dist/useStrandsConfig-CLSzvTvE.cjs.js +0 -1
  70. package/dist/useStrandsConfig-XmPqJn_B.es.js +0 -241
package/dist/index.d.ts CHANGED
@@ -1,21 +1,7 @@
1
- // Main exports
1
+ import './styles/base.css';
2
2
  export * from './vue/components';
3
3
  export * from './vue/ui';
4
4
  export { default as StrandsUIPlugin } from './vue/plugins/StrandsUIPlugin';
5
-
6
- // Export Vue composables directly (matches src/index.ts)
7
- export declare function useStrandsAuth(): any;
8
- export declare function useStrandsConfig(fallbackConfig?: any): any;
9
- export declare function setStrandsConfig(config: any): void;
10
- export declare function provideStrandsConfig(config: any): void;
11
- export declare function useOAuthProviders(): any;
12
- export declare function useAuthenticatedFetch(): any;
13
- export declare const $authFetch: any;
14
- export declare function useTheme(): any;
15
- export declare function useFloatingPosition(reference: any, floating: any, options?: any): any;
16
- export declare function useModalStack(): any;
17
- export declare function useModalTeleport(): any;
18
- export declare function useGlobalModalStack(): any;
19
-
5
+ export { useStrandsAuth, useStrandsConfig, setStrandsConfig, provideStrandsConfig, useOAuthProviders, useAuthenticatedFetch, $authFetch, useTheme, useFloatingPosition, useModalStack, useModalTeleport, useGlobalModalStack } from './vue';
20
6
  export * from './utils';
21
- export type * from './types/index';
7
+ export type * from './types/index';
@@ -1,5 +1,4 @@
1
- import type { StrandsAuthConfig } from '../types/index';
2
- export type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types/index';
3
-
4
- declare const _default: any;
5
- export default _default;
1
+ export type { StrandsAuthConfig, StrandsAuthEndpoints } from '../types';
2
+ import type { StrandsAuthConfig } from '../types';
3
+ declare const _default: import("@nuxt/schema").NuxtModule<StrandsAuthConfig, StrandsAuthConfig, false>;
4
+ export default _default;
@@ -0,0 +1,20 @@
1
+ import type { AuthenticatedFetchOptions } from '../../../types';
2
+ /**
3
+ * Enhanced fetch composable that automatically includes auth headers
4
+ * and handles token refresh for API requests
5
+ */
6
+ export declare function useAuthenticatedFetch(): {
7
+ authenticatedFetch: (url: string | URL, options?: AuthenticatedFetchOptions) => Promise<Response>;
8
+ get: (url: string | URL, options?: AuthenticatedFetchOptions) => Promise<Response>;
9
+ post: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
10
+ put: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
11
+ delete: (url: string | URL, options?: AuthenticatedFetchOptions) => Promise<Response>;
12
+ patch: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
13
+ };
14
+ export declare const $authFetch: {
15
+ get: (url: string | URL, options?: AuthenticatedFetchOptions) => Promise<Response>;
16
+ post: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
17
+ put: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
18
+ delete: (url: string | URL, options?: AuthenticatedFetchOptions) => Promise<Response>;
19
+ patch: (url: string | URL, body?: any, options?: AuthenticatedFetchOptions) => Promise<Response>;
20
+ };
@@ -0,0 +1,65 @@
1
+ import type { ComputedRef } from 'vue';
2
+ import type { User } from '../../../types';
3
+ export declare const useStrandsAuth: () => {
4
+ initialize: () => Promise<void>;
5
+ signIn: (credentials: {
6
+ email: string;
7
+ password: string;
8
+ }) => Promise<any>;
9
+ signUp: (userData: {
10
+ email: string;
11
+ }) => Promise<void>;
12
+ signOut: () => Promise<void>;
13
+ user: ComputedRef<User | null>;
14
+ currentUser: ComputedRef<User | null>;
15
+ currentSession: ComputedRef<import("../../..").Session | null>;
16
+ isAuthenticated: ComputedRef<boolean>;
17
+ isLoading: ComputedRef<boolean>;
18
+ loading: ComputedRef<boolean>;
19
+ loadingMessage: ComputedRef<string>;
20
+ isInitializing: ComputedRef<boolean>;
21
+ isSigningIn: ComputedRef<boolean>;
22
+ isSigningUp: ComputedRef<boolean>;
23
+ isSigningOut: ComputedRef<boolean>;
24
+ isRefreshingToken: ComputedRef<boolean>;
25
+ isSendingMfaEmail: ComputedRef<boolean>;
26
+ isVerifyingMfa: ComputedRef<boolean>;
27
+ mfaRequired: ComputedRef<boolean>;
28
+ mfaSessionId: ComputedRef<string | null>;
29
+ availableMfaMethods: ComputedRef<import("../../..").MfaDevice[]>;
30
+ refreshToken: () => Promise<boolean>;
31
+ fetchProfile: () => Promise<User>;
32
+ updateProfile: (updates: Partial<User>) => Promise<User>;
33
+ updateUserSettings: (settings: any) => Promise<User>;
34
+ changeEmail: (newEmail: string, password: string) => Promise<void>;
35
+ changeUsername: (newUsername: string) => Promise<void>;
36
+ getUsernameCooldown: () => Promise<{
37
+ canChange: boolean;
38
+ cooldownEndsAt?: Date;
39
+ }>;
40
+ checkUsernameAvailability: (username: string) => Promise<{
41
+ available: boolean;
42
+ suggestion?: string;
43
+ }>;
44
+ getUserSessions: () => Promise<import("../../..").SessionInfo[]>;
45
+ getSessionStats: () => Promise<import("../../..").SessionStats>;
46
+ revokeSession: (sessionId: string) => Promise<boolean>;
47
+ revokeAllOtherSessions: () => Promise<boolean>;
48
+ forceReInit: () => void;
49
+ setAuthData: (authData: any) => Promise<void>;
50
+ verifyMfa: (code: string, method?: string) => Promise<any>;
51
+ sendMfaEmailCode: (deviceId: string) => Promise<any>;
52
+ getMfaWebAuthnChallenge: (deviceId: string) => Promise<any>;
53
+ registerHardwareKey: (deviceName: string, accessToken: string, deviceType?: "hardware" | "passkey") => Promise<any>;
54
+ completeHardwareKeyRegistration: (deviceId: string, credential: any, accessToken: string) => Promise<any>;
55
+ startTokenRefreshTimer: () => void;
56
+ stopTokenRefreshTimer: () => void;
57
+ getAuthHeaders: () => Record<string, string>;
58
+ };
59
+ export declare const useAuthUser: () => {
60
+ user: ComputedRef<User | null>;
61
+ };
62
+ export declare const useAuthState: () => {
63
+ isAuthenticated: ComputedRef<boolean>;
64
+ isLoading: ComputedRef<boolean>;
65
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Middleware to protect routes - requires authentication
3
+ * Usage: Add `middleware: 'auth'` to your page
4
+ */
5
+ declare const _default: import("nuxt/app").RouteMiddleware;
6
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").RouteMiddleware;
2
+ export default _default;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Middleware for guest-only routes - redirects if authenticated
3
+ * Usage: Add `middleware: 'guest'` to your page
4
+ */
5
+ declare const _default: import("nuxt/app").RouteMiddleware;
6
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("nuxt/app").Plugin<Record<string, unknown>> & import("nuxt/app").ObjectPlugin<Record<string, unknown>>;
2
+ export default _default;
@@ -0,0 +1,45 @@
1
+ export interface StrandsUser {
2
+ id: string;
3
+ email: string;
4
+ firstName: string;
5
+ lastName: string;
6
+ avatar?: string;
7
+ mfaEnabled: boolean;
8
+ emailVerified: boolean;
9
+ createdAt: string;
10
+ updatedAt: string;
11
+ }
12
+ export interface StrandsSession {
13
+ accessToken: string;
14
+ refreshToken: string;
15
+ expiresAt: Date;
16
+ user: StrandsUser;
17
+ }
18
+ declare module '@nuxt/schema' {
19
+ interface PublicRuntimeConfig {
20
+ strandsAuth?: {
21
+ baseUrl?: string;
22
+ applicationId?: string;
23
+ publicKey?: string;
24
+ accentColor?: string;
25
+ redirectUrl?: string;
26
+ onSignInUrl?: string;
27
+ onSignOutUrl?: string;
28
+ /** @deprecated OAuth providers are now dynamically fetched from API */
29
+ oauthProviders?: string[];
30
+ autoRefresh?: boolean;
31
+ refreshInterval?: number;
32
+ protectedRoutes?: string[];
33
+ guestOnlyRoutes?: string[];
34
+ devMode?: boolean;
35
+ };
36
+ }
37
+ }
38
+ declare module 'nuxt/app' {
39
+ interface NuxtApp {
40
+ $strandsAuth: {
41
+ accentColor: string;
42
+ };
43
+ }
44
+ }
45
+ export {};
package/dist/nuxt.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export { default } from './nuxt/module';
2
- export type { StrandsAuthConfig, StrandsAuthEndpoints } from './types/index';
2
+ export type { StrandsAuthConfig, StrandsAuthEndpoints } from './types';
3
+ export { useStrandsAuth, useAuthUser, useAuthState } from './nuxt/runtime/composables/useStrandsAuth';
4
+ export { useAuthenticatedFetch, $authFetch } from './nuxt/runtime/composables/useAuthenticatedFetch';
@@ -0,0 +1,2 @@
1
+ import type { StrandsAuthConfig } from '../types';
2
+ export declare const STRANDS_AUTH_DEFAULTS: Required<Omit<StrandsAuthConfig, 'clientId' | 'supportEmail' | 'oauth2RedirectUrl'>>;
@@ -0,0 +1,96 @@
1
+ import type { ComputedRef, Ref } from 'vue';
2
+ import type { User, Session, SignInCredentials, SignUpData, SessionInfo, SessionStats, MfaDevice, StrandsAuthConfig, StrandsAuthEndpoints, AuthenticatedFetchOptions } from './index';
3
+ export interface UseStrandsAuthReturn {
4
+ user: ComputedRef<User | null>;
5
+ currentUser: ComputedRef<User | null>;
6
+ currentSession: ComputedRef<Session | null>;
7
+ isAuthenticated: ComputedRef<boolean>;
8
+ isLoading: ComputedRef<boolean>;
9
+ loading: ComputedRef<boolean>;
10
+ loadingMessage: ComputedRef<string>;
11
+ isInitializing: ComputedRef<boolean>;
12
+ isSigningIn: ComputedRef<boolean>;
13
+ isSigningUp: ComputedRef<boolean>;
14
+ isSigningOut: ComputedRef<boolean>;
15
+ isRefreshingToken: ComputedRef<boolean>;
16
+ isSendingMfaEmail: ComputedRef<boolean>;
17
+ isVerifyingMfa: ComputedRef<boolean>;
18
+ mfaRequired: ComputedRef<boolean>;
19
+ mfaSessionId: ComputedRef<string | null>;
20
+ availableMfaMethods: ComputedRef<MfaDevice[]>;
21
+ signIn: (credentials: SignInCredentials) => Promise<any>;
22
+ signUp: (userData: SignUpData) => Promise<void>;
23
+ signOut: () => Promise<void>;
24
+ refreshToken: () => Promise<boolean>;
25
+ fetchProfile: () => Promise<User>;
26
+ updateProfile: (updates: Partial<User>) => Promise<User>;
27
+ updateUserSettings: (settings: any) => Promise<User>;
28
+ changeEmail: (newEmail: string, password: string) => Promise<void>;
29
+ changeUsername: (newUsername: string) => Promise<void>;
30
+ getUsernameCooldown: () => Promise<{
31
+ canChange: boolean;
32
+ cooldownEndsAt?: Date;
33
+ }>;
34
+ checkUsernameAvailability: (username: string) => Promise<{
35
+ available: boolean;
36
+ suggestion?: string;
37
+ }>;
38
+ getUserSessions: () => Promise<SessionInfo[]>;
39
+ getSessionStats: () => Promise<SessionStats>;
40
+ revokeSession: (sessionId: string) => Promise<boolean>;
41
+ revokeAllOtherSessions: () => Promise<boolean>;
42
+ initialize: () => Promise<void>;
43
+ forceReInit: () => void;
44
+ setAuthData: (authData: any) => Promise<void>;
45
+ verifyMfa: (code: string, method?: string) => Promise<any>;
46
+ sendMfaEmailCode: (deviceId: string) => Promise<any>;
47
+ getMfaWebAuthnChallenge: (deviceId: string) => Promise<any>;
48
+ registerHardwareKey: (deviceName: string, accessToken: string, deviceType?: 'hardware' | 'passkey') => Promise<any>;
49
+ completeHardwareKeyRegistration: (deviceId: string, credential: any, accessToken: string) => Promise<any>;
50
+ startTokenRefreshTimer: () => void;
51
+ stopTokenRefreshTimer: () => void;
52
+ getAuthHeaders: () => Record<string, string>;
53
+ }
54
+ export interface UseStrandsConfigReturn {
55
+ config: ComputedRef<StrandsAuthConfig>;
56
+ endpoints: ComputedRef<StrandsAuthEndpoints>;
57
+ getUrl: (endpoint: keyof StrandsAuthEndpoints | string) => string;
58
+ getSupportEmail: () => string | null;
59
+ }
60
+ export interface UseAuthenticatedFetchReturn {
61
+ $fetch: <T = any>(url: string, options?: AuthenticatedFetchOptions) => Promise<T>;
62
+ isLoading: Ref<boolean>;
63
+ error: Ref<Error | null>;
64
+ }
65
+ export interface UseOAuthProvidersReturn {
66
+ providers: ComputedRef<any[]>;
67
+ loading: Ref<boolean>;
68
+ fetchProviders: () => Promise<void>;
69
+ }
70
+ export interface UseThemeReturn {
71
+ isDark: Ref<boolean>;
72
+ toggleTheme: () => void;
73
+ setTheme: (dark: boolean) => void;
74
+ }
75
+ export interface UseFloatingPositionReturn {
76
+ x: Ref<number>;
77
+ y: Ref<number>;
78
+ placement: Ref<string>;
79
+ update: () => void;
80
+ }
81
+ export interface UseModalStackReturn {
82
+ modalStack: Ref<string[]>;
83
+ pushModal: (id: string) => void;
84
+ popModal: () => void;
85
+ isTopModal: (id: string) => boolean;
86
+ }
87
+ export interface UseModalTeleportReturn {
88
+ teleportTarget: Ref<string>;
89
+ updateTeleportTarget: () => void;
90
+ }
91
+ export interface UseGlobalModalStackReturn {
92
+ globalModalStack: Ref<string[]>;
93
+ addModal: (id: string) => void;
94
+ removeModal: (id: string) => void;
95
+ isTopModal: (id: string) => boolean;
96
+ }