diff --git a/docs/components/index.ts b/docs/components/index.ts
index 4037305845..161fa6d77d 100644
--- a/docs/components/index.ts
+++ b/docs/components/index.ts
@@ -2,3 +2,4 @@ export * from "./frame";
export * from "./sidenav/sidenav-title-with-icon";
export * from "./reference/property-reference";
export * from "./copilotkit-css";
+export * from "./link-to-copilot-cloud";
\ No newline at end of file
diff --git a/docs/components/link-to-copilot-cloud.tsx b/docs/components/link-to-copilot-cloud.tsx
new file mode 100644
index 0000000000..59bbf76462
--- /dev/null
+++ b/docs/components/link-to-copilot-cloud.tsx
@@ -0,0 +1,57 @@
+import { useEffect, useState } from "react";
+import Link from "next/link";
+import { useAuth } from "@clerk/nextjs";
+import posthog from "posthog-js";
+
+export function LinkToCopilotCloud({
+ className,
+ subPath,
+ asLink = true,
+ children
+}: {
+ className?: string;
+ subPath?: string;
+ asLink?: boolean;
+ children?: React.ReactNode;
+}) {
+ const [isClient, setIsClient] = useState(false);
+ const { userId } = useAuth();
+
+ useEffect(() => {
+ setIsClient(true);
+ }, []);
+
+ if (!isClient) {
+ return null;
+ }
+ const url = new URL(`https://cloud.copilotkit.ai`);
+ url.searchParams.set("ref", "docs");
+
+ const sessionId = posthog.get_session_id();
+
+ if (sessionId) {
+ url.searchParams.set("session_id", sessionId);
+ }
+
+ if (subPath) {
+ url.pathname += subPath;
+ }
+
+ let cn = `${className}`;
+
+ if (asLink) {
+ cn = "_text-primary-600 decoration-from-font underline [text-underline-position:from-font]";
+ }
+
+ return (
+
+ {
+ children ? children : userId ? "Go to Copilot Cloud" : "Sign up to Copilot Cloud"
+ }
+
+ );
+}
diff --git a/docs/globals.css b/docs/globals.css
index a7aa9cf557..3046de3c51 100644
--- a/docs/globals.css
+++ b/docs/globals.css
@@ -48,6 +48,14 @@ button:has(.nested-title) > svg {
@apply hidden;
}
+button:has(.disable-menu) > svg {
+ @apply hidden;
+}
+
+[id^="headlessui-menu-items-"] {
+ @apply hidden !important;
+}
+
.nested-title {
@apply text-gray-900 font-semibold [&:not(:first-child)]:mt-5 mb-2 pb-1.5;
}
diff --git a/docs/lib/hooks/usePostHog.tsx b/docs/lib/providers/PostHogProvider.tsx
similarity index 50%
rename from docs/lib/hooks/usePostHog.tsx
rename to docs/lib/providers/PostHogProvider.tsx
index 624864714d..2a7824df0c 100644
--- a/docs/lib/hooks/usePostHog.tsx
+++ b/docs/lib/providers/PostHogProvider.tsx
@@ -1,16 +1,26 @@
-// Check that PostHog is client-side (used to handle Next.js SSR)
-import { useRouter } from "next/router";
+import { PostHogProvider as PostHogProviderBase } from "posthog-js/react";
import posthog from "posthog-js";
+import { useRouter } from "next/router";
import { useEffect } from "react";
+import { useAuth } from "@clerk/nextjs";
+import { useSearchParams } from "next/navigation";
const POSTHOG_KEY = process.env.POSTHOG_KEY;
const POSTHOG_HOST = process.env.POSTHOG_HOST;
if (typeof window !== "undefined") {
+ // Get search param
+ const searchParams = new URLSearchParams(window.location.search);
+ const sessionId = searchParams.get("session_id");
+
if (POSTHOG_KEY && POSTHOG_HOST) {
+
posthog.init(POSTHOG_KEY, {
api_host: POSTHOG_HOST,
person_profiles: "identified_only",
+ bootstrap: {
+ sessionID: sessionId ?? undefined,
+ },
// Enable debug mode in development
loaded: (posthog) => {
if (process.env.NODE_ENV === "development") posthog.debug();
@@ -19,8 +29,18 @@ if (typeof window !== "undefined") {
}
}
-export function usePostHog() {
+export function PostHogProvider({ children }: { children: React.ReactNode }) {
const router = useRouter();
+ const { userId } = useAuth();
+ const searchParams = useSearchParams();
+
+ const sessionId = searchParams.get("session_id");
+
+ posthog?.set_config({
+ bootstrap: {
+ sessionID: sessionId ?? undefined,
+ },
+ });
useEffect(() => {
if (!POSTHOG_KEY || !POSTHOG_HOST) return;
@@ -36,5 +56,11 @@ export function usePostHog() {
};
}, []);
- return { posthog };
-}
+ useEffect(() => {
+ if (userId) {
+ posthog?.identify(userId);
+ }
+ }, [userId]);
+
+ return {children};
+}
\ No newline at end of file
diff --git a/docs/next.config.mjs b/docs/next.config.mjs
index 5b55895aa9..ad39373d18 100644
--- a/docs/next.config.mjs
+++ b/docs/next.config.mjs
@@ -12,6 +12,7 @@ export default withNextra({
POSTHOG_KEY: process.env.POSTHOG_KEY,
POSTHOG_HOST: process.env.POSTHOG_HOST,
SCARF_PIXEL_ID: process.env.SCARF_PIXEL_ID,
+ CLERK_PUBLISHABLE_KEY: process.env.CLERK_PUBLISHABLE_KEY || "pk_live_Y2xlcmsuY29waWxvdGtpdC5haSQ",
},
async redirects() {
return [
diff --git a/docs/package.json b/docs/package.json
index 221dca22fd..4b7c3f428d 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -13,6 +13,7 @@
"author": "",
"license": "ISC",
"dependencies": {
+ "@clerk/nextjs": "^5.2.8",
"@stackblitz/sdk": "^1.11.0",
"@vercel/og": "^0.6.2",
"next": "^14.2.5",
diff --git a/docs/pages/_app.tsx b/docs/pages/_app.tsx
index 3ccef8136b..a2962ca4cc 100644
--- a/docs/pages/_app.tsx
+++ b/docs/pages/_app.tsx
@@ -2,9 +2,9 @@ import "../globals.css";
import { AppProps } from "next/app";
import { IBM_Plex_Sans } from "next/font/google";
import { useRB2B } from "../lib/hooks/useRB2B";
-import { PostHogProvider } from "posthog-js/react";
-import { usePostHog } from "../lib/hooks/usePostHog";
import { ScarfPixel } from "../lib/ScarfPixel";
+import { ClerkProvider } from "@clerk/nextjs";
+import { PostHogProvider } from "../lib/providers/PostHogProvider";
const plex = IBM_Plex_Sans({
subsets: ["latin"],
@@ -13,16 +13,17 @@ const plex = IBM_Plex_Sans({
export default function App({ Component, pageProps }: AppProps) {
useRB2B();
- const { posthog } = usePostHog();
return (
<>
-
-
-
-
-
-
+
+
+
+
+
+
+
+
>
);
}
diff --git a/docs/pages/_meta.tsx b/docs/pages/_meta.tsx
index ad922fdf04..46cd01809f 100644
--- a/docs/pages/_meta.tsx
+++ b/docs/pages/_meta.tsx
@@ -1,4 +1,12 @@
+import { LinkToCopilotCloud } from "../components/link-to-copilot-cloud";
+
export default {
+ "copilot-cloud": {
+ title: (
+
+ ),
+ type: "menu",
+ },
"___getting-started": {
type: "separator",
title: "Getting Started",
@@ -15,15 +23,15 @@ export default {
"tutorial-textarea": {
title: "Tutorial: Textarea Autocomplete",
},
- "concepts": {
+ concepts: {
title: Concepts,
type: "doc",
},
- "reference": {
+ reference: {
title: Reference,
type: "doc",
},
- "___contributing": {
+ ___contributing: {
type: "separator",
title: "Contributing",
},
@@ -33,7 +41,7 @@ export default {
"documentation-contributions": {
title: "Documentation Contributions",
},
- "___extras": {
+ ___extras: {
type: "separator",
title: "Extras",
},
diff --git a/docs/pages/quickstart-chatbot.mdx b/docs/pages/quickstart-chatbot.mdx
index 81cc8407bc..d05d0a1370 100644
--- a/docs/pages/quickstart-chatbot.mdx
+++ b/docs/pages/quickstart-chatbot.mdx
@@ -1,5 +1,6 @@
import { Callout } from "nextra/components";
import { Tabs } from "nextra/components";
+import { LinkToCopilotCloud } from "../components";
# Quickstart: Chatbot
@@ -17,7 +18,7 @@ First, you must wrap all components that interact with your copilot with the [`<
Additionally, let's use the [``](/reference/components/CopilotSidebar) UI component to display the copilot chat sidebar. Some other options you can choose from are [``](/reference/components/CopilotPopup) and [``](/reference/components/CopilotChat).
- Copilot Cloud is the easiest way to get started with CopilotKit. [Sign up for free and get your public API key](https://cloud.copilotkit.ai), then replace `` with your actual API key.
+ Copilot Cloud is the easiest way to get started with CopilotKit. Sign up for free and get your public API key, then replace `` with your actual API key.
If you prefer to self-host, you will need to [set up your Copilot Runtime endpoint](/concepts/copilot-runtime).
diff --git a/docs/pages/reference/components/CopilotKit.mdx b/docs/pages/reference/components/CopilotKit.mdx
index 0f6ea338ec..8b5f30b9f2 100644
--- a/docs/pages/reference/components/CopilotKit.mdx
+++ b/docs/pages/reference/components/CopilotKit.mdx
@@ -1,5 +1,6 @@
import { Tabs } from "nextra/components";
import { PropertyReference } from "../../../components/reference/property-reference";
+import { LinkToCopilotCloud } from "../../../components";
# ``
@@ -10,7 +11,7 @@ This component will typically wrap your entire application (or a sub-tree of you
- You can get your Copilot Cloud API key for free by [signing up here](https://cloud.copilotkit.ai).
+ You can get your Copilot Cloud API key for free by signing up here.
```tsx
import { CopilotKit } from "@copilotkit/react-core";
@@ -41,7 +42,7 @@ This component will typically wrap your entire application (or a sub-tree of you
- Your Copilot Cloud API key. Don't have it yet? [Click here to sign up for free](https://cloud.copilotkit.ai).
+ Your Copilot Cloud API key. Don't have it yet? Click here to sign up for free.
diff --git a/docs/pages/tutorial-ai-todo-list-copilot/step-2-setup-copilotkit.mdx b/docs/pages/tutorial-ai-todo-list-copilot/step-2-setup-copilotkit.mdx
index 87d6154d17..3c06c9aa26 100644
--- a/docs/pages/tutorial-ai-todo-list-copilot/step-2-setup-copilotkit.mdx
+++ b/docs/pages/tutorial-ai-todo-list-copilot/step-2-setup-copilotkit.mdx
@@ -1,4 +1,5 @@
import { Callout } from "nextra/components"
+import { LinkToCopilotCloud } from "../../components";
# Step 2: Setup CopilotKit
@@ -19,7 +20,7 @@ npm install @copilotkit/react-core @copilotkit/react-ui
In this example, we use Copilot Cloud, which is the easiest way to get started with CopilotKit.
- [Click here to sign up for free and get your API key](https://cloud.copilotkit.ai/).
+ Click here to sign up for free and get your API key.
If you prefer to self-host the Copilot Runtime, refer to [this guide](/concepts/copilot-runtime).
diff --git a/docs/pages/tutorial-textarea/step-2-setup-copilotkit.mdx b/docs/pages/tutorial-textarea/step-2-setup-copilotkit.mdx
index 20fd7caa23..70b8aafbdc 100644
--- a/docs/pages/tutorial-textarea/step-2-setup-copilotkit.mdx
+++ b/docs/pages/tutorial-textarea/step-2-setup-copilotkit.mdx
@@ -1,4 +1,5 @@
import { Callout } from "nextra/components"
+import { LinkToCopilotCloud } from "../../components";
# Step 2: Setup CopilotKit
@@ -20,7 +21,7 @@ npm install @copilotkit/react-core @copilotkit/react-ui @copilotkit/react-textar
In this example, we use Copilot Cloud, which is the easiest way to get started with CopilotKit.
- [Click here to sign up for free and get your API key](https://cloud.copilotkit.ai/).
+ Click here to sign up for free and get your API key.
If you prefer to self-host the Copilot Runtime, refer to [this guide](/concepts/copilot-runtime).
diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml
index cff6db9309..8affc3513f 100644
--- a/docs/pnpm-lock.yaml
+++ b/docs/pnpm-lock.yaml
@@ -8,6 +8,9 @@ importers:
.:
dependencies:
+ '@clerk/nextjs':
+ specifier: ^5.2.8
+ version: 5.2.8(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@stackblitz/sdk':
specifier: ^1.11.0
version: 1.11.0
@@ -67,6 +70,41 @@ packages:
'@braintree/sanitize-url@6.0.4':
resolution: {integrity: sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==}
+ '@clerk/backend@1.4.3':
+ resolution: {integrity: sha512-wj4qsZO6iNiY9vF7vLH5v1f3oLh1yCLgFa0PedLzJAIJgepZl23C1/ubrRm7vyewjQEMHZwod4816mZlHDfoqA==}
+ engines: {node: '>=18.17.0'}
+
+ '@clerk/clerk-react@5.2.10':
+ resolution: {integrity: sha512-qJZ79aiB80cUuqccKqhk6QImGIji4y1bjK1xbGnqiAthtMegxFShLJwEsrF7nl0Rw5yM9cphiwETEqBWfIPL4Q==}
+ engines: {node: '>=18.17.0'}
+ peerDependencies:
+ react: '>=18 || >=19.0.0-beta'
+ react-dom: '>=18 || >=19.0.0-beta'
+
+ '@clerk/nextjs@5.2.8':
+ resolution: {integrity: sha512-dy4K1e2ygWBsDjnLmQKtoeRpoToCNFRXMu6GN4VesE9/mOYNXKiyJE2/DY6lGV3oR2f8Qr9YjcXzphRnf1d/OQ==}
+ engines: {node: '>=18.17.0'}
+ peerDependencies:
+ next: ^13.5.4 || ^14.0.3 || >=15.0.0-rc
+ react: '>=18 || >=19.0.0-beta'
+ react-dom: '>=18 || >=19.0.0-beta'
+
+ '@clerk/shared@2.4.1':
+ resolution: {integrity: sha512-sApuz6hDRIai4Jwo/fBcihX74+DdrKLt08LkEVrooh/7zc0ipDOSGlqmAy15yNuKPaxpemp/9nW4T8gq6uIr9Q==}
+ engines: {node: '>=18.17.0'}
+ peerDependencies:
+ react: '>=18 || >=19.0.0-beta'
+ react-dom: '>=18 || >=19.0.0-beta'
+ peerDependenciesMeta:
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
+ '@clerk/types@4.9.1':
+ resolution: {integrity: sha512-fCmqzPBFh0rH9TlUVPpvPW225DtGJDuCv5GecwuuzD8hcgwGetTfRSDRNl5Dub5aJuqYWGQQCCnKfnfCrhZvrA==}
+ engines: {node: '>=18.17.0'}
+
'@corex/deepmerge@4.0.43':
resolution: {integrity: sha512-N8uEMrMPL0cu/bdboEWpQYb/0i2K5Qn8eCsxzOmxSggJbbQte7ljMRoXm917AbntqTGOzdTu+vP3KOOzoC70HQ==}
@@ -563,6 +601,10 @@ packages:
compute-scroll-into-view@3.1.0:
resolution: {integrity: sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==}
+ cookie@0.5.0:
+ resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
+ engines: {node: '>= 0.6'}
+
cose-base@1.0.3:
resolution: {integrity: sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==}
@@ -573,6 +615,9 @@ packages:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'}
+ crypto-js@4.2.0:
+ resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==}
+
css-background-parser@0.1.0:
resolution: {integrity: sha512-2EZLisiZQ+7m4wwur/qiYJRniHX4K5Tc9w93MT3AS0WS1u5kaZ4FKXlOTBhOjc+CgEgPiGY+fX1yWD8UwpEqUA==}
@@ -591,6 +636,9 @@ packages:
engines: {node: '>=4'}
hasBin: true
+ csstype@3.1.1:
+ resolution: {integrity: sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==}
+
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
@@ -783,6 +831,9 @@ packages:
dompurify@3.1.6:
resolution: {integrity: sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ==}
+ dot-case@3.0.4:
+ resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==}
+
eastasianwidth@0.2.0:
resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
@@ -928,6 +979,9 @@ packages:
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
engines: {node: '>=10.13.0'}
+ glob-to-regexp@0.4.1:
+ resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
+
glob@10.4.5:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
@@ -1081,6 +1135,10 @@ packages:
resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==}
hasBin: true
+ js-cookie@3.0.5:
+ resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
+ engines: {node: '>=14'}
+
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1130,12 +1188,19 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
+ lower-case@2.0.2:
+ resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
+
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
lru-cache@4.1.5:
resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==}
+ map-obj@4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+
markdown-extensions@2.0.0:
resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
engines: {node: '>=16'}
@@ -1485,6 +1550,9 @@ packages:
nlcst-to-string@4.0.0:
resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
+ no-case@3.0.4:
+ resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
+
node-releases@2.0.18:
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
@@ -1559,6 +1627,9 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-to-regexp@6.2.2:
+ resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==}
+
periscopic@3.1.0:
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
@@ -1754,6 +1825,9 @@ packages:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
+ server-only@0.0.1:
+ resolution: {integrity: sha512-qepMx2JxAa5jjfzxG79yPPq+8BuFToHd1hm7kI+Z4zAq1ftQiP7HcxMhDDItrbtwVeLg/cY2JnKnrcFkmiswNA==}
+
shebang-command@1.2.0:
resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
engines: {node: '>=0.10.0'}
@@ -1784,6 +1858,13 @@ packages:
resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==}
engines: {node: '>=14.16'}
+ snake-case@3.0.4:
+ resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
+
+ snakecase-keys@5.4.4:
+ resolution: {integrity: sha512-YTywJG93yxwHLgrYLZjlC75moVEX04LZM4FHfihjHe1FCXm+QaLOFfSf535aXOAd0ArVQMWUAe8ZPm4VtWyXaA==}
+ engines: {node: '>=12'}
+
source-map-js@1.2.0:
resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
engines: {node: '>=0.10.0'}
@@ -1802,6 +1883,9 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ std-env@3.7.0:
+ resolution: {integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==}
+
streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
@@ -1871,6 +1955,11 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ swr@2.2.5:
+ resolution: {integrity: sha512-QtxqyclFeAsxEUeZIYmsaQ0UjimSq1RZ9Un7I68/0ClKK/U3LoyQunwkQfJZr2fc22DfIXLNDc2wFyTEikCUpg==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0
+
tailwindcss@3.4.6:
resolution: {integrity: sha512-1uRHzPB+Vzu57ocybfZ4jh5Q3SdlH7XW23J5sQoM9LhE9eIOlzxer/3XPSsycvih3rboRsvt0QCmzSrqyOYUIA==}
engines: {node: '>=14.0.0'}
@@ -1911,6 +2000,9 @@ packages:
ts-interface-checker@0.1.13:
resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ tslib@2.4.1:
+ resolution: {integrity: sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==}
+
tslib@2.6.3:
resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==}
@@ -1922,6 +2014,10 @@ packages:
peerDependencies:
typescript: '*'
+ type-fest@2.19.0:
+ resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
+ engines: {node: '>=12.20'}
+
typescript@5.5.3:
resolution: {integrity: sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==}
engines: {node: '>=14.17'}
@@ -1987,6 +2083,11 @@ packages:
peerDependencies:
browserslist: '>= 4.21.0'
+ use-sync-external-store@1.2.2:
+ resolution: {integrity: sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+
util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
@@ -2074,6 +2175,54 @@ snapshots:
'@braintree/sanitize-url@6.0.4': {}
+ '@clerk/backend@1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@clerk/shared': 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.9.1
+ cookie: 0.5.0
+ snakecase-keys: 5.4.4
+ tslib: 2.4.1
+ transitivePeerDependencies:
+ - react
+ - react-dom
+
+ '@clerk/clerk-react@5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@clerk/shared': 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.9.1
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ tslib: 2.4.1
+
+ '@clerk/nextjs@5.2.8(next@14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@clerk/backend': 1.4.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/clerk-react': 5.2.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/shared': 2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@clerk/types': 4.9.1
+ crypto-js: 4.2.0
+ next: 14.2.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ path-to-regexp: 6.2.2
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ server-only: 0.0.1
+ tslib: 2.4.1
+
+ '@clerk/shared@2.4.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@clerk/types': 4.9.1
+ glob-to-regexp: 0.4.1
+ js-cookie: 3.0.5
+ std-env: 3.7.0
+ swr: 2.2.5(react@18.3.1)
+ optionalDependencies:
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
+ '@clerk/types@4.9.1':
+ dependencies:
+ csstype: 3.1.1
+
'@corex/deepmerge@4.0.43': {}
'@headlessui/react@1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
@@ -2524,6 +2673,8 @@ snapshots:
compute-scroll-into-view@3.1.0: {}
+ cookie@0.5.0: {}
+
cose-base@1.0.3:
dependencies:
layout-base: 1.0.2
@@ -2540,6 +2691,8 @@ snapshots:
shebang-command: 2.0.0
which: 2.0.2
+ crypto-js@4.2.0: {}
+
css-background-parser@0.1.0: {}
css-box-shadow@1.0.0-3: {}
@@ -2554,6 +2707,8 @@ snapshots:
cssesc@3.0.0: {}
+ csstype@3.1.1: {}
+
csstype@3.1.3: {}
cytoscape-cose-bilkent@4.1.0(cytoscape@3.30.1):
@@ -2763,6 +2918,11 @@ snapshots:
dompurify@3.1.6: {}
+ dot-case@3.0.4:
+ dependencies:
+ no-case: 3.0.4
+ tslib: 2.6.3
+
eastasianwidth@0.2.0: {}
electron-to-chromium@1.4.832: {}
@@ -2897,6 +3057,8 @@ snapshots:
dependencies:
is-glob: 4.0.3
+ glob-to-regexp@0.4.1: {}
+
glob@10.4.5:
dependencies:
foreground-child: 3.2.1
@@ -3121,6 +3283,8 @@ snapshots:
jiti@1.21.6: {}
+ js-cookie@3.0.5: {}
+
js-tokens@4.0.0: {}
js-yaml@3.14.1:
@@ -3159,6 +3323,10 @@ snapshots:
dependencies:
js-tokens: 4.0.0
+ lower-case@2.0.2:
+ dependencies:
+ tslib: 2.6.3
+
lru-cache@10.4.3: {}
lru-cache@4.1.5:
@@ -3166,6 +3334,8 @@ snapshots:
pseudomap: 1.0.2
yallist: 2.1.2
+ map-obj@4.3.0: {}
+
markdown-extensions@2.0.0: {}
markdown-table@3.0.3: {}
@@ -3964,6 +4134,11 @@ snapshots:
dependencies:
'@types/nlcst': 2.0.3
+ no-case@3.0.4:
+ dependencies:
+ lower-case: 2.0.2
+ tslib: 2.6.3
+
node-releases@2.0.18: {}
non-layered-tidy-tree-layout@2.0.2: {}
@@ -4034,6 +4209,8 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-to-regexp@6.2.2: {}
+
periscopic@3.1.0:
dependencies:
'@types/estree': 1.0.5
@@ -4307,6 +4484,8 @@ snapshots:
extend-shallow: 2.0.1
kind-of: 6.0.3
+ server-only@0.0.1: {}
+
shebang-command@1.2.0:
dependencies:
shebang-regex: 1.0.0
@@ -4330,6 +4509,17 @@ snapshots:
slash@5.1.0: {}
+ snake-case@3.0.4:
+ dependencies:
+ dot-case: 3.0.4
+ tslib: 2.6.3
+
+ snakecase-keys@5.4.4:
+ dependencies:
+ map-obj: 4.3.0
+ snake-case: 3.0.4
+ type-fest: 2.19.0
+
source-map-js@1.2.0: {}
source-map@0.7.4: {}
@@ -4344,6 +4534,8 @@ snapshots:
sprintf-js@1.0.3: {}
+ std-env@3.7.0: {}
+
streamsearch@1.1.0: {}
string-width@4.2.3:
@@ -4408,6 +4600,12 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ swr@2.2.5(react@18.3.1):
+ dependencies:
+ client-only: 0.0.1
+ react: 18.3.1
+ use-sync-external-store: 1.2.2(react@18.3.1)
+
tailwindcss@3.4.6:
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -4466,6 +4664,8 @@ snapshots:
ts-interface-checker@0.1.13: {}
+ tslib@2.4.1: {}
+
tslib@2.6.3: {}
twoslash-protocol@0.2.9: {}
@@ -4478,6 +4678,8 @@ snapshots:
transitivePeerDependencies:
- supports-color
+ type-fest@2.19.0: {}
+
typescript@5.5.3: {}
undici-types@5.26.5: {}
@@ -4574,6 +4776,10 @@ snapshots:
escalade: 3.1.2
picocolors: 1.0.1
+ use-sync-external-store@1.2.2(react@18.3.1):
+ dependencies:
+ react: 18.3.1
+
util-deprecate@1.0.2: {}
uuid@9.0.1: {}