-
Notifications
You must be signed in to change notification settings - Fork 325
/
Copy pathtypes.ts
85 lines (76 loc) · 2.13 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import type {
CheckAuthorizationWithCustomPermissions,
Clerk,
ClerkOptions,
ClientResource,
MultiDomainAndOrProxyPrimitives,
OrganizationCustomPermissionKey,
OrganizationCustomRoleKey,
Without,
} from '@clerk/types';
type AstroClerkUpdateOptions = Pick<ClerkOptions, 'appearance' | 'localization'>;
type AstroClerkIntegrationParams = Without<
ClerkOptions,
| 'isSatellite'
| 'sdkMetadata'
| 'standardBrowser'
| 'selectInitialSession'
| 'routerReplace'
| 'routerDebug'
| 'routerPush'
| 'polling'
| 'touchSession'
> &
MultiDomainAndOrProxyPrimitives;
type AstroClerkCreateInstanceParams = AstroClerkIntegrationParams & { publishableKey: string };
// Copied from `@clerk/clerk-react`
export interface HeadlessBrowserClerk extends Clerk {
load: (opts?: Without<ClerkOptions, 'isSatellite'>) => Promise<void>;
updateClient: (client: ClientResource) => void;
}
// Copied from `@clerk/clerk-react`
export interface BrowserClerk extends HeadlessBrowserClerk {
onComponentsReady: Promise<void>;
components: any;
}
declare global {
interface Window {
__astro_clerk_component_props: Map<string, Map<string, Record<string, unknown>>>;
__astro_clerk_function_props: Map<string, Map<string, Record<string, unknown>>>;
Clerk: BrowserClerk;
}
}
type ProtectProps =
| {
condition?: never;
role: OrganizationCustomRoleKey;
permission?: never;
}
| {
condition?: never;
role?: never;
permission: OrganizationCustomPermissionKey;
}
| {
condition: (has: CheckAuthorizationWithCustomPermissions) => boolean;
role?: never;
permission?: never;
}
| {
condition?: never;
role?: never;
permission?: never;
};
export type { AstroClerkUpdateOptions, AstroClerkIntegrationParams, AstroClerkCreateInstanceParams, ProtectProps };
export type ButtonProps<Tag> = {
/**
* @deprecated The 'as' prop is deprecated and will be removed in a future version.
* Use the default slot with the 'asChild' prop instead.
* @example
* <SignInButton asChild>
* <button>Sign in</button>
* </SignInButton>
*/
as: Tag;
asChild?: boolean;
};