@authon/vue 0.2.1 → 0.3.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.
- package/README.ko.md +170 -0
- package/README.md +413 -68
- package/dist/index.cjs +193 -41
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +46 -3
- package/dist/index.d.ts +46 -3
- package/dist/index.js +154 -5
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as vue from 'vue';
|
|
2
|
-
import { App, ComputedRef, PropType } from 'vue';
|
|
2
|
+
import { App, ComputedRef, Ref, PropType } from 'vue';
|
|
3
3
|
import { AuthonConfig, Authon } from '@authon/js';
|
|
4
|
-
import { AuthonUser, OAuthProviderType } from '@authon/shared';
|
|
4
|
+
import { AuthonUser, Web3Chain, Web3WalletType, Web3NonceResponse, Web3Wallet, PasskeyCredential, OAuthProviderType } from '@authon/shared';
|
|
5
5
|
|
|
6
6
|
declare const AUTHON_KEY: unique symbol;
|
|
7
7
|
interface AuthonState {
|
|
@@ -29,6 +29,49 @@ declare function useUser(): {
|
|
|
29
29
|
isLoading: ComputedRef<boolean>;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
+
interface LinkWalletParams {
|
|
33
|
+
address: string;
|
|
34
|
+
chain: Web3Chain;
|
|
35
|
+
walletType: Web3WalletType;
|
|
36
|
+
chainId?: number;
|
|
37
|
+
message: string;
|
|
38
|
+
signature: string;
|
|
39
|
+
}
|
|
40
|
+
interface UseAuthonWeb3Return {
|
|
41
|
+
getNonce: (address: string, chain: Web3Chain, walletType: Web3WalletType, chainId?: number) => Promise<Web3NonceResponse | null>;
|
|
42
|
+
verify: (message: string, signature: string, address: string, chain: Web3Chain, walletType: Web3WalletType) => Promise<boolean>;
|
|
43
|
+
listWallets: () => Promise<Web3Wallet[] | null>;
|
|
44
|
+
linkWallet: (params: LinkWalletParams) => Promise<Web3Wallet | null>;
|
|
45
|
+
unlinkWallet: (walletId: string) => Promise<boolean>;
|
|
46
|
+
isLoading: Ref<boolean>;
|
|
47
|
+
error: Ref<Error | null>;
|
|
48
|
+
}
|
|
49
|
+
declare function useAuthonWeb3(): UseAuthonWeb3Return;
|
|
50
|
+
|
|
51
|
+
interface UseAuthonPasswordlessReturn {
|
|
52
|
+
sendMagicLink: (email: string) => Promise<boolean>;
|
|
53
|
+
sendEmailOtp: (email: string) => Promise<boolean>;
|
|
54
|
+
verifyPasswordless: (opts: {
|
|
55
|
+
token?: string;
|
|
56
|
+
email?: string;
|
|
57
|
+
code?: string;
|
|
58
|
+
}) => Promise<boolean>;
|
|
59
|
+
isLoading: Ref<boolean>;
|
|
60
|
+
error: Ref<Error | null>;
|
|
61
|
+
}
|
|
62
|
+
declare function useAuthonPasswordless(): UseAuthonPasswordlessReturn;
|
|
63
|
+
|
|
64
|
+
interface UseAuthonPasskeysReturn {
|
|
65
|
+
registerPasskey: (name?: string) => Promise<PasskeyCredential | null>;
|
|
66
|
+
authenticateWithPasskey: (email?: string) => Promise<boolean>;
|
|
67
|
+
listPasskeys: () => Promise<PasskeyCredential[] | null>;
|
|
68
|
+
renamePasskey: (id: string, name: string) => Promise<PasskeyCredential | null>;
|
|
69
|
+
revokePasskey: (id: string) => Promise<boolean>;
|
|
70
|
+
isLoading: Ref<boolean>;
|
|
71
|
+
error: Ref<Error | null>;
|
|
72
|
+
}
|
|
73
|
+
declare function useAuthonPasskeys(): UseAuthonPasskeysReturn;
|
|
74
|
+
|
|
32
75
|
declare const AuthonSignIn: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
33
76
|
mode: {
|
|
34
77
|
type: () => "popup" | "embedded";
|
|
@@ -215,4 +258,4 @@ declare const AuthonSocialButtons: vue.DefineComponent<vue.ExtractPropTypes<{
|
|
|
215
258
|
labels: Partial<Record<"google" | "apple" | "kakao" | "naver" | "facebook" | "github" | "discord" | "x" | "line" | "microsoft", string>>;
|
|
216
259
|
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;
|
|
217
260
|
|
|
218
|
-
export { AUTHON_KEY, type AuthonPluginOptions, AuthonSignIn, AuthonSignUp, AuthonSignedIn, AuthonSignedOut, AuthonSocialButton, AuthonSocialButtons, type AuthonState, AuthonUserButton, createAuthon, useAuthon, useUser };
|
|
261
|
+
export { AUTHON_KEY, type AuthonPluginOptions, AuthonSignIn, AuthonSignUp, AuthonSignedIn, AuthonSignedOut, AuthonSocialButton, AuthonSocialButtons, type AuthonState, AuthonUserButton, type LinkWalletParams, type UseAuthonPasskeysReturn, type UseAuthonPasswordlessReturn, type UseAuthonWeb3Return, createAuthon, useAuthon, useAuthonPasskeys, useAuthonPasswordless, useAuthonWeb3, useUser };
|
package/dist/index.js
CHANGED
|
@@ -78,8 +78,154 @@ function useUser() {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
|
|
81
|
+
// src/useAuthonWeb3.ts
|
|
82
|
+
import { ref } from "vue";
|
|
83
|
+
import { inject as inject2 } from "vue";
|
|
84
|
+
function useAuthonWeb3() {
|
|
85
|
+
const state = inject2(AUTHON_KEY);
|
|
86
|
+
if (!state) {
|
|
87
|
+
throw new Error("useAuthonWeb3() must be called inside a component tree with createAuthon() installed");
|
|
88
|
+
}
|
|
89
|
+
const s = state;
|
|
90
|
+
const isLoading = ref(false);
|
|
91
|
+
const error = ref(null);
|
|
92
|
+
async function wrap(fn) {
|
|
93
|
+
isLoading.value = true;
|
|
94
|
+
error.value = null;
|
|
95
|
+
try {
|
|
96
|
+
return await fn();
|
|
97
|
+
} catch (err) {
|
|
98
|
+
error.value = err instanceof Error ? err : new Error(String(err));
|
|
99
|
+
return null;
|
|
100
|
+
} finally {
|
|
101
|
+
isLoading.value = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
async function getNonce(address, chain, walletType, chainId) {
|
|
105
|
+
return wrap(() => s.client.web3GetNonce(address, chain, walletType, chainId));
|
|
106
|
+
}
|
|
107
|
+
async function verify(message, signature, address, chain, walletType) {
|
|
108
|
+
const result = await wrap(
|
|
109
|
+
() => s.client.web3Verify(message, signature, address, chain, walletType)
|
|
110
|
+
);
|
|
111
|
+
return result !== null;
|
|
112
|
+
}
|
|
113
|
+
async function listWallets() {
|
|
114
|
+
return wrap(() => s.client.listWallets());
|
|
115
|
+
}
|
|
116
|
+
async function linkWallet(params) {
|
|
117
|
+
return wrap(() => s.client.linkWallet(params));
|
|
118
|
+
}
|
|
119
|
+
async function unlinkWallet(walletId) {
|
|
120
|
+
const result = await wrap(() => s.client.unlinkWallet(walletId));
|
|
121
|
+
return result !== null;
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
getNonce,
|
|
125
|
+
verify,
|
|
126
|
+
listWallets,
|
|
127
|
+
linkWallet,
|
|
128
|
+
unlinkWallet,
|
|
129
|
+
isLoading,
|
|
130
|
+
error
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// src/useAuthonPasswordless.ts
|
|
135
|
+
import { ref as ref2, inject as inject3 } from "vue";
|
|
136
|
+
function useAuthonPasswordless() {
|
|
137
|
+
const state = inject3(AUTHON_KEY);
|
|
138
|
+
if (!state) {
|
|
139
|
+
throw new Error("useAuthonPasswordless() must be called inside a component tree with createAuthon() installed");
|
|
140
|
+
}
|
|
141
|
+
const s = state;
|
|
142
|
+
const isLoading = ref2(false);
|
|
143
|
+
const error = ref2(null);
|
|
144
|
+
async function wrap(fn) {
|
|
145
|
+
isLoading.value = true;
|
|
146
|
+
error.value = null;
|
|
147
|
+
try {
|
|
148
|
+
return await fn();
|
|
149
|
+
} catch (err) {
|
|
150
|
+
error.value = err instanceof Error ? err : new Error(String(err));
|
|
151
|
+
return null;
|
|
152
|
+
} finally {
|
|
153
|
+
isLoading.value = false;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async function sendMagicLink(email) {
|
|
157
|
+
const result = await wrap(() => s.client.sendMagicLink(email));
|
|
158
|
+
return result !== null;
|
|
159
|
+
}
|
|
160
|
+
async function sendEmailOtp(email) {
|
|
161
|
+
const result = await wrap(() => s.client.sendEmailOtp(email));
|
|
162
|
+
return result !== null;
|
|
163
|
+
}
|
|
164
|
+
async function verifyPasswordless(opts) {
|
|
165
|
+
const result = await wrap(() => s.client.verifyPasswordless(opts));
|
|
166
|
+
return result !== null;
|
|
167
|
+
}
|
|
168
|
+
return {
|
|
169
|
+
sendMagicLink,
|
|
170
|
+
sendEmailOtp,
|
|
171
|
+
verifyPasswordless,
|
|
172
|
+
isLoading,
|
|
173
|
+
error
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
// src/useAuthonPasskeys.ts
|
|
178
|
+
import { ref as ref3, inject as inject4 } from "vue";
|
|
179
|
+
function useAuthonPasskeys() {
|
|
180
|
+
const state = inject4(AUTHON_KEY);
|
|
181
|
+
if (!state) {
|
|
182
|
+
throw new Error("useAuthonPasskeys() must be called inside a component tree with createAuthon() installed");
|
|
183
|
+
}
|
|
184
|
+
const s = state;
|
|
185
|
+
const isLoading = ref3(false);
|
|
186
|
+
const error = ref3(null);
|
|
187
|
+
async function wrap(fn) {
|
|
188
|
+
isLoading.value = true;
|
|
189
|
+
error.value = null;
|
|
190
|
+
try {
|
|
191
|
+
return await fn();
|
|
192
|
+
} catch (err) {
|
|
193
|
+
error.value = err instanceof Error ? err : new Error(String(err));
|
|
194
|
+
return null;
|
|
195
|
+
} finally {
|
|
196
|
+
isLoading.value = false;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
async function registerPasskey(name) {
|
|
200
|
+
return wrap(() => s.client.registerPasskey(name));
|
|
201
|
+
}
|
|
202
|
+
async function authenticateWithPasskey(email) {
|
|
203
|
+
const result = await wrap(() => s.client.authenticateWithPasskey(email));
|
|
204
|
+
return result !== null;
|
|
205
|
+
}
|
|
206
|
+
async function listPasskeys() {
|
|
207
|
+
return wrap(() => s.client.listPasskeys());
|
|
208
|
+
}
|
|
209
|
+
async function renamePasskey(id, name) {
|
|
210
|
+
return wrap(() => s.client.renamePasskey(id, name));
|
|
211
|
+
}
|
|
212
|
+
async function revokePasskey(id) {
|
|
213
|
+
const result = await wrap(() => s.client.revokePasskey(id));
|
|
214
|
+
return result !== null;
|
|
215
|
+
}
|
|
216
|
+
return {
|
|
217
|
+
registerPasskey,
|
|
218
|
+
authenticateWithPasskey,
|
|
219
|
+
listPasskeys,
|
|
220
|
+
renamePasskey,
|
|
221
|
+
revokePasskey,
|
|
222
|
+
isLoading,
|
|
223
|
+
error
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
81
227
|
// src/components.ts
|
|
82
|
-
import { defineComponent, h, onMounted, ref, computed as computed2 } from "vue";
|
|
228
|
+
import { defineComponent, h, onMounted, ref as ref4, computed as computed2 } from "vue";
|
|
83
229
|
var AuthonSignIn = defineComponent({
|
|
84
230
|
name: "AuthonSignIn",
|
|
85
231
|
props: {
|
|
@@ -130,7 +276,7 @@ var AuthonUserButton = defineComponent({
|
|
|
130
276
|
name: "AuthonUserButton",
|
|
131
277
|
setup() {
|
|
132
278
|
const { user, isSignedIn, signOut, openSignIn } = useAuthon();
|
|
133
|
-
const open =
|
|
279
|
+
const open = ref4(false);
|
|
134
280
|
const initials = computed2(() => {
|
|
135
281
|
if (!user) return "?";
|
|
136
282
|
const u = user;
|
|
@@ -257,7 +403,7 @@ var AuthonSignedOut = defineComponent({
|
|
|
257
403
|
});
|
|
258
404
|
|
|
259
405
|
// src/SocialButton.ts
|
|
260
|
-
import { defineComponent as defineComponent2, h as h2, ref as
|
|
406
|
+
import { defineComponent as defineComponent2, h as h2, ref as ref5, computed as computed3, onMounted as onMounted2 } from "vue";
|
|
261
407
|
import { PROVIDER_COLORS, PROVIDER_DISPLAY_NAMES } from "@authon/shared";
|
|
262
408
|
import { getProviderButtonConfig } from "@authon/js";
|
|
263
409
|
var AuthonSocialButton = defineComponent2({
|
|
@@ -370,8 +516,8 @@ var AuthonSocialButtons = defineComponent2({
|
|
|
370
516
|
},
|
|
371
517
|
setup(props) {
|
|
372
518
|
const { client } = useAuthon();
|
|
373
|
-
const providers =
|
|
374
|
-
const loadingProvider =
|
|
519
|
+
const providers = ref5([]);
|
|
520
|
+
const loadingProvider = ref5(null);
|
|
375
521
|
const resolvedGap = computed3(() => props.gap ?? (props.compact ? 12 : 10));
|
|
376
522
|
onMounted2(async () => {
|
|
377
523
|
if (client) {
|
|
@@ -423,6 +569,9 @@ export {
|
|
|
423
569
|
AuthonUserButton,
|
|
424
570
|
createAuthon,
|
|
425
571
|
useAuthon,
|
|
572
|
+
useAuthonPasskeys,
|
|
573
|
+
useAuthonPasswordless,
|
|
574
|
+
useAuthonWeb3,
|
|
426
575
|
useUser
|
|
427
576
|
};
|
|
428
577
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/plugin.ts","../src/composables.ts","../src/components.ts","../src/SocialButton.ts"],"sourcesContent":["import type { App } from 'vue';\nimport { reactive } from 'vue';\nimport { Authon } from '@authon/js';\nimport type { AuthonConfig } from '@authon/js';\nimport type { AuthonUser } from '@authon/shared';\n\nexport const AUTHON_KEY = Symbol('authon');\n\nexport interface AuthonState {\n isSignedIn: boolean;\n isLoading: boolean;\n user: AuthonUser | null;\n client: Authon | null;\n}\n\nexport interface AuthonPluginOptions {\n publishableKey: string;\n config?: AuthonConfig;\n}\n\nexport function createAuthon(options: AuthonPluginOptions) {\n const state = reactive<AuthonState>({\n isSignedIn: false,\n isLoading: true,\n user: null,\n client: null,\n });\n\n return {\n install(app: App) {\n const client = new Authon(options.publishableKey, options.config);\n state.client = client as unknown as Authon;\n\n client.on('signedIn', (user) => {\n state.user = user as AuthonUser;\n state.isSignedIn = true;\n state.isLoading = false;\n });\n\n client.on('signedOut', () => {\n state.user = null;\n state.isSignedIn = false;\n });\n\n client.on('error', () => {\n state.isLoading = false;\n });\n\n const existingUser = client.getUser();\n if (existingUser) {\n state.user = existingUser as AuthonUser;\n state.isSignedIn = true;\n }\n state.isLoading = false;\n\n app.provide(AUTHON_KEY, state);\n\n app.config.globalProperties.$authon = state;\n },\n };\n}\n","import { inject, computed } from 'vue';\nimport type { ComputedRef } from 'vue';\nimport { AUTHON_KEY } from './plugin';\nimport type { AuthonState } from './plugin';\nimport type { AuthonUser } from '@authon/shared';\n\nfunction requireState(): AuthonState {\n const state = inject<AuthonState>(AUTHON_KEY);\n if (!state) {\n throw new Error('useAuthon() must be called inside a component tree with createAuthon() installed');\n }\n return state;\n}\n\nexport function useAuthon(): AuthonState & {\n signOut: () => Promise<void>;\n openSignIn: () => Promise<void>;\n openSignUp: () => Promise<void>;\n getToken: () => string | null;\n} {\n const s = requireState();\n\n async function signOut(): Promise<void> {\n await s.client?.signOut();\n s.user = null;\n s.isSignedIn = false;\n }\n\n async function openSignIn(): Promise<void> {\n await s.client?.openSignIn();\n }\n\n async function openSignUp(): Promise<void> {\n await s.client?.openSignUp();\n }\n\n function getToken(): string | null {\n return s.client?.getToken() ?? null;\n }\n\n return {\n ...s,\n signOut,\n openSignIn,\n openSignUp,\n getToken,\n };\n}\n\nexport function useUser(): { user: ComputedRef<AuthonUser | null>; isLoading: ComputedRef<boolean> } {\n const s = requireState();\n return {\n user: computed(() => s.user),\n isLoading: computed(() => s.isLoading),\n };\n}\n","import { defineComponent, h, onMounted, ref, computed } from 'vue';\nimport { useAuthon } from './composables';\n\nexport const AuthonSignIn = defineComponent({\n name: 'AuthonSignIn',\n props: {\n mode: {\n type: String as () => 'popup' | 'embedded',\n default: 'popup',\n },\n },\n setup(props) {\n const { client } = useAuthon();\n\n onMounted(() => {\n if (props.mode === 'popup') {\n client?.openSignIn();\n }\n });\n\n return () => {\n if (props.mode === 'embedded') {\n return h('div', { id: 'authon-signin-container' });\n }\n return null;\n };\n },\n});\n\nexport const AuthonSignUp = defineComponent({\n name: 'AuthonSignUp',\n props: {\n mode: {\n type: String as () => 'popup' | 'embedded',\n default: 'popup',\n },\n },\n setup(props) {\n const { client } = useAuthon();\n\n onMounted(() => {\n if (props.mode === 'popup') {\n client?.openSignUp();\n }\n });\n\n return () => {\n if (props.mode === 'embedded') {\n return h('div', { id: 'authon-signup-container' });\n }\n return null;\n };\n },\n});\n\nexport const AuthonUserButton = defineComponent({\n name: 'AuthonUserButton',\n setup() {\n const { user, isSignedIn, signOut, openSignIn } = useAuthon();\n const open = ref(false);\n\n const initials = computed(() => {\n if (!user) return '?';\n const u = user as typeof user;\n if ((u as { displayName?: string | null }).displayName) {\n return ((u as { displayName: string }).displayName)\n .split(' ')\n .map((n: string) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n }\n return ((u as { email?: string | null }).email?.[0] ?? '?').toUpperCase();\n });\n\n return () => {\n if (!isSignedIn) {\n return h(\n 'button',\n {\n onClick: () => openSignIn(),\n style: {\n padding: '8px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'linear-gradient(135deg, #7c3aed, #4f46e5)',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n },\n },\n 'Sign In',\n );\n }\n\n const avatarUrl = (user as { avatarUrl?: string | null } | null)?.avatarUrl;\n const displayName = (user as { displayName?: string | null } | null)?.displayName;\n const email = (user as { email?: string | null } | null)?.email;\n\n return h('div', { style: { position: 'relative', display: 'inline-block' } }, [\n h(\n 'button',\n {\n onClick: () => (open.value = !open.value),\n style: {\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n border: '2px solid #7c3aed',\n background: avatarUrl ? 'transparent' : 'linear-gradient(135deg, #7c3aed, #4f46e5)',\n cursor: 'pointer',\n padding: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontSize: '13px',\n fontWeight: 700,\n },\n },\n avatarUrl\n ? [h('img', { src: avatarUrl, alt: displayName ?? 'avatar', style: { width: '100%', height: '100%', objectFit: 'cover' } })]\n : [initials.value],\n ),\n open.value\n ? h(\n 'div',\n {\n style: {\n position: 'absolute',\n right: 0,\n top: '44px',\n minWidth: '200px',\n background: '#fff',\n border: '1px solid #e5e7eb',\n borderRadius: '12px',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n zIndex: 9999,\n overflow: 'hidden',\n },\n },\n [\n h('div', { style: { padding: '12px 16px', borderBottom: '1px solid #f3f4f6' } }, [\n displayName && h('div', { style: { fontSize: '14px', fontWeight: 600, color: '#111827' } }, displayName),\n email && h('div', { style: { fontSize: '12px', color: '#6b7280', marginTop: '2px' } }, email),\n ]),\n h(\n 'button',\n {\n onClick: async () => {\n open.value = false;\n await signOut();\n },\n style: {\n display: 'block',\n width: '100%',\n padding: '10px 16px',\n textAlign: 'left',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n color: '#ef4444',\n fontWeight: 500,\n },\n },\n 'Sign out',\n ),\n ],\n )\n : null,\n ]);\n };\n },\n});\n\nexport const AuthonSignedIn = defineComponent({\n name: 'AuthonSignedIn',\n setup(_, { slots }) {\n const { isSignedIn, isLoading } = useAuthon();\n return () => {\n if (isLoading || !isSignedIn) return null;\n return slots.default?.();\n };\n },\n});\n\nexport const AuthonSignedOut = defineComponent({\n name: 'AuthonSignedOut',\n setup(_, { slots }) {\n const { isSignedIn, isLoading } = useAuthon();\n return () => {\n if (isLoading || isSignedIn) return null;\n return slots.default?.();\n };\n },\n});\n","import { defineComponent, h, ref, computed, onMounted, type PropType } from 'vue';\nimport { PROVIDER_COLORS, PROVIDER_DISPLAY_NAMES, type OAuthProviderType } from '@authon/shared';\nimport { getProviderButtonConfig } from '@authon/js';\nimport { useAuthon } from './composables';\n\nexport const AuthonSocialButton = defineComponent({\n name: 'AuthonSocialButton',\n props: {\n provider: { type: String as PropType<OAuthProviderType>, required: true },\n onClick: { type: Function as PropType<(provider: OAuthProviderType) => void | Promise<void>>, required: true },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n label: { type: String, default: undefined },\n compact: { type: Boolean, default: false },\n iconSize: { type: Number, default: undefined },\n borderRadius: { type: Number, default: 10 },\n height: { type: Number, default: 48 },\n size: { type: Number, default: 48 },\n },\n setup(props) {\n const colors = computed(() => PROVIDER_COLORS[props.provider] || { bg: '#333', text: '#fff' });\n const displayName = computed(() => PROVIDER_DISPLAY_NAMES[props.provider] || props.provider);\n const buttonLabel = computed(() => props.label ?? `Continue with ${displayName.value}`);\n const needsBorder = computed(() => colors.value.bg.toLowerCase() === '#ffffff');\n const resolvedIconSize = computed(() => props.iconSize ?? (props.compact ? 24 : 20));\n\n const iconSvg = computed(() => {\n const config = getProviderButtonConfig(props.provider);\n return config.iconSvg\n .replace(/width=\"\\d+\"/, `width=\"${resolvedIconSize.value}\"`)\n .replace(/height=\"\\d+\"/, `height=\"${resolvedIconSize.value}\"`);\n });\n\n const spinner = () =>\n h('span', {\n style: {\n display: 'inline-block',\n width: '16px',\n height: '16px',\n border: `2px solid ${colors.value.text}`,\n borderTopColor: 'transparent',\n borderRadius: '50%',\n animation: 'authon-spin 0.6s linear infinite',\n },\n });\n\n const icon = () =>\n h('span', {\n style: { display: 'flex', alignItems: 'center', flexShrink: 0 },\n innerHTML: iconSvg.value,\n });\n\n return () => {\n const borderStyle = needsBorder.value ? { border: '1px solid #dadce0' } : {};\n\n if (props.compact) {\n return h(\n 'button',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 'none',\n cursor: 'pointer',\n transition: 'opacity 0.15s',\n padding: 0,\n backgroundColor: colors.value.bg,\n borderRadius: `${props.borderRadius}px`,\n width: `${props.size}px`,\n height: `${props.size}px`,\n ...borderStyle,\n },\n onClick: () => props.onClick(props.provider),\n disabled: props.disabled || props.loading,\n 'aria-label': `Sign in with ${displayName.value}`,\n },\n [props.loading ? spinner() : icon()],\n );\n }\n\n return h(\n 'button',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '10px',\n paddingLeft: '16px',\n paddingRight: '16px',\n border: 'none',\n cursor: 'pointer',\n fontFamily: 'inherit',\n transition: 'opacity 0.15s',\n width: '100%',\n backgroundColor: colors.value.bg,\n color: colors.value.text,\n borderRadius: `${props.borderRadius}px`,\n height: `${props.height}px`,\n ...borderStyle,\n },\n onClick: () => props.onClick(props.provider),\n disabled: props.disabled || props.loading,\n 'aria-label': `Sign in with ${displayName.value}`,\n },\n props.loading\n ? [spinner()]\n : [\n icon(),\n h('span', { style: { fontSize: '15px', fontWeight: 600, whiteSpace: 'nowrap' } }, buttonLabel.value),\n ],\n );\n };\n },\n});\n\nexport const AuthonSocialButtons = defineComponent({\n name: 'AuthonSocialButtons',\n props: {\n onSuccess: { type: Function as PropType<() => void>, default: undefined },\n onError: { type: Function as PropType<(error: Error) => void>, default: undefined },\n gap: { type: Number, default: undefined },\n compact: { type: Boolean, default: false },\n labels: { type: Object as PropType<Partial<Record<OAuthProviderType, string>>>, default: undefined },\n },\n setup(props) {\n const { client } = useAuthon();\n const providers = ref<OAuthProviderType[]>([]);\n const loadingProvider = ref<string | null>(null);\n const resolvedGap = computed(() => props.gap ?? (props.compact ? 12 : 10));\n\n onMounted(async () => {\n if (client) {\n providers.value = await client.getProviders();\n }\n });\n\n const handleClick = async (provider: OAuthProviderType) => {\n if (!client) return;\n loadingProvider.value = provider;\n try {\n await client.signInWithOAuth(provider);\n props.onSuccess?.();\n } catch (e: any) {\n const error = e instanceof Error ? e : new Error(String(e));\n props.onError?.(error);\n } finally {\n loadingProvider.value = null;\n }\n };\n\n return () => {\n if (providers.value.length === 0) return null;\n\n const containerStyle = props.compact\n ? { display: 'flex', flexDirection: 'row' as const, flexWrap: 'wrap' as const, justifyContent: 'center', gap: `${resolvedGap.value}px` }\n : { display: 'flex', flexDirection: 'column' as const, gap: `${resolvedGap.value}px` };\n\n return h(\n 'div',\n { style: containerStyle },\n providers.value.map((provider) =>\n h(AuthonSocialButton, {\n key: provider,\n provider,\n onClick: handleClick,\n loading: loadingProvider.value === provider,\n disabled: !!loadingProvider.value,\n compact: props.compact,\n label: props.labels?.[provider],\n }),\n ),\n );\n };\n },\n});\n"],"mappings":"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","names":["computed","computed","defineComponent","h","ref","computed","onMounted","defineComponent","computed","h","ref","onMounted"]}
|
|
1
|
+
{"version":3,"sources":["../src/plugin.ts","../src/composables.ts","../src/useAuthonWeb3.ts","../src/useAuthonPasswordless.ts","../src/useAuthonPasskeys.ts","../src/components.ts","../src/SocialButton.ts"],"sourcesContent":["import type { App } from 'vue';\nimport { reactive } from 'vue';\nimport { Authon } from '@authon/js';\nimport type { AuthonConfig } from '@authon/js';\nimport type { AuthonUser } from '@authon/shared';\n\nexport const AUTHON_KEY = Symbol('authon');\n\nexport interface AuthonState {\n isSignedIn: boolean;\n isLoading: boolean;\n user: AuthonUser | null;\n client: Authon | null;\n}\n\nexport interface AuthonPluginOptions {\n publishableKey: string;\n config?: AuthonConfig;\n}\n\nexport function createAuthon(options: AuthonPluginOptions) {\n const state = reactive<AuthonState>({\n isSignedIn: false,\n isLoading: true,\n user: null,\n client: null,\n });\n\n return {\n install(app: App) {\n const client = new Authon(options.publishableKey, options.config);\n state.client = client as unknown as Authon;\n\n client.on('signedIn', (user) => {\n state.user = user as AuthonUser;\n state.isSignedIn = true;\n state.isLoading = false;\n });\n\n client.on('signedOut', () => {\n state.user = null;\n state.isSignedIn = false;\n });\n\n client.on('error', () => {\n state.isLoading = false;\n });\n\n const existingUser = client.getUser();\n if (existingUser) {\n state.user = existingUser as AuthonUser;\n state.isSignedIn = true;\n }\n state.isLoading = false;\n\n app.provide(AUTHON_KEY, state);\n\n app.config.globalProperties.$authon = state;\n },\n };\n}\n","import { inject, computed } from 'vue';\nimport type { ComputedRef } from 'vue';\nimport { AUTHON_KEY } from './plugin';\nimport type { AuthonState } from './plugin';\nimport type { AuthonUser } from '@authon/shared';\n\nfunction requireState(): AuthonState {\n const state = inject<AuthonState>(AUTHON_KEY);\n if (!state) {\n throw new Error('useAuthon() must be called inside a component tree with createAuthon() installed');\n }\n return state;\n}\n\nexport function useAuthon(): AuthonState & {\n signOut: () => Promise<void>;\n openSignIn: () => Promise<void>;\n openSignUp: () => Promise<void>;\n getToken: () => string | null;\n} {\n const s = requireState();\n\n async function signOut(): Promise<void> {\n await s.client?.signOut();\n s.user = null;\n s.isSignedIn = false;\n }\n\n async function openSignIn(): Promise<void> {\n await s.client?.openSignIn();\n }\n\n async function openSignUp(): Promise<void> {\n await s.client?.openSignUp();\n }\n\n function getToken(): string | null {\n return s.client?.getToken() ?? null;\n }\n\n return {\n ...s,\n signOut,\n openSignIn,\n openSignUp,\n getToken,\n };\n}\n\nexport function useUser(): { user: ComputedRef<AuthonUser | null>; isLoading: ComputedRef<boolean> } {\n const s = requireState();\n return {\n user: computed(() => s.user),\n isLoading: computed(() => s.isLoading),\n };\n}\n","import { ref } from 'vue';\nimport type { Ref } from 'vue';\nimport type { Web3Chain, Web3NonceResponse, Web3Wallet, Web3WalletType } from '@authon/shared';\nimport { AUTHON_KEY } from './plugin';\nimport type { AuthonState } from './plugin';\nimport { inject } from 'vue';\n\nexport interface LinkWalletParams {\n address: string;\n chain: Web3Chain;\n walletType: Web3WalletType;\n chainId?: number;\n message: string;\n signature: string;\n}\n\nexport interface UseAuthonWeb3Return {\n getNonce: (\n address: string,\n chain: Web3Chain,\n walletType: Web3WalletType,\n chainId?: number,\n ) => Promise<Web3NonceResponse | null>;\n verify: (\n message: string,\n signature: string,\n address: string,\n chain: Web3Chain,\n walletType: Web3WalletType,\n ) => Promise<boolean>;\n listWallets: () => Promise<Web3Wallet[] | null>;\n linkWallet: (params: LinkWalletParams) => Promise<Web3Wallet | null>;\n unlinkWallet: (walletId: string) => Promise<boolean>;\n isLoading: Ref<boolean>;\n error: Ref<Error | null>;\n}\n\nexport function useAuthonWeb3(): UseAuthonWeb3Return {\n const state = inject<AuthonState>(AUTHON_KEY);\n if (!state) {\n throw new Error('useAuthonWeb3() must be called inside a component tree with createAuthon() installed');\n }\n const s = state;\n\n const isLoading = ref<boolean>(false);\n const error = ref<Error | null>(null);\n\n async function wrap<T>(fn: () => Promise<T>): Promise<T | null> {\n isLoading.value = true;\n error.value = null;\n try {\n return await fn();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n return null;\n } finally {\n isLoading.value = false;\n }\n }\n\n async function getNonce(\n address: string,\n chain: Web3Chain,\n walletType: Web3WalletType,\n chainId?: number,\n ): Promise<Web3NonceResponse | null> {\n return wrap(() => s.client!.web3GetNonce(address, chain, walletType, chainId));\n }\n\n async function verify(\n message: string,\n signature: string,\n address: string,\n chain: Web3Chain,\n walletType: Web3WalletType,\n ): Promise<boolean> {\n const result = await wrap(() =>\n s.client!.web3Verify(message, signature, address, chain, walletType),\n );\n return result !== null;\n }\n\n async function listWallets(): Promise<Web3Wallet[] | null> {\n return wrap(() => s.client!.listWallets());\n }\n\n async function linkWallet(params: LinkWalletParams): Promise<Web3Wallet | null> {\n return wrap(() => s.client!.linkWallet(params));\n }\n\n async function unlinkWallet(walletId: string): Promise<boolean> {\n const result = await wrap(() => s.client!.unlinkWallet(walletId));\n return result !== null;\n }\n\n return {\n getNonce,\n verify,\n listWallets,\n linkWallet,\n unlinkWallet,\n isLoading,\n error,\n };\n}\n","import { ref, inject } from 'vue';\nimport type { Ref } from 'vue';\nimport { AUTHON_KEY } from './plugin';\nimport type { AuthonState } from './plugin';\n\nexport interface UseAuthonPasswordlessReturn {\n sendMagicLink: (email: string) => Promise<boolean>;\n sendEmailOtp: (email: string) => Promise<boolean>;\n verifyPasswordless: (opts: { token?: string; email?: string; code?: string }) => Promise<boolean>;\n isLoading: Ref<boolean>;\n error: Ref<Error | null>;\n}\n\nexport function useAuthonPasswordless(): UseAuthonPasswordlessReturn {\n const state = inject<AuthonState>(AUTHON_KEY);\n if (!state) {\n throw new Error('useAuthonPasswordless() must be called inside a component tree with createAuthon() installed');\n }\n const s = state;\n\n const isLoading = ref<boolean>(false);\n const error = ref<Error | null>(null);\n\n async function wrap<T>(fn: () => Promise<T>): Promise<T | null> {\n isLoading.value = true;\n error.value = null;\n try {\n return await fn();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n return null;\n } finally {\n isLoading.value = false;\n }\n }\n\n async function sendMagicLink(email: string): Promise<boolean> {\n const result = await wrap(() => s.client!.sendMagicLink(email));\n return result !== null;\n }\n\n async function sendEmailOtp(email: string): Promise<boolean> {\n const result = await wrap(() => s.client!.sendEmailOtp(email));\n return result !== null;\n }\n\n async function verifyPasswordless(opts: {\n token?: string;\n email?: string;\n code?: string;\n }): Promise<boolean> {\n const result = await wrap(() => s.client!.verifyPasswordless(opts));\n return result !== null;\n }\n\n return {\n sendMagicLink,\n sendEmailOtp,\n verifyPasswordless,\n isLoading,\n error,\n };\n}\n","import { ref, inject } from 'vue';\nimport type { Ref } from 'vue';\nimport type { PasskeyCredential } from '@authon/shared';\nimport { AUTHON_KEY } from './plugin';\nimport type { AuthonState } from './plugin';\n\nexport interface UseAuthonPasskeysReturn {\n registerPasskey: (name?: string) => Promise<PasskeyCredential | null>;\n authenticateWithPasskey: (email?: string) => Promise<boolean>;\n listPasskeys: () => Promise<PasskeyCredential[] | null>;\n renamePasskey: (id: string, name: string) => Promise<PasskeyCredential | null>;\n revokePasskey: (id: string) => Promise<boolean>;\n isLoading: Ref<boolean>;\n error: Ref<Error | null>;\n}\n\nexport function useAuthonPasskeys(): UseAuthonPasskeysReturn {\n const state = inject<AuthonState>(AUTHON_KEY);\n if (!state) {\n throw new Error('useAuthonPasskeys() must be called inside a component tree with createAuthon() installed');\n }\n const s = state;\n\n const isLoading = ref<boolean>(false);\n const error = ref<Error | null>(null);\n\n async function wrap<T>(fn: () => Promise<T>): Promise<T | null> {\n isLoading.value = true;\n error.value = null;\n try {\n return await fn();\n } catch (err) {\n error.value = err instanceof Error ? err : new Error(String(err));\n return null;\n } finally {\n isLoading.value = false;\n }\n }\n\n async function registerPasskey(name?: string): Promise<PasskeyCredential | null> {\n return wrap(() => s.client!.registerPasskey(name));\n }\n\n async function authenticateWithPasskey(email?: string): Promise<boolean> {\n const result = await wrap(() => s.client!.authenticateWithPasskey(email));\n return result !== null;\n }\n\n async function listPasskeys(): Promise<PasskeyCredential[] | null> {\n return wrap(() => s.client!.listPasskeys());\n }\n\n async function renamePasskey(id: string, name: string): Promise<PasskeyCredential | null> {\n return wrap(() => s.client!.renamePasskey(id, name));\n }\n\n async function revokePasskey(id: string): Promise<boolean> {\n const result = await wrap(() => s.client!.revokePasskey(id));\n return result !== null;\n }\n\n return {\n registerPasskey,\n authenticateWithPasskey,\n listPasskeys,\n renamePasskey,\n revokePasskey,\n isLoading,\n error,\n };\n}\n","import { defineComponent, h, onMounted, ref, computed } from 'vue';\nimport { useAuthon } from './composables';\n\nexport const AuthonSignIn = defineComponent({\n name: 'AuthonSignIn',\n props: {\n mode: {\n type: String as () => 'popup' | 'embedded',\n default: 'popup',\n },\n },\n setup(props) {\n const { client } = useAuthon();\n\n onMounted(() => {\n if (props.mode === 'popup') {\n client?.openSignIn();\n }\n });\n\n return () => {\n if (props.mode === 'embedded') {\n return h('div', { id: 'authon-signin-container' });\n }\n return null;\n };\n },\n});\n\nexport const AuthonSignUp = defineComponent({\n name: 'AuthonSignUp',\n props: {\n mode: {\n type: String as () => 'popup' | 'embedded',\n default: 'popup',\n },\n },\n setup(props) {\n const { client } = useAuthon();\n\n onMounted(() => {\n if (props.mode === 'popup') {\n client?.openSignUp();\n }\n });\n\n return () => {\n if (props.mode === 'embedded') {\n return h('div', { id: 'authon-signup-container' });\n }\n return null;\n };\n },\n});\n\nexport const AuthonUserButton = defineComponent({\n name: 'AuthonUserButton',\n setup() {\n const { user, isSignedIn, signOut, openSignIn } = useAuthon();\n const open = ref(false);\n\n const initials = computed(() => {\n if (!user) return '?';\n const u = user as typeof user;\n if ((u as { displayName?: string | null }).displayName) {\n return ((u as { displayName: string }).displayName)\n .split(' ')\n .map((n: string) => n[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n }\n return ((u as { email?: string | null }).email?.[0] ?? '?').toUpperCase();\n });\n\n return () => {\n if (!isSignedIn) {\n return h(\n 'button',\n {\n onClick: () => openSignIn(),\n style: {\n padding: '8px 16px',\n borderRadius: '8px',\n border: 'none',\n background: 'linear-gradient(135deg, #7c3aed, #4f46e5)',\n color: '#fff',\n cursor: 'pointer',\n fontSize: '14px',\n fontWeight: 600,\n },\n },\n 'Sign In',\n );\n }\n\n const avatarUrl = (user as { avatarUrl?: string | null } | null)?.avatarUrl;\n const displayName = (user as { displayName?: string | null } | null)?.displayName;\n const email = (user as { email?: string | null } | null)?.email;\n\n return h('div', { style: { position: 'relative', display: 'inline-block' } }, [\n h(\n 'button',\n {\n onClick: () => (open.value = !open.value),\n style: {\n width: '36px',\n height: '36px',\n borderRadius: '50%',\n border: '2px solid #7c3aed',\n background: avatarUrl ? 'transparent' : 'linear-gradient(135deg, #7c3aed, #4f46e5)',\n cursor: 'pointer',\n padding: 0,\n overflow: 'hidden',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#fff',\n fontSize: '13px',\n fontWeight: 700,\n },\n },\n avatarUrl\n ? [h('img', { src: avatarUrl, alt: displayName ?? 'avatar', style: { width: '100%', height: '100%', objectFit: 'cover' } })]\n : [initials.value],\n ),\n open.value\n ? h(\n 'div',\n {\n style: {\n position: 'absolute',\n right: 0,\n top: '44px',\n minWidth: '200px',\n background: '#fff',\n border: '1px solid #e5e7eb',\n borderRadius: '12px',\n boxShadow: '0 8px 24px rgba(0,0,0,0.12)',\n zIndex: 9999,\n overflow: 'hidden',\n },\n },\n [\n h('div', { style: { padding: '12px 16px', borderBottom: '1px solid #f3f4f6' } }, [\n displayName && h('div', { style: { fontSize: '14px', fontWeight: 600, color: '#111827' } }, displayName),\n email && h('div', { style: { fontSize: '12px', color: '#6b7280', marginTop: '2px' } }, email),\n ]),\n h(\n 'button',\n {\n onClick: async () => {\n open.value = false;\n await signOut();\n },\n style: {\n display: 'block',\n width: '100%',\n padding: '10px 16px',\n textAlign: 'left',\n background: 'none',\n border: 'none',\n cursor: 'pointer',\n fontSize: '14px',\n color: '#ef4444',\n fontWeight: 500,\n },\n },\n 'Sign out',\n ),\n ],\n )\n : null,\n ]);\n };\n },\n});\n\nexport const AuthonSignedIn = defineComponent({\n name: 'AuthonSignedIn',\n setup(_, { slots }) {\n const { isSignedIn, isLoading } = useAuthon();\n return () => {\n if (isLoading || !isSignedIn) return null;\n return slots.default?.();\n };\n },\n});\n\nexport const AuthonSignedOut = defineComponent({\n name: 'AuthonSignedOut',\n setup(_, { slots }) {\n const { isSignedIn, isLoading } = useAuthon();\n return () => {\n if (isLoading || isSignedIn) return null;\n return slots.default?.();\n };\n },\n});\n","import { defineComponent, h, ref, computed, onMounted, type PropType } from 'vue';\nimport { PROVIDER_COLORS, PROVIDER_DISPLAY_NAMES, type OAuthProviderType } from '@authon/shared';\nimport { getProviderButtonConfig } from '@authon/js';\nimport { useAuthon } from './composables';\n\nexport const AuthonSocialButton = defineComponent({\n name: 'AuthonSocialButton',\n props: {\n provider: { type: String as PropType<OAuthProviderType>, required: true },\n onClick: { type: Function as PropType<(provider: OAuthProviderType) => void | Promise<void>>, required: true },\n loading: { type: Boolean, default: false },\n disabled: { type: Boolean, default: false },\n label: { type: String, default: undefined },\n compact: { type: Boolean, default: false },\n iconSize: { type: Number, default: undefined },\n borderRadius: { type: Number, default: 10 },\n height: { type: Number, default: 48 },\n size: { type: Number, default: 48 },\n },\n setup(props) {\n const colors = computed(() => PROVIDER_COLORS[props.provider] || { bg: '#333', text: '#fff' });\n const displayName = computed(() => PROVIDER_DISPLAY_NAMES[props.provider] || props.provider);\n const buttonLabel = computed(() => props.label ?? `Continue with ${displayName.value}`);\n const needsBorder = computed(() => colors.value.bg.toLowerCase() === '#ffffff');\n const resolvedIconSize = computed(() => props.iconSize ?? (props.compact ? 24 : 20));\n\n const iconSvg = computed(() => {\n const config = getProviderButtonConfig(props.provider);\n return config.iconSvg\n .replace(/width=\"\\d+\"/, `width=\"${resolvedIconSize.value}\"`)\n .replace(/height=\"\\d+\"/, `height=\"${resolvedIconSize.value}\"`);\n });\n\n const spinner = () =>\n h('span', {\n style: {\n display: 'inline-block',\n width: '16px',\n height: '16px',\n border: `2px solid ${colors.value.text}`,\n borderTopColor: 'transparent',\n borderRadius: '50%',\n animation: 'authon-spin 0.6s linear infinite',\n },\n });\n\n const icon = () =>\n h('span', {\n style: { display: 'flex', alignItems: 'center', flexShrink: 0 },\n innerHTML: iconSvg.value,\n });\n\n return () => {\n const borderStyle = needsBorder.value ? { border: '1px solid #dadce0' } : {};\n\n if (props.compact) {\n return h(\n 'button',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n border: 'none',\n cursor: 'pointer',\n transition: 'opacity 0.15s',\n padding: 0,\n backgroundColor: colors.value.bg,\n borderRadius: `${props.borderRadius}px`,\n width: `${props.size}px`,\n height: `${props.size}px`,\n ...borderStyle,\n },\n onClick: () => props.onClick(props.provider),\n disabled: props.disabled || props.loading,\n 'aria-label': `Sign in with ${displayName.value}`,\n },\n [props.loading ? spinner() : icon()],\n );\n }\n\n return h(\n 'button',\n {\n style: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '10px',\n paddingLeft: '16px',\n paddingRight: '16px',\n border: 'none',\n cursor: 'pointer',\n fontFamily: 'inherit',\n transition: 'opacity 0.15s',\n width: '100%',\n backgroundColor: colors.value.bg,\n color: colors.value.text,\n borderRadius: `${props.borderRadius}px`,\n height: `${props.height}px`,\n ...borderStyle,\n },\n onClick: () => props.onClick(props.provider),\n disabled: props.disabled || props.loading,\n 'aria-label': `Sign in with ${displayName.value}`,\n },\n props.loading\n ? [spinner()]\n : [\n icon(),\n h('span', { style: { fontSize: '15px', fontWeight: 600, whiteSpace: 'nowrap' } }, buttonLabel.value),\n ],\n );\n };\n },\n});\n\nexport const AuthonSocialButtons = defineComponent({\n name: 'AuthonSocialButtons',\n props: {\n onSuccess: { type: Function as PropType<() => void>, default: undefined },\n onError: { type: Function as PropType<(error: Error) => void>, default: undefined },\n gap: { type: Number, default: undefined },\n compact: { type: Boolean, default: false },\n labels: { type: Object as PropType<Partial<Record<OAuthProviderType, string>>>, default: undefined },\n },\n setup(props) {\n const { client } = useAuthon();\n const providers = ref<OAuthProviderType[]>([]);\n const loadingProvider = ref<string | null>(null);\n const resolvedGap = computed(() => props.gap ?? (props.compact ? 12 : 10));\n\n onMounted(async () => {\n if (client) {\n providers.value = await client.getProviders();\n }\n });\n\n const handleClick = async (provider: OAuthProviderType) => {\n if (!client) return;\n loadingProvider.value = provider;\n try {\n await client.signInWithOAuth(provider);\n props.onSuccess?.();\n } catch (e: any) {\n const error = e instanceof Error ? e : new Error(String(e));\n props.onError?.(error);\n } finally {\n loadingProvider.value = null;\n }\n };\n\n return () => {\n if (providers.value.length === 0) return null;\n\n const containerStyle = props.compact\n ? { display: 'flex', flexDirection: 'row' as const, flexWrap: 'wrap' as const, justifyContent: 'center', gap: `${resolvedGap.value}px` }\n : { display: 'flex', flexDirection: 'column' as const, gap: `${resolvedGap.value}px` };\n\n return h(\n 'div',\n { style: containerStyle },\n providers.value.map((provider) =>\n h(AuthonSocialButton, {\n key: provider,\n provider,\n onClick: handleClick,\n loading: loadingProvider.value === provider,\n disabled: !!loadingProvider.value,\n compact: props.compact,\n label: props.labels?.[provider],\n }),\n ),\n );\n };\n },\n});\n"],"mappings":"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","names":["inject","ref","inject","inject","ref","ref","inject","inject","ref","ref","computed","ref","computed","defineComponent","h","ref","computed","onMounted","defineComponent","computed","h","ref","onMounted"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@authon/vue",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Authon Vue 3 SDK — plugin, composables, and components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"sdk"
|
|
39
39
|
],
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@authon/js": "
|
|
42
|
-
"@authon/shared": "
|
|
41
|
+
"@authon/js": "workspace:^",
|
|
42
|
+
"@authon/shared": "workspace:^"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"vue": "^3.3.0"
|