mirror of
https://github.com/zitadel/zitadel.git
synced 2025-12-10 23:32:19 +00:00
fix async await client, react components
This commit is contained in:
@@ -1,5 +1,27 @@
|
|||||||
import { getLegalAndSupportSettings, server } from "#/lib/zitadel";
|
import { getLegalAndSupportSettings, server } from "#/lib/zitadel";
|
||||||
import { SignInWithIDP } from "#/ui/SignInWithIDP";
|
import { SignInWithIDP } from "#/ui/SignInWithIDP";
|
||||||
|
import {
|
||||||
|
GetActiveIdentityProvidersResponse,
|
||||||
|
IdentityProvider,
|
||||||
|
ZitadelServer,
|
||||||
|
settings,
|
||||||
|
} from "@zitadel/server";
|
||||||
|
|
||||||
|
function getIdentityProviders(
|
||||||
|
server: ZitadelServer,
|
||||||
|
orgId?: string
|
||||||
|
): Promise<IdentityProvider[] | undefined> {
|
||||||
|
const settingsService = settings.getSettings(server);
|
||||||
|
console.log("req");
|
||||||
|
return settingsService
|
||||||
|
.getActiveIdentityProviders(
|
||||||
|
orgId ? { ctx: { orgId } } : { ctx: { instance: true } },
|
||||||
|
{}
|
||||||
|
)
|
||||||
|
.then((resp: GetActiveIdentityProvidersResponse) => {
|
||||||
|
return resp.identityProviders;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export default async function Page({
|
export default async function Page({
|
||||||
searchParams,
|
searchParams,
|
||||||
@@ -8,14 +30,18 @@ export default async function Page({
|
|||||||
}) {
|
}) {
|
||||||
const legal = await getLegalAndSupportSettings(server);
|
const legal = await getLegalAndSupportSettings(server);
|
||||||
|
|
||||||
console.log(server);
|
const identityProviders = await getIdentityProviders(server, "");
|
||||||
|
|
||||||
|
console.log(identityProviders);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="flex flex-col items-center space-y-4">
|
<div className="flex flex-col items-center space-y-4">
|
||||||
<h1>Register</h1>
|
<h1>Register</h1>
|
||||||
<p className="ztdl-p">Create your ZITADEL account.</p>
|
<p className="ztdl-p">Create your ZITADEL account.</p>
|
||||||
|
|
||||||
{legal && <SignInWithIDP server={server}></SignInWithIDP>}
|
{legal && identityProviders && (
|
||||||
|
<SignInWithIDP identityProviders={identityProviders}></SignInWithIDP>
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
19
apps/login/app/api/idp/start/route.ts
Normal file
19
apps/login/app/api/idp/start/route.ts
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
import { server, startIdentityProviderFlow } from "#/lib/zitadel";
|
||||||
|
import { NextRequest, NextResponse } from "next/server";
|
||||||
|
|
||||||
|
export async function POST(request: NextRequest) {
|
||||||
|
const body = await request.json();
|
||||||
|
if (body) {
|
||||||
|
let { idpId, successUrl, failureUrl } = body;
|
||||||
|
|
||||||
|
return startIdentityProviderFlow(server, { idpId, successUrl, failureUrl })
|
||||||
|
.then((resp) => {
|
||||||
|
return NextResponse.json(resp);
|
||||||
|
})
|
||||||
|
.catch((error) => {
|
||||||
|
return NextResponse.json(error, { status: 500 });
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return NextResponse.json({}, { status: 400 });
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -36,13 +36,14 @@
|
|||||||
"@heroicons/react": "2.0.13",
|
"@heroicons/react": "2.0.13",
|
||||||
"@tailwindcss/forms": "0.5.3",
|
"@tailwindcss/forms": "0.5.3",
|
||||||
"@vercel/analytics": "^1.0.0",
|
"@vercel/analytics": "^1.0.0",
|
||||||
|
"@zitadel/client": "workspace:*",
|
||||||
"@zitadel/next": "workspace:*",
|
"@zitadel/next": "workspace:*",
|
||||||
"@zitadel/react": "workspace:*",
|
"@zitadel/react": "workspace:*",
|
||||||
"@zitadel/server": "workspace:*",
|
"@zitadel/server": "workspace:*",
|
||||||
"clsx": "1.2.1",
|
"clsx": "1.2.1",
|
||||||
"date-fns": "2.29.3",
|
"date-fns": "2.29.3",
|
||||||
"moment": "^2.29.4",
|
"moment": "^2.29.4",
|
||||||
"next": "13.4.7",
|
"next": "13.4.12",
|
||||||
"next-themes": "^0.2.1",
|
"next-themes": "^0.2.1",
|
||||||
"nice-grpc": "2.0.1",
|
"nice-grpc": "2.0.1",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
|
|||||||
@@ -1,57 +1,52 @@
|
|||||||
import { ReactNode } from "react";
|
"use client";
|
||||||
|
import { ReactNode, useState } from "react";
|
||||||
|
|
||||||
|
// import { IdentityProviderType } from "@zitadel/server";
|
||||||
|
// import { IdentityProvider } from "@zitadel/client";
|
||||||
|
|
||||||
import {
|
|
||||||
ZitadelServer,
|
|
||||||
settings,
|
|
||||||
GetActiveIdentityProvidersResponse,
|
|
||||||
IdentityProvider,
|
|
||||||
IdentityProviderType,
|
|
||||||
} from "@zitadel/server";
|
|
||||||
import {
|
import {
|
||||||
SignInWithGitlab,
|
SignInWithGitlab,
|
||||||
SignInWithAzureAD,
|
SignInWithAzureAD,
|
||||||
SignInWithGoogle,
|
SignInWithGoogle,
|
||||||
SignInWithGithub,
|
SignInWithGithub,
|
||||||
} from "@zitadel/react";
|
} from "@zitadel/react";
|
||||||
import { server, startIdentityProviderFlow } from "#/lib/zitadel";
|
import { useRouter } from "next/navigation";
|
||||||
|
|
||||||
export interface SignInWithIDPProps {
|
export interface SignInWithIDPProps {
|
||||||
children?: ReactNode;
|
children?: ReactNode;
|
||||||
server: ZitadelServer;
|
identityProviders: any[];
|
||||||
orgId?: string;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getIdentityProviders(
|
export function SignInWithIDP({ identityProviders }: SignInWithIDPProps) {
|
||||||
server: ZitadelServer,
|
const [loading, setLoading] = useState<boolean>(false);
|
||||||
orgId?: string
|
const [error, setError] = useState<string>("");
|
||||||
): Promise<IdentityProvider[] | undefined> {
|
const router = useRouter();
|
||||||
const settingsService = settings.getSettings(server);
|
|
||||||
console.log("req");
|
async function startFlow(idp: any) {
|
||||||
return settingsService
|
console.log("start flow");
|
||||||
.getActiveIdentityProviders(
|
const host = "http://localhost:3000";
|
||||||
orgId ? { ctx: { orgId } } : { ctx: { instance: true } },
|
setLoading(true);
|
||||||
{}
|
|
||||||
)
|
const res = await fetch("/api/idp/start", {
|
||||||
.then((resp: GetActiveIdentityProvidersResponse) => {
|
method: "POST",
|
||||||
return resp.identityProviders;
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
},
|
||||||
|
body: JSON.stringify({
|
||||||
|
idpId: idp.id,
|
||||||
|
successUrl: `${host}/api/idp/success`,
|
||||||
|
failureUrl: `${host}/api/idp/success`,
|
||||||
|
}),
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
export async function SignInWithIDP(props: SignInWithIDPProps) {
|
const response = await res.json();
|
||||||
console.log(props.server);
|
|
||||||
const identityProviders = await getIdentityProviders(
|
|
||||||
props.server,
|
|
||||||
props.orgId
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(identityProviders);
|
setLoading(false);
|
||||||
|
if (!res.ok) {
|
||||||
function startFlow(idp: IdentityProvider) {
|
setError(response.details);
|
||||||
return startIdentityProviderFlow(server, {
|
return Promise.reject(response.details);
|
||||||
idpId: idp.id,
|
}
|
||||||
successUrl: "",
|
return response;
|
||||||
failureUrl: "",
|
|
||||||
}).then(() => {});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
@@ -59,43 +54,48 @@ export async function SignInWithIDP(props: SignInWithIDPProps) {
|
|||||||
{identityProviders &&
|
{identityProviders &&
|
||||||
identityProviders.map((idp, i) => {
|
identityProviders.map((idp, i) => {
|
||||||
switch (idp.type) {
|
switch (idp.type) {
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB:
|
case 6: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB:
|
||||||
return (
|
return (
|
||||||
<SignInWithGithub
|
<SignInWithGithub
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
name={idp.name}
|
name={idp.name}
|
||||||
></SignInWithGithub>
|
></SignInWithGithub>
|
||||||
);
|
);
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB_ES:
|
case 7: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITHUB_ES:
|
||||||
return (
|
return (
|
||||||
<SignInWithGithub
|
<SignInWithGithub
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
name={idp.name}
|
name={idp.name}
|
||||||
></SignInWithGithub>
|
></SignInWithGithub>
|
||||||
);
|
);
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_AZURE_AD:
|
case 5: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_AZURE_AD:
|
||||||
return (
|
return (
|
||||||
<SignInWithAzureAD
|
<SignInWithAzureAD
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
name={idp.name}
|
name={idp.name}
|
||||||
></SignInWithAzureAD>
|
></SignInWithAzureAD>
|
||||||
);
|
);
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GOOGLE:
|
case 10: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GOOGLE:
|
||||||
return (
|
return (
|
||||||
<SignInWithGoogle
|
<SignInWithGoogle
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
name={idp.name}
|
name={idp.name}
|
||||||
onClick={() => startFlow(idp)}
|
onClick={() =>
|
||||||
|
startFlow(idp).then(({ authUrl }) => {
|
||||||
|
console.log("done");
|
||||||
|
router.push(authUrl);
|
||||||
|
})
|
||||||
|
}
|
||||||
></SignInWithGoogle>
|
></SignInWithGoogle>
|
||||||
);
|
);
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB:
|
case 8: // IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB:
|
||||||
return (
|
return (
|
||||||
<SignInWithGitlab
|
<SignInWithGitlab
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
name={idp.name}
|
name={idp.name}
|
||||||
></SignInWithGitlab>
|
></SignInWithGitlab>
|
||||||
);
|
);
|
||||||
case IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB_SELF_HOSTED:
|
case 9: //IdentityProviderType.IDENTITY_PROVIDER_TYPE_GITLAB_SELF_HOSTED:
|
||||||
return (
|
return (
|
||||||
<SignInWithGitlab
|
<SignInWithGitlab
|
||||||
key={`idp-${i}`}
|
key={`idp-${i}`}
|
||||||
|
|||||||
@@ -11,12 +11,12 @@
|
|||||||
],
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"generate": "buf generate https://github.com/zitadel/zitadel.git --path ./proto/zitadel",
|
"generate": "buf generate https://github.com/zitadel/zitadel.git --path ./proto/zitadel",
|
||||||
"build": "tsup src/index.ts --format esm,cjs --dts",
|
"build": "tsup --dts",
|
||||||
"test": "pnpm test:unit",
|
"test": "pnpm test:unit",
|
||||||
"test:watch": "pnpm test:unit:watch",
|
"test:watch": "pnpm test:unit:watch",
|
||||||
"test:unit": "jest",
|
"test:unit": "jest",
|
||||||
"test:unit:watch": "jest --watch",
|
"test:unit:watch": "jest --watch",
|
||||||
"dev": "tsup src/index.ts --format esm,cjs --watch --dts",
|
"dev": "tsup --watch --dts",
|
||||||
"lint": "eslint \"src/**/*.ts*\"",
|
"lint": "eslint \"src/**/*.ts*\"",
|
||||||
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist"
|
||||||
},
|
},
|
||||||
@@ -41,4 +41,4 @@
|
|||||||
"nice-grpc-web": "^3.2.3",
|
"nice-grpc-web": "^3.2.3",
|
||||||
"protobufjs": "^7.2.3"
|
"protobufjs": "^7.2.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,3 +3,11 @@ export { initializeApp, getApps } from "./app";
|
|||||||
export { getAuth } from "./auth";
|
export { getAuth } from "./auth";
|
||||||
|
|
||||||
export type { ZitadelOptions } from "./app";
|
export type { ZitadelOptions } from "./app";
|
||||||
|
export * from "./proto/client/zitadel/settings/v2alpha/legal_settings_pb";
|
||||||
|
export * from "./proto/client/zitadel/settings/v2alpha/settings_service_pb";
|
||||||
|
export * from "./proto/client/zitadel/settings/v2alpha/settings_pb";
|
||||||
|
|
||||||
|
export * from "./proto/client/zitadel/idp_pb";
|
||||||
|
export * from "./proto/client/zitadel/user_pb";
|
||||||
|
|
||||||
|
export * from "./proto/client/zitadel/settings_pb";
|
||||||
|
|||||||
13
packages/zitadel-client/tsup.config.ts
Normal file
13
packages/zitadel-client/tsup.config.ts
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
import { defineConfig, Options } from "tsup";
|
||||||
|
|
||||||
|
export default defineConfig((options: Options) => ({
|
||||||
|
treeshake: true,
|
||||||
|
splitting: true,
|
||||||
|
publicDir: true,
|
||||||
|
entry: ["src/index.ts", "src/**/index.ts"],
|
||||||
|
format: ["esm", "cjs"],
|
||||||
|
dts: true,
|
||||||
|
minify: true,
|
||||||
|
clean: true,
|
||||||
|
...options,
|
||||||
|
}));
|
||||||
@@ -26,8 +26,8 @@
|
|||||||
"@testing-library/jest-dom": "^5.16.5",
|
"@testing-library/jest-dom": "^5.16.5",
|
||||||
"@testing-library/react": "^14.0.0",
|
"@testing-library/react": "^14.0.0",
|
||||||
"@types/jest": "^29.5.1",
|
"@types/jest": "^29.5.1",
|
||||||
"@types/react": "^17.0.13",
|
"@types/react": "^18.2.17",
|
||||||
"@types/react-dom": "^17.0.8",
|
"@types/react-dom": "^18.2.7",
|
||||||
"@types/testing-library__jest-dom": "^5.14.6",
|
"@types/testing-library__jest-dom": "^5.14.6",
|
||||||
"@zitadel/tsconfig": "workspace:*",
|
"@zitadel/tsconfig": "workspace:*",
|
||||||
"autoprefixer": "10.4.13",
|
"autoprefixer": "10.4.13",
|
||||||
|
|||||||
@@ -1,4 +1,8 @@
|
|||||||
export interface SignInWithIdentityProviderProps {
|
import { ButtonHTMLAttributes, DetailedHTMLProps } from "react";
|
||||||
children?: React.ReactNode;
|
|
||||||
|
export type SignInWithIdentityProviderProps = DetailedHTMLProps<
|
||||||
|
ButtonHTMLAttributes<HTMLButtonElement>,
|
||||||
|
HTMLButtonElement
|
||||||
|
> & {
|
||||||
name?: string;
|
name?: string;
|
||||||
}
|
};
|
||||||
|
|||||||
@@ -1,18 +1,25 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ReactNode, forwardRef } from "react";
|
||||||
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
||||||
|
|
||||||
export interface SignInWithAzureADProps
|
export const SignInWithAzureAD = forwardRef<
|
||||||
extends SignInWithIdentityProviderProps {}
|
HTMLButtonElement,
|
||||||
|
SignInWithIdentityProviderProps
|
||||||
export function SignInWithAzureAD(props: SignInWithAzureADProps) {
|
>(
|
||||||
return (
|
({ children, className = "", name = "", ...props }, ref): ReactNode => (
|
||||||
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
|
<button
|
||||||
|
type="button"
|
||||||
|
ref={ref}
|
||||||
|
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
width={25}
|
width={25}
|
||||||
height={24}
|
height={24}
|
||||||
fill="none"
|
fill="none"
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
fill="#e24329"
|
fill="#e24329"
|
||||||
@@ -32,11 +39,15 @@ export function SignInWithAzureAD(props: SignInWithAzureADProps) {
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<span className="ztdl-ml-4">
|
{children ? (
|
||||||
{props.name ? props.name : "Sign in with AzureAD"}
|
children
|
||||||
</span>
|
) : (
|
||||||
</div>
|
<span className="ztdl-ml-4">
|
||||||
);
|
{name ? name : "Sign in with AzureAD"}
|
||||||
}
|
</span>
|
||||||
|
)}
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
SignInWithAzureAD.displayName = "SignInWithAzureAD";
|
SignInWithAzureAD.displayName = "SignInWithAzureAD";
|
||||||
|
|||||||
@@ -1,18 +1,25 @@
|
|||||||
|
"use client";
|
||||||
|
|
||||||
|
import { ReactNode, forwardRef } from "react";
|
||||||
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
||||||
|
|
||||||
export interface SignInWithGithubProps
|
export const SignInWithGithub = forwardRef<
|
||||||
extends SignInWithIdentityProviderProps {}
|
HTMLButtonElement,
|
||||||
|
SignInWithIdentityProviderProps
|
||||||
export function SignInWithGithub(props: SignInWithGithubProps) {
|
>(
|
||||||
return (
|
({ children, className = "", name = "", ...props }, ref): ReactNode => (
|
||||||
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
|
<button
|
||||||
|
type="button"
|
||||||
|
ref={ref}
|
||||||
|
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
width={25}
|
width={25}
|
||||||
height={24}
|
height={24}
|
||||||
fill="none"
|
fill="none"
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
fill="#e24329"
|
fill="#e24329"
|
||||||
@@ -32,11 +39,13 @@ export function SignInWithGithub(props: SignInWithGithubProps) {
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<span className="ztdl-ml-4">
|
{children ? (
|
||||||
{props.name ? props.name : "Sign in with Github"}
|
children
|
||||||
</span>
|
) : (
|
||||||
</div>
|
<span className="ztdl-ml-4">{name ? name : "Sign in with Github"}</span>
|
||||||
);
|
)}
|
||||||
}
|
</button>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
SignInWithGithub.displayName = "SignInWithGithub";
|
SignInWithGithub.displayName = "SignInWithGithub";
|
||||||
|
|||||||
@@ -1,18 +1,23 @@
|
|||||||
|
import { ReactNode, forwardRef } from "react";
|
||||||
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
||||||
|
|
||||||
export interface SignInWithGitlabProps
|
export const SignInWithGitlab = forwardRef<
|
||||||
extends SignInWithIdentityProviderProps {}
|
HTMLButtonElement,
|
||||||
|
SignInWithIdentityProviderProps
|
||||||
export function SignInWithGitlab(props: SignInWithGitlabProps) {
|
>(
|
||||||
return (
|
({ children, className = "", name = "", ...props }, ref): ReactNode => (
|
||||||
<div className="ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm">
|
<button
|
||||||
|
type="button"
|
||||||
|
ref={ref}
|
||||||
|
className={`ztdl-w-full ztdl-cursor-pointer ztdl-flex ztdl-flex-row ztdl-items-center ztdl-bg-white ztdl-text-black dark:ztdl-bg-transparent dark:ztdl-text-white border ztdl-border-divider-light dark:ztdl-border-divider-dark rounded-md px-4 text-sm ${className}`}
|
||||||
|
{...props}
|
||||||
|
>
|
||||||
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
<div className="ztdl-h-12 ztdl-w-12 flex items-center justify-center">
|
||||||
<svg
|
<svg
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
width={25}
|
width={25}
|
||||||
height={24}
|
height={24}
|
||||||
fill="none"
|
fill="none"
|
||||||
{...props}
|
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
fill="#e24329"
|
fill="#e24329"
|
||||||
@@ -32,11 +37,13 @@ export function SignInWithGitlab(props: SignInWithGitlabProps) {
|
|||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
<span className="ztdl-ml-4">
|
{children ? (
|
||||||
{props.name ? props.name : "Sign in with Gitlab"}
|
children
|
||||||
</span>
|
) : (
|
||||||
</div>
|
<span className="ztdl-ml-4">{name ? name : "Sign in with GitLab"}</span>
|
||||||
);
|
)}
|
||||||
}
|
</button>
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
SignInWithGitlab.displayName = "SignInWithGitlab";
|
SignInWithGitlab.displayName = "SignInWithGitlab";
|
||||||
|
|||||||
@@ -1,23 +1,9 @@
|
|||||||
"use client";
|
import { ReactNode, forwardRef } from "react";
|
||||||
|
|
||||||
import {
|
|
||||||
ButtonHTMLAttributes,
|
|
||||||
DetailedHTMLProps,
|
|
||||||
ReactNode,
|
|
||||||
forwardRef,
|
|
||||||
} from "react";
|
|
||||||
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
import { SignInWithIdentityProviderProps } from "./SignInWith";
|
||||||
|
|
||||||
type SignInWithGoogleProps = DetailedHTMLProps<
|
|
||||||
ButtonHTMLAttributes<HTMLButtonElement>,
|
|
||||||
HTMLButtonElement
|
|
||||||
> & {
|
|
||||||
name?: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const SignInWithGoogle = forwardRef<
|
export const SignInWithGoogle = forwardRef<
|
||||||
HTMLButtonElement,
|
HTMLButtonElement,
|
||||||
SignInWithGoogleProps
|
SignInWithIdentityProviderProps
|
||||||
>(
|
>(
|
||||||
({ children, className = "", name = "", ...props }, ref): ReactNode => (
|
({ children, className = "", name = "", ...props }, ref): ReactNode => (
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -2,20 +2,11 @@ import "./styles.css";
|
|||||||
|
|
||||||
export { SignInWithGoogle } from "./components/SignInWithGoogle";
|
export { SignInWithGoogle } from "./components/SignInWithGoogle";
|
||||||
|
|
||||||
export {
|
export { SignInWithGitlab } from "./components/SignInWithGitlab";
|
||||||
SignInWithGitlab,
|
|
||||||
type SignInWithGitlabProps,
|
|
||||||
} from "./components/SignInWithGitlab";
|
|
||||||
|
|
||||||
export {
|
export { SignInWithAzureAD } from "./components/SignInWithAzureAD";
|
||||||
SignInWithAzureAD,
|
|
||||||
type SignInWithAzureADProps,
|
|
||||||
} from "./components/SignInWithAzureAD";
|
|
||||||
|
|
||||||
export {
|
export { SignInWithGithub } from "./components/SignInWithGithub";
|
||||||
SignInWithGithub,
|
|
||||||
type SignInWithGithubProps,
|
|
||||||
} from "./components/SignInWithGithub";
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
ZitadelReactProvider,
|
ZitadelReactProvider,
|
||||||
|
|||||||
105
pnpm-lock.yaml
generated
105
pnpm-lock.yaml
generated
@@ -38,6 +38,9 @@ importers:
|
|||||||
'@vercel/analytics':
|
'@vercel/analytics':
|
||||||
specifier: ^1.0.0
|
specifier: ^1.0.0
|
||||||
version: 1.0.0(react@18.2.0)
|
version: 1.0.0(react@18.2.0)
|
||||||
|
'@zitadel/client':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/zitadel-client
|
||||||
'@zitadel/next':
|
'@zitadel/next':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/zitadel-next
|
version: link:../../packages/zitadel-next
|
||||||
@@ -57,11 +60,11 @@ importers:
|
|||||||
specifier: ^2.29.4
|
specifier: ^2.29.4
|
||||||
version: 2.29.4
|
version: 2.29.4
|
||||||
next:
|
next:
|
||||||
specifier: 13.4.7
|
specifier: 13.4.12
|
||||||
version: 13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
|
version: 13.4.12(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
|
||||||
next-themes:
|
next-themes:
|
||||||
specifier: ^0.2.1
|
specifier: ^0.2.1
|
||||||
version: 0.2.1(next@13.4.7)(react-dom@18.2.0)(react@18.2.0)
|
version: 0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0)
|
||||||
nice-grpc:
|
nice-grpc:
|
||||||
specifier: 2.0.1
|
specifier: 2.0.1
|
||||||
version: 2.0.1
|
version: 2.0.1
|
||||||
@@ -325,11 +328,11 @@ importers:
|
|||||||
specifier: ^29.5.1
|
specifier: ^29.5.1
|
||||||
version: 29.5.2
|
version: 29.5.2
|
||||||
'@types/react':
|
'@types/react':
|
||||||
specifier: ^17.0.13
|
specifier: ^18.2.17
|
||||||
version: 17.0.52
|
version: 18.2.17
|
||||||
'@types/react-dom':
|
'@types/react-dom':
|
||||||
specifier: ^17.0.8
|
specifier: ^18.2.7
|
||||||
version: 17.0.18
|
version: 18.2.7
|
||||||
'@types/testing-library__jest-dom':
|
'@types/testing-library__jest-dom':
|
||||||
specifier: ^5.14.6
|
specifier: ^5.14.6
|
||||||
version: 5.14.6
|
version: 5.14.6
|
||||||
@@ -1495,8 +1498,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==}
|
resolution: {integrity: sha512-3G1yD/XKTSLdihyDSa8JEsaWOELY+OWe08o0LUYzfuHp1zHDA8SObQlzKt+v+wrkkPcnPweoLH1ImZeUa0A1NQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@next/env@13.4.7:
|
/@next/env@13.4.12:
|
||||||
resolution: {integrity: sha512-ZlbiFulnwiFsW9UV1ku1OvX/oyIPLtMk9p/nnvDSwI0s7vSoZdRtxXNsaO+ZXrLv/pMbXVGq4lL8TbY9iuGmVw==}
|
resolution: {integrity: sha512-RmHanbV21saP/6OEPBJ7yJMuys68cIf8OBBWd7+uj40LdpmswVAwe1uzeuFyUsd6SfeITWT3XnQfn6wULeKwDQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/@next/eslint-plugin-next@13.4.12:
|
/@next/eslint-plugin-next@13.4.12:
|
||||||
@@ -1514,8 +1517,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-darwin-arm64@13.4.7:
|
/@next/swc-darwin-arm64@13.4.12:
|
||||||
resolution: {integrity: sha512-VZTxPv1b59KGiv/pZHTO5Gbsdeoxcj2rU2cqJu03btMhHpn3vwzEK0gUSVC/XW96aeGO67X+cMahhwHzef24/w==}
|
resolution: {integrity: sha512-deUrbCXTMZ6ZhbOoloqecnUeNpUOupi8SE2tx4jPfNS9uyUR9zK4iXBvH65opVcA/9F5I/p8vDXSYbUlbmBjZg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@@ -1532,8 +1535,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-darwin-x64@13.4.7:
|
/@next/swc-darwin-x64@13.4.12:
|
||||||
resolution: {integrity: sha512-gO2bw+2Ymmga+QYujjvDz9955xvYGrWofmxTq7m70b9pDPvl7aDFABJOZ2a8SRCuSNB5mXU8eTOmVVwyp/nAew==}
|
resolution: {integrity: sha512-WRvH7RxgRHlC1yb5oG0ZLx8F7uci9AivM5/HGGv9ZyG2Als8Ij64GC3d+mQ5sJhWjusyU6T6V1WKTUoTmOB0zQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
@@ -1550,8 +1553,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-linux-arm64-gnu@13.4.7:
|
/@next/swc-linux-arm64-gnu@13.4.12:
|
||||||
resolution: {integrity: sha512-6cqp3vf1eHxjIDhEOc7Mh/s8z1cwc/l5B6ZNkOofmZVyu1zsbEM5Hmx64s12Rd9AYgGoiCz4OJ4M/oRnkE16/Q==}
|
resolution: {integrity: sha512-YEKracAWuxp54tKiAvvq73PUs9lok57cc8meYRibTWe/VdPB2vLgkTVWFcw31YDuRXdEhdX0fWS6Q+ESBhnEig==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -1568,8 +1571,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-linux-arm64-musl@13.4.7:
|
/@next/swc-linux-arm64-musl@13.4.12:
|
||||||
resolution: {integrity: sha512-T1kD2FWOEy5WPidOn1si0rYmWORNch4a/NR52Ghyp4q7KyxOCuiOfZzyhVC5tsLIBDH3+cNdB5DkD9afpNDaOw==}
|
resolution: {integrity: sha512-LhJR7/RAjdHJ2Isl2pgc/JaoxNk0KtBgkVpiDJPVExVWA1c6gzY57+3zWuxuyWzTG+fhLZo2Y80pLXgIJv7g3g==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -1586,8 +1589,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-linux-x64-gnu@13.4.7:
|
/@next/swc-linux-x64-gnu@13.4.12:
|
||||||
resolution: {integrity: sha512-zaEC+iEiAHNdhl6fuwl0H0shnTzQoAoJiDYBUze8QTntE/GNPfTYpYboxF5LRYIjBwETUatvE0T64W6SKDipvg==}
|
resolution: {integrity: sha512-1DWLL/B9nBNiQRng+1aqs3OaZcxC16Nf+mOnpcrZZSdyKHek3WQh6j/fkbukObgNGwmCoVevLUa/p3UFTTqgqg==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -1604,8 +1607,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-linux-x64-musl@13.4.7:
|
/@next/swc-linux-x64-musl@13.4.12:
|
||||||
resolution: {integrity: sha512-X6r12F8d8SKAtYJqLZBBMIwEqcTRvUdVm+xIq+l6pJqlgT2tNsLLf2i5Cl88xSsIytBICGsCNNHd+siD2fbWBA==}
|
resolution: {integrity: sha512-kEAJmgYFhp0VL+eRWmUkVxLVunn7oL9Mdue/FS8yzRBVj7Z0AnIrHpTIeIUl1bbdQq1VaoOztnKicAjfkLTRCQ==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
@@ -1622,8 +1625,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-win32-arm64-msvc@13.4.7:
|
/@next/swc-win32-arm64-msvc@13.4.12:
|
||||||
resolution: {integrity: sha512-NPnmnV+vEIxnu6SUvjnuaWRglZzw4ox5n/MQTxeUhb5iwVWFedolPFebMNwgrWu4AELwvTdGtWjqof53AiWHcw==}
|
resolution: {integrity: sha512-GMLuL/loR6yIIRTnPRY6UGbLL9MBdw2anxkOnANxvLvsml4F0HNIgvnU3Ej4BjbqMTNjD4hcPFdlEow4XHPdZA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -1640,8 +1643,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-win32-ia32-msvc@13.4.7:
|
/@next/swc-win32-ia32-msvc@13.4.12:
|
||||||
resolution: {integrity: sha512-6Hxijm6/a8XqLQpOOf/XuwWRhcuc/g4rBB2oxjgCMuV9Xlr2bLs5+lXyh8w9YbAUMYR3iC9mgOlXbHa79elmXw==}
|
resolution: {integrity: sha512-PhgNqN2Vnkm7XaMdRmmX0ZSwZXQAtamBVSa9A/V1dfKQCV1rjIZeiy/dbBnVYGdj63ANfsOR/30XpxP71W0eww==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [ia32]
|
cpu: [ia32]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -1658,8 +1661,8 @@ packages:
|
|||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
/@next/swc-win32-x64-msvc@13.4.7:
|
/@next/swc-win32-x64-msvc@13.4.12:
|
||||||
resolution: {integrity: sha512-sW9Yt36Db1nXJL+mTr2Wo0y+VkPWeYhygvcHj1FF0srVtV+VoDjxleKtny21QHaG05zdeZnw2fCtf2+dEqgwqA==}
|
resolution: {integrity: sha512-Z+56e/Ljt0bUs+T+jPjhFyxYBcdY2RIq9ELFU+qAMQMteHo7ymbV7CKmlcX59RI9C4YzN8PgMgLyAoi916b5HA==}
|
||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
@@ -1816,7 +1819,7 @@ packages:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@babel/runtime': 7.20.1
|
'@babel/runtime': 7.20.1
|
||||||
'@testing-library/dom': 9.3.0
|
'@testing-library/dom': 9.3.0
|
||||||
'@types/react-dom': 18.0.9
|
'@types/react-dom': 18.2.7
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0(react@18.2.0)
|
react-dom: 18.2.0(react@18.2.0)
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1956,16 +1959,16 @@ packages:
|
|||||||
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
|
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-dom@17.0.18:
|
/@types/react-dom@18.0.9:
|
||||||
resolution: {integrity: sha512-rLVtIfbwyur2iFKykP2w0pl/1unw26b5td16d5xMgp7/yjTHomkyxPYChFoCr/FtEX1lN9wY6lFj1qvKdS5kDw==}
|
resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 17.0.52
|
'@types/react': 17.0.52
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react-dom@18.0.9:
|
/@types/react-dom@18.2.7:
|
||||||
resolution: {integrity: sha512-qnVvHxASt/H7i+XG1U1xMiY5t+IHcPGUK7TDMDzom08xa7e86eCeKOiLZezwCKVxJn6NEiiy2ekgX8aQssjIKg==}
|
resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/react': 18.2.8
|
'@types/react': 18.2.17
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/react@17.0.52:
|
/@types/react@17.0.52:
|
||||||
@@ -1976,6 +1979,14 @@ packages:
|
|||||||
csstype: 3.1.1
|
csstype: 3.1.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/react@18.2.17:
|
||||||
|
resolution: {integrity: sha512-u+e7OlgPPh+aryjOm5UJMX32OvB2E3QASOAqVMY6Ahs90djagxwv2ya0IctglNbNTexC12qCSMZG47KPfy1hAA==}
|
||||||
|
dependencies:
|
||||||
|
'@types/prop-types': 15.7.5
|
||||||
|
'@types/scheduler': 0.16.2
|
||||||
|
csstype: 3.1.1
|
||||||
|
dev: true
|
||||||
|
|
||||||
/@types/react@18.2.8:
|
/@types/react@18.2.8:
|
||||||
resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==}
|
resolution: {integrity: sha512-lTyWUNrd8ntVkqycEEplasWy2OxNlShj3zqS0LuB1ENUGis5HodmhM7DtCoUGbxj3VW/WsGA0DUhpG6XrM7gPA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -6094,14 +6105,14 @@ packages:
|
|||||||
/natural-compare@1.4.0:
|
/natural-compare@1.4.0:
|
||||||
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
|
||||||
|
|
||||||
/next-themes@0.2.1(next@13.4.7)(react-dom@18.2.0)(react@18.2.0):
|
/next-themes@0.2.1(next@13.4.12)(react-dom@18.2.0)(react@18.2.0):
|
||||||
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
|
resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
next: '*'
|
next: '*'
|
||||||
react: '*'
|
react: '*'
|
||||||
react-dom: '*'
|
react-dom: '*'
|
||||||
dependencies:
|
dependencies:
|
||||||
next: 13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
|
next: 13.4.12(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0)
|
||||||
react: 18.2.0
|
react: 18.2.0
|
||||||
react-dom: 18.2.0(react@18.2.0)
|
react-dom: 18.2.0(react@18.2.0)
|
||||||
dev: false
|
dev: false
|
||||||
@@ -6149,8 +6160,8 @@ packages:
|
|||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
/next@13.4.7(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0):
|
/next@13.4.12(@babel/core@7.22.1)(react-dom@18.2.0)(react@18.2.0)(sass@1.62.0):
|
||||||
resolution: {integrity: sha512-M8z3k9VmG51SRT6v5uDKdJXcAqLzP3C+vaKfLIAM0Mhx1um1G7MDnO63+m52qPdZfrTFzMZNzfsgvm3ghuVHIQ==}
|
resolution: {integrity: sha512-eHfnru9x6NRmTMcjQp6Nz0J4XH9OubmzOa7CkWL+AUrUxpibub3vWwttjduu9No16dug1kq04hiUUpo7J3m3Xw==}
|
||||||
engines: {node: '>=16.8.0'}
|
engines: {node: '>=16.8.0'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -6167,7 +6178,7 @@ packages:
|
|||||||
sass:
|
sass:
|
||||||
optional: true
|
optional: true
|
||||||
dependencies:
|
dependencies:
|
||||||
'@next/env': 13.4.7
|
'@next/env': 13.4.12
|
||||||
'@swc/helpers': 0.5.1
|
'@swc/helpers': 0.5.1
|
||||||
busboy: 1.6.0
|
busboy: 1.6.0
|
||||||
caniuse-lite: 1.0.30001473
|
caniuse-lite: 1.0.30001473
|
||||||
@@ -6179,15 +6190,15 @@ packages:
|
|||||||
watchpack: 2.4.0
|
watchpack: 2.4.0
|
||||||
zod: 3.21.4
|
zod: 3.21.4
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@next/swc-darwin-arm64': 13.4.7
|
'@next/swc-darwin-arm64': 13.4.12
|
||||||
'@next/swc-darwin-x64': 13.4.7
|
'@next/swc-darwin-x64': 13.4.12
|
||||||
'@next/swc-linux-arm64-gnu': 13.4.7
|
'@next/swc-linux-arm64-gnu': 13.4.12
|
||||||
'@next/swc-linux-arm64-musl': 13.4.7
|
'@next/swc-linux-arm64-musl': 13.4.12
|
||||||
'@next/swc-linux-x64-gnu': 13.4.7
|
'@next/swc-linux-x64-gnu': 13.4.12
|
||||||
'@next/swc-linux-x64-musl': 13.4.7
|
'@next/swc-linux-x64-musl': 13.4.12
|
||||||
'@next/swc-win32-arm64-msvc': 13.4.7
|
'@next/swc-win32-arm64-msvc': 13.4.12
|
||||||
'@next/swc-win32-ia32-msvc': 13.4.7
|
'@next/swc-win32-ia32-msvc': 13.4.12
|
||||||
'@next/swc-win32-x64-msvc': 13.4.7
|
'@next/swc-win32-x64-msvc': 13.4.12
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@babel/core'
|
- '@babel/core'
|
||||||
- babel-plugin-macros
|
- babel-plugin-macros
|
||||||
|
|||||||
Reference in New Issue
Block a user