feat: add intercom (#4363)

Co-authored-by: Piyush Gupta <piyushguptaa2z123@gmail.com>
This commit is contained in:
Johannes
2024-11-29 06:53:23 -08:00
committed by GitHub
parent a3043c1f6d
commit a3bea3b7da
13 changed files with 275 additions and 150 deletions

View File

@@ -185,4 +185,7 @@ UNSPLASH_ACCESS_KEY=
# AI_AZURE_RESSOURCE_NAME=
# AI_AZURE_API_KEY=
# AI_AZURE_EMBEDDINGS_DEPLOYMENT_ID=
# AI_AZURE_LLM_DEPLOYMENT_ID=
# AI_AZURE_LLM_DEPLOYMENT_ID=
# NEXT_PUBLIC_INTERCOM_APP_ID=
# INTERCOM_SECRET_KEY=

View File

@@ -481,7 +481,8 @@ export const MainNavigation = ({
<DropdownMenuItem
onClick={async () => {
await signOut({ callbackUrl: "/auth/login" });
const route = await signOut({ redirect: false, callbackUrl: "/auth/login" });
router.push(route.url);
await formbricksLogout();
}}
icon={<LogOutIcon className="h-4 w-4" strokeWidth={1.5} />}>

View File

@@ -1,10 +1,12 @@
import { FormbricksClient } from "@/app/(app)/components/FormbricksClient";
import { IntercomClient } from "@/app/IntercomClient";
import { authOptions } from "@/modules/auth/lib/authOptions";
import { NoMobileOverlay } from "@/modules/ui/components/no-mobile-overlay";
import { PHProvider, PostHogPageview } from "@/modules/ui/components/post-hog-client";
import { ToasterClient } from "@/modules/ui/components/toaster-client";
import { getServerSession } from "next-auth";
import { Suspense } from "react";
import { INTERCOM_SECRET_KEY, IS_INTERCOM_CONFIGURED } from "@formbricks/lib/constants";
import { getUser } from "@formbricks/lib/user/service";
const AppLayout = async ({ children }) => {
@@ -20,6 +22,11 @@ const AppLayout = async ({ children }) => {
<PHProvider>
<>
{session && user ? <FormbricksClient session={session} userEmail={user.email} /> : null}
<IntercomClient
isIntercomConfigured={IS_INTERCOM_CONFIGURED}
intercomSecretKey={INTERCOM_SECRET_KEY}
user={user}
/>
<ToasterClient />
{children}
</>

View File

@@ -1,9 +1,12 @@
import { IntercomClient } from "@/app/IntercomClient";
import { NoMobileOverlay } from "@/modules/ui/components/no-mobile-overlay";
import { INTERCOM_SECRET_KEY, IS_INTERCOM_CONFIGURED } from "@formbricks/lib/constants";
const AppLayout = async ({ children }) => {
return (
<>
<NoMobileOverlay />
<IntercomClient isIntercomConfigured={IS_INTERCOM_CONFIGURED} intercomSecretKey={INTERCOM_SECRET_KEY} />
{children}
</>
);

View File

@@ -0,0 +1,56 @@
"use client";
import Intercom from "@intercom/messenger-js-sdk";
import { createHmac } from "crypto";
import { useCallback, useEffect } from "react";
import { env } from "@formbricks/lib/env";
import { TUser } from "@formbricks/types/user";
const intercomAppId = env.NEXT_PUBLIC_INTERCOM_APP_ID;
interface IntercomClientProps {
isIntercomConfigured: boolean;
intercomSecretKey?: string;
user?: TUser | null;
}
export const IntercomClient = ({ user, intercomSecretKey, isIntercomConfigured }: IntercomClientProps) => {
const initializeIntercom = useCallback(() => {
let initParams = {};
if (user) {
const { id, name, email, createdAt } = user;
const hash = createHmac("sha256", intercomSecretKey!).update(user?.id).digest("hex");
initParams = {
user_id: id,
user_hash: hash,
name,
email,
created_at: createdAt ? Math.floor(createdAt.getTime() / 1000) : undefined,
};
}
Intercom({
app_id: intercomAppId!,
...initParams,
});
}, [user]);
useEffect(() => {
try {
if (isIntercomConfigured) initializeIntercom();
return () => {
// Shutdown Intercom when component unmounts
if (typeof window !== "undefined" && window.Intercom) {
window.Intercom("shutdown");
}
};
} catch (error) {
console.error("Failed to initialize Intercom:", error);
}
}, [isIntercomConfigured]);
return null;
};

View File

@@ -1,19 +0,0 @@
export const getCSPHeaderValues = () => {
const nonce = Buffer.from(crypto.randomUUID()).toString("base64");
const cspHeader = `
default-src 'self';
script-src 'self';
style-src 'self';
img-src 'self' blob: data:;
font-src 'self';
object-src 'none';
base-uri 'self';
form-action 'self';
frame-ancestors 'none';
upgrade-insecure-requests;
`
.replace(/\s{2,}/g, " ")
.trim();
return { nonce, cspHeader };
};

View File

@@ -19,8 +19,8 @@ import {
} from "@/app/middleware/endpointValidator";
import { ipAddress } from "@vercel/functions";
import { getToken } from "next-auth/jwt";
import { NextResponse } from "next/server";
import type { NextRequest } from "next/server";
import { NextResponse } from "next/server";
import { RATE_LIMITING_DISABLED, WEBAPP_URL } from "@formbricks/lib/constants";
import { isValidCallbackUrl } from "@formbricks/lib/utils/url";

View File

@@ -58,6 +58,10 @@ const nextConfig = {
protocol: "https",
hostname: "images.unsplash.com",
},
{
protocol: "https",
hostname: "api-iam.eu.intercom.io",
},
],
},
async redirects() {
@@ -163,7 +167,7 @@ const nextConfig = {
{
key: "Content-Security-Policy",
value:
"default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline' https:; img-src 'self' data: https:; font-src 'self' https:; connect-src 'self' https:; frame-src 'self' https://app.cal.com; media-src 'self' https:; object-src 'none'; base-uri 'self'; form-action 'self';",
"default-src 'self'; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.intercom.io https://*.intercomcdn.com; style-src 'self' 'unsafe-inline' https://*.intercomcdn.com; img-src 'self' blob: data: https://*.intercom.io https://*.intercomcdn.com; font-src 'self' data: https://*.intercomcdn.com; connect-src 'self' https://*.intercom.io wss://*.intercom.io https://*.intercomcdn.com https:; frame-src 'self' https://*.intercom.io; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests;",
},
],
},

View File

@@ -25,51 +25,8 @@
"@formbricks/surveys": "workspace:*",
"@formbricks/types": "workspace:*",
"@hookform/resolvers": "3.9.0",
"@intercom/messenger-js-sdk": "0.0.14",
"@json2csv/node": "7.0.6",
"@opentelemetry/api-logs": "0.53.0",
"@opentelemetry/instrumentation": "0.53.0",
"@opentelemetry/sdk-logs": "0.53.0",
"@paralleldrive/cuid2": "2.2.2",
"@radix-ui/react-collapsible": "1.1.1",
"@react-email/components": "0.0.25",
"@sentry/nextjs": "8.34.0",
"@tanstack/react-table": "8.20.5",
"@vercel/functions": "1.5.0",
"@vercel/og": "0.6.3",
"@vercel/otel": "1.10.0",
"@vercel/speed-insights": "1.0.12",
"ai": "3.4.33",
"bcryptjs": "2.4.3",
"dotenv": "16.4.5",
"encoding": "0.1.13",
"file-loader": "6.2.0",
"framer-motion": "11.11.8",
"googleapis": "144.0.0",
"https-proxy-agent": "7.0.5",
"jiti": "2.3.3",
"jsonwebtoken": "9.0.2",
"langfuse-vercel": "3.27.0",
"lodash": "4.17.21",
"lru-cache": "11.0.1",
"next": "15.0.3",
"next-intl": "3.20.0",
"next-safe-action": "7.9.3",
"optional": "0.1.4",
"otplib": "12.0.1",
"papaparse": "5.4.1",
"posthog-js": "1.167.0",
"prismjs": "1.29.0",
"react": "19.0.0-rc-ed15d500-20241110",
"react-dom": "19.0.0-rc-ed15d500-20241110",
"react-hook-form": "7.53.0",
"react-hot-toast": "2.4.1",
"redis": "4.7.0",
"sharp": "0.33.5",
"stripe": "16.7.0",
"ua-parser-js": "1.0.39",
"webpack": "5.95.0",
"xlsx": "0.18.5",
"react-use": "17.5.1",
"@lexical/code": "0.17.0",
"@lexical/link": "0.17.0",
"@lexical/list": "0.17.0",
@@ -77,8 +34,13 @@
"@lexical/react": "0.17.0",
"@lexical/rich-text": "0.17.0",
"@lexical/table": "0.17.0",
"@opentelemetry/api-logs": "0.53.0",
"@opentelemetry/instrumentation": "0.53.0",
"@opentelemetry/sdk-logs": "0.53.0",
"@paralleldrive/cuid2": "2.2.2",
"@radix-ui/react-accordion": "1.2.0",
"@radix-ui/react-checkbox": "1.1.1",
"@radix-ui/react-collapsible": "1.1.1",
"@radix-ui/react-dialog": "1.1.1",
"@radix-ui/react-dropdown-menu": "2.1.1",
"@radix-ui/react-label": "2.1.0",
@@ -93,22 +55,62 @@
"@radix-ui/react-toggle": "1.1.0",
"@radix-ui/react-toggle-group": "1.1.0",
"@radix-ui/react-tooltip": "1.1.2",
"@react-email/components": "0.0.25",
"@sentry/nextjs": "8.34.0",
"@tailwindcss/forms": "0.5.9",
"@tailwindcss/typography": "0.5.13",
"@tanstack/react-table": "8.20.5",
"@vercel/functions": "1.5.0",
"@vercel/og": "0.6.3",
"@vercel/otel": "1.10.0",
"@vercel/speed-insights": "1.0.12",
"ai": "3.4.33",
"autoprefixer": "10.4.20",
"bcryptjs": "2.4.3",
"boring-avatars": "1.10.2",
"class-variance-authority": "0.7.0",
"clsx": "2.1.1",
"cmdk": "1.0.0",
"dotenv": "16.4.5",
"encoding": "0.1.13",
"file-loader": "6.2.0",
"framer-motion": "11.11.8",
"googleapis": "144.0.0",
"https-proxy-agent": "7.0.5",
"jiti": "2.3.3",
"jsonwebtoken": "9.0.2",
"langfuse-vercel": "3.27.0",
"lexical": "0.17.0",
"lodash": "4.17.21",
"lru-cache": "11.0.1",
"lucide-react": "0.452.0",
"mime": "4.0.4",
"next": "15.0.3",
"next-intl": "3.20.0",
"next-safe-action": "7.9.3",
"optional": "0.1.4",
"otplib": "12.0.1",
"papaparse": "5.4.1",
"posthog-js": "1.167.0",
"prismjs": "1.29.0",
"react": "19.0.0-rc-ed15d500-20241110",
"react-colorful": "5.6.1",
"react-confetti": "6.1.0",
"react-day-picker": "9.0.8",
"react-dom": "19.0.0-rc-ed15d500-20241110",
"react-hook-form": "7.53.0",
"react-hot-toast": "2.4.1",
"react-icons": "5.3.0",
"react-radio-group": "3.0.3",
"react-use": "17.5.1",
"redis": "4.7.0",
"sharp": "0.33.5",
"stripe": "16.7.0",
"tailwind-merge": "2.5.2",
"tailwindcss": "3.4.13"
"tailwindcss": "3.4.13",
"ua-parser-js": "1.0.39",
"webpack": "5.95.0",
"xlsx": "0.18.5"
},
"devDependencies": {
"@formbricks/config-typescript": "workspace:*",

View File

@@ -239,3 +239,7 @@ export const IS_AI_CONFIGURED = Boolean(
env.AI_AZURE_LLM_DEPLOYMENT_ID &&
env.AI_AZURE_LLM_RESSOURCE_NAME
);
export const INTERCOM_SECRET_KEY = env.INTERCOM_SECRET_KEY;
export const IS_INTERCOM_CONFIGURED = Boolean(env.NEXT_PUBLIC_INTERCOM_APP_ID && INTERCOM_SECRET_KEY);

View File

@@ -45,6 +45,7 @@ export const env = createEnv({
.optional()
.or(z.string().refine((str) => str === "")),
INVITE_DISABLED: z.enum(["1", "0"]).optional(),
INTERCOM_SECRET_KEY: z.string().optional(),
IS_FORMBRICKS_CLOUD: z.enum(["1", "0"]).optional(),
MAIL_FROM: z.string().email().optional(),
NEXTAUTH_SECRET: z.string().min(1),
@@ -114,6 +115,7 @@ export const env = createEnv({
NEXT_PUBLIC_POSTHOG_API_KEY: z.string().optional(),
NEXT_PUBLIC_POSTHOG_API_HOST: z.string().optional(),
NEXT_PUBLIC_SENTRY_DSN: z.string().optional(),
NEXT_PUBLIC_INTERCOM_APP_ID: z.string().optional(),
},
/*
* Due to how Next.js bundles environment variables on Edge and Client,
@@ -159,6 +161,7 @@ export const env = createEnv({
HTTPS_PROXY: process.env.HTTPS_PROXY,
IMPRINT_URL: process.env.IMPRINT_URL,
INVITE_DISABLED: process.env.INVITE_DISABLED,
INTERCOM_SECRET_KEY: process.env.INTERCOM_SECRET_KEY,
IS_FORMBRICKS_CLOUD: process.env.IS_FORMBRICKS_CLOUD,
MAIL_FROM: process.env.MAIL_FROM,
NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
@@ -169,6 +172,7 @@ export const env = createEnv({
NEXT_PUBLIC_POSTHOG_API_KEY: process.env.NEXT_PUBLIC_POSTHOG_API_KEY,
NEXT_PUBLIC_SENTRY_DSN: process.env.NEXT_PUBLIC_SENTRY_DSN,
OPENTELEMETRY_LISTENER_URL: process.env.OPENTELEMETRY_LISTENER_URL,
NEXT_PUBLIC_INTERCOM_APP_ID: process.env.NEXT_PUBLIC_INTERCOM_APP_ID,
NOTION_OAUTH_CLIENT_ID: process.env.NOTION_OAUTH_CLIENT_ID,
NOTION_OAUTH_CLIENT_SECRET: process.env.NOTION_OAUTH_CLIENT_SECRET,
OIDC_CLIENT_ID: process.env.OIDC_CLIENT_ID,

222
pnpm-lock.yaml generated
View File

@@ -124,19 +124,19 @@ importers:
version: 2.1.9(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
'@headlessui/tailwindcss':
specifier: 0.2.1
version: 0.2.1(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))
version: 0.2.1(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))
'@mapbox/rehype-prism':
specifier: 0.9.0
version: 0.9.0
'@mdx-js/loader':
specifier: 3.0.1
version: 3.0.1(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
version: 3.0.1(webpack@5.95.0)
'@mdx-js/react':
specifier: 3.0.1
version: 3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110)
'@next/mdx':
specifier: 15.0.3
version: 15.0.3(@mdx-js/loader@3.0.1(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))))(@mdx-js/react@3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110))
version: 15.0.3(@mdx-js/loader@3.0.1(webpack@5.95.0))(@mdx-js/react@3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110))
'@paralleldrive/cuid2':
specifier: 2.2.2
version: 2.2.2
@@ -145,7 +145,7 @@ importers:
version: 2.2.1
'@tailwindcss/typography':
specifier: 0.5.15
version: 0.5.15(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))
version: 0.5.15(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))
acorn:
specifier: 8.12.1
version: 8.12.1
@@ -241,7 +241,7 @@ importers:
version: 1.2.1
tailwindcss:
specifier: 3.4.13
version: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
version: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
unist-util-filter:
specifier: 5.0.1
version: 5.0.1
@@ -306,7 +306,7 @@ importers:
version: 8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(storybook@8.3.5)(typescript@5.4.5)
'@storybook/react-vite':
specifier: 8.3.5
version: 8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)
version: 8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)
'@storybook/test':
specifier: 8.3.5
version: 8.3.5(storybook@8.3.5)
@@ -333,7 +333,7 @@ importers:
version: 8.3.5
tsup:
specifier: 8.3.0
version: 8.3.0(@microsoft/api-extractor@7.43.0(@types/node@22.3.0))(@swc/core@1.3.101(@swc/helpers@0.5.13))(jiti@2.3.3)(postcss@8.4.47)(tsx@4.16.5)(typescript@5.4.5)(yaml@2.5.1)
version: 8.3.0(@microsoft/api-extractor@7.43.0(@types/node@22.3.0))(@swc/core@1.3.101)(jiti@2.3.3)(postcss@8.4.47)(tsx@4.16.5)(typescript@5.4.5)(yaml@2.5.1)
vite:
specifier: 5.4.8
version: 5.4.8(@types/node@22.3.0)(terser@5.31.6)
@@ -379,6 +379,9 @@ importers:
'@hookform/resolvers':
specifier: 3.9.0
version: 3.9.0(react-hook-form@7.53.0(react@19.0.0-rc-ed15d500-20241110))
'@intercom/messenger-js-sdk':
specifier: 0.0.14
version: 0.0.14
'@json2csv/node':
specifier: 7.0.6
version: 7.0.6
@@ -471,19 +474,19 @@ importers:
version: 0.0.25(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
'@sentry/nextjs':
specifier: 8.34.0
version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
version: 8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(webpack@5.95.0)
'@tailwindcss/forms':
specifier: 0.5.9
version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))
version: 0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))
'@tailwindcss/typography':
specifier: 0.5.13
version: 0.5.13(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))
version: 0.5.13(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))
'@tanstack/react-table':
specifier: 8.20.5
version: 8.20.5(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
'@vercel/functions':
specifier: 1.5.0
version: 1.5.0(@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.631.0(aws-crt@1.21.3)))
version: 1.5.0(@aws-sdk/credential-provider-web-identity@3.621.0)
'@vercel/og':
specifier: 0.6.3
version: 0.6.3
@@ -522,7 +525,7 @@ importers:
version: 0.1.13
file-loader:
specifier: 6.2.0
version: 6.2.0(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
version: 6.2.0(webpack@5.95.0)
framer-motion:
specifier: 11.11.8
version: 11.11.8(@emotion/is-prop-valid@0.8.8)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
@@ -601,6 +604,9 @@ importers:
react-hot-toast:
specifier: 2.4.1
version: 2.4.1(csstype@3.1.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
react-icons:
specifier: 5.3.0
version: 5.3.0(react@19.0.0-rc-ed15d500-20241110)
react-radio-group:
specifier: 3.0.3
version: 3.0.3(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
@@ -621,13 +627,13 @@ importers:
version: 2.5.2
tailwindcss:
specifier: 3.4.13
version: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
version: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
ua-parser-js:
specifier: 1.0.39
version: 1.0.39
webpack:
specifier: 5.95.0
version: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
version: 5.95.0
xlsx:
specifier: 0.18.5
version: 0.18.5
@@ -700,7 +706,7 @@ importers:
version: 8.0.0(eslint@8.57.0)(typescript@5.4.5)
'@vercel/style-guide':
specifier: 6.0.0
version: 6.0.0(@next/eslint-plugin-next@14.2.5)(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5)(vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6))
version: 6.0.0(@next/eslint-plugin-next@14.2.5)(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5)(vitest@2.0.5)
eslint-config-next:
specifier: 14.2.5
version: 14.2.5(eslint@8.57.0)(typescript@5.4.5)
@@ -785,7 +791,7 @@ importers:
version: 3.1.1(prisma@5.20.0)(typescript@5.4.5)
ts-node:
specifier: 10.9.2
version: 10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)
version: 10.9.2(@swc/core@1.3.101)(@types/node@22.3.0)(typescript@5.4.5)
zod:
specifier: 3.23.8
version: 3.23.8
@@ -937,7 +943,7 @@ importers:
version: 16.4.5
ts-node:
specifier: 10.9.2
version: 10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)
version: 10.9.2(@swc/core@1.3.101)(@types/node@22.3.0)(typescript@5.4.5)
vitest:
specifier: 2.0.5
version: 2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6)
@@ -1032,7 +1038,7 @@ importers:
version: 14.2.3
tailwindcss:
specifier: 3.4.10
version: 3.4.10(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
version: 3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.4.5))
terser:
specifier: 5.31.6
version: 5.31.6
@@ -3011,6 +3017,9 @@ packages:
cpu: [x64]
os: [win32]
'@intercom/messenger-js-sdk@0.0.14':
resolution: {integrity: sha512-2dH4BDAh9EI90K7hUkAdZ76W79LM45Sd1OBX7t6Vzy8twpNiQ5X+7sH9G5hlJlkSGnf+vFWlFcy9TOYAyEs1hA==}
'@isaacs/cliui@8.0.2':
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
@@ -11297,6 +11306,11 @@ packages:
react: '>=16'
react-dom: '>=16'
react-icons@5.3.0:
resolution: {integrity: sha512-DnUk8aFbTyQPSkCfF8dbX6kQjXA9DktMeJqfjrg6cK9vwQVMxmcA3BfP4QoiztVmEHtwlTgLFsPuH2NskKT6eg==}
peerDependencies:
react: '*'
react-is@16.13.1:
resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==}
@@ -15917,9 +15931,9 @@ snapshots:
react: 19.0.0-rc-ed15d500-20241110
react-dom: 19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110)
'@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))':
'@headlessui/tailwindcss@0.2.1(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))':
dependencies:
tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
tailwindcss: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
'@hookform/resolvers@3.9.0(react-hook-form@7.53.0(react@19.0.0-rc-ed15d500-20241110))':
dependencies:
@@ -16026,6 +16040,8 @@ snapshots:
'@img/sharp-win32-x64@0.33.5':
optional: true
'@intercom/messenger-js-sdk@0.0.14': {}
'@isaacs/cliui@8.0.2':
dependencies:
string-width: 5.1.2
@@ -16299,11 +16315,11 @@ snapshots:
refractor: 3.6.0
unist-util-visit: 2.0.3
'@mdx-js/loader@3.0.1(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))':
'@mdx-js/loader@3.0.1(webpack@5.95.0)':
dependencies:
'@mdx-js/mdx': 3.0.1
source-map: 0.7.4
webpack: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
webpack: 5.95.0
transitivePeerDependencies:
- supports-color
@@ -16397,11 +16413,11 @@ snapshots:
dependencies:
glob: 10.3.10
'@next/mdx@15.0.3(@mdx-js/loader@3.0.1(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))))(@mdx-js/react@3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110))':
'@next/mdx@15.0.3(@mdx-js/loader@3.0.1(webpack@5.95.0))(@mdx-js/react@3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110))':
dependencies:
source-map: 0.7.4
optionalDependencies:
'@mdx-js/loader': 3.0.1(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
'@mdx-js/loader': 3.0.1(webpack@5.95.0)
'@mdx-js/react': 3.0.1(@types/react@18.3.11)(react@19.0.0-rc-ed15d500-20241110)
'@next/swc-darwin-arm64@15.0.3':
@@ -18533,7 +18549,7 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
'@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))':
'@sentry/nextjs@8.34.0(@opentelemetry/api@1.9.0)(@opentelemetry/core@1.26.0(@opentelemetry/api@1.9.0))(@opentelemetry/instrumentation@0.53.0(@opentelemetry/api@1.9.0))(@opentelemetry/sdk-trace-base@1.26.0(@opentelemetry/api@1.9.0))(encoding@0.1.13)(next@15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(webpack@5.95.0)':
dependencies:
'@opentelemetry/instrumentation-http': 0.53.0(@opentelemetry/api@1.9.0)
'@opentelemetry/semantic-conventions': 1.27.0
@@ -18546,14 +18562,14 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
'@sentry/vercel-edge': 8.34.0
'@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
'@sentry/webpack-plugin': 2.22.3(encoding@0.1.13)(webpack@5.95.0)
chalk: 3.0.0
next: 15.0.3(@opentelemetry/api@1.9.0)(@playwright/test@1.45.3)(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)
resolve: 1.22.8
rollup: 3.29.5
stacktrace-parser: 0.1.10
optionalDependencies:
webpack: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
webpack: 5.95.0
transitivePeerDependencies:
- '@opentelemetry/api'
- '@opentelemetry/core'
@@ -18635,12 +18651,12 @@ snapshots:
'@sentry/types': 8.34.0
'@sentry/utils': 8.34.0
'@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))':
'@sentry/webpack-plugin@2.22.3(encoding@0.1.13)(webpack@5.95.0)':
dependencies:
'@sentry/bundler-plugin-core': 2.22.3(encoding@0.1.13)
unplugin: 1.0.1
uuid: 9.0.1
webpack: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
webpack: 5.95.0
transitivePeerDependencies:
- encoding
- supports-color
@@ -19192,7 +19208,7 @@ snapshots:
react: 19.0.0-rc-ed15d500-20241110
react-dom: 19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110)
'@storybook/builder-vite@8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)':
'@storybook/builder-vite@8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)':
dependencies:
'@storybook/csf-plugin': 8.3.5(storybook@8.3.5)(webpack-sources@3.2.3)
'@types/find-cache-dir': 3.2.1
@@ -19290,11 +19306,11 @@ snapshots:
react-dom: 19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110)
storybook: 8.3.5
'@storybook/react-vite@8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)':
'@storybook/react-vite@8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(rollup@4.24.0)(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)':
dependencies:
'@joshwooding/vite-plugin-react-docgen-typescript': 0.3.0(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))
'@rollup/pluginutils': 5.1.2(rollup@4.24.0)
'@storybook/builder-vite': 8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)
'@storybook/builder-vite': 8.3.5(@preact/preset-vite@2.9.0(@babel/core@7.25.2)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6)))(storybook@8.3.5)(typescript@5.4.5)(vite@5.4.8(@types/node@22.3.0)(terser@5.31.6))(webpack-sources@3.2.3)
'@storybook/react': 8.3.5(@storybook/test@8.3.5(storybook@8.3.5))(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)(storybook@8.3.5)(typescript@5.4.5)
find-up: 5.0.0
magic-string: 0.30.11
@@ -19392,7 +19408,7 @@ snapshots:
'@swc/core-win32-x64-msvc@1.3.101':
optional: true
'@swc/core@1.3.101(@swc/helpers@0.5.13)':
'@swc/core@1.3.101':
dependencies:
'@swc/counter': 0.1.3
'@swc/types': 0.1.12
@@ -19407,7 +19423,6 @@ snapshots:
'@swc/core-win32-arm64-msvc': 1.3.101
'@swc/core-win32-ia32-msvc': 1.3.101
'@swc/core-win32-x64-msvc': 1.3.101
'@swc/helpers': 0.5.13
optional: true
'@swc/counter@0.1.3': {}
@@ -19434,26 +19449,26 @@ snapshots:
optionalDependencies:
typescript: 5.4.5
'@tailwindcss/forms@0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))':
'@tailwindcss/forms@0.5.9(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))':
dependencies:
mini-svg-data-uri: 1.4.4
tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
tailwindcss: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
'@tailwindcss/typography@0.5.13(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))':
'@tailwindcss/typography@0.5.13(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
tailwindcss: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
'@tailwindcss/typography@0.5.15(tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)))':
'@tailwindcss/typography@0.5.15(tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)))':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
tailwindcss: 3.4.13(ts-node@10.9.2(typescript@5.4.5))
'@tanstack/react-table@8.20.5(react-dom@19.0.0-rc-ed15d500-20241110(react@19.0.0-rc-ed15d500-20241110))(react@19.0.0-rc-ed15d500-20241110)':
dependencies:
@@ -20130,7 +20145,7 @@ snapshots:
graphql: 15.8.0
wonka: 4.0.15
'@vercel/functions@1.5.0(@aws-sdk/credential-provider-web-identity@3.621.0(@aws-sdk/client-sts@3.631.0(aws-crt@1.21.3)))':
'@vercel/functions@1.5.0(@aws-sdk/credential-provider-web-identity@3.621.0)':
optionalDependencies:
'@aws-sdk/credential-provider-web-identity': 3.621.0(@aws-sdk/client-sts@3.631.0(aws-crt@1.21.3))
@@ -20157,7 +20172,7 @@ snapshots:
svelte: 4.2.19
vue: 3.5.11(typescript@5.4.5)
'@vercel/style-guide@6.0.0(@next/eslint-plugin-next@14.2.5)(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5)(vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6))':
'@vercel/style-guide@6.0.0(@next/eslint-plugin-next@14.2.5)(eslint@8.57.0)(prettier@3.3.3)(typescript@5.4.5)(vitest@2.0.5)':
dependencies:
'@babel/core': 7.25.2
'@babel/eslint-parser': 7.25.8(@babel/core@7.25.2)(eslint@8.57.0)
@@ -20165,7 +20180,7 @@ snapshots:
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
'@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.4.5)
eslint-config-prettier: 9.1.0(eslint@8.57.0)
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0)
eslint-import-resolver-alias: 1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0))
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.31.0)(eslint@8.57.0)
eslint-plugin-eslint-comments: 3.2.0(eslint@8.57.0)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
@@ -20177,7 +20192,7 @@ snapshots:
eslint-plugin-testing-library: 6.3.0(eslint@8.57.0)(typescript@5.4.5)
eslint-plugin-tsdoc: 0.2.17
eslint-plugin-unicorn: 51.0.1(eslint@8.57.0)
eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6))
eslint-plugin-vitest: 0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@2.0.5)
prettier-plugin-packagejson: 2.5.3(prettier@3.3.3)
optionalDependencies:
'@next/eslint-plugin-next': 14.2.5
@@ -22192,9 +22207,9 @@ snapshots:
eslint: 8.57.0
eslint-plugin-turbo: 2.0.14(eslint@8.57.0)
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0):
eslint-import-resolver-alias@1.1.2(eslint-plugin-import@2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)):
dependencies:
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
eslint-import-resolver-node@0.3.9:
dependencies:
@@ -22210,13 +22225,13 @@ snapshots:
debug: 4.3.7
enhanced-resolve: 5.17.1
eslint: 8.57.0
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.2.1
is-glob: 4.0.3
optionalDependencies:
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.0.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)
eslint-plugin-import: 2.31.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
transitivePeerDependencies:
- '@typescript-eslint/parser'
- eslint-import-resolver-node
@@ -22229,7 +22244,7 @@ snapshots:
debug: 4.3.7
enhanced-resolve: 5.17.1
eslint: 8.57.0
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
fast-glob: 3.3.2
get-tsconfig: 4.8.1
is-bun-module: 1.2.1
@@ -22242,7 +22257,7 @@ snapshots:
- eslint-import-resolver-webpack
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -22253,17 +22268,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.4.5)
eslint: 8.57.0
eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.31.0)(eslint@8.57.0)
transitivePeerDependencies:
- supports-color
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0):
eslint-module-utils@2.12.0(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.2.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0):
dependencies:
debug: 3.2.7
optionalDependencies:
@@ -22317,7 +22322,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.0
eslint-import-resolver-node: 0.3.9
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3)(eslint@8.57.0)
eslint-module-utils: 2.12.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.3(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.31.0)(eslint@8.57.0))(eslint@8.57.0)
hasown: 2.0.2
is-core-module: 2.15.1
is-glob: 4.0.3
@@ -22486,13 +22491,13 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6)):
eslint-plugin-vitest@0.3.26(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)(vitest@2.0.5):
dependencies:
'@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5)
eslint: 8.57.0
optionalDependencies:
'@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)
vitest: 2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6)
vitest: 2.0.5
transitivePeerDependencies:
- supports-color
- typescript
@@ -22860,11 +22865,11 @@ snapshots:
dependencies:
flat-cache: 3.2.0
file-loader@6.2.0(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))):
file-loader@6.2.0(webpack@5.95.0):
dependencies:
loader-utils: 2.0.4
schema-utils: 3.3.0
webpack: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
webpack: 5.95.0
filesize@10.1.6: {}
@@ -26047,13 +26052,13 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.41
postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)):
postcss-load-config@4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.4.5)):
dependencies:
lilconfig: 3.1.2
yaml: 2.5.1
optionalDependencies:
postcss: 8.4.41
ts-node: 10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)
ts-node: 10.9.2(@swc/core@1.3.101)(@types/node@22.3.0)(typescript@5.4.5)
postcss-load-config@6.0.1(jiti@2.3.3)(postcss@8.4.47)(tsx@4.16.5)(yaml@2.5.1):
dependencies:
@@ -26466,6 +26471,10 @@ snapshots:
transitivePeerDependencies:
- csstype
react-icons@5.3.0(react@19.0.0-rc-ed15d500-20241110):
dependencies:
react: 19.0.0-rc-ed15d500-20241110
react-is@16.13.1: {}
react-is@17.0.2: {}
@@ -27735,7 +27744,7 @@ snapshots:
tailwind-merge@2.5.2: {}
tailwindcss@3.4.10(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)):
tailwindcss@3.4.10(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.4.5)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -27754,7 +27763,7 @@ snapshots:
postcss: 8.4.41
postcss-import: 15.1.0(postcss@8.4.41)
postcss-js: 4.0.1(postcss@8.4.41)
postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.4.5))
postcss-nested: 6.2.0(postcss@8.4.41)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -27762,7 +27771,7 @@ snapshots:
transitivePeerDependencies:
- ts-node
tailwindcss@3.4.13(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5)):
tailwindcss@3.4.13(ts-node@10.9.2(typescript@5.4.5)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
@@ -27781,7 +27790,7 @@ snapshots:
postcss: 8.4.41
postcss-import: 15.1.0(postcss@8.4.41)
postcss-js: 4.0.1(postcss@8.4.41)
postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5))
postcss-load-config: 4.0.2(postcss@8.4.41)(ts-node@10.9.2(@types/node@22.3.0)(typescript@5.4.5))
postcss-nested: 6.2.0(postcss@8.4.41)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
@@ -27857,16 +27866,14 @@ snapshots:
ansi-escapes: 4.3.2
supports-hyperlinks: 2.3.0
terser-webpack-plugin@5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.13))(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))):
terser-webpack-plugin@5.3.10(webpack@5.95.0):
dependencies:
'@jridgewell/trace-mapping': 0.3.25
jest-worker: 27.5.1
schema-utils: 3.3.0
serialize-javascript: 6.0.2
terser: 5.31.6
webpack: 5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13))
optionalDependencies:
'@swc/core': 1.3.101(@swc/helpers@0.5.13)
webpack: 5.95.0
terser@5.31.3:
dependencies:
@@ -27998,7 +28005,7 @@ snapshots:
'@ts-morph/common': 0.12.3
code-block-writer: 11.0.3
ts-node@10.9.2(@swc/core@1.3.101(@swc/helpers@0.5.13))(@types/node@22.3.0)(typescript@5.4.5):
ts-node@10.9.2(@swc/core@1.3.101)(@types/node@22.3.0)(typescript@5.4.5):
dependencies:
'@cspotcode/source-map-support': 0.8.1
'@tsconfig/node10': 1.0.11
@@ -28016,7 +28023,7 @@ snapshots:
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
optionalDependencies:
'@swc/core': 1.3.101(@swc/helpers@0.5.13)
'@swc/core': 1.3.101
ts-pattern@4.3.0: {}
@@ -28041,7 +28048,7 @@ snapshots:
tslib@2.7.0: {}
tsup@8.3.0(@microsoft/api-extractor@7.43.0(@types/node@22.3.0))(@swc/core@1.3.101(@swc/helpers@0.5.13))(jiti@2.3.3)(postcss@8.4.47)(tsx@4.16.5)(typescript@5.4.5)(yaml@2.5.1):
tsup@8.3.0(@microsoft/api-extractor@7.43.0(@types/node@22.3.0))(@swc/core@1.3.101)(jiti@2.3.3)(postcss@8.4.47)(tsx@4.16.5)(typescript@5.4.5)(yaml@2.5.1):
dependencies:
bundle-require: 5.0.0(esbuild@0.23.1)
cac: 6.7.14
@@ -28061,7 +28068,7 @@ snapshots:
tree-kill: 1.2.2
optionalDependencies:
'@microsoft/api-extractor': 7.43.0(@types/node@22.3.0)
'@swc/core': 1.3.101(@swc/helpers@0.5.13)
'@swc/core': 1.3.101
postcss: 8.4.47
typescript: 5.4.5
transitivePeerDependencies:
@@ -28436,6 +28443,25 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
vite-node@2.0.5:
dependencies:
cac: 6.7.14
debug: 4.3.7
pathe: 1.1.2
tinyrainbow: 1.2.0
vite: 5.4.8(@types/node@22.3.0)(terser@5.31.3)
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
optional: true
vite-node@2.0.5(@types/node@22.3.0)(terser@5.31.6):
dependencies:
cac: 6.7.14
@@ -28533,6 +28559,38 @@ snapshots:
typescript: 5.4.5
vitest: 2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6)
vitest@2.0.5:
dependencies:
'@ampproject/remapping': 2.3.0
'@vitest/expect': 2.0.5
'@vitest/pretty-format': 2.1.2
'@vitest/runner': 2.0.5
'@vitest/snapshot': 2.0.5
'@vitest/spy': 2.0.5
'@vitest/utils': 2.0.5
chai: 5.1.1
debug: 4.3.7
execa: 8.0.1
magic-string: 0.30.11
pathe: 1.1.2
std-env: 3.7.0
tinybench: 2.9.0
tinypool: 1.0.1
tinyrainbow: 1.2.0
vite: 5.4.8(@types/node@22.3.0)(terser@5.31.3)
vite-node: 2.0.5
why-is-node-running: 2.3.0
transitivePeerDependencies:
- less
- lightningcss
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
optional: true
vitest@2.0.5(@types/node@22.3.0)(jsdom@24.1.3)(terser@5.31.6):
dependencies:
'@ampproject/remapping': 2.3.0
@@ -28632,7 +28690,7 @@ snapshots:
webpack-virtual-modules@0.6.2: {}
webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)):
webpack@5.95.0:
dependencies:
'@types/estree': 1.0.6
'@webassemblyjs/ast': 1.12.1
@@ -28654,7 +28712,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 3.3.0
tapable: 2.2.1
terser-webpack-plugin: 5.3.10(@swc/core@1.3.101(@swc/helpers@0.5.13))(webpack@5.95.0(@swc/core@1.3.101(@swc/helpers@0.5.13)))
terser-webpack-plugin: 5.3.10(webpack@5.95.0)
watchpack: 2.4.2
webpack-sources: 3.2.3
transitivePeerDependencies:

View File

@@ -107,6 +107,7 @@
"IMPRINT_URL",
"INVITE_DISABLED",
"IS_FORMBRICKS_CLOUD",
"INTERCOM_SECRET_KEY",
"MAIL_FROM",
"NEXT_PUBLIC_LAYER_API_KEY",
"NEXT_PUBLIC_DOCSEARCH_APP_ID",
@@ -119,6 +120,7 @@
"NEXT_PUBLIC_FORMBRICKS_URL",
"NEXT_PUBLIC_SENTRY_DSN",
"NEXT_PUBLIC_POSTHOG_API_HOST",
"NEXT_PUBLIC_INTERCOM_APP_ID",
"NEXT_PUBLIC_POSTHOG_API_KEY",
"NEXT_PUBLIC_FORMBRICKS_COM_API_HOST",
"NEXT_PUBLIC_FORMBRICKS_COM_ENVIRONMENT_ID",