diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 9de42f047..4db41fc96 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -63,6 +63,8 @@ jobs:
echo "LIVEBLOCKS_SECRET=sk_test" >> apps/app/.env.local
echo "BASEHUB_TOKEN=${{ secrets.BASEHUB_TOKEN }}" >> apps/app/.env.local
echo "VERCEL_PROJECT_PRODUCTION_URL=http://localhost:3002" >> apps/app/.env.local
+ echo "KNOCK_API_KEY=test" >> apps/app/.env.local
+ echo "KNOCK_FEED_CHANNEL_ID=test" >> apps/app/.env.local
echo "NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_JA==" >> apps/app/.env.local
echo "NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in" >> apps/app/.env.local
diff --git a/apps/api/.env.example b/apps/api/.env.example
index fd29f1e65..71bd48d36 100644
--- a/apps/api/.env.example
+++ b/apps/api/.env.example
@@ -14,6 +14,8 @@ SVIX_TOKEN=""
LIVEBLOCKS_SECRET=""
BASEHUB_TOKEN=""
VERCEL_PROJECT_PRODUCTION_URL="http://localhost:3002"
+KNOCK_API_KEY=""
+KNOCK_FEED_CHANNEL_ID=""
# Client
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=""
diff --git a/apps/app/.env.example b/apps/app/.env.example
index c62797519..053ee5b31 100644
--- a/apps/app/.env.example
+++ b/apps/app/.env.example
@@ -14,6 +14,9 @@ SVIX_TOKEN=""
LIVEBLOCKS_SECRET=""
BASEHUB_TOKEN=""
VERCEL_PROJECT_PRODUCTION_URL="http://localhost:3000"
+KNOCK_API_KEY=""
+KNOCK_FEED_CHANNEL_ID=""
+KNOCK_SECRET_API_KEY=""
# Client
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=""
@@ -26,4 +29,4 @@ NEXT_PUBLIC_POSTHOG_KEY=""
NEXT_PUBLIC_POSTHOG_HOST=""
NEXT_PUBLIC_APP_URL="http://localhost:3000"
NEXT_PUBLIC_WEB_URL="http://localhost:3001"
-NEXT_PUBLIC_DOCS_URL="http://localhost:3004"
\ No newline at end of file
+NEXT_PUBLIC_DOCS_URL="http://localhost:3004"
diff --git a/apps/app/app/(authenticated)/components/sidebar.tsx b/apps/app/app/(authenticated)/components/sidebar.tsx
index 05fab4801..f7080d87f 100644
--- a/apps/app/app/(authenticated)/components/sidebar.tsx
+++ b/apps/app/app/(authenticated)/components/sidebar.tsx
@@ -2,6 +2,7 @@
import { OrganizationSwitcher, UserButton } from '@repo/auth/client';
import { ModeToggle } from '@repo/design-system/components/mode-toggle';
+import { Button } from '@repo/design-system/components/ui/button';
import {
Collapsible,
CollapsibleContent,
@@ -33,8 +34,10 @@ import {
useSidebar,
} from '@repo/design-system/components/ui/sidebar';
import { cn } from '@repo/design-system/lib/utils';
+import { NotificationsTrigger } from '@repo/notifications/components/trigger';
import {
AnchorIcon,
+ BellIcon,
BookOpenIcon,
BotIcon,
ChevronRightIcon,
@@ -331,7 +334,14 @@ export const GlobalSidebar = ({ children }: GlobalSidebarProperties) => {
},
}}
/>
-
+
+
+
+
+
+
+
+
diff --git a/apps/app/app/(authenticated)/layout.tsx b/apps/app/app/(authenticated)/layout.tsx
index ea8bc8021..fe8de19bb 100644
--- a/apps/app/app/(authenticated)/layout.tsx
+++ b/apps/app/app/(authenticated)/layout.tsx
@@ -2,6 +2,7 @@ import { env } from '@/env';
import { auth, currentUser } from '@repo/auth/server';
import { SidebarProvider } from '@repo/design-system/components/ui/sidebar';
import { showBetaFeature } from '@repo/feature-flags';
+import { NotificationsProvider } from '@repo/notifications/components/provider';
import { secure } from '@repo/security';
import type { ReactNode } from 'react';
import { PostHogIdentifier } from './components/posthog-identifier';
@@ -21,21 +22,23 @@ const AppLayout = async ({ children }: AppLayoutProperties) => {
const betaFeature = await showBetaFeature();
if (!user) {
- redirectToSignIn();
+ return redirectToSignIn();
}
return (
-
-
- {betaFeature && (
-
- Beta feature now available
-
- )}
- {children}
-
-
-
+
+
+
+ {betaFeature && (
+
+ Beta feature now available
+
+ )}
+ {children}
+
+
+
+
);
};
diff --git a/apps/app/env.ts b/apps/app/env.ts
index 1d9671108..f234cf22f 100644
--- a/apps/app/env.ts
+++ b/apps/app/env.ts
@@ -5,6 +5,7 @@ import { keys as database } from '@repo/database/keys';
import { keys as email } from '@repo/email/keys';
import { keys as flags } from '@repo/feature-flags/keys';
import { keys as core } from '@repo/next-config/keys';
+import { keys as notifications } from '@repo/notifications/keys';
import { keys as observability } from '@repo/observability/keys';
import { keys as security } from '@repo/security/keys';
import { keys as webhooks } from '@repo/webhooks/keys';
@@ -19,6 +20,7 @@ export const env = createEnv({
database(),
email(),
flags(),
+ notifications(),
observability(),
security(),
webhooks(),
diff --git a/apps/app/package.json b/apps/app/package.json
index d643c6411..73836940e 100644
--- a/apps/app/package.json
+++ b/apps/app/package.json
@@ -19,6 +19,7 @@
"@repo/design-system": "workspace:*",
"@repo/feature-flags": "workspace:*",
"@repo/next-config": "workspace:*",
+ "@repo/notifications": "workspace:*",
"@repo/observability": "workspace:*",
"@repo/security": "workspace:*",
"@repo/seo": "workspace:*",
diff --git a/apps/web/.env.example b/apps/web/.env.example
index 7bf9dd822..8a99e1420 100644
--- a/apps/web/.env.example
+++ b/apps/web/.env.example
@@ -13,7 +13,9 @@ ARCJET_KEY=""
SVIX_TOKEN=""
LIVEBLOCKS_SECRET=""
BASEHUB_TOKEN=""
-# VERCEL_PROJECT_PRODUCTION_URL="http://localhost:3001"
+VERCEL_PROJECT_PRODUCTION_URL="http://localhost:3001"
+KNOCK_API_KEY=""
+KNOCK_FEED_CHANNEL_ID=""
# Client
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=""
diff --git a/docs/images/authors/knock/j_everhart383.jpg b/docs/images/authors/knock/j_everhart383.jpg
new file mode 100644
index 000000000..85fb75339
Binary files /dev/null and b/docs/images/authors/knock/j_everhart383.jpg differ
diff --git a/docs/images/authors/knock/logo.jpg b/docs/images/authors/knock/logo.jpg
new file mode 100644
index 000000000..e05e36fc0
Binary files /dev/null and b/docs/images/authors/knock/logo.jpg differ
diff --git a/docs/mint.json b/docs/mint.json
index 8b02f4b42..6f6e1a6cd 100644
--- a/docs/mint.json
+++ b/docs/mint.json
@@ -127,6 +127,7 @@
"packages/next-config/bundle-analysis"
]
},
+ "packages/notifications",
"packages/payments",
{
"group": "Security",
diff --git a/docs/packages/notifications.mdx b/docs/packages/notifications.mdx
new file mode 100644
index 000000000..9b0fe267f
--- /dev/null
+++ b/docs/packages/notifications.mdx
@@ -0,0 +1,72 @@
+---
+title: Notifications
+description: In-app notifications for your users.
+---
+
+import { Authors } from '/snippets/authors.mdx';
+
+
+
+next-forge offers a notifications package that allows you to send in-app notifications to your users. By default, it uses [Knock](https://knock.app/), a cross-channel notification platform that supports in-app, email, SMS, push, and chat notifications. Knock allows you to centralize your notification logic and templates in one place and [orchestrate complex workflows](https://docs.knock.app/designing-workflows/overview) with things like branching, batching, throttling, delays, and conditional sending.
+
+## Setup
+
+To use the notifications package, you need to add the required environment variables to your project, as specified in the `packages/notifications/keys.ts` file.
+
+## In-app notifications feed
+
+To render an in-app notifications feed, import the `NotificationsTrigger` component from the `@repo/notifications` package and use it in your app. We've already added this to the sidebar in the example app:
+
+```tsx apps/app/app/(authenticated)/components/sidebar.tsx
+import { NotificationsTrigger } from '@repo/notifications/components/trigger';
+
+
+
+
+
+
+```
+
+Pressing the button will open the in-app notifications feed, which displays all of the notifications for the current user.
+
+## Send a notification
+
+Knock sends notifications using workflows. To send an in-app notification, create a new [workflow](https://docs.knock.app/concepts/workflows) in the Knock dashboard that uses the [`in-app` channel provider](https://docs.knock.app/integrations/in-app/knock) and create a corresponding message template.
+
+Then you can [trigger that workflow](https://docs.knock.app/send-notifications/triggering-workflows) for a particular user in your app, passing in the necessary data to populate the message template:
+
+```tsx notify.ts
+import { notifications } from '@repo/notifications';
+
+await notifications.workflows.trigger('workflow-key', {
+ recipients: [{
+ id: 'user-id',
+ email: 'user-email',
+ }],
+ data: {
+ message: 'Hello, world!',
+ },
+});
+```
+
+## Multi-channel notifications
+
+Using Knock, you can add additional channel providers to your workflow to send notifications via email, SMS, push, or chat. To do this, create a new [channel provider](https://docs.knock.app/integrations) in the Knock dashboard, follow any configuration instructions for that provider, and add it to your workflow as a channel step.
diff --git a/packages/design-system/components/mode-toggle.tsx b/packages/design-system/components/mode-toggle.tsx
index 784f324e4..59b6b468a 100644
--- a/packages/design-system/components/mode-toggle.tsx
+++ b/packages/design-system/components/mode-toggle.tsx
@@ -23,7 +23,7 @@ export const ModeToggle = () => {
diff --git a/packages/design-system/components/ui/calendar.tsx b/packages/design-system/components/ui/calendar.tsx
index db4b33a2c..634d46502 100644
--- a/packages/design-system/components/ui/calendar.tsx
+++ b/packages/design-system/components/ui/calendar.tsx
@@ -60,10 +60,10 @@ function Calendar({
...classNames,
}}
components={{
- IconLeft: ({ className, ...props }) => (
+ IconLeft: ({ className, children, ...props }) => (
),
- IconRight: ({ className, ...props }) => (
+ IconRight: ({ className, children, ...props }) => (
),
}}
diff --git a/packages/notifications/components/provider.tsx b/packages/notifications/components/provider.tsx
new file mode 100644
index 000000000..9f3921c17
--- /dev/null
+++ b/packages/notifications/components/provider.tsx
@@ -0,0 +1,30 @@
+'use client';
+
+import { KnockFeedProvider, KnockProvider } from '@knocklabs/react';
+import type { ReactNode } from 'react';
+import { keys } from '../keys';
+
+const knockApiKey = keys().NEXT_PUBLIC_KNOCK_API_KEY;
+const knockFeedChannelId = keys().NEXT_PUBLIC_KNOCK_FEED_CHANNEL_ID;
+
+type NotificationsProviderProps = {
+ children: ReactNode;
+ userId: string;
+};
+
+export const NotificationsProvider = ({
+ children,
+ userId,
+}: NotificationsProviderProps) => {
+ if (!knockApiKey || !knockFeedChannelId) {
+ return children;
+ }
+
+ return (
+
+
+ {children}
+
+
+ );
+};
diff --git a/packages/notifications/components/trigger.tsx b/packages/notifications/components/trigger.tsx
new file mode 100644
index 000000000..74b0f11e8
--- /dev/null
+++ b/packages/notifications/components/trigger.tsx
@@ -0,0 +1,48 @@
+'use client';
+
+import { NotificationFeedPopover } from '@knocklabs/react';
+import { useRef, useState } from 'react';
+import type { ReactElement, RefObject } from 'react';
+import { keys } from '../keys';
+
+// Required CSS import, unless you're overriding the styling
+import '@knocklabs/react/dist/index.css';
+
+type NotificationsTriggerProperties = {
+ children: ReactElement;
+};
+
+export const NotificationsTrigger = ({
+ children,
+}: NotificationsTriggerProperties) => {
+ const [isVisible, setIsVisible] = useState(false);
+ const notifButtonRef = useRef(null);
+
+ if (!keys().NEXT_PUBLIC_KNOCK_API_KEY) {
+ return null;
+ }
+
+ return (
+ <>
+ {/* biome-ignore lint/nursery/noStaticElementInteractions: "avoid nested buttons" */}
+ setIsVisible(!isVisible)}
+ onKeyDown={(e) => {
+ if (e.key === 'Enter' || e.key === ' ') {
+ setIsVisible(!isVisible);
+ }
+ }}
+ ref={notifButtonRef}
+ >
+ {children}
+
+ {notifButtonRef.current && (
+ }
+ isVisible={isVisible}
+ onClose={() => setIsVisible(false)}
+ />
+ )}
+ >
+ );
+};
diff --git a/packages/notifications/index.ts b/packages/notifications/index.ts
new file mode 100644
index 000000000..2c1cff4f6
--- /dev/null
+++ b/packages/notifications/index.ts
@@ -0,0 +1,6 @@
+import { Knock } from '@knocklabs/node';
+import { keys } from './keys';
+
+const key = keys().KNOCK_SECRET_API_KEY;
+
+export const notifications = new Knock(key);
diff --git a/packages/notifications/keys.ts b/packages/notifications/keys.ts
new file mode 100644
index 000000000..5313c9e57
--- /dev/null
+++ b/packages/notifications/keys.ts
@@ -0,0 +1,19 @@
+import { createEnv } from '@t3-oss/env-nextjs';
+import { z } from 'zod';
+
+export const keys = () =>
+ createEnv({
+ server: {
+ KNOCK_SECRET_API_KEY: z.string().min(1).optional(),
+ },
+ client: {
+ NEXT_PUBLIC_KNOCK_API_KEY: z.string().min(1).optional(),
+ NEXT_PUBLIC_KNOCK_FEED_CHANNEL_ID: z.string().min(1).optional(),
+ },
+ runtimeEnv: {
+ NEXT_PUBLIC_KNOCK_API_KEY: process.env.NEXT_PUBLIC_KNOCK_API_KEY,
+ NEXT_PUBLIC_KNOCK_FEED_CHANNEL_ID:
+ process.env.NEXT_PUBLIC_KNOCK_FEED_CHANNEL_ID,
+ KNOCK_SECRET_API_KEY: process.env.KNOCK_SECRET_API_KEY,
+ },
+ });
diff --git a/packages/notifications/package.json b/packages/notifications/package.json
new file mode 100644
index 000000000..f013d4b3b
--- /dev/null
+++ b/packages/notifications/package.json
@@ -0,0 +1,23 @@
+{
+ "name": "@repo/notifications",
+ "version": "0.0.0",
+ "private": true,
+ "scripts": {
+ "clean": "git clean -xdf .cache .turbo dist node_modules",
+ "typecheck": "tsc --noEmit --emitDeclarationOnly false"
+ },
+ "dependencies": {
+ "@knocklabs/node": "^0.6.13",
+ "@knocklabs/react": "^0.2.29",
+ "@t3-oss/env-nextjs": "^0.11.1",
+ "react": "^19.0.0",
+ "zod": "^3.24.1"
+ },
+ "devDependencies": {
+ "@repo/typescript-config": "workspace:*",
+ "typescript": "^5.7.2",
+ "@types/node": "22.10.5",
+ "@types/react": "19.0.2",
+ "@types/react-dom": "^19.0.2"
+ }
+}
diff --git a/packages/notifications/tsconfig.json b/packages/notifications/tsconfig.json
new file mode 100644
index 000000000..9fbe407a9
--- /dev/null
+++ b/packages/notifications/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "extends": "@repo/typescript-config/nextjs.json",
+ "compilerOptions": {
+ "baseUrl": "."
+ },
+ "include": ["**/*.ts", "**/*.tsx"],
+ "exclude": ["node_modules"]
+}
diff --git a/packages/security/index.ts b/packages/security/index.ts
index d05177478..a72b7a594 100644
--- a/packages/security/index.ts
+++ b/packages/security/index.ts
@@ -37,6 +37,10 @@ export const secure = async (
const decision = await aj.protect(req);
if (decision.isDenied()) {
+ console.warn(
+ `Arcjet decision: ${JSON.stringify(decision.reason, null, 2)}`
+ );
+
if (decision.reason.isBot()) {
throw new Error('No bots allowed');
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 29292c9e2..a3812f5c1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -127,6 +127,9 @@ importers:
'@repo/next-config':
specifier: workspace:*
version: link:../../packages/next-config
+ '@repo/notifications':
+ specifier: workspace:*
+ version: link:../../packages/notifications
'@repo/observability':
specifier: workspace:*
version: link:../../packages/observability
@@ -556,7 +559,7 @@ importers:
version: 0.11.1(typescript@5.7.2)(zod@3.24.1)
basehub:
specifier: ^7.5.32
- version: 7.5.32(@babel/runtime@7.24.6)(@types/react@19.0.2)(enquirer@2.4.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
+ version: 7.5.32(@babel/runtime@7.26.0)(@types/react@19.0.2)(enquirer@2.4.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2)
react:
specifier: ^19.0.0
version: 19.0.0
@@ -952,6 +955,40 @@ importers:
specifier: 15.1.4
version: 15.1.4(@opentelemetry/api@1.9.0)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ packages/notifications:
+ dependencies:
+ '@knocklabs/node':
+ specifier: ^0.6.13
+ version: 0.6.15
+ '@knocklabs/react':
+ specifier: ^0.2.29
+ version: 0.2.32(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@t3-oss/env-nextjs':
+ specifier: ^0.11.1
+ version: 0.11.1(typescript@5.7.2)(zod@3.24.1)
+ react:
+ specifier: ^19.0.0
+ version: 19.0.0
+ zod:
+ specifier: ^3.24.1
+ version: 3.24.1
+ devDependencies:
+ '@repo/typescript-config':
+ specifier: workspace:*
+ version: link:../typescript-config
+ '@types/node':
+ specifier: 22.10.5
+ version: 22.10.5
+ '@types/react':
+ specifier: 19.0.2
+ version: 19.0.2
+ '@types/react-dom':
+ specifier: ^19.0.2
+ version: 19.0.2(@types/react@19.0.2)
+ typescript:
+ specifier: ^5.7.2
+ version: 5.7.2
+
packages/observability:
dependencies:
'@logtail/next':
@@ -1899,6 +1936,10 @@ packages:
resolution: {integrity: sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==}
engines: {node: '>=6.9.0'}
+ '@babel/runtime@7.26.0':
+ resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==}
+ engines: {node: '>=6.9.0'}
+
'@babel/template@7.25.9':
resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
engines: {node: '>=6.9.0'}
@@ -2682,6 +2723,27 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ '@knocklabs/client@0.10.16':
+ resolution: {integrity: sha512-cN7ksBmGbdX9pIuhg6t9D9JgXxjQ8lQLEpBXEtKFy3DTrCkVBrV+6hTqOpzGkRYCg5ESmuYej4RErJp1xlQPkg==}
+
+ '@knocklabs/node@0.6.15':
+ resolution: {integrity: sha512-pKHAKNv0bHwC+T+rt4piIQHcqI2mcUf2j5YOMi7BR2rsIhZmK6kzos+ZCya4UWHgK1RSpzQJ6fVKwLLfUy4i7Q==}
+ engines: {node: '>=17.5.0'}
+
+ '@knocklabs/react-core@0.2.28':
+ resolution: {integrity: sha512-8nBJxXyNGwEFvwzBt0c70MzGhjXqNAL/KLGuh3WMHj37I2HUgDyzyLrLbQ7wqfZs/ku2qs99S5QhBukJmlIq9g==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0
+
+ '@knocklabs/react@0.2.32':
+ resolution: {integrity: sha512-piYBqzRgdeo8vzE9/ZsWGgMmKn8S6ppTtgoPUnGm/lVCXjqDFPpZ80sJk42ELmx5x74OHVvvdBOYO91VFZnxGA==}
+ peerDependencies:
+ react: ^16.11.0 || ^17.0.0 || ^18.0.0
+ react-dom: ^16.11.0 || ^17.0.0 || ^18.0.0
+
+ '@knocklabs/types@0.1.5':
+ resolution: {integrity: sha512-Wu/0XsrTKBM2JO2eoazhz6MWpnmm6uCUsozPyg4aeJS7vndtqLPwniW6fzVn1gSrR7upWkWThrv5ZzokZ6BAHQ==}
+
'@langchain/core@0.3.18':
resolution: {integrity: sha512-IEZCrFs1Xd0J2FTH1D3Lnm3/Yk2r8LSpwDeLYwcCom3rNAK5k4mKQ2rwIpNq3YuqBdrTNMKRO+PopjkP1SB17A==}
engines: {node: '>=18'}
@@ -3206,6 +3268,9 @@ packages:
'@polka/url@1.0.0-next.25':
resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
+ '@popperjs/core@2.11.8':
+ resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==}
+
'@prisma/adapter-neon@6.1.0':
resolution: {integrity: sha512-wVAwpfiDr7O6kq4Gg4M/2grtm79vkdr52osoZItIhYrKcqPaE+H0r+nX7/S5dYLLuaVeB6UAw1SprLxff1rhNA==}
peerDependencies:
@@ -3247,6 +3312,9 @@ packages:
'@radix-ui/number@1.1.0':
resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==}
+ '@radix-ui/primitive@1.0.1':
+ resolution: {integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==}
+
'@radix-ui/primitive@1.1.1':
resolution: {integrity: sha512-SJ31y+Q/zAyShtXJc8x83i9TYdbAfHZ++tUZnvjJJqFjzsdUnKsxPL6IEtBlxKkU7yzer//GQtZSV4GbldL3YA==}
@@ -3276,6 +3344,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-arrow@1.0.3':
+ resolution: {integrity: sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-arrow@1.1.1':
resolution: {integrity: sha512-NaVpZfmv8SKeZbn4ijN2V3jlHA9ngBG16VnIIm22nUR0Yk8KUALyBxT3KYEUnNuch9sTE8UTsS3whzBgKOL30w==}
peerDependencies:
@@ -3354,6 +3435,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-compose-refs@1.0.1':
+ resolution: {integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-compose-refs@1.1.0':
resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==}
peerDependencies:
@@ -3385,6 +3475,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-context@1.0.1':
+ resolution: {integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-context@1.1.1':
resolution: {integrity: sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==}
peerDependencies:
@@ -3416,6 +3515,19 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-dismissable-layer@1.0.5':
+ resolution: {integrity: sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-dismissable-layer@1.1.3':
resolution: {integrity: sha512-onrWn/72lQoEucDmJnr8uczSNTujT0vJnA/X5+3AkChVPowr8n1yvIKIabhWyMQeMvvmdpsvcyDqx3X1LEXCPg==}
peerDependencies:
@@ -3442,6 +3554,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-focus-guards@1.0.1':
+ resolution: {integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-focus-guards@1.1.1':
resolution: {integrity: sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==}
peerDependencies:
@@ -3451,6 +3572,19 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-focus-scope@1.0.4':
+ resolution: {integrity: sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-focus-scope@1.1.1':
resolution: {integrity: sha512-01omzJAYRxXdG2/he/+xy+c8a8gCydoQ1yOxnWNcRhrrBW5W+RQJ22EK1SaO8tb3WoUsuEw7mJjBozPzihDFjA==}
peerDependencies:
@@ -3482,6 +3616,15 @@ packages:
peerDependencies:
react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc
+ '@radix-ui/react-id@1.0.1':
+ resolution: {integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-id@1.1.0':
resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==}
peerDependencies:
@@ -3543,6 +3686,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-popover@1.0.7':
+ resolution: {integrity: sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-popover@1.1.4':
resolution: {integrity: sha512-aUACAkXx8LaFymDma+HQVji7WhvEhpFJ7+qPz17Nf4lLZqtreGOFRiNQWQmhzp7kEWg9cOyyQJpdIMUMPc/CPw==}
peerDependencies:
@@ -3556,6 +3712,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-popper@1.1.3':
+ resolution: {integrity: sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-popper@1.2.1':
resolution: {integrity: sha512-3kn5Me69L+jv82EKRuQCXdYyf1DqHwD2U/sxoNgBGCB7K9TRc3bQamQ+5EPM9EvyPdli0W41sROd+ZU1dTCztw==}
peerDependencies:
@@ -3569,6 +3738,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-portal@1.0.4':
+ resolution: {integrity: sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-portal@1.1.3':
resolution: {integrity: sha512-NciRqhXnGojhT93RPyDaMPfLH3ZSl4jjIFbZQ1b/vxvZEdHsBZ49wP9w8L3HzUQwep01LcWtkUvm0OVB5JAHTw==}
peerDependencies:
@@ -3582,6 +3764,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-presence@1.0.1':
+ resolution: {integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-presence@1.1.2':
resolution: {integrity: sha512-18TFr80t5EVgL9x1SwF/YGtfG+l0BS0PRAlCWBDoBEiDQjeKgnNZRVJp/oVBl24sr3Gbfwc/Qpj4OcWTQMsAEg==}
peerDependencies:
@@ -3595,6 +3790,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-primitive@1.0.3':
+ resolution: {integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-primitive@2.0.0':
resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==}
peerDependencies:
@@ -3712,6 +3920,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-slot@1.0.2':
+ resolution: {integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-slot@1.1.0':
resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==}
peerDependencies:
@@ -3808,6 +4025,15 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-use-callback-ref@1.0.1':
+ resolution: {integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-callback-ref@1.1.0':
resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==}
peerDependencies:
@@ -3817,6 +4043,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-controllable-state@1.0.1':
+ resolution: {integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-controllable-state@1.1.0':
resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==}
peerDependencies:
@@ -3826,6 +4061,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-escape-keydown@1.0.3':
+ resolution: {integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-escape-keydown@1.1.0':
resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==}
peerDependencies:
@@ -3835,6 +4079,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-layout-effect@1.0.1':
+ resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-layout-effect@1.1.0':
resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==}
peerDependencies:
@@ -3853,6 +4106,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-rect@1.0.1':
+ resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-rect@1.1.0':
resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==}
peerDependencies:
@@ -3862,6 +4124,15 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-use-size@1.0.1':
+ resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==}
+ peerDependencies:
+ '@types/react': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
'@radix-ui/react-use-size@1.1.0':
resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==}
peerDependencies:
@@ -3871,6 +4142,19 @@ packages:
'@types/react':
optional: true
+ '@radix-ui/react-visually-hidden@1.0.3':
+ resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0
+ react-dom: ^16.8 || ^17.0 || ^18.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-visually-hidden@1.1.1':
resolution: {integrity: sha512-vVfA2IZ9q/J+gEamvj761Oq1FpWgCDaNOOIfbPVp2MVPLEomUr5+Vf7kJGwQ24YxZSlQVar7Bes8kyTo5Dshpg==}
peerDependencies:
@@ -3884,6 +4168,9 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/rect@1.0.1':
+ resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==}
+
'@radix-ui/rect@1.1.0':
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
@@ -4859,6 +5146,9 @@ packages:
'@types/pg@8.6.1':
resolution: {integrity: sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==}
+ '@types/phoenix@1.6.6':
+ resolution: {integrity: sha512-PIzZZlEppgrpoT2QgbnDU+MMzuR6BbCjllj0bM70lWoejMeNJAxCchxnv7J3XFkI8MpygtRpzXrIlmWUBclP5A==}
+
'@types/react-dom@19.0.1':
resolution: {integrity: sha512-hljHij7MpWPKF6u5vojuyfV0YA4YURsQG7KT6SzV0Zs2BXAtgdTxG6A229Ub/xiWV4w/7JL8fi6aAyjshH4meA==}
@@ -5364,6 +5654,11 @@ packages:
resolution: {integrity: sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==}
engines: {node: '>=6.0.0'}
+ axios-retry@4.5.0:
+ resolution: {integrity: sha512-aR99oXhpEDGo0UuAlYcn2iGRds30k366Zfa05XWScR9QaQD4JYiP3/1Qt1u7YlefUOK+cn0CcwoL1oefavQUlQ==}
+ peerDependencies:
+ axios: 0.x || 1.x
+
axios@1.7.7:
resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==}
@@ -6392,6 +6687,9 @@ packages:
resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==}
engines: {node: '>=6'}
+ eventemitter2@6.4.9:
+ resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==}
+
eventemitter3@4.0.7:
resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
@@ -7114,6 +7412,10 @@ packages:
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
engines: {node: '>= 0.4'}
+ is-retry-allowed@2.2.0:
+ resolution: {integrity: sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==}
+ engines: {node: '>=10'}
+
is-shared-array-buffer@1.0.3:
resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==}
engines: {node: '>= 0.4'}
@@ -7259,6 +7561,10 @@ packages:
jsonfile@6.1.0:
resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ jwt-decode@4.0.0:
+ resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==}
+ engines: {node: '>=18'}
+
keycode@2.2.1:
resolution: {integrity: sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==}
@@ -8150,6 +8456,9 @@ packages:
resolution: {integrity: sha512-cRL3JpS3lKMGsKaWndugWQoLOCoP+Cic8oseVcbr0qhPzYD5DWXK+RZ9LY9wxRf7RQia4SCwQlXk0q6FCPrVng==}
engines: {node: '>=10'}
+ phoenix@1.7.14:
+ resolution: {integrity: sha512-3tZ76PiH/2g+Kyzhz8+GIFYrnx3lRnwi/Qt3ZUH04xpMxXL7Guerd5aaxtpWal73X+H8iLAjo2c+AgRy2KYQcQ==}
+
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@@ -8475,6 +8784,9 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ react-fast-compare@3.2.2:
+ resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==}
+
react-hook-form@7.54.2:
resolution: {integrity: sha512-eHpAUgUjWbZocoQYUHposymRb4ZP6d0uwUnooL2uOybA9/3tPUvoAKqEWK1WaSiTxxOfTpffNZP7QwlnM3/gEg==}
engines: {node: '>=18.0.0'}
@@ -8499,6 +8811,19 @@ packages:
react-moveable@0.56.0:
resolution: {integrity: sha512-FmJNmIOsOA36mdxbrc/huiE4wuXSRlmon/o+/OrfNhSiYYYL0AV5oObtPluEhb2Yr/7EfYWBHTxF5aWAvjg1SA==}
+ react-popper-tooltip@4.4.2:
+ resolution: {integrity: sha512-y48r0mpzysRTZAIh8m2kpZ8S1YPNqGtQPDrlXYSGvDS1c1GpG/NUXbsbIdfbhXfmSaRJuTcaT6N1q3CKuHRVbg==}
+ peerDependencies:
+ react: '>=16.6.0'
+ react-dom: '>=16.6.0'
+
+ react-popper@2.3.0:
+ resolution: {integrity: sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==}
+ peerDependencies:
+ '@popperjs/core': ^2.0.0
+ react: ^16.8.0 || ^17 || ^18
+ react-dom: ^16.8.0 || ^17 || ^18
+
react-promise-suspense@0.3.4:
resolution: {integrity: sha512-I42jl7L3Ze6kZaq+7zXWSunBa3b1on5yfvUW6Eo/3fFOj6dZ5Bqmcd264nJbTK/gn1HjjILAjSwnZbV4RpSaNQ==}
@@ -8516,6 +8841,16 @@ packages:
'@types/react':
optional: true
+ react-remove-scroll@2.5.5:
+ resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+
react-remove-scroll@2.6.2:
resolution: {integrity: sha512-KmONPx5fnlXYJQqC62Q+lwIeAk64ws/cUw6omIumRzMRPqgnYqhSSti99nbj0Ry13bv7dF+BKn7NB+OqkdZGTw==}
engines: {node: '>=10'}
@@ -9797,6 +10132,9 @@ packages:
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
engines: {node: '>=18'}
+ warning@4.0.3:
+ resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
+
watchpack@2.4.1:
resolution: {integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==}
engines: {node: '>=10.13.0'}
@@ -10024,6 +10362,15 @@ packages:
zod@3.24.1:
resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
+ zustand@3.7.2:
+ resolution: {integrity: sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==}
+ engines: {node: '>=12.7.0'}
+ peerDependencies:
+ react: '>=16.8'
+ peerDependenciesMeta:
+ react:
+ optional: true
+
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -11074,6 +11421,10 @@ snapshots:
dependencies:
regenerator-runtime: 0.14.1
+ '@babel/runtime@7.26.0':
+ dependencies:
+ regenerator-runtime: 0.14.1
+
'@babel/template@7.25.9':
dependencies:
'@babel/code-frame': 7.26.2
@@ -11675,6 +12026,54 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.0
+ '@knocklabs/client@0.10.16(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.26.0
+ '@knocklabs/types': 0.1.5
+ '@types/phoenix': 1.6.6
+ axios: 1.7.7
+ axios-retry: 4.5.0(axios@1.7.7)
+ eventemitter2: 6.4.9
+ jwt-decode: 4.0.0
+ phoenix: 1.7.14
+ zustand: 3.7.2(react@19.0.0)
+ transitivePeerDependencies:
+ - debug
+ - react
+
+ '@knocklabs/node@0.6.15':
+ dependencies:
+ jose: 5.2.1
+
+ '@knocklabs/react-core@0.2.28(react@19.0.0)':
+ dependencies:
+ '@knocklabs/client': 0.10.16(react@19.0.0)
+ date-fns: 4.1.0
+ react: 19.0.0
+ swr: 2.2.5(react@19.0.0)
+ zustand: 3.7.2(react@19.0.0)
+ transitivePeerDependencies:
+ - debug
+
+ '@knocklabs/react@0.2.32(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@knocklabs/client': 0.10.16(react@19.0.0)
+ '@knocklabs/react-core': 0.2.28(react@19.0.0)
+ '@popperjs/core': 2.11.8
+ '@radix-ui/react-popover': 1.0.7(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-visually-hidden': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ lodash.debounce: 4.0.8
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ react-popper-tooltip: 4.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ transitivePeerDependencies:
+ - '@types/react'
+ - '@types/react-dom'
+ - debug
+
+ '@knocklabs/types@0.1.5': {}
+
'@langchain/core@0.3.18':
dependencies:
ansi-styles: 5.2.0
@@ -12268,6 +12667,8 @@ snapshots:
'@polka/url@1.0.0-next.25': {}
+ '@popperjs/core@2.11.8': {}
+
'@prisma/adapter-neon@6.1.0(@neondatabase/serverless@0.10.4)':
dependencies:
'@neondatabase/serverless': 0.10.4
@@ -12315,6 +12716,10 @@ snapshots:
'@radix-ui/number@1.1.0': {}
+ '@radix-ui/primitive@1.0.1':
+ dependencies:
+ '@babel/runtime': 7.24.6
+
'@radix-ui/primitive@1.1.1': {}
'@radix-ui/react-accordion@1.2.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
@@ -12348,6 +12753,16 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-arrow@1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-arrow@1.1.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -12422,6 +12837,13 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-compose-refs@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-compose-refs@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
react: 19.0.0
@@ -12448,6 +12870,13 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-context@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-context@1.1.1(@types/react@19.0.2)(react@19.0.0)':
dependencies:
react: 19.0.0
@@ -12482,6 +12911,20 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-dismissable-layer@1.0.5(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-escape-keydown': 1.0.3(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/primitive': 1.1.1
@@ -12510,12 +12953,31 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-focus-guards@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-focus-guards@1.1.1(@types/react@19.0.2)(react@19.0.0)':
dependencies:
react: 19.0.0
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-focus-scope@1.0.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.2)(react@19.0.0)
@@ -12548,6 +13010,14 @@ snapshots:
dependencies:
react: 19.0.0
+ '@radix-ui/react-id@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-id@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12630,6 +13100,30 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-popover@1.0.7(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/primitive': 1.0.1
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-dismissable-layer': 1.0.5(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-focus-guards': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-focus-scope': 1.0.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-id': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-popper': 1.1.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-portal': 1.0.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-presence': 1.0.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-slot': 1.0.2(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-controllable-state': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ aria-hidden: 1.2.4
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-remove-scroll: 2.5.5(@types/react@19.0.2)(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-popover@1.1.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/primitive': 1.1.1
@@ -12653,6 +13147,25 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-popper@1.1.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@floating-ui/react-dom': 2.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-arrow': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-context': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-rect': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-size': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/rect': 1.0.1
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-popper@1.2.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@floating-ui/react-dom': 2.1.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -12671,6 +13184,16 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-portal@1.0.4(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-portal@1.1.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -12681,6 +13204,17 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-presence@1.0.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-presence@1.1.2(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.1(@types/react@19.0.2)(react@19.0.0)
@@ -12691,6 +13225,16 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-primitive@1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-slot': 1.0.2(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-primitive@2.0.0(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-slot': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12828,6 +13372,14 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-slot@1.0.2(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-compose-refs': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-slot@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12939,12 +13491,27 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/react-use-callback-ref@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
react: 19.0.0
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-use-controllable-state@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12952,6 +13519,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-use-escape-keydown@1.0.3(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-use-callback-ref': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12959,6 +13534,13 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-use-layout-effect@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
react: 19.0.0
@@ -12971,6 +13553,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-use-rect@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/rect': 1.0.1
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-rect@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/rect': 1.1.0
@@ -12978,6 +13568,14 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-use-size@1.0.1(@types/react@19.0.2)(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@19.0.2)(react@19.0.0)
+ react: 19.0.0
+ optionalDependencies:
+ '@types/react': 19.0.2
+
'@radix-ui/react-use-size@1.1.0(@types/react@19.0.2)(react@19.0.0)':
dependencies:
'@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.0.2)(react@19.0.0)
@@ -12985,6 +13583,16 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ '@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@radix-ui/react-primitive': 1.0.3(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+ '@types/react-dom': 19.0.2(@types/react@19.0.2)
+
'@radix-ui/react-visually-hidden@1.1.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)':
dependencies:
'@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.0.2(@types/react@19.0.2))(@types/react@19.0.2)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
@@ -12994,6 +13602,10 @@ snapshots:
'@types/react': 19.0.2
'@types/react-dom': 19.0.2(@types/react@19.0.2)
+ '@radix-ui/rect@1.0.1':
+ dependencies:
+ '@babel/runtime': 7.24.6
+
'@radix-ui/rect@1.1.0': {}
'@react-email/body@0.0.11(react@19.0.0)':
@@ -14263,6 +14875,8 @@ snapshots:
pg-protocol: 1.6.1
pg-types: 2.2.0
+ '@types/phoenix@1.6.6': {}
+
'@types/react-dom@19.0.1':
dependencies:
'@types/react': 19.0.2
@@ -14837,6 +15451,11 @@ snapshots:
await-to-js@3.0.0: {}
+ axios-retry@4.5.0(axios@1.7.7):
+ dependencies:
+ axios: 1.7.7
+ is-retry-allowed: 2.2.0
+
axios@1.7.7:
dependencies:
follow-redirects: 1.15.9
@@ -14887,7 +15506,7 @@ snapshots:
base64id@2.0.0: {}
- basehub@7.5.32(@babel/runtime@7.24.6)(@types/react@19.0.2)(enquirer@2.4.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2):
+ basehub@7.5.32(@babel/runtime@7.26.0)(@types/react@19.0.2)(enquirer@2.4.1)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)(typescript@5.7.2):
dependencies:
'@basehub/genql': 9.0.0-canary.6(enquirer@2.4.1)
'@basehub/mutation-api-helpers': 2.0.2
@@ -14906,7 +15525,7 @@ snapshots:
server-only: 0.0.1
shiki: 1.17.7
sonner: 1.7.1(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
- typesense: 1.8.2(@babel/runtime@7.24.6)
+ typesense: 1.8.2(@babel/runtime@7.26.0)
zod: 3.24.1
transitivePeerDependencies:
- '@babel/runtime'
@@ -16060,6 +16679,8 @@ snapshots:
event-target-shim@5.0.1: {}
+ eventemitter2@6.4.9: {}
+
eventemitter3@4.0.7: {}
eventemitter3@5.0.1: {}
@@ -16888,6 +17509,8 @@ snapshots:
call-bind: 1.0.7
has-tostringtag: 1.0.2
+ is-retry-allowed@2.2.0: {}
+
is-shared-array-buffer@1.0.3:
dependencies:
call-bind: 1.0.7
@@ -17037,6 +17660,8 @@ snapshots:
optionalDependencies:
graceful-fs: 4.2.11
+ jwt-decode@4.0.0: {}
+
keycode@2.2.1: {}
keycon@1.4.0:
@@ -18265,6 +18890,8 @@ snapshots:
postgres-interval: 3.0.0
postgres-range: 1.1.4
+ phoenix@1.7.14: {}
+
picocolors@1.0.1: {}
picocolors@1.1.1: {}
@@ -18616,6 +19243,8 @@ snapshots:
- supports-color
- utf-8-validate
+ react-fast-compare@3.2.2: {}
+
react-hook-form@7.54.2(react@19.0.0):
dependencies:
react: 19.0.0
@@ -18659,6 +19288,22 @@ snapshots:
react-css-styled: 1.1.9
react-selecto: 1.26.3
+ react-popper-tooltip@4.4.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ dependencies:
+ '@babel/runtime': 7.24.6
+ '@popperjs/core': 2.11.8
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-popper: 2.3.0(@popperjs/core@2.11.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0)
+
+ react-popper@2.3.0(@popperjs/core@2.11.8)(react-dom@19.0.0(react@19.0.0))(react@19.0.0):
+ dependencies:
+ '@popperjs/core': 2.11.8
+ react: 19.0.0
+ react-dom: 19.0.0(react@19.0.0)
+ react-fast-compare: 3.2.2
+ warning: 4.0.3
+
react-promise-suspense@0.3.4:
dependencies:
fast-deep-equal: 2.0.1
@@ -18673,6 +19318,17 @@ snapshots:
optionalDependencies:
'@types/react': 19.0.2
+ react-remove-scroll@2.5.5(@types/react@19.0.2)(react@19.0.0):
+ dependencies:
+ react: 19.0.0
+ react-remove-scroll-bar: 2.3.8(@types/react@19.0.2)(react@19.0.0)
+ react-style-singleton: 2.2.3(@types/react@19.0.2)(react@19.0.0)
+ tslib: 2.8.0
+ use-callback-ref: 1.3.3(@types/react@19.0.2)(react@19.0.0)
+ use-sidecar: 1.1.2(@types/react@19.0.2)(react@19.0.0)
+ optionalDependencies:
+ '@types/react': 19.0.2
+
react-remove-scroll@2.6.2(@types/react@19.0.2)(react@19.0.0):
dependencies:
react: 19.0.0
@@ -19958,9 +20614,9 @@ snapshots:
typescript@5.7.2: {}
- typesense@1.8.2(@babel/runtime@7.24.6):
+ typesense@1.8.2(@babel/runtime@7.26.0):
dependencies:
- '@babel/runtime': 7.24.6
+ '@babel/runtime': 7.26.0
axios: 1.7.7
loglevel: 1.9.2
transitivePeerDependencies:
@@ -20262,6 +20918,10 @@ snapshots:
dependencies:
xml-name-validator: 5.0.0
+ warning@4.0.3:
+ dependencies:
+ loose-envify: 1.4.0
+
watchpack@2.4.1:
dependencies:
glob-to-regexp: 0.4.1
@@ -20525,4 +21185,8 @@ snapshots:
zod@3.24.1: {}
+ zustand@3.7.2(react@19.0.0):
+ optionalDependencies:
+ react: 19.0.0
+
zwitch@2.0.4: {}