diff --git a/CLAUDE.md b/CLAUDE.md index a68744305..673e099ae 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -6,3 +6,4 @@ - Use `AutoForm` for forms instead of manually creating form components. - After create/edit/delete operations, always refresh the data in the table to reflect the changes with notification using toast `sonner`. - Use `React.lazy` and `Suspense` for code splitting and lazy loading for content-heavy dialogs like dialogs in forms. +- Don't use big comments. Remember that code is self-documenting. Use comments only when necessary to explain complex logic or decisions. diff --git a/apps/api/package.json b/apps/api/package.json index 35f38dc57..43c0085bf 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -24,13 +24,12 @@ "next-intl": "^4.13.0", "react": "^19.2.7", "react-dom": "^19.2.7", - "use-intl": "^4.13.0", "ws": "^8.21.0", "zod": "^4.4.3" }, "devDependencies": { "@hono/node-server": "^2.0.6", - "@react-email/components": "^1.0.12", + "@react-email/ui": "^6.6.6", "@types/node": "^26.0.1", "@types/react": "^19.2.17", "@types/react-dom": "^19.2.3", @@ -40,7 +39,7 @@ "@vitnode/nodemailer": "workspace:*", "dotenv": "^17.4.2", "eslint": "^10.5.0", - "react-email": "^6.6.4", + "react-email": "^6.6.6", "tsc-alias": "^1.8.17", "tsx": "^4.22.4", "typescript": "^6.0.3" diff --git a/apps/docs/content/docs/dev/email/components/card.mdx b/apps/docs/content/docs/dev/email/components/card.mdx index 0bd1d3e6e..877124e2a 100644 --- a/apps/docs/content/docs/dev/email/components/card.mdx +++ b/apps/docs/content/docs/dev/email/components/card.mdx @@ -21,7 +21,7 @@ import { EmailCardHeader, EmailCardTitle, } from '@vitnode/core/emails/ui/card'; -import { Text } from '@react-email/components'; +import { Text } from 'react-email'; ``` ```tsx diff --git a/apps/docs/content/docs/dev/email/templates.mdx b/apps/docs/content/docs/dev/email/templates.mdx index 277068984..1ac46a21c 100644 --- a/apps/docs/content/docs/dev/email/templates.mdx +++ b/apps/docs/content/docs/dev/email/templates.mdx @@ -41,7 +41,7 @@ Inside your: you can create your email templates. The templates should be React components that return JSX and to be exported as default. ```tsx title="src/emails/test-template.tsx" -import { Text } from '@react-email/components'; +import { Text } from 'react-email'; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, } from '@vitnode/core/emails/default-template'; @@ -104,8 +104,8 @@ The `DefaultTemplateEmail` component is a wrapper around your email content that We implemented [TailwindCSS](https://react.email/docs/components/tailwind) in the email templates to allow you to use utility classes for styling. You can use Tailwind classes directly in your email components. - - The current `TailwindCSS` version used is **3.4.10**. + + Since React Email v6, the email templates use **TailwindCSS v4**. ### Components @@ -130,7 +130,7 @@ We implemented [TailwindCSS](https://react.email/docs/components/tailwind) in th ## Internationalization (I18n) -VitNode supports internationalization (I18n) in email templates thanks to [use-intl](https://next-intl.dev/docs/environments/core-library). +VitNode supports internationalization (I18n) in email templates thanks to [next-intl](https://react.email/docs/guides/internationalization/next-intl). ```json title="src/locales/@vitnode/blog/en.json" { @@ -145,11 +145,11 @@ Read more about messages in [Internationalization (I18n) - Messages Docs](/docs/ Use the `createTranslator` function to create a translator instance that can be used to translate messages in your email templates. ```tsx title="src/emails/test-template.tsx" -import { Text } from '@react-email/components'; +import { Text } from 'react-email'; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, } from '@vitnode/core/emails/default-template'; -import { createTranslator } from 'use-intl'; // [!code ++] +import { createTranslator } from 'next-intl'; // [!code ++] export default function TestTemplateEmail({ i18n, @@ -186,7 +186,7 @@ You can also translate the subject of the email using the `createTranslator` fun ```ts title="src/api/modules/users/routes/test.route.ts" import { z } from 'zod'; // [!code ++] -import { createTranslator } from 'use-intl'; +import { createTranslator } from 'next-intl'; import { buildRoute } from '@vitnode/core/api/lib/route'; import { UserModel } from '@vitnode/core/api/models/user'; @@ -222,21 +222,19 @@ export const testRoute = buildRoute({ If you pass `user` to the `send` method, it will be available in the email template as a prop. This allows you to personalize the email content based on the user data. ```tsx title="src/emails/test-template.tsx" -import { Text } from '@react-email/components'; +import { Text } from 'react-email'; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, } from '@vitnode/core/emails/default-template'; export default function TestTemplateEmail({ - locale, - messages, user, // [!code ++] ...props }: DefaultTemplateEmailProps) { if (!user) return null; return ( - + This message is for {user.name} ); diff --git a/apps/docs/package.json b/apps/docs/package.json index e1879f427..676051cd4 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -47,7 +47,7 @@ "devDependencies": { "@next/bundle-analyzer": "^16.2.9", "@playwright/test": "^1.61.1", - "@react-email/components": "^1.0.12", + "@react-email/ui": "^6.6.6", "@tailwindcss/postcss": "^4.3.1", "@types/mdx": "^2.0.14", "@types/node": "^26.0.1", @@ -61,12 +61,11 @@ "class-variance-authority": "^0.7.1", "eslint": "^10.5.0", "postcss": "^8.5.15", - "react-email": "^6.6.4", + "react-email": "^6.6.6", "shiki": "^4.3.0", "tailwindcss": "^4.3.1", "tw-animate-css": "^1.4.0", "typescript": "^6.0.3", - "use-intl": "^4.13.0", "zod": "^4.4.3" } } diff --git a/packages/create-vitnode-app/src/create/create-package-json.ts b/packages/create-vitnode-app/src/create/create-package-json.ts index 35c21330c..ec1396667 100644 --- a/packages/create-vitnode-app/src/create/create-package-json.ts +++ b/packages/create-vitnode-app/src/create/create-package-json.ts @@ -122,7 +122,6 @@ const rootDevDeps = (eslint: boolean) => ({ const apiDeps = { "@hono/zod-openapi": versionsPackageJson.honoZodOpenapi, "@hono/zod-validator": versionsPackageJson.honoZodValidator, - "@react-email/components": versionsPackageJson.reactEmailComponents, "@vitnode/core": "", // filled dynamically "drizzle-kit": versionsPackageJson.drizzleKit, "drizzle-orm": versionsPackageJson.drizzleOrm, @@ -130,13 +129,14 @@ const apiDeps = { "next-intl": versionsPackageJson.nextIntl, react: versionsPackageJson.react, "react-dom": versionsPackageJson.reactDom, - "use-intl": versionsPackageJson.useIntl, + "react-email": versionsPackageJson.reactEmail, shadcn: versionsPackageJson.shadcnUi, zod: versionsPackageJson.zod, }; const apiDevDeps = (pm: string, eslint: boolean) => ({ "@hono/node-server": "^2.0", + "@react-email/ui": versionsPackageJson.reactEmailUi, ...(pm === "bun" ? { "@types/bun": versionsPackageJson.typesBun } : {}), "@types/node": versionsPackageJson.typesNode, "@types/react": versionsPackageJson.typesReact, @@ -147,7 +147,6 @@ const apiDevDeps = (pm: string, eslint: boolean) => ({ eslint: versionsPackageJson.eslint, // Prettier in API only when onlyApi + eslint in original code – we'll preserve by passing include later if needed }), - "react-email": versionsPackageJson.reactEmail, "tsc-alias": versionsPackageJson.tscAlias, tsx: versionsPackageJson.tsx, typescript: versionsPackageJson.typescript, @@ -157,7 +156,6 @@ const singleAppDeps = { "@hono/zod-openapi": versionsPackageJson.honoZodOpenapi, "@hono/zod-validator": versionsPackageJson.honoZodValidator, "@hookform/resolvers": versionsPackageJson.rhfResolvers, - "@react-email/components": versionsPackageJson.reactEmailComponents, "@vitnode/core": "", "drizzle-kit": versionsPackageJson.drizzleKit, "drizzle-orm": versionsPackageJson.drizzleOrm, @@ -167,13 +165,14 @@ const singleAppDeps = { "next-intl": versionsPackageJson.nextIntl, react: versionsPackageJson.react, "react-dom": versionsPackageJson.reactDom, + "react-email": versionsPackageJson.reactEmail, "react-hook-form": versionsPackageJson.rhf, sonner: versionsPackageJson.sonner, - "use-intl": versionsPackageJson.useIntl, zod: versionsPackageJson.zod, }; const singleAppDevDeps = (eslint: boolean) => ({ + "@react-email/ui": versionsPackageJson.reactEmailUi, "@tailwindcss/postcss": versionsPackageJson.tailwindPostcss, "@types/node": versionsPackageJson.typesNode, "@types/react": versionsPackageJson.typesReact, @@ -185,7 +184,6 @@ const singleAppDevDeps = (eslint: boolean) => ({ prettier: versionsPackageJson.prettier, "prettier-plugin-tailwindcss": versionsPackageJson.prettierTailwind, }), - "react-email": versionsPackageJson.reactEmail, turbo: versionsPackageJson.turbo, tailwindcss: versionsPackageJson.tailwind, "tw-animate-css": versionsPackageJson.twAnimateCss, diff --git a/packages/create-vitnode-app/src/create/package-versions.ts b/packages/create-vitnode-app/src/create/package-versions.ts index 2dbae0197..930681021 100644 --- a/packages/create-vitnode-app/src/create/package-versions.ts +++ b/packages/create-vitnode-app/src/create/package-versions.ts @@ -20,7 +20,6 @@ export const versionsPackageJson = { reactDom: "^19.2", nextSingle: "16.3.0-preview.5", nextIntl: "^4.13", - useIntl: "^4.13", rhf: "^7.80", rhfResolvers: "^5.1.1", lucide: "^1.21", @@ -34,7 +33,7 @@ export const versionsPackageJson = { honoZodOpenapi: "^1.3", honoZodValidator: "^0.8", reactEmail: "^6.6", - reactEmailComponents: "^1.0", + reactEmailUi: "^6.6", zod: "^4.4", cva: "^0.7.1", diff --git a/packages/create-vitnode-app/src/plugin/create/create-package-json.ts b/packages/create-vitnode-app/src/plugin/create/create-package-json.ts index ace3ac1b2..c08f862f3 100644 --- a/packages/create-vitnode-app/src/plugin/create/create-package-json.ts +++ b/packages/create-vitnode-app/src/plugin/create/create-package-json.ts @@ -56,11 +56,10 @@ export const createPluginPackageJSON = async ({ "react-email": versionsPackageJson.reactEmail, "react-hook-form": versionsPackageJson.rhf, sonner: versionsPackageJson.sonner, - "use-intl": versionsPackageJson.useIntl, zod: versionsPackageJson.zod, }, devDependencies: { - "@react-email/components": versionsPackageJson.reactEmailComponents, + "@react-email/ui": versionsPackageJson.reactEmailUi, "@swc/cli": versionsPackageJson.swcCli, "@swc/core": versionsPackageJson.swcCore, "@types/react": versionsPackageJson.typesReact, diff --git a/packages/vitnode/package.json b/packages/vitnode/package.json index 4641686df..3fd9f12f4 100644 --- a/packages/vitnode/package.json +++ b/packages/vitnode/package.json @@ -40,7 +40,7 @@ "@hono/zod-openapi": "^1.4.0", "@hono/zod-validator": "^0.8.0", "@hookform/resolvers": "^5.4.0", - "@react-email/components": "^1.0.12", + "@react-email/ui": "^6.6.6", "@swc/cli": "^0.8.1", "@swc/core": "^1.15.43", "@testing-library/dom": "^10.4.1", @@ -64,7 +64,7 @@ "next-intl": "^4.13.0", "react": "^19.2.7", "react-dom": "^19.2.7", - "react-email": "^6.6.4", + "react-email": "^6.6.6", "react-hook-form": "^7.80.0", "sonner": "^2.0.7", "tailwindcss": "^4.3.1", @@ -113,7 +113,6 @@ "@bprogress/next": "^3.2.12", "@dnd-kit/core": "^6.3.1", "@hono/swagger-ui": "^0.6.1", - "@react-email/preview-server": "^5.2.10", "@tanstack/react-query": "^5.101.1", "@tiptap/extension-text-align": "^3.27.1", "@tiptap/pm": "^3.27.1", @@ -140,7 +139,6 @@ "shadcn": "^4.11.0", "tailwind-merge": "^3.6.0", "use-debounce": "^10.1.1", - "use-intl": "^4.13.0", "vaul": "^1.1.2" } } diff --git a/packages/vitnode/scripts/plugin.ts b/packages/vitnode/scripts/plugin.ts index 64ee79d48..d29f4ec76 100644 --- a/packages/vitnode/scripts/plugin.ts +++ b/packages/vitnode/scripts/plugin.ts @@ -11,10 +11,10 @@ import { basename, join, relative } from "node:path"; import { buildInitialRouteMap, + cleanupDeletedFiles, copyFile, findLocaleRoot, findRepoRoot, - getAllFiles, isDirectoryEmpty, routeKey, type SourceConfig, @@ -258,30 +258,6 @@ const createFileOps = ( return { copyFileWrapper, removeFile }; }; -/** - * Remove files in destination that no longer exist in source (skip locales) - */ -const cleanupDeletedFiles = ( - sourceDir: string, - destinationDir: string, - removeFileFn: (p: string) => void, -) => { - if (!existsSync(destinationDir)) return; - - const isLocaleDir = destinationDir.includes(join("src", "locales")); - if (isLocaleDir) return; - - const destFiles = getAllFiles(destinationDir); - for (const destFile of destFiles) { - const relativePath = relative(destinationDir, destFile); - const sourceFile = join(sourceDir, relativePath); - - if (!existsSync(sourceFile)) { - removeFileFn(destFile); - } - } -}; - /** * Resolve destination paths for a given source path across all source configs */ diff --git a/packages/vitnode/scripts/shared/file-utils.test.ts b/packages/vitnode/scripts/shared/file-utils.test.ts new file mode 100644 index 000000000..f0cad4a4d --- /dev/null +++ b/packages/vitnode/scripts/shared/file-utils.test.ts @@ -0,0 +1,118 @@ +import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { dirname, join } from "node:path"; +import { afterEach, beforeEach, describe, expect, it } from "vitest"; + +import { cleanupDeletedFiles } from "./file-utils"; + +describe("cleanupDeletedFiles", () => { + let root: string; + let removed: string[]; + let counter = 0; + + const remove = (p: string) => { + removed.push(p); + rmSync(p, { force: true }); + }; + + const write = (p: string, content = "x") => { + mkdirSync(dirname(p), { recursive: true }); + writeFileSync(p, content); + }; + + beforeEach(() => { + counter += 1; + root = join(tmpdir(), `vitnode-cleanup-${process.pid}-${counter}`); + mkdirSync(root, { recursive: true }); + removed = []; + }); + + afterEach(() => { + rmSync(root, { recursive: true, force: true }); + }); + + it("does NOT remove anything from a shared destination when the source dir is missing", () => { + // Reproduces the bug: a plugin without breadcrumb routes (e.g. @vitnode/blog) + // points at the SHARED `@breadcrumb` slot that core populated. Its source + // dir does not exist, so nothing it "owns" is there to mirror. + const sourceDir = join( + root, + "plugins", + "blog", + "routes", + "breadcrumb", + "main", + ); + const destinationDir = join( + root, + "app", + "[locale]", + "(main)", + "@breadcrumb", + ); + + // core already copied its breadcrumb files into the shared destination + const corePage = join(destinationDir, "page.tsx"); + const coreSettings = join(destinationDir, "settings", "page.tsx"); + write(corePage); + write(coreSettings); + + expect(existsSync(sourceDir)).toBe(false); + + cleanupDeletedFiles(sourceDir, destinationDir, remove); + + expect(removed).toEqual([]); + expect(existsSync(corePage)).toBe(true); + expect(existsSync(coreSettings)).toBe(true); + }); + + it("removes only orphaned dest files that no longer exist in an owned source", () => { + const sourceDir = join(root, "src", "routes", "breadcrumb", "main"); + const destinationDir = join( + root, + "app", + "[locale]", + "(main)", + "@breadcrumb", + ); + + // source ships only `page.tsx` + write(join(sourceDir, "page.tsx")); + + // destination has the current file plus a stale one + const kept = join(destinationDir, "page.tsx"); + const stale = join(destinationDir, "old", "page.tsx"); + write(kept); + write(stale); + + cleanupDeletedFiles(sourceDir, destinationDir, remove); + + expect(removed).toEqual([stale]); + expect(existsSync(kept)).toBe(true); + expect(existsSync(stale)).toBe(false); + }); + + it("never prunes locale directories even with a mismatched source", () => { + const sourceDir = join(root, "src", "locales"); + const destinationDir = join(root, "app", "src", "locales", "@vitnode-core"); + + write(join(sourceDir, "en.json")); // source exists but content differs + const localeFile = join(destinationDir, "en.json"); + write(localeFile); + + cleanupDeletedFiles(sourceDir, destinationDir, remove); + + expect(removed).toEqual([]); + expect(existsSync(localeFile)).toBe(true); + }); + + it("does nothing when the destination dir does not exist", () => { + const sourceDir = join(root, "src", "routes", "breadcrumb", "main"); + write(join(sourceDir, "page.tsx")); + const destinationDir = join(root, "does", "not", "exist"); + + cleanupDeletedFiles(sourceDir, destinationDir, remove); + + expect(removed).toEqual([]); + }); +}); diff --git a/packages/vitnode/scripts/shared/file-utils.ts b/packages/vitnode/scripts/shared/file-utils.ts index 365975206..f68fd9fa4 100644 --- a/packages/vitnode/scripts/shared/file-utils.ts +++ b/packages/vitnode/scripts/shared/file-utils.ts @@ -332,6 +332,28 @@ export const copyFile = ( } }; +export const cleanupDeletedFiles = ( + sourceDir: string, + destinationDir: string, + removeFileFn: (p: string) => void, +) => { + if (!existsSync(sourceDir)) return; + if (!existsSync(destinationDir)) return; + + const isLocaleDir = destinationDir.includes(join("src", "locales")); + if (isLocaleDir) return; + + const destFiles = getAllFiles(destinationDir); + for (const destFile of destFiles) { + const relativePath = relative(destinationDir, destFile); + const sourceFile = join(sourceDir, relativePath); + + if (!existsSync(sourceFile)) { + removeFileFn(destFile); + } + } +}; + export const copyDirectoryRecursive = ( sourceDir: string, destinationDir: string, diff --git a/packages/vitnode/src/api/models/email.ts b/packages/vitnode/src/api/models/email.ts index 52062673f..4737cd56e 100644 --- a/packages/vitnode/src/api/models/email.ts +++ b/packages/vitnode/src/api/models/email.ts @@ -1,8 +1,8 @@ import type { Context, ContextVariableMap } from "hono"; import type React from "react"; -import { render } from "@react-email/components"; import { HTTPException } from "hono/http-exception"; +import { render } from "react-email"; import type { DefaultTemplateEmailProps } from "../../emails/default-template"; diff --git a/packages/vitnode/src/api/modules/users/routes/reset-passowrd.route.ts b/packages/vitnode/src/api/modules/users/routes/reset-passowrd.route.ts index c23676f5a..eea40bda4 100644 --- a/packages/vitnode/src/api/modules/users/routes/reset-passowrd.route.ts +++ b/packages/vitnode/src/api/modules/users/routes/reset-passowrd.route.ts @@ -1,5 +1,5 @@ import { eq } from "drizzle-orm"; -import { createTranslator } from "use-intl"; +import { createTranslator } from "next-intl"; import { z } from "zod"; import { buildRoute } from "@/api/lib/route"; diff --git a/packages/vitnode/src/components/ui/sidebar.tsx b/packages/vitnode/src/components/ui/sidebar.tsx index 25589d707..74df8d3c7 100644 --- a/packages/vitnode/src/components/ui/sidebar.tsx +++ b/packages/vitnode/src/components/ui/sidebar.tsx @@ -4,8 +4,8 @@ import { mergeProps } from "@base-ui/react/merge-props"; import { useRender } from "@base-ui/react/use-render"; import { cva, type VariantProps } from "class-variance-authority"; import { PanelLeftIcon } from "lucide-react"; +import { useTranslations } from "next-intl"; import React from "react"; -import { useTranslations } from "use-intl"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; diff --git a/packages/vitnode/src/emails/default-template.tsx b/packages/vitnode/src/emails/default-template.tsx index 1c8e18a2f..ee3e8eb91 100644 --- a/packages/vitnode/src/emails/default-template.tsx +++ b/packages/vitnode/src/emails/default-template.tsx @@ -10,7 +10,7 @@ import { Tailwind, type TailwindConfig, Text, -} from "@react-email/components"; +} from "react-email"; import type { EmailModelSendArgs } from "@/api/models/email"; diff --git a/packages/vitnode/src/emails/reset-password.tsx b/packages/vitnode/src/emails/reset-password.tsx index 6d3c3b7cb..34e3bce30 100644 --- a/packages/vitnode/src/emails/reset-password.tsx +++ b/packages/vitnode/src/emails/reset-password.tsx @@ -1,5 +1,5 @@ -import { Hr, Link, Section, Text } from "@react-email/components"; -import { createTranslator } from "use-intl"; +import { createTranslator } from "next-intl"; +import { Hr, Link, Section, Text } from "react-email"; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, diff --git a/packages/vitnode/src/emails/test-email.tsx b/packages/vitnode/src/emails/test-email.tsx index ef523086b..28b22662d 100644 --- a/packages/vitnode/src/emails/test-email.tsx +++ b/packages/vitnode/src/emails/test-email.tsx @@ -1,4 +1,4 @@ -import { Text } from "@react-email/components"; +import { Text } from "react-email"; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, diff --git a/packages/vitnode/src/emails/ui/button.tsx b/packages/vitnode/src/emails/ui/button.tsx index 9a2d4656a..7f33eb75e 100644 --- a/packages/vitnode/src/emails/ui/button.tsx +++ b/packages/vitnode/src/emails/ui/button.tsx @@ -1,5 +1,5 @@ -import { Button as ButtonReactEmail } from "@react-email/components"; import { cva, type VariantProps } from "class-variance-authority"; +import { Button as ButtonReactEmail } from "react-email"; import { cn } from "@/lib/utils"; diff --git a/packages/vitnode/src/emails/ui/card.tsx b/packages/vitnode/src/emails/ui/card.tsx index 9a1b3965d..7635ecbec 100644 --- a/packages/vitnode/src/emails/ui/card.tsx +++ b/packages/vitnode/src/emails/ui/card.tsx @@ -1,4 +1,4 @@ -import { Section, Text } from "@react-email/components"; +import { Section, Text } from "react-email"; import { cn } from "@/lib/utils"; diff --git a/packages/vitnode/vitest.config.ts b/packages/vitnode/vitest.config.ts index 38b7fd837..49b17fa9e 100644 --- a/packages/vitnode/vitest.config.ts +++ b/packages/vitnode/vitest.config.ts @@ -18,7 +18,6 @@ export default defineConfig({ "**/src/tests/**", // Assuming setup files aren't tests "**/src/emails/**", "**/config/**", - "**/scripts/**", "**/*.config.*", "**/*.d.ts", ], diff --git a/plugins/blog/package.json b/plugins/blog/package.json index f53af3205..79c001aab 100644 --- a/plugins/blog/package.json +++ b/plugins/blog/package.json @@ -44,14 +44,13 @@ "next-intl": "^4.13.0", "react": "^19.2.7", "react-dom": "^19.2.7", - "react-email": "^6.6.4", + "react-email": "^6.6.6", "react-hook-form": "^7.80.0", "sonner": "^2.0.7", - "use-intl": "^4.13.0", "zod": "^4.4.3" }, "devDependencies": { - "@react-email/components": "^1.0.12", + "@react-email/ui": "^6.6.6", "@swc/cli": "^0.8.1", "@swc/core": "^1.15.43", "@types/react": "^19.2.17", diff --git a/plugins/blog/src/emails/test-template.tsx b/plugins/blog/src/emails/test-template.tsx index 22bc2b2d7..5cada26fa 100644 --- a/plugins/blog/src/emails/test-template.tsx +++ b/plugins/blog/src/emails/test-template.tsx @@ -1,7 +1,7 @@ -import { Text } from "@react-email/components"; import DefaultTemplateEmail, { type DefaultTemplateEmailProps, } from "@vitnode/core/emails/default-template"; +import { Text } from "react-email"; TestTemplateEmail.PreviewProps = DefaultTemplateEmail.PreviewProps satisfies DefaultTemplateEmailProps; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7ab5290a5..1fef911f6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -65,9 +65,6 @@ importers: react-dom: specifier: ^19.2.7 version: 19.2.7(react@19.2.7) - use-intl: - specifier: ^4.13.0 - version: 4.13.0(react@19.2.7) ws: specifier: ^8.21.0 version: 8.21.0 @@ -78,9 +75,9 @@ importers: '@hono/node-server': specifier: ^2.0.6 version: 2.0.6(hono@4.12.27) - '@react-email/components': - specifier: ^1.0.12 - version: 1.0.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/ui': + specifier: ^6.6.6 + version: 6.6.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@types/node': specifier: ^26.0.1 version: 26.0.1 @@ -109,8 +106,8 @@ importers: specifier: ^10.5.0 version: 10.6.0(jiti@2.7.0) react-email: - specifier: ^6.6.4 - version: 6.6.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^6.6.6 + version: 6.6.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) tsc-alias: specifier: ^1.8.17 version: 1.8.17 @@ -193,9 +190,9 @@ importers: '@playwright/test': specifier: ^1.61.1 version: 1.61.1 - '@react-email/components': - specifier: ^1.0.12 - version: 1.0.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/ui': + specifier: ^6.6.6 + version: 6.6.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tailwindcss/postcss': specifier: ^4.3.1 version: 4.3.2 @@ -236,8 +233,8 @@ importers: specifier: ^8.5.15 version: 8.5.16 react-email: - specifier: ^6.6.4 - version: 6.6.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^6.6.6 + version: 6.6.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) shiki: specifier: ^4.3.0 version: 4.3.0 @@ -250,9 +247,6 @@ importers: typescript: specifier: ^6.0.3 version: 6.0.3 - use-intl: - specifier: ^4.13.0 - version: 4.13.0(react@19.2.7) zod: specifier: ^4.4.3 version: 4.4.3 @@ -406,7 +400,7 @@ importers: dependencies: resend: specifier: ^6.14.0 - version: 6.16.0(@react-email/render@2.0.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) + version: 6.16.0(@react-email/render@2.0.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7)) devDependencies: '@swc/cli': specifier: ^0.8.1 @@ -447,9 +441,6 @@ importers: '@hono/swagger-ui': specifier: ^0.6.1 version: 0.6.1(hono@4.12.27) - '@react-email/preview-server': - specifier: ^5.2.10 - version: 5.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@tanstack/react-query': specifier: ^5.101.1 version: 5.101.2(react@19.2.7) @@ -528,9 +519,6 @@ importers: use-debounce: specifier: ^10.1.1 version: 10.1.1(react@19.2.7) - use-intl: - specifier: ^4.13.0 - version: 4.13.0(react@19.2.7) vaul: specifier: ^1.1.2 version: 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.17))(@types/react@19.2.17)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) @@ -544,9 +532,9 @@ importers: '@hookform/resolvers': specifier: ^5.4.0 version: 5.4.0(react-hook-form@7.80.0(react@19.2.7)) - '@react-email/components': - specifier: ^1.0.12 - version: 1.0.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/ui': + specifier: ^6.6.6 + version: 6.6.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@swc/cli': specifier: ^0.8.1 version: 0.8.1(@swc/core@1.15.43)(chokidar@5.0.0) @@ -617,8 +605,8 @@ importers: specifier: ^19.2.7 version: 19.2.7(react@19.2.7) react-email: - specifier: ^6.6.4 - version: 6.6.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^6.6.6 + version: 6.6.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react-hook-form: specifier: ^7.80.0 version: 7.80.0(react@19.2.7) @@ -686,24 +674,21 @@ importers: specifier: ^19.2.7 version: 19.2.7(react@19.2.7) react-email: - specifier: ^6.6.4 - version: 6.6.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + specifier: ^6.6.6 + version: 6.6.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react-hook-form: specifier: ^7.80.0 version: 7.80.0(react@19.2.7) sonner: specifier: ^2.0.7 version: 2.0.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - use-intl: - specifier: ^4.13.0 - version: 4.13.0(react@19.2.7) zod: specifier: ^4.4.3 version: 4.4.3 devDependencies: - '@react-email/components': - specifier: ^1.0.12 - version: 1.0.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/ui': + specifier: ^6.6.6 + version: 6.6.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@swc/cli': specifier: ^0.8.1 version: 0.8.1(@swc/core@1.15.43)(chokidar@5.0.0) @@ -1072,14 +1057,14 @@ packages: cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.3': - resolution: {integrity: sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==} + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] - '@esbuild/aix-ppc64@0.27.7': - resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} engines: {node: '>=18'} cpu: [ppc64] os: [aix] @@ -1102,14 +1087,14 @@ packages: cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.3': - resolution: {integrity: sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==} + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} engines: {node: '>=18'} cpu: [arm64] os: [android] - '@esbuild/android-arm64@0.27.7': - resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} engines: {node: '>=18'} cpu: [arm64] os: [android] @@ -1132,14 +1117,14 @@ packages: cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.3': - resolution: {integrity: sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==} + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} engines: {node: '>=18'} cpu: [arm] os: [android] - '@esbuild/android-arm@0.27.7': - resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} engines: {node: '>=18'} cpu: [arm] os: [android] @@ -1162,14 +1147,14 @@ packages: cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.3': - resolution: {integrity: sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==} + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} engines: {node: '>=18'} cpu: [x64] os: [android] - '@esbuild/android-x64@0.27.7': - resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} engines: {node: '>=18'} cpu: [x64] os: [android] @@ -1192,14 +1177,14 @@ packages: cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.3': - resolution: {integrity: sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==} + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] - '@esbuild/darwin-arm64@0.27.7': - resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} engines: {node: '>=18'} cpu: [arm64] os: [darwin] @@ -1222,14 +1207,14 @@ packages: cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.3': - resolution: {integrity: sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==} + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] - '@esbuild/darwin-x64@0.27.7': - resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} engines: {node: '>=18'} cpu: [x64] os: [darwin] @@ -1252,14 +1237,14 @@ packages: cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.3': - resolution: {integrity: sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==} + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-arm64@0.27.7': - resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} engines: {node: '>=18'} cpu: [arm64] os: [freebsd] @@ -1282,14 +1267,14 @@ packages: cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.3': - resolution: {integrity: sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==} + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] - '@esbuild/freebsd-x64@0.27.7': - resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} engines: {node: '>=18'} cpu: [x64] os: [freebsd] @@ -1312,14 +1297,14 @@ packages: cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.3': - resolution: {integrity: sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==} + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] - '@esbuild/linux-arm64@0.27.7': - resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} engines: {node: '>=18'} cpu: [arm64] os: [linux] @@ -1342,14 +1327,14 @@ packages: cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.3': - resolution: {integrity: sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==} + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} engines: {node: '>=18'} cpu: [arm] os: [linux] - '@esbuild/linux-arm@0.27.7': - resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} engines: {node: '>=18'} cpu: [arm] os: [linux] @@ -1372,14 +1357,14 @@ packages: cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.3': - resolution: {integrity: sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==} + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} engines: {node: '>=18'} cpu: [ia32] os: [linux] - '@esbuild/linux-ia32@0.27.7': - resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} engines: {node: '>=18'} cpu: [ia32] os: [linux] @@ -1402,14 +1387,14 @@ packages: cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.3': - resolution: {integrity: sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==} + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} engines: {node: '>=18'} cpu: [loong64] os: [linux] - '@esbuild/linux-loong64@0.27.7': - resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} engines: {node: '>=18'} cpu: [loong64] os: [linux] @@ -1432,14 +1417,14 @@ packages: cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.3': - resolution: {integrity: sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==} + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] - '@esbuild/linux-mips64el@0.27.7': - resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} engines: {node: '>=18'} cpu: [mips64el] os: [linux] @@ -1462,14 +1447,14 @@ packages: cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.3': - resolution: {integrity: sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==} + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] - '@esbuild/linux-ppc64@0.27.7': - resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} engines: {node: '>=18'} cpu: [ppc64] os: [linux] @@ -1492,14 +1477,14 @@ packages: cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.3': - resolution: {integrity: sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==} + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] - '@esbuild/linux-riscv64@0.27.7': - resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} engines: {node: '>=18'} cpu: [riscv64] os: [linux] @@ -1522,14 +1507,14 @@ packages: cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.3': - resolution: {integrity: sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==} + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} engines: {node: '>=18'} cpu: [s390x] os: [linux] - '@esbuild/linux-s390x@0.27.7': - resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} engines: {node: '>=18'} cpu: [s390x] os: [linux] @@ -1552,14 +1537,14 @@ packages: cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.3': - resolution: {integrity: sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==} + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} engines: {node: '>=18'} cpu: [x64] os: [linux] - '@esbuild/linux-x64@0.27.7': - resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} engines: {node: '>=18'} cpu: [x64] os: [linux] @@ -1576,14 +1561,14 @@ packages: cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.3': - resolution: {integrity: sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==} + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] - '@esbuild/netbsd-arm64@0.27.7': - resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} engines: {node: '>=18'} cpu: [arm64] os: [netbsd] @@ -1606,14 +1591,14 @@ packages: cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.3': - resolution: {integrity: sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==} + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] - '@esbuild/netbsd-x64@0.27.7': - resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} engines: {node: '>=18'} cpu: [x64] os: [netbsd] @@ -1630,14 +1615,14 @@ packages: cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.3': - resolution: {integrity: sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==} + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] - '@esbuild/openbsd-arm64@0.27.7': - resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} engines: {node: '>=18'} cpu: [arm64] os: [openbsd] @@ -1660,14 +1645,14 @@ packages: cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.3': - resolution: {integrity: sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==} + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] - '@esbuild/openbsd-x64@0.27.7': - resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} engines: {node: '>=18'} cpu: [x64] os: [openbsd] @@ -1684,14 +1669,14 @@ packages: cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.3': - resolution: {integrity: sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==} + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] - '@esbuild/openharmony-arm64@0.27.7': - resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} engines: {node: '>=18'} cpu: [arm64] os: [openharmony] @@ -1714,14 +1699,14 @@ packages: cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.3': - resolution: {integrity: sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==} + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} engines: {node: '>=18'} cpu: [x64] os: [sunos] - '@esbuild/sunos-x64@0.27.7': - resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} engines: {node: '>=18'} cpu: [x64] os: [sunos] @@ -1744,14 +1729,14 @@ packages: cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.3': - resolution: {integrity: sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==} + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] - '@esbuild/win32-arm64@0.27.7': - resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} engines: {node: '>=18'} cpu: [arm64] os: [win32] @@ -1774,14 +1759,14 @@ packages: cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.3': - resolution: {integrity: sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==} + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} engines: {node: '>=18'} cpu: [ia32] os: [win32] - '@esbuild/win32-ia32@0.27.7': - resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} engines: {node: '>=18'} cpu: [ia32] os: [win32] @@ -1804,14 +1789,14 @@ packages: cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.3': - resolution: {integrity: sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==} + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} engines: {node: '>=18'} cpu: [x64] os: [win32] - '@esbuild/win32-x64@0.27.7': - resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} engines: {node: '>=18'} cpu: [x64] os: [win32] @@ -2469,14 +2454,14 @@ packages: '@next/bundle-analyzer@16.2.9': resolution: {integrity: sha512-yGWyLbC8MMn+hk9j6l6GammpbUz5S3yZzl3lpoWfVXhIpJfh6kAWG7JwF4WoG3f0VnYRY959yo1QQEI8mV/+jg==} - '@next/env@16.1.7': - resolution: {integrity: sha512-rJJbIdJB/RQr2F1nylZr/PJzamvNNhfr3brdKP6s/GW850jbtR70QlSfFselvIBbcPUOlQwBakexjFzqLzF6pg==} + '@next/env@16.2.6': + resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==} '@next/env@16.3.0-preview.5': resolution: {integrity: sha512-XqdVR0utAWMsVc1OIyO48D32vrdmC4/uAgI3Ds088YlOO4vfGKXXVyvkGFkOZkOK0xg7bNYNfJAarX4A0tYqGg==} - '@next/swc-darwin-arm64@16.1.7': - resolution: {integrity: sha512-b2wWIE8sABdyafc4IM8r5Y/dS6kD80JRtOGrUiKTsACFQfWWgUQ2NwoUX1yjFMXVsAwcQeNpnucF2ZrujsBBPg==} + '@next/swc-darwin-arm64@16.2.6': + resolution: {integrity: sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==} engines: {node: '>= 10'} cpu: [arm64] os: [darwin] @@ -2487,8 +2472,8 @@ packages: cpu: [arm64] os: [darwin] - '@next/swc-darwin-x64@16.1.7': - resolution: {integrity: sha512-zcnVaaZulS1WL0Ss38R5Q6D2gz7MtBu8GZLPfK+73D/hp4GFMrC2sudLky1QibfV7h6RJBJs/gOFvYP0X7UVlQ==} + '@next/swc-darwin-x64@16.2.6': + resolution: {integrity: sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==} engines: {node: '>= 10'} cpu: [x64] os: [darwin] @@ -2499,8 +2484,8 @@ packages: cpu: [x64] os: [darwin] - '@next/swc-linux-arm64-gnu@16.1.7': - resolution: {integrity: sha512-2ant89Lux/Q3VyC8vNVg7uBaFVP9SwoK2jJOOR0L8TQnX8CAYnh4uctAScy2Hwj2dgjVHqHLORQZJ2wH6VxhSQ==} + '@next/swc-linux-arm64-gnu@16.2.6': + resolution: {integrity: sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2513,8 +2498,8 @@ packages: os: [linux] libc: [glibc] - '@next/swc-linux-arm64-musl@16.1.7': - resolution: {integrity: sha512-uufcze7LYv0FQg9GnNeZ3/whYfo+1Q3HnQpm16o6Uyi0OVzLlk2ZWoY7j07KADZFY8qwDbsmFnMQP3p3+Ftprw==} + '@next/swc-linux-arm64-musl@16.2.6': + resolution: {integrity: sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==} engines: {node: '>= 10'} cpu: [arm64] os: [linux] @@ -2527,8 +2512,8 @@ packages: os: [linux] libc: [musl] - '@next/swc-linux-x64-gnu@16.1.7': - resolution: {integrity: sha512-KWVf2gxYvHtvuT+c4MBOGxuse5TD7DsMFYSxVxRBnOzok/xryNeQSjXgxSv9QpIVlaGzEn/pIuI6Koosx8CGWA==} + '@next/swc-linux-x64-gnu@16.2.6': + resolution: {integrity: sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2541,8 +2526,8 @@ packages: os: [linux] libc: [glibc] - '@next/swc-linux-x64-musl@16.1.7': - resolution: {integrity: sha512-HguhaGwsGr1YAGs68uRKc4aGWxLET+NevJskOcCAwXbwj0fYX0RgZW2gsOCzr9S11CSQPIkxmoSbuVaBp4Z3dA==} + '@next/swc-linux-x64-musl@16.2.6': + resolution: {integrity: sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==} engines: {node: '>= 10'} cpu: [x64] os: [linux] @@ -2555,8 +2540,8 @@ packages: os: [linux] libc: [musl] - '@next/swc-win32-arm64-msvc@16.1.7': - resolution: {integrity: sha512-S0n3KrDJokKTeFyM/vGGGR8+pCmXYrjNTk2ZozOL1C/JFdfUIL9O1ATaJOl5r2POe56iRChbsszrjMAdWSv7kQ==} + '@next/swc-win32-arm64-msvc@16.2.6': + resolution: {integrity: sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==} engines: {node: '>= 10'} cpu: [arm64] os: [win32] @@ -2567,8 +2552,8 @@ packages: cpu: [arm64] os: [win32] - '@next/swc-win32-x64-msvc@16.1.7': - resolution: {integrity: sha512-mwgtg8CNZGYm06LeEd+bNnOUfwOyNem/rOiP14Lsz+AnUY92Zq/LXwtebtUiaeVkhbroRCQ0c8GlR4UT1U+0yg==} + '@next/swc-win32-x64-msvc@16.2.6': + resolution: {integrity: sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==} engines: {node: '>= 10'} cpu: [x64] os: [win32] @@ -3583,195 +3568,15 @@ packages: '@radix-ui/rect@1.1.2': resolution: {integrity: sha512-xnXE7wG13PI+cxieVssYXlQJuYVRhH9NBoxt3KNwzghDIA69GMm7d4wXRouHIYjE+KvS6U/MsMO73NdS2MH9ZA==} - '@react-email/body@0.3.0': - resolution: {integrity: sha512-uGo0BOOzjbMUo3lu+BIDWayvn5o6Xyfmnlla5VGf05n8gHMvO1ll7U4FtzWe3hxMLwt53pmc4iE0M+B5slG+Ug==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/button@0.2.1': - resolution: {integrity: sha512-qXyj7RZLE7POy9BMKSoqQ00tOXThjOZSUnI2Yu9i29IHngPlmrNayIWBoVKtElES7OWwypUcpiajwi1mUWx6/A==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/code-block@0.2.1': - resolution: {integrity: sha512-M3B7JpVH4ytgn83/ujRR1k1DQHvTeABiDM61OvAbjLRPhC/5KLHU5KkzIbbuGIrjWwxAbL1kSQzU8MhLEtSxyw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/code-inline@0.0.6': - resolution: {integrity: sha512-jfhebvv3dVsp3OdPgKXnk8+e2pBiDVZejDOBFzBa/IblrAJ9cQDkN6rBD5IyEg8hTOxwbw3iaI/yZFmDmIguIA==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/column@0.0.14': - resolution: {integrity: sha512-f+W+Bk2AjNO77zynE33rHuQhyqVICx4RYtGX9NKsGUg0wWjdGP0qAuIkhx9Rnmk4/hFMo1fUrtYNqca9fwJdHg==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/components@1.0.12': - resolution: {integrity: sha512-tH18JhPDWgE+3jnYkzyB6ZrZdfNnEsFe4PwmuXmlOw4NGIysP8wPY5aXZg++pTG9qUabXg1nzX/FGHGkObH8xQ==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/container@0.0.16': - resolution: {integrity: sha512-QWBB56RkkU0AJ9h+qy33gfT5iuZknPC7Un/IjZv9B0QmMIK+WWacc0cH6y2SV5Cv/b99hU94fjEMOOO4enpkbQ==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/font@0.0.10': - resolution: {integrity: sha512-0urVSgCmQIfx5r7Xc586miBnQUVnGp3OTYUm8m5pwtQRdTRO5XrTtEfNJ3JhYhSOruV0nD8fd+dXtKXobum6tA==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/head@0.0.13': - resolution: {integrity: sha512-AJg6le/08Gz4tm+6MtKXqtNNyKHzmooOCdmtqmWxD7FxoAdU1eVcizhtQ0gcnVaY6ethEyE/hnEzQxt1zu5Kog==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/heading@0.0.16': - resolution: {integrity: sha512-jmsKnQm1ykpBzw4hCYHwBkt5pW2jScXffPeEH5ZRF5tZeF5b1pvlFTO9han7C0pCkZYo1kEvWiRtx69yfCIwuw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/hr@0.0.12': - resolution: {integrity: sha512-TwmOmBDibavUQpXBxpmZYi2Iks/yeZOzFYh+di9EltMSnEabH8dMZXrl+pxNXzCgZ2XE8HY7VmUL65Lenfu5PA==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/html@0.0.12': - resolution: {integrity: sha512-KTShZesan+UsreU7PDUV90afrZwU5TLwYlALuCSU0OT+/U8lULNNbAUekg+tGwCnOfIKYtpDPKkAMRdYlqUznw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/img@0.0.12': - resolution: {integrity: sha512-sRCpEARNVTf3FQhZOC+JTvu5r6ubiYWkT0ucYXg8ctkyi4G8QG+jgYPiNUqVeTLA2STOfmPM/nrk1nb84y6CPQ==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/link@0.0.13': - resolution: {integrity: sha512-lkWc/NjOcefRZMkQoSDDbuKBEBDES9aXnFEOuPH845wD3TxPwh+QTf0fStuzjoRLUZWpHnio4z7qGGRYusn/sw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/markdown@0.0.18': - resolution: {integrity: sha512-gSuYK5fsMbGk87jDebqQ6fa2fKcWlkf2Dkva8kMONqLgGCq8/0d+ZQYMEJsdidIeBo3kmsnHZPrwdFB4HgjUXg==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/preview-server@5.2.10': - resolution: {integrity: sha512-cYi21KF+Z/HGXT8RpkQMNFFubBafxyoB9Hn/wrslfDNtdoews2MdsDo6XXKkZvDTRG9SxQN3HGk4v4aoQZc20g==} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - '@react-email/preview@0.0.14': - resolution: {integrity: sha512-aYK8q0IPkBXyMsbpMXgxazwHxYJxTrXrV95GFuu2HbEiIToMwSyUgb8HDFYwPqqfV03/jbwqlsXmFxsOd+VNaw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/render@2.0.6': - resolution: {integrity: sha512-xOzaYkH3jLZKqN5MqrTXYnmqBYUnZSVbkxdb5PGGmDcK6sKDVMliaDiSwfXajRC9JtSHTcGc2tmGLHWuCgVpog==} + '@react-email/render@2.0.10': + resolution: {integrity: sha512-QbgVvXeYenVi0LqkO+upcZzbyrD5Tz2wwCV+6CSzgo6ZsvwHLjf0x5Sr1C7DepcMhjYo++maJWRbcSoKMXKr1g==} engines: {node: '>=20.0.0'} peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc react-dom: ^18.0 || ^19.0 || ^19.0.0-rc - '@react-email/render@2.0.9': - resolution: {integrity: sha512-M89LiXy2q+9tmQ4VMR0rYGuEe6NJ6HhZsSxBMoLwIia5fVOLcZQcZe2GEO0nAkLZspDjEhn7mtMRPmeMKECEdQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/row@0.0.13': - resolution: {integrity: sha512-bYnOac40vIKCId7IkwuLAAsa3fKfSfqCvv6epJKmPE0JBuu5qI4FHFCl9o9dVpIIS08s/ub+Y/txoMt0dYziGw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/section@0.0.17': - resolution: {integrity: sha512-qNl65ye3W0Rd5udhdORzTV9ezjb+GFqQQSae03NDzXtmJq6sqVXNWNiVolAjvJNypim+zGXmv6J9TcV5aNtE/w==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc - - '@react-email/tailwind@2.0.7': - resolution: {integrity: sha512-kGw80weVFXikcnCXbigTGXGWQ0MRCSYNCudcdkWxebkWYd0FG6/NPoN3V1p/u68/4+NxZwYPVi2fhnp0x23HdA==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - '@react-email/body': '>=0' - '@react-email/button': '>=0' - '@react-email/code-block': '>=0' - '@react-email/code-inline': '>=0' - '@react-email/container': '>=0' - '@react-email/heading': '>=0' - '@react-email/hr': '>=0' - '@react-email/img': '>=0' - '@react-email/link': '>=0' - '@react-email/preview': '>=0' - '@react-email/text': '>=0' - react: ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@react-email/body': - optional: true - '@react-email/button': - optional: true - '@react-email/code-block': - optional: true - '@react-email/code-inline': - optional: true - '@react-email/container': - optional: true - '@react-email/heading': - optional: true - '@react-email/hr': - optional: true - '@react-email/img': - optional: true - '@react-email/link': - optional: true - '@react-email/preview': - optional: true - - '@react-email/text@0.1.6': - resolution: {integrity: sha512-TYqkioRS45wTR5il3dYk/SbUjjEdhSwh9BtRNB99qNH1pXAwA45H7rAuxehiu8iJQJH0IyIr+6n62gBz9ezmsw==} - engines: {node: '>=20.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - peerDependencies: - react: ^18.0 || ^19.0 || ^19.0.0-rc + '@react-email/ui@6.6.6': + resolution: {integrity: sha512-mupCOgV0sC94ODcYGwqj7CD0RAonBgaeeMxnu8DYA9JPFH8hx1061X87itIKL1OVxoBW3IftjvsECuMfqUilwg==} '@react-grab/cli@0.1.47': resolution: {integrity: sha512-Cc7d8mSwvoV8gpeTQbE8dMPdeXIyO6w+yIhzgi3jY06i03WLNhb/6jIxNBNF1cVRI7ujnFQXZA66BbnBNTpBSw==} @@ -5522,8 +5327,8 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - deslop-js@0.6.0: - resolution: {integrity: sha512-MAFw9r+5WUNthgy6J6HtVKdk6B7orqGMOTBiBYz3YMI7WJNM5nE8cfQgp+ZoS7gnD1DQalEW5GqqA/emUSmD8w==} + deslop-js@0.6.2: + resolution: {integrity: sha512-3+wV56jJd4zx6Mob2nQ4B8nIF4J12Xc2iCagNE9kdVTzMbNEIe99vwfaxrgdFC+RQ1NHXfjUkR3C4HVYnLLSfg==} detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} @@ -5799,13 +5604,13 @@ packages: engines: {node: '>=18'} hasBin: true - esbuild@0.27.3: - resolution: {integrity: sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==} + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} engines: {node: '>=18'} hasBin: true - esbuild@0.27.7: - resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} engines: {node: '>=18'} hasBin: true @@ -7428,8 +7233,8 @@ packages: react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc - next@16.1.7: - resolution: {integrity: sha512-WM0L7WrSvKwoLegLYr6V+mz+RIofqQgVAfHhMp9a88ms0cFX8iX9ew+snpWlSBwpkURJOUdvCEt3uLl3NNzvWg==} + next@16.2.6: + resolution: {integrity: sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==} engines: {node: '>=20.9.0'} hasBin: true peerDependencies: @@ -7612,8 +7417,8 @@ packages: oxc-resolver@11.21.3: resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==} - oxlint-plugin-react-doctor@0.6.0: - resolution: {integrity: sha512-oByEUczXDnxO5ZsevbOscpFlpmya7dnH6Nne5StYy02AJtyEDAiCSKkXj21GDMjDDkD42708LRfWXRAY32IL9w==} + oxlint-plugin-react-doctor@0.6.2: + resolution: {integrity: sha512-8+YU8hwSPmS2dglPxLGRTSpaSHA5A2L0x7zU/7G+dp9V779jrpHiYMhJ5Ga9JUa0VtECHfpY+xUOYSt1IEP3YA==} engines: {node: ^20.19.0 || >=22.13.0} oxlint@1.66.0: @@ -8000,8 +7805,8 @@ packages: '@types/react': optional: true - react-doctor@0.6.0: - resolution: {integrity: sha512-AqsoQqKQve8Zahxs48hXJuFgMcdY0AdV0fcO5eTdAKZQ/QICEoMCf0bTwxPKwN9Ix/4wWiAR+dNkBcm0ouFq+Q==} + react-doctor@0.6.2: + resolution: {integrity: sha512-uPFyoWhRvAG6vc7uLVbf2wg7ox0R8y+SgOAhAfAcs1soP4sIPwl4gEuWCNbAir/QIGcb5xrwFJvCM30WmgmeUg==} engines: {node: ^20.19.0 || >=22.13.0} hasBin: true @@ -8010,8 +7815,8 @@ packages: peerDependencies: react: ^19.2.7 - react-email@6.6.5: - resolution: {integrity: sha512-IO2NXS17K5xEn9v8QVt28g8Nl6D4gmaKZZc61tOGiZla4X2F+veWjuSKCJC7HDIuEtZXF27chHo9sE6Mtey6tQ==} + react-email@6.6.6: + resolution: {integrity: sha512-4eYmISIQbmEzibkl8pW+ZQHIFMwUVqZQRpTDYj6Ow7kk/gpUjtA95ggxoXji8pRq/y76tOhe7D3vNUJkZWO58g==} engines: {node: '>=20.0.0'} hasBin: true peerDependencies: @@ -9539,7 +9344,7 @@ snapshots: dependencies: '@babel/code-frame': 7.29.7 '@babel/generator': 7.29.7 - '@babel/parser': 7.27.0 + '@babel/parser': 7.29.7 '@babel/template': 7.29.7 '@babel/types': 7.29.7 debug: 4.4.3 @@ -9738,10 +9543,10 @@ snapshots: '@esbuild/aix-ppc64@0.25.12': optional: true - '@esbuild/aix-ppc64@0.27.3': + '@esbuild/aix-ppc64@0.27.7': optional: true - '@esbuild/aix-ppc64@0.27.7': + '@esbuild/aix-ppc64@0.28.0': optional: true '@esbuild/aix-ppc64@0.28.1': @@ -9753,10 +9558,10 @@ snapshots: '@esbuild/android-arm64@0.25.12': optional: true - '@esbuild/android-arm64@0.27.3': + '@esbuild/android-arm64@0.27.7': optional: true - '@esbuild/android-arm64@0.27.7': + '@esbuild/android-arm64@0.28.0': optional: true '@esbuild/android-arm64@0.28.1': @@ -9768,10 +9573,10 @@ snapshots: '@esbuild/android-arm@0.25.12': optional: true - '@esbuild/android-arm@0.27.3': + '@esbuild/android-arm@0.27.7': optional: true - '@esbuild/android-arm@0.27.7': + '@esbuild/android-arm@0.28.0': optional: true '@esbuild/android-arm@0.28.1': @@ -9783,10 +9588,10 @@ snapshots: '@esbuild/android-x64@0.25.12': optional: true - '@esbuild/android-x64@0.27.3': + '@esbuild/android-x64@0.27.7': optional: true - '@esbuild/android-x64@0.27.7': + '@esbuild/android-x64@0.28.0': optional: true '@esbuild/android-x64@0.28.1': @@ -9798,10 +9603,10 @@ snapshots: '@esbuild/darwin-arm64@0.25.12': optional: true - '@esbuild/darwin-arm64@0.27.3': + '@esbuild/darwin-arm64@0.27.7': optional: true - '@esbuild/darwin-arm64@0.27.7': + '@esbuild/darwin-arm64@0.28.0': optional: true '@esbuild/darwin-arm64@0.28.1': @@ -9813,10 +9618,10 @@ snapshots: '@esbuild/darwin-x64@0.25.12': optional: true - '@esbuild/darwin-x64@0.27.3': + '@esbuild/darwin-x64@0.27.7': optional: true - '@esbuild/darwin-x64@0.27.7': + '@esbuild/darwin-x64@0.28.0': optional: true '@esbuild/darwin-x64@0.28.1': @@ -9828,10 +9633,10 @@ snapshots: '@esbuild/freebsd-arm64@0.25.12': optional: true - '@esbuild/freebsd-arm64@0.27.3': + '@esbuild/freebsd-arm64@0.27.7': optional: true - '@esbuild/freebsd-arm64@0.27.7': + '@esbuild/freebsd-arm64@0.28.0': optional: true '@esbuild/freebsd-arm64@0.28.1': @@ -9843,10 +9648,10 @@ snapshots: '@esbuild/freebsd-x64@0.25.12': optional: true - '@esbuild/freebsd-x64@0.27.3': + '@esbuild/freebsd-x64@0.27.7': optional: true - '@esbuild/freebsd-x64@0.27.7': + '@esbuild/freebsd-x64@0.28.0': optional: true '@esbuild/freebsd-x64@0.28.1': @@ -9858,10 +9663,10 @@ snapshots: '@esbuild/linux-arm64@0.25.12': optional: true - '@esbuild/linux-arm64@0.27.3': + '@esbuild/linux-arm64@0.27.7': optional: true - '@esbuild/linux-arm64@0.27.7': + '@esbuild/linux-arm64@0.28.0': optional: true '@esbuild/linux-arm64@0.28.1': @@ -9873,10 +9678,10 @@ snapshots: '@esbuild/linux-arm@0.25.12': optional: true - '@esbuild/linux-arm@0.27.3': + '@esbuild/linux-arm@0.27.7': optional: true - '@esbuild/linux-arm@0.27.7': + '@esbuild/linux-arm@0.28.0': optional: true '@esbuild/linux-arm@0.28.1': @@ -9888,10 +9693,10 @@ snapshots: '@esbuild/linux-ia32@0.25.12': optional: true - '@esbuild/linux-ia32@0.27.3': + '@esbuild/linux-ia32@0.27.7': optional: true - '@esbuild/linux-ia32@0.27.7': + '@esbuild/linux-ia32@0.28.0': optional: true '@esbuild/linux-ia32@0.28.1': @@ -9903,10 +9708,10 @@ snapshots: '@esbuild/linux-loong64@0.25.12': optional: true - '@esbuild/linux-loong64@0.27.3': + '@esbuild/linux-loong64@0.27.7': optional: true - '@esbuild/linux-loong64@0.27.7': + '@esbuild/linux-loong64@0.28.0': optional: true '@esbuild/linux-loong64@0.28.1': @@ -9918,10 +9723,10 @@ snapshots: '@esbuild/linux-mips64el@0.25.12': optional: true - '@esbuild/linux-mips64el@0.27.3': + '@esbuild/linux-mips64el@0.27.7': optional: true - '@esbuild/linux-mips64el@0.27.7': + '@esbuild/linux-mips64el@0.28.0': optional: true '@esbuild/linux-mips64el@0.28.1': @@ -9933,10 +9738,10 @@ snapshots: '@esbuild/linux-ppc64@0.25.12': optional: true - '@esbuild/linux-ppc64@0.27.3': + '@esbuild/linux-ppc64@0.27.7': optional: true - '@esbuild/linux-ppc64@0.27.7': + '@esbuild/linux-ppc64@0.28.0': optional: true '@esbuild/linux-ppc64@0.28.1': @@ -9948,10 +9753,10 @@ snapshots: '@esbuild/linux-riscv64@0.25.12': optional: true - '@esbuild/linux-riscv64@0.27.3': + '@esbuild/linux-riscv64@0.27.7': optional: true - '@esbuild/linux-riscv64@0.27.7': + '@esbuild/linux-riscv64@0.28.0': optional: true '@esbuild/linux-riscv64@0.28.1': @@ -9963,10 +9768,10 @@ snapshots: '@esbuild/linux-s390x@0.25.12': optional: true - '@esbuild/linux-s390x@0.27.3': + '@esbuild/linux-s390x@0.27.7': optional: true - '@esbuild/linux-s390x@0.27.7': + '@esbuild/linux-s390x@0.28.0': optional: true '@esbuild/linux-s390x@0.28.1': @@ -9978,10 +9783,10 @@ snapshots: '@esbuild/linux-x64@0.25.12': optional: true - '@esbuild/linux-x64@0.27.3': + '@esbuild/linux-x64@0.27.7': optional: true - '@esbuild/linux-x64@0.27.7': + '@esbuild/linux-x64@0.28.0': optional: true '@esbuild/linux-x64@0.28.1': @@ -9990,10 +9795,10 @@ snapshots: '@esbuild/netbsd-arm64@0.25.12': optional: true - '@esbuild/netbsd-arm64@0.27.3': + '@esbuild/netbsd-arm64@0.27.7': optional: true - '@esbuild/netbsd-arm64@0.27.7': + '@esbuild/netbsd-arm64@0.28.0': optional: true '@esbuild/netbsd-arm64@0.28.1': @@ -10005,10 +9810,10 @@ snapshots: '@esbuild/netbsd-x64@0.25.12': optional: true - '@esbuild/netbsd-x64@0.27.3': + '@esbuild/netbsd-x64@0.27.7': optional: true - '@esbuild/netbsd-x64@0.27.7': + '@esbuild/netbsd-x64@0.28.0': optional: true '@esbuild/netbsd-x64@0.28.1': @@ -10017,10 +9822,10 @@ snapshots: '@esbuild/openbsd-arm64@0.25.12': optional: true - '@esbuild/openbsd-arm64@0.27.3': + '@esbuild/openbsd-arm64@0.27.7': optional: true - '@esbuild/openbsd-arm64@0.27.7': + '@esbuild/openbsd-arm64@0.28.0': optional: true '@esbuild/openbsd-arm64@0.28.1': @@ -10032,10 +9837,10 @@ snapshots: '@esbuild/openbsd-x64@0.25.12': optional: true - '@esbuild/openbsd-x64@0.27.3': + '@esbuild/openbsd-x64@0.27.7': optional: true - '@esbuild/openbsd-x64@0.27.7': + '@esbuild/openbsd-x64@0.28.0': optional: true '@esbuild/openbsd-x64@0.28.1': @@ -10044,10 +9849,10 @@ snapshots: '@esbuild/openharmony-arm64@0.25.12': optional: true - '@esbuild/openharmony-arm64@0.27.3': + '@esbuild/openharmony-arm64@0.27.7': optional: true - '@esbuild/openharmony-arm64@0.27.7': + '@esbuild/openharmony-arm64@0.28.0': optional: true '@esbuild/openharmony-arm64@0.28.1': @@ -10059,10 +9864,10 @@ snapshots: '@esbuild/sunos-x64@0.25.12': optional: true - '@esbuild/sunos-x64@0.27.3': + '@esbuild/sunos-x64@0.27.7': optional: true - '@esbuild/sunos-x64@0.27.7': + '@esbuild/sunos-x64@0.28.0': optional: true '@esbuild/sunos-x64@0.28.1': @@ -10074,10 +9879,10 @@ snapshots: '@esbuild/win32-arm64@0.25.12': optional: true - '@esbuild/win32-arm64@0.27.3': + '@esbuild/win32-arm64@0.27.7': optional: true - '@esbuild/win32-arm64@0.27.7': + '@esbuild/win32-arm64@0.28.0': optional: true '@esbuild/win32-arm64@0.28.1': @@ -10089,10 +9894,10 @@ snapshots: '@esbuild/win32-ia32@0.25.12': optional: true - '@esbuild/win32-ia32@0.27.3': + '@esbuild/win32-ia32@0.27.7': optional: true - '@esbuild/win32-ia32@0.27.7': + '@esbuild/win32-ia32@0.28.0': optional: true '@esbuild/win32-ia32@0.28.1': @@ -10104,10 +9909,10 @@ snapshots: '@esbuild/win32-x64@0.25.12': optional: true - '@esbuild/win32-x64@0.27.3': + '@esbuild/win32-x64@0.27.7': optional: true - '@esbuild/win32-x64@0.27.7': + '@esbuild/win32-x64@0.28.0': optional: true '@esbuild/win32-x64@0.28.1': @@ -10716,53 +10521,53 @@ snapshots: - bufferutil - utf-8-validate - '@next/env@16.1.7': {} + '@next/env@16.2.6': {} '@next/env@16.3.0-preview.5': {} - '@next/swc-darwin-arm64@16.1.7': + '@next/swc-darwin-arm64@16.2.6': optional: true '@next/swc-darwin-arm64@16.3.0-preview.5': optional: true - '@next/swc-darwin-x64@16.1.7': + '@next/swc-darwin-x64@16.2.6': optional: true '@next/swc-darwin-x64@16.3.0-preview.5': optional: true - '@next/swc-linux-arm64-gnu@16.1.7': + '@next/swc-linux-arm64-gnu@16.2.6': optional: true '@next/swc-linux-arm64-gnu@16.3.0-preview.5': optional: true - '@next/swc-linux-arm64-musl@16.1.7': + '@next/swc-linux-arm64-musl@16.2.6': optional: true '@next/swc-linux-arm64-musl@16.3.0-preview.5': optional: true - '@next/swc-linux-x64-gnu@16.1.7': + '@next/swc-linux-x64-gnu@16.2.6': optional: true '@next/swc-linux-x64-gnu@16.3.0-preview.5': optional: true - '@next/swc-linux-x64-musl@16.1.7': + '@next/swc-linux-x64-musl@16.2.6': optional: true '@next/swc-linux-x64-musl@16.3.0-preview.5': optional: true - '@next/swc-win32-arm64-msvc@16.1.7': + '@next/swc-win32-arm64-msvc@16.2.6': optional: true '@next/swc-win32-arm64-msvc@16.3.0-preview.5': optional: true - '@next/swc-win32-x64-msvc@16.1.7': + '@next/swc-win32-x64-msvc@16.2.6': optional: true '@next/swc-win32-x64-msvc@16.3.0-preview.5': @@ -11492,94 +11297,17 @@ snapshots: '@radix-ui/rect@1.1.2': {} - '@react-email/body@0.3.0(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/button@0.2.1(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/code-block@0.2.1(react@19.2.7)': - dependencies: - prismjs: 1.30.0 - react: 19.2.7 - - '@react-email/code-inline@0.0.6(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/column@0.0.14(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/components@1.0.12(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - '@react-email/body': 0.3.0(react@19.2.7) - '@react-email/button': 0.2.1(react@19.2.7) - '@react-email/code-block': 0.2.1(react@19.2.7) - '@react-email/code-inline': 0.0.6(react@19.2.7) - '@react-email/column': 0.0.14(react@19.2.7) - '@react-email/container': 0.0.16(react@19.2.7) - '@react-email/font': 0.0.10(react@19.2.7) - '@react-email/head': 0.0.13(react@19.2.7) - '@react-email/heading': 0.0.16(react@19.2.7) - '@react-email/hr': 0.0.12(react@19.2.7) - '@react-email/html': 0.0.12(react@19.2.7) - '@react-email/img': 0.0.12(react@19.2.7) - '@react-email/link': 0.0.13(react@19.2.7) - '@react-email/markdown': 0.0.18(react@19.2.7) - '@react-email/preview': 0.0.14(react@19.2.7) - '@react-email/render': 2.0.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7) - '@react-email/row': 0.0.13(react@19.2.7) - '@react-email/section': 0.0.17(react@19.2.7) - '@react-email/tailwind': 2.0.7(@react-email/body@0.3.0(react@19.2.7))(@react-email/button@0.2.1(react@19.2.7))(@react-email/code-block@0.2.1(react@19.2.7))(@react-email/code-inline@0.0.6(react@19.2.7))(@react-email/container@0.0.16(react@19.2.7))(@react-email/heading@0.0.16(react@19.2.7))(@react-email/hr@0.0.12(react@19.2.7))(@react-email/img@0.0.12(react@19.2.7))(@react-email/link@0.0.13(react@19.2.7))(@react-email/preview@0.0.14(react@19.2.7))(@react-email/text@0.1.6(react@19.2.7))(react@19.2.7) - '@react-email/text': 0.1.6(react@19.2.7) - react: 19.2.7 - transitivePeerDependencies: - - react-dom - - '@react-email/container@0.0.16(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/font@0.0.10(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/head@0.0.13(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/heading@0.0.16(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/hr@0.0.12(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/html@0.0.12(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/img@0.0.12(react@19.2.7)': + '@react-email/render@2.0.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: + html-to-text: 9.0.5 + prettier: 3.9.3 react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) - '@react-email/link@0.0.13(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/markdown@0.0.18(react@19.2.7)': - dependencies: - marked: 15.0.12 - react: 19.2.7 - - '@react-email/preview-server@5.2.10(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': + '@react-email/ui@6.6.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - esbuild: 0.27.3 - next: 16.1.7(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + esbuild: 0.28.0 + next: 16.2.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) transitivePeerDependencies: - '@babel/core' - '@opentelemetry/api' @@ -11590,53 +11318,6 @@ snapshots: - react-dom - sass - '@react-email/preview@0.0.14(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/render@2.0.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - html-to-text: 9.0.5 - prettier: 3.9.3 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - '@react-email/render@2.0.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': - dependencies: - html-to-text: 9.0.5 - prettier: 3.9.3 - react: 19.2.7 - react-dom: 19.2.7(react@19.2.7) - - '@react-email/row@0.0.13(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/section@0.0.17(react@19.2.7)': - dependencies: - react: 19.2.7 - - '@react-email/tailwind@2.0.7(@react-email/body@0.3.0(react@19.2.7))(@react-email/button@0.2.1(react@19.2.7))(@react-email/code-block@0.2.1(react@19.2.7))(@react-email/code-inline@0.0.6(react@19.2.7))(@react-email/container@0.0.16(react@19.2.7))(@react-email/heading@0.0.16(react@19.2.7))(@react-email/hr@0.0.12(react@19.2.7))(@react-email/img@0.0.12(react@19.2.7))(@react-email/link@0.0.13(react@19.2.7))(@react-email/preview@0.0.14(react@19.2.7))(@react-email/text@0.1.6(react@19.2.7))(react@19.2.7)': - dependencies: - '@react-email/text': 0.1.6(react@19.2.7) - react: 19.2.7 - tailwindcss: 4.3.2 - optionalDependencies: - '@react-email/body': 0.3.0(react@19.2.7) - '@react-email/button': 0.2.1(react@19.2.7) - '@react-email/code-block': 0.2.1(react@19.2.7) - '@react-email/code-inline': 0.0.6(react@19.2.7) - '@react-email/container': 0.0.16(react@19.2.7) - '@react-email/heading': 0.0.16(react@19.2.7) - '@react-email/hr': 0.0.12(react@19.2.7) - '@react-email/img': 0.0.12(react@19.2.7) - '@react-email/link': 0.0.13(react@19.2.7) - '@react-email/preview': 0.0.14(react@19.2.7) - - '@react-email/text@0.1.6(react@19.2.7)': - dependencies: - react: 19.2.7 - '@react-grab/cli@0.1.47': dependencies: agent-install: 0.0.6 @@ -13301,7 +12982,7 @@ snapshots: dequal@2.0.3: {} - deslop-js@0.6.0: + deslop-js@0.6.2: dependencies: '@oxc-project/types': 0.132.0 fast-glob: 3.3.3 @@ -13607,35 +13288,6 @@ snapshots: '@esbuild/win32-ia32': 0.25.12 '@esbuild/win32-x64': 0.25.12 - esbuild@0.27.3: - optionalDependencies: - '@esbuild/aix-ppc64': 0.27.3 - '@esbuild/android-arm': 0.27.3 - '@esbuild/android-arm64': 0.27.3 - '@esbuild/android-x64': 0.27.3 - '@esbuild/darwin-arm64': 0.27.3 - '@esbuild/darwin-x64': 0.27.3 - '@esbuild/freebsd-arm64': 0.27.3 - '@esbuild/freebsd-x64': 0.27.3 - '@esbuild/linux-arm': 0.27.3 - '@esbuild/linux-arm64': 0.27.3 - '@esbuild/linux-ia32': 0.27.3 - '@esbuild/linux-loong64': 0.27.3 - '@esbuild/linux-mips64el': 0.27.3 - '@esbuild/linux-ppc64': 0.27.3 - '@esbuild/linux-riscv64': 0.27.3 - '@esbuild/linux-s390x': 0.27.3 - '@esbuild/linux-x64': 0.27.3 - '@esbuild/netbsd-arm64': 0.27.3 - '@esbuild/netbsd-x64': 0.27.3 - '@esbuild/openbsd-arm64': 0.27.3 - '@esbuild/openbsd-x64': 0.27.3 - '@esbuild/openharmony-arm64': 0.27.3 - '@esbuild/sunos-x64': 0.27.3 - '@esbuild/win32-arm64': 0.27.3 - '@esbuild/win32-ia32': 0.27.3 - '@esbuild/win32-x64': 0.27.3 - esbuild@0.27.7: optionalDependencies: '@esbuild/aix-ppc64': 0.27.7 @@ -13665,6 +13317,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.7 '@esbuild/win32-x64': 0.27.7 + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 + esbuild@0.28.1: optionalDependencies: '@esbuild/aix-ppc64': 0.28.1 @@ -15688,9 +15369,9 @@ snapshots: react: 19.2.7 react-dom: 19.2.7(react@19.2.7) - next@16.1.7(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + next@16.2.6(@babel/core@7.29.7)(@opentelemetry/api@1.9.1)(@playwright/test@1.61.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - '@next/env': 16.1.7 + '@next/env': 16.2.6 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.10.40 caniuse-lite: 1.0.30001799 @@ -15699,14 +15380,14 @@ snapshots: react-dom: 19.2.7(react@19.2.7) styled-jsx: 5.1.6(@babel/core@7.29.7)(react@19.2.7) optionalDependencies: - '@next/swc-darwin-arm64': 16.1.7 - '@next/swc-darwin-x64': 16.1.7 - '@next/swc-linux-arm64-gnu': 16.1.7 - '@next/swc-linux-arm64-musl': 16.1.7 - '@next/swc-linux-x64-gnu': 16.1.7 - '@next/swc-linux-x64-musl': 16.1.7 - '@next/swc-win32-arm64-msvc': 16.1.7 - '@next/swc-win32-x64-msvc': 16.1.7 + '@next/swc-darwin-arm64': 16.2.6 + '@next/swc-darwin-x64': 16.2.6 + '@next/swc-linux-arm64-gnu': 16.2.6 + '@next/swc-linux-arm64-musl': 16.2.6 + '@next/swc-linux-x64-gnu': 16.2.6 + '@next/swc-linux-x64-musl': 16.2.6 + '@next/swc-win32-arm64-msvc': 16.2.6 + '@next/swc-win32-x64-msvc': 16.2.6 '@opentelemetry/api': 1.9.1 '@playwright/test': 1.61.1 babel-plugin-react-compiler: 1.0.0 @@ -15967,7 +15648,7 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3 '@oxc-resolver/binding-win32-x64-msvc': 11.21.3 - oxlint-plugin-react-doctor@0.6.0: + oxlint-plugin-react-doctor@0.6.2: dependencies: '@typescript-eslint/types': 8.62.0 eslint-scope: 9.1.2 @@ -16311,19 +15992,19 @@ snapshots: optionalDependencies: '@types/react': 19.2.17 - react-doctor@0.6.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(eslint@10.6.0(jiti@2.7.0)): + react-doctor@0.6.2(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(eslint@10.6.0(jiti@2.7.0)): dependencies: '@babel/code-frame': 7.29.7 '@sentry/node': 10.62.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1)) agent-install: 0.0.5 conf: 15.1.0 confbox: 0.2.4 - deslop-js: 0.6.0 + deslop-js: 0.6.2 eslint-plugin-react-hooks: 7.1.1(eslint@10.6.0(jiti@2.7.0)) jiti: 2.7.0 magicast: 0.5.3 oxlint: 1.66.0 - oxlint-plugin-react-doctor: 0.6.0 + oxlint-plugin-react-doctor: 0.6.2 prompts: 2.4.2 typescript: 5.9.3 vscode-languageserver: 9.0.1 @@ -16342,11 +16023,11 @@ snapshots: react: 19.2.7 scheduler: 0.27.0 - react-email@6.6.5(react-dom@19.2.7(react@19.2.7))(react@19.2.7): + react-email@6.6.6(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: '@babel/parser': 7.27.0 '@babel/traverse': 7.27.0 - '@react-email/render': 2.0.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/render': 2.0.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) chokidar: 4.0.3 commander: 13.1.0 conf: 15.1.0 @@ -16431,7 +16112,7 @@ snapshots: preact: 10.29.3 prompts: 2.4.2 react: 19.2.7 - react-doctor: 0.6.0(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(eslint@10.6.0(jiti@2.7.0)) + react-doctor: 0.6.2(@opentelemetry/core@2.8.0(@opentelemetry/api@1.9.1))(eslint@10.6.0(jiti@2.7.0)) react-dom: 19.2.7(react@19.2.7) react-grab: 0.1.47(react@19.2.7) optionalDependencies: @@ -16668,12 +16349,12 @@ snapshots: reselect@5.2.0: {} - resend@6.16.0(@react-email/render@2.0.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7)): + resend@6.16.0(@react-email/render@2.0.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7)): dependencies: postal-mime: 2.7.4 standardwebhooks: 1.0.0 optionalDependencies: - '@react-email/render': 2.0.9(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@react-email/render': 2.0.10(react-dom@19.2.7(react@19.2.7))(react@19.2.7) resize-observer-polyfill@1.5.1: {}